pdfkit 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +2 -2
- package/js/pdfkit.es.js +148 -60
- package/js/pdfkit.es.js.map +1 -1
- package/js/pdfkit.js +146 -58
- package/js/pdfkit.js.map +1 -1
- package/js/pdfkit.standalone.js +35915 -39326
- package/package.json +29 -28
package/js/pdfkit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdfkit.js","sources":["../lib/abstract_reference.js","../lib/tree.js","../lib/object.js","../lib/reference.js","../lib/page.js","../lib/name_tree.js","../lib/saslprep/lib/util.js","../lib/saslprep/lib/code-points.js","../lib/saslprep/index.js","../lib/security.js","../lib/gradient.js","../lib/pattern.js","../lib/mixins/color.js","../lib/path.js","../lib/mixins/vector.js","../lib/font/afm.js","../lib/font.js","../lib/font/standard.js","../lib/font/embedded.js","../lib/font_factory.js","../lib/mixins/fonts.js","../lib/line_wrapper.js","../lib/mixins/text.js","../lib/image/jpeg.js","../lib/image/png.js","../lib/image.js","../lib/mixins/images.js","../lib/mixins/annotations.js","../lib/outline.js","../lib/mixins/outline.js","../lib/structure_content.js","../lib/structure_element.js","../lib/number_tree.js","../lib/mixins/markings.js","../lib/mixins/acroform.js","../lib/mixins/attachments.js","../lib/mixins/pdfa.js","../lib/mixins/pdfua.js","../lib/mixins/subsets.js","../lib/metadata.js","../lib/mixins/metadata.js","../lib/document.js"],"sourcesContent":["/*\r\nPDFAbstractReference - abstract class for PDF reference\r\n*/\r\n\r\nclass PDFAbstractReference {\r\n toString() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n}\r\n\r\nexport default PDFAbstractReference;\r\n","/*\r\nPDFTree - abstract base class for name and number tree objects\r\n*/\r\n\r\nimport PDFObject from './object';\r\n\r\nclass PDFTree {\r\n constructor(options = {}) {\r\n this._items = {};\r\n // disable /Limits output for this tree\r\n this.limits =\r\n typeof options.limits === 'boolean' ? options.limits : true;\r\n }\r\n\r\n add(key, val) {\r\n return (this._items[key] = val);\r\n }\r\n\r\n get(key) {\r\n return this._items[key];\r\n }\r\n\r\n toString() {\r\n // Needs to be sorted by key\r\n const sortedKeys = Object.keys(this._items).sort((a, b) =>\r\n this._compareKeys(a, b)\r\n );\r\n\r\n const out = ['<<'];\r\n if (this.limits && sortedKeys.length > 1) {\r\n const first = sortedKeys[0],\r\n last = sortedKeys[sortedKeys.length - 1];\r\n out.push(\r\n ` /Limits ${PDFObject.convert([this._dataForKey(first), this._dataForKey(last)])}`\r\n );\r\n }\r\n out.push(` /${this._keysName()} [`);\r\n for (let key of sortedKeys) {\r\n out.push(\r\n ` ${PDFObject.convert(this._dataForKey(key))} ${PDFObject.convert(\r\n this._items[key]\r\n )}`\r\n );\r\n }\r\n out.push(']');\r\n out.push('>>');\r\n return out.join('\\n');\r\n }\r\n\r\n _compareKeys(/*a, b*/) {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n _keysName() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n _dataForKey(/*k*/) {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n}\r\n\r\nexport default PDFTree;\r\n","/*\r\nPDFObject - converts JavaScript types into their corresponding PDF types.\r\nBy Devon Govett\r\n*/\r\n\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFTree from './tree';\r\n\r\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\r\n\r\nconst escapableRe = /[\\n\\r\\t\\b\\f()\\\\]/g;\r\nconst escapable = {\r\n '\\n': '\\\\n',\r\n '\\r': '\\\\r',\r\n '\\t': '\\\\t',\r\n '\\b': '\\\\b',\r\n '\\f': '\\\\f',\r\n '\\\\': '\\\\\\\\',\r\n '(': '\\\\(',\r\n ')': '\\\\)'\r\n};\r\n\r\n// Convert little endian UTF-16 to big endian\r\nconst swapBytes = function(buff) {\r\n const l = buff.length;\r\n if (l & 0x01) {\r\n throw new Error('Buffer length must be even');\r\n } else {\r\n for (let i = 0, end = l - 1; i < end; i += 2) {\r\n const a = buff[i];\r\n buff[i] = buff[i + 1];\r\n buff[i + 1] = a;\r\n }\r\n }\r\n\r\n return buff;\r\n};\r\n\r\nclass PDFObject {\r\n static convert(object, encryptFn = null) {\r\n // String literals are converted to the PDF name type\r\n if (typeof object === 'string') {\r\n return `/${object}`;\r\n\r\n // String objects are converted to PDF strings (UTF-16)\r\n } else if (object instanceof String) {\r\n let string = object;\r\n // Detect if this is a unicode string\r\n let isUnicode = false;\r\n for (let i = 0, end = string.length; i < end; i++) {\r\n if (string.charCodeAt(i) > 0x7f) {\r\n isUnicode = true;\r\n break;\r\n }\r\n }\r\n\r\n // If so, encode it as big endian UTF-16\r\n let stringBuffer;\r\n if (isUnicode) {\r\n stringBuffer = swapBytes(Buffer.from(`\\ufeff${string}`, 'utf16le'));\r\n } else {\r\n stringBuffer = Buffer.from(string.valueOf(), 'ascii');\r\n }\r\n\r\n // Encrypt the string when necessary\r\n if (encryptFn) {\r\n string = encryptFn(stringBuffer).toString('binary');\r\n } else {\r\n string = stringBuffer.toString('binary');\r\n }\r\n\r\n // Escape characters as required by the spec\r\n string = string.replace(escapableRe, c => escapable[c]);\r\n\r\n return `(${string})`;\r\n\r\n // Buffers are converted to PDF hex strings\r\n } else if (Buffer.isBuffer(object)) {\r\n return `<${object.toString('hex')}>`;\r\n } else if (\r\n object instanceof PDFAbstractReference ||\r\n object instanceof PDFTree\r\n ) {\r\n return object.toString();\r\n } else if (object instanceof Date) {\r\n let string =\r\n `D:${pad(object.getUTCFullYear(), 4)}` +\r\n pad(object.getUTCMonth() + 1, 2) +\r\n pad(object.getUTCDate(), 2) +\r\n pad(object.getUTCHours(), 2) +\r\n pad(object.getUTCMinutes(), 2) +\r\n pad(object.getUTCSeconds(), 2) +\r\n 'Z';\r\n\r\n // Encrypt the string when necessary\r\n if (encryptFn) {\r\n string = encryptFn(Buffer.from(string, 'ascii')).toString('binary');\r\n\r\n // Escape characters as required by the spec\r\n string = string.replace(escapableRe, c => escapable[c]);\r\n }\r\n\r\n return `(${string})`;\r\n } else if (Array.isArray(object)) {\r\n const items = object.map(e => PDFObject.convert(e, encryptFn)).join(' ');\r\n return `[${items}]`;\r\n } else if ({}.toString.call(object) === '[object Object]') {\r\n const out = ['<<'];\r\n for (let key in object) {\r\n const val = object[key];\r\n out.push(`/${key} ${PDFObject.convert(val, encryptFn)}`);\r\n }\r\n\r\n out.push('>>');\r\n return out.join('\\n');\r\n } else if (typeof object === 'number') {\r\n return PDFObject.number(object);\r\n } else {\r\n return `${object}`;\r\n }\r\n }\r\n\r\n static number(n) {\r\n if (n > -1e21 && n < 1e21) {\r\n return Math.round(n * 1e6) / 1e6;\r\n }\r\n\r\n throw new Error(`unsupported number: ${n}`);\r\n }\r\n}\r\n\r\nexport default PDFObject;\r\n","/*\r\nPDFReference - represents a reference to another object in the PDF object heirarchy\r\nBy Devon Govett\r\n*/\r\n\r\nimport zlib from 'zlib';\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFObject from './object';\r\n\r\nclass PDFReference extends PDFAbstractReference {\r\n constructor(document, id, data = {}) {\r\n super();\r\n this.document = document;\r\n this.id = id;\r\n this.data = data;\r\n this.gen = 0;\r\n this.compress = this.document.compress && !this.data.Filter;\r\n this.uncompressedLength = 0;\r\n this.buffer = [];\r\n }\r\n\r\n write(chunk) {\r\n if (!Buffer.isBuffer(chunk)) {\r\n chunk = Buffer.from(chunk + '\\n', 'binary');\r\n }\r\n\r\n this.uncompressedLength += chunk.length;\r\n if (this.data.Length == null) {\r\n this.data.Length = 0;\r\n }\r\n this.buffer.push(chunk);\r\n this.data.Length += chunk.length;\r\n if (this.compress) {\r\n return (this.data.Filter = 'FlateDecode');\r\n }\r\n }\r\n\r\n end(chunk) {\r\n if (chunk) {\r\n this.write(chunk);\r\n }\r\n return this.finalize();\r\n }\r\n\r\n finalize() {\r\n this.offset = this.document._offset;\r\n\r\n const encryptFn = this.document._security\r\n ? this.document._security.getEncryptFn(this.id, this.gen)\r\n : null;\r\n\r\n if (this.buffer.length) {\r\n this.buffer = Buffer.concat(this.buffer);\r\n if (this.compress) {\r\n this.buffer = zlib.deflateSync(this.buffer);\r\n }\r\n\r\n if (encryptFn) {\r\n this.buffer = encryptFn(this.buffer);\r\n }\r\n\r\n this.data.Length = this.buffer.length;\r\n }\r\n\r\n this.document._write(`${this.id} ${this.gen} obj`);\r\n this.document._write(PDFObject.convert(this.data, encryptFn));\r\n\r\n if (this.buffer.length) {\r\n this.document._write('stream');\r\n this.document._write(this.buffer);\r\n\r\n this.buffer = []; // free up memory\r\n this.document._write('\\nendstream');\r\n }\r\n\r\n this.document._write('endobj');\r\n this.document._refEnd(this);\r\n }\r\n toString() {\r\n return `${this.id} ${this.gen} R`;\r\n }\r\n}\r\n\r\nexport default PDFReference;\r\n","/*\r\nPDFPage - represents a single page in the PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nconst DEFAULT_MARGINS = {\r\n top: 72,\r\n left: 72,\r\n bottom: 72,\r\n right: 72\r\n};\r\n\r\nconst SIZES = {\r\n '4A0': [4767.87, 6740.79],\r\n '2A0': [3370.39, 4767.87],\r\n A0: [2383.94, 3370.39],\r\n A1: [1683.78, 2383.94],\r\n A2: [1190.55, 1683.78],\r\n A3: [841.89, 1190.55],\r\n A4: [595.28, 841.89],\r\n A5: [419.53, 595.28],\r\n A6: [297.64, 419.53],\r\n A7: [209.76, 297.64],\r\n A8: [147.4, 209.76],\r\n A9: [104.88, 147.4],\r\n A10: [73.7, 104.88],\r\n B0: [2834.65, 4008.19],\r\n B1: [2004.09, 2834.65],\r\n B2: [1417.32, 2004.09],\r\n B3: [1000.63, 1417.32],\r\n B4: [708.66, 1000.63],\r\n B5: [498.9, 708.66],\r\n B6: [354.33, 498.9],\r\n B7: [249.45, 354.33],\r\n B8: [175.75, 249.45],\r\n B9: [124.72, 175.75],\r\n B10: [87.87, 124.72],\r\n C0: [2599.37, 3676.54],\r\n C1: [1836.85, 2599.37],\r\n C2: [1298.27, 1836.85],\r\n C3: [918.43, 1298.27],\r\n C4: [649.13, 918.43],\r\n C5: [459.21, 649.13],\r\n C6: [323.15, 459.21],\r\n C7: [229.61, 323.15],\r\n C8: [161.57, 229.61],\r\n C9: [113.39, 161.57],\r\n C10: [79.37, 113.39],\r\n RA0: [2437.8, 3458.27],\r\n RA1: [1729.13, 2437.8],\r\n RA2: [1218.9, 1729.13],\r\n RA3: [864.57, 1218.9],\r\n RA4: [609.45, 864.57],\r\n SRA0: [2551.18, 3628.35],\r\n SRA1: [1814.17, 2551.18],\r\n SRA2: [1275.59, 1814.17],\r\n SRA3: [907.09, 1275.59],\r\n SRA4: [637.8, 907.09],\r\n EXECUTIVE: [521.86, 756.0],\r\n FOLIO: [612.0, 936.0],\r\n LEGAL: [612.0, 1008.0],\r\n LETTER: [612.0, 792.0],\r\n TABLOID: [792.0, 1224.0]\r\n};\r\n\r\nclass PDFPage {\r\n constructor(document, options = {}) {\r\n this.document = document;\r\n this.size = options.size || 'letter';\r\n this.layout = options.layout || 'portrait';\r\n\r\n // process margins\r\n if (typeof options.margin === 'number') {\r\n this.margins = {\r\n top: options.margin,\r\n left: options.margin,\r\n bottom: options.margin,\r\n right: options.margin\r\n };\r\n\r\n // default to 1 inch margins\r\n } else {\r\n this.margins = options.margins || DEFAULT_MARGINS;\r\n }\r\n\r\n // calculate page dimensions\r\n const dimensions = Array.isArray(this.size)\r\n ? this.size\r\n : SIZES[this.size.toUpperCase()];\r\n this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\r\n this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\r\n\r\n this.content = this.document.ref();\r\n\r\n // Initialize the Font, XObject, and ExtGState dictionaries\r\n this.resources = this.document.ref({\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']\r\n });\r\n\r\n // The page dictionary\r\n this.dictionary = this.document.ref({\r\n Type: 'Page',\r\n Parent: this.document._root.data.Pages,\r\n MediaBox: [0, 0, this.width, this.height],\r\n Contents: this.content,\r\n Resources: this.resources\r\n });\r\n\r\n this.markings = [];\r\n }\r\n\r\n // Lazily create these objects\r\n get fonts() {\r\n const data = this.resources.data;\r\n return data.Font != null ? data.Font : (data.Font = {});\r\n }\r\n\r\n get xobjects() {\r\n const data = this.resources.data;\r\n return data.XObject != null ? data.XObject : (data.XObject = {});\r\n }\r\n\r\n get ext_gstates() {\r\n const data = this.resources.data;\r\n return data.ExtGState != null ? data.ExtGState : (data.ExtGState = {});\r\n }\r\n\r\n get patterns() {\r\n const data = this.resources.data;\r\n return data.Pattern != null ? data.Pattern : (data.Pattern = {});\r\n }\r\n\r\n get colorSpaces() {\r\n const data = this.resources.data;\r\n return data.ColorSpace || (data.ColorSpace = {});\r\n }\r\n\r\n get annotations() {\r\n const data = this.dictionary.data;\r\n return data.Annots != null ? data.Annots : (data.Annots = []);\r\n }\r\n\r\n get structParentTreeKey() {\r\n const data = this.dictionary.data;\r\n return data.StructParents != null\r\n ? data.StructParents\r\n : (data.StructParents = this.document.createStructParentTreeNextKey());\r\n }\r\n\r\n maxY() {\r\n return this.height - this.margins.bottom;\r\n }\r\n\r\n write(chunk) {\r\n return this.content.write(chunk);\r\n }\r\n\r\n end() {\r\n this.dictionary.end();\r\n this.resources.end();\r\n return this.content.end();\r\n }\r\n}\r\n\r\nexport default PDFPage;\r\n","/*\r\nPDFNameTree - represents a name tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNameTree extends PDFTree {\r\n _compareKeys(a, b) {\r\n return a.localeCompare(b);\r\n }\r\n\r\n _keysName() {\r\n return \"Names\";\r\n }\r\n\r\n _dataForKey(k) {\r\n return new String(k);\r\n }\r\n}\r\n\r\nexport default PDFNameTree;\r\n","/**\r\n * Check if value is in a range group.\r\n * @param {number} value\r\n * @param {number[]} rangeGroup\r\n * @returns {boolean}\r\n */\r\nfunction inRange(value, rangeGroup) {\r\n if (value < rangeGroup[0]) return false;\r\n let startRange = 0;\r\n let endRange = rangeGroup.length / 2;\r\n while (startRange <= endRange) {\r\n const middleRange = Math.floor((startRange + endRange) / 2);\r\n\r\n // actual array index\r\n const arrayIndex = middleRange * 2;\r\n\r\n // Check if value is in range pointed by actual index\r\n if (\r\n value >= rangeGroup[arrayIndex] &&\r\n value <= rangeGroup[arrayIndex + 1]\r\n ) {\r\n return true;\r\n }\r\n\r\n if (value > rangeGroup[arrayIndex + 1]) {\r\n // Search Right Side Of Array\r\n startRange = middleRange + 1;\r\n } else {\r\n // Search Left Side Of Array\r\n endRange = middleRange - 1;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport { inRange };\r\n","import { inRange } from './util';\r\n\r\n// prettier-ignore-start\r\n/**\r\n * A.1 Unassigned code points in Unicode 3.2\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-A.1\r\n */\r\nconst unassigned_code_points = [\r\n 0x0221,\r\n 0x0221,\r\n 0x0234,\r\n 0x024f,\r\n 0x02ae,\r\n 0x02af,\r\n 0x02ef,\r\n 0x02ff,\r\n 0x0350,\r\n 0x035f,\r\n 0x0370,\r\n 0x0373,\r\n 0x0376,\r\n 0x0379,\r\n 0x037b,\r\n 0x037d,\r\n 0x037f,\r\n 0x0383,\r\n 0x038b,\r\n 0x038b,\r\n 0x038d,\r\n 0x038d,\r\n 0x03a2,\r\n 0x03a2,\r\n 0x03cf,\r\n 0x03cf,\r\n 0x03f7,\r\n 0x03ff,\r\n 0x0487,\r\n 0x0487,\r\n 0x04cf,\r\n 0x04cf,\r\n 0x04f6,\r\n 0x04f7,\r\n 0x04fa,\r\n 0x04ff,\r\n 0x0510,\r\n 0x0530,\r\n 0x0557,\r\n 0x0558,\r\n 0x0560,\r\n 0x0560,\r\n 0x0588,\r\n 0x0588,\r\n 0x058b,\r\n 0x0590,\r\n 0x05a2,\r\n 0x05a2,\r\n 0x05ba,\r\n 0x05ba,\r\n 0x05c5,\r\n 0x05cf,\r\n 0x05eb,\r\n 0x05ef,\r\n 0x05f5,\r\n 0x060b,\r\n 0x060d,\r\n 0x061a,\r\n 0x061c,\r\n 0x061e,\r\n 0x0620,\r\n 0x0620,\r\n 0x063b,\r\n 0x063f,\r\n 0x0656,\r\n 0x065f,\r\n 0x06ee,\r\n 0x06ef,\r\n 0x06ff,\r\n 0x06ff,\r\n 0x070e,\r\n 0x070e,\r\n 0x072d,\r\n 0x072f,\r\n 0x074b,\r\n 0x077f,\r\n 0x07b2,\r\n 0x0900,\r\n 0x0904,\r\n 0x0904,\r\n 0x093a,\r\n 0x093b,\r\n 0x094e,\r\n 0x094f,\r\n 0x0955,\r\n 0x0957,\r\n 0x0971,\r\n 0x0980,\r\n 0x0984,\r\n 0x0984,\r\n 0x098d,\r\n 0x098e,\r\n 0x0991,\r\n 0x0992,\r\n 0x09a9,\r\n 0x09a9,\r\n 0x09b1,\r\n 0x09b1,\r\n 0x09b3,\r\n 0x09b5,\r\n 0x09ba,\r\n 0x09bb,\r\n 0x09bd,\r\n 0x09bd,\r\n 0x09c5,\r\n 0x09c6,\r\n 0x09c9,\r\n 0x09ca,\r\n 0x09ce,\r\n 0x09d6,\r\n 0x09d8,\r\n 0x09db,\r\n 0x09de,\r\n 0x09de,\r\n 0x09e4,\r\n 0x09e5,\r\n 0x09fb,\r\n 0x0a01,\r\n 0x0a03,\r\n 0x0a04,\r\n 0x0a0b,\r\n 0x0a0e,\r\n 0x0a11,\r\n 0x0a12,\r\n 0x0a29,\r\n 0x0a29,\r\n 0x0a31,\r\n 0x0a31,\r\n 0x0a34,\r\n 0x0a34,\r\n 0x0a37,\r\n 0x0a37,\r\n 0x0a3a,\r\n 0x0a3b,\r\n 0x0a3d,\r\n 0x0a3d,\r\n 0x0a43,\r\n 0x0a46,\r\n 0x0a49,\r\n 0x0a4a,\r\n 0x0a4e,\r\n 0x0a58,\r\n 0x0a5d,\r\n 0x0a5d,\r\n 0x0a5f,\r\n 0x0a65,\r\n 0x0a75,\r\n 0x0a80,\r\n 0x0a84,\r\n 0x0a84,\r\n 0x0a8c,\r\n 0x0a8c,\r\n 0x0a8e,\r\n 0x0a8e,\r\n 0x0a92,\r\n 0x0a92,\r\n 0x0aa9,\r\n 0x0aa9,\r\n 0x0ab1,\r\n 0x0ab1,\r\n 0x0ab4,\r\n 0x0ab4,\r\n 0x0aba,\r\n 0x0abb,\r\n 0x0ac6,\r\n 0x0ac6,\r\n 0x0aca,\r\n 0x0aca,\r\n 0x0ace,\r\n 0x0acf,\r\n 0x0ad1,\r\n 0x0adf,\r\n 0x0ae1,\r\n 0x0ae5,\r\n 0x0af0,\r\n 0x0b00,\r\n 0x0b04,\r\n 0x0b04,\r\n 0x0b0d,\r\n 0x0b0e,\r\n 0x0b11,\r\n 0x0b12,\r\n 0x0b29,\r\n 0x0b29,\r\n 0x0b31,\r\n 0x0b31,\r\n 0x0b34,\r\n 0x0b35,\r\n 0x0b3a,\r\n 0x0b3b,\r\n 0x0b44,\r\n 0x0b46,\r\n 0x0b49,\r\n 0x0b4a,\r\n 0x0b4e,\r\n 0x0b55,\r\n 0x0b58,\r\n 0x0b5b,\r\n 0x0b5e,\r\n 0x0b5e,\r\n 0x0b62,\r\n 0x0b65,\r\n 0x0b71,\r\n 0x0b81,\r\n 0x0b84,\r\n 0x0b84,\r\n 0x0b8b,\r\n 0x0b8d,\r\n 0x0b91,\r\n 0x0b91,\r\n 0x0b96,\r\n 0x0b98,\r\n 0x0b9b,\r\n 0x0b9b,\r\n 0x0b9d,\r\n 0x0b9d,\r\n 0x0ba0,\r\n 0x0ba2,\r\n 0x0ba5,\r\n 0x0ba7,\r\n 0x0bab,\r\n 0x0bad,\r\n 0x0bb6,\r\n 0x0bb6,\r\n 0x0bba,\r\n 0x0bbd,\r\n 0x0bc3,\r\n 0x0bc5,\r\n 0x0bc9,\r\n 0x0bc9,\r\n 0x0bce,\r\n 0x0bd6,\r\n 0x0bd8,\r\n 0x0be6,\r\n 0x0bf3,\r\n 0x0c00,\r\n 0x0c04,\r\n 0x0c04,\r\n 0x0c0d,\r\n 0x0c0d,\r\n 0x0c11,\r\n 0x0c11,\r\n 0x0c29,\r\n 0x0c29,\r\n 0x0c34,\r\n 0x0c34,\r\n 0x0c3a,\r\n 0x0c3d,\r\n 0x0c45,\r\n 0x0c45,\r\n 0x0c49,\r\n 0x0c49,\r\n 0x0c4e,\r\n 0x0c54,\r\n 0x0c57,\r\n 0x0c5f,\r\n 0x0c62,\r\n 0x0c65,\r\n 0x0c70,\r\n 0x0c81,\r\n 0x0c84,\r\n 0x0c84,\r\n 0x0c8d,\r\n 0x0c8d,\r\n 0x0c91,\r\n 0x0c91,\r\n 0x0ca9,\r\n 0x0ca9,\r\n 0x0cb4,\r\n 0x0cb4,\r\n 0x0cba,\r\n 0x0cbd,\r\n 0x0cc5,\r\n 0x0cc5,\r\n 0x0cc9,\r\n 0x0cc9,\r\n 0x0cce,\r\n 0x0cd4,\r\n 0x0cd7,\r\n 0x0cdd,\r\n 0x0cdf,\r\n 0x0cdf,\r\n 0x0ce2,\r\n 0x0ce5,\r\n 0x0cf0,\r\n 0x0d01,\r\n 0x0d04,\r\n 0x0d04,\r\n 0x0d0d,\r\n 0x0d0d,\r\n 0x0d11,\r\n 0x0d11,\r\n 0x0d29,\r\n 0x0d29,\r\n 0x0d3a,\r\n 0x0d3d,\r\n 0x0d44,\r\n 0x0d45,\r\n 0x0d49,\r\n 0x0d49,\r\n 0x0d4e,\r\n 0x0d56,\r\n 0x0d58,\r\n 0x0d5f,\r\n 0x0d62,\r\n 0x0d65,\r\n 0x0d70,\r\n 0x0d81,\r\n 0x0d84,\r\n 0x0d84,\r\n 0x0d97,\r\n 0x0d99,\r\n 0x0db2,\r\n 0x0db2,\r\n 0x0dbc,\r\n 0x0dbc,\r\n 0x0dbe,\r\n 0x0dbf,\r\n 0x0dc7,\r\n 0x0dc9,\r\n 0x0dcb,\r\n 0x0dce,\r\n 0x0dd5,\r\n 0x0dd5,\r\n 0x0dd7,\r\n 0x0dd7,\r\n 0x0de0,\r\n 0x0df1,\r\n 0x0df5,\r\n 0x0e00,\r\n 0x0e3b,\r\n 0x0e3e,\r\n 0x0e5c,\r\n 0x0e80,\r\n 0x0e83,\r\n 0x0e83,\r\n 0x0e85,\r\n 0x0e86,\r\n 0x0e89,\r\n 0x0e89,\r\n 0x0e8b,\r\n 0x0e8c,\r\n 0x0e8e,\r\n 0x0e93,\r\n 0x0e98,\r\n 0x0e98,\r\n 0x0ea0,\r\n 0x0ea0,\r\n 0x0ea4,\r\n 0x0ea4,\r\n 0x0ea6,\r\n 0x0ea6,\r\n 0x0ea8,\r\n 0x0ea9,\r\n 0x0eac,\r\n 0x0eac,\r\n 0x0eba,\r\n 0x0eba,\r\n 0x0ebe,\r\n 0x0ebf,\r\n 0x0ec5,\r\n 0x0ec5,\r\n 0x0ec7,\r\n 0x0ec7,\r\n 0x0ece,\r\n 0x0ecf,\r\n 0x0eda,\r\n 0x0edb,\r\n 0x0ede,\r\n 0x0eff,\r\n 0x0f48,\r\n 0x0f48,\r\n 0x0f6b,\r\n 0x0f70,\r\n 0x0f8c,\r\n 0x0f8f,\r\n 0x0f98,\r\n 0x0f98,\r\n 0x0fbd,\r\n 0x0fbd,\r\n 0x0fcd,\r\n 0x0fce,\r\n 0x0fd0,\r\n 0x0fff,\r\n 0x1022,\r\n 0x1022,\r\n 0x1028,\r\n 0x1028,\r\n 0x102b,\r\n 0x102b,\r\n 0x1033,\r\n 0x1035,\r\n 0x103a,\r\n 0x103f,\r\n 0x105a,\r\n 0x109f,\r\n 0x10c6,\r\n 0x10cf,\r\n 0x10f9,\r\n 0x10fa,\r\n 0x10fc,\r\n 0x10ff,\r\n 0x115a,\r\n 0x115e,\r\n 0x11a3,\r\n 0x11a7,\r\n 0x11fa,\r\n 0x11ff,\r\n 0x1207,\r\n 0x1207,\r\n 0x1247,\r\n 0x1247,\r\n 0x1249,\r\n 0x1249,\r\n 0x124e,\r\n 0x124f,\r\n 0x1257,\r\n 0x1257,\r\n 0x1259,\r\n 0x1259,\r\n 0x125e,\r\n 0x125f,\r\n 0x1287,\r\n 0x1287,\r\n 0x1289,\r\n 0x1289,\r\n 0x128e,\r\n 0x128f,\r\n 0x12af,\r\n 0x12af,\r\n 0x12b1,\r\n 0x12b1,\r\n 0x12b6,\r\n 0x12b7,\r\n 0x12bf,\r\n 0x12bf,\r\n 0x12c1,\r\n 0x12c1,\r\n 0x12c6,\r\n 0x12c7,\r\n 0x12cf,\r\n 0x12cf,\r\n 0x12d7,\r\n 0x12d7,\r\n 0x12ef,\r\n 0x12ef,\r\n 0x130f,\r\n 0x130f,\r\n 0x1311,\r\n 0x1311,\r\n 0x1316,\r\n 0x1317,\r\n 0x131f,\r\n 0x131f,\r\n 0x1347,\r\n 0x1347,\r\n 0x135b,\r\n 0x1360,\r\n 0x137d,\r\n 0x139f,\r\n 0x13f5,\r\n 0x1400,\r\n 0x1677,\r\n 0x167f,\r\n 0x169d,\r\n 0x169f,\r\n 0x16f1,\r\n 0x16ff,\r\n 0x170d,\r\n 0x170d,\r\n 0x1715,\r\n 0x171f,\r\n 0x1737,\r\n 0x173f,\r\n 0x1754,\r\n 0x175f,\r\n 0x176d,\r\n 0x176d,\r\n 0x1771,\r\n 0x1771,\r\n 0x1774,\r\n 0x177f,\r\n 0x17dd,\r\n 0x17df,\r\n 0x17ea,\r\n 0x17ff,\r\n 0x180f,\r\n 0x180f,\r\n 0x181a,\r\n 0x181f,\r\n 0x1878,\r\n 0x187f,\r\n 0x18aa,\r\n 0x1dff,\r\n 0x1e9c,\r\n 0x1e9f,\r\n 0x1efa,\r\n 0x1eff,\r\n 0x1f16,\r\n 0x1f17,\r\n 0x1f1e,\r\n 0x1f1f,\r\n 0x1f46,\r\n 0x1f47,\r\n 0x1f4e,\r\n 0x1f4f,\r\n 0x1f58,\r\n 0x1f58,\r\n 0x1f5a,\r\n 0x1f5a,\r\n 0x1f5c,\r\n 0x1f5c,\r\n 0x1f5e,\r\n 0x1f5e,\r\n 0x1f7e,\r\n 0x1f7f,\r\n 0x1fb5,\r\n 0x1fb5,\r\n 0x1fc5,\r\n 0x1fc5,\r\n 0x1fd4,\r\n 0x1fd5,\r\n 0x1fdc,\r\n 0x1fdc,\r\n 0x1ff0,\r\n 0x1ff1,\r\n 0x1ff5,\r\n 0x1ff5,\r\n 0x1fff,\r\n 0x1fff,\r\n 0x2053,\r\n 0x2056,\r\n 0x2058,\r\n 0x205e,\r\n 0x2064,\r\n 0x2069,\r\n 0x2072,\r\n 0x2073,\r\n 0x208f,\r\n 0x209f,\r\n 0x20b2,\r\n 0x20cf,\r\n 0x20eb,\r\n 0x20ff,\r\n 0x213b,\r\n 0x213c,\r\n 0x214c,\r\n 0x2152,\r\n 0x2184,\r\n 0x218f,\r\n 0x23cf,\r\n 0x23ff,\r\n 0x2427,\r\n 0x243f,\r\n 0x244b,\r\n 0x245f,\r\n 0x24ff,\r\n 0x24ff,\r\n 0x2614,\r\n 0x2615,\r\n 0x2618,\r\n 0x2618,\r\n 0x267e,\r\n 0x267f,\r\n 0x268a,\r\n 0x2700,\r\n 0x2705,\r\n 0x2705,\r\n 0x270a,\r\n 0x270b,\r\n 0x2728,\r\n 0x2728,\r\n 0x274c,\r\n 0x274c,\r\n 0x274e,\r\n 0x274e,\r\n 0x2753,\r\n 0x2755,\r\n 0x2757,\r\n 0x2757,\r\n 0x275f,\r\n 0x2760,\r\n 0x2795,\r\n 0x2797,\r\n 0x27b0,\r\n 0x27b0,\r\n 0x27bf,\r\n 0x27cf,\r\n 0x27ec,\r\n 0x27ef,\r\n 0x2b00,\r\n 0x2e7f,\r\n 0x2e9a,\r\n 0x2e9a,\r\n 0x2ef4,\r\n 0x2eff,\r\n 0x2fd6,\r\n 0x2fef,\r\n 0x2ffc,\r\n 0x2fff,\r\n 0x3040,\r\n 0x3040,\r\n 0x3097,\r\n 0x3098,\r\n 0x3100,\r\n 0x3104,\r\n 0x312d,\r\n 0x3130,\r\n 0x318f,\r\n 0x318f,\r\n 0x31b8,\r\n 0x31ef,\r\n 0x321d,\r\n 0x321f,\r\n 0x3244,\r\n 0x3250,\r\n 0x327c,\r\n 0x327e,\r\n 0x32cc,\r\n 0x32cf,\r\n 0x32ff,\r\n 0x32ff,\r\n 0x3377,\r\n 0x337a,\r\n 0x33de,\r\n 0x33df,\r\n 0x33ff,\r\n 0x33ff,\r\n 0x4db6,\r\n 0x4dff,\r\n 0x9fa6,\r\n 0x9fff,\r\n 0xa48d,\r\n 0xa48f,\r\n 0xa4c7,\r\n 0xabff,\r\n 0xd7a4,\r\n 0xd7ff,\r\n 0xfa2e,\r\n 0xfa2f,\r\n 0xfa6b,\r\n 0xfaff,\r\n 0xfb07,\r\n 0xfb12,\r\n 0xfb18,\r\n 0xfb1c,\r\n 0xfb37,\r\n 0xfb37,\r\n 0xfb3d,\r\n 0xfb3d,\r\n 0xfb3f,\r\n 0xfb3f,\r\n 0xfb42,\r\n 0xfb42,\r\n 0xfb45,\r\n 0xfb45,\r\n 0xfbb2,\r\n 0xfbd2,\r\n 0xfd40,\r\n 0xfd4f,\r\n 0xfd90,\r\n 0xfd91,\r\n 0xfdc8,\r\n 0xfdcf,\r\n 0xfdfd,\r\n 0xfdff,\r\n 0xfe10,\r\n 0xfe1f,\r\n 0xfe24,\r\n 0xfe2f,\r\n 0xfe47,\r\n 0xfe48,\r\n 0xfe53,\r\n 0xfe53,\r\n 0xfe67,\r\n 0xfe67,\r\n 0xfe6c,\r\n 0xfe6f,\r\n 0xfe75,\r\n 0xfe75,\r\n 0xfefd,\r\n 0xfefe,\r\n 0xff00,\r\n 0xff00,\r\n 0xffbf,\r\n 0xffc1,\r\n 0xffc8,\r\n 0xffc9,\r\n 0xffd0,\r\n 0xffd1,\r\n 0xffd8,\r\n 0xffd9,\r\n 0xffdd,\r\n 0xffdf,\r\n 0xffe7,\r\n 0xffe7,\r\n 0xffef,\r\n 0xfff8,\r\n 0x10000,\r\n 0x102ff,\r\n 0x1031f,\r\n 0x1031f,\r\n 0x10324,\r\n 0x1032f,\r\n 0x1034b,\r\n 0x103ff,\r\n 0x10426,\r\n 0x10427,\r\n 0x1044e,\r\n 0x1cfff,\r\n 0x1d0f6,\r\n 0x1d0ff,\r\n 0x1d127,\r\n 0x1d129,\r\n 0x1d1de,\r\n 0x1d3ff,\r\n 0x1d455,\r\n 0x1d455,\r\n 0x1d49d,\r\n 0x1d49d,\r\n 0x1d4a0,\r\n 0x1d4a1,\r\n 0x1d4a3,\r\n 0x1d4a4,\r\n 0x1d4a7,\r\n 0x1d4a8,\r\n 0x1d4ad,\r\n 0x1d4ad,\r\n 0x1d4ba,\r\n 0x1d4ba,\r\n 0x1d4bc,\r\n 0x1d4bc,\r\n 0x1d4c1,\r\n 0x1d4c1,\r\n 0x1d4c4,\r\n 0x1d4c4,\r\n 0x1d506,\r\n 0x1d506,\r\n 0x1d50b,\r\n 0x1d50c,\r\n 0x1d515,\r\n 0x1d515,\r\n 0x1d51d,\r\n 0x1d51d,\r\n 0x1d53a,\r\n 0x1d53a,\r\n 0x1d53f,\r\n 0x1d53f,\r\n 0x1d545,\r\n 0x1d545,\r\n 0x1d547,\r\n 0x1d549,\r\n 0x1d551,\r\n 0x1d551,\r\n 0x1d6a4,\r\n 0x1d6a7,\r\n 0x1d7ca,\r\n 0x1d7cd,\r\n 0x1d800,\r\n 0x1fffd,\r\n 0x2a6d7,\r\n 0x2f7ff,\r\n 0x2fa1e,\r\n 0x2fffd,\r\n 0x30000,\r\n 0x3fffd,\r\n 0x40000,\r\n 0x4fffd,\r\n 0x50000,\r\n 0x5fffd,\r\n 0x60000,\r\n 0x6fffd,\r\n 0x70000,\r\n 0x7fffd,\r\n 0x80000,\r\n 0x8fffd,\r\n 0x90000,\r\n 0x9fffd,\r\n 0xa0000,\r\n 0xafffd,\r\n 0xb0000,\r\n 0xbfffd,\r\n 0xc0000,\r\n 0xcfffd,\r\n 0xd0000,\r\n 0xdfffd,\r\n 0xe0000,\r\n 0xe0000,\r\n 0xe0002,\r\n 0xe001f,\r\n 0xe0080,\r\n 0xefffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isUnassignedCodePoint = character =>\r\n inRange(character, unassigned_code_points);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * B.1 Commonly mapped to nothing\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-B.1\r\n */\r\nconst commonly_mapped_to_nothing = [\r\n 0x00ad,\r\n 0x00ad,\r\n 0x034f,\r\n 0x034f,\r\n 0x1806,\r\n 0x1806,\r\n 0x180b,\r\n 0x180b,\r\n 0x180c,\r\n 0x180c,\r\n 0x180d,\r\n 0x180d,\r\n 0x200b,\r\n 0x200b,\r\n 0x200c,\r\n 0x200c,\r\n 0x200d,\r\n 0x200d,\r\n 0x2060,\r\n 0x2060,\r\n 0xfe00,\r\n 0xfe00,\r\n 0xfe01,\r\n 0xfe01,\r\n 0xfe02,\r\n 0xfe02,\r\n 0xfe03,\r\n 0xfe03,\r\n 0xfe04,\r\n 0xfe04,\r\n 0xfe05,\r\n 0xfe05,\r\n 0xfe06,\r\n 0xfe06,\r\n 0xfe07,\r\n 0xfe07,\r\n 0xfe08,\r\n 0xfe08,\r\n 0xfe09,\r\n 0xfe09,\r\n 0xfe0a,\r\n 0xfe0a,\r\n 0xfe0b,\r\n 0xfe0b,\r\n 0xfe0c,\r\n 0xfe0c,\r\n 0xfe0d,\r\n 0xfe0d,\r\n 0xfe0e,\r\n 0xfe0e,\r\n 0xfe0f,\r\n 0xfe0f,\r\n 0xfeff,\r\n 0xfeff\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isCommonlyMappedToNothing = character =>\r\n inRange(character, commonly_mapped_to_nothing);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * C.1.2 Non-ASCII space characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2\r\n */\r\nconst non_ASCII_space_characters = [\r\n 0x00a0,\r\n 0x00a0 /* NO-BREAK SPACE */,\r\n 0x1680,\r\n 0x1680 /* OGHAM SPACE MARK */,\r\n 0x2000,\r\n 0x2000 /* EN QUAD */,\r\n 0x2001,\r\n 0x2001 /* EM QUAD */,\r\n 0x2002,\r\n 0x2002 /* EN SPACE */,\r\n 0x2003,\r\n 0x2003 /* EM SPACE */,\r\n 0x2004,\r\n 0x2004 /* THREE-PER-EM SPACE */,\r\n 0x2005,\r\n 0x2005 /* FOUR-PER-EM SPACE */,\r\n 0x2006,\r\n 0x2006 /* SIX-PER-EM SPACE */,\r\n 0x2007,\r\n 0x2007 /* FIGURE SPACE */,\r\n 0x2008,\r\n 0x2008 /* PUNCTUATION SPACE */,\r\n 0x2009,\r\n 0x2009 /* THIN SPACE */,\r\n 0x200a,\r\n 0x200a /* HAIR SPACE */,\r\n 0x200b,\r\n 0x200b /* ZERO WIDTH SPACE */,\r\n 0x202f,\r\n 0x202f /* NARROW NO-BREAK SPACE */,\r\n 0x205f,\r\n 0x205f /* MEDIUM MATHEMATICAL SPACE */,\r\n 0x3000,\r\n 0x3000 /* IDEOGRAPHIC SPACE */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isNonASCIISpaceCharacter = character =>\r\n inRange(character, non_ASCII_space_characters);\r\n\r\n// prettier-ignore-start\r\nconst non_ASCII_controls_characters = [\r\n /**\r\n * C.2.2 Non-ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2\r\n */\r\n 0x0080,\r\n 0x009f /* [CONTROL CHARACTERS] */,\r\n 0x06dd,\r\n 0x06dd /* ARABIC END OF AYAH */,\r\n 0x070f,\r\n 0x070f /* SYRIAC ABBREVIATION MARK */,\r\n 0x180e,\r\n 0x180e /* MONGOLIAN VOWEL SEPARATOR */,\r\n 0x200c,\r\n 0x200c /* ZERO WIDTH NON-JOINER */,\r\n 0x200d,\r\n 0x200d /* ZERO WIDTH JOINER */,\r\n 0x2028,\r\n 0x2028 /* LINE SEPARATOR */,\r\n 0x2029,\r\n 0x2029 /* PARAGRAPH SEPARATOR */,\r\n 0x2060,\r\n 0x2060 /* WORD JOINER */,\r\n 0x2061,\r\n 0x2061 /* FUNCTION APPLICATION */,\r\n 0x2062,\r\n 0x2062 /* INVISIBLE TIMES */,\r\n 0x2063,\r\n 0x2063 /* INVISIBLE SEPARATOR */,\r\n 0x206a,\r\n 0x206f /* [CONTROL CHARACTERS] */,\r\n 0xfeff,\r\n 0xfeff /* ZERO WIDTH NO-BREAK SPACE */,\r\n 0xfff9,\r\n 0xfffc /* [CONTROL CHARACTERS] */,\r\n 0x1d173,\r\n 0x1d17a /* [MUSICAL CONTROL CHARACTERS] */\r\n];\r\n\r\nconst non_character_codepoints = [\r\n /**\r\n * C.4 Non-character code points\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.4\r\n */\r\n 0xfdd0,\r\n 0xfdef /* [NONCHARACTER CODE POINTS] */,\r\n 0xfffe,\r\n 0xffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x1fffe,\r\n 0x1ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x2fffe,\r\n 0x2ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x3fffe,\r\n 0x3ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x4fffe,\r\n 0x4ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x5fffe,\r\n 0x5ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x6fffe,\r\n 0x6ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x7fffe,\r\n 0x7ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x8fffe,\r\n 0x8ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x9fffe,\r\n 0x9ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xafffe,\r\n 0xaffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xbfffe,\r\n 0xbffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xcfffe,\r\n 0xcffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xdfffe,\r\n 0xdffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xefffe,\r\n 0xeffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x10fffe,\r\n 0x10ffff /* [NONCHARACTER CODE POINTS] */\r\n];\r\n\r\n/**\r\n * 2.3. Prohibited Output\r\n */\r\nconst prohibited_characters = [\r\n /**\r\n * C.2.1 ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1\r\n */\r\n 0,\r\n 0x001f /* [CONTROL CHARACTERS] */,\r\n 0x007f,\r\n 0x007f /* DELETE */,\r\n\r\n /**\r\n * C.8 Change display properties or are deprecated\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.8\r\n */\r\n 0x0340,\r\n 0x0340 /* COMBINING GRAVE TONE MARK */,\r\n 0x0341,\r\n 0x0341 /* COMBINING ACUTE TONE MARK */,\r\n 0x200e,\r\n 0x200e /* LEFT-TO-RIGHT MARK */,\r\n 0x200f,\r\n 0x200f /* RIGHT-TO-LEFT MARK */,\r\n 0x202a,\r\n 0x202a /* LEFT-TO-RIGHT EMBEDDING */,\r\n 0x202b,\r\n 0x202b /* RIGHT-TO-LEFT EMBEDDING */,\r\n 0x202c,\r\n 0x202c /* POP DIRECTIONAL FORMATTING */,\r\n 0x202d,\r\n 0x202d /* LEFT-TO-RIGHT OVERRIDE */,\r\n 0x202e,\r\n 0x202e /* RIGHT-TO-LEFT OVERRIDE */,\r\n 0x206a,\r\n 0x206a /* INHIBIT SYMMETRIC SWAPPING */,\r\n 0x206b,\r\n 0x206b /* ACTIVATE SYMMETRIC SWAPPING */,\r\n 0x206c,\r\n 0x206c /* INHIBIT ARABIC FORM SHAPING */,\r\n 0x206d,\r\n 0x206d /* ACTIVATE ARABIC FORM SHAPING */,\r\n 0x206e,\r\n 0x206e /* NATIONAL DIGIT SHAPES */,\r\n 0x206f,\r\n 0x206f /* NOMINAL DIGIT SHAPES */,\r\n\r\n /**\r\n * C.7 Inappropriate for canonical representation\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.7\r\n */\r\n 0x2ff0,\r\n 0x2ffb /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,\r\n\r\n /**\r\n * C.5 Surrogate codes\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.5\r\n */\r\n 0xd800,\r\n 0xdfff,\r\n\r\n /**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\r\n 0xe000,\r\n 0xf8ff /* [PRIVATE USE, PLANE 0] */,\r\n\r\n /**\r\n * C.6 Inappropriate for plain text\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.6\r\n */\r\n 0xfff9,\r\n 0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */,\r\n 0xfffa,\r\n 0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */,\r\n 0xfffb,\r\n 0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */,\r\n 0xfffc,\r\n 0xfffc /* OBJECT REPLACEMENT CHARACTER */,\r\n 0xfffd,\r\n 0xfffd /* REPLACEMENT CHARACTER */,\r\n\r\n /**\r\n * C.9 Tagging characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.9\r\n */\r\n 0xe0001,\r\n 0xe0001 /* LANGUAGE TAG */,\r\n 0xe0020,\r\n 0xe007f /* [TAGGING CHARACTERS] */,\r\n\r\n /**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\r\n\r\n 0xf0000,\r\n 0xffffd /* [PRIVATE USE, PLANE 15] */,\r\n 0x100000,\r\n 0x10fffd /* [PRIVATE USE, PLANE 16] */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isProhibitedCharacter = character =>\r\n inRange(character, non_ASCII_space_characters) ||\r\n inRange(character, prohibited_characters) ||\r\n inRange(character, non_ASCII_controls_characters) ||\r\n inRange(character, non_character_codepoints);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.1 Characters with bidirectional property \"R\" or \"AL\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.1\r\n */\r\nconst bidirectional_r_al = [\r\n 0x05be,\r\n 0x05be,\r\n 0x05c0,\r\n 0x05c0,\r\n 0x05c3,\r\n 0x05c3,\r\n 0x05d0,\r\n 0x05ea,\r\n 0x05f0,\r\n 0x05f4,\r\n 0x061b,\r\n 0x061b,\r\n 0x061f,\r\n 0x061f,\r\n 0x0621,\r\n 0x063a,\r\n 0x0640,\r\n 0x064a,\r\n 0x066d,\r\n 0x066f,\r\n 0x0671,\r\n 0x06d5,\r\n 0x06dd,\r\n 0x06dd,\r\n 0x06e5,\r\n 0x06e6,\r\n 0x06fa,\r\n 0x06fe,\r\n 0x0700,\r\n 0x070d,\r\n 0x0710,\r\n 0x0710,\r\n 0x0712,\r\n 0x072c,\r\n 0x0780,\r\n 0x07a5,\r\n 0x07b1,\r\n 0x07b1,\r\n 0x200f,\r\n 0x200f,\r\n 0xfb1d,\r\n 0xfb1d,\r\n 0xfb1f,\r\n 0xfb28,\r\n 0xfb2a,\r\n 0xfb36,\r\n 0xfb38,\r\n 0xfb3c,\r\n 0xfb3e,\r\n 0xfb3e,\r\n 0xfb40,\r\n 0xfb41,\r\n 0xfb43,\r\n 0xfb44,\r\n 0xfb46,\r\n 0xfbb1,\r\n 0xfbd3,\r\n 0xfd3d,\r\n 0xfd50,\r\n 0xfd8f,\r\n 0xfd92,\r\n 0xfdc7,\r\n 0xfdf0,\r\n 0xfdfc,\r\n 0xfe70,\r\n 0xfe74,\r\n 0xfe76,\r\n 0xfefc\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalRAL = character => inRange(character, bidirectional_r_al);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.2 Characters with bidirectional property \"L\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.2\r\n */\r\nconst bidirectional_l = [\r\n 0x0041,\r\n 0x005a,\r\n 0x0061,\r\n 0x007a,\r\n 0x00aa,\r\n 0x00aa,\r\n 0x00b5,\r\n 0x00b5,\r\n 0x00ba,\r\n 0x00ba,\r\n 0x00c0,\r\n 0x00d6,\r\n 0x00d8,\r\n 0x00f6,\r\n 0x00f8,\r\n 0x0220,\r\n 0x0222,\r\n 0x0233,\r\n 0x0250,\r\n 0x02ad,\r\n 0x02b0,\r\n 0x02b8,\r\n 0x02bb,\r\n 0x02c1,\r\n 0x02d0,\r\n 0x02d1,\r\n 0x02e0,\r\n 0x02e4,\r\n 0x02ee,\r\n 0x02ee,\r\n 0x037a,\r\n 0x037a,\r\n 0x0386,\r\n 0x0386,\r\n 0x0388,\r\n 0x038a,\r\n 0x038c,\r\n 0x038c,\r\n 0x038e,\r\n 0x03a1,\r\n 0x03a3,\r\n 0x03ce,\r\n 0x03d0,\r\n 0x03f5,\r\n 0x0400,\r\n 0x0482,\r\n 0x048a,\r\n 0x04ce,\r\n 0x04d0,\r\n 0x04f5,\r\n 0x04f8,\r\n 0x04f9,\r\n 0x0500,\r\n 0x050f,\r\n 0x0531,\r\n 0x0556,\r\n 0x0559,\r\n 0x055f,\r\n 0x0561,\r\n 0x0587,\r\n 0x0589,\r\n 0x0589,\r\n 0x0903,\r\n 0x0903,\r\n 0x0905,\r\n 0x0939,\r\n 0x093d,\r\n 0x0940,\r\n 0x0949,\r\n 0x094c,\r\n 0x0950,\r\n 0x0950,\r\n 0x0958,\r\n 0x0961,\r\n 0x0964,\r\n 0x0970,\r\n 0x0982,\r\n 0x0983,\r\n 0x0985,\r\n 0x098c,\r\n 0x098f,\r\n 0x0990,\r\n 0x0993,\r\n 0x09a8,\r\n 0x09aa,\r\n 0x09b0,\r\n 0x09b2,\r\n 0x09b2,\r\n 0x09b6,\r\n 0x09b9,\r\n 0x09be,\r\n 0x09c0,\r\n 0x09c7,\r\n 0x09c8,\r\n 0x09cb,\r\n 0x09cc,\r\n 0x09d7,\r\n 0x09d7,\r\n 0x09dc,\r\n 0x09dd,\r\n 0x09df,\r\n 0x09e1,\r\n 0x09e6,\r\n 0x09f1,\r\n 0x09f4,\r\n 0x09fa,\r\n 0x0a05,\r\n 0x0a0a,\r\n 0x0a0f,\r\n 0x0a10,\r\n 0x0a13,\r\n 0x0a28,\r\n 0x0a2a,\r\n 0x0a30,\r\n 0x0a32,\r\n 0x0a33,\r\n 0x0a35,\r\n 0x0a36,\r\n 0x0a38,\r\n 0x0a39,\r\n 0x0a3e,\r\n 0x0a40,\r\n 0x0a59,\r\n 0x0a5c,\r\n 0x0a5e,\r\n 0x0a5e,\r\n 0x0a66,\r\n 0x0a6f,\r\n 0x0a72,\r\n 0x0a74,\r\n 0x0a83,\r\n 0x0a83,\r\n 0x0a85,\r\n 0x0a8b,\r\n 0x0a8d,\r\n 0x0a8d,\r\n 0x0a8f,\r\n 0x0a91,\r\n 0x0a93,\r\n 0x0aa8,\r\n 0x0aaa,\r\n 0x0ab0,\r\n 0x0ab2,\r\n 0x0ab3,\r\n 0x0ab5,\r\n 0x0ab9,\r\n 0x0abd,\r\n 0x0ac0,\r\n 0x0ac9,\r\n 0x0ac9,\r\n 0x0acb,\r\n 0x0acc,\r\n 0x0ad0,\r\n 0x0ad0,\r\n 0x0ae0,\r\n 0x0ae0,\r\n 0x0ae6,\r\n 0x0aef,\r\n 0x0b02,\r\n 0x0b03,\r\n 0x0b05,\r\n 0x0b0c,\r\n 0x0b0f,\r\n 0x0b10,\r\n 0x0b13,\r\n 0x0b28,\r\n 0x0b2a,\r\n 0x0b30,\r\n 0x0b32,\r\n 0x0b33,\r\n 0x0b36,\r\n 0x0b39,\r\n 0x0b3d,\r\n 0x0b3e,\r\n 0x0b40,\r\n 0x0b40,\r\n 0x0b47,\r\n 0x0b48,\r\n 0x0b4b,\r\n 0x0b4c,\r\n 0x0b57,\r\n 0x0b57,\r\n 0x0b5c,\r\n 0x0b5d,\r\n 0x0b5f,\r\n 0x0b61,\r\n 0x0b66,\r\n 0x0b70,\r\n 0x0b83,\r\n 0x0b83,\r\n 0x0b85,\r\n 0x0b8a,\r\n 0x0b8e,\r\n 0x0b90,\r\n 0x0b92,\r\n 0x0b95,\r\n 0x0b99,\r\n 0x0b9a,\r\n 0x0b9c,\r\n 0x0b9c,\r\n 0x0b9e,\r\n 0x0b9f,\r\n 0x0ba3,\r\n 0x0ba4,\r\n 0x0ba8,\r\n 0x0baa,\r\n 0x0bae,\r\n 0x0bb5,\r\n 0x0bb7,\r\n 0x0bb9,\r\n 0x0bbe,\r\n 0x0bbf,\r\n 0x0bc1,\r\n 0x0bc2,\r\n 0x0bc6,\r\n 0x0bc8,\r\n 0x0bca,\r\n 0x0bcc,\r\n 0x0bd7,\r\n 0x0bd7,\r\n 0x0be7,\r\n 0x0bf2,\r\n 0x0c01,\r\n 0x0c03,\r\n 0x0c05,\r\n 0x0c0c,\r\n 0x0c0e,\r\n 0x0c10,\r\n 0x0c12,\r\n 0x0c28,\r\n 0x0c2a,\r\n 0x0c33,\r\n 0x0c35,\r\n 0x0c39,\r\n 0x0c41,\r\n 0x0c44,\r\n 0x0c60,\r\n 0x0c61,\r\n 0x0c66,\r\n 0x0c6f,\r\n 0x0c82,\r\n 0x0c83,\r\n 0x0c85,\r\n 0x0c8c,\r\n 0x0c8e,\r\n 0x0c90,\r\n 0x0c92,\r\n 0x0ca8,\r\n 0x0caa,\r\n 0x0cb3,\r\n 0x0cb5,\r\n 0x0cb9,\r\n 0x0cbe,\r\n 0x0cbe,\r\n 0x0cc0,\r\n 0x0cc4,\r\n 0x0cc7,\r\n 0x0cc8,\r\n 0x0cca,\r\n 0x0ccb,\r\n 0x0cd5,\r\n 0x0cd6,\r\n 0x0cde,\r\n 0x0cde,\r\n 0x0ce0,\r\n 0x0ce1,\r\n 0x0ce6,\r\n 0x0cef,\r\n 0x0d02,\r\n 0x0d03,\r\n 0x0d05,\r\n 0x0d0c,\r\n 0x0d0e,\r\n 0x0d10,\r\n 0x0d12,\r\n 0x0d28,\r\n 0x0d2a,\r\n 0x0d39,\r\n 0x0d3e,\r\n 0x0d40,\r\n 0x0d46,\r\n 0x0d48,\r\n 0x0d4a,\r\n 0x0d4c,\r\n 0x0d57,\r\n 0x0d57,\r\n 0x0d60,\r\n 0x0d61,\r\n 0x0d66,\r\n 0x0d6f,\r\n 0x0d82,\r\n 0x0d83,\r\n 0x0d85,\r\n 0x0d96,\r\n 0x0d9a,\r\n 0x0db1,\r\n 0x0db3,\r\n 0x0dbb,\r\n 0x0dbd,\r\n 0x0dbd,\r\n 0x0dc0,\r\n 0x0dc6,\r\n 0x0dcf,\r\n 0x0dd1,\r\n 0x0dd8,\r\n 0x0ddf,\r\n 0x0df2,\r\n 0x0df4,\r\n 0x0e01,\r\n 0x0e30,\r\n 0x0e32,\r\n 0x0e33,\r\n 0x0e40,\r\n 0x0e46,\r\n 0x0e4f,\r\n 0x0e5b,\r\n 0x0e81,\r\n 0x0e82,\r\n 0x0e84,\r\n 0x0e84,\r\n 0x0e87,\r\n 0x0e88,\r\n 0x0e8a,\r\n 0x0e8a,\r\n 0x0e8d,\r\n 0x0e8d,\r\n 0x0e94,\r\n 0x0e97,\r\n 0x0e99,\r\n 0x0e9f,\r\n 0x0ea1,\r\n 0x0ea3,\r\n 0x0ea5,\r\n 0x0ea5,\r\n 0x0ea7,\r\n 0x0ea7,\r\n 0x0eaa,\r\n 0x0eab,\r\n 0x0ead,\r\n 0x0eb0,\r\n 0x0eb2,\r\n 0x0eb3,\r\n 0x0ebd,\r\n 0x0ebd,\r\n 0x0ec0,\r\n 0x0ec4,\r\n 0x0ec6,\r\n 0x0ec6,\r\n 0x0ed0,\r\n 0x0ed9,\r\n 0x0edc,\r\n 0x0edd,\r\n 0x0f00,\r\n 0x0f17,\r\n 0x0f1a,\r\n 0x0f34,\r\n 0x0f36,\r\n 0x0f36,\r\n 0x0f38,\r\n 0x0f38,\r\n 0x0f3e,\r\n 0x0f47,\r\n 0x0f49,\r\n 0x0f6a,\r\n 0x0f7f,\r\n 0x0f7f,\r\n 0x0f85,\r\n 0x0f85,\r\n 0x0f88,\r\n 0x0f8b,\r\n 0x0fbe,\r\n 0x0fc5,\r\n 0x0fc7,\r\n 0x0fcc,\r\n 0x0fcf,\r\n 0x0fcf,\r\n 0x1000,\r\n 0x1021,\r\n 0x1023,\r\n 0x1027,\r\n 0x1029,\r\n 0x102a,\r\n 0x102c,\r\n 0x102c,\r\n 0x1031,\r\n 0x1031,\r\n 0x1038,\r\n 0x1038,\r\n 0x1040,\r\n 0x1057,\r\n 0x10a0,\r\n 0x10c5,\r\n 0x10d0,\r\n 0x10f8,\r\n 0x10fb,\r\n 0x10fb,\r\n 0x1100,\r\n 0x1159,\r\n 0x115f,\r\n 0x11a2,\r\n 0x11a8,\r\n 0x11f9,\r\n 0x1200,\r\n 0x1206,\r\n 0x1208,\r\n 0x1246,\r\n 0x1248,\r\n 0x1248,\r\n 0x124a,\r\n 0x124d,\r\n 0x1250,\r\n 0x1256,\r\n 0x1258,\r\n 0x1258,\r\n 0x125a,\r\n 0x125d,\r\n 0x1260,\r\n 0x1286,\r\n 0x1288,\r\n 0x1288,\r\n 0x128a,\r\n 0x128d,\r\n 0x1290,\r\n 0x12ae,\r\n 0x12b0,\r\n 0x12b0,\r\n 0x12b2,\r\n 0x12b5,\r\n 0x12b8,\r\n 0x12be,\r\n 0x12c0,\r\n 0x12c0,\r\n 0x12c2,\r\n 0x12c5,\r\n 0x12c8,\r\n 0x12ce,\r\n 0x12d0,\r\n 0x12d6,\r\n 0x12d8,\r\n 0x12ee,\r\n 0x12f0,\r\n 0x130e,\r\n 0x1310,\r\n 0x1310,\r\n 0x1312,\r\n 0x1315,\r\n 0x1318,\r\n 0x131e,\r\n 0x1320,\r\n 0x1346,\r\n 0x1348,\r\n 0x135a,\r\n 0x1361,\r\n 0x137c,\r\n 0x13a0,\r\n 0x13f4,\r\n 0x1401,\r\n 0x1676,\r\n 0x1681,\r\n 0x169a,\r\n 0x16a0,\r\n 0x16f0,\r\n 0x1700,\r\n 0x170c,\r\n 0x170e,\r\n 0x1711,\r\n 0x1720,\r\n 0x1731,\r\n 0x1735,\r\n 0x1736,\r\n 0x1740,\r\n 0x1751,\r\n 0x1760,\r\n 0x176c,\r\n 0x176e,\r\n 0x1770,\r\n 0x1780,\r\n 0x17b6,\r\n 0x17be,\r\n 0x17c5,\r\n 0x17c7,\r\n 0x17c8,\r\n 0x17d4,\r\n 0x17da,\r\n 0x17dc,\r\n 0x17dc,\r\n 0x17e0,\r\n 0x17e9,\r\n 0x1810,\r\n 0x1819,\r\n 0x1820,\r\n 0x1877,\r\n 0x1880,\r\n 0x18a8,\r\n 0x1e00,\r\n 0x1e9b,\r\n 0x1ea0,\r\n 0x1ef9,\r\n 0x1f00,\r\n 0x1f15,\r\n 0x1f18,\r\n 0x1f1d,\r\n 0x1f20,\r\n 0x1f45,\r\n 0x1f48,\r\n 0x1f4d,\r\n 0x1f50,\r\n 0x1f57,\r\n 0x1f59,\r\n 0x1f59,\r\n 0x1f5b,\r\n 0x1f5b,\r\n 0x1f5d,\r\n 0x1f5d,\r\n 0x1f5f,\r\n 0x1f7d,\r\n 0x1f80,\r\n 0x1fb4,\r\n 0x1fb6,\r\n 0x1fbc,\r\n 0x1fbe,\r\n 0x1fbe,\r\n 0x1fc2,\r\n 0x1fc4,\r\n 0x1fc6,\r\n 0x1fcc,\r\n 0x1fd0,\r\n 0x1fd3,\r\n 0x1fd6,\r\n 0x1fdb,\r\n 0x1fe0,\r\n 0x1fec,\r\n 0x1ff2,\r\n 0x1ff4,\r\n 0x1ff6,\r\n 0x1ffc,\r\n 0x200e,\r\n 0x200e,\r\n 0x2071,\r\n 0x2071,\r\n 0x207f,\r\n 0x207f,\r\n 0x2102,\r\n 0x2102,\r\n 0x2107,\r\n 0x2107,\r\n 0x210a,\r\n 0x2113,\r\n 0x2115,\r\n 0x2115,\r\n 0x2119,\r\n 0x211d,\r\n 0x2124,\r\n 0x2124,\r\n 0x2126,\r\n 0x2126,\r\n 0x2128,\r\n 0x2128,\r\n 0x212a,\r\n 0x212d,\r\n 0x212f,\r\n 0x2131,\r\n 0x2133,\r\n 0x2139,\r\n 0x213d,\r\n 0x213f,\r\n 0x2145,\r\n 0x2149,\r\n 0x2160,\r\n 0x2183,\r\n 0x2336,\r\n 0x237a,\r\n 0x2395,\r\n 0x2395,\r\n 0x249c,\r\n 0x24e9,\r\n 0x3005,\r\n 0x3007,\r\n 0x3021,\r\n 0x3029,\r\n 0x3031,\r\n 0x3035,\r\n 0x3038,\r\n 0x303c,\r\n 0x3041,\r\n 0x3096,\r\n 0x309d,\r\n 0x309f,\r\n 0x30a1,\r\n 0x30fa,\r\n 0x30fc,\r\n 0x30ff,\r\n 0x3105,\r\n 0x312c,\r\n 0x3131,\r\n 0x318e,\r\n 0x3190,\r\n 0x31b7,\r\n 0x31f0,\r\n 0x321c,\r\n 0x3220,\r\n 0x3243,\r\n 0x3260,\r\n 0x327b,\r\n 0x327f,\r\n 0x32b0,\r\n 0x32c0,\r\n 0x32cb,\r\n 0x32d0,\r\n 0x32fe,\r\n 0x3300,\r\n 0x3376,\r\n 0x337b,\r\n 0x33dd,\r\n 0x33e0,\r\n 0x33fe,\r\n 0x3400,\r\n 0x4db5,\r\n 0x4e00,\r\n 0x9fa5,\r\n 0xa000,\r\n 0xa48c,\r\n 0xac00,\r\n 0xd7a3,\r\n 0xd800,\r\n 0xfa2d,\r\n 0xfa30,\r\n 0xfa6a,\r\n 0xfb00,\r\n 0xfb06,\r\n 0xfb13,\r\n 0xfb17,\r\n 0xff21,\r\n 0xff3a,\r\n 0xff41,\r\n 0xff5a,\r\n 0xff66,\r\n 0xffbe,\r\n 0xffc2,\r\n 0xffc7,\r\n 0xffca,\r\n 0xffcf,\r\n 0xffd2,\r\n 0xffd7,\r\n 0xffda,\r\n 0xffdc,\r\n 0x10300,\r\n 0x1031e,\r\n 0x10320,\r\n 0x10323,\r\n 0x10330,\r\n 0x1034a,\r\n 0x10400,\r\n 0x10425,\r\n 0x10428,\r\n 0x1044d,\r\n 0x1d000,\r\n 0x1d0f5,\r\n 0x1d100,\r\n 0x1d126,\r\n 0x1d12a,\r\n 0x1d166,\r\n 0x1d16a,\r\n 0x1d172,\r\n 0x1d183,\r\n 0x1d184,\r\n 0x1d18c,\r\n 0x1d1a9,\r\n 0x1d1ae,\r\n 0x1d1dd,\r\n 0x1d400,\r\n 0x1d454,\r\n 0x1d456,\r\n 0x1d49c,\r\n 0x1d49e,\r\n 0x1d49f,\r\n 0x1d4a2,\r\n 0x1d4a2,\r\n 0x1d4a5,\r\n 0x1d4a6,\r\n 0x1d4a9,\r\n 0x1d4ac,\r\n 0x1d4ae,\r\n 0x1d4b9,\r\n 0x1d4bb,\r\n 0x1d4bb,\r\n 0x1d4bd,\r\n 0x1d4c0,\r\n 0x1d4c2,\r\n 0x1d4c3,\r\n 0x1d4c5,\r\n 0x1d505,\r\n 0x1d507,\r\n 0x1d50a,\r\n 0x1d50d,\r\n 0x1d514,\r\n 0x1d516,\r\n 0x1d51c,\r\n 0x1d51e,\r\n 0x1d539,\r\n 0x1d53b,\r\n 0x1d53e,\r\n 0x1d540,\r\n 0x1d544,\r\n 0x1d546,\r\n 0x1d546,\r\n 0x1d54a,\r\n 0x1d550,\r\n 0x1d552,\r\n 0x1d6a3,\r\n 0x1d6a8,\r\n 0x1d7c9,\r\n 0x20000,\r\n 0x2a6d6,\r\n 0x2f800,\r\n 0x2fa1d,\r\n 0xf0000,\r\n 0xffffd,\r\n 0x100000,\r\n 0x10fffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalL = character => inRange(character, bidirectional_l);\r\n\r\nexport {\r\n isUnassignedCodePoint,\r\n isCommonlyMappedToNothing,\r\n isNonASCIISpaceCharacter,\r\n isProhibitedCharacter,\r\n isBidirectionalRAL,\r\n isBidirectionalL\r\n};\r\n","import {\r\n isUnassignedCodePoint,\r\n isCommonlyMappedToNothing,\r\n isNonASCIISpaceCharacter,\r\n isProhibitedCharacter,\r\n isBidirectionalRAL,\r\n isBidirectionalL\r\n} from './lib/code-points';\r\n\r\n// 2.1. Mapping\r\n\r\n/**\r\n * non-ASCII space characters [StringPrep, C.1.2] that can be\r\n * mapped to SPACE (U+0020)\r\n */\r\nconst mapping2space = isNonASCIISpaceCharacter;\r\n\r\n/**\r\n * the \"commonly mapped to nothing\" characters [StringPrep, B.1]\r\n * that can be mapped to nothing.\r\n */\r\nconst mapping2nothing = isCommonlyMappedToNothing;\r\n\r\n// utils\r\nconst getCodePoint = character => character.codePointAt(0);\r\nconst first = x => x[0];\r\nconst last = x => x[x.length - 1];\r\n\r\n/**\r\n * Convert provided string into an array of Unicode Code Points.\r\n * Based on https://stackoverflow.com/a/21409165/1556249\r\n * and https://www.npmjs.com/package/code-point-at.\r\n * @param {string} input\r\n * @returns {number[]}\r\n */\r\nfunction toCodePoints(input) {\r\n const codepoints = [];\r\n const size = input.length;\r\n\r\n for (let i = 0; i < size; i += 1) {\r\n const before = input.charCodeAt(i);\r\n\r\n if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {\r\n const next = input.charCodeAt(i + 1);\r\n\r\n if (next >= 0xdc00 && next <= 0xdfff) {\r\n codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);\r\n i += 1;\r\n continue;\r\n }\r\n }\r\n\r\n codepoints.push(before);\r\n }\r\n\r\n return codepoints;\r\n}\r\n\r\n/**\r\n * SASLprep.\r\n * @param {string} input\r\n * @param {Object} opts\r\n * @param {boolean} opts.allowUnassigned\r\n * @returns {string}\r\n */\r\nfunction saslprep(input, opts = {}) {\r\n if (typeof input !== 'string') {\r\n throw new TypeError('Expected string.');\r\n }\r\n\r\n if (input.length === 0) {\r\n return '';\r\n }\r\n\r\n // 1. Map\r\n const mapped_input = toCodePoints(input)\r\n // 1.1 mapping to space\r\n .map(character => (mapping2space(character) ? 0x20 : character))\r\n // 1.2 mapping to nothing\r\n .filter(character => !mapping2nothing(character));\r\n\r\n // 2. Normalize\r\n const normalized_input = String.fromCodePoint\r\n .apply(null, mapped_input)\r\n .normalize('NFKC');\r\n\r\n const normalized_map = toCodePoints(normalized_input);\r\n\r\n // 3. Prohibit\r\n const hasProhibited = normalized_map.some(isProhibitedCharacter);\r\n\r\n if (hasProhibited) {\r\n throw new Error(\r\n 'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3'\r\n );\r\n }\r\n\r\n // Unassigned Code Points\r\n if (opts.allowUnassigned !== true) {\r\n const hasUnassigned = normalized_map.some(isUnassignedCodePoint);\r\n\r\n if (hasUnassigned) {\r\n throw new Error(\r\n 'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5'\r\n );\r\n }\r\n }\r\n\r\n // 4. check bidi\r\n\r\n const hasBidiRAL = normalized_map.some(isBidirectionalRAL);\r\n\r\n const hasBidiL = normalized_map.some(isBidirectionalL);\r\n\r\n // 4.1 If a string contains any RandALCat character, the string MUST NOT\r\n // contain any LCat character.\r\n if (hasBidiRAL && hasBidiL) {\r\n throw new Error(\r\n 'String must not contain RandALCat and LCat at the same time,' +\r\n ' see https://tools.ietf.org/html/rfc3454#section-6'\r\n );\r\n }\r\n\r\n /**\r\n * 4.2 If a string contains any RandALCat character, a RandALCat\r\n * character MUST be the first character of the string, and a\r\n * RandALCat character MUST be the last character of the string.\r\n */\r\n\r\n const isFirstBidiRAL = isBidirectionalRAL(\r\n getCodePoint(first(normalized_input))\r\n );\r\n const isLastBidiRAL = isBidirectionalRAL(\r\n getCodePoint(last(normalized_input))\r\n );\r\n\r\n if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {\r\n throw new Error(\r\n 'Bidirectional RandALCat character must be the first and the last' +\r\n ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6'\r\n );\r\n }\r\n\r\n return normalized_input;\r\n}\r\n\r\nexport default saslprep;\r\n","/*\r\n PDFSecurity - represents PDF security settings\r\n By Yang Liu <hi@zesik.com>\r\n */\r\n\r\nimport CryptoJS from 'crypto-js';\r\nimport saslprep from './saslprep/index';\r\n\r\nclass PDFSecurity {\r\n static generateFileID(info = {}) {\r\n let infoStr = `${info.CreationDate.getTime()}\\n`;\r\n\r\n for (let key in info) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!info.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n infoStr += `${key}: ${info[key].valueOf()}\\n`;\r\n }\r\n\r\n return wordArrayToBuffer(CryptoJS.MD5(infoStr));\r\n }\r\n\r\n static generateRandomWordArray(bytes) {\r\n return CryptoJS.lib.WordArray.random(bytes);\r\n }\r\n\r\n static create(document, options = {}) {\r\n if (!options.ownerPassword && !options.userPassword) {\r\n return null;\r\n }\r\n return new PDFSecurity(document, options);\r\n }\r\n\r\n constructor(document, options = {}) {\r\n if (!options.ownerPassword && !options.userPassword) {\r\n throw new Error('None of owner password and user password is defined.');\r\n }\r\n\r\n this.document = document;\r\n this._setupEncryption(options);\r\n }\r\n\r\n _setupEncryption(options) {\r\n switch (options.pdfVersion) {\r\n case '1.4':\r\n case '1.5':\r\n this.version = 2;\r\n break;\r\n case '1.6':\r\n case '1.7':\r\n this.version = 4;\r\n break;\r\n case '1.7ext3':\r\n this.version = 5;\r\n break;\r\n default:\r\n this.version = 1;\r\n break;\r\n }\r\n\r\n const encDict = {\r\n Filter: 'Standard'\r\n };\r\n\r\n switch (this.version) {\r\n case 1:\r\n case 2:\r\n case 4:\r\n this._setupEncryptionV1V2V4(this.version, encDict, options);\r\n break;\r\n case 5:\r\n this._setupEncryptionV5(encDict, options);\r\n break;\r\n }\r\n\r\n this.dictionary = this.document.ref(encDict);\r\n }\r\n\r\n _setupEncryptionV1V2V4(v, encDict, options) {\r\n let r, permissions;\r\n switch (v) {\r\n case 1:\r\n r = 2;\r\n this.keyBits = 40;\r\n permissions = getPermissionsR2(options.permissions);\r\n break;\r\n case 2:\r\n r = 3;\r\n this.keyBits = 128;\r\n permissions = getPermissionsR3(options.permissions);\r\n break;\r\n case 4:\r\n r = 4;\r\n this.keyBits = 128;\r\n permissions = getPermissionsR3(options.permissions);\r\n break;\r\n }\r\n\r\n const paddedUserPassword = processPasswordR2R3R4(options.userPassword);\r\n const paddedOwnerPassword = options.ownerPassword\r\n ? processPasswordR2R3R4(options.ownerPassword)\r\n : paddedUserPassword;\r\n\r\n const ownerPasswordEntry = getOwnerPasswordR2R3R4(\r\n r,\r\n this.keyBits,\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n );\r\n this.encryptionKey = getEncryptionKeyR2R3R4(\r\n r,\r\n this.keyBits,\r\n this.document._id,\r\n paddedUserPassword,\r\n ownerPasswordEntry,\r\n permissions\r\n );\r\n let userPasswordEntry;\r\n if (r === 2) {\r\n userPasswordEntry = getUserPasswordR2(this.encryptionKey);\r\n } else {\r\n userPasswordEntry = getUserPasswordR3R4(\r\n this.document._id,\r\n this.encryptionKey\r\n );\r\n }\r\n\r\n encDict.V = v;\r\n if (v >= 2) {\r\n encDict.Length = this.keyBits;\r\n }\r\n if (v === 4) {\r\n encDict.CF = {\r\n StdCF: {\r\n AuthEvent: 'DocOpen',\r\n CFM: 'AESV2',\r\n Length: this.keyBits / 8\r\n }\r\n };\r\n encDict.StmF = 'StdCF';\r\n encDict.StrF = 'StdCF';\r\n }\r\n encDict.R = r;\r\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n encDict.P = permissions;\r\n }\r\n\r\n _setupEncryptionV5(encDict, options) {\r\n this.keyBits = 256;\r\n const permissions = getPermissionsR3(options.permissions);\r\n\r\n const processedUserPassword = processPasswordR5(options.userPassword);\r\n const processedOwnerPassword = options.ownerPassword\r\n ? processPasswordR5(options.ownerPassword)\r\n : processedUserPassword;\r\n\r\n this.encryptionKey = getEncryptionKeyR5(\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const userPasswordEntry = getUserPasswordR5(\r\n processedUserPassword,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const userKeySalt = CryptoJS.lib.WordArray.create(\r\n userPasswordEntry.words.slice(10, 12),\r\n 8\r\n );\r\n const userEncryptionKeyEntry = getUserEncryptionKeyR5(\r\n processedUserPassword,\r\n userKeySalt,\r\n this.encryptionKey\r\n );\r\n const ownerPasswordEntry = getOwnerPasswordR5(\r\n processedOwnerPassword,\r\n userPasswordEntry,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const ownerKeySalt = CryptoJS.lib.WordArray.create(\r\n ownerPasswordEntry.words.slice(10, 12),\r\n 8\r\n );\r\n const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(\r\n processedOwnerPassword,\r\n ownerKeySalt,\r\n userPasswordEntry,\r\n this.encryptionKey\r\n );\r\n const permsEntry = getEncryptedPermissionsR5(\r\n permissions,\r\n this.encryptionKey,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n\r\n encDict.V = 5;\r\n encDict.Length = this.keyBits;\r\n encDict.CF = {\r\n StdCF: {\r\n AuthEvent: 'DocOpen',\r\n CFM: 'AESV3',\r\n Length: this.keyBits / 8\r\n }\r\n };\r\n encDict.StmF = 'StdCF';\r\n encDict.StrF = 'StdCF';\r\n encDict.R = 5;\r\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);\r\n encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);\r\n encDict.P = permissions;\r\n encDict.Perms = wordArrayToBuffer(permsEntry);\r\n }\r\n\r\n getEncryptFn(obj, gen) {\r\n let digest;\r\n if (this.version < 5) {\r\n digest = this.encryptionKey\r\n .clone()\r\n .concat(\r\n CryptoJS.lib.WordArray.create(\r\n [\r\n ((obj & 0xff) << 24) |\r\n ((obj & 0xff00) << 8) |\r\n ((obj >> 8) & 0xff00) |\r\n (gen & 0xff),\r\n (gen & 0xff00) << 16\r\n ],\r\n 5\r\n )\r\n );\r\n }\r\n\r\n if (this.version === 1 || this.version === 2) {\r\n let key = CryptoJS.MD5(digest);\r\n key.sigBytes = Math.min(16, this.keyBits / 8 + 5);\r\n return buffer =>\r\n wordArrayToBuffer(\r\n CryptoJS.RC4.encrypt(CryptoJS.lib.WordArray.create(buffer), key)\r\n .ciphertext\r\n );\r\n }\r\n\r\n let key;\r\n if (this.version === 4) {\r\n key = CryptoJS.MD5(\r\n digest.concat(CryptoJS.lib.WordArray.create([0x73416c54], 4))\r\n );\r\n } else {\r\n key = this.encryptionKey;\r\n }\r\n\r\n const iv = PDFSecurity.generateRandomWordArray(16);\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7,\r\n iv\r\n };\r\n\r\n return buffer =>\r\n wordArrayToBuffer(\r\n iv\r\n .clone()\r\n .concat(\r\n CryptoJS.AES.encrypt(\r\n CryptoJS.lib.WordArray.create(buffer),\r\n key,\r\n options\r\n ).ciphertext\r\n )\r\n );\r\n }\r\n\r\n end() {\r\n this.dictionary.end();\r\n }\r\n}\r\n\r\nfunction getPermissionsR2(permissionObject = {}) {\r\n let permissions = 0xffffffc0 >> 0;\r\n if (permissionObject.printing) {\r\n permissions |= 0b000000000100;\r\n }\r\n if (permissionObject.modifying) {\r\n permissions |= 0b000000001000;\r\n }\r\n if (permissionObject.copying) {\r\n permissions |= 0b000000010000;\r\n }\r\n if (permissionObject.annotating) {\r\n permissions |= 0b000000100000;\r\n }\r\n return permissions;\r\n}\r\n\r\nfunction getPermissionsR3(permissionObject = {}) {\r\n let permissions = 0xfffff0c0 >> 0;\r\n if (permissionObject.printing === 'lowResolution') {\r\n permissions |= 0b000000000100;\r\n }\r\n if (permissionObject.printing === 'highResolution') {\r\n permissions |= 0b100000000100;\r\n }\r\n if (permissionObject.modifying) {\r\n permissions |= 0b000000001000;\r\n }\r\n if (permissionObject.copying) {\r\n permissions |= 0b000000010000;\r\n }\r\n if (permissionObject.annotating) {\r\n permissions |= 0b000000100000;\r\n }\r\n if (permissionObject.fillingForms) {\r\n permissions |= 0b000100000000;\r\n }\r\n if (permissionObject.contentAccessibility) {\r\n permissions |= 0b001000000000;\r\n }\r\n if (permissionObject.documentAssembly) {\r\n permissions |= 0b010000000000;\r\n }\r\n return permissions;\r\n}\r\n\r\nfunction getUserPasswordR2(encryptionKey) {\r\n return CryptoJS.RC4.encrypt(processPasswordR2R3R4(), encryptionKey)\r\n .ciphertext;\r\n}\r\n\r\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\r\n const key = encryptionKey.clone();\r\n let cipher = CryptoJS.MD5(\r\n processPasswordR2R3R4().concat(CryptoJS.lib.WordArray.create(documentId))\r\n );\r\n for (let i = 0; i < 20; i++) {\r\n const xorRound = Math.ceil(key.sigBytes / 4);\r\n for (let j = 0; j < xorRound; j++) {\r\n key.words[j] =\r\n encryptionKey.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n }\r\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n }\r\n return cipher.concat(CryptoJS.lib.WordArray.create(null, 16));\r\n}\r\n\r\nfunction getOwnerPasswordR2R3R4(\r\n r,\r\n keyBits,\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n) {\r\n let digest = paddedOwnerPassword;\r\n let round = r >= 3 ? 51 : 1;\r\n for (let i = 0; i < round; i++) {\r\n digest = CryptoJS.MD5(digest);\r\n }\r\n\r\n const key = digest.clone();\r\n key.sigBytes = keyBits / 8;\r\n let cipher = paddedUserPassword;\r\n round = r >= 3 ? 20 : 1;\r\n for (let i = 0; i < round; i++) {\r\n const xorRound = Math.ceil(key.sigBytes / 4);\r\n for (let j = 0; j < xorRound; j++) {\r\n key.words[j] = digest.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n }\r\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n }\r\n return cipher;\r\n}\r\n\r\nfunction getEncryptionKeyR2R3R4(\r\n r,\r\n keyBits,\r\n documentId,\r\n paddedUserPassword,\r\n ownerPasswordEntry,\r\n permissions\r\n) {\r\n let key = paddedUserPassword\r\n .clone()\r\n .concat(ownerPasswordEntry)\r\n .concat(CryptoJS.lib.WordArray.create([lsbFirstWord(permissions)], 4))\r\n .concat(CryptoJS.lib.WordArray.create(documentId));\r\n const round = r >= 3 ? 51 : 1;\r\n for (let i = 0; i < round; i++) {\r\n key = CryptoJS.MD5(key);\r\n key.sigBytes = keyBits / 8;\r\n }\r\n return key;\r\n}\r\n\r\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\r\n const validationSalt = generateRandomWordArray(8);\r\n const keySalt = generateRandomWordArray(8);\r\n return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt))\r\n .concat(validationSalt)\r\n .concat(keySalt);\r\n}\r\n\r\nfunction getUserEncryptionKeyR5(\r\n processedUserPassword,\r\n userKeySalt,\r\n encryptionKey\r\n) {\r\n const key = CryptoJS.SHA256(\r\n processedUserPassword.clone().concat(userKeySalt)\r\n );\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.NoPadding,\r\n iv: CryptoJS.lib.WordArray.create(null, 16)\r\n };\r\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getOwnerPasswordR5(\r\n processedOwnerPassword,\r\n userPasswordEntry,\r\n generateRandomWordArray\r\n) {\r\n const validationSalt = generateRandomWordArray(8);\r\n const keySalt = generateRandomWordArray(8);\r\n return CryptoJS.SHA256(\r\n processedOwnerPassword\r\n .clone()\r\n .concat(validationSalt)\r\n .concat(userPasswordEntry)\r\n )\r\n .concat(validationSalt)\r\n .concat(keySalt);\r\n}\r\n\r\nfunction getOwnerEncryptionKeyR5(\r\n processedOwnerPassword,\r\n ownerKeySalt,\r\n userPasswordEntry,\r\n encryptionKey\r\n) {\r\n const key = CryptoJS.SHA256(\r\n processedOwnerPassword\r\n .clone()\r\n .concat(ownerKeySalt)\r\n .concat(userPasswordEntry)\r\n );\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.NoPadding,\r\n iv: CryptoJS.lib.WordArray.create(null, 16)\r\n };\r\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getEncryptionKeyR5(generateRandomWordArray) {\r\n return generateRandomWordArray(32);\r\n}\r\n\r\nfunction getEncryptedPermissionsR5(\r\n permissions,\r\n encryptionKey,\r\n generateRandomWordArray\r\n) {\r\n const cipher = CryptoJS.lib.WordArray.create(\r\n [lsbFirstWord(permissions), 0xffffffff, 0x54616462],\r\n 12\r\n ).concat(generateRandomWordArray(4));\r\n const options = {\r\n mode: CryptoJS.mode.ECB,\r\n padding: CryptoJS.pad.NoPadding\r\n };\r\n return CryptoJS.AES.encrypt(cipher, encryptionKey, options).ciphertext;\r\n}\r\n\r\nfunction processPasswordR2R3R4(password = '') {\r\n const out = Buffer.alloc(32);\r\n const length = password.length;\r\n let index = 0;\r\n while (index < length && index < 32) {\r\n const code = password.charCodeAt(index);\r\n if (code > 0xff) {\r\n throw new Error('Password contains one or more invalid characters.');\r\n }\r\n out[index] = code;\r\n index++;\r\n }\r\n while (index < 32) {\r\n out[index] = PASSWORD_PADDING[index - length];\r\n index++;\r\n }\r\n return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction processPasswordR5(password = '') {\r\n password = unescape(encodeURIComponent(saslprep(password)));\r\n const length = Math.min(127, password.length);\r\n const out = Buffer.alloc(length);\r\n\r\n for (let i = 0; i < length; i++) {\r\n out[i] = password.charCodeAt(i);\r\n }\r\n\r\n return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction lsbFirstWord(data) {\r\n return (\r\n ((data & 0xff) << 24) |\r\n ((data & 0xff00) << 8) |\r\n ((data >> 8) & 0xff00) |\r\n ((data >> 24) & 0xff)\r\n );\r\n}\r\n\r\nfunction wordArrayToBuffer(wordArray) {\r\n const byteArray = [];\r\n for (let i = 0; i < wordArray.sigBytes; i++) {\r\n byteArray.push(\r\n (wordArray.words[Math.floor(i / 4)] >> (8 * (3 - (i % 4)))) & 0xff\r\n );\r\n }\r\n return Buffer.from(byteArray);\r\n}\r\n\r\nconst PASSWORD_PADDING = [\r\n 0x28,\r\n 0xbf,\r\n 0x4e,\r\n 0x5e,\r\n 0x4e,\r\n 0x75,\r\n 0x8a,\r\n 0x41,\r\n 0x64,\r\n 0x00,\r\n 0x4e,\r\n 0x56,\r\n 0xff,\r\n 0xfa,\r\n 0x01,\r\n 0x08,\r\n 0x2e,\r\n 0x2e,\r\n 0x00,\r\n 0xb6,\r\n 0xd0,\r\n 0x68,\r\n 0x3e,\r\n 0x80,\r\n 0x2f,\r\n 0x0c,\r\n 0xa9,\r\n 0xfe,\r\n 0x64,\r\n 0x53,\r\n 0x69,\r\n 0x7a\r\n];\r\n\r\nexport default PDFSecurity;\r\n","import PDFObject from './object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nclass PDFGradient {\r\n constructor(doc) {\r\n this.doc = doc;\r\n this.stops = [];\r\n this.embedded = false;\r\n this.transform = [1, 0, 0, 1, 0, 0];\r\n }\r\n\r\n stop(pos, color, opacity) {\r\n if (opacity == null) {\r\n opacity = 1;\r\n }\r\n color = this.doc._normalizeColor(color);\r\n\r\n if (this.stops.length === 0) {\r\n if (color.length === 3) {\r\n this._colorSpace = 'DeviceRGB';\r\n } else if (color.length === 4) {\r\n this._colorSpace = 'DeviceCMYK';\r\n } else if (color.length === 1) {\r\n this._colorSpace = 'DeviceGray';\r\n } else {\r\n throw new Error('Unknown color space');\r\n }\r\n } else if (\r\n (this._colorSpace === 'DeviceRGB' && color.length !== 3) ||\r\n (this._colorSpace === 'DeviceCMYK' && color.length !== 4) ||\r\n (this._colorSpace === 'DeviceGray' && color.length !== 1)\r\n ) {\r\n throw new Error('All gradient stops must use the same color space');\r\n }\r\n\r\n opacity = Math.max(0, Math.min(1, opacity));\r\n this.stops.push([pos, color, opacity]);\r\n return this;\r\n }\r\n\r\n setTransform(m11, m12, m21, m22, dx, dy) {\r\n this.transform = [m11, m12, m21, m22, dx, dy];\r\n return this;\r\n }\r\n\r\n embed(m) {\r\n let fn;\r\n const stopsLength = this.stops.length;\r\n if (stopsLength === 0) {\r\n return;\r\n }\r\n this.embedded = true;\r\n this.matrix = m;\r\n\r\n // if the last stop comes before 100%, add a copy at 100%\r\n const last = this.stops[stopsLength - 1];\r\n if (last[0] < 1) {\r\n this.stops.push([1, last[1], last[2]]);\r\n }\r\n\r\n const bounds = [];\r\n const encode = [];\r\n const stops = [];\r\n\r\n for (let i = 0; i < stopsLength - 1; i++) {\r\n encode.push(0, 1);\r\n if (i + 2 !== stopsLength) {\r\n bounds.push(this.stops[i + 1][0]);\r\n }\r\n\r\n fn = this.doc.ref({\r\n FunctionType: 2,\r\n Domain: [0, 1],\r\n C0: this.stops[i + 0][1],\r\n C1: this.stops[i + 1][1],\r\n N: 1\r\n });\r\n\r\n stops.push(fn);\r\n fn.end();\r\n }\r\n\r\n // if there are only two stops, we don't need a stitching function\r\n if (stopsLength === 1) {\r\n fn = stops[0];\r\n } else {\r\n fn = this.doc.ref({\r\n FunctionType: 3, // stitching function\r\n Domain: [0, 1],\r\n Functions: stops,\r\n Bounds: bounds,\r\n Encode: encode\r\n });\r\n\r\n fn.end();\r\n }\r\n\r\n this.id = `Sh${++this.doc._gradCount}`;\r\n\r\n const shader = this.shader(fn);\r\n shader.end();\r\n\r\n const pattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 2,\r\n Shading: shader,\r\n Matrix: this.matrix.map(number)\r\n });\r\n\r\n pattern.end();\r\n\r\n if (this.stops.some(stop => stop[2] < 1)) {\r\n let grad = this.opacityGradient();\r\n grad._colorSpace = 'DeviceGray';\r\n\r\n for (let stop of this.stops) {\r\n grad.stop(stop[0], [stop[2]]);\r\n }\r\n\r\n grad = grad.embed(this.matrix);\r\n\r\n const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\r\n\r\n const form = this.doc.ref({\r\n Type: 'XObject',\r\n Subtype: 'Form',\r\n FormType: 1,\r\n BBox: pageBBox,\r\n Group: {\r\n Type: 'Group',\r\n S: 'Transparency',\r\n CS: 'DeviceGray'\r\n },\r\n Resources: {\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n Pattern: {\r\n Sh1: grad\r\n }\r\n }\r\n });\r\n\r\n form.write('/Pattern cs /Sh1 scn');\r\n form.end(`${pageBBox.join(' ')} re f`);\r\n\r\n const gstate = this.doc.ref({\r\n Type: 'ExtGState',\r\n SMask: {\r\n Type: 'Mask',\r\n S: 'Luminosity',\r\n G: form\r\n }\r\n });\r\n\r\n gstate.end();\r\n\r\n const opacityPattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 1,\r\n PaintType: 1,\r\n TilingType: 2,\r\n BBox: pageBBox,\r\n XStep: pageBBox[2],\r\n YStep: pageBBox[3],\r\n Resources: {\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n Pattern: {\r\n Sh1: pattern\r\n },\r\n ExtGState: {\r\n Gs1: gstate\r\n }\r\n }\r\n });\r\n\r\n opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\r\n opacityPattern.end(`${pageBBox.join(' ')} re f`);\r\n\r\n this.doc.page.patterns[this.id] = opacityPattern;\r\n } else {\r\n this.doc.page.patterns[this.id] = pattern;\r\n }\r\n\r\n return pattern;\r\n }\r\n\r\n apply(stroke) {\r\n // apply gradient transform to existing document ctm\r\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n const [m11, m12, m21, m22, dx, dy] = this.transform;\r\n const m = [\r\n m0 * m11 + m2 * m12,\r\n m1 * m11 + m3 * m12,\r\n m0 * m21 + m2 * m22,\r\n m1 * m21 + m3 * m22,\r\n m0 * dx + m2 * dy + m4,\r\n m1 * dx + m3 * dy + m5\r\n ];\r\n\r\n if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\r\n this.embed(m);\r\n }\r\n this.doc._setColorSpace('Pattern', stroke);\r\n const op = stroke ? 'SCN' : 'scn';\r\n return this.doc.addContent(`/${this.id} ${op}`);\r\n }\r\n}\r\n\r\nclass PDFLinearGradient extends PDFGradient {\r\n constructor(doc, x1, y1, x2, y2) {\r\n super(doc);\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n }\r\n\r\n shader(fn) {\r\n return this.doc.ref({\r\n ShadingType: 2,\r\n ColorSpace: this._colorSpace,\r\n Coords: [this.x1, this.y1, this.x2, this.y2],\r\n Function: fn,\r\n Extend: [true, true]\r\n });\r\n }\r\n\r\n opacityGradient() {\r\n return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\r\n }\r\n}\r\n\r\nclass PDFRadialGradient extends PDFGradient {\r\n constructor(doc, x1, y1, r1, x2, y2, r2) {\r\n super(doc);\r\n this.doc = doc;\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.r1 = r1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n this.r2 = r2;\r\n }\r\n\r\n shader(fn) {\r\n return this.doc.ref({\r\n ShadingType: 3,\r\n ColorSpace: this._colorSpace,\r\n Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\r\n Function: fn,\r\n Extend: [true, true]\r\n });\r\n }\r\n\r\n opacityGradient() {\r\n return new PDFRadialGradient(\r\n this.doc,\r\n this.x1,\r\n this.y1,\r\n this.r1,\r\n this.x2,\r\n this.y2,\r\n this.r2\r\n );\r\n }\r\n}\r\n\r\nexport default { PDFGradient, PDFLinearGradient, PDFRadialGradient };\r\n","/*\r\nPDF tiling pattern support. Uncolored only.\r\n */\r\n\r\nconst underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];\r\n\r\nclass PDFTilingPattern {\r\n constructor(doc, bBox, xStep, yStep, stream) {\r\n this.doc = doc;\r\n this.bBox = bBox;\r\n this.xStep = xStep;\r\n this.yStep = yStep;\r\n this.stream = stream;\r\n }\r\n\r\n createPattern() {\r\n // no resources needed for our current usage\r\n // required entry\r\n const resources = this.doc.ref();\r\n resources.end();\r\n // apply default transform matrix (flipped in the default doc._ctm)\r\n // see document.js & gradient.js\r\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n const [m11, m12, m21, m22, dx, dy] = [1, 0, 0, 1, 0, 0];\r\n const m = [\r\n m0 * m11 + m2 * m12,\r\n m1 * m11 + m3 * m12,\r\n m0 * m21 + m2 * m22,\r\n m1 * m21 + m3 * m22,\r\n m0 * dx + m2 * dy + m4,\r\n m1 * dx + m3 * dy + m5\r\n ];\r\n const pattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 1, // tiling\r\n PaintType: 2, // 1-colored, 2-uncolored\r\n TilingType: 2, // 2-no distortion\r\n BBox: this.bBox,\r\n XStep: this.xStep,\r\n YStep: this.yStep,\r\n Matrix: m.map(v => +v.toFixed(5)),\r\n Resources: resources\r\n });\r\n pattern.end(this.stream);\r\n return pattern;\r\n }\r\n\r\n embedPatternColorSpaces() {\r\n // map each pattern to an underlying color space\r\n // and embed on each page\r\n underlyingColorSpaces.forEach(csName => {\r\n const csId = this.getPatternColorSpaceId(csName);\r\n\r\n if (this.doc.page.colorSpaces[csId]) return;\r\n const cs = this.doc.ref(['Pattern', csName]);\r\n cs.end();\r\n this.doc.page.colorSpaces[csId] = cs;\r\n });\r\n }\r\n\r\n getPatternColorSpaceId(underlyingColorspace) {\r\n return `CsP${underlyingColorspace}`;\r\n }\r\n\r\n embed() {\r\n if (!this.id) {\r\n this.doc._patternCount = this.doc._patternCount + 1;\r\n this.id = 'P' + this.doc._patternCount;\r\n this.pattern = this.createPattern();\r\n }\r\n\r\n // patterns are embedded in each page\r\n if (!this.doc.page.patterns[this.id]) {\r\n this.doc.page.patterns[this.id] = this.pattern;\r\n }\r\n }\r\n\r\n apply(stroke, patternColor) {\r\n // do any embedding/creating that might be needed\r\n this.embedPatternColorSpaces();\r\n this.embed();\r\n\r\n const normalizedColor = this.doc._normalizeColor(patternColor);\r\n if (!normalizedColor)\r\n throw Error(`invalid pattern color. (value: ${patternColor})`);\r\n\r\n // select one of the pattern color spaces\r\n const csId = this.getPatternColorSpaceId(\r\n this.doc._getColorSpace(normalizedColor)\r\n );\r\n this.doc._setColorSpace(csId, stroke);\r\n\r\n // stroke/fill using the pattern and color (in the above underlying color space)\r\n const op = stroke ? 'SCN' : 'scn';\r\n return this.doc.addContent(\r\n `${normalizedColor.join(' ')} /${this.id} ${op}`\r\n );\r\n }\r\n}\r\n\r\nexport default { PDFTilingPattern };\r\n","import Gradient from '../gradient';\r\nimport pattern from '../pattern';\r\n\r\nconst { PDFGradient, PDFLinearGradient, PDFRadialGradient } = Gradient;\r\nconst { PDFTilingPattern } = pattern;\r\n\r\nexport default {\r\n initColor() {\r\n // The opacity dictionaries\r\n this._opacityRegistry = {};\r\n this._opacityCount = 0;\r\n this._patternCount = 0;\r\n return (this._gradCount = 0);\r\n },\r\n\r\n _normalizeColor(color) {\r\n if (typeof color === 'string') {\r\n if (color.charAt(0) === '#') {\r\n if (color.length === 4) {\r\n color = color.replace(\r\n /#([0-9A-F])([0-9A-F])([0-9A-F])/i,\r\n '#$1$1$2$2$3$3'\r\n );\r\n }\r\n const hex = parseInt(color.slice(1), 16);\r\n color = [hex >> 16, (hex >> 8) & 0xff, hex & 0xff];\r\n } else if (namedColors[color]) {\r\n color = namedColors[color];\r\n }\r\n }\r\n\r\n if (Array.isArray(color)) {\r\n // RGB\r\n if (color.length === 3) {\r\n color = color.map(part => part / 255);\r\n // CMYK\r\n } else if (color.length === 4) {\r\n color = color.map(part => part / 100);\r\n }\r\n return color;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n _setColor(color, stroke) {\r\n if (color instanceof PDFGradient) {\r\n color.apply(stroke);\r\n return true;\r\n // see if tiling pattern, decode & apply it it\r\n } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern) {\r\n color[0].apply(stroke, color[1]);\r\n return true;\r\n }\r\n // any other case should be a normal color and not a pattern\r\n return this._setColorCore(color, stroke);\r\n },\r\n\r\n _setColorCore(color, stroke) {\r\n color = this._normalizeColor(color);\r\n if (!color) {\r\n return false;\r\n }\r\n\r\n const op = stroke ? 'SCN' : 'scn';\r\n const space = this._getColorSpace(color);\r\n this._setColorSpace(space, stroke);\r\n\r\n color = color.join(' ');\r\n this.addContent(`${color} ${op}`);\r\n\r\n return true;\r\n },\r\n\r\n _setColorSpace(space, stroke) {\r\n const op = stroke ? 'CS' : 'cs';\r\n return this.addContent(`/${space} ${op}`);\r\n },\r\n\r\n _getColorSpace(color) {\r\n return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\r\n },\r\n\r\n fillColor(color, opacity) {\r\n const set = this._setColor(color, false);\r\n if (set) {\r\n this.fillOpacity(opacity);\r\n }\r\n\r\n // save this for text wrapper, which needs to reset\r\n // the fill color on new pages\r\n this._fillColor = [color, opacity];\r\n return this;\r\n },\r\n\r\n strokeColor(color, opacity) {\r\n const set = this._setColor(color, true);\r\n if (set) {\r\n this.strokeOpacity(opacity);\r\n }\r\n return this;\r\n },\r\n\r\n opacity(opacity) {\r\n this._doOpacity(opacity, opacity);\r\n return this;\r\n },\r\n\r\n fillOpacity(opacity) {\r\n this._doOpacity(opacity, null);\r\n return this;\r\n },\r\n\r\n strokeOpacity(opacity) {\r\n this._doOpacity(null, opacity);\r\n return this;\r\n },\r\n\r\n _doOpacity(fillOpacity, strokeOpacity) {\r\n let dictionary, name;\r\n if (fillOpacity == null && strokeOpacity == null) {\r\n return;\r\n }\r\n\r\n if (fillOpacity != null) {\r\n fillOpacity = Math.max(0, Math.min(1, fillOpacity));\r\n }\r\n if (strokeOpacity != null) {\r\n strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\r\n }\r\n const key = `${fillOpacity}_${strokeOpacity}`;\r\n\r\n if (this._opacityRegistry[key]) {\r\n [dictionary, name] = this._opacityRegistry[key];\r\n } else {\r\n dictionary = { Type: 'ExtGState' };\r\n\r\n if (fillOpacity != null) {\r\n dictionary.ca = fillOpacity;\r\n }\r\n if (strokeOpacity != null) {\r\n dictionary.CA = strokeOpacity;\r\n }\r\n\r\n dictionary = this.ref(dictionary);\r\n dictionary.end();\r\n const id = ++this._opacityCount;\r\n name = `Gs${id}`;\r\n this._opacityRegistry[key] = [dictionary, name];\r\n }\r\n\r\n this.page.ext_gstates[name] = dictionary;\r\n return this.addContent(`/${name} gs`);\r\n },\r\n\r\n linearGradient(x1, y1, x2, y2) {\r\n return new PDFLinearGradient(this, x1, y1, x2, y2);\r\n },\r\n\r\n radialGradient(x1, y1, r1, x2, y2, r2) {\r\n return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);\r\n },\r\n\r\n pattern(bbox, xStep, yStep, stream) {\r\n return new PDFTilingPattern(this, bbox, xStep, yStep, stream);\r\n }\r\n};\r\n\r\nvar namedColors = {\r\n aliceblue: [240, 248, 255],\r\n antiquewhite: [250, 235, 215],\r\n aqua: [0, 255, 255],\r\n aquamarine: [127, 255, 212],\r\n azure: [240, 255, 255],\r\n beige: [245, 245, 220],\r\n bisque: [255, 228, 196],\r\n black: [0, 0, 0],\r\n blanchedalmond: [255, 235, 205],\r\n blue: [0, 0, 255],\r\n blueviolet: [138, 43, 226],\r\n brown: [165, 42, 42],\r\n burlywood: [222, 184, 135],\r\n cadetblue: [95, 158, 160],\r\n chartreuse: [127, 255, 0],\r\n chocolate: [210, 105, 30],\r\n coral: [255, 127, 80],\r\n cornflowerblue: [100, 149, 237],\r\n cornsilk: [255, 248, 220],\r\n crimson: [220, 20, 60],\r\n cyan: [0, 255, 255],\r\n darkblue: [0, 0, 139],\r\n darkcyan: [0, 139, 139],\r\n darkgoldenrod: [184, 134, 11],\r\n darkgray: [169, 169, 169],\r\n darkgreen: [0, 100, 0],\r\n darkgrey: [169, 169, 169],\r\n darkkhaki: [189, 183, 107],\r\n darkmagenta: [139, 0, 139],\r\n darkolivegreen: [85, 107, 47],\r\n darkorange: [255, 140, 0],\r\n darkorchid: [153, 50, 204],\r\n darkred: [139, 0, 0],\r\n darksalmon: [233, 150, 122],\r\n darkseagreen: [143, 188, 143],\r\n darkslateblue: [72, 61, 139],\r\n darkslategray: [47, 79, 79],\r\n darkslategrey: [47, 79, 79],\r\n darkturquoise: [0, 206, 209],\r\n darkviolet: [148, 0, 211],\r\n deeppink: [255, 20, 147],\r\n deepskyblue: [0, 191, 255],\r\n dimgray: [105, 105, 105],\r\n dimgrey: [105, 105, 105],\r\n dodgerblue: [30, 144, 255],\r\n firebrick: [178, 34, 34],\r\n floralwhite: [255, 250, 240],\r\n forestgreen: [34, 139, 34],\r\n fuchsia: [255, 0, 255],\r\n gainsboro: [220, 220, 220],\r\n ghostwhite: [248, 248, 255],\r\n gold: [255, 215, 0],\r\n goldenrod: [218, 165, 32],\r\n gray: [128, 128, 128],\r\n grey: [128, 128, 128],\r\n green: [0, 128, 0],\r\n greenyellow: [173, 255, 47],\r\n honeydew: [240, 255, 240],\r\n hotpink: [255, 105, 180],\r\n indianred: [205, 92, 92],\r\n indigo: [75, 0, 130],\r\n ivory: [255, 255, 240],\r\n khaki: [240, 230, 140],\r\n lavender: [230, 230, 250],\r\n lavenderblush: [255, 240, 245],\r\n lawngreen: [124, 252, 0],\r\n lemonchiffon: [255, 250, 205],\r\n lightblue: [173, 216, 230],\r\n lightcoral: [240, 128, 128],\r\n lightcyan: [224, 255, 255],\r\n lightgoldenrodyellow: [250, 250, 210],\r\n lightgray: [211, 211, 211],\r\n lightgreen: [144, 238, 144],\r\n lightgrey: [211, 211, 211],\r\n lightpink: [255, 182, 193],\r\n lightsalmon: [255, 160, 122],\r\n lightseagreen: [32, 178, 170],\r\n lightskyblue: [135, 206, 250],\r\n lightslategray: [119, 136, 153],\r\n lightslategrey: [119, 136, 153],\r\n lightsteelblue: [176, 196, 222],\r\n lightyellow: [255, 255, 224],\r\n lime: [0, 255, 0],\r\n limegreen: [50, 205, 50],\r\n linen: [250, 240, 230],\r\n magenta: [255, 0, 255],\r\n maroon: [128, 0, 0],\r\n mediumaquamarine: [102, 205, 170],\r\n mediumblue: [0, 0, 205],\r\n mediumorchid: [186, 85, 211],\r\n mediumpurple: [147, 112, 219],\r\n mediumseagreen: [60, 179, 113],\r\n mediumslateblue: [123, 104, 238],\r\n mediumspringgreen: [0, 250, 154],\r\n mediumturquoise: [72, 209, 204],\r\n mediumvioletred: [199, 21, 133],\r\n midnightblue: [25, 25, 112],\r\n mintcream: [245, 255, 250],\r\n mistyrose: [255, 228, 225],\r\n moccasin: [255, 228, 181],\r\n navajowhite: [255, 222, 173],\r\n navy: [0, 0, 128],\r\n oldlace: [253, 245, 230],\r\n olive: [128, 128, 0],\r\n olivedrab: [107, 142, 35],\r\n orange: [255, 165, 0],\r\n orangered: [255, 69, 0],\r\n orchid: [218, 112, 214],\r\n palegoldenrod: [238, 232, 170],\r\n palegreen: [152, 251, 152],\r\n paleturquoise: [175, 238, 238],\r\n palevioletred: [219, 112, 147],\r\n papayawhip: [255, 239, 213],\r\n peachpuff: [255, 218, 185],\r\n peru: [205, 133, 63],\r\n pink: [255, 192, 203],\r\n plum: [221, 160, 221],\r\n powderblue: [176, 224, 230],\r\n purple: [128, 0, 128],\r\n red: [255, 0, 0],\r\n rosybrown: [188, 143, 143],\r\n royalblue: [65, 105, 225],\r\n saddlebrown: [139, 69, 19],\r\n salmon: [250, 128, 114],\r\n sandybrown: [244, 164, 96],\r\n seagreen: [46, 139, 87],\r\n seashell: [255, 245, 238],\r\n sienna: [160, 82, 45],\r\n silver: [192, 192, 192],\r\n skyblue: [135, 206, 235],\r\n slateblue: [106, 90, 205],\r\n slategray: [112, 128, 144],\r\n slategrey: [112, 128, 144],\r\n snow: [255, 250, 250],\r\n springgreen: [0, 255, 127],\r\n steelblue: [70, 130, 180],\r\n tan: [210, 180, 140],\r\n teal: [0, 128, 128],\r\n thistle: [216, 191, 216],\r\n tomato: [255, 99, 71],\r\n turquoise: [64, 224, 208],\r\n violet: [238, 130, 238],\r\n wheat: [245, 222, 179],\r\n white: [255, 255, 255],\r\n whitesmoke: [245, 245, 245],\r\n yellow: [255, 255, 0],\r\n yellowgreen: [154, 205, 50]\r\n};\r\n","let cx, cy, px, py, sx, sy;\r\n\r\ncx = cy = px = py = sx = sy = 0;\r\n\r\nconst parameters = {\r\n A: 7,\r\n a: 7,\r\n C: 6,\r\n c: 6,\r\n H: 1,\r\n h: 1,\r\n L: 2,\r\n l: 2,\r\n M: 2,\r\n m: 2,\r\n Q: 4,\r\n q: 4,\r\n S: 4,\r\n s: 4,\r\n T: 2,\r\n t: 2,\r\n V: 1,\r\n v: 1,\r\n Z: 0,\r\n z: 0\r\n};\r\n\r\nconst parse = function(path) {\r\n let cmd;\r\n const ret = [];\r\n let args = [];\r\n let curArg = '';\r\n let foundDecimal = false;\r\n let params = 0;\r\n\r\n for (let c of path) {\r\n if (parameters[c] != null) {\r\n params = parameters[c];\r\n if (cmd) {\r\n // save existing command\r\n if (curArg.length > 0) {\r\n args[args.length] = +curArg;\r\n }\r\n ret[ret.length] = { cmd, args };\r\n\r\n args = [];\r\n curArg = '';\r\n foundDecimal = false;\r\n }\r\n\r\n cmd = c;\r\n } else if (\r\n [' ', ','].includes(c) ||\r\n (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\r\n (c === '.' && foundDecimal)\r\n ) {\r\n if (curArg.length === 0) {\r\n continue;\r\n }\r\n\r\n if (args.length === params) {\r\n // handle reused commands\r\n ret[ret.length] = { cmd, args };\r\n args = [+curArg];\r\n\r\n // handle assumed commands\r\n if (cmd === 'M') {\r\n cmd = 'L';\r\n }\r\n if (cmd === 'm') {\r\n cmd = 'l';\r\n }\r\n } else {\r\n args[args.length] = +curArg;\r\n }\r\n\r\n foundDecimal = c === '.';\r\n\r\n // fix for negative numbers or repeated decimals with no delimeter between commands\r\n curArg = ['-', '.'].includes(c) ? c : '';\r\n } else {\r\n curArg += c;\r\n if (c === '.') {\r\n foundDecimal = true;\r\n }\r\n }\r\n }\r\n\r\n // add the last command\r\n if (curArg.length > 0) {\r\n if (args.length === params) {\r\n // handle reused commands\r\n ret[ret.length] = { cmd, args };\r\n args = [+curArg];\r\n\r\n // handle assumed commands\r\n if (cmd === 'M') {\r\n cmd = 'L';\r\n }\r\n if (cmd === 'm') {\r\n cmd = 'l';\r\n }\r\n } else {\r\n args[args.length] = +curArg;\r\n }\r\n }\r\n\r\n ret[ret.length] = { cmd, args };\r\n\r\n return ret;\r\n};\r\n\r\nconst apply = function(commands, doc) {\r\n // current point, control point, and subpath starting point\r\n cx = cy = px = py = sx = sy = 0;\r\n\r\n // run the commands\r\n for (let i = 0; i < commands.length; i++) {\r\n const c = commands[i];\r\n if (typeof runners[c.cmd] === 'function') {\r\n runners[c.cmd](doc, c.args);\r\n }\r\n }\r\n};\r\n\r\nconst runners = {\r\n M(doc, a) {\r\n cx = a[0];\r\n cy = a[1];\r\n px = py = null;\r\n sx = cx;\r\n sy = cy;\r\n return doc.moveTo(cx, cy);\r\n },\r\n\r\n m(doc, a) {\r\n cx += a[0];\r\n cy += a[1];\r\n px = py = null;\r\n sx = cx;\r\n sy = cy;\r\n return doc.moveTo(cx, cy);\r\n },\r\n\r\n C(doc, a) {\r\n cx = a[4];\r\n cy = a[5];\r\n px = a[2];\r\n py = a[3];\r\n return doc.bezierCurveTo(...a);\r\n },\r\n\r\n c(doc, a) {\r\n doc.bezierCurveTo(\r\n a[0] + cx,\r\n a[1] + cy,\r\n a[2] + cx,\r\n a[3] + cy,\r\n a[4] + cx,\r\n a[5] + cy\r\n );\r\n px = cx + a[2];\r\n py = cy + a[3];\r\n cx += a[4];\r\n return (cy += a[5]);\r\n },\r\n\r\n S(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n }\r\n\r\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\r\n px = a[0];\r\n py = a[1];\r\n cx = a[2];\r\n return (cy = a[3]);\r\n },\r\n\r\n s(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n }\r\n\r\n doc.bezierCurveTo(\r\n cx - (px - cx),\r\n cy - (py - cy),\r\n cx + a[0],\r\n cy + a[1],\r\n cx + a[2],\r\n cy + a[3]\r\n );\r\n px = cx + a[0];\r\n py = cy + a[1];\r\n cx += a[2];\r\n return (cy += a[3]);\r\n },\r\n\r\n Q(doc, a) {\r\n px = a[0];\r\n py = a[1];\r\n cx = a[2];\r\n cy = a[3];\r\n return doc.quadraticCurveTo(a[0], a[1], cx, cy);\r\n },\r\n\r\n q(doc, a) {\r\n doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\r\n px = cx + a[0];\r\n py = cy + a[1];\r\n cx += a[2];\r\n return (cy += a[3]);\r\n },\r\n\r\n T(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n } else {\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n }\r\n\r\n doc.quadraticCurveTo(px, py, a[0], a[1]);\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n cx = a[0];\r\n return (cy = a[1]);\r\n },\r\n\r\n t(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n } else {\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n }\r\n\r\n doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\r\n cx += a[0];\r\n return (cy += a[1]);\r\n },\r\n\r\n A(doc, a) {\r\n solveArc(doc, cx, cy, a);\r\n cx = a[5];\r\n return (cy = a[6]);\r\n },\r\n\r\n a(doc, a) {\r\n a[5] += cx;\r\n a[6] += cy;\r\n solveArc(doc, cx, cy, a);\r\n cx = a[5];\r\n return (cy = a[6]);\r\n },\r\n\r\n L(doc, a) {\r\n cx = a[0];\r\n cy = a[1];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n l(doc, a) {\r\n cx += a[0];\r\n cy += a[1];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n H(doc, a) {\r\n cx = a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n h(doc, a) {\r\n cx += a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n V(doc, a) {\r\n cy = a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n v(doc, a) {\r\n cy += a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n Z(doc) {\r\n doc.closePath();\r\n cx = sx;\r\n return (cy = sy);\r\n },\r\n\r\n z(doc) {\r\n doc.closePath();\r\n cx = sx;\r\n return (cy = sy);\r\n }\r\n};\r\n\r\nconst solveArc = function(doc, x, y, coords) {\r\n const [rx, ry, rot, large, sweep, ex, ey] = coords;\r\n const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\r\n\r\n for (let seg of segs) {\r\n const bez = segmentToBezier(...seg);\r\n doc.bezierCurveTo(...bez);\r\n }\r\n};\r\n\r\n// from Inkscape svgtopdf, thanks!\r\nconst arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\r\n const th = rotateX * (Math.PI / 180);\r\n const sin_th = Math.sin(th);\r\n const cos_th = Math.cos(th);\r\n rx = Math.abs(rx);\r\n ry = Math.abs(ry);\r\n px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\r\n py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\r\n let pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\r\n if (pl > 1) {\r\n pl = Math.sqrt(pl);\r\n rx *= pl;\r\n ry *= pl;\r\n }\r\n\r\n const a00 = cos_th / rx;\r\n const a01 = sin_th / rx;\r\n const a10 = -sin_th / ry;\r\n const a11 = cos_th / ry;\r\n const x0 = a00 * ox + a01 * oy;\r\n const y0 = a10 * ox + a11 * oy;\r\n const x1 = a00 * x + a01 * y;\r\n const y1 = a10 * x + a11 * y;\r\n\r\n const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\r\n let sfactor_sq = 1 / d - 0.25;\r\n if (sfactor_sq < 0) {\r\n sfactor_sq = 0;\r\n }\r\n let sfactor = Math.sqrt(sfactor_sq);\r\n if (sweep === large) {\r\n sfactor = -sfactor;\r\n }\r\n\r\n const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\r\n const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\r\n\r\n const th0 = Math.atan2(y0 - yc, x0 - xc);\r\n const th1 = Math.atan2(y1 - yc, x1 - xc);\r\n\r\n let th_arc = th1 - th0;\r\n if (th_arc < 0 && sweep === 1) {\r\n th_arc += 2 * Math.PI;\r\n } else if (th_arc > 0 && sweep === 0) {\r\n th_arc -= 2 * Math.PI;\r\n }\r\n\r\n const segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\r\n const result = [];\r\n\r\n for (let i = 0; i < segments; i++) {\r\n const th2 = th0 + (i * th_arc) / segments;\r\n const th3 = th0 + ((i + 1) * th_arc) / segments;\r\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\r\n const a00 = cos_th * rx;\r\n const a01 = -sin_th * ry;\r\n const a10 = sin_th * rx;\r\n const a11 = cos_th * ry;\r\n\r\n const th_half = 0.5 * (th1 - th0);\r\n const t =\r\n ((8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5)) /\r\n Math.sin(th_half);\r\n const x1 = cx + Math.cos(th0) - t * Math.sin(th0);\r\n const y1 = cy + Math.sin(th0) + t * Math.cos(th0);\r\n const x3 = cx + Math.cos(th1);\r\n const y3 = cy + Math.sin(th1);\r\n const x2 = x3 + t * Math.sin(th1);\r\n const y2 = y3 - t * Math.cos(th1);\r\n\r\n return [\r\n a00 * x1 + a01 * y1,\r\n a10 * x1 + a11 * y1,\r\n a00 * x2 + a01 * y2,\r\n a10 * x2 + a11 * y2,\r\n a00 * x3 + a01 * y3,\r\n a10 * x3 + a11 * y3\r\n ];\r\n};\r\n\r\nclass SVGPath {\r\n static apply(doc, path) {\r\n const commands = parse(path);\r\n apply(commands, doc);\r\n }\r\n}\r\n\r\nexport default SVGPath;\r\n","import SVGPath from '../path';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\n// This constant is used to approximate a symmetrical arc using a cubic\r\n// Bezier curve.\r\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\r\nexport default {\r\n initVector() {\r\n this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\r\n return (this._ctmStack = []);\r\n },\r\n\r\n save() {\r\n this._ctmStack.push(this._ctm.slice());\r\n // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\r\n return this.addContent('q');\r\n },\r\n\r\n restore() {\r\n this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\r\n return this.addContent('Q');\r\n },\r\n\r\n closePath() {\r\n return this.addContent('h');\r\n },\r\n\r\n lineWidth(w) {\r\n return this.addContent(`${number(w)} w`);\r\n },\r\n\r\n _CAP_STYLES: {\r\n BUTT: 0,\r\n ROUND: 1,\r\n SQUARE: 2\r\n },\r\n\r\n lineCap(c) {\r\n if (typeof c === 'string') {\r\n c = this._CAP_STYLES[c.toUpperCase()];\r\n }\r\n return this.addContent(`${c} J`);\r\n },\r\n\r\n _JOIN_STYLES: {\r\n MITER: 0,\r\n ROUND: 1,\r\n BEVEL: 2\r\n },\r\n\r\n lineJoin(j) {\r\n if (typeof j === 'string') {\r\n j = this._JOIN_STYLES[j.toUpperCase()];\r\n }\r\n return this.addContent(`${j} j`);\r\n },\r\n\r\n miterLimit(m) {\r\n return this.addContent(`${number(m)} M`);\r\n },\r\n\r\n dash(length, options = {}) {\r\n const originalLength = length;\r\n if (!Array.isArray(length)) {\r\n length = [length, options.space || length];\r\n }\r\n\r\n const valid = length.every(x => Number.isFinite(x) && x > 0);\r\n if (!valid) {\r\n throw new Error(\r\n `dash(${JSON.stringify(originalLength)}, ${JSON.stringify(\r\n options\r\n )}) invalid, lengths must be numeric and greater than zero`\r\n );\r\n }\r\n\r\n length = length.map(number).join(' ');\r\n return this.addContent(`[${length}] ${number(options.phase || 0)} d`);\r\n },\r\n\r\n undash() {\r\n return this.addContent('[] 0 d');\r\n },\r\n\r\n moveTo(x, y) {\r\n return this.addContent(`${number(x)} ${number(y)} m`);\r\n },\r\n\r\n lineTo(x, y) {\r\n return this.addContent(`${number(x)} ${number(y)} l`);\r\n },\r\n\r\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n return this.addContent(\r\n `${number(cp1x)} ${number(cp1y)} ${number(cp2x)} ${number(cp2y)} ${number(\r\n x\r\n )} ${number(y)} c`\r\n );\r\n },\r\n\r\n quadraticCurveTo(cpx, cpy, x, y) {\r\n return this.addContent(\r\n `${number(cpx)} ${number(cpy)} ${number(x)} ${number(y)} v`\r\n );\r\n },\r\n\r\n rect(x, y, w, h) {\r\n return this.addContent(\r\n `${number(x)} ${number(y)} ${number(w)} ${number(h)} re`\r\n );\r\n },\r\n\r\n roundedRect(x, y, w, h, r) {\r\n if (r == null) {\r\n r = 0;\r\n }\r\n r = Math.min(r, 0.5 * w, 0.5 * h);\r\n\r\n // amount to inset control points from corners (see `ellipse`)\r\n const c = r * (1.0 - KAPPA);\r\n\r\n this.moveTo(x + r, y);\r\n this.lineTo(x + w - r, y);\r\n this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\r\n this.lineTo(x + w, y + h - r);\r\n this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\r\n this.lineTo(x + r, y + h);\r\n this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\r\n this.lineTo(x, y + r);\r\n this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\r\n return this.closePath();\r\n },\r\n\r\n ellipse(x, y, r1, r2) {\r\n // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\r\n if (r2 == null) {\r\n r2 = r1;\r\n }\r\n x -= r1;\r\n y -= r2;\r\n const ox = r1 * KAPPA;\r\n const oy = r2 * KAPPA;\r\n const xe = x + r1 * 2;\r\n const ye = y + r2 * 2;\r\n const xm = x + r1;\r\n const ym = y + r2;\r\n\r\n this.moveTo(x, ym);\r\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\r\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\r\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\r\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\r\n return this.closePath();\r\n },\r\n\r\n circle(x, y, radius) {\r\n return this.ellipse(x, y, radius);\r\n },\r\n\r\n arc(x, y, radius, startAngle, endAngle, anticlockwise) {\r\n if (anticlockwise == null) {\r\n anticlockwise = false;\r\n }\r\n const TWO_PI = 2.0 * Math.PI;\r\n const HALF_PI = 0.5 * Math.PI;\r\n\r\n let deltaAng = endAngle - startAngle;\r\n\r\n if (Math.abs(deltaAng) > TWO_PI) {\r\n // draw only full circle if more than that is specified\r\n deltaAng = TWO_PI;\r\n } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\r\n // necessary to flip direction of rendering\r\n const dir = anticlockwise ? -1 : 1;\r\n deltaAng = dir * TWO_PI + deltaAng;\r\n }\r\n\r\n const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\r\n const segAng = deltaAng / numSegs;\r\n const handleLen = (segAng / HALF_PI) * KAPPA * radius;\r\n let curAng = startAngle;\r\n\r\n // component distances between anchor point and control point\r\n let deltaCx = -Math.sin(curAng) * handleLen;\r\n let deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n // anchor point\r\n let ax = x + Math.cos(curAng) * radius;\r\n let ay = y + Math.sin(curAng) * radius;\r\n\r\n // calculate and render segments\r\n this.moveTo(ax, ay);\r\n\r\n for (let segIdx = 0; segIdx < numSegs; segIdx++) {\r\n // starting control point\r\n const cp1x = ax + deltaCx;\r\n const cp1y = ay + deltaCy;\r\n\r\n // step angle\r\n curAng += segAng;\r\n\r\n // next anchor point\r\n ax = x + Math.cos(curAng) * radius;\r\n ay = y + Math.sin(curAng) * radius;\r\n\r\n // next control point delta\r\n deltaCx = -Math.sin(curAng) * handleLen;\r\n deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n // ending control point\r\n const cp2x = ax - deltaCx;\r\n const cp2y = ay - deltaCy;\r\n\r\n // render segment\r\n this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n polygon(...points) {\r\n this.moveTo(...(points.shift() || []));\r\n for (let point of points) {\r\n this.lineTo(...(point || []));\r\n }\r\n return this.closePath();\r\n },\r\n\r\n path(path) {\r\n SVGPath.apply(this, path);\r\n return this;\r\n },\r\n\r\n _windingRule(rule) {\r\n if (/even-?odd/.test(rule)) {\r\n return '*';\r\n }\r\n\r\n return '';\r\n },\r\n\r\n fill(color, rule) {\r\n if (/(even-?odd)|(non-?zero)/.test(color)) {\r\n rule = color;\r\n color = null;\r\n }\r\n\r\n if (color) {\r\n this.fillColor(color);\r\n }\r\n return this.addContent(`f${this._windingRule(rule)}`);\r\n },\r\n\r\n stroke(color) {\r\n if (color) {\r\n this.strokeColor(color);\r\n }\r\n return this.addContent('S');\r\n },\r\n\r\n fillAndStroke(fillColor, strokeColor, rule) {\r\n if (strokeColor == null) {\r\n strokeColor = fillColor;\r\n }\r\n const isFillRule = /(even-?odd)|(non-?zero)/;\r\n if (isFillRule.test(fillColor)) {\r\n rule = fillColor;\r\n fillColor = null;\r\n }\r\n\r\n if (isFillRule.test(strokeColor)) {\r\n rule = strokeColor;\r\n strokeColor = fillColor;\r\n }\r\n\r\n if (fillColor) {\r\n this.fillColor(fillColor);\r\n this.strokeColor(strokeColor);\r\n }\r\n\r\n return this.addContent(`B${this._windingRule(rule)}`);\r\n },\r\n\r\n clip(rule) {\r\n return this.addContent(`W${this._windingRule(rule)} n`);\r\n },\r\n\r\n transform(m11, m12, m21, m22, dx, dy) {\r\n // keep track of the current transformation matrix\r\n if (m11 === 1 && m12 === 0 && m21 === 0 && m22 === 1 && dx === 0 && dy === 0) {\r\n // Ignore identity transforms\r\n return this;\r\n }\r\n const m = this._ctm;\r\n const [m0, m1, m2, m3, m4, m5] = m;\r\n m[0] = m0 * m11 + m2 * m12;\r\n m[1] = m1 * m11 + m3 * m12;\r\n m[2] = m0 * m21 + m2 * m22;\r\n m[3] = m1 * m21 + m3 * m22;\r\n m[4] = m0 * dx + m2 * dy + m4;\r\n m[5] = m1 * dx + m3 * dy + m5;\r\n\r\n const values = [m11, m12, m21, m22, dx, dy].map(v => number(v)).join(' ');\r\n return this.addContent(`${values} cm`);\r\n },\r\n\r\n translate(x, y) {\r\n return this.transform(1, 0, 0, 1, x, y);\r\n },\r\n\r\n rotate(angle, options = {}) {\r\n let y;\r\n const rad = (angle * Math.PI) / 180;\r\n const cos = Math.cos(rad);\r\n const sin = Math.sin(rad);\r\n let x = (y = 0);\r\n\r\n if (options.origin != null) {\r\n [x, y] = options.origin;\r\n const x1 = x * cos - y * sin;\r\n const y1 = x * sin + y * cos;\r\n x -= x1;\r\n y -= y1;\r\n }\r\n\r\n return this.transform(cos, sin, -sin, cos, x, y);\r\n },\r\n\r\n scale(xFactor, yFactor, options = {}) {\r\n let y;\r\n if (yFactor == null) {\r\n yFactor = xFactor;\r\n }\r\n if (typeof yFactor === 'object') {\r\n options = yFactor;\r\n yFactor = xFactor;\r\n }\r\n\r\n let x = (y = 0);\r\n if (options.origin != null) {\r\n [x, y] = options.origin;\r\n x -= xFactor * x;\r\n y -= yFactor * y;\r\n }\r\n\r\n return this.transform(xFactor, 0, 0, yFactor, x, y);\r\n }\r\n};\r\n","import fs from 'fs';\r\n\r\nconst WIN_ANSI_MAP = {\r\n 402: 131,\r\n 8211: 150,\r\n 8212: 151,\r\n 8216: 145,\r\n 8217: 146,\r\n 8218: 130,\r\n 8220: 147,\r\n 8221: 148,\r\n 8222: 132,\r\n 8224: 134,\r\n 8225: 135,\r\n 8226: 149,\r\n 8230: 133,\r\n 8364: 128,\r\n 8240: 137,\r\n 8249: 139,\r\n 8250: 155,\r\n 710: 136,\r\n 8482: 153,\r\n 338: 140,\r\n 339: 156,\r\n 732: 152,\r\n 352: 138,\r\n 353: 154,\r\n 376: 159,\r\n 381: 142,\r\n 382: 158\r\n};\r\n\r\nconst characters = `\\\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n \r\nspace exclam quotedbl numbersign\r\ndollar percent ampersand quotesingle\r\nparenleft parenright asterisk plus\r\ncomma hyphen period slash\r\nzero one two three\r\nfour five six seven\r\neight nine colon semicolon\r\nless equal greater question\r\n \r\nat A B C\r\nD E F G\r\nH I J K\r\nL M N O\r\nP Q R S\r\nT U V W\r\nX Y Z bracketleft\r\nbackslash bracketright asciicircum underscore\r\n \r\ngrave a b c\r\nd e f g\r\nh i j k\r\nl m n o\r\np q r s\r\nt u v w\r\nx y z braceleft\r\nbar braceright asciitilde .notdef\r\n \r\nEuro .notdef quotesinglbase florin\r\nquotedblbase ellipsis dagger daggerdbl\r\ncircumflex perthousand Scaron guilsinglleft\r\nOE .notdef Zcaron .notdef\r\n.notdef quoteleft quoteright quotedblleft\r\nquotedblright bullet endash emdash\r\ntilde trademark scaron guilsinglright\r\noe .notdef zcaron ydieresis\r\n \r\nspace exclamdown cent sterling\r\ncurrency yen brokenbar section\r\ndieresis copyright ordfeminine guillemotleft\r\nlogicalnot hyphen registered macron\r\ndegree plusminus twosuperior threesuperior\r\nacute mu paragraph periodcentered\r\ncedilla onesuperior ordmasculine guillemotright\r\nonequarter onehalf threequarters questiondown\r\n \r\nAgrave Aacute Acircumflex Atilde\r\nAdieresis Aring AE Ccedilla\r\nEgrave Eacute Ecircumflex Edieresis\r\nIgrave Iacute Icircumflex Idieresis\r\nEth Ntilde Ograve Oacute\r\nOcircumflex Otilde Odieresis multiply\r\nOslash Ugrave Uacute Ucircumflex\r\nUdieresis Yacute Thorn germandbls\r\n \r\nagrave aacute acircumflex atilde\r\nadieresis aring ae ccedilla\r\negrave eacute ecircumflex edieresis\r\nigrave iacute icircumflex idieresis\r\neth ntilde ograve oacute\r\nocircumflex otilde odieresis divide\r\noslash ugrave uacute ucircumflex\r\nudieresis yacute thorn ydieresis\\\r\n`.split(/\\s+/);\r\n\r\nclass AFMFont {\r\n static open(filename) {\r\n return new AFMFont(fs.readFileSync(filename, 'utf8'));\r\n }\r\n\r\n constructor(contents) {\r\n this.contents = contents;\r\n this.attributes = {};\r\n this.glyphWidths = {};\r\n this.boundingBoxes = {};\r\n this.kernPairs = {};\r\n\r\n this.parse();\r\n // todo: remove charWidths since appears to not be used\r\n this.charWidths = new Array(256);\r\n for (let char = 0; char <= 255; char++) {\r\n this.charWidths[char] = this.glyphWidths[characters[char]];\r\n }\r\n\r\n this.bbox = this.attributes['FontBBox'].split(/\\s+/).map(e => +e);\r\n this.ascender = +(this.attributes['Ascender'] || 0);\r\n this.descender = +(this.attributes['Descender'] || 0);\r\n this.xHeight = +(this.attributes['XHeight'] || 0);\r\n this.capHeight = +(this.attributes['CapHeight'] || 0);\r\n this.lineGap =\r\n this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\r\n }\r\n\r\n parse() {\r\n let section = '';\r\n for (let line of this.contents.split('\\n')) {\r\n var match;\r\n var a;\r\n if ((match = line.match(/^Start(\\w+)/))) {\r\n section = match[1];\r\n continue;\r\n } else if ((match = line.match(/^End(\\w+)/))) {\r\n section = '';\r\n continue;\r\n }\r\n\r\n switch (section) {\r\n case 'FontMetrics':\r\n match = line.match(/(^\\w+)\\s+(.*)/);\r\n var key = match[1];\r\n var value = match[2];\r\n\r\n if ((a = this.attributes[key])) {\r\n if (!Array.isArray(a)) {\r\n a = this.attributes[key] = [a];\r\n }\r\n a.push(value);\r\n } else {\r\n this.attributes[key] = value;\r\n }\r\n break;\r\n\r\n case 'CharMetrics':\r\n if (!/^CH?\\s/.test(line)) {\r\n continue;\r\n }\r\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\r\n this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\r\n break;\r\n\r\n case 'KernPairs':\r\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\r\n if (match) {\r\n this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n encodeText(text) {\r\n const res = [];\r\n for (let i = 0, len = text.length; i < len; i++) {\r\n let char = text.charCodeAt(i);\r\n char = WIN_ANSI_MAP[char] || char;\r\n res.push(char.toString(16));\r\n }\r\n\r\n return res;\r\n }\r\n\r\n glyphsForString(string) {\r\n const glyphs = [];\r\n\r\n for (let i = 0, len = string.length; i < len; i++) {\r\n const charCode = string.charCodeAt(i);\r\n glyphs.push(this.characterToGlyph(charCode));\r\n }\r\n\r\n return glyphs;\r\n }\r\n\r\n characterToGlyph(character) {\r\n return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\r\n }\r\n\r\n widthOfGlyph(glyph) {\r\n return this.glyphWidths[glyph] || 0;\r\n }\r\n\r\n getKernPair(left, right) {\r\n return this.kernPairs[left + '\\0' + right] || 0;\r\n }\r\n\r\n advancesForGlyphs(glyphs) {\r\n const advances = [];\r\n\r\n for (let index = 0; index < glyphs.length; index++) {\r\n const left = glyphs[index];\r\n const right = glyphs[index + 1];\r\n advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\r\n }\r\n\r\n return advances;\r\n }\r\n}\r\n\r\nexport default AFMFont;\r\n","class PDFFont {\r\n constructor() {}\r\n\r\n encode() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n widthOfString() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n ref() {\r\n return this.dictionary != null\r\n ? this.dictionary\r\n : (this.dictionary = this.document.ref());\r\n }\r\n\r\n finalize() {\r\n if (this.embedded || this.dictionary == null) {\r\n return;\r\n }\r\n\r\n this.embed();\r\n return (this.embedded = true);\r\n }\r\n\r\n embed() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n lineHeight(size, includeGap) {\r\n if (includeGap == null) {\r\n includeGap = false;\r\n }\r\n const gap = includeGap ? this.lineGap : 0;\r\n return ((this.ascender + gap - this.descender) / 1000) * size;\r\n }\r\n}\r\n\r\nexport default PDFFont;\r\n","import AFMFont from './afm';\r\nimport PDFFont from '../font';\r\nimport fs from 'fs';\r\n\r\n// This insanity is so bundlers can inline the font files\r\nconst STANDARD_FONTS = {\r\n Courier() {\r\n return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\r\n },\r\n 'Courier-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\r\n },\r\n 'Courier-Oblique'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\r\n },\r\n 'Courier-BoldOblique'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\r\n },\r\n Helvetica() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\r\n },\r\n 'Helvetica-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\r\n },\r\n 'Helvetica-Oblique'() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\r\n },\r\n 'Helvetica-BoldOblique'() {\r\n return fs.readFileSync(\r\n __dirname + '/data/Helvetica-BoldOblique.afm',\r\n 'utf8'\r\n );\r\n },\r\n 'Times-Roman'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\r\n },\r\n 'Times-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\r\n },\r\n 'Times-Italic'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\r\n },\r\n 'Times-BoldItalic'() {\r\n return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\r\n },\r\n Symbol() {\r\n return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\r\n },\r\n ZapfDingbats() {\r\n return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\r\n }\r\n};\r\n\r\nclass StandardFont extends PDFFont {\r\n constructor(document, name, id) {\r\n super();\r\n this.document = document;\r\n this.name = name;\r\n this.id = id;\r\n this.font = new AFMFont(STANDARD_FONTS[this.name]());\r\n ({\r\n ascender: this.ascender,\r\n descender: this.descender,\r\n bbox: this.bbox,\r\n lineGap: this.lineGap,\r\n xHeight: this.xHeight,\r\n capHeight: this.capHeight\r\n } = this.font);\r\n }\r\n\r\n embed() {\r\n this.dictionary.data = {\r\n Type: 'Font',\r\n BaseFont: this.name,\r\n Subtype: 'Type1',\r\n Encoding: 'WinAnsiEncoding'\r\n };\r\n\r\n return this.dictionary.end();\r\n }\r\n\r\n encode(text) {\r\n const encoded = this.font.encodeText(text);\r\n const glyphs = this.font.glyphsForString(`${text}`);\r\n const advances = this.font.advancesForGlyphs(glyphs);\r\n const positions = [];\r\n for (let i = 0; i < glyphs.length; i++) {\r\n const glyph = glyphs[i];\r\n positions.push({\r\n xAdvance: advances[i],\r\n yAdvance: 0,\r\n xOffset: 0,\r\n yOffset: 0,\r\n advanceWidth: this.font.widthOfGlyph(glyph)\r\n });\r\n }\r\n\r\n return [encoded, positions];\r\n }\r\n\r\n widthOfString(string, size) {\r\n const glyphs = this.font.glyphsForString(`${string}`);\r\n const advances = this.font.advancesForGlyphs(glyphs);\r\n\r\n let width = 0;\r\n for (let advance of advances) {\r\n width += advance;\r\n }\r\n\r\n const scale = size / 1000;\r\n return width * scale;\r\n }\r\n\r\n static isStandardFont(name) {\r\n return name in STANDARD_FONTS;\r\n }\r\n}\r\n\r\nexport default StandardFont;\r\n","import PDFFont from '../font';\r\n\r\nconst toHex = function(num) {\r\n return `0000${num.toString(16)}`.slice(-4);\r\n};\r\n\r\nclass EmbeddedFont extends PDFFont {\r\n constructor(document, font, id) {\r\n super();\r\n this.document = document;\r\n this.font = font;\r\n this.id = id;\r\n this.subset = this.font.createSubset();\r\n this.unicode = [[0]];\r\n this.widths = [this.font.getGlyph(0).advanceWidth];\r\n\r\n this.name = this.font.postscriptName;\r\n this.scale = 1000 / this.font.unitsPerEm;\r\n this.ascender = this.font.ascent * this.scale;\r\n this.descender = this.font.descent * this.scale;\r\n this.xHeight = this.font.xHeight * this.scale;\r\n this.capHeight = this.font.capHeight * this.scale;\r\n this.lineGap = this.font.lineGap * this.scale;\r\n this.bbox = this.font.bbox;\r\n\r\n if (document.options.fontLayoutCache !== false) {\r\n this.layoutCache = Object.create(null);\r\n }\r\n }\r\n\r\n layoutRun(text, features) {\r\n const run = this.font.layout(text, features);\r\n\r\n // Normalize position values\r\n for (let i = 0; i < run.positions.length; i++) {\r\n const position = run.positions[i];\r\n for (let key in position) {\r\n position[key] *= this.scale;\r\n }\r\n\r\n position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\r\n }\r\n\r\n return run;\r\n }\r\n\r\n layoutCached(text) {\r\n if (!this.layoutCache) {\r\n return this.layoutRun(text);\r\n }\r\n let cached;\r\n if ((cached = this.layoutCache[text])) {\r\n return cached;\r\n }\r\n\r\n const run = this.layoutRun(text);\r\n this.layoutCache[text] = run;\r\n return run;\r\n }\r\n\r\n layout(text, features, onlyWidth) {\r\n // Skip the cache if any user defined features are applied\r\n if (features) {\r\n return this.layoutRun(text, features);\r\n }\r\n\r\n let glyphs = onlyWidth ? null : [];\r\n let positions = onlyWidth ? null : [];\r\n let advanceWidth = 0;\r\n\r\n // Split the string by words to increase cache efficiency.\r\n // For this purpose, spaces and tabs are a good enough delimeter.\r\n let last = 0;\r\n let index = 0;\r\n while (index <= text.length) {\r\n var needle;\r\n if (\r\n (index === text.length && last < index) ||\r\n ((needle = text.charAt(index)), [' ', '\\t'].includes(needle))\r\n ) {\r\n const run = this.layoutCached(text.slice(last, ++index));\r\n if (!onlyWidth) {\r\n glyphs = glyphs.concat(run.glyphs);\r\n positions = positions.concat(run.positions);\r\n }\r\n\r\n advanceWidth += run.advanceWidth;\r\n last = index;\r\n } else {\r\n index++;\r\n }\r\n }\r\n\r\n return { glyphs, positions, advanceWidth };\r\n }\r\n\r\n encode(text, features) {\r\n const { glyphs, positions } = this.layout(text, features);\r\n\r\n const res = [];\r\n for (let i = 0; i < glyphs.length; i++) {\r\n const glyph = glyphs[i];\r\n const gid = this.subset.includeGlyph(glyph.id);\r\n res.push(`0000${gid.toString(16)}`.slice(-4));\r\n\r\n if (this.widths[gid] == null) {\r\n this.widths[gid] = glyph.advanceWidth * this.scale;\r\n }\r\n if (this.unicode[gid] == null) {\r\n this.unicode[gid] = glyph.codePoints;\r\n }\r\n }\r\n\r\n return [res, positions];\r\n }\r\n\r\n widthOfString(string, size, features) {\r\n const width = this.layout(string, features, true).advanceWidth;\r\n const scale = size / 1000;\r\n return width * scale;\r\n }\r\n\r\n embed() {\r\n const isCFF = this.subset.cff != null;\r\n const fontFile = this.document.ref();\r\n\r\n if (isCFF) {\r\n fontFile.data.Subtype = 'CIDFontType0C';\r\n }\r\n\r\n this.subset\r\n .encodeStream()\r\n .on('data', data => fontFile.write(data))\r\n .on('end', () => fontFile.end());\r\n\r\n const familyClass =\r\n ((this.font['OS/2'] != null\r\n ? this.font['OS/2'].sFamilyClass\r\n : undefined) || 0) >> 8;\r\n let flags = 0;\r\n if (this.font.post.isFixedPitch) {\r\n flags |= 1 << 0;\r\n }\r\n if (1 <= familyClass && familyClass <= 7) {\r\n flags |= 1 << 1;\r\n }\r\n flags |= 1 << 2; // assume the font uses non-latin characters\r\n if (familyClass === 10) {\r\n flags |= 1 << 3;\r\n }\r\n if (this.font.head.macStyle.italic) {\r\n flags |= 1 << 6;\r\n }\r\n\r\n // generate a tag (6 uppercase letters. 17 is the char code offset from '0' to 'A'. 73 will map to 'Z')\r\n const tag = [1, 2, 3, 4, 5, 6]\r\n .map(i => String.fromCharCode((this.id.charCodeAt(i) || 73) + 17))\r\n .join('');\r\n const name = tag + '+' + this.font.postscriptName;\r\n\r\n const { bbox } = this.font;\r\n const descriptor = this.document.ref({\r\n Type: 'FontDescriptor',\r\n FontName: name,\r\n Flags: flags,\r\n FontBBox: [\r\n bbox.minX * this.scale,\r\n bbox.minY * this.scale,\r\n bbox.maxX * this.scale,\r\n bbox.maxY * this.scale\r\n ],\r\n ItalicAngle: this.font.italicAngle,\r\n Ascent: this.ascender,\r\n Descent: this.descender,\r\n CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\r\n XHeight: (this.font.xHeight || 0) * this.scale,\r\n StemV: 0\r\n }); // not sure how to calculate this\r\n\r\n if (isCFF) {\r\n descriptor.data.FontFile3 = fontFile;\r\n } else {\r\n descriptor.data.FontFile2 = fontFile;\r\n }\r\n\r\n if (this.document.subset) {\r\n const CIDSet = Buffer.from('FFFFFFFFC0', 'hex');\r\n const CIDSetRef = this.document.ref();\r\n CIDSetRef.write(CIDSet);\r\n CIDSetRef.end();\r\n\r\n descriptor.data.CIDSet = CIDSetRef;\r\n }\r\n\r\n descriptor.end();\r\n\r\n const descendantFontData = {\r\n Type: 'Font',\r\n Subtype: 'CIDFontType0',\r\n BaseFont: name,\r\n CIDSystemInfo: {\r\n Registry: new String('Adobe'),\r\n Ordering: new String('Identity'),\r\n Supplement: 0\r\n },\r\n FontDescriptor: descriptor,\r\n W: [0, this.widths]\r\n };\r\n\r\n if (!isCFF) {\r\n descendantFontData.Subtype = 'CIDFontType2';\r\n descendantFontData.CIDToGIDMap = 'Identity';\r\n }\r\n\r\n const descendantFont = this.document.ref(descendantFontData);\r\n\r\n descendantFont.end();\r\n\r\n this.dictionary.data = {\r\n Type: 'Font',\r\n Subtype: 'Type0',\r\n BaseFont: name,\r\n Encoding: 'Identity-H',\r\n DescendantFonts: [descendantFont],\r\n ToUnicode: this.toUnicodeCmap()\r\n };\r\n\r\n return this.dictionary.end();\r\n }\r\n\r\n // Maps the glyph ids encoded in the PDF back to unicode strings\r\n // Because of ligature substitutions and the like, there may be one or more\r\n // unicode characters represented by each glyph.\r\n toUnicodeCmap() {\r\n const cmap = this.document.ref();\r\n\r\n const entries = [];\r\n for (let codePoints of this.unicode) {\r\n const encoded = [];\r\n\r\n // encode codePoints to utf16\r\n for (let value of codePoints) {\r\n if (value > 0xffff) {\r\n value -= 0x10000;\r\n encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800));\r\n value = 0xdc00 | (value & 0x3ff);\r\n }\r\n\r\n encoded.push(toHex(value));\r\n }\r\n\r\n entries.push(`<${encoded.join(' ')}>`);\r\n }\r\n\r\n const chunkSize = 256;\r\n const chunks = Math.ceil(entries.length / chunkSize);\r\n const ranges = [];\r\n for (let i = 0; i < chunks; i++) {\r\n const start = i * chunkSize;\r\n const end = Math.min((i + 1) * chunkSize, entries.length);\r\n ranges.push(`<${toHex(start)}> <${toHex(end - 1)}> [${entries.slice(start, end).join(' ')}]`);\r\n }\r\n\r\n cmap.end(`\\\r\n/CIDInit /ProcSet findresource begin\r\n12 dict begin\r\nbegincmap\r\n/CIDSystemInfo <<\r\n /Registry (Adobe)\r\n /Ordering (UCS)\r\n /Supplement 0\r\n>> def\r\n/CMapName /Adobe-Identity-UCS def\r\n/CMapType 2 def\r\n1 begincodespacerange\r\n<0000><ffff>\r\nendcodespacerange\r\n1 beginbfrange\r\n${ranges.join('\\n')}\r\nendbfrange\r\nendcmap\r\nCMapName currentdict /CMap defineresource pop\r\nend\r\nend\\\r\n`);\r\n\r\n return cmap;\r\n }\r\n}\r\n\r\nexport default EmbeddedFont;\r\n","import fs from 'fs';\r\nimport fontkit from 'fontkit';\r\nimport StandardFont from './font/standard';\r\nimport EmbeddedFont from './font/embedded';\r\n\r\nclass PDFFontFactory {\r\n static open(document, src, family, id) {\r\n let font;\r\n if (typeof src === 'string') {\r\n if (StandardFont.isStandardFont(src)) {\r\n return new StandardFont(document, src, id);\r\n }\r\n\r\n src = fs.readFileSync(src);\r\n }\r\n if (Buffer.isBuffer(src)) {\r\n font = fontkit.create(src, family);\r\n } else if (src instanceof Uint8Array) {\r\n font = fontkit.create(Buffer.from(src), family);\r\n } else if (src instanceof ArrayBuffer) {\r\n font = fontkit.create(Buffer.from(new Uint8Array(src)), family);\r\n }\r\n\r\n if (font == null) {\r\n throw new Error('Not a supported font format or standard PDF font.');\r\n }\r\n\r\n return new EmbeddedFont(document, font, id);\r\n }\r\n}\r\n\r\nexport default PDFFontFactory;\r\n","import PDFFontFactory from '../font_factory';\r\n\r\nexport default {\r\n initFonts(defaultFont = 'Helvetica') {\r\n // Lookup table for embedded fonts\r\n this._fontFamilies = {};\r\n this._fontCount = 0;\r\n\r\n // Font state\r\n this._fontSize = 12;\r\n this._font = null;\r\n\r\n this._registeredFonts = {};\r\n\r\n // Set the default font\r\n if (defaultFont) {\r\n this.font(defaultFont);\r\n }\r\n },\r\n\r\n font(src, family, size) {\r\n let cacheKey, font;\r\n if (typeof family === 'number') {\r\n size = family;\r\n family = null;\r\n }\r\n\r\n // check registered fonts if src is a string\r\n if (typeof src === 'string' && this._registeredFonts[src]) {\r\n cacheKey = src;\r\n ({ src, family } = this._registeredFonts[src]);\r\n } else {\r\n cacheKey = family || src;\r\n if (typeof cacheKey !== 'string') {\r\n cacheKey = null;\r\n }\r\n }\r\n\r\n if (size != null) {\r\n this.fontSize(size);\r\n }\r\n\r\n // fast path: check if the font is already in the PDF\r\n if ((font = this._fontFamilies[cacheKey])) {\r\n this._font = font;\r\n return this;\r\n }\r\n\r\n // load the font\r\n const id = `F${++this._fontCount}`;\r\n this._font = PDFFontFactory.open(this, src, family, id);\r\n\r\n // check for existing font familes with the same name already in the PDF\r\n // useful if the font was passed as a buffer\r\n if ((font = this._fontFamilies[this._font.name])) {\r\n this._font = font;\r\n return this;\r\n }\r\n\r\n // save the font for reuse later\r\n if (cacheKey) {\r\n this._fontFamilies[cacheKey] = this._font;\r\n }\r\n\r\n if (this._font.name) {\r\n this._fontFamilies[this._font.name] = this._font;\r\n }\r\n\r\n return this;\r\n },\r\n\r\n fontSize(_fontSize) {\r\n this._fontSize = _fontSize;\r\n return this;\r\n },\r\n\r\n currentLineHeight(includeGap) {\r\n if (includeGap == null) {\r\n includeGap = false;\r\n }\r\n return this._font.lineHeight(this._fontSize, includeGap);\r\n },\r\n\r\n registerFont(name, src, family) {\r\n this._registeredFonts[name] = {\r\n src,\r\n family\r\n };\r\n\r\n return this;\r\n }\r\n};\r\n","import { EventEmitter } from 'events';\r\nimport LineBreaker from 'linebreak';\r\n\r\nconst SOFT_HYPHEN = '\\u00AD';\r\nconst HYPHEN = '-';\r\n\r\nclass LineWrapper extends EventEmitter {\r\n constructor(document, options) {\r\n super();\r\n this.document = document;\r\n this.indent = options.indent || 0;\r\n this.characterSpacing = options.characterSpacing || 0;\r\n this.wordSpacing = options.wordSpacing === 0;\r\n this.columns = options.columns || 1;\r\n this.columnGap = options.columnGap != null ? options.columnGap : 18; // 1/4 inch\r\n this.lineWidth =\r\n (options.width - this.columnGap * (this.columns - 1)) / this.columns;\r\n this.spaceLeft = this.lineWidth;\r\n this.startX = this.document.x;\r\n this.startY = this.document.y;\r\n this.column = 1;\r\n this.ellipsis = options.ellipsis;\r\n this.continuedX = 0;\r\n this.features = options.features;\r\n\r\n // calculate the maximum Y position the text can appear at\r\n if (options.height != null) {\r\n this.height = options.height;\r\n this.maxY = this.startY + options.height;\r\n } else {\r\n this.maxY = this.document.page.maxY();\r\n }\r\n\r\n // handle paragraph indents\r\n this.on('firstLine', options => {\r\n // if this is the first line of the text segment, and\r\n // we're continuing where we left off, indent that much\r\n // otherwise use the user specified indent option\r\n const indent = this.continuedX || this.indent;\r\n this.document.x += indent;\r\n this.lineWidth -= indent;\r\n\r\n return this.once('line', () => {\r\n this.document.x -= indent;\r\n this.lineWidth += indent;\r\n if (options.continued && !this.continuedX) {\r\n this.continuedX = this.indent;\r\n }\r\n if (!options.continued) {\r\n return (this.continuedX = 0);\r\n }\r\n });\r\n });\r\n\r\n // handle left aligning last lines of paragraphs\r\n this.on('lastLine', options => {\r\n const { align } = options;\r\n if (align === 'justify') {\r\n options.align = 'left';\r\n }\r\n this.lastLine = true;\r\n\r\n return this.once('line', () => {\r\n this.document.y += options.paragraphGap || 0;\r\n options.align = align;\r\n return (this.lastLine = false);\r\n });\r\n });\r\n }\r\n\r\n wordWidth(word) {\r\n return (\r\n this.document.widthOfString(word, this) +\r\n this.characterSpacing +\r\n this.wordSpacing\r\n );\r\n }\r\n\r\n canFit(word, w) {\r\n if (word[word.length - 1] != SOFT_HYPHEN) {\r\n return w <= this.spaceLeft;\r\n }\r\n return w + this.wordWidth(HYPHEN) <= this.spaceLeft;\r\n }\r\n\r\n eachWord(text, fn) {\r\n // setup a unicode line breaker\r\n let bk;\r\n const breaker = new LineBreaker(text);\r\n let last = null;\r\n const wordWidths = Object.create(null);\r\n\r\n while ((bk = breaker.nextBreak())) {\r\n var shouldContinue;\r\n let word = text.slice(\r\n (last != null ? last.position : undefined) || 0,\r\n bk.position\r\n );\r\n let w =\r\n wordWidths[word] != null\r\n ? wordWidths[word]\r\n : (wordWidths[word] = this.wordWidth(word));\r\n\r\n // if the word is longer than the whole line, chop it up\r\n // TODO: break by grapheme clusters, not JS string characters\r\n if (w > this.lineWidth + this.continuedX) {\r\n // make some fake break objects\r\n let lbk = last;\r\n const fbk = {};\r\n\r\n while (word.length) {\r\n // fit as much of the word as possible into the space we have\r\n var l, mightGrow;\r\n if (w > this.spaceLeft) {\r\n // start our check at the end of our available space - this method is faster than a loop of each character and it resolves\r\n // an issue with long loops when processing massive words, such as a huge number of spaces\r\n l = Math.ceil(this.spaceLeft / (w / word.length));\r\n w = this.wordWidth(word.slice(0, l));\r\n mightGrow = w <= this.spaceLeft && l < word.length;\r\n } else {\r\n l = word.length;\r\n }\r\n let mustShrink = w > this.spaceLeft && l > 0;\r\n // shrink or grow word as necessary after our near-guess above\r\n while (mustShrink || mightGrow) {\r\n if (mustShrink) {\r\n w = this.wordWidth(word.slice(0, --l));\r\n mustShrink = w > this.spaceLeft && l > 0;\r\n } else {\r\n w = this.wordWidth(word.slice(0, ++l));\r\n mustShrink = w > this.spaceLeft && l > 0;\r\n mightGrow = w <= this.spaceLeft && l < word.length;\r\n }\r\n }\r\n\r\n // check for the edge case where a single character cannot fit into a line.\r\n if (l === 0 && this.spaceLeft === this.lineWidth) {\r\n l = 1;\r\n }\r\n\r\n // send a required break unless this is the last piece and a linebreak is not specified\r\n fbk.required = bk.required || l < word.length;\r\n shouldContinue = fn(word.slice(0, l), w, fbk, lbk);\r\n lbk = { required: false };\r\n\r\n // get the remaining piece of the word\r\n word = word.slice(l);\r\n w = this.wordWidth(word);\r\n\r\n if (shouldContinue === false) {\r\n break;\r\n }\r\n }\r\n } else {\r\n // otherwise just emit the break as it was given to us\r\n shouldContinue = fn(word, w, bk, last);\r\n }\r\n\r\n if (shouldContinue === false) {\r\n break;\r\n }\r\n last = bk;\r\n }\r\n }\r\n\r\n wrap(text, options) {\r\n // override options from previous continued fragments\r\n if (options.indent != null) {\r\n this.indent = options.indent;\r\n }\r\n if (options.characterSpacing != null) {\r\n this.characterSpacing = options.characterSpacing;\r\n }\r\n if (options.wordSpacing != null) {\r\n this.wordSpacing = options.wordSpacing;\r\n }\r\n if (options.ellipsis != null) {\r\n this.ellipsis = options.ellipsis;\r\n }\r\n\r\n // make sure we're actually on the page\r\n // and that the first line of is never by\r\n // itself at the bottom of a page (orphans)\r\n const nextY = this.document.y + this.document.currentLineHeight(true);\r\n if (this.document.y > this.maxY || nextY > this.maxY) {\r\n this.nextSection();\r\n }\r\n\r\n let buffer = '';\r\n let textWidth = 0;\r\n let wc = 0;\r\n let lc = 0;\r\n\r\n let { y } = this.document; // used to reset Y pos if options.continued (below)\r\n const emitLine = () => {\r\n options.textWidth = textWidth + this.wordSpacing * (wc - 1);\r\n options.wordCount = wc;\r\n options.lineWidth = this.lineWidth;\r\n ({ y } = this.document);\r\n this.emit('line', buffer, options, this);\r\n return lc++;\r\n };\r\n\r\n this.emit('sectionStart', options, this);\r\n\r\n this.eachWord(text, (word, w, bk, last) => {\r\n if (last == null || last.required) {\r\n this.emit('firstLine', options, this);\r\n this.spaceLeft = this.lineWidth;\r\n }\r\n\r\n if (this.canFit(word, w)) {\r\n buffer += word;\r\n textWidth += w;\r\n wc++;\r\n }\r\n\r\n if (bk.required || !this.canFit(word, w)) {\r\n // if the user specified a max height and an ellipsis, and is about to pass the\r\n // max height and max columns after the next line, append the ellipsis\r\n const lh = this.document.currentLineHeight(true);\r\n if (\r\n this.height != null &&\r\n this.ellipsis &&\r\n this.document.y + lh * 2 > this.maxY &&\r\n this.column >= this.columns\r\n ) {\r\n if (this.ellipsis === true) {\r\n this.ellipsis = '…';\r\n } // map default ellipsis character\r\n buffer = buffer.replace(/\\s+$/, '');\r\n textWidth = this.wordWidth(buffer + this.ellipsis);\r\n\r\n // remove characters from the buffer until the ellipsis fits\r\n // to avoid infinite loop need to stop while-loop if buffer is empty string\r\n while (buffer && textWidth > this.lineWidth) {\r\n buffer = buffer.slice(0, -1).replace(/\\s+$/, '');\r\n textWidth = this.wordWidth(buffer + this.ellipsis);\r\n }\r\n // need to add ellipsis only if there is enough space for it\r\n if (textWidth <= this.lineWidth) {\r\n buffer = buffer + this.ellipsis;\r\n }\r\n\r\n textWidth = this.wordWidth(buffer);\r\n }\r\n\r\n if (bk.required) {\r\n if (w > this.spaceLeft) {\r\n emitLine();\r\n buffer = word;\r\n textWidth = w;\r\n wc = 1;\r\n }\r\n\r\n this.emit('lastLine', options, this);\r\n }\r\n\r\n // Previous entry is a soft hyphen - add visible hyphen.\r\n if (buffer[buffer.length - 1] == SOFT_HYPHEN) {\r\n buffer = buffer.slice(0, -1) + HYPHEN;\r\n this.spaceLeft -= this.wordWidth(HYPHEN);\r\n }\r\n\r\n emitLine();\r\n\r\n // if we've reached the edge of the page,\r\n // continue on a new page or column\r\n if (this.document.y + lh > this.maxY) {\r\n const shouldContinue = this.nextSection();\r\n\r\n // stop if we reached the maximum height\r\n if (!shouldContinue) {\r\n wc = 0;\r\n buffer = '';\r\n return false;\r\n }\r\n }\r\n\r\n // reset the space left and buffer\r\n if (bk.required) {\r\n this.spaceLeft = this.lineWidth;\r\n buffer = '';\r\n textWidth = 0;\r\n return (wc = 0);\r\n } else {\r\n // reset the space left and buffer\r\n this.spaceLeft = this.lineWidth - w;\r\n buffer = word;\r\n textWidth = w;\r\n return (wc = 1);\r\n }\r\n } else {\r\n return (this.spaceLeft -= w);\r\n }\r\n });\r\n\r\n if (wc > 0) {\r\n this.emit('lastLine', options, this);\r\n emitLine();\r\n }\r\n\r\n this.emit('sectionEnd', options, this);\r\n\r\n // if the wrap is set to be continued, save the X position\r\n // to start the first line of the next segment at, and reset\r\n // the y position\r\n if (options.continued === true) {\r\n if (lc > 1) {\r\n this.continuedX = 0;\r\n }\r\n this.continuedX += options.textWidth || 0;\r\n return (this.document.y = y);\r\n } else {\r\n return (this.document.x = this.startX);\r\n }\r\n }\r\n\r\n nextSection(options) {\r\n this.emit('sectionEnd', options, this);\r\n\r\n if (++this.column > this.columns) {\r\n // if a max height was specified by the user, we're done.\r\n // otherwise, the default is to make a new page at the bottom.\r\n if (this.height != null) {\r\n return false;\r\n }\r\n\r\n this.document.continueOnNewPage();\r\n this.column = 1;\r\n this.startY = this.document.page.margins.top;\r\n this.maxY = this.document.page.maxY();\r\n this.document.x = this.startX;\r\n if (this.document._fillColor) {\r\n this.document.fillColor(...this.document._fillColor);\r\n }\r\n this.emit('pageBreak', options, this);\r\n } else {\r\n this.document.x += this.lineWidth + this.columnGap;\r\n this.document.y = this.startY;\r\n this.emit('columnBreak', options, this);\r\n }\r\n\r\n this.emit('sectionStart', options, this);\r\n return true;\r\n }\r\n}\r\n\r\nexport default LineWrapper;\r\n","import LineWrapper from '../line_wrapper';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nexport default {\r\n initText() {\r\n this._line = this._line.bind(this);\r\n // Current coordinates\r\n this.x = 0;\r\n this.y = 0;\r\n return (this._lineGap = 0);\r\n },\r\n\r\n lineGap(_lineGap) {\r\n this._lineGap = _lineGap;\r\n return this;\r\n },\r\n\r\n moveDown(lines) {\r\n if (lines == null) {\r\n lines = 1;\r\n }\r\n this.y += this.currentLineHeight(true) * lines + this._lineGap;\r\n return this;\r\n },\r\n\r\n moveUp(lines) {\r\n if (lines == null) {\r\n lines = 1;\r\n }\r\n this.y -= this.currentLineHeight(true) * lines + this._lineGap;\r\n return this;\r\n },\r\n\r\n _text(text, x, y, options, lineCallback) {\r\n options = this._initOptions(x, y, options);\r\n\r\n // Convert text to a string\r\n text = text == null ? '' : `${text}`;\r\n\r\n // if the wordSpacing option is specified, remove multiple consecutive spaces\r\n if (options.wordSpacing) {\r\n text = text.replace(/\\s{2,}/g, ' ');\r\n }\r\n\r\n const addStructure = () => {\r\n if (options.structParent) {\r\n options.structParent.add(this.struct(options.structType || 'P',\r\n [ this.markStructureContent(options.structType || 'P') ]));\r\n }\r\n };\r\n\r\n // word wrapping\r\n if (options.width) {\r\n let wrapper = this._wrapper;\r\n if (!wrapper) {\r\n wrapper = new LineWrapper(this, options);\r\n wrapper.on('line', lineCallback);\r\n wrapper.on('firstLine', addStructure);\r\n }\r\n\r\n this._wrapper = options.continued ? wrapper : null;\r\n this._textOptions = options.continued ? options : null;\r\n wrapper.wrap(text, options);\r\n\r\n // render paragraphs as single lines\r\n } else {\r\n for (let line of text.split('\\n')) {\r\n addStructure();\r\n lineCallback(line, options);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n text(text, x, y, options) {\r\n return this._text(text, x, y, options, this._line);\r\n },\r\n\r\n widthOfString(string, options = {}) {\r\n return (\r\n this._font.widthOfString(string, this._fontSize, options.features) +\r\n (options.characterSpacing || 0) * (string.length - 1)\r\n );\r\n },\r\n\r\n heightOfString(text, options) {\r\n const { x, y } = this;\r\n\r\n options = this._initOptions(options);\r\n options.height = Infinity; // don't break pages\r\n\r\n const lineGap = options.lineGap || this._lineGap || 0;\r\n this._text(text, this.x, this.y, options, () => {\r\n return (this.y += this.currentLineHeight(true) + lineGap);\r\n });\r\n\r\n const height = this.y - y;\r\n this.x = x;\r\n this.y = y;\r\n\r\n return height;\r\n },\r\n\r\n list(list, x, y, options, wrapper) {\r\n options = this._initOptions(x, y, options);\r\n\r\n const listType = options.listType || 'bullet';\r\n const unit = Math.round((this._font.ascender / 1000) * this._fontSize);\r\n const midLine = unit / 2;\r\n const r = options.bulletRadius || unit / 3;\r\n const indent =\r\n options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);\r\n const itemIndent =\r\n options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);\r\n\r\n let level = 1;\r\n const items = [];\r\n const levels = [];\r\n const numbers = [];\r\n\r\n var flatten = function(list) {\r\n let n = 1;\r\n for (let i = 0; i < list.length; i++) {\r\n const item = list[i];\r\n if (Array.isArray(item)) {\r\n level++;\r\n flatten(item);\r\n level--;\r\n } else {\r\n items.push(item);\r\n levels.push(level);\r\n if (listType !== 'bullet') {\r\n numbers.push(n++);\r\n }\r\n }\r\n }\r\n };\r\n\r\n flatten(list);\r\n\r\n const label = function(n) {\r\n switch (listType) {\r\n case 'numbered':\r\n return `${n}.`;\r\n case 'lettered':\r\n var letter = String.fromCharCode(((n - 1) % 26) + 65);\r\n var times = Math.floor((n - 1) / 26 + 1);\r\n var text = Array(times + 1).join(letter);\r\n return `${text}.`;\r\n }\r\n };\r\n\r\n const drawListItem = function(listItem) {\r\n wrapper = new LineWrapper(this, options);\r\n wrapper.on('line', this._line);\r\n\r\n level = 1;\r\n let i = 0;\r\n wrapper.once('firstLine', () => {\r\n let item, itemType, labelType, bodyType;\r\n if (options.structParent) {\r\n if (options.structTypes) {\r\n [itemType, labelType, bodyType] = options.structTypes;\r\n } else {\r\n [itemType, labelType, bodyType] = ['LI', 'Lbl', 'LBody'];\r\n }\r\n }\r\n\r\n if (itemType) {\r\n item = this.struct(itemType);\r\n options.structParent.add(item);\r\n } else if (options.structParent) {\r\n item = options.structParent;\r\n }\r\n\r\n let l;\r\n if ((l = levels[i++]) !== level) {\r\n const diff = itemIndent * (l - level);\r\n this.x += diff;\r\n wrapper.lineWidth -= diff;\r\n level = l;\r\n }\r\n\r\n if (item && (labelType || bodyType)) {\r\n item.add(this.struct(labelType || bodyType,\r\n [this.markStructureContent(labelType || bodyType)]));\r\n }\r\n switch (listType) {\r\n case 'bullet':\r\n this.circle(this.x - indent + r, this.y + midLine, r);\r\n this.fill();\r\n break;\r\n case 'numbered':\r\n case 'lettered':\r\n var text = label(numbers[i - 1]);\r\n this._fragment(text, this.x - indent, this.y, options);\r\n break;\r\n }\r\n\r\n if (item && labelType && bodyType) {\r\n item.add(this.struct(bodyType, [this.markStructureContent(bodyType)]));\r\n }\r\n if (item && item !== options.structParent) {\r\n item.end();\r\n }\r\n });\r\n\r\n wrapper.on('sectionStart', () => {\r\n const pos = indent + itemIndent * (level - 1);\r\n this.x += pos;\r\n return (wrapper.lineWidth -= pos);\r\n });\r\n\r\n wrapper.on('sectionEnd', () => {\r\n const pos = indent + itemIndent * (level - 1);\r\n this.x -= pos;\r\n return (wrapper.lineWidth += pos);\r\n });\r\n\r\n wrapper.wrap(listItem, options);\r\n };\r\n\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n drawListItem.call(this, items[i]);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n _initOptions(x = {}, y, options = {}) {\r\n if (typeof x === 'object') {\r\n options = x;\r\n x = null;\r\n }\r\n\r\n // clone options object\r\n const result = Object.assign({}, options);\r\n\r\n // extend options with previous values for continued text\r\n if (this._textOptions) {\r\n for (let key in this._textOptions) {\r\n const val = this._textOptions[key];\r\n if (key !== 'continued') {\r\n if (result[key] === undefined) {\r\n result[key] = val;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Update the current position\r\n if (x != null) {\r\n this.x = x;\r\n }\r\n if (y != null) {\r\n this.y = y;\r\n }\r\n\r\n // wrap to margins if no x or y position passed\r\n if (result.lineBreak !== false) {\r\n if (result.width == null) {\r\n result.width = this.page.width - this.x - this.page.margins.right;\r\n }\r\n result.width = Math.max(result.width, 0);\r\n }\r\n\r\n if (!result.columns) {\r\n result.columns = 0;\r\n }\r\n if (result.columnGap == null) {\r\n result.columnGap = 18;\r\n } // 1/4 inch\r\n\r\n return result;\r\n },\r\n\r\n _line(text, options = {}, wrapper) {\r\n this._fragment(text, this.x, this.y, options);\r\n const lineGap = options.lineGap || this._lineGap || 0;\r\n\r\n if (!wrapper) {\r\n return (this.x += this.widthOfString(text));\r\n } else {\r\n return (this.y += this.currentLineHeight(true) + lineGap);\r\n }\r\n },\r\n\r\n _fragment(text, x, y, options) {\r\n let dy, encoded, i, positions, textWidth, words;\r\n text = `${text}`.replace(/\\n/g, '');\r\n if (text.length === 0) {\r\n return;\r\n }\r\n\r\n // handle options\r\n const align = options.align || 'left';\r\n let wordSpacing = options.wordSpacing || 0;\r\n const characterSpacing = options.characterSpacing || 0;\r\n\r\n // text alignments\r\n if (options.width) {\r\n switch (align) {\r\n case 'right':\r\n textWidth = this.widthOfString(text.replace(/\\s+$/, ''), options);\r\n x += options.lineWidth - textWidth;\r\n break;\r\n\r\n case 'center':\r\n x += options.lineWidth / 2 - options.textWidth / 2;\r\n break;\r\n\r\n case 'justify':\r\n // calculate the word spacing value\r\n words = text.trim().split(/\\s+/);\r\n textWidth = this.widthOfString(text.replace(/\\s+/g, ''), options);\r\n var spaceWidth = this.widthOfString(' ') + characterSpacing;\r\n wordSpacing = Math.max(\r\n 0,\r\n (options.lineWidth - textWidth) / Math.max(1, words.length - 1) -\r\n spaceWidth\r\n );\r\n break;\r\n }\r\n }\r\n\r\n // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling\r\n if (typeof options.baseline === 'number') {\r\n dy = -options.baseline;\r\n } else {\r\n switch (options.baseline) {\r\n case 'svg-middle':\r\n dy = 0.5 * this._font.xHeight;\r\n break;\r\n case 'middle':\r\n case 'svg-central':\r\n dy = 0.5 * (this._font.descender + this._font.ascender);\r\n break;\r\n case 'bottom':\r\n case 'ideographic':\r\n dy = this._font.descender;\r\n break;\r\n case 'alphabetic':\r\n dy = 0;\r\n break;\r\n case 'mathematical':\r\n dy = 0.5 * this._font.ascender;\r\n break;\r\n case 'hanging':\r\n dy = 0.8 * this._font.ascender;\r\n break;\r\n case 'top':\r\n dy = this._font.ascender;\r\n break;\r\n default:\r\n dy = this._font.ascender;\r\n }\r\n dy = (dy / 1000) * this._fontSize;\r\n }\r\n\r\n // calculate the actual rendered width of the string after word and character spacing\r\n const renderedWidth =\r\n options.textWidth +\r\n wordSpacing * (options.wordCount - 1) +\r\n characterSpacing * (text.length - 1);\r\n\r\n // create link annotations if the link option is given\r\n if (options.link != null) {\r\n this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);\r\n }\r\n if (options.goTo != null) {\r\n this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);\r\n }\r\n if (options.destination != null) {\r\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n }\r\n\r\n // create underline\r\n if (options.underline) {\r\n this.save();\r\n if (!options.stroke) {\r\n this.strokeColor(...(this._fillColor || []));\r\n }\r\n\r\n const lineWidth =\r\n this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n this.lineWidth(lineWidth);\r\n\r\n let lineY = (y + this.currentLineHeight()) - lineWidth\r\n this.moveTo(x, lineY);\r\n this.lineTo(x + renderedWidth, lineY);\r\n this.stroke();\r\n this.restore();\r\n }\r\n \r\n // create strikethrough line\r\n if (options.strike) {\r\n this.save();\r\n if (!options.stroke) {\r\n this.strokeColor(...(this._fillColor || []));\r\n }\r\n\r\n const lineWidth =\r\n this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n this.lineWidth(lineWidth);\r\n\r\n let lineY = y + this.currentLineHeight() / 2;\r\n this.moveTo(x, lineY);\r\n this.lineTo(x + renderedWidth, lineY);\r\n this.stroke();\r\n this.restore();\r\n }\r\n\r\n this.save();\r\n\r\n // oblique (angle in degrees or boolean)\r\n if (options.oblique) {\r\n let skew;\r\n if (typeof options.oblique === 'number') {\r\n skew = -Math.tan((options.oblique * Math.PI) / 180);\r\n } else {\r\n skew = -0.25;\r\n }\r\n this.transform(1, 0, 0, 1, x, y);\r\n this.transform(1, 0, skew, 1, -skew * dy, 0);\r\n this.transform(1, 0, 0, 1, -x, -y);\r\n }\r\n\r\n // flip coordinate system\r\n this.transform(1, 0, 0, -1, 0, this.page.height);\r\n y = this.page.height - y - dy;\r\n\r\n // add current font to page if necessary\r\n if (this.page.fonts[this._font.id] == null) {\r\n this.page.fonts[this._font.id] = this._font.ref();\r\n }\r\n\r\n // begin the text object\r\n this.addContent('BT');\r\n\r\n // text position\r\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n\r\n // font and font size\r\n this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`);\r\n\r\n // rendering mode\r\n const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\r\n if (mode) {\r\n this.addContent(`${mode} Tr`);\r\n }\r\n\r\n // Character spacing\r\n if (characterSpacing) {\r\n this.addContent(`${number(characterSpacing)} Tc`);\r\n }\r\n\r\n // Add the actual text\r\n // If we have a word spacing value, we need to encode each word separately\r\n // since the normal Tw operator only works on character code 32, which isn't\r\n // used for embedded fonts.\r\n if (wordSpacing) {\r\n words = text.trim().split(/\\s+/);\r\n wordSpacing += this.widthOfString(' ') + characterSpacing;\r\n wordSpacing *= 1000 / this._fontSize;\r\n\r\n encoded = [];\r\n positions = [];\r\n for (let word of words) {\r\n const [encodedWord, positionsWord] = this._font.encode(\r\n word,\r\n options.features\r\n );\r\n encoded = encoded.concat(encodedWord);\r\n positions = positions.concat(positionsWord);\r\n\r\n // add the word spacing to the end of the word\r\n // clone object because of cache\r\n const space = {};\r\n const object = positions[positions.length - 1];\r\n for (let key in object) {\r\n const val = object[key];\r\n space[key] = val;\r\n }\r\n space.xAdvance += wordSpacing;\r\n positions[positions.length - 1] = space;\r\n }\r\n } else {\r\n [encoded, positions] = this._font.encode(text, options.features);\r\n }\r\n\r\n const scale = this._fontSize / 1000;\r\n const commands = [];\r\n let last = 0;\r\n let hadOffset = false;\r\n\r\n // Adds a segment of text to the TJ command buffer\r\n const addSegment = cur => {\r\n if (last < cur) {\r\n const hex = encoded.slice(last, cur).join('');\r\n const advance =\r\n positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\r\n commands.push(`<${hex}> ${number(-advance)}`);\r\n }\r\n\r\n return (last = cur);\r\n };\r\n\r\n // Flushes the current TJ commands to the output stream\r\n const flush = i => {\r\n addSegment(i);\r\n\r\n if (commands.length > 0) {\r\n this.addContent(`[${commands.join(' ')}] TJ`);\r\n return (commands.length = 0);\r\n }\r\n };\r\n\r\n for (i = 0; i < positions.length; i++) {\r\n // If we have an x or y offset, we have to break out of the current TJ command\r\n // so we can move the text position.\r\n const pos = positions[i];\r\n if (pos.xOffset || pos.yOffset) {\r\n // Flush the current buffer\r\n flush(i);\r\n\r\n // Move the text position and flush just the current character\r\n this.addContent(\r\n `1 0 0 1 ${number(x + pos.xOffset * scale)} ${number(\r\n y + pos.yOffset * scale\r\n )} Tm`\r\n );\r\n flush(i + 1);\r\n\r\n hadOffset = true;\r\n } else {\r\n // If the last character had an offset, reset the text position\r\n if (hadOffset) {\r\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n hadOffset = false;\r\n }\r\n\r\n // Group segments that don't have any advance adjustments\r\n if (pos.xAdvance - pos.advanceWidth !== 0) {\r\n addSegment(i + 1);\r\n }\r\n }\r\n\r\n x += pos.xAdvance * scale;\r\n }\r\n\r\n // Flush any remaining commands\r\n flush(i);\r\n\r\n // end the text object\r\n this.addContent('ET');\r\n\r\n // restore flipped coordinate system\r\n return this.restore();\r\n }\r\n};\r\n","import exif from 'jpeg-exif';\r\n\r\nconst MARKERS = [\r\n 0xffc0,\r\n 0xffc1,\r\n 0xffc2,\r\n 0xffc3,\r\n 0xffc5,\r\n 0xffc6,\r\n 0xffc7,\r\n 0xffc8,\r\n 0xffc9,\r\n 0xffca,\r\n 0xffcb,\r\n 0xffcc,\r\n 0xffcd,\r\n 0xffce,\r\n 0xffcf\r\n];\r\n\r\nconst COLOR_SPACE_MAP = {\r\n 1: 'DeviceGray',\r\n 3: 'DeviceRGB',\r\n 4: 'DeviceCMYK'\r\n};\r\n\r\nclass JPEG {\r\n constructor(data, label) {\r\n let marker;\r\n this.data = data;\r\n this.label = label;\r\n if (this.data.readUInt16BE(0) !== 0xffd8) {\r\n throw 'SOI not found in JPEG';\r\n }\r\n\r\n // Parse the EXIF orientation\r\n this.orientation = exif.fromBuffer(this.data).Orientation || 1;\r\n\r\n let pos = 2;\r\n while (pos < this.data.length) {\r\n marker = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n if (MARKERS.includes(marker)) {\r\n break;\r\n }\r\n pos += this.data.readUInt16BE(pos);\r\n }\r\n\r\n if (!MARKERS.includes(marker)) {\r\n throw 'Invalid JPEG.';\r\n }\r\n pos += 2;\r\n\r\n this.bits = this.data[pos++];\r\n this.height = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n\r\n this.width = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n\r\n const channels = this.data[pos++];\r\n this.colorSpace = COLOR_SPACE_MAP[channels];\r\n\r\n this.obj = null;\r\n }\r\n\r\n embed(document) {\r\n if (this.obj) {\r\n return;\r\n }\r\n\r\n this.obj = document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n BitsPerComponent: this.bits,\r\n Width: this.width,\r\n Height: this.height,\r\n ColorSpace: this.colorSpace,\r\n Filter: 'DCTDecode'\r\n });\r\n\r\n // add extra decode params for CMYK images. By swapping the\r\n // min and max values from the default, we invert the colors. See\r\n // section 4.8.4 of the spec.\r\n if (this.colorSpace === 'DeviceCMYK') {\r\n this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\r\n }\r\n\r\n this.obj.end(this.data);\r\n\r\n // free memory\r\n return (this.data = null);\r\n }\r\n}\r\n\r\nexport default JPEG;\r\n","import zlib from 'zlib';\r\nimport PNG from 'png-js';\r\n\r\nclass PNGImage {\r\n constructor(data, label) {\r\n this.label = label;\r\n this.image = new PNG(data);\r\n this.width = this.image.width;\r\n this.height = this.image.height;\r\n this.imgData = this.image.imgData;\r\n this.obj = null;\r\n }\r\n\r\n embed(document) {\r\n let dataDecoded = false;\r\n\r\n this.document = document;\r\n if (this.obj) {\r\n return;\r\n }\r\n\r\n const hasAlphaChannel = this.image.hasAlphaChannel;\r\n const isInterlaced = this.image.interlaceMethod === 1;\r\n\r\n this.obj = this.document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\r\n Width: this.width,\r\n Height: this.height,\r\n Filter: 'FlateDecode'\r\n });\r\n\r\n if (!hasAlphaChannel) {\r\n const params = this.document.ref({\r\n Predictor: isInterlaced ? 1 : 15,\r\n Colors: this.image.colors,\r\n BitsPerComponent: this.image.bits,\r\n Columns: this.width\r\n });\r\n\r\n this.obj.data['DecodeParms'] = params;\r\n params.end();\r\n }\r\n\r\n if (this.image.palette.length === 0) {\r\n this.obj.data['ColorSpace'] = this.image.colorSpace;\r\n } else {\r\n // embed the color palette in the PDF as an object stream\r\n const palette = this.document.ref();\r\n palette.end(Buffer.from(this.image.palette));\r\n\r\n // build the color space array for the image\r\n this.obj.data['ColorSpace'] = [\r\n 'Indexed',\r\n 'DeviceRGB',\r\n this.image.palette.length / 3 - 1,\r\n palette\r\n ];\r\n }\r\n\r\n // For PNG color types 0, 2 and 3, the transparency data is stored in\r\n // a dedicated PNG chunk.\r\n if (this.image.transparency.grayscale != null) {\r\n // Use Color Key Masking (spec section 4.8.5)\r\n // An array with N elements, where N is two times the number of color components.\r\n const val = this.image.transparency.grayscale;\r\n this.obj.data['Mask'] = [val, val];\r\n } else if (this.image.transparency.rgb) {\r\n // Use Color Key Masking (spec section 4.8.5)\r\n // An array with N elements, where N is two times the number of color components.\r\n const { rgb } = this.image.transparency;\r\n const mask = [];\r\n for (let x of rgb) {\r\n mask.push(x, x);\r\n }\r\n\r\n this.obj.data['Mask'] = mask;\r\n } else if (this.image.transparency.indexed) {\r\n // Create a transparency SMask for the image based on the data\r\n // in the PLTE and tRNS sections. See below for details on SMasks.\r\n dataDecoded = true;\r\n return this.loadIndexedAlphaChannel();\r\n } else if (hasAlphaChannel) {\r\n // For PNG color types 4 and 6, the transparency data is stored as a alpha\r\n // channel mixed in with the main image data. Separate this data out into an\r\n // SMask object and store it separately in the PDF.\r\n dataDecoded = true;\r\n return this.splitAlphaChannel();\r\n }\r\n\r\n if (isInterlaced && !dataDecoded) {\r\n return this.decodeData();\r\n }\r\n\r\n this.finalize();\r\n }\r\n\r\n finalize() {\r\n if (this.alphaChannel) {\r\n const sMask = this.document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n Height: this.height,\r\n Width: this.width,\r\n BitsPerComponent: 8,\r\n Filter: 'FlateDecode',\r\n ColorSpace: 'DeviceGray',\r\n Decode: [0, 1]\r\n });\r\n\r\n sMask.end(this.alphaChannel);\r\n this.obj.data['SMask'] = sMask;\r\n }\r\n\r\n // add the actual image data\r\n this.obj.end(this.imgData);\r\n\r\n // free memory\r\n this.image = null;\r\n return (this.imgData = null);\r\n }\r\n\r\n splitAlphaChannel() {\r\n return this.image.decodePixels(pixels => {\r\n let a, p;\r\n const colorCount = this.image.colors;\r\n const pixelCount = this.width * this.height;\r\n const imgData = Buffer.alloc(pixelCount * colorCount);\r\n const alphaChannel = Buffer.alloc(pixelCount);\r\n\r\n let i = (p = a = 0);\r\n const len = pixels.length;\r\n // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\r\n const skipByteCount = this.image.bits === 16 ? 1 : 0;\r\n while (i < len) {\r\n for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) {\r\n imgData[p++] = pixels[i++];\r\n i += skipByteCount;\r\n }\r\n alphaChannel[a++] = pixels[i++];\r\n i += skipByteCount;\r\n }\r\n\r\n this.imgData = zlib.deflateSync(imgData);\r\n this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n return this.finalize();\r\n });\r\n }\r\n\r\n loadIndexedAlphaChannel() {\r\n const transparency = this.image.transparency.indexed;\r\n return this.image.decodePixels(pixels => {\r\n const alphaChannel = Buffer.alloc(this.width * this.height);\r\n\r\n let i = 0;\r\n for (let j = 0, end = pixels.length; j < end; j++) {\r\n alphaChannel[i++] = transparency[pixels[j]];\r\n }\r\n\r\n this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n return this.finalize();\r\n });\r\n }\r\n\r\n decodeData() {\r\n this.image.decodePixels(pixels => {\r\n this.imgData = zlib.deflateSync(pixels);\r\n this.finalize();\r\n });\r\n }\r\n}\r\n\r\nexport default PNGImage;\r\n","/*\r\nPDFImage - embeds images in PDF documents\r\nBy Devon Govett\r\n*/\r\n\r\nimport fs from 'fs';\r\nimport JPEG from './image/jpeg';\r\nimport PNG from './image/png';\r\n\r\nclass PDFImage {\r\n static open(src, label) {\r\n let data;\r\n if (Buffer.isBuffer(src)) {\r\n data = src;\r\n } else if (src instanceof ArrayBuffer) {\r\n data = Buffer.from(new Uint8Array(src));\r\n } else {\r\n let match;\r\n if ((match = /^data:.+?;base64,(.*)$/.exec(src))) {\r\n data = Buffer.from(match[1], 'base64');\r\n } else {\r\n data = fs.readFileSync(src);\r\n if (!data) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (data[0] === 0xff && data[1] === 0xd8) {\r\n return new JPEG(data, label);\r\n } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\r\n return new PNG(data, label);\r\n } else {\r\n throw new Error('Unknown image format.');\r\n }\r\n }\r\n}\r\n\r\nexport default PDFImage;\r\n","import PDFImage from '../image';\r\n\r\nexport default {\r\n initImages() {\r\n this._imageRegistry = {};\r\n return (this._imageCount = 0);\r\n },\r\n\r\n image(src, x, y, options = {}) {\r\n let bh, bp, bw, image, ip, left, left1, rotateAngle, originX, originY;\r\n if (typeof x === 'object') {\r\n options = x;\r\n x = null;\r\n }\r\n\r\n // Ignore orientation based on document options or image options\r\n const ignoreOrientation =\r\n options.ignoreOrientation ||\r\n (options.ignoreOrientation !== false && this.options.ignoreOrientation);\r\n\r\n x = (left = x != null ? x : options.x) != null ? left : this.x;\r\n y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\r\n\r\n if (typeof src === 'string') {\r\n image = this._imageRegistry[src];\r\n }\r\n\r\n if (!image) {\r\n if (src.width && src.height) {\r\n image = src;\r\n } else {\r\n image = this.openImage(src);\r\n }\r\n }\r\n\r\n if (!image.obj) {\r\n image.embed(this);\r\n }\r\n\r\n if (this.page.xobjects[image.label] == null) {\r\n this.page.xobjects[image.label] = image.obj;\r\n }\r\n\r\n let { width, height } = image;\r\n\r\n // If EXIF orientation calls for it, swap width and height\r\n if (!ignoreOrientation && image.orientation > 4) {\r\n [width, height] = [height, width];\r\n }\r\n\r\n let w = options.width || width;\r\n let h = options.height || height;\r\n\r\n if (options.width && !options.height) {\r\n const wp = w / width;\r\n w = width * wp;\r\n h = height * wp;\r\n } else if (options.height && !options.width) {\r\n const hp = h / height;\r\n w = width * hp;\r\n h = height * hp;\r\n } else if (options.scale) {\r\n w = width * options.scale;\r\n h = height * options.scale;\r\n } else if (options.fit) {\r\n [bw, bh] = options.fit;\r\n bp = bw / bh;\r\n ip = width / height;\r\n if (ip > bp) {\r\n w = bw;\r\n h = bw / ip;\r\n } else {\r\n h = bh;\r\n w = bh * ip;\r\n }\r\n } else if (options.cover) {\r\n [bw, bh] = options.cover;\r\n bp = bw / bh;\r\n ip = width / height;\r\n if (ip > bp) {\r\n h = bh;\r\n w = bh * ip;\r\n } else {\r\n w = bw;\r\n h = bw / ip;\r\n }\r\n }\r\n\r\n if (options.fit || options.cover) {\r\n if (options.align === 'center') {\r\n x = x + bw / 2 - w / 2;\r\n } else if (options.align === 'right') {\r\n x = x + bw - w;\r\n }\r\n\r\n if (options.valign === 'center') {\r\n y = y + bh / 2 - h / 2;\r\n } else if (options.valign === 'bottom') {\r\n y = y + bh - h;\r\n }\r\n }\r\n\r\n if (!ignoreOrientation) {\r\n switch (image.orientation) {\r\n // No orientation (need to flip image, though, because of the default transform matrix on the document)\r\n default:\r\n case 1:\r\n h = -h;\r\n y -= h;\r\n\r\n rotateAngle = 0;\r\n break;\r\n // Flip Horizontal\r\n case 2:\r\n w = -w;\r\n h = -h;\r\n x -= w;\r\n y -= h;\r\n\r\n rotateAngle = 0;\r\n break;\r\n // Rotate 180 degrees\r\n case 3:\r\n originX = x;\r\n originY = y;\r\n\r\n h = -h;\r\n x -= w;\r\n\r\n rotateAngle = 180;\r\n break;\r\n // Flip vertical\r\n case 4:\r\n // Do nothing, image will be flipped\r\n\r\n break;\r\n // Flip horizontally and rotate 270 degrees CW\r\n case 5:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n y -= h;\r\n\r\n rotateAngle = 90;\r\n break;\r\n // Rotate 90 degrees CW\r\n case 6:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n h = -h;\r\n\r\n rotateAngle = 90;\r\n break;\r\n // Flip horizontally and rotate 90 degrees CW\r\n case 7:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n h = -h;\r\n w = -w;\r\n x -= w;\r\n\r\n rotateAngle = 90;\r\n break;\r\n // Rotate 270 degrees CW\r\n case 8:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n h = -h;\r\n x -= w;\r\n y -= h;\r\n\r\n rotateAngle = -90;\r\n break;\r\n }\r\n } else {\r\n h = -h;\r\n y -= h;\r\n rotateAngle = 0;\r\n }\r\n\r\n // create link annotations if the link option is given\r\n if (options.link != null) {\r\n this.link(x, y, w, h, options.link);\r\n }\r\n if (options.goTo != null) {\r\n this.goTo(x, y, w, h, options.goTo);\r\n }\r\n if (options.destination != null) {\r\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n }\r\n\r\n // Set the current y position to below the image if it is in the document flow\r\n if (this.y === y) {\r\n this.y += h;\r\n }\r\n\r\n this.save();\r\n\r\n if (rotateAngle) {\r\n this.rotate(rotateAngle, {\r\n origin: [originX, originY]\r\n });\r\n }\r\n\r\n this.transform(w, 0, 0, h, x, y);\r\n this.addContent(`/${image.label} Do`);\r\n this.restore();\r\n\r\n return this;\r\n },\r\n\r\n openImage(src) {\r\n let image;\r\n if (typeof src === 'string') {\r\n image = this._imageRegistry[src];\r\n }\r\n\r\n if (!image) {\r\n image = PDFImage.open(src, `I${++this._imageCount}`);\r\n if (typeof src === 'string') {\r\n this._imageRegistry[src] = image;\r\n }\r\n }\r\n\r\n return image;\r\n }\r\n};\r\n","export default {\r\n annotate(x, y, w, h, options) {\r\n options.Type = 'Annot';\r\n options.Rect = this._convertRect(x, y, w, h);\r\n options.Border = [0, 0, 0];\r\n\r\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\r\n options.F = 1 << 2; // Print Annotation Flag\r\n }\r\n\r\n if (options.Subtype !== 'Link') {\r\n if (options.C == null) {\r\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\r\n }\r\n } // convert colors\r\n delete options.color;\r\n\r\n if (typeof options.Dest === 'string') {\r\n options.Dest = new String(options.Dest);\r\n }\r\n\r\n // Capitalize keys\r\n for (let key in options) {\r\n const val = options[key];\r\n options[key[0].toUpperCase() + key.slice(1)] = val;\r\n }\r\n\r\n const ref = this.ref(options);\r\n this.page.annotations.push(ref);\r\n ref.end();\r\n return this;\r\n },\r\n\r\n note(x, y, w, h, contents, options = {}) {\r\n options.Subtype = 'Text';\r\n options.Contents = new String(contents);\r\n options.Name = 'Comment';\r\n if (options.color == null) {\r\n options.color = [243, 223, 92];\r\n }\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n goTo(x, y, w, h, name, options = {}) {\r\n options.Subtype = 'Link';\r\n options.A = this.ref({\r\n S: 'GoTo',\r\n D: new String(name)\r\n });\r\n options.A.end();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n link(x, y, w, h, url, options = {}) {\r\n options.Subtype = 'Link';\r\n\r\n if (typeof url === 'number') {\r\n // Link to a page in the document (the page must already exist)\r\n const pages = this._root.data.Pages.data;\r\n if (url >= 0 && url < pages.Kids.length) {\r\n options.A = this.ref({\r\n S: 'GoTo',\r\n D: [pages.Kids[url], 'XYZ', null, null, null]\r\n });\r\n options.A.end();\r\n } else {\r\n throw new Error(`The document has no page ${url}`);\r\n }\r\n } else {\r\n // Link to an external url\r\n options.A = this.ref({\r\n S: 'URI',\r\n URI: new String(url)\r\n });\r\n options.A.end();\r\n }\r\n\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n _markup(x, y, w, h, options = {}) {\r\n const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\r\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n highlight(x, y, w, h, options = {}) {\r\n options.Subtype = 'Highlight';\r\n if (options.color == null) {\r\n options.color = [241, 238, 148];\r\n }\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n underline(x, y, w, h, options = {}) {\r\n options.Subtype = 'Underline';\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n strike(x, y, w, h, options = {}) {\r\n options.Subtype = 'StrikeOut';\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n lineAnnotation(x1, y1, x2, y2, options = {}) {\r\n options.Subtype = 'Line';\r\n options.Contents = new String();\r\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\r\n return this.annotate(x1, y1, x2, y2, options);\r\n },\r\n\r\n rectAnnotation(x, y, w, h, options = {}) {\r\n options.Subtype = 'Square';\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n ellipseAnnotation(x, y, w, h, options = {}) {\r\n options.Subtype = 'Circle';\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n textAnnotation(x, y, w, h, text, options = {}) {\r\n options.Subtype = 'FreeText';\r\n options.Contents = new String(text);\r\n options.DA = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n fileAnnotation(x, y, w, h, file = {}, options = {}) {\r\n // create hidden file\r\n const filespec = this.file(\r\n file.src,\r\n Object.assign({ hidden: true }, file)\r\n );\r\n\r\n options.Subtype = 'FileAttachment';\r\n options.FS = filespec;\r\n\r\n // add description from filespec unless description (Contents) has already been set\r\n if (options.Contents) {\r\n options.Contents = new String(options.Contents);\r\n } else if (filespec.data.Desc) {\r\n options.Contents = filespec.data.Desc;\r\n }\r\n\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n _convertRect(x1, y1, w, h) {\r\n // flip y1 and y2\r\n let y2 = y1;\r\n y1 += h;\r\n\r\n // make x2\r\n let x2 = x1 + w;\r\n\r\n // apply current transformation matrix to points\r\n const [m0, m1, m2, m3, m4, m5] = this._ctm;\r\n x1 = m0 * x1 + m2 * y1 + m4;\r\n y1 = m1 * x1 + m3 * y1 + m5;\r\n x2 = m0 * x2 + m2 * y2 + m4;\r\n y2 = m1 * x2 + m3 * y2 + m5;\r\n\r\n return [x1, y1, x2, y2];\r\n }\r\n};\r\n","class PDFOutline {\r\n constructor(document, parent, title, dest, options = { expanded: false }) {\r\n this.document = document;\r\n this.options = options;\r\n this.outlineData = {};\r\n\r\n if (dest !== null) {\r\n this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\r\n }\r\n\r\n if (parent !== null) {\r\n this.outlineData['Parent'] = parent;\r\n }\r\n\r\n if (title !== null) {\r\n this.outlineData['Title'] = new String(title);\r\n }\r\n\r\n this.dictionary = this.document.ref(this.outlineData);\r\n this.children = [];\r\n }\r\n\r\n addItem(title, options = { expanded: false }) {\r\n const result = new PDFOutline(\r\n this.document,\r\n this.dictionary,\r\n title,\r\n this.document.page,\r\n options\r\n );\r\n this.children.push(result);\r\n\r\n return result;\r\n }\r\n\r\n endOutline() {\r\n if (this.children.length > 0) {\r\n if (this.options.expanded) {\r\n this.outlineData.Count = this.children.length;\r\n }\r\n\r\n const first = this.children[0],\r\n last = this.children[this.children.length - 1];\r\n this.outlineData.First = first.dictionary;\r\n this.outlineData.Last = last.dictionary;\r\n\r\n for (let i = 0, len = this.children.length; i < len; i++) {\r\n const child = this.children[i];\r\n if (i > 0) {\r\n child.outlineData.Prev = this.children[i - 1].dictionary;\r\n }\r\n if (i < this.children.length - 1) {\r\n child.outlineData.Next = this.children[i + 1].dictionary;\r\n }\r\n child.endOutline();\r\n }\r\n }\r\n\r\n return this.dictionary.end();\r\n }\r\n}\r\n\r\nexport default PDFOutline;\r\n","import PDFOutline from '../outline';\r\n\r\nexport default {\r\n initOutline() {\r\n return (this.outline = new PDFOutline(this, null, null, null));\r\n },\r\n\r\n endOutline() {\r\n this.outline.endOutline();\r\n if (this.outline.children.length > 0) {\r\n this._root.data.Outlines = this.outline.dictionary;\r\n return (this._root.data.PageMode = 'UseOutlines');\r\n }\r\n }\r\n};\r\n","/*\r\nPDFStructureContent - a reference to a marked structure content\r\nBy Ben Schmidt\r\n*/\r\n\r\nclass PDFStructureContent {\r\n constructor(pageRef, mcid) {\r\n this.refs = [{ pageRef, mcid }];\r\n }\r\n\r\n push(structContent) {\r\n structContent.refs.forEach((ref) => this.refs.push(ref));\r\n }\r\n}\r\n\r\nexport default PDFStructureContent;\r\n","/*\r\nPDFStructureElement - represents an element in the PDF logical structure tree\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureContent from \"./structure_content\";\r\n\r\nclass PDFStructureElement {\r\n constructor(document, type, options = {}, children = null) {\r\n this.document = document;\r\n\r\n this._attached = false;\r\n this._ended = false;\r\n this._flushed = false;\r\n this.dictionary = document.ref({\r\n // Type: \"StructElem\",\r\n S: type\r\n });\r\n\r\n const data = this.dictionary.data;\r\n\r\n if (Array.isArray(options) || this._isValidChild(options)) {\r\n children = options;\r\n options = {};\r\n }\r\n\r\n if (typeof options.title !== 'undefined') {\r\n data.T = new String(options.title);\r\n }\r\n if (typeof options.lang !== 'undefined') {\r\n data.Lang = new String(options.lang);\r\n }\r\n if (typeof options.alt !== 'undefined') {\r\n data.Alt = new String(options.alt);\r\n }\r\n if (typeof options.expanded !== 'undefined') {\r\n data.E = new String(options.expanded);\r\n }\r\n if (typeof options.actual !== 'undefined') {\r\n data.ActualText = new String(options.actual);\r\n }\r\n\r\n this._children = [];\r\n\r\n if (children) {\r\n if (!Array.isArray(children)) {\r\n children = [children];\r\n }\r\n children.forEach((child) => this.add(child));\r\n this.end();\r\n }\r\n }\r\n\r\n add(child) {\r\n if (this._ended) {\r\n throw new Error(`Cannot add child to already-ended structure element`);\r\n }\r\n\r\n if (!this._isValidChild(child)) {\r\n throw new Error(`Invalid structure element child`);\r\n }\r\n\r\n if (child instanceof PDFStructureElement) {\r\n child.setParent(this.dictionary);\r\n if (this._attached) {\r\n child.setAttached();\r\n }\r\n }\r\n\r\n if (child instanceof PDFStructureContent) {\r\n this._addContentToParentTree(child);\r\n }\r\n\r\n if (typeof child === 'function' && this._attached) {\r\n // _contentForClosure() adds the content to the parent tree\r\n child = this._contentForClosure(child);\r\n }\r\n\r\n this._children.push(child);\r\n\r\n return this;\r\n }\r\n\r\n _addContentToParentTree(content) {\r\n content.refs.forEach(({ pageRef, mcid }) => {\r\n const pageStructParents = this.document.getStructParentTree()\r\n .get(pageRef.data.StructParents);\r\n pageStructParents[mcid] = this.dictionary;\r\n });\r\n }\r\n\r\n setParent(parentRef) {\r\n if (this.dictionary.data.P) {\r\n throw new Error(`Structure element added to more than one parent`);\r\n }\r\n\r\n this.dictionary.data.P = parentRef;\r\n\r\n this._flush();\r\n }\r\n\r\n setAttached() {\r\n if (this._attached) {\r\n return;\r\n }\r\n\r\n this._children.forEach((child, index) => {\r\n if (child instanceof PDFStructureElement) {\r\n child.setAttached();\r\n }\r\n if (typeof child === 'function') {\r\n this._children[index] = this._contentForClosure(child);\r\n }\r\n });\r\n\r\n this._attached = true;\r\n\r\n this._flush();\r\n }\r\n\r\n end() {\r\n if (this._ended) {\r\n return;\r\n }\r\n\r\n this._children\r\n .filter((child) => child instanceof PDFStructureElement)\r\n .forEach((child) => child.end());\r\n\r\n this._ended = true;\r\n\r\n this._flush();\r\n }\r\n\r\n _isValidChild(child) {\r\n return child instanceof PDFStructureElement ||\r\n child instanceof PDFStructureContent ||\r\n typeof child === 'function';\r\n }\r\n\r\n _contentForClosure(closure) {\r\n const content = this.document.markStructureContent(this.dictionary.data.S);\r\n closure();\r\n this.document.endMarkedContent();\r\n\r\n this._addContentToParentTree(content);\r\n\r\n return content;\r\n }\r\n\r\n _isFlushable() {\r\n if (!this.dictionary.data.P || !this._ended) {\r\n return false;\r\n }\r\n\r\n return this._children.every((child) => {\r\n if (typeof child === 'function') {\r\n return false;\r\n }\r\n if (child instanceof PDFStructureElement) {\r\n return child._isFlushable();\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n _flush() {\r\n if (this._flushed || !this._isFlushable()) {\r\n return;\r\n }\r\n\r\n this.dictionary.data.K = [];\r\n\r\n this._children.forEach((child) => this._flushChild(child));\r\n\r\n this.dictionary.end();\r\n\r\n // free memory used by children; the dictionary itself may still be\r\n // referenced by a parent structure element or root, but we can\r\n // at least trim the tree here\r\n this._children = [];\r\n this.dictionary.data.K = null;\r\n\r\n this._flushed = true;\r\n }\r\n\r\n _flushChild(child) {\r\n if (child instanceof PDFStructureElement) {\r\n this.dictionary.data.K.push(child.dictionary);\r\n }\r\n\r\n if (child instanceof PDFStructureContent) {\r\n child.refs.forEach(({ pageRef, mcid }) => {\r\n if (!this.dictionary.data.Pg) {\r\n this.dictionary.data.Pg = pageRef;\r\n }\r\n\r\n if (this.dictionary.data.Pg === pageRef) {\r\n this.dictionary.data.K.push(mcid);\r\n } else {\r\n this.dictionary.data.K.push({\r\n Type: \"MCR\",\r\n Pg: pageRef,\r\n MCID: mcid\r\n });\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default PDFStructureElement;\r\n","/*\r\nPDFNumberTree - represents a number tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNumberTree extends PDFTree {\r\n _compareKeys(a, b) {\r\n return parseInt(a) - parseInt(b);\r\n }\r\n\r\n _keysName() {\r\n return \"Nums\";\r\n }\r\n\r\n _dataForKey(k) {\r\n return parseInt(k);\r\n }\r\n}\r\n\r\nexport default PDFNumberTree;\r\n","/*\r\nMarkings mixin - support marked content sequences in content streams\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureElement from \"../structure_element\";\r\nimport PDFStructureContent from \"../structure_content\";\r\nimport PDFNumberTree from \"../number_tree\";\r\nimport PDFObject from \"../object\";\r\n\r\nexport default {\r\n\r\n initMarkings(options) {\r\n this.structChildren = [];\r\n\r\n if (options.tagged) {\r\n this.getMarkInfoDictionary().data.Marked = true;\r\n this.getStructTreeRoot();\r\n }\r\n },\r\n\r\n markContent(tag, options = null) {\r\n if (tag === 'Artifact' || (options && options.mcid)) {\r\n let toClose = 0;\r\n this.page.markings.forEach((marking) => {\r\n if (toClose || marking.structContent || marking.tag === 'Artifact') {\r\n toClose++;\r\n }\r\n });\r\n while (toClose--) {\r\n this.endMarkedContent();\r\n }\r\n }\r\n\r\n if (!options) {\r\n this.page.markings.push({ tag });\r\n this.addContent(`/${tag} BMC`);\r\n return this;\r\n }\r\n\r\n this.page.markings.push({ tag, options });\r\n\r\n const dictionary = {};\r\n\r\n if (typeof options.mcid !== 'undefined') {\r\n dictionary.MCID = options.mcid;\r\n }\r\n if (tag === 'Artifact') {\r\n if (typeof options.type === 'string') {\r\n dictionary.Type = options.type;\r\n }\r\n if (Array.isArray(options.bbox)) {\r\n dictionary.BBox = [options.bbox[0], this.page.height - options.bbox[3],\r\n options.bbox[2], this.page.height - options.bbox[1]];\r\n }\r\n if (Array.isArray(options.attached) &&\r\n options.attached.every(val => typeof val === 'string')) {\r\n dictionary.Attached = options.attached;\r\n }\r\n }\r\n if (tag === 'Span') {\r\n if (options.lang) {\r\n dictionary.Lang = new String(options.lang);\r\n }\r\n if (options.alt) {\r\n dictionary.Alt = new String(options.alt);\r\n }\r\n if (options.expanded) {\r\n dictionary.E = new String(options.expanded);\r\n }\r\n if (options.actual) {\r\n dictionary.ActualText = new String(options.actual);\r\n }\r\n }\r\n\r\n this.addContent(`/${tag} ${PDFObject.convert(dictionary)} BDC`);\r\n return this;\r\n },\r\n\r\n markStructureContent(tag, options = {}) {\r\n const pageStructParents = this.getStructParentTree().get(this.page.structParentTreeKey);\r\n const mcid = pageStructParents.length;\r\n pageStructParents.push(null);\r\n\r\n this.markContent(tag, { ...options, mcid });\r\n\r\n const structContent = new PDFStructureContent(this.page.dictionary, mcid);\r\n this.page.markings.slice(-1)[0].structContent = structContent;\r\n return structContent;\r\n },\r\n\r\n endMarkedContent() {\r\n this.page.markings.pop();\r\n this.addContent('EMC');\r\n return this;\r\n },\r\n\r\n struct(type, options = {}, children = null) {\r\n return new PDFStructureElement(this, type, options, children);\r\n },\r\n\r\n addStructure(structElem) {\r\n const structTreeRoot = this.getStructTreeRoot();\r\n structElem.setParent(structTreeRoot);\r\n structElem.setAttached();\r\n this.structChildren.push(structElem);\r\n if (!structTreeRoot.data.K) {\r\n structTreeRoot.data.K = [];\r\n }\r\n structTreeRoot.data.K.push(structElem.dictionary);\r\n return this;\r\n },\r\n\r\n initPageMarkings(pageMarkings) {\r\n pageMarkings.forEach((marking) => {\r\n if (marking.structContent) {\r\n const structContent = marking.structContent;\r\n const newStructContent = this.markStructureContent(marking.tag, marking.options);\r\n structContent.push(newStructContent);\r\n this.page.markings.slice(-1)[0].structContent = structContent;\r\n } else {\r\n this.markContent(marking.tag, marking.options);\r\n }\r\n });\r\n },\r\n\r\n endPageMarkings(page) {\r\n const pageMarkings = page.markings;\r\n pageMarkings.forEach(() => page.write('EMC'));\r\n page.markings = [];\r\n return pageMarkings;\r\n },\r\n\r\n getMarkInfoDictionary() {\r\n if (!this._root.data.MarkInfo) {\r\n this._root.data.MarkInfo = this.ref({});\r\n }\r\n return this._root.data.MarkInfo;\r\n },\r\n\r\n getStructTreeRoot() {\r\n if (!this._root.data.StructTreeRoot) {\r\n this._root.data.StructTreeRoot = this.ref({\r\n Type: 'StructTreeRoot',\r\n ParentTree: new PDFNumberTree(),\r\n ParentTreeNextKey: 0\r\n });\r\n }\r\n return this._root.data.StructTreeRoot;\r\n },\r\n\r\n getStructParentTree() {\r\n return this.getStructTreeRoot().data.ParentTree;\r\n },\r\n\r\n createStructParentTreeNextKey() {\r\n // initialise the MarkInfo dictionary\r\n this.getMarkInfoDictionary();\r\n\r\n const structTreeRoot = this.getStructTreeRoot();\r\n const key = structTreeRoot.data.ParentTreeNextKey++;\r\n structTreeRoot.data.ParentTree.add(key, []);\r\n return key;\r\n },\r\n\r\n endMarkings() {\r\n const structTreeRoot = this._root.data.StructTreeRoot;\r\n if (structTreeRoot) {\r\n structTreeRoot.end();\r\n this.structChildren.forEach((structElem) => structElem.end());\r\n }\r\n if (this._root.data.MarkInfo) {\r\n this._root.data.MarkInfo.end();\r\n }\r\n }\r\n\r\n};\r\n","const FIELD_FLAGS = {\r\n readOnly: 1,\r\n required: 2,\r\n noExport: 4,\r\n multiline: 0x1000,\r\n password: 0x2000,\r\n toggleToOffButton: 0x4000,\r\n radioButton: 0x8000,\r\n pushButton: 0x10000,\r\n combo: 0x20000,\r\n edit: 0x40000,\r\n sort: 0x80000,\r\n multiSelect: 0x200000,\r\n noSpell: 0x400000\r\n};\r\nconst FIELD_JUSTIFY = {\r\n left: 0,\r\n center: 1,\r\n right: 2\r\n};\r\nconst VALUE_MAP = { value: 'V', defaultValue: 'DV' };\r\nconst FORMAT_SPECIAL = {\r\n zip: '0',\r\n zipPlus4: '1',\r\n zip4: '1',\r\n phone: '2',\r\n ssn: '3'\r\n};\r\nconst FORMAT_DEFAULT = {\r\n number: {\r\n nDec: 0,\r\n sepComma: false,\r\n negStyle: 'MinusBlack',\r\n currency: '',\r\n currencyPrepend: true\r\n },\r\n percent: {\r\n nDec: 0,\r\n sepComma: false\r\n }\r\n};\r\n\r\nexport default {\r\n /**\r\n * Must call if adding AcroForms to a document. Must also call font() before\r\n * this method to set the default font.\r\n */\r\n initForm() {\r\n if (!this._font) {\r\n throw new Error('Must set a font before calling initForm method');\r\n }\r\n this._acroform = {\r\n fonts: {},\r\n defaultFont: this._font.name\r\n };\r\n this._acroform.fonts[this._font.id] = this._font.ref();\r\n\r\n let data = {\r\n Fields: [],\r\n NeedAppearances: true,\r\n DA: new String(`/${this._font.id} 0 Tf 0 g`),\r\n DR: {\r\n Font: {}\r\n }\r\n };\r\n data.DR.Font[this._font.id] = this._font.ref();\r\n const AcroForm = this.ref(data);\r\n this._root.data.AcroForm = AcroForm;\r\n return this;\r\n },\r\n\r\n /**\r\n * Called automatically by document.js\r\n */\r\n endAcroForm() {\r\n if (this._root.data.AcroForm) {\r\n if (\r\n !Object.keys(this._acroform.fonts).length &&\r\n !this._acroform.defaultFont\r\n ) {\r\n throw new Error('No fonts specified for PDF form');\r\n }\r\n let fontDict = this._root.data.AcroForm.data.DR.Font;\r\n Object.keys(this._acroform.fonts).forEach(name => {\r\n fontDict[name] = this._acroform.fonts[name];\r\n });\r\n this._root.data.AcroForm.data.Fields.forEach(fieldRef => {\r\n this._endChild(fieldRef);\r\n });\r\n this._root.data.AcroForm.end();\r\n }\r\n return this;\r\n },\r\n\r\n _endChild(ref) {\r\n if (Array.isArray(ref.data.Kids)) {\r\n ref.data.Kids.forEach(childRef => {\r\n this._endChild(childRef);\r\n });\r\n ref.end();\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Creates and adds a form field to the document. Form fields are intermediate\r\n * nodes in a PDF form that are used to specify form name heirarchy and form\r\n * value defaults.\r\n * @param {string} name - field name (T attribute in field dictionary)\r\n * @param {object} options - other attributes to include in field dictionary\r\n */\r\n formField(name, options = {}) {\r\n let fieldDict = this._fieldDict(name, null, options);\r\n let fieldRef = this.ref(fieldDict);\r\n this._addToParent(fieldRef);\r\n return fieldRef;\r\n },\r\n\r\n /**\r\n * Creates and adds a Form Annotation to the document. Form annotations are\r\n * called Widget annotations internally within a PDF file.\r\n * @param {string} name - form field name (T attribute of widget annotation\r\n * dictionary)\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} w\r\n * @param {number} h\r\n * @param {object} options\r\n */\r\n formAnnotation(name, type, x, y, w, h, options = {}) {\r\n let fieldDict = this._fieldDict(name, type, options);\r\n fieldDict.Subtype = 'Widget';\r\n if (fieldDict.F === undefined) {\r\n fieldDict.F = 4; // print the annotation\r\n }\r\n\r\n // Add Field annot to page, and get it's ref\r\n this.annotate(x, y, w, h, fieldDict);\r\n let annotRef = this.page.annotations[this.page.annotations.length - 1];\r\n\r\n return this._addToParent(annotRef);\r\n },\r\n\r\n formText(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'text', x, y, w, h, options);\r\n },\r\n\r\n formPushButton(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\r\n },\r\n\r\n formCombo(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'combo', x, y, w, h, options);\r\n },\r\n\r\n formList(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'list', x, y, w, h, options);\r\n },\r\n\r\n formRadioButton(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\r\n },\r\n\r\n formCheckbox(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\r\n },\r\n\r\n _addToParent(fieldRef) {\r\n let parent = fieldRef.data.Parent;\r\n if (parent) {\r\n if (!parent.data.Kids) {\r\n parent.data.Kids = [];\r\n }\r\n parent.data.Kids.push(fieldRef);\r\n } else {\r\n this._root.data.AcroForm.data.Fields.push(fieldRef);\r\n }\r\n return this;\r\n },\r\n\r\n _fieldDict(name, type, options = {}) {\r\n if (!this._acroform) {\r\n throw new Error(\r\n 'Call document.initForm() method before adding form elements to document'\r\n );\r\n }\r\n let opts = Object.assign({}, options);\r\n if (type !== null) {\r\n opts = this._resolveType(type, options);\r\n }\r\n opts = this._resolveFlags(opts);\r\n opts = this._resolveJustify(opts);\r\n opts = this._resolveFont(opts);\r\n opts = this._resolveStrings(opts);\r\n opts = this._resolveColors(opts);\r\n opts = this._resolveFormat(opts);\r\n opts.T = new String(name);\r\n if (opts.parent) {\r\n opts.Parent = opts.parent;\r\n delete opts.parent;\r\n }\r\n return opts;\r\n },\r\n\r\n _resolveType(type, opts) {\r\n if (type === 'text') {\r\n opts.FT = 'Tx';\r\n } else if (type === 'pushButton') {\r\n opts.FT = 'Btn';\r\n opts.pushButton = true;\r\n } else if (type === 'radioButton') {\r\n opts.FT = 'Btn';\r\n opts.radioButton = true;\r\n } else if (type === 'checkbox') {\r\n opts.FT = 'Btn';\r\n } else if (type === 'combo') {\r\n opts.FT = 'Ch';\r\n opts.combo = true;\r\n } else if (type === 'list') {\r\n opts.FT = 'Ch';\r\n } else {\r\n throw new Error(`Invalid form annotation type '${type}'`);\r\n }\r\n return opts;\r\n },\r\n\r\n _resolveFormat(opts) {\r\n const f = opts.format;\r\n if (f && f.type) {\r\n let fnKeystroke;\r\n let fnFormat;\r\n let params = '';\r\n if (FORMAT_SPECIAL[f.type] !== undefined) {\r\n fnKeystroke = `AFSpecial_Keystroke`;\r\n fnFormat = `AFSpecial_Format`;\r\n params = FORMAT_SPECIAL[f.type];\r\n } else {\r\n let format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\r\n fnKeystroke = `AF${format}_Keystroke`;\r\n fnFormat = `AF${format}_Format`;\r\n\r\n if (f.type === 'date') {\r\n fnKeystroke += 'Ex';\r\n params = String(f.param);\r\n } else if (f.type === 'time') {\r\n params = String(f.param);\r\n } else if (f.type === 'number') {\r\n let p = Object.assign({}, FORMAT_DEFAULT.number, f);\r\n params = String(\r\n [\r\n String(p.nDec),\r\n p.sepComma ? '0' : '1',\r\n '\"' + p.negStyle + '\"',\r\n 'null',\r\n '\"' + p.currency + '\"',\r\n String(p.currencyPrepend)\r\n ].join(',')\r\n );\r\n } else if (f.type === 'percent') {\r\n let p = Object.assign({}, FORMAT_DEFAULT.percent, f);\r\n params = String([String(p.nDec), p.sepComma ? '0' : '1'].join(','));\r\n }\r\n }\r\n opts.AA = opts.AA ? opts.AA : {};\r\n opts.AA.K = {\r\n S: 'JavaScript',\r\n JS: new String(`${fnKeystroke}(${params});`)\r\n };\r\n opts.AA.F = {\r\n S: 'JavaScript',\r\n JS: new String(`${fnFormat}(${params});`)\r\n };\r\n }\r\n delete opts.format;\r\n return opts;\r\n },\r\n\r\n _resolveColors(opts) {\r\n let color = this._normalizeColor(opts.backgroundColor);\r\n if (color) {\r\n if (!opts.MK) {\r\n opts.MK = {};\r\n }\r\n opts.MK.BG = color;\r\n }\r\n color = this._normalizeColor(opts.borderColor);\r\n if (color) {\r\n if (!opts.MK) {\r\n opts.MK = {};\r\n }\r\n opts.MK.BC = color;\r\n }\r\n delete opts.backgroundColor;\r\n delete opts.borderColor;\r\n return opts;\r\n },\r\n\r\n _resolveFlags(options) {\r\n let result = 0;\r\n Object.keys(options).forEach(key => {\r\n if (FIELD_FLAGS[key]) {\r\n if (options[key]) {\r\n result |= FIELD_FLAGS[key];\r\n }\r\n delete options[key];\r\n }\r\n });\r\n if (result !== 0) {\r\n options.Ff = options.Ff ? options.Ff : 0;\r\n options.Ff |= result;\r\n }\r\n return options;\r\n },\r\n\r\n _resolveJustify(options) {\r\n let result = 0;\r\n if (options.align !== undefined) {\r\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\r\n result = FIELD_JUSTIFY[options.align];\r\n }\r\n delete options.align;\r\n }\r\n if (result !== 0) {\r\n options.Q = result; // default\r\n }\r\n return options;\r\n },\r\n\r\n _resolveFont(options) {\r\n // add current font to document-level AcroForm dict if necessary\r\n if (this._acroform.fonts[this._font.id] === null) {\r\n this._acroform.fonts[this._font.id] = this._font.ref();\r\n }\r\n\r\n // add current font to field's resource dict (RD) if not the default acroform font\r\n if (this._acroform.defaultFont !== this._font.name) {\r\n options.DR = { Font: {} };\r\n\r\n // Get the fontSize option. If not set use auto sizing\r\n const fontSize = options.fontSize || 0;\r\n\r\n options.DR.Font[this._font.id] = this._font.ref();\r\n options.DA = new String(`/${this._font.id} ${fontSize} Tf 0 g`);\r\n }\r\n return options;\r\n },\r\n\r\n _resolveStrings(options) {\r\n let select = [];\r\n function appendChoices(a) {\r\n if (Array.isArray(a)) {\r\n for (let idx = 0; idx < a.length; idx++) {\r\n if (typeof a[idx] === 'string') {\r\n select.push(new String(a[idx]));\r\n } else {\r\n select.push(a[idx]);\r\n }\r\n }\r\n }\r\n }\r\n appendChoices(options.Opt);\r\n if (options.select) {\r\n appendChoices(options.select);\r\n delete options.select;\r\n }\r\n if (select.length) {\r\n options.Opt = select;\r\n }\r\n\r\n Object.keys(VALUE_MAP).forEach(key => {\r\n if (options[key] !== undefined) {\r\n options[VALUE_MAP[key]] = options[key];\r\n delete options[key];\r\n }\r\n });\r\n ['V', 'DV'].forEach(key => {\r\n if (typeof options[key] === 'string') {\r\n options[key] = new String(options[key]);\r\n }\r\n });\r\n\r\n if (options.MK && options.MK.CA) {\r\n options.MK.CA = new String(options.MK.CA);\r\n }\r\n if (options.label) {\r\n options.MK = options.MK ? options.MK : {};\r\n options.MK.CA = new String(options.label);\r\n delete options.label;\r\n }\r\n return options;\r\n }\r\n};\r\n","import fs from 'fs';\r\nimport CryptoJS from 'crypto-js';\r\n\r\nexport default {\r\n /**\r\n * Embed contents of `src` in PDF\r\n * @param {Buffer | ArrayBuffer | string} src input Buffer, ArrayBuffer, base64 encoded string or path to file\r\n * @param {object} options\r\n * * options.name: filename to be shown in PDF, will use `src` if none set\r\n * * options.type: filetype to be shown in PDF\r\n * * options.description: description to be shown in PDF\r\n * * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations\r\n * * options.creationDate: override creation date\r\n * * options.modifiedDate: override modified date\r\n * @returns filespec reference\r\n */\r\n file(src, options = {}) {\r\n options.name = options.name || src;\r\n\r\n const refBody = {\r\n Type: 'EmbeddedFile',\r\n Params: {}\r\n };\r\n let data;\r\n\r\n if (!src) {\r\n throw new Error('No src specified');\r\n }\r\n if (Buffer.isBuffer(src)) {\r\n data = src;\r\n } else if (src instanceof ArrayBuffer) {\r\n data = Buffer.from(new Uint8Array(src));\r\n } else {\r\n let match;\r\n if ((match = /^data:(.*?);base64,(.*)$/.exec(src))) {\r\n if (match[1]) {\r\n refBody.Subtype = match[1].replace('/', '#2F');\r\n }\r\n data = Buffer.from(match[2], 'base64');\r\n } else {\r\n data = fs.readFileSync(src);\r\n if (!data) {\r\n throw new Error(`Could not read contents of file at filepath ${src}`);\r\n }\r\n\r\n // update CreationDate and ModDate\r\n const { birthtime, ctime } = fs.statSync(src);\r\n refBody.Params.CreationDate = birthtime;\r\n refBody.Params.ModDate = ctime;\r\n }\r\n }\r\n\r\n // override creation date and modified date\r\n if (options.creationDate instanceof Date) {\r\n refBody.Params.CreationDate = options.creationDate;\r\n }\r\n if (options.modifiedDate instanceof Date) {\r\n refBody.Params.ModDate = options.modifiedDate;\r\n }\r\n // add optional subtype\r\n if (options.type) {\r\n refBody.Subtype = options.type.replace('/', '#2F');\r\n }\r\n\r\n // add checksum and size information\r\n const checksum = CryptoJS.MD5(\r\n CryptoJS.lib.WordArray.create(new Uint8Array(data))\r\n );\r\n refBody.Params.CheckSum = new String(checksum);\r\n refBody.Params.Size = data.byteLength;\r\n\r\n // save some space when embedding the same file again\r\n // if a file with the same name and metadata exists, reuse its reference\r\n let ref;\r\n if (!this._fileRegistry) this._fileRegistry = {};\r\n let file = this._fileRegistry[options.name];\r\n if (file && isEqual(refBody, file)) {\r\n ref = file.ref;\r\n } else {\r\n ref = this.ref(refBody);\r\n ref.end(data);\r\n\r\n this._fileRegistry[options.name] = { ...refBody, ref };\r\n }\r\n // add filespec for embedded file\r\n const fileSpecBody = {\r\n Type: 'Filespec',\r\n F: new String(options.name),\r\n EF: { F: ref },\r\n UF: new String(options.name)\r\n };\r\n if (options.description) {\r\n fileSpecBody.Desc = new String(options.description);\r\n }\r\n const filespec = this.ref(fileSpecBody);\r\n filespec.end();\r\n\r\n if (!options.hidden) {\r\n this.addNamedEmbeddedFile(options.name, filespec);\r\n }\r\n\r\n return filespec;\r\n }\r\n};\r\n\r\n/** check two embedded file metadata objects for equality */\r\nfunction isEqual(a, b) {\r\n return (\r\n a.Subtype === b.Subtype &&\r\n a.Params.CheckSum.toString() === b.Params.CheckSum.toString() &&\r\n a.Params.Size === b.Params.Size &&\r\n a.Params.CreationDate.getTime() === b.Params.CreationDate.getTime() &&\r\n a.Params.ModDate.getTime() === b.Params.ModDate.getTime()\r\n );\r\n}\r\n","import fs from 'fs';\r\n\r\nexport default {\r\n initPDFA(pSubset) {\r\n if (pSubset.charAt(pSubset.length - 3) === '-') {\r\n this.subset_conformance = pSubset\r\n .charAt(pSubset.length - 1)\r\n .toUpperCase();\r\n this.subset = parseInt(pSubset.charAt(pSubset.length - 2));\r\n } else {\r\n // Default to Basic conformance when user doesn't specify\r\n this.subset_conformance = 'B';\r\n this.subset = parseInt(pSubset.charAt(pSubset.length - 1));\r\n }\r\n },\r\n\r\n endSubset() {\r\n this._addPdfaMetadata();\r\n this._addColorOutputIntent();\r\n },\r\n\r\n _addColorOutputIntent() {\r\n const iccProfile = fs.readFileSync(`${__dirname}/data/sRGB_IEC61966_2_1.icc`);\r\n\r\n const colorProfileRef = this.ref({\r\n Length: iccProfile.length,\r\n N: 3\r\n });\r\n colorProfileRef.write(iccProfile);\r\n colorProfileRef.end();\r\n\r\n const intentRef = this.ref({\r\n Type: 'OutputIntent',\r\n S: 'GTS_PDFA1',\r\n Info: new String('sRGB IEC61966-2.1'),\r\n OutputConditionIdentifier: new String('sRGB IEC61966-2.1'),\r\n DestOutputProfile: colorProfileRef\r\n });\r\n intentRef.end();\r\n\r\n this._root.data.OutputIntents = [intentRef];\r\n },\r\n\r\n _getPdfaid() {\r\n return `\r\n <rdf:Description xmlns:pdfaid=\"http://www.aiim.org/pdfa/ns/id/\" rdf:about=\"\">\r\n <pdfaid:part>${this.subset}</pdfaid:part>\r\n <pdfaid:conformance>${this.subset_conformance}</pdfaid:conformance>\r\n </rdf:Description>\r\n `;\r\n },\r\n\r\n _addPdfaMetadata() {\r\n this.appendXML(this._getPdfaid());\r\n }\r\n};\r\n","\r\nexport default {\r\n\r\n initPDFUA() {\r\n this.subset = 1;\r\n },\r\n\r\n endSubset() {\r\n this._addPdfuaMetadata();\r\n },\r\n\r\n _addPdfuaMetadata() {\r\n this.appendXML(this._getPdfuaid());\r\n },\r\n\r\n _getPdfuaid() {\r\n return `\r\n <rdf:Description xmlns:pdfuaid=\"http://www.aiim.org/pdfua/ns/id/\" rdf:about=\"\">\r\n <pdfuaid:part>${this.subset}</pdfuaid:part>\r\n </rdf:Description>\r\n `;\r\n },\r\n\r\n}","import PDFA from './pdfa';\r\nimport PDFUA from './pdfua';\r\n\r\nexport default {\r\n _importSubset(subset) {\r\n Object.assign(this, subset)\r\n },\r\n\r\n initSubset(options) {\r\n\r\n switch (options.subset) {\r\n case 'PDF/A-1':\r\n case 'PDF/A-1a':\r\n case 'PDF/A-1b':\r\n case 'PDF/A-2':\r\n case 'PDF/A-2a':\r\n case 'PDF/A-2b':\r\n case 'PDF/A-3':\r\n case 'PDF/A-3a':\r\n case 'PDF/A-3b':\r\n this._importSubset(PDFA);\r\n this.initPDFA(options.subset);\r\n break;\r\n case 'PDF/UA':\r\n this._importSubset(PDFUA);\r\n this.initPDFUA();\r\n break;\r\n }\r\n }\r\n}","\r\nclass PDFMetadata {\r\n constructor() {\r\n this._metadata = `\r\n <?xpacket begin=\"\\ufeff\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\r\n <x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\r\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n `;\r\n }\r\n \r\n _closeTags() {\r\n this._metadata = this._metadata.concat(`\r\n </rdf:RDF>\r\n </x:xmpmeta>\r\n <?xpacket end=\"w\"?>\r\n `);\r\n }\r\n\r\n append(xml, newline=true) {\r\n this._metadata = this._metadata.concat(xml); \r\n if (newline)\r\n this._metadata = this._metadata.concat('\\n'); \r\n }\r\n\r\n getXML() { return this._metadata; }\r\n\r\n getLength() { return this._metadata.length; }\r\n\r\n end() {\r\n this._closeTags();\r\n this._metadata = this._metadata.trim();\r\n }\r\n}\r\n\r\nexport default PDFMetadata;","import PDFMetadata from \"../metadata\"\r\n\r\nexport default {\r\n initMetadata() {\r\n this.metadata = new PDFMetadata();\r\n },\r\n\r\n appendXML(xml, newline=true) { this.metadata.append(xml,newline); },\r\n\r\n _addInfo() {\r\n this.appendXML(`\r\n <rdf:Description rdf:about=\"\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\">\r\n <xmp:CreateDate>${this.info.CreationDate.toISOString().split('.')[0]+\"Z\"}</xmp:CreateDate>\r\n <xmp:CreatorTool>${this.info.Creator}</xmp:CreatorTool>\r\n </rdf:Description>\r\n `\r\n );\r\n\r\n if (this.info.Title || this.info.Author || this.info.Subject) {\r\n this.appendXML(`\r\n <rdf:Description rdf:about=\"\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\r\n `);\r\n \r\n if (this.info.Title) {\r\n this.appendXML(`\r\n <dc:title>\r\n <rdf:Alt>\r\n <rdf:li xml:lang=\"x-default\">${this.info.Title}</rdf:li>\r\n </rdf:Alt>\r\n </dc:title>\r\n `);\r\n }\r\n\r\n if (this.info.Author) {\r\n this.appendXML(`\r\n <dc:creator>\r\n <rdf:Seq>\r\n <rdf:li>${this.info.Author}</rdf:li>\r\n </rdf:Seq>\r\n </dc:creator>\r\n `);\r\n }\r\n\r\n if (this.info.Subject) {\r\n this.appendXML(`\r\n <dc:description>\r\n <rdf:Alt>\r\n <rdf:li xml:lang=\"x-default\">${this.info.Subject}</rdf:li>\r\n </rdf:Alt>\r\n </dc:description>\r\n `);\r\n }\r\n\r\n this.appendXML(`\r\n </rdf:Description>\r\n `);\r\n }\r\n\r\n this.appendXML(`\r\n <rdf:Description rdf:about=\"\" xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\">\r\n <pdf:Producer>${this.info.Creator}</pdf:Producer>`, false);\r\n\r\n if (this.info.Keywords) {\r\n this.appendXML(`\r\n <pdf:Keywords>${this.info.Keywords}</pdf:Keywords>`, false);\r\n }\r\n\r\n this.appendXML(`\r\n </rdf:Description>\r\n `);\r\n },\r\n\r\n endMetadata() {\r\n this._addInfo();\r\n \r\n this.metadata.end();\r\n\r\n /*\r\n Metadata was introduced in PDF 1.4, so adding it to 1.3 \r\n will likely only take up more space.\r\n */\r\n if (this.version != 1.3) {\r\n this.metadataRef = this.ref({\r\n length: this.metadata.getLength(),\r\n Type: 'Metadata',\r\n Subtype: 'XML'\r\n });\r\n this.metadataRef.compress = false;\r\n this.metadataRef.write(Buffer.from(this.metadata.getXML(), 'utf-8'));\r\n this.metadataRef.end();\r\n this._root.data.Metadata = this.metadataRef;\r\n }\r\n }\r\n}","/*\r\nPDFDocument - represents an entire PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nimport stream from 'stream';\r\nimport PDFObject from './object';\r\nimport PDFReference from './reference';\r\nimport PDFPage from './page';\r\nimport PDFNameTree from './name_tree';\r\nimport PDFSecurity from './security';\r\nimport ColorMixin from './mixins/color';\r\nimport VectorMixin from './mixins/vector';\r\nimport FontsMixin from './mixins/fonts';\r\nimport TextMixin from './mixins/text';\r\nimport ImagesMixin from './mixins/images';\r\nimport AnnotationsMixin from './mixins/annotations';\r\nimport OutlineMixin from './mixins/outline';\r\nimport MarkingsMixin from './mixins/markings';\r\nimport AcroFormMixin from './mixins/acroform';\r\nimport AttachmentsMixin from './mixins/attachments';\r\nimport LineWrapper from './line_wrapper';\r\nimport SubsetMixin from './mixins/subsets';\r\nimport MetadataMixin from './mixins/metadata';\r\n\r\nclass PDFDocument extends stream.Readable {\r\n constructor(options = {}) {\r\n super(options);\r\n this.options = options;\r\n\r\n // PDF version\r\n switch (options.pdfVersion) {\r\n case '1.4':\r\n this.version = 1.4;\r\n break;\r\n case '1.5':\r\n this.version = 1.5;\r\n break;\r\n case '1.6':\r\n this.version = 1.6;\r\n break;\r\n case '1.7':\r\n case '1.7ext3':\r\n this.version = 1.7;\r\n break;\r\n default:\r\n this.version = 1.3;\r\n break;\r\n }\r\n\r\n // Whether streams should be compressed\r\n this.compress =\r\n this.options.compress != null ? this.options.compress : true;\r\n\r\n this._pageBuffer = [];\r\n this._pageBufferStart = 0;\r\n\r\n // The PDF object store\r\n this._offsets = [];\r\n this._waiting = 0;\r\n this._ended = false;\r\n this._offset = 0;\r\n const Pages = this.ref({\r\n Type: 'Pages',\r\n Count: 0,\r\n Kids: []\r\n });\r\n\r\n const Names = this.ref({\r\n Dests: new PDFNameTree()\r\n });\r\n\r\n this._root = this.ref({\r\n Type: 'Catalog',\r\n Pages,\r\n Names\r\n });\r\n\r\n if (this.options.lang) {\r\n this._root.data.Lang = new String(this.options.lang);\r\n }\r\n\r\n // The current page\r\n this.page = null;\r\n\r\n // Initialize mixins\r\n this.initMetadata();\r\n this.initColor();\r\n this.initVector();\r\n this.initFonts(options.font);\r\n this.initText();\r\n this.initImages();\r\n this.initOutline();\r\n this.initMarkings(options);\r\n this.initSubset(options);\r\n\r\n // Initialize the metadata\r\n this.info = {\r\n Producer: 'PDFKit',\r\n Creator: 'PDFKit',\r\n CreationDate: new Date()\r\n };\r\n\r\n if (this.options.info) {\r\n for (let key in this.options.info) {\r\n const val = this.options.info[key];\r\n this.info[key] = val;\r\n }\r\n }\r\n\r\n if (this.options.displayTitle) {\r\n this._root.data.ViewerPreferences = this.ref({\r\n DisplayDocTitle: true\r\n });\r\n }\r\n\r\n // Generate file ID\r\n this._id = PDFSecurity.generateFileID(this.info);\r\n\r\n // Initialize security settings\r\n this._security = PDFSecurity.create(this, options);\r\n\r\n // Write the header\r\n // PDF version\r\n this._write(`%PDF-${this.version}`);\r\n\r\n // 4 binary chars, as recommended by the spec\r\n this._write('%\\xFF\\xFF\\xFF\\xFF');\r\n\r\n // Add the first page\r\n if (this.options.autoFirstPage !== false) {\r\n this.addPage();\r\n }\r\n }\r\n\r\n addPage(options) {\r\n if (options == null) {\r\n ({ options } = this);\r\n }\r\n\r\n // end the current page if needed\r\n if (!this.options.bufferPages) {\r\n this.flushPages();\r\n }\r\n\r\n // create a page object\r\n this.page = new PDFPage(this, options);\r\n this._pageBuffer.push(this.page);\r\n\r\n // add the page to the object store\r\n const pages = this._root.data.Pages.data;\r\n pages.Kids.push(this.page.dictionary);\r\n pages.Count++;\r\n\r\n // reset x and y coordinates\r\n this.x = this.page.margins.left;\r\n this.y = this.page.margins.top;\r\n\r\n // flip PDF coordinate system so that the origin is in\r\n // the top left rather than the bottom left\r\n this._ctm = [1, 0, 0, 1, 0, 0];\r\n this.transform(1, 0, 0, -1, 0, this.page.height);\r\n\r\n this.emit('pageAdded');\r\n\r\n return this;\r\n }\r\n\r\n continueOnNewPage(options) {\r\n const pageMarkings = this.endPageMarkings(this.page);\r\n\r\n this.addPage(options);\r\n\r\n this.initPageMarkings(pageMarkings);\r\n\r\n return this;\r\n }\r\n\r\n bufferedPageRange() {\r\n return { start: this._pageBufferStart, count: this._pageBuffer.length };\r\n }\r\n\r\n switchToPage(n) {\r\n let page;\r\n if (!(page = this._pageBuffer[n - this._pageBufferStart])) {\r\n throw new Error(\r\n `switchToPage(${n}) out of bounds, current buffer covers pages ${\r\n this._pageBufferStart\r\n } to ${this._pageBufferStart + this._pageBuffer.length - 1}`\r\n );\r\n }\r\n\r\n return (this.page = page);\r\n }\r\n\r\n flushPages() {\r\n // this local variable exists so we're future-proof against\r\n // reentrant calls to flushPages.\r\n const pages = this._pageBuffer;\r\n this._pageBuffer = [];\r\n this._pageBufferStart += pages.length;\r\n for (let page of pages) {\r\n this.endPageMarkings(page);\r\n page.end();\r\n }\r\n }\r\n\r\n addNamedDestination(name, ...args) {\r\n if (args.length === 0) {\r\n args = ['XYZ', null, null, null];\r\n }\r\n if (args[0] === 'XYZ' && args[2] !== null) {\r\n args[2] = this.page.height - args[2];\r\n }\r\n args.unshift(this.page.dictionary);\r\n this._root.data.Names.data.Dests.add(name, args);\r\n }\r\n\r\n addNamedEmbeddedFile(name, ref) {\r\n if (!this._root.data.Names.data.EmbeddedFiles) {\r\n // disabling /Limits for this tree fixes attachments not showing in Adobe Reader\r\n this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({\r\n limits: false\r\n });\r\n }\r\n\r\n // add filespec to EmbeddedFiles\r\n this._root.data.Names.data.EmbeddedFiles.add(name, ref);\r\n }\r\n\r\n addNamedJavaScript(name, js) {\r\n if (!this._root.data.Names.data.JavaScript) {\r\n this._root.data.Names.data.JavaScript = new PDFNameTree();\r\n }\r\n let data = {\r\n JS: new String(js),\r\n S: 'JavaScript'\r\n };\r\n this._root.data.Names.data.JavaScript.add(name, data);\r\n }\r\n\r\n ref(data) {\r\n const ref = new PDFReference(this, this._offsets.length + 1, data);\r\n this._offsets.push(null); // placeholder for this object's offset once it is finalized\r\n this._waiting++;\r\n return ref;\r\n }\r\n\r\n _read() {}\r\n // do nothing, but this method is required by node\r\n\r\n _write(data) {\r\n if (!Buffer.isBuffer(data)) {\r\n data = Buffer.from(data + '\\n', 'binary');\r\n }\r\n\r\n this.push(data);\r\n return (this._offset += data.length);\r\n }\r\n\r\n addContent(data) {\r\n this.page.write(data);\r\n return this;\r\n }\r\n\r\n _refEnd(ref) {\r\n this._offsets[ref.id - 1] = ref.offset;\r\n if (--this._waiting === 0 && this._ended) {\r\n this._finalize();\r\n return (this._ended = false);\r\n }\r\n }\r\n\r\n end() {\r\n this.flushPages();\r\n\r\n this._info = this.ref();\r\n for (let key in this.info) {\r\n let val = this.info[key];\r\n if (typeof val === 'string') {\r\n val = new String(val);\r\n }\r\n\r\n let entry = this.ref(val);\r\n entry.end();\r\n\r\n this._info.data[key] = entry;\r\n }\r\n\r\n this._info.end();\r\n\r\n for (let name in this._fontFamilies) {\r\n const font = this._fontFamilies[name];\r\n font.finalize();\r\n }\r\n\r\n this.endOutline();\r\n this.endMarkings();\r\n\r\n if (this.subset) {\r\n this.endSubset();\r\n }\r\n\r\n this.endMetadata();\r\n\r\n this._root.end();\r\n this._root.data.Pages.end();\r\n this._root.data.Names.end();\r\n this.endAcroForm();\r\n\r\n if (this._root.data.ViewerPreferences) {\r\n this._root.data.ViewerPreferences.end();\r\n }\r\n\r\n if (this._security) {\r\n this._security.end();\r\n }\r\n\r\n if (this._waiting === 0) {\r\n return this._finalize();\r\n } else {\r\n return (this._ended = true);\r\n }\r\n }\r\n\r\n _finalize() {\r\n // generate xref\r\n const xRefOffset = this._offset;\r\n this._write('xref');\r\n this._write(`0 ${this._offsets.length + 1}`);\r\n this._write('0000000000 65535 f ');\r\n\r\n for (let offset of this._offsets) {\r\n offset = `0000000000${offset}`.slice(-10);\r\n this._write(offset + ' 00000 n ');\r\n }\r\n\r\n // trailer\r\n const trailer = {\r\n Size: this._offsets.length + 1,\r\n Root: this._root,\r\n Info: this._info,\r\n ID: [this._id, this._id]\r\n };\r\n if (this._security) {\r\n trailer.Encrypt = this._security.dictionary;\r\n }\r\n\r\n this._write('trailer');\r\n this._write(PDFObject.convert(trailer));\r\n\r\n this._write('startxref');\r\n this._write(`${xRefOffset}`);\r\n this._write('%%EOF');\r\n\r\n // end the stream\r\n return this.push(null);\r\n }\r\n\r\n toString() {\r\n return '[object PDFDocument]';\r\n }\r\n}\r\n\r\nconst mixin = methods => {\r\n Object.assign(PDFDocument.prototype, methods);\r\n};\r\n\r\nmixin(MetadataMixin);\r\nmixin(ColorMixin);\r\nmixin(VectorMixin);\r\nmixin(FontsMixin);\r\nmixin(TextMixin);\r\nmixin(ImagesMixin);\r\nmixin(AnnotationsMixin);\r\nmixin(OutlineMixin);\r\nmixin(MarkingsMixin);\r\nmixin(AcroFormMixin);\r\nmixin(AttachmentsMixin);\r\nmixin(SubsetMixin);\r\n\r\nPDFDocument.LineWrapper = LineWrapper;\r\n\r\nexport default PDFDocument;\r\n"],"names":["PDFAbstractReference","toString","Error","PDFTree","constructor","options","_items","limits","add","key","val","get","sortedKeys","Object","keys","sort","a","b","_compareKeys","out","length","first","last","push","PDFObject","convert","_dataForKey","_keysName","join","pad","str","Array","slice","escapableRe","escapable","swapBytes","buff","l","i","end","object","encryptFn","String","string","isUnicode","charCodeAt","stringBuffer","Buffer","from","valueOf","replace","c","isBuffer","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","isArray","items","map","e","call","number","n","Math","round","PDFReference","document","id","data","gen","compress","Filter","uncompressedLength","buffer","write","chunk","Length","finalize","offset","_offset","_security","getEncryptFn","concat","zlib","deflateSync","_write","_refEnd","DEFAULT_MARGINS","top","left","bottom","right","SIZES","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","PDFPage","size","layout","margin","margins","dimensions","toUpperCase","width","height","content","ref","resources","ProcSet","dictionary","Type","Parent","_root","Pages","MediaBox","Contents","Resources","markings","fonts","Font","xobjects","XObject","ext_gstates","ExtGState","patterns","Pattern","colorSpaces","ColorSpace","annotations","Annots","structParentTreeKey","StructParents","createStructParentTreeNextKey","maxY","PDFNameTree","localeCompare","k","inRange","value","rangeGroup","startRange","endRange","middleRange","floor","arrayIndex","unassigned_code_points","isUnassignedCodePoint","character","commonly_mapped_to_nothing","isCommonlyMappedToNothing","non_ASCII_space_characters","isNonASCIISpaceCharacter","non_ASCII_controls_characters","non_character_codepoints","prohibited_characters","isProhibitedCharacter","bidirectional_r_al","isBidirectionalRAL","bidirectional_l","isBidirectionalL","mapping2space","mapping2nothing","getCodePoint","codePointAt","x","toCodePoints","input","codepoints","before","next","saslprep","opts","TypeError","mapped_input","filter","normalized_input","fromCodePoint","apply","normalize","normalized_map","hasProhibited","some","allowUnassigned","hasUnassigned","hasBidiRAL","hasBidiL","isFirstBidiRAL","isLastBidiRAL","PDFSecurity","generateFileID","info","infoStr","CreationDate","getTime","hasOwnProperty","wordArrayToBuffer","CryptoJS","MD5","generateRandomWordArray","bytes","lib","WordArray","random","create","ownerPassword","userPassword","_setupEncryption","pdfVersion","version","encDict","_setupEncryptionV1V2V4","_setupEncryptionV5","v","r","permissions","keyBits","getPermissionsR2","getPermissionsR3","paddedUserPassword","processPasswordR2R3R4","paddedOwnerPassword","ownerPasswordEntry","getOwnerPasswordR2R3R4","encryptionKey","getEncryptionKeyR2R3R4","_id","userPasswordEntry","getUserPasswordR2","getUserPasswordR3R4","V","CF","StdCF","AuthEvent","CFM","StmF","StrF","R","O","U","P","processedUserPassword","processPasswordR5","processedOwnerPassword","getEncryptionKeyR5","getUserPasswordR5","userKeySalt","words","userEncryptionKeyEntry","getUserEncryptionKeyR5","getOwnerPasswordR5","ownerKeySalt","ownerEncryptionKeyEntry","getOwnerEncryptionKeyR5","permsEntry","getEncryptedPermissionsR5","OE","UE","Perms","obj","digest","clone","sigBytes","min","RC4","encrypt","ciphertext","iv","mode","CBC","padding","Pkcs7","AES","permissionObject","printing","modifying","copying","annotating","fillingForms","contentAccessibility","documentAssembly","documentId","cipher","xorRound","ceil","j","lsbFirstWord","validationSalt","keySalt","SHA256","NoPadding","ECB","password","alloc","index","code","PASSWORD_PADDING","unescape","encodeURIComponent","wordArray","byteArray","PDFGradient","doc","stops","embedded","transform","stop","pos","color","opacity","_normalizeColor","_colorSpace","max","setTransform","m11","m12","m21","m22","dx","dy","embed","m","fn","stopsLength","matrix","bounds","encode","FunctionType","Domain","N","Functions","Bounds","Encode","_gradCount","shader","pattern","PatternType","Shading","Matrix","grad","opacityGradient","pageBBox","page","form","Subtype","FormType","BBox","Group","S","CS","Sh1","gstate","SMask","G","opacityPattern","PaintType","TilingType","XStep","YStep","Gs1","stroke","m0","m1","m2","m3","m4","m5","_ctm","_setColorSpace","op","addContent","PDFLinearGradient","x1","y1","x2","y2","ShadingType","Coords","Function","Extend","PDFRadialGradient","r1","r2","underlyingColorSpaces","PDFTilingPattern","bBox","xStep","yStep","stream","createPattern","toFixed","embedPatternColorSpaces","forEach","csName","csId","getPatternColorSpaceId","cs","underlyingColorspace","_patternCount","patternColor","normalizedColor","_getColorSpace","Gradient","initColor","_opacityRegistry","_opacityCount","charAt","hex","parseInt","namedColors","part","_setColor","_setColorCore","space","fillColor","set","fillOpacity","_fillColor","strokeColor","strokeOpacity","_doOpacity","name","ca","CA","linearGradient","radialGradient","bbox","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","cx","cy","px","py","sx","sy","parameters","A","C","H","h","L","M","Q","q","s","T","t","Z","z","parse","path","cmd","ret","args","curArg","foundDecimal","params","includes","commands","runners","moveTo","bezierCurveTo","quadraticCurveTo","solveArc","lineTo","closePath","y","coords","rx","ry","rot","large","sweep","ex","ey","segs","arcToSegments","seg","bez","segmentToBezier","rotateX","ox","oy","th","PI","sin_th","sin","cos_th","cos","abs","pl","sqrt","a00","a01","a10","a11","x0","y0","d","sfactor_sq","sfactor","xc","yc","th0","atan2","th1","th_arc","segments","result","th2","th3","th_half","x3","y3","SVGPath","KAPPA","initVector","_ctmStack","save","restore","pop","lineWidth","w","_CAP_STYLES","BUTT","ROUND","SQUARE","lineCap","_JOIN_STYLES","MITER","BEVEL","lineJoin","miterLimit","dash","originalLength","valid","every","Number","isFinite","JSON","stringify","phase","undash","cp1x","cp1y","cp2x","cp2y","cpx","cpy","rect","roundedRect","ellipse","xe","ye","xm","ym","circle","radius","arc","startAngle","endAngle","anticlockwise","TWO_PI","HALF_PI","deltaAng","dir","numSegs","segAng","handleLen","curAng","deltaCx","deltaCy","ax","ay","segIdx","polygon","points","shift","point","_windingRule","rule","test","fill","fillAndStroke","isFillRule","clip","values","translate","rotate","angle","rad","origin","scale","xFactor","yFactor","WIN_ANSI_MAP","characters","split","AFMFont","open","filename","fs","readFileSync","contents","attributes","glyphWidths","boundingBoxes","kernPairs","charWidths","char","ascender","descender","xHeight","capHeight","lineGap","section","line","match","encodeText","text","res","len","glyphsForString","glyphs","charCode","characterToGlyph","widthOfGlyph","glyph","getKernPair","advancesForGlyphs","advances","PDFFont","widthOfString","lineHeight","includeGap","gap","STANDARD_FONTS","Courier","__dirname","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Symbol","ZapfDingbats","StandardFont","font","BaseFont","Encoding","encoded","positions","xAdvance","yAdvance","xOffset","yOffset","advanceWidth","advance","isStandardFont","toHex","num","EmbeddedFont","subset","createSubset","unicode","widths","getGlyph","postscriptName","unitsPerEm","ascent","descent","fontLayoutCache","layoutCache","layoutRun","features","run","position","layoutCached","cached","onlyWidth","needle","gid","includeGlyph","codePoints","isCFF","cff","fontFile","encodeStream","on","familyClass","sFamilyClass","undefined","flags","post","isFixedPitch","head","macStyle","italic","tag","fromCharCode","descriptor","FontName","Flags","FontBBox","minX","minY","maxX","ItalicAngle","italicAngle","Ascent","Descent","CapHeight","XHeight","StemV","FontFile3","FontFile2","CIDSet","CIDSetRef","descendantFontData","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","W","CIDToGIDMap","descendantFont","DescendantFonts","ToUnicode","toUnicodeCmap","cmap","entries","chunkSize","chunks","ranges","start","PDFFontFactory","src","family","fontkit","Uint8Array","ArrayBuffer","initFonts","defaultFont","_fontFamilies","_fontCount","_fontSize","_font","_registeredFonts","cacheKey","fontSize","currentLineHeight","registerFont","SOFT_HYPHEN","HYPHEN","LineWrapper","EventEmitter","indent","characterSpacing","wordSpacing","columns","columnGap","spaceLeft","startX","startY","column","ellipsis","continuedX","once","continued","align","lastLine","paragraphGap","wordWidth","word","canFit","eachWord","bk","breaker","LineBreaker","wordWidths","nextBreak","shouldContinue","lbk","fbk","mightGrow","mustShrink","required","wrap","nextY","nextSection","textWidth","wc","lc","emitLine","wordCount","emit","lh","continueOnNewPage","initText","_line","bind","_lineGap","moveDown","lines","moveUp","_text","lineCallback","_initOptions","addStructure","structParent","struct","structType","markStructureContent","wrapper","_wrapper","_textOptions","heightOfString","Infinity","list","listType","unit","midLine","bulletRadius","textIndent","itemIndent","bulletIndent","level","levels","numbers","flatten","item","label","letter","times","drawListItem","listItem","itemType","labelType","bodyType","structTypes","diff","_fragment","assign","lineBreak","trim","spaceWidth","baseline","renderedWidth","link","goTo","destination","addNamedDestination","underline","lineY","strike","oblique","skew","encodedWord","positionsWord","hadOffset","addSegment","cur","flush","MARKERS","COLOR_SPACE_MAP","JPEG","marker","readUInt16BE","orientation","exif","fromBuffer","Orientation","bits","channels","colorSpace","BitsPerComponent","Width","Height","PNGImage","image","PNG","imgData","dataDecoded","hasAlphaChannel","isInterlaced","interlaceMethod","Predictor","Colors","colors","Columns","palette","transparency","grayscale","rgb","mask","indexed","loadIndexedAlphaChannel","splitAlphaChannel","decodeData","alphaChannel","sMask","Decode","decodePixels","pixels","p","colorCount","pixelCount","skipByteCount","colorIndex","PDFImage","exec","initImages","_imageRegistry","_imageCount","bh","bp","bw","ip","left1","rotateAngle","originX","originY","ignoreOrientation","openImage","wp","hp","fit","cover","valign","annotate","Rect","_convertRect","Border","F","Dest","note","Name","D","url","pages","Kids","URI","_markup","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","fileAnnotation","file","filespec","hidden","FS","Desc","PDFOutline","parent","title","dest","expanded","outlineData","children","addItem","endOutline","Count","First","Last","child","Prev","Next","initOutline","outline","Outlines","PageMode","PDFStructureContent","pageRef","mcid","refs","structContent","PDFStructureElement","type","_attached","_ended","_flushed","_isValidChild","lang","Lang","alt","Alt","E","actual","ActualText","_children","setParent","setAttached","_addContentToParentTree","_contentForClosure","pageStructParents","getStructParentTree","parentRef","_flush","closure","endMarkedContent","_isFlushable","K","_flushChild","Pg","MCID","PDFNumberTree","initMarkings","structChildren","tagged","getMarkInfoDictionary","Marked","getStructTreeRoot","markContent","toClose","marking","attached","Attached","structElem","structTreeRoot","initPageMarkings","pageMarkings","newStructContent","endPageMarkings","MarkInfo","StructTreeRoot","ParentTree","ParentTreeNextKey","endMarkings","FIELD_FLAGS","readOnly","noExport","multiline","toggleToOffButton","radioButton","pushButton","combo","edit","multiSelect","noSpell","FIELD_JUSTIFY","center","VALUE_MAP","defaultValue","FORMAT_SPECIAL","zip","zipPlus4","zip4","phone","ssn","FORMAT_DEFAULT","nDec","sepComma","negStyle","currency","currencyPrepend","percent","initForm","_acroform","Fields","NeedAppearances","DR","AcroForm","endAcroForm","fontDict","fieldRef","_endChild","childRef","formField","fieldDict","_fieldDict","_addToParent","formAnnotation","annotRef","formText","formPushButton","formCombo","formList","formRadioButton","formCheckbox","_resolveType","_resolveFlags","_resolveJustify","_resolveFont","_resolveStrings","_resolveColors","_resolveFormat","FT","f","format","fnKeystroke","fnFormat","param","AA","JS","backgroundColor","MK","BG","borderColor","BC","Ff","select","appendChoices","idx","Opt","refBody","Params","birthtime","ctime","statSync","ModDate","creationDate","modifiedDate","checksum","CheckSum","Size","byteLength","_fileRegistry","isEqual","fileSpecBody","EF","UF","description","addNamedEmbeddedFile","initPDFA","pSubset","subset_conformance","endSubset","_addPdfaMetadata","_addColorOutputIntent","iccProfile","colorProfileRef","intentRef","Info","OutputConditionIdentifier","DestOutputProfile","OutputIntents","_getPdfaid","appendXML","initPDFUA","_addPdfuaMetadata","_getPdfuaid","_importSubset","initSubset","PDFA","PDFUA","PDFMetadata","_metadata","_closeTags","append","xml","newline","getXML","getLength","initMetadata","metadata","_addInfo","toISOString","Creator","Title","Author","Subject","Keywords","endMetadata","metadataRef","Metadata","PDFDocument","Readable","_pageBuffer","_pageBufferStart","_offsets","_waiting","Names","Dests","Producer","displayTitle","ViewerPreferences","DisplayDocTitle","autoFirstPage","addPage","bufferPages","flushPages","bufferedPageRange","count","switchToPage","unshift","EmbeddedFiles","addNamedJavaScript","js","JavaScript","_read","_finalize","_info","entry","xRefOffset","trailer","Root","ID","Encrypt","mixin","methods","prototype","MetadataMixin","ColorMixin","VectorMixin","FontsMixin","TextMixin","ImagesMixin","AnnotationsMixin","OutlineMixin","MarkingsMixin","AcroFormMixin","AttachmentsMixin","SubsetMixin"],"mappings":"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CN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACR;AACD;;AAEA,MAAMC,qBAAqB,GAAGC,SAAS,IACrCV,OAAO,CAACU,SAAS,EAAEF,sBAAsB,CAAC;;AAE5C;AACA;AACA;AACA;AACA;AACA,MAAMG,0BAA0B,GAAG,CACjC,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP;AACD;;AAEA,MAAMC,yBAAyB,GAAGF,SAAS,IACzCV,OAAO,CAACU,SAAS,EAAEC,0BAA0B,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACA,MAAME,0BAA0B,GAAG,CACjC,MAAM,EACN,MAAM,uBACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,gBACN,MAAM,EACN,MAAM,gBACN,MAAM,EACN,MAAM,iBACN,MAAM,EACN,MAAM,iBACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,qBACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,mBACN,MAAM,EACN,MAAM,mBACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,yBACP;AACD;;AAEA,MAAMC,wBAAwB,GAAGJ,SAAS,IACxCV,OAAO,CAACU,SAAS,EAAEG,0BAA0B,CAAC;;AAEhD;AACA,MAAME,6BAA6B,GAAG;AACpC;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,iCACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,uBACN,MAAM,EACN,MAAM,4BACN,MAAM,EACN,MAAM,oBACN,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,wBACN,MAAM,EACN,MAAM,4BACN,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,6BACN,OAAO,EACP,OAAO,oCACR;AAED,MAAMC,wBAAwB,GAAG;AAC/B;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,mCACN,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,QAAQ,EACR,QAAQ,kCACT;;AAED;AACA;AACA;AACA,MAAMC,qBAAqB,GAAG;AAC5B;AACF;AACA;AACA;AACE,CAAC,EACD,MAAM,6BACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,gCACN,MAAM,EACN,MAAM,gCACN,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,+BACN,MAAM,EACN,MAAM,+BACN,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,oCACN,MAAM,EACN,MAAM,oCACN,MAAM,EACN,MAAM,qCACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,sCACN,MAAM,EACN,MAAM,yCACN,MAAM,EACN,MAAM,0CACN,MAAM,EACN,MAAM,qCACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,OAAO,EACP,OAAO,qBACP,OAAO,EACP,OAAO;AAEP;AACF;AACA;AACA;;AAEE,OAAO,EACP,OAAO,gCACP,QAAQ,EACR,QAAQ,+BACT;AACD;;AAEA,MAAMC,qBAAqB,GAAGR,SAAS,IACrCV,OAAO,CAACU,SAAS,EAAEG,0BAA0B,CAAC,IAC9Cb,OAAO,CAACU,SAAS,EAAEO,qBAAqB,CAAC,IACzCjB,OAAO,CAACU,SAAS,EAAEK,6BAA6B,CAAC,IACjDf,OAAO,CAACU,SAAS,EAAEM,wBAAwB,CAAC;;AAE9C;AACA;AACA;AACA;AACA;AACA,MAAMG,kBAAkB,GAAG,CACzB,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP;AACD;;AAEA,MAAMC,kBAAkB,GAAGV,SAAS,IAAIV,OAAO,CAACU,SAAS,EAAES,kBAAkB,CAAC;;AAE9E;AACA;AACA;AACA;AACA;AACA,MAAME,eAAe,GAAG,CACtB,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,CACT;AACD;;AAEA,MAAMC,gBAAgB,GAAGZ,SAAS,IAAIV,OAAO,CAACU,SAAS,EAAEW,eAAe,CAAC;;ACr3DzE;;AAEA;AACA;AACA;AACA;AACA,MAAME,aAAa,GAAGT,wBAAwB;;AAE9C;AACA;AACA;AACA;AACA,MAAMU,eAAe,GAAGZ,yBAAyB;;AAEjD;AACA,MAAMa,YAAY,GAAGf,SAAS,IAAIA,SAAS,CAACgB,WAAW,CAAC,CAAC,CAAC;AAC1D,MAAM/L,KAAK,GAAGgM,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM/L,IAAI,GAAG+L,CAAC,IAAIA,CAAC,CAACA,CAAC,CAACjM,MAAM,GAAG,CAAC,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkM,YAAYA,CAACC,KAAK,EAAE;EAC3B,MAAMC,UAAU,GAAG,EAAE;EACrB,MAAMtE,IAAI,GAAGqE,KAAK,CAACnM,MAAM;EAEzB,KAAK,IAAIkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4G,IAAI,EAAE5G,CAAC,IAAI,CAAC,EAAE;IAChC,MAAMmL,MAAM,GAAGF,KAAK,CAAC1K,UAAU,CAACP,CAAC,CAAC;IAElC,IAAImL,MAAM,IAAI,MAAM,IAAIA,MAAM,IAAI,MAAM,IAAIvE,IAAI,GAAG5G,CAAC,GAAG,CAAC,EAAE;MACxD,MAAMoL,IAAI,GAAGH,KAAK,CAAC1K,UAAU,CAACP,CAAC,GAAG,CAAC,CAAC;MAEpC,IAAIoL,IAAI,IAAI,MAAM,IAAIA,IAAI,IAAI,MAAM,EAAE;QACpCF,UAAU,CAACjM,IAAI,CAAC,CAACkM,MAAM,GAAG,MAAM,IAAI,KAAK,GAAGC,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;QACpEpL,CAAC,IAAI,CAAC;QACN;;;IAIJkL,UAAU,CAACjM,IAAI,CAACkM,MAAM,CAAC;;EAGzB,OAAOD,UAAU;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,QAAQA,CAACJ,KAAK,EAAEK,IAAI,GAAG,EAAE,EAAE;EAClC,IAAI,OAAOL,KAAK,KAAK,QAAQ,EAAE;IAC7B,MAAM,IAAIM,SAAS,CAAC,kBAAkB,CAAC;;EAGzC,IAAIN,KAAK,CAACnM,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,EAAE;;;;EAIX,MAAM0M,YAAY,GAAGR,YAAY,CAACC,KAAK;;GAEpCzJ,GAAG,CAACsI,SAAS,IAAKa,aAAa,CAACb,SAAS,CAAC,GAAG,IAAI,GAAGA,SAAU;;GAE9D2B,MAAM,CAAC3B,SAAS,IAAI,CAACc,eAAe,CAACd,SAAS,CAAC,CAAC;;;EAGnD,MAAM4B,gBAAgB,GAAGtL,MAAM,CAACuL,aAAa,CAC1CC,KAAK,CAAC,IAAI,EAAEJ,YAAY,CAAC,CACzBK,SAAS,CAAC,MAAM,CAAC;EAEpB,MAAMC,cAAc,GAAGd,YAAY,CAACU,gBAAgB,CAAC;;;EAGrD,MAAMK,aAAa,GAAGD,cAAc,CAACE,IAAI,CAAC1B,qBAAqB,CAAC;EAEhE,IAAIyB,aAAa,EAAE;IACjB,MAAM,IAAInO,KAAK,CACb,2EACF,CAAC;;;;EAIH,IAAI0N,IAAI,CAACW,eAAe,KAAK,IAAI,EAAE;IACjC,MAAMC,aAAa,GAAGJ,cAAc,CAACE,IAAI,CAACnC,qBAAqB,CAAC;IAEhE,IAAIqC,aAAa,EAAE;MACjB,MAAM,IAAItO,KAAK,CACb,4EACF,CAAC;;;;;;EAML,MAAMuO,UAAU,GAAGL,cAAc,CAACE,IAAI,CAACxB,kBAAkB,CAAC;EAE1D,MAAM4B,QAAQ,GAAGN,cAAc,CAACE,IAAI,CAACtB,gBAAgB,CAAC;;;;EAItD,IAAIyB,UAAU,IAAIC,QAAQ,EAAE;IAC1B,MAAM,IAAIxO,KAAK,CACb,8DAA8D,GAC5D,oDACJ,CAAC;;;;AAIL;AACA;AACA;AACA;;EAEE,MAAMyO,cAAc,GAAG7B,kBAAkB,CACvCK,YAAY,CAAC9L,KAAK,CAAC2M,gBAAgB,CAAC,CACtC,CAAC;EACD,MAAMY,aAAa,GAAG9B,kBAAkB,CACtCK,YAAY,CAAC7L,IAAI,CAAC0M,gBAAgB,CAAC,CACrC,CAAC;EAED,IAAIS,UAAU,IAAI,EAAEE,cAAc,IAAIC,aAAa,CAAC,EAAE;IACpD,MAAM,IAAI1O,KAAK,CACb,kEAAkE,GAChE,6EACJ,CAAC;;EAGH,OAAO8N,gBAAgB;AACzB;;AChJA;AACA;AACA;AACA;AAKA,MAAMa,WAAW,CAAC;EAChB,OAAOC,cAAcA,CAACC,IAAI,GAAG,EAAE,EAAE;IAC/B,IAAIC,OAAO,GAAI,GAAED,IAAI,CAACE,YAAY,CAACC,OAAO,EAAG,IAAG;IAEhD,KAAK,IAAIzO,GAAG,IAAIsO,IAAI,EAAE;;MAEpB,IAAI,CAACA,IAAI,CAACI,cAAc,CAAC1O,GAAG,CAAC,EAAE;QAC7B;;MAEFuO,OAAO,IAAK,GAAEvO,GAAI,KAAIsO,IAAI,CAACtO,GAAG,CAAC,CAACwC,OAAO,EAAG,IAAG;;IAG/C,OAAOmM,iBAAiB,CAACC,QAAQ,CAACC,GAAG,CAACN,OAAO,CAAC,CAAC;;EAGjD,OAAOO,uBAAuBA,CAACC,KAAK,EAAE;IACpC,OAAOH,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACC,MAAM,CAACH,KAAK,CAAC;;EAG7C,OAAOI,MAAMA,CAACtL,QAAQ,EAAEjE,OAAO,GAAG,EAAE,EAAE;IACpC,IAAI,CAACA,OAAO,CAACwP,aAAa,IAAI,CAACxP,OAAO,CAACyP,YAAY,EAAE;MACnD,OAAO,IAAI;;IAEb,OAAO,IAAIjB,WAAW,CAACvK,QAAQ,EAAEjE,OAAO,CAAC;;EAG3CD,WAAWA,CAACkE,QAAQ,EAAEjE,OAAO,GAAG,EAAE,EAAE;IAClC,IAAI,CAACA,OAAO,CAACwP,aAAa,IAAI,CAACxP,OAAO,CAACyP,YAAY,EAAE;MACnD,MAAM,IAAI5P,KAAK,CAAC,sDAAsD,CAAC;;IAGzE,IAAI,CAACoE,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACyL,gBAAgB,CAAC1P,OAAO,CAAC;;EAGhC0P,gBAAgBA,CAAC1P,OAAO,EAAE;IACxB,QAAQA,OAAO,CAAC2P,UAAU;MACxB,KAAK,KAAK;MACV,KAAK,KAAK;QACR,IAAI,CAACC,OAAO,GAAG,CAAC;QAChB;MACF,KAAK,KAAK;MACV,KAAK,KAAK;QACR,IAAI,CAACA,OAAO,GAAG,CAAC;QAChB;MACF,KAAK,SAAS;QACZ,IAAI,CAACA,OAAO,GAAG,CAAC;QAChB;MACF;QACE,IAAI,CAACA,OAAO,GAAG,CAAC;QAChB;;IAGJ,MAAMC,OAAO,GAAG;MACdvL,MAAM,EAAE;KACT;IAED,QAAQ,IAAI,CAACsL,OAAO;MAClB,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,IAAI,CAACE,sBAAsB,CAAC,IAAI,CAACF,OAAO,EAAEC,OAAO,EAAE7P,OAAO,CAAC;QAC3D;MACF,KAAK,CAAC;QACJ,IAAI,CAAC+P,kBAAkB,CAACF,OAAO,EAAE7P,OAAO,CAAC;QACzC;;IAGJ,IAAI,CAACyJ,UAAU,GAAG,IAAI,CAACxF,QAAQ,CAACqF,GAAG,CAACuG,OAAO,CAAC;;EAG9CC,sBAAsBA,CAACE,CAAC,EAAEH,OAAO,EAAE7P,OAAO,EAAE;IAC1C,IAAIiQ,CAAC,EAAEC,WAAW;IAClB,QAAQF,CAAC;MACP,KAAK,CAAC;QACJC,CAAC,GAAG,CAAC;QACL,IAAI,CAACE,OAAO,GAAG,EAAE;QACjBD,WAAW,GAAGE,gBAAgB,CAACpQ,OAAO,CAACkQ,WAAW,CAAC;QACnD;MACF,KAAK,CAAC;QACJD,CAAC,GAAG,CAAC;QACL,IAAI,CAACE,OAAO,GAAG,GAAG;QAClBD,WAAW,GAAGG,gBAAgB,CAACrQ,OAAO,CAACkQ,WAAW,CAAC;QACnD;MACF,KAAK,CAAC;QACJD,CAAC,GAAG,CAAC;QACL,IAAI,CAACE,OAAO,GAAG,GAAG;QAClBD,WAAW,GAAGG,gBAAgB,CAACrQ,OAAO,CAACkQ,WAAW,CAAC;QACnD;;IAGJ,MAAMI,kBAAkB,GAAGC,qBAAqB,CAACvQ,OAAO,CAACyP,YAAY,CAAC;IACtE,MAAMe,mBAAmB,GAAGxQ,OAAO,CAACwP,aAAa,GAC7Ce,qBAAqB,CAACvQ,OAAO,CAACwP,aAAa,CAAC,GAC5Cc,kBAAkB;IAEtB,MAAMG,kBAAkB,GAAGC,sBAAsB,CAC/CT,CAAC,EACD,IAAI,CAACE,OAAO,EACZG,kBAAkB,EAClBE,mBACF,CAAC;IACD,IAAI,CAACG,aAAa,GAAGC,sBAAsB,CACzCX,CAAC,EACD,IAAI,CAACE,OAAO,EACZ,IAAI,CAAClM,QAAQ,CAAC4M,GAAG,EACjBP,kBAAkB,EAClBG,kBAAkB,EAClBP,WACF,CAAC;IACD,IAAIY,iBAAiB;IACrB,IAAIb,CAAC,KAAK,CAAC,EAAE;MACXa,iBAAiB,GAAGC,iBAAiB,CAAC,IAAI,CAACJ,aAAa,CAAC;KAC1D,MAAM;MACLG,iBAAiB,GAAGE,mBAAmB,CACrC,IAAI,CAAC/M,QAAQ,CAAC4M,GAAG,EACjB,IAAI,CAACF,aACP,CAAC;;IAGHd,OAAO,CAACoB,CAAC,GAAGjB,CAAC;IACb,IAAIA,CAAC,IAAI,CAAC,EAAE;MACVH,OAAO,CAAClL,MAAM,GAAG,IAAI,CAACwL,OAAO;;IAE/B,IAAIH,CAAC,KAAK,CAAC,EAAE;MACXH,OAAO,CAACqB,EAAE,GAAG;QACXC,KAAK,EAAE;UACLC,SAAS,EAAE,SAAS;UACpBC,GAAG,EAAE,OAAO;UACZ1M,MAAM,EAAE,IAAI,CAACwL,OAAO,GAAG;;OAE1B;MACDN,OAAO,CAACyB,IAAI,GAAG,OAAO;MACtBzB,OAAO,CAAC0B,IAAI,GAAG,OAAO;;IAExB1B,OAAO,CAAC2B,CAAC,GAAGvB,CAAC;IACbJ,OAAO,CAAC4B,CAAC,GAAG1C,iBAAiB,CAAC0B,kBAAkB,CAAC;IACjDZ,OAAO,CAAC6B,CAAC,GAAG3C,iBAAiB,CAAC+B,iBAAiB,CAAC;IAChDjB,OAAO,CAAC8B,CAAC,GAAGzB,WAAW;;EAGzBH,kBAAkBA,CAACF,OAAO,EAAE7P,OAAO,EAAE;IACnC,IAAI,CAACmQ,OAAO,GAAG,GAAG;IAClB,MAAMD,WAAW,GAAGG,gBAAgB,CAACrQ,OAAO,CAACkQ,WAAW,CAAC;IAEzD,MAAM0B,qBAAqB,GAAGC,iBAAiB,CAAC7R,OAAO,CAACyP,YAAY,CAAC;IACrE,MAAMqC,sBAAsB,GAAG9R,OAAO,CAACwP,aAAa,GAChDqC,iBAAiB,CAAC7R,OAAO,CAACwP,aAAa,CAAC,GACxCoC,qBAAqB;IAEzB,IAAI,CAACjB,aAAa,GAAGoB,kBAAkB,CACrCvD,WAAW,CAACU,uBACd,CAAC;IACD,MAAM4B,iBAAiB,GAAGkB,iBAAiB,CACzCJ,qBAAqB,EACrBpD,WAAW,CAACU,uBACd,CAAC;IACD,MAAM+C,WAAW,GAAGjD,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAC/CuB,iBAAiB,CAACoB,KAAK,CAACvQ,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACrC,CACF,CAAC;IACD,MAAMwQ,sBAAsB,GAAGC,sBAAsB,CACnDR,qBAAqB,EACrBK,WAAW,EACX,IAAI,CAACtB,aACP,CAAC;IACD,MAAMF,kBAAkB,GAAG4B,kBAAkB,CAC3CP,sBAAsB,EACtBhB,iBAAiB,EACjBtC,WAAW,CAACU,uBACd,CAAC;IACD,MAAMoD,YAAY,GAAGtD,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAChDkB,kBAAkB,CAACyB,KAAK,CAACvQ,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CACF,CAAC;IACD,MAAM4Q,uBAAuB,GAAGC,uBAAuB,CACrDV,sBAAsB,EACtBQ,YAAY,EACZxB,iBAAiB,EACjB,IAAI,CAACH,aACP,CAAC;IACD,MAAM8B,UAAU,GAAGC,yBAAyB,CAC1CxC,WAAW,EACX,IAAI,CAACS,aAAa,EAClBnC,WAAW,CAACU,uBACd,CAAC;IAEDW,OAAO,CAACoB,CAAC,GAAG,CAAC;IACbpB,OAAO,CAAClL,MAAM,GAAG,IAAI,CAACwL,OAAO;IAC7BN,OAAO,CAACqB,EAAE,GAAG;MACXC,KAAK,EAAE;QACLC,SAAS,EAAE,SAAS;QACpBC,GAAG,EAAE,OAAO;QACZ1M,MAAM,EAAE,IAAI,CAACwL,OAAO,GAAG;;KAE1B;IACDN,OAAO,CAACyB,IAAI,GAAG,OAAO;IACtBzB,OAAO,CAAC0B,IAAI,GAAG,OAAO;IACtB1B,OAAO,CAAC2B,CAAC,GAAG,CAAC;IACb3B,OAAO,CAAC4B,CAAC,GAAG1C,iBAAiB,CAAC0B,kBAAkB,CAAC;IACjDZ,OAAO,CAAC8C,EAAE,GAAG5D,iBAAiB,CAACwD,uBAAuB,CAAC;IACvD1C,OAAO,CAAC6B,CAAC,GAAG3C,iBAAiB,CAAC+B,iBAAiB,CAAC;IAChDjB,OAAO,CAAC+C,EAAE,GAAG7D,iBAAiB,CAACoD,sBAAsB,CAAC;IACtDtC,OAAO,CAAC8B,CAAC,GAAGzB,WAAW;IACvBL,OAAO,CAACgD,KAAK,GAAG9D,iBAAiB,CAAC0D,UAAU,CAAC;;EAG/CzN,YAAYA,CAAC8N,GAAG,EAAE1O,GAAG,EAAE;IACrB,IAAI2O,MAAM;IACV,IAAI,IAAI,CAACnD,OAAO,GAAG,CAAC,EAAE;MACpBmD,MAAM,GAAG,IAAI,CAACpC,aAAa,CACxBqC,KAAK,EAAE,CACP/N,MAAM,CACL+J,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAC3B,CACG,CAACuD,GAAG,GAAG,IAAI,KAAK,EAAE,GAChB,CAACA,GAAG,GAAG,MAAM,KAAK,CAAE,GACnBA,GAAG,IAAI,CAAC,GAAI,MAAO,GACpB1O,GAAG,GAAG,IAAK,EACd,CAACA,GAAG,GAAG,MAAM,KAAK,EAAE,CACrB,EACD,CACF,CACF,CAAC;;IAGL,IAAI,IAAI,CAACwL,OAAO,KAAK,CAAC,IAAI,IAAI,CAACA,OAAO,KAAK,CAAC,EAAE;MAC5C,IAAIxP,GAAG,GAAG4O,QAAQ,CAACC,GAAG,CAAC8D,MAAM,CAAC;MAC9B3S,GAAG,CAAC6S,QAAQ,GAAGnP,IAAI,CAACoP,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;MACjD,OAAO3L,MAAM,IACXuK,iBAAiB,CACfC,QAAQ,CAACmE,GAAG,CAACC,OAAO,CAACpE,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC/K,MAAM,CAAC,EAAEpE,GAAG,CAAC,CAC7DiT,UACL,CAAC;;IAGL,IAAIjT,GAAG;IACP,IAAI,IAAI,CAACwP,OAAO,KAAK,CAAC,EAAE;MACtBxP,GAAG,GAAG4O,QAAQ,CAACC,GAAG,CAChB8D,MAAM,CAAC9N,MAAM,CAAC+J,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAC9D,CAAC;KACF,MAAM;MACLnP,GAAG,GAAG,IAAI,CAACuQ,aAAa;;IAG1B,MAAM2C,EAAE,GAAG9E,WAAW,CAACU,uBAAuB,CAAC,EAAE,CAAC;IAClD,MAAMlP,OAAO,GAAG;MACduT,IAAI,EAAEvE,QAAQ,CAACuE,IAAI,CAACC,GAAG;MACvBC,OAAO,EAAEzE,QAAQ,CAACxN,GAAG,CAACkS,KAAK;MAC3BJ;KACD;IAED,OAAO9O,MAAM,IACXuK,iBAAiB,CACfuE,EAAE,CACCN,KAAK,EAAE,CACP/N,MAAM,CACL+J,QAAQ,CAAC2E,GAAG,CAACP,OAAO,CAClBpE,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC/K,MAAM,CAAC,EACrCpE,GAAG,EACHJ,OACF,CAAC,CAACqT,UACJ,CACJ,CAAC;;EAGLnR,GAAGA,GAAG;IACJ,IAAI,CAACuH,UAAU,CAACvH,GAAG,EAAE;;AAEzB;AAEA,SAASkO,gBAAgBA,CAACwD,gBAAgB,GAAG,EAAE,EAAE;EAC/C,IAAI1D,WAAW,GAAG,UAAU,IAAI,CAAC;EACjC,IAAI0D,gBAAgB,CAACC,QAAQ,EAAE;IAC7B3D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACE,SAAS,EAAE;IAC9B5D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACG,OAAO,EAAE;IAC5B7D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACI,UAAU,EAAE;IAC/B9D,WAAW,IAAI,cAAc;;EAE/B,OAAOA,WAAW;AACpB;AAEA,SAASG,gBAAgBA,CAACuD,gBAAgB,GAAG,EAAE,EAAE;EAC/C,IAAI1D,WAAW,GAAG,UAAU,IAAI,CAAC;EACjC,IAAI0D,gBAAgB,CAACC,QAAQ,KAAK,eAAe,EAAE;IACjD3D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACC,QAAQ,KAAK,gBAAgB,EAAE;IAClD3D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACE,SAAS,EAAE;IAC9B5D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACG,OAAO,EAAE;IAC5B7D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACI,UAAU,EAAE;IAC/B9D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACK,YAAY,EAAE;IACjC/D,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACM,oBAAoB,EAAE;IACzChE,WAAW,IAAI,cAAc;;EAE/B,IAAI0D,gBAAgB,CAACO,gBAAgB,EAAE;IACrCjE,WAAW,IAAI,cAAc;;EAE/B,OAAOA,WAAW;AACpB;AAEA,SAASa,iBAAiBA,CAACJ,aAAa,EAAE;EACxC,OAAO3B,QAAQ,CAACmE,GAAG,CAACC,OAAO,CAAC7C,qBAAqB,EAAE,EAAEI,aAAa,CAAC,CAChE0C,UAAU;AACf;AAEA,SAASrC,mBAAmBA,CAACoD,UAAU,EAAEzD,aAAa,EAAE;EACtD,MAAMvQ,GAAG,GAAGuQ,aAAa,CAACqC,KAAK,EAAE;EACjC,IAAIqB,MAAM,GAAGrF,QAAQ,CAACC,GAAG,CACvBsB,qBAAqB,EAAE,CAACtL,MAAM,CAAC+J,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC6E,UAAU,CAAC,CAC1E,CAAC;EACD,KAAK,IAAInS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;IAC3B,MAAMqS,QAAQ,GAAGxQ,IAAI,CAACyQ,IAAI,CAACnU,GAAG,CAAC6S,QAAQ,GAAG,CAAC,CAAC;IAC5C,KAAK,IAAIuB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,QAAQ,EAAEE,CAAC,EAAE,EAAE;MACjCpU,GAAG,CAAC8R,KAAK,CAACsC,CAAC,CAAC,GACV7D,aAAa,CAACuB,KAAK,CAACsC,CAAC,CAAC,IAAIvS,CAAC,GAAIA,CAAC,IAAI,CAAE,GAAIA,CAAC,IAAI,EAAG,GAAIA,CAAC,IAAI,EAAG,CAAC;;IAEnEoS,MAAM,GAAGrF,QAAQ,CAACmE,GAAG,CAACC,OAAO,CAACiB,MAAM,EAAEjU,GAAG,CAAC,CAACiT,UAAU;;EAEvD,OAAOgB,MAAM,CAACpP,MAAM,CAAC+J,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC/D;AAEA,SAASmB,sBAAsBA,CAC7BT,CAAC,EACDE,OAAO,EACPG,kBAAkB,EAClBE,mBAAmB,EACnB;EACA,IAAIuC,MAAM,GAAGvC,mBAAmB;EAChC,IAAIzM,KAAK,GAAGkM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;EAC3B,KAAK,IAAIhO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8B,KAAK,EAAE9B,CAAC,EAAE,EAAE;IAC9B8Q,MAAM,GAAG/D,QAAQ,CAACC,GAAG,CAAC8D,MAAM,CAAC;;EAG/B,MAAM3S,GAAG,GAAG2S,MAAM,CAACC,KAAK,EAAE;EAC1B5S,GAAG,CAAC6S,QAAQ,GAAG9C,OAAO,GAAG,CAAC;EAC1B,IAAIkE,MAAM,GAAG/D,kBAAkB;EAC/BvM,KAAK,GAAGkM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;EACvB,KAAK,IAAIhO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8B,KAAK,EAAE9B,CAAC,EAAE,EAAE;IAC9B,MAAMqS,QAAQ,GAAGxQ,IAAI,CAACyQ,IAAI,CAACnU,GAAG,CAAC6S,QAAQ,GAAG,CAAC,CAAC;IAC5C,KAAK,IAAIuB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,QAAQ,EAAEE,CAAC,EAAE,EAAE;MACjCpU,GAAG,CAAC8R,KAAK,CAACsC,CAAC,CAAC,GAAGzB,MAAM,CAACb,KAAK,CAACsC,CAAC,CAAC,IAAIvS,CAAC,GAAIA,CAAC,IAAI,CAAE,GAAIA,CAAC,IAAI,EAAG,GAAIA,CAAC,IAAI,EAAG,CAAC;;IAEzEoS,MAAM,GAAGrF,QAAQ,CAACmE,GAAG,CAACC,OAAO,CAACiB,MAAM,EAAEjU,GAAG,CAAC,CAACiT,UAAU;;EAEvD,OAAOgB,MAAM;AACf;AAEA,SAASzD,sBAAsBA,CAC7BX,CAAC,EACDE,OAAO,EACPiE,UAAU,EACV9D,kBAAkB,EAClBG,kBAAkB,EAClBP,WAAW,EACX;EACA,IAAI9P,GAAG,GAAGkQ,kBAAkB,CACzB0C,KAAK,EAAE,CACP/N,MAAM,CAACwL,kBAAkB,CAAC,CAC1BxL,MAAM,CAAC+J,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC,CAACkF,YAAY,CAACvE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACrEjL,MAAM,CAAC+J,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC6E,UAAU,CAAC,CAAC;EACpD,MAAMrQ,KAAK,GAAGkM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,KAAK,IAAIhO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8B,KAAK,EAAE9B,CAAC,EAAE,EAAE;IAC9B7B,GAAG,GAAG4O,QAAQ,CAACC,GAAG,CAAC7O,GAAG,CAAC;IACvBA,GAAG,CAAC6S,QAAQ,GAAG9C,OAAO,GAAG,CAAC;;EAE5B,OAAO/P,GAAG;AACZ;AAEA,SAAS4R,iBAAiBA,CAACJ,qBAAqB,EAAE1C,uBAAuB,EAAE;EACzE,MAAMwF,cAAc,GAAGxF,uBAAuB,CAAC,CAAC,CAAC;EACjD,MAAMyF,OAAO,GAAGzF,uBAAuB,CAAC,CAAC,CAAC;EAC1C,OAAOF,QAAQ,CAAC4F,MAAM,CAAChD,qBAAqB,CAACoB,KAAK,EAAE,CAAC/N,MAAM,CAACyP,cAAc,CAAC,CAAC,CACzEzP,MAAM,CAACyP,cAAc,CAAC,CACtBzP,MAAM,CAAC0P,OAAO,CAAC;AACpB;AAEA,SAASvC,sBAAsBA,CAC7BR,qBAAqB,EACrBK,WAAW,EACXtB,aAAa,EACb;EACA,MAAMvQ,GAAG,GAAG4O,QAAQ,CAAC4F,MAAM,CACzBhD,qBAAqB,CAACoB,KAAK,EAAE,CAAC/N,MAAM,CAACgN,WAAW,CAClD,CAAC;EACD,MAAMjS,OAAO,GAAG;IACduT,IAAI,EAAEvE,QAAQ,CAACuE,IAAI,CAACC,GAAG;IACvBC,OAAO,EAAEzE,QAAQ,CAACxN,GAAG,CAACqT,SAAS;IAC/BvB,EAAE,EAAEtE,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC,IAAI,EAAE,EAAE;GAC3C;EACD,OAAOP,QAAQ,CAAC2E,GAAG,CAACP,OAAO,CAACzC,aAAa,EAAEvQ,GAAG,EAAEJ,OAAO,CAAC,CAACqT,UAAU;AACrE;AAEA,SAAShB,kBAAkBA,CACzBP,sBAAsB,EACtBhB,iBAAiB,EACjB5B,uBAAuB,EACvB;EACA,MAAMwF,cAAc,GAAGxF,uBAAuB,CAAC,CAAC,CAAC;EACjD,MAAMyF,OAAO,GAAGzF,uBAAuB,CAAC,CAAC,CAAC;EAC1C,OAAOF,QAAQ,CAAC4F,MAAM,CACpB9C,sBAAsB,CACnBkB,KAAK,EAAE,CACP/N,MAAM,CAACyP,cAAc,CAAC,CACtBzP,MAAM,CAAC6L,iBAAiB,CAC7B,CAAC,CACE7L,MAAM,CAACyP,cAAc,CAAC,CACtBzP,MAAM,CAAC0P,OAAO,CAAC;AACpB;AAEA,SAASnC,uBAAuBA,CAC9BV,sBAAsB,EACtBQ,YAAY,EACZxB,iBAAiB,EACjBH,aAAa,EACb;EACA,MAAMvQ,GAAG,GAAG4O,QAAQ,CAAC4F,MAAM,CACzB9C,sBAAsB,CACnBkB,KAAK,EAAE,CACP/N,MAAM,CAACqN,YAAY,CAAC,CACpBrN,MAAM,CAAC6L,iBAAiB,CAC7B,CAAC;EACD,MAAM9Q,OAAO,GAAG;IACduT,IAAI,EAAEvE,QAAQ,CAACuE,IAAI,CAACC,GAAG;IACvBC,OAAO,EAAEzE,QAAQ,CAACxN,GAAG,CAACqT,SAAS;IAC/BvB,EAAE,EAAEtE,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC,IAAI,EAAE,EAAE;GAC3C;EACD,OAAOP,QAAQ,CAAC2E,GAAG,CAACP,OAAO,CAACzC,aAAa,EAAEvQ,GAAG,EAAEJ,OAAO,CAAC,CAACqT,UAAU;AACrE;AAEA,SAAStB,kBAAkBA,CAAC7C,uBAAuB,EAAE;EACnD,OAAOA,uBAAuB,CAAC,EAAE,CAAC;AACpC;AAEA,SAASwD,yBAAyBA,CAChCxC,WAAW,EACXS,aAAa,EACbzB,uBAAuB,EACvB;EACA,MAAMmF,MAAM,GAAGrF,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAC1C,CAACkF,YAAY,CAACvE,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,EACnD,EACF,CAAC,CAACjL,MAAM,CAACiK,uBAAuB,CAAC,CAAC,CAAC,CAAC;EACpC,MAAMlP,OAAO,GAAG;IACduT,IAAI,EAAEvE,QAAQ,CAACuE,IAAI,CAACuB,GAAG;IACvBrB,OAAO,EAAEzE,QAAQ,CAACxN,GAAG,CAACqT;GACvB;EACD,OAAO7F,QAAQ,CAAC2E,GAAG,CAACP,OAAO,CAACiB,MAAM,EAAE1D,aAAa,EAAE3Q,OAAO,CAAC,CAACqT,UAAU;AACxE;AAEA,SAAS9C,qBAAqBA,CAACwE,QAAQ,GAAG,EAAE,EAAE;EAC5C,MAAMjU,GAAG,GAAG4B,MAAM,CAACsS,KAAK,CAAC,EAAE,CAAC;EAC5B,MAAMjU,MAAM,GAAGgU,QAAQ,CAAChU,MAAM;EAC9B,IAAIkU,KAAK,GAAG,CAAC;EACb,OAAOA,KAAK,GAAGlU,MAAM,IAAIkU,KAAK,GAAG,EAAE,EAAE;IACnC,MAAMC,IAAI,GAAGH,QAAQ,CAACvS,UAAU,CAACyS,KAAK,CAAC;IACvC,IAAIC,IAAI,GAAG,IAAI,EAAE;MACf,MAAM,IAAIrV,KAAK,CAAC,mDAAmD,CAAC;;IAEtEiB,GAAG,CAACmU,KAAK,CAAC,GAAGC,IAAI;IACjBD,KAAK,EAAE;;EAET,OAAOA,KAAK,GAAG,EAAE,EAAE;IACjBnU,GAAG,CAACmU,KAAK,CAAC,GAAGE,gBAAgB,CAACF,KAAK,GAAGlU,MAAM,CAAC;IAC7CkU,KAAK,EAAE;;EAET,OAAOjG,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAACzO,GAAG,CAAC;AAC3C;AAEA,SAAS+Q,iBAAiBA,CAACkD,QAAQ,GAAG,EAAE,EAAE;EACxCA,QAAQ,GAAGK,QAAQ,CAACC,kBAAkB,CAAC/H,QAAQ,CAACyH,QAAQ,CAAC,CAAC,CAAC;EAC3D,MAAMhU,MAAM,GAAG+C,IAAI,CAACoP,GAAG,CAAC,GAAG,EAAE6B,QAAQ,CAAChU,MAAM,CAAC;EAC7C,MAAMD,GAAG,GAAG4B,MAAM,CAACsS,KAAK,CAACjU,MAAM,CAAC;EAEhC,KAAK,IAAIkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlB,MAAM,EAAEkB,CAAC,EAAE,EAAE;IAC/BnB,GAAG,CAACmB,CAAC,CAAC,GAAG8S,QAAQ,CAACvS,UAAU,CAACP,CAAC,CAAC;;EAGjC,OAAO+M,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAACzO,GAAG,CAAC;AAC3C;AAEA,SAAS2T,YAAYA,CAACtQ,IAAI,EAAE;EAC1B,OACG,CAACA,IAAI,GAAG,IAAI,KAAK,EAAE,GACnB,CAACA,IAAI,GAAG,MAAM,KAAK,CAAE,GACpBA,IAAI,IAAI,CAAC,GAAI,MAAO,GACpBA,IAAI,IAAI,EAAE,GAAI,IAAK;AAEzB;AAEA,SAAS4K,iBAAiBA,CAACuG,SAAS,EAAE;EACpC,MAAMC,SAAS,GAAG,EAAE;EACpB,KAAK,IAAItT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqT,SAAS,CAACrC,QAAQ,EAAEhR,CAAC,EAAE,EAAE;IAC3CsT,SAAS,CAACrU,IAAI,CACXoU,SAAS,CAACpD,KAAK,CAACpO,IAAI,CAAC6H,KAAK,CAAC1J,CAAC,GAAG,CAAC,CAAC,CAAC,IAAK,CAAC,IAAI,CAAC,GAAIA,CAAC,GAAG,CAAE,CAAE,GAAI,IAChE,CAAC;;EAEH,OAAOS,MAAM,CAACC,IAAI,CAAC4S,SAAS,CAAC;AAC/B;AAEA,MAAMJ,gBAAgB,GAAG,CACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL;;AC3iBD,MAAM;EAAEvR;AAAO,CAAC,GAAGzC,SAAS;AAE5B,MAAMqU,WAAW,CAAC;EAChBzV,WAAWA,CAAC0V,GAAG,EAAE;IACf,IAAI,CAACA,GAAG,GAAGA,GAAG;IACd,IAAI,CAACC,KAAK,GAAG,EAAE;IACf,IAAI,CAACC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;EAGrCC,IAAIA,CAACC,GAAG,EAAEC,KAAK,EAAEC,OAAO,EAAE;IACxB,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAG,CAAC;;IAEbD,KAAK,GAAG,IAAI,CAACN,GAAG,CAACQ,eAAe,CAACF,KAAK,CAAC;IAEvC,IAAI,IAAI,CAACL,KAAK,CAAC3U,MAAM,KAAK,CAAC,EAAE;MAC3B,IAAIgV,KAAK,CAAChV,MAAM,KAAK,CAAC,EAAE;QACtB,IAAI,CAACmV,WAAW,GAAG,WAAW;OAC/B,MAAM,IAAIH,KAAK,CAAChV,MAAM,KAAK,CAAC,EAAE;QAC7B,IAAI,CAACmV,WAAW,GAAG,YAAY;OAChC,MAAM,IAAIH,KAAK,CAAChV,MAAM,KAAK,CAAC,EAAE;QAC7B,IAAI,CAACmV,WAAW,GAAG,YAAY;OAChC,MAAM;QACL,MAAM,IAAIrW,KAAK,CAAC,qBAAqB,CAAC;;KAEzC,MAAM,IACJ,IAAI,CAACqW,WAAW,KAAK,WAAW,IAAIH,KAAK,CAAChV,MAAM,KAAK,CAAC,IACtD,IAAI,CAACmV,WAAW,KAAK,YAAY,IAAIH,KAAK,CAAChV,MAAM,KAAK,CAAE,IACxD,IAAI,CAACmV,WAAW,KAAK,YAAY,IAAIH,KAAK,CAAChV,MAAM,KAAK,CAAE,EACzD;MACA,MAAM,IAAIlB,KAAK,CAAC,kDAAkD,CAAC;;IAGrEmW,OAAO,GAAGlS,IAAI,CAACqS,GAAG,CAAC,CAAC,EAAErS,IAAI,CAACoP,GAAG,CAAC,CAAC,EAAE8C,OAAO,CAAC,CAAC;IAC3C,IAAI,CAACN,KAAK,CAACxU,IAAI,CAAC,CAAC4U,GAAG,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI;;EAGbI,YAAYA,CAACC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAE,EAAEC,EAAE,EAAE;IACvC,IAAI,CAACd,SAAS,GAAG,CAACS,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAE,EAAEC,EAAE,CAAC;IAC7C,OAAO,IAAI;;EAGbC,KAAKA,CAACC,CAAC,EAAE;IACP,IAAIC,EAAE;IACN,MAAMC,WAAW,GAAG,IAAI,CAACpB,KAAK,CAAC3U,MAAM;IACrC,IAAI+V,WAAW,KAAK,CAAC,EAAE;MACrB;;IAEF,IAAI,CAACnB,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACoB,MAAM,GAAGH,CAAC;;;IAGf,MAAM3V,IAAI,GAAG,IAAI,CAACyU,KAAK,CAACoB,WAAW,GAAG,CAAC,CAAC;IACxC,IAAI7V,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;MACf,IAAI,CAACyU,KAAK,CAACxU,IAAI,CAAC,CAAC,CAAC,EAAED,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAGxC,MAAM+V,MAAM,GAAG,EAAE;IACjB,MAAMC,MAAM,GAAG,EAAE;IACjB,MAAMvB,KAAK,GAAG,EAAE;IAEhB,KAAK,IAAIzT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6U,WAAW,GAAG,CAAC,EAAE7U,CAAC,EAAE,EAAE;MACxCgV,MAAM,CAAC/V,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;MACjB,IAAIe,CAAC,GAAG,CAAC,KAAK6U,WAAW,EAAE;QACzBE,MAAM,CAAC9V,IAAI,CAAC,IAAI,CAACwU,KAAK,CAACzT,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;MAGnC4U,EAAE,GAAG,IAAI,CAACpB,GAAG,CAACnM,GAAG,CAAC;QAChB4N,YAAY,EAAE,CAAC;QACfC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACdjQ,EAAE,EAAE,IAAI,CAACwO,KAAK,CAACzT,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxBkF,EAAE,EAAE,IAAI,CAACuO,KAAK,CAACzT,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxBmV,CAAC,EAAE;OACJ,CAAC;MAEF1B,KAAK,CAACxU,IAAI,CAAC2V,EAAE,CAAC;MACdA,EAAE,CAAC3U,GAAG,EAAE;;;;IAIV,IAAI4U,WAAW,KAAK,CAAC,EAAE;MACrBD,EAAE,GAAGnB,KAAK,CAAC,CAAC,CAAC;KACd,MAAM;MACLmB,EAAE,GAAG,IAAI,CAACpB,GAAG,CAACnM,GAAG,CAAC;QAChB4N,YAAY,EAAE,CAAC;;QACfC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACdE,SAAS,EAAE3B,KAAK;QAChB4B,MAAM,EAAEN,MAAM;QACdO,MAAM,EAAEN;OACT,CAAC;MAEFJ,EAAE,CAAC3U,GAAG,EAAE;;IAGV,IAAI,CAACgC,EAAE,GAAI,KAAI,EAAE,IAAI,CAACuR,GAAG,CAAC+B,UAAW,EAAC;IAEtC,MAAMC,MAAM,GAAG,IAAI,CAACA,MAAM,CAACZ,EAAE,CAAC;IAC9BY,MAAM,CAACvV,GAAG,EAAE;IAEZ,MAAMwV,OAAO,GAAG,IAAI,CAACjC,GAAG,CAACnM,GAAG,CAAC;MAC3BI,IAAI,EAAE,SAAS;MACfiO,WAAW,EAAE,CAAC;MACdC,OAAO,EAAEH,MAAM;MACfI,MAAM,EAAE,IAAI,CAACd,MAAM,CAACtT,GAAG,CAACG,MAAM;KAC/B,CAAC;IAEF8T,OAAO,CAACxV,GAAG,EAAE;IAEb,IAAI,IAAI,CAACwT,KAAK,CAACzH,IAAI,CAAC4H,IAAI,IAAIA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;MACxC,IAAIiC,IAAI,GAAG,IAAI,CAACC,eAAe,EAAE;MACjCD,IAAI,CAAC5B,WAAW,GAAG,YAAY;MAE/B,KAAK,IAAIL,IAAI,IAAI,IAAI,CAACH,KAAK,EAAE;QAC3BoC,IAAI,CAACjC,IAAI,CAACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;MAG/BiC,IAAI,GAAGA,IAAI,CAACnB,KAAK,CAAC,IAAI,CAACI,MAAM,CAAC;MAE9B,MAAMiB,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACvC,GAAG,CAACwC,IAAI,CAAC9O,KAAK,EAAE,IAAI,CAACsM,GAAG,CAACwC,IAAI,CAAC7O,MAAM,CAAC;MAElE,MAAM8O,IAAI,GAAG,IAAI,CAACzC,GAAG,CAACnM,GAAG,CAAC;QACxBI,IAAI,EAAE,SAAS;QACfyO,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE,CAAC;QACXC,IAAI,EAAEL,QAAQ;QACdM,KAAK,EAAE;UACL5O,IAAI,EAAE,OAAO;UACb6O,CAAC,EAAE,cAAc;UACjBC,EAAE,EAAE;SACL;QACDxO,SAAS,EAAE;UACTR,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;UACtDiB,OAAO,EAAE;YACPgO,GAAG,EAAEX;;;OAGV,CAAC;MAEFI,IAAI,CAACzT,KAAK,CAAC,sBAAsB,CAAC;MAClCyT,IAAI,CAAChW,GAAG,CAAE,GAAE8V,QAAQ,CAACzW,IAAI,CAAC,GAAG,CAAE,OAAM,CAAC;MAEtC,MAAMmX,MAAM,GAAG,IAAI,CAACjD,GAAG,CAACnM,GAAG,CAAC;QAC1BI,IAAI,EAAE,WAAW;QACjBiP,KAAK,EAAE;UACLjP,IAAI,EAAE,MAAM;UACZ6O,CAAC,EAAE,YAAY;UACfK,CAAC,EAAEV;;OAEN,CAAC;MAEFQ,MAAM,CAACxW,GAAG,EAAE;MAEZ,MAAM2W,cAAc,GAAG,IAAI,CAACpD,GAAG,CAACnM,GAAG,CAAC;QAClCI,IAAI,EAAE,SAAS;QACfiO,WAAW,EAAE,CAAC;QACdmB,SAAS,EAAE,CAAC;QACZC,UAAU,EAAE,CAAC;QACbV,IAAI,EAAEL,QAAQ;QACdgB,KAAK,EAAEhB,QAAQ,CAAC,CAAC,CAAC;QAClBiB,KAAK,EAAEjB,QAAQ,CAAC,CAAC,CAAC;QAClBhO,SAAS,EAAE;UACTR,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;UACtDiB,OAAO,EAAE;YACPgO,GAAG,EAAEf;WACN;UACDnN,SAAS,EAAE;YACT2O,GAAG,EAAER;;;OAGV,CAAC;MAEFG,cAAc,CAACpU,KAAK,CAAC,8BAA8B,CAAC;MACpDoU,cAAc,CAAC3W,GAAG,CAAE,GAAE8V,QAAQ,CAACzW,IAAI,CAAC,GAAG,CAAE,OAAM,CAAC;MAEhD,IAAI,CAACkU,GAAG,CAACwC,IAAI,CAACzN,QAAQ,CAAC,IAAI,CAACtG,EAAE,CAAC,GAAG2U,cAAc;KACjD,MAAM;MACL,IAAI,CAACpD,GAAG,CAACwC,IAAI,CAACzN,QAAQ,CAAC,IAAI,CAACtG,EAAE,CAAC,GAAGwT,OAAO;;IAG3C,OAAOA,OAAO;;EAGhB7J,KAAKA,CAACsL,MAAM,EAAE;;IAEZ,MAAM,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAAChE,GAAG,CAACiE,IAAI;IAC9C,MAAM,CAACrD,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACd,SAAS;IACnD,MAAMgB,CAAC,GAAG,CACRwC,EAAE,GAAG/C,GAAG,GAAGiD,EAAE,GAAGhD,GAAG,EACnB+C,EAAE,GAAGhD,GAAG,GAAGkD,EAAE,GAAGjD,GAAG,EACnB8C,EAAE,GAAG7C,GAAG,GAAG+C,EAAE,GAAG9C,GAAG,EACnB6C,EAAE,GAAG9C,GAAG,GAAGgD,EAAE,GAAG/C,GAAG,EACnB4C,EAAE,GAAG3C,EAAE,GAAG6C,EAAE,GAAG5C,EAAE,GAAG8C,EAAE,EACtBH,EAAE,GAAG5C,EAAE,GAAG8C,EAAE,GAAG7C,EAAE,GAAG+C,EAAE,CACvB;IAED,IAAI,CAAC,IAAI,CAAC9D,QAAQ,IAAIiB,CAAC,CAACrV,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAACwV,MAAM,CAACxV,IAAI,CAAC,GAAG,CAAC,EAAE;MAC3D,IAAI,CAACoV,KAAK,CAACC,CAAC,CAAC;;IAEf,IAAI,CAACnB,GAAG,CAACkE,cAAc,CAAC,SAAS,EAAER,MAAM,CAAC;IAC1C,MAAMS,EAAE,GAAGT,MAAM,GAAG,KAAK,GAAG,KAAK;IACjC,OAAO,IAAI,CAAC1D,GAAG,CAACoE,UAAU,CAAE,IAAG,IAAI,CAAC3V,EAAG,IAAG0V,EAAG,EAAC,CAAC;;AAEnD;AAEA,MAAME,iBAAiB,SAAStE,WAAW,CAAC;EAC1CzV,WAAWA,CAAC0V,GAAG,EAAEsE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IAC/B,KAAK,CAACzE,GAAG,CAAC;IACV,IAAI,CAACsE,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,EAAE,GAAGA,EAAE;;EAGdzC,MAAMA,CAACZ,EAAE,EAAE;IACT,OAAO,IAAI,CAACpB,GAAG,CAACnM,GAAG,CAAC;MAClB6Q,WAAW,EAAE,CAAC;MACdxP,UAAU,EAAE,IAAI,CAACuL,WAAW;MAC5BkE,MAAM,EAAE,CAAC,IAAI,CAACL,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,CAAC;MAC5CG,QAAQ,EAAExD,EAAE;MACZyD,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI;KACpB,CAAC;;EAGJvC,eAAeA,GAAG;IAChB,OAAO,IAAI+B,iBAAiB,CAAC,IAAI,CAACrE,GAAG,EAAE,IAAI,CAACsE,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACC,EAAE,CAAC;;AAE9E;AAEA,MAAMK,iBAAiB,SAAS/E,WAAW,CAAC;EAC1CzV,WAAWA,CAAC0V,GAAG,EAAEsE,EAAE,EAAEC,EAAE,EAAEQ,EAAE,EAAEP,EAAE,EAAEC,EAAE,EAAEO,EAAE,EAAE;IACvC,KAAK,CAAChF,GAAG,CAAC;IACV,IAAI,CAACA,GAAG,GAAGA,GAAG;IACd,IAAI,CAACsE,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACQ,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACP,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACO,EAAE,GAAGA,EAAE;;EAGdhD,MAAMA,CAACZ,EAAE,EAAE;IACT,OAAO,IAAI,CAACpB,GAAG,CAACnM,GAAG,CAAC;MAClB6Q,WAAW,EAAE,CAAC;MACdxP,UAAU,EAAE,IAAI,CAACuL,WAAW;MAC5BkE,MAAM,EAAE,CAAC,IAAI,CAACL,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACQ,EAAE,EAAE,IAAI,CAACP,EAAE,EAAE,IAAI,CAACC,EAAE,EAAE,IAAI,CAACO,EAAE,CAAC;MAC9DJ,QAAQ,EAAExD,EAAE;MACZyD,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI;KACpB,CAAC;;EAGJvC,eAAeA,GAAG;IAChB,OAAO,IAAIwC,iBAAiB,CAC1B,IAAI,CAAC9E,GAAG,EACR,IAAI,CAACsE,EAAE,EACP,IAAI,CAACC,EAAE,EACP,IAAI,CAACQ,EAAE,EACP,IAAI,CAACP,EAAE,EACP,IAAI,CAACC,EAAE,EACP,IAAI,CAACO,EACP,CAAC;;AAEL;AAEA,eAAe;EAAEjF,WAAW;EAAEsE,iBAAiB;EAAES;AAAkB,CAAC;;AC3QpE;AACA;AACA;;AAEA,MAAMG,qBAAqB,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;AAEzD,MAAMC,gBAAgB,CAAC;EACrB5a,WAAWA,CAAC0V,GAAG,EAAEmF,IAAI,EAAEC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAE;IAC3C,IAAI,CAACtF,GAAG,GAAGA,GAAG;IACd,IAAI,CAACmF,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,MAAM,GAAGA,MAAM;;EAGtBC,aAAaA,GAAG;;;IAGd,MAAMzR,SAAS,GAAG,IAAI,CAACkM,GAAG,CAACnM,GAAG,EAAE;IAChCC,SAAS,CAACrH,GAAG,EAAE;;;IAGf,MAAM,CAACkX,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAAChE,GAAG,CAACiE,IAAI;IAC9C,MAAM,CAACrD,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,MAAME,CAAC,GAAG,CACRwC,EAAE,GAAG/C,GAAG,GAAGiD,EAAE,GAAGhD,GAAG,EACnB+C,EAAE,GAAGhD,GAAG,GAAGkD,EAAE,GAAGjD,GAAG,EACnB8C,EAAE,GAAG7C,GAAG,GAAG+C,EAAE,GAAG9C,GAAG,EACnB6C,EAAE,GAAG9C,GAAG,GAAGgD,EAAE,GAAG/C,GAAG,EACnB4C,EAAE,GAAG3C,EAAE,GAAG6C,EAAE,GAAG5C,EAAE,GAAG8C,EAAE,EACtBH,EAAE,GAAG5C,EAAE,GAAG8C,EAAE,GAAG7C,EAAE,GAAG+C,EAAE,CACvB;IACD,MAAM/B,OAAO,GAAG,IAAI,CAACjC,GAAG,CAACnM,GAAG,CAAC;MAC3BI,IAAI,EAAE,SAAS;MACfiO,WAAW,EAAE,CAAC;;MACdmB,SAAS,EAAE,CAAC;;MACZC,UAAU,EAAE,CAAC;;MACbV,IAAI,EAAE,IAAI,CAACuC,IAAI;MACf5B,KAAK,EAAE,IAAI,CAAC6B,KAAK;MACjB5B,KAAK,EAAE,IAAI,CAAC6B,KAAK;MACjBjD,MAAM,EAAEjB,CAAC,CAACnT,GAAG,CAACuM,CAAC,IAAI,CAACA,CAAC,CAACiL,OAAO,CAAC,CAAC,CAAC,CAAC;MACjCjR,SAAS,EAAET;KACZ,CAAC;IACFmO,OAAO,CAACxV,GAAG,CAAC,IAAI,CAAC6Y,MAAM,CAAC;IACxB,OAAOrD,OAAO;;EAGhBwD,uBAAuBA,GAAG;;;IAGxBR,qBAAqB,CAACS,OAAO,CAACC,MAAM,IAAI;MACtC,MAAMC,IAAI,GAAG,IAAI,CAACC,sBAAsB,CAACF,MAAM,CAAC;MAEhD,IAAI,IAAI,CAAC3F,GAAG,CAACwC,IAAI,CAACvN,WAAW,CAAC2Q,IAAI,CAAC,EAAE;MACrC,MAAME,EAAE,GAAG,IAAI,CAAC9F,GAAG,CAACnM,GAAG,CAAC,CAAC,SAAS,EAAE8R,MAAM,CAAC,CAAC;MAC5CG,EAAE,CAACrZ,GAAG,EAAE;MACR,IAAI,CAACuT,GAAG,CAACwC,IAAI,CAACvN,WAAW,CAAC2Q,IAAI,CAAC,GAAGE,EAAE;KACrC,CAAC;;EAGJD,sBAAsBA,CAACE,oBAAoB,EAAE;IAC3C,OAAQ,MAAKA,oBAAqB,EAAC;;EAGrC7E,KAAKA,GAAG;IACN,IAAI,CAAC,IAAI,CAACzS,EAAE,EAAE;MACZ,IAAI,CAACuR,GAAG,CAACgG,aAAa,GAAG,IAAI,CAAChG,GAAG,CAACgG,aAAa,GAAG,CAAC;MACnD,IAAI,CAACvX,EAAE,GAAG,GAAG,GAAG,IAAI,CAACuR,GAAG,CAACgG,aAAa;MACtC,IAAI,CAAC/D,OAAO,GAAG,IAAI,CAACsD,aAAa,EAAE;;;;IAIrC,IAAI,CAAC,IAAI,CAACvF,GAAG,CAACwC,IAAI,CAACzN,QAAQ,CAAC,IAAI,CAACtG,EAAE,CAAC,EAAE;MACpC,IAAI,CAACuR,GAAG,CAACwC,IAAI,CAACzN,QAAQ,CAAC,IAAI,CAACtG,EAAE,CAAC,GAAG,IAAI,CAACwT,OAAO;;;EAIlD7J,KAAKA,CAACsL,MAAM,EAAEuC,YAAY,EAAE;;IAE1B,IAAI,CAACR,uBAAuB,EAAE;IAC9B,IAAI,CAACvE,KAAK,EAAE;IAEZ,MAAMgF,eAAe,GAAG,IAAI,CAAClG,GAAG,CAACQ,eAAe,CAACyF,YAAY,CAAC;IAC9D,IAAI,CAACC,eAAe,EAClB,MAAM9b,KAAK,CAAE,kCAAiC6b,YAAa,GAAE,CAAC;;;IAGhE,MAAML,IAAI,GAAG,IAAI,CAACC,sBAAsB,CACtC,IAAI,CAAC7F,GAAG,CAACmG,cAAc,CAACD,eAAe,CACzC,CAAC;IACD,IAAI,CAAClG,GAAG,CAACkE,cAAc,CAAC0B,IAAI,EAAElC,MAAM,CAAC;;;IAGrC,MAAMS,EAAE,GAAGT,MAAM,GAAG,KAAK,GAAG,KAAK;IACjC,OAAO,IAAI,CAAC1D,GAAG,CAACoE,UAAU,CACvB,GAAE8B,eAAe,CAACpa,IAAI,CAAC,GAAG,CAAE,KAAI,IAAI,CAAC2C,EAAG,IAAG0V,EAAG,EACjD,CAAC;;AAEL;AAEA,cAAe;EAAEe;AAAiB,CAAC;;ACjGnC,MAAM;eAAEnF,aAAW;qBAAEsE,mBAAiB;qBAAES;AAAkB,CAAC,GAAGsB,QAAQ;AACtE,MAAM;oBAAElB;AAAiB,CAAC,GAAGjD,OAAO;AAEpC,iBAAe;EACboE,SAASA,GAAG;;IAEV,IAAI,CAACC,gBAAgB,GAAG,EAAE;IAC1B,IAAI,CAACC,aAAa,GAAG,CAAC;IACtB,IAAI,CAACP,aAAa,GAAG,CAAC;IACtB,OAAQ,IAAI,CAACjE,UAAU,GAAG,CAAC;GAC5B;EAEDvB,eAAeA,CAACF,KAAK,EAAE;IACrB,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,IAAIA,KAAK,CAACkG,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAC3B,IAAIlG,KAAK,CAAChV,MAAM,KAAK,CAAC,EAAE;UACtBgV,KAAK,GAAGA,KAAK,CAAClT,OAAO,CACnB,kCAAkC,EAClC,eACF,CAAC;;QAEH,MAAMqZ,GAAG,GAAGC,QAAQ,CAACpG,KAAK,CAACpU,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxCoU,KAAK,GAAG,CAACmG,GAAG,IAAI,EAAE,EAAGA,GAAG,IAAI,CAAC,GAAI,IAAI,EAAEA,GAAG,GAAG,IAAI,CAAC;OACnD,MAAM,IAAIE,WAAW,CAACrG,KAAK,CAAC,EAAE;QAC7BA,KAAK,GAAGqG,WAAW,CAACrG,KAAK,CAAC;;;IAI9B,IAAIrU,KAAK,CAAC6B,OAAO,CAACwS,KAAK,CAAC,EAAE;;MAExB,IAAIA,KAAK,CAAChV,MAAM,KAAK,CAAC,EAAE;QACtBgV,KAAK,GAAGA,KAAK,CAACtS,GAAG,CAAC4Y,IAAI,IAAIA,IAAI,GAAG,GAAG,CAAC;;OAEtC,MAAM,IAAItG,KAAK,CAAChV,MAAM,KAAK,CAAC,EAAE;QAC7BgV,KAAK,GAAGA,KAAK,CAACtS,GAAG,CAAC4Y,IAAI,IAAIA,IAAI,GAAG,GAAG,CAAC;;MAEvC,OAAOtG,KAAK;;IAGd,OAAO,IAAI;GACZ;EAEDuG,SAASA,CAACvG,KAAK,EAAEoD,MAAM,EAAE;IACvB,IAAIpD,KAAK,YAAYP,aAAW,EAAE;MAChCO,KAAK,CAAClI,KAAK,CAACsL,MAAM,CAAC;MACnB,OAAO,IAAI;;KAEZ,MAAM,IAAIzX,KAAK,CAAC6B,OAAO,CAACwS,KAAK,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,YAAY4E,kBAAgB,EAAE;MACvE5E,KAAK,CAAC,CAAC,CAAC,CAAClI,KAAK,CAACsL,MAAM,EAAEpD,KAAK,CAAC,CAAC,CAAC,CAAC;MAChC,OAAO,IAAI;;;IAGb,OAAO,IAAI,CAACwG,aAAa,CAACxG,KAAK,EAAEoD,MAAM,CAAC;GACzC;EAEDoD,aAAaA,CAACxG,KAAK,EAAEoD,MAAM,EAAE;IAC3BpD,KAAK,GAAG,IAAI,CAACE,eAAe,CAACF,KAAK,CAAC;IACnC,IAAI,CAACA,KAAK,EAAE;MACV,OAAO,KAAK;;IAGd,MAAM6D,EAAE,GAAGT,MAAM,GAAG,KAAK,GAAG,KAAK;IACjC,MAAMqD,KAAK,GAAG,IAAI,CAACZ,cAAc,CAAC7F,KAAK,CAAC;IACxC,IAAI,CAAC4D,cAAc,CAAC6C,KAAK,EAAErD,MAAM,CAAC;IAElCpD,KAAK,GAAGA,KAAK,CAACxU,IAAI,CAAC,GAAG,CAAC;IACvB,IAAI,CAACsY,UAAU,CAAE,GAAE9D,KAAM,IAAG6D,EAAG,EAAC,CAAC;IAEjC,OAAO,IAAI;GACZ;EAEDD,cAAcA,CAAC6C,KAAK,EAAErD,MAAM,EAAE;IAC5B,MAAMS,EAAE,GAAGT,MAAM,GAAG,IAAI,GAAG,IAAI;IAC/B,OAAO,IAAI,CAACU,UAAU,CAAE,IAAG2C,KAAM,IAAG5C,EAAG,EAAC,CAAC;GAC1C;EAEDgC,cAAcA,CAAC7F,KAAK,EAAE;IACpB,OAAOA,KAAK,CAAChV,MAAM,KAAK,CAAC,GAAG,YAAY,GAAG,WAAW;GACvD;EAED0b,SAASA,CAAC1G,KAAK,EAAEC,OAAO,EAAE;IACxB,MAAM0G,GAAG,GAAG,IAAI,CAACJ,SAAS,CAACvG,KAAK,EAAE,KAAK,CAAC;IACxC,IAAI2G,GAAG,EAAE;MACP,IAAI,CAACC,WAAW,CAAC3G,OAAO,CAAC;;;;;IAK3B,IAAI,CAAC4G,UAAU,GAAG,CAAC7G,KAAK,EAAEC,OAAO,CAAC;IAClC,OAAO,IAAI;GACZ;EAED6G,WAAWA,CAAC9G,KAAK,EAAEC,OAAO,EAAE;IAC1B,MAAM0G,GAAG,GAAG,IAAI,CAACJ,SAAS,CAACvG,KAAK,EAAE,IAAI,CAAC;IACvC,IAAI2G,GAAG,EAAE;MACP,IAAI,CAACI,aAAa,CAAC9G,OAAO,CAAC;;IAE7B,OAAO,IAAI;GACZ;EAEDA,OAAOA,CAACA,OAAO,EAAE;IACf,IAAI,CAAC+G,UAAU,CAAC/G,OAAO,EAAEA,OAAO,CAAC;IACjC,OAAO,IAAI;GACZ;EAED2G,WAAWA,CAAC3G,OAAO,EAAE;IACnB,IAAI,CAAC+G,UAAU,CAAC/G,OAAO,EAAE,IAAI,CAAC;IAC9B,OAAO,IAAI;GACZ;EAED8G,aAAaA,CAAC9G,OAAO,EAAE;IACrB,IAAI,CAAC+G,UAAU,CAAC,IAAI,EAAE/G,OAAO,CAAC;IAC9B,OAAO,IAAI;GACZ;EAED+G,UAAUA,CAACJ,WAAW,EAAEG,aAAa,EAAE;IACrC,IAAIrT,UAAU,EAAEuT,IAAI;IACpB,IAAIL,WAAW,IAAI,IAAI,IAAIG,aAAa,IAAI,IAAI,EAAE;MAChD;;IAGF,IAAIH,WAAW,IAAI,IAAI,EAAE;MACvBA,WAAW,GAAG7Y,IAAI,CAACqS,GAAG,CAAC,CAAC,EAAErS,IAAI,CAACoP,GAAG,CAAC,CAAC,EAAEyJ,WAAW,CAAC,CAAC;;IAErD,IAAIG,aAAa,IAAI,IAAI,EAAE;MACzBA,aAAa,GAAGhZ,IAAI,CAACqS,GAAG,CAAC,CAAC,EAAErS,IAAI,CAACoP,GAAG,CAAC,CAAC,EAAE4J,aAAa,CAAC,CAAC;;IAEzD,MAAM1c,GAAG,GAAI,GAAEuc,WAAY,IAAGG,aAAc,EAAC;IAE7C,IAAI,IAAI,CAACf,gBAAgB,CAAC3b,GAAG,CAAC,EAAE;MAC9B,CAACqJ,UAAU,EAAEuT,IAAI,CAAC,GAAG,IAAI,CAACjB,gBAAgB,CAAC3b,GAAG,CAAC;KAChD,MAAM;MACLqJ,UAAU,GAAG;QAAEC,IAAI,EAAE;OAAa;MAElC,IAAIiT,WAAW,IAAI,IAAI,EAAE;QACvBlT,UAAU,CAACwT,EAAE,GAAGN,WAAW;;MAE7B,IAAIG,aAAa,IAAI,IAAI,EAAE;QACzBrT,UAAU,CAACyT,EAAE,GAAGJ,aAAa;;MAG/BrT,UAAU,GAAG,IAAI,CAACH,GAAG,CAACG,UAAU,CAAC;MACjCA,UAAU,CAACvH,GAAG,EAAE;MAChB,MAAMgC,EAAE,GAAG,EAAE,IAAI,CAAC8X,aAAa;MAC/BgB,IAAI,GAAI,KAAI9Y,EAAG,EAAC;MAChB,IAAI,CAAC6X,gBAAgB,CAAC3b,GAAG,CAAC,GAAG,CAACqJ,UAAU,EAAEuT,IAAI,CAAC;;IAGjD,IAAI,CAAC/E,IAAI,CAAC3N,WAAW,CAAC0S,IAAI,CAAC,GAAGvT,UAAU;IACxC,OAAO,IAAI,CAACoQ,UAAU,CAAE,IAAGmD,IAAK,KAAI,CAAC;GACtC;EAEDG,cAAcA,CAACpD,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IAC7B,OAAO,IAAIJ,mBAAiB,CAAC,IAAI,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;GACnD;EAEDkD,cAAcA,CAACrD,EAAE,EAAEC,EAAE,EAAEQ,EAAE,EAAEP,EAAE,EAAEC,EAAE,EAAEO,EAAE,EAAE;IACrC,OAAO,IAAIF,mBAAiB,CAAC,IAAI,EAAER,EAAE,EAAEC,EAAE,EAAEQ,EAAE,EAAEP,EAAE,EAAEC,EAAE,EAAEO,EAAE,CAAC;GAC3D;EAED/C,OAAOA,CAAC2F,IAAI,EAAExC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAE;IAClC,OAAO,IAAIJ,kBAAgB,CAAC,IAAI,EAAE0C,IAAI,EAAExC,KAAK,EAAEC,KAAK,EAAEC,MAAM,CAAC;;AAEjE,CAAC;AAED,IAAIqB,WAAW,GAAG;EAChBkB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACnBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAChBC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACjBC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC1BC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACpBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACzBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACzBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACrBC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACtBC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACnBC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACrBC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EAC7BC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EACtBC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EAC1BC,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EAC7BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACzBC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC1BC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACpBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;EAC5BC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EAC3BC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EAC3BC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACzBC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EACxBC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACxBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EAC1BC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACtBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACnBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACzBC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAClBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EAC3BC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACxBC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;EACpBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACxBC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrCC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,aAAa,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EACjBC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EACxBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACtBC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACnBC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACjCC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACvBC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC5BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAChCC,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAChCC,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC/BC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACjBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACpBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACzBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACrBC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;EACvBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACpBC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACrBC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAChBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EAC1BC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EAC1BC,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EACvBC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACrBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EACzBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACpBC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACnBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACrBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;AAC5B,CAAC;;AC5TD,IAAIC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE;AAE1BL,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAG,CAAC;AAE/B,MAAMC,UAAU,GAAG;EACjBC,CAAC,EAAE,CAAC;EACJrmB,CAAC,EAAE,CAAC;EACJsmB,CAAC,EAAE,CAAC;EACJnkB,CAAC,EAAE,CAAC;EACJokB,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE,CAAC;EACJplB,CAAC,EAAE,CAAC;EACJqlB,CAAC,EAAE,CAAC;EACJzQ,CAAC,EAAE,CAAC;EACJ0Q,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE,CAAC;EACJhP,CAAC,EAAE,CAAC;EACJiP,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE,CAAC;EACJzW,CAAC,EAAE,CAAC;EACJjB,CAAC,EAAE,CAAC;EACJ2X,CAAC,EAAE,CAAC;EACJC,CAAC,EAAE;AACL,CAAC;AAED,MAAMC,KAAK,GAAG,UAASC,IAAI,EAAE;EAC3B,IAAIC,GAAG;EACP,MAAMC,GAAG,GAAG,EAAE;EACd,IAAIC,IAAI,GAAG,EAAE;EACb,IAAIC,MAAM,GAAG,EAAE;EACf,IAAIC,YAAY,GAAG,KAAK;EACxB,IAAIC,MAAM,GAAG,CAAC;EAEd,KAAK,IAAItlB,CAAC,IAAIglB,IAAI,EAAE;IAClB,IAAIf,UAAU,CAACjkB,CAAC,CAAC,IAAI,IAAI,EAAE;MACzBslB,MAAM,GAAGrB,UAAU,CAACjkB,CAAC,CAAC;MACtB,IAAIilB,GAAG,EAAE;;QAEP,IAAIG,MAAM,CAACnnB,MAAM,GAAG,CAAC,EAAE;UACrBknB,IAAI,CAACA,IAAI,CAAClnB,MAAM,CAAC,GAAG,CAACmnB,MAAM;;QAE7BF,GAAG,CAACA,GAAG,CAACjnB,MAAM,CAAC,GAAG;UAAEgnB,GAAG;UAAEE;SAAM;QAE/BA,IAAI,GAAG,EAAE;QACTC,MAAM,GAAG,EAAE;QACXC,YAAY,GAAG,KAAK;;MAGtBJ,GAAG,GAAGjlB,CAAC;KACR,MAAM,IACL,CAAC,GAAG,EAAE,GAAG,CAAC,CAACulB,QAAQ,CAACvlB,CAAC,CAAC,IACrBA,CAAC,KAAK,GAAG,IAAIolB,MAAM,CAACnnB,MAAM,GAAG,CAAC,IAAImnB,MAAM,CAACA,MAAM,CAACnnB,MAAM,GAAG,CAAC,CAAC,KAAK,GAAI,IACpE+B,CAAC,KAAK,GAAG,IAAIqlB,YAAa,EAC3B;MACA,IAAID,MAAM,CAACnnB,MAAM,KAAK,CAAC,EAAE;QACvB;;MAGF,IAAIknB,IAAI,CAAClnB,MAAM,KAAKqnB,MAAM,EAAE;;QAE1BJ,GAAG,CAACA,GAAG,CAACjnB,MAAM,CAAC,GAAG;UAAEgnB,GAAG;UAAEE;SAAM;QAC/BA,IAAI,GAAG,CAAC,CAACC,MAAM,CAAC;;;QAGhB,IAAIH,GAAG,KAAK,GAAG,EAAE;UACfA,GAAG,GAAG,GAAG;;QAEX,IAAIA,GAAG,KAAK,GAAG,EAAE;UACfA,GAAG,GAAG,GAAG;;OAEZ,MAAM;QACLE,IAAI,CAACA,IAAI,CAAClnB,MAAM,CAAC,GAAG,CAACmnB,MAAM;;MAG7BC,YAAY,GAAGrlB,CAAC,KAAK,GAAG;;;MAGxBolB,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAACG,QAAQ,CAACvlB,CAAC,CAAC,GAAGA,CAAC,GAAG,EAAE;KACzC,MAAM;MACLolB,MAAM,IAAIplB,CAAC;MACX,IAAIA,CAAC,KAAK,GAAG,EAAE;QACbqlB,YAAY,GAAG,IAAI;;;;;;EAMzB,IAAID,MAAM,CAACnnB,MAAM,GAAG,CAAC,EAAE;IACrB,IAAIknB,IAAI,CAAClnB,MAAM,KAAKqnB,MAAM,EAAE;;MAE1BJ,GAAG,CAACA,GAAG,CAACjnB,MAAM,CAAC,GAAG;QAAEgnB,GAAG;QAAEE;OAAM;MAC/BA,IAAI,GAAG,CAAC,CAACC,MAAM,CAAC;;;MAGhB,IAAIH,GAAG,KAAK,GAAG,EAAE;QACfA,GAAG,GAAG,GAAG;;MAEX,IAAIA,GAAG,KAAK,GAAG,EAAE;QACfA,GAAG,GAAG,GAAG;;KAEZ,MAAM;MACLE,IAAI,CAACA,IAAI,CAAClnB,MAAM,CAAC,GAAG,CAACmnB,MAAM;;;EAI/BF,GAAG,CAACA,GAAG,CAACjnB,MAAM,CAAC,GAAG;IAAEgnB,GAAG;IAAEE;GAAM;EAE/B,OAAOD,GAAG;AACZ,CAAC;AAED,MAAMna,KAAK,GAAG,UAASya,QAAQ,EAAE7S,GAAG,EAAE;;EAEpCgR,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAG,CAAC;;;EAG/B,KAAK,IAAI7kB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqmB,QAAQ,CAACvnB,MAAM,EAAEkB,CAAC,EAAE,EAAE;IACxC,MAAMa,CAAC,GAAGwlB,QAAQ,CAACrmB,CAAC,CAAC;IACrB,IAAI,OAAOsmB,OAAO,CAACzlB,CAAC,CAACilB,GAAG,CAAC,KAAK,UAAU,EAAE;MACxCQ,OAAO,CAACzlB,CAAC,CAACilB,GAAG,CAAC,CAACtS,GAAG,EAAE3S,CAAC,CAACmlB,IAAI,CAAC;;;AAGjC,CAAC;AAED,MAAMM,OAAO,GAAG;EACdlB,CAACA,CAAC5R,GAAG,EAAE9U,CAAC,EAAE;IACR8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACTgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACdC,EAAE,GAAGJ,EAAE;IACPK,EAAE,GAAGJ,EAAE;IACP,OAAOjR,GAAG,CAAC+S,MAAM,CAAC/B,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAED9P,CAACA,CAACnB,GAAG,EAAE9U,CAAC,EAAE;IACR8lB,EAAE,IAAI9lB,CAAC,CAAC,CAAC,CAAC;IACV+lB,EAAE,IAAI/lB,CAAC,CAAC,CAAC,CAAC;IACVgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACdC,EAAE,GAAGJ,EAAE;IACPK,EAAE,GAAGJ,EAAE;IACP,OAAOjR,GAAG,CAAC+S,MAAM,CAAC/B,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAEDO,CAACA,CAACxR,GAAG,EAAE9U,CAAC,EAAE;IACR8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACTgmB,EAAE,GAAGhmB,CAAC,CAAC,CAAC,CAAC;IACTimB,EAAE,GAAGjmB,CAAC,CAAC,CAAC,CAAC;IACT,OAAO8U,GAAG,CAACgT,aAAa,CAAC,GAAG9nB,CAAC,CAAC;GAC/B;EAEDmC,CAACA,CAAC2S,GAAG,EAAE9U,CAAC,EAAE;IACR8U,GAAG,CAACgT,aAAa,CACf9nB,CAAC,CAAC,CAAC,CAAC,GAAG8lB,EAAE,EACT9lB,CAAC,CAAC,CAAC,CAAC,GAAG+lB,EAAE,EACT/lB,CAAC,CAAC,CAAC,CAAC,GAAG8lB,EAAE,EACT9lB,CAAC,CAAC,CAAC,CAAC,GAAG+lB,EAAE,EACT/lB,CAAC,CAAC,CAAC,CAAC,GAAG8lB,EAAE,EACT9lB,CAAC,CAAC,CAAC,CAAC,GAAG+lB,EACT,CAAC;IACDC,EAAE,GAAGF,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACdimB,EAAE,GAAGF,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACd8lB,EAAE,IAAI9lB,CAAC,CAAC,CAAC,CAAC;IACV,OAAQ+lB,EAAE,IAAI/lB,CAAC,CAAC,CAAC,CAAC;GACnB;EAED4X,CAACA,CAAC9C,GAAG,EAAE9U,CAAC,EAAE;IACR,IAAIgmB,EAAE,KAAK,IAAI,EAAE;MACfA,EAAE,GAAGF,EAAE;MACPG,EAAE,GAAGF,EAAE;;IAGTjR,GAAG,CAACgT,aAAa,CAAChC,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC,EAAEC,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC,EAAE/lB,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;IACzEgmB,EAAE,GAAGhmB,CAAC,CAAC,CAAC,CAAC;IACTimB,EAAE,GAAGjmB,CAAC,CAAC,CAAC,CAAC;IACT8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT,OAAQ+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;GAClB;EAED6mB,CAACA,CAAC/R,GAAG,EAAE9U,CAAC,EAAE;IACR,IAAIgmB,EAAE,KAAK,IAAI,EAAE;MACfA,EAAE,GAAGF,EAAE;MACPG,EAAE,GAAGF,EAAE;;IAGTjR,GAAG,CAACgT,aAAa,CACfhC,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC,EACdC,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC,EACdD,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC,EACT+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC,EACT8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC,EACT+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CACV,CAAC;IACDgmB,EAAE,GAAGF,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACdimB,EAAE,GAAGF,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACd8lB,EAAE,IAAI9lB,CAAC,CAAC,CAAC,CAAC;IACV,OAAQ+lB,EAAE,IAAI/lB,CAAC,CAAC,CAAC,CAAC;GACnB;EAED2mB,CAACA,CAAC7R,GAAG,EAAE9U,CAAC,EAAE;IACRgmB,EAAE,GAAGhmB,CAAC,CAAC,CAAC,CAAC;IACTimB,EAAE,GAAGjmB,CAAC,CAAC,CAAC,CAAC;IACT8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACT,OAAO8U,GAAG,CAACiT,gBAAgB,CAAC/nB,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAE8lB,EAAE,EAAEC,EAAE,CAAC;GAChD;EAEDa,CAACA,CAAC9R,GAAG,EAAE9U,CAAC,EAAE;IACR8U,GAAG,CAACiT,gBAAgB,CAAC/nB,CAAC,CAAC,CAAC,CAAC,GAAG8lB,EAAE,EAAE9lB,CAAC,CAAC,CAAC,CAAC,GAAG+lB,EAAE,EAAE/lB,CAAC,CAAC,CAAC,CAAC,GAAG8lB,EAAE,EAAE9lB,CAAC,CAAC,CAAC,CAAC,GAAG+lB,EAAE,CAAC;IAChEC,EAAE,GAAGF,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACdimB,EAAE,GAAGF,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACd8lB,EAAE,IAAI9lB,CAAC,CAAC,CAAC,CAAC;IACV,OAAQ+lB,EAAE,IAAI/lB,CAAC,CAAC,CAAC,CAAC;GACnB;EAED8mB,CAACA,CAAChS,GAAG,EAAE9U,CAAC,EAAE;IACR,IAAIgmB,EAAE,KAAK,IAAI,EAAE;MACfA,EAAE,GAAGF,EAAE;MACPG,EAAE,GAAGF,EAAE;KACR,MAAM;MACLC,EAAE,GAAGF,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC;MACnBG,EAAE,GAAGF,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC;;IAGrBjR,GAAG,CAACiT,gBAAgB,CAAC/B,EAAE,EAAEC,EAAE,EAAEjmB,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;IACxCgmB,EAAE,GAAGF,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC;IACnBG,EAAE,GAAGF,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC;IACnBD,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT,OAAQ+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;GAClB;EAED+mB,CAACA,CAACjS,GAAG,EAAE9U,CAAC,EAAE;IACR,IAAIgmB,EAAE,KAAK,IAAI,EAAE;MACfA,EAAE,GAAGF,EAAE;MACPG,EAAE,GAAGF,EAAE;KACR,MAAM;MACLC,EAAE,GAAGF,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC;MACnBG,EAAE,GAAGF,EAAE,IAAIE,EAAE,GAAGF,EAAE,CAAC;;IAGrBjR,GAAG,CAACiT,gBAAgB,CAAC/B,EAAE,EAAEC,EAAE,EAAEH,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC,EAAE+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD8lB,EAAE,IAAI9lB,CAAC,CAAC,CAAC,CAAC;IACV,OAAQ+lB,EAAE,IAAI/lB,CAAC,CAAC,CAAC,CAAC;GACnB;EAEDqmB,CAACA,CAACvR,GAAG,EAAE9U,CAAC,EAAE;IACRgoB,QAAQ,CAAClT,GAAG,EAAEgR,EAAE,EAAEC,EAAE,EAAE/lB,CAAC,CAAC;IACxB8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT,OAAQ+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;GAClB;EAEDA,CAACA,CAAC8U,GAAG,EAAE9U,CAAC,EAAE;IACRA,CAAC,CAAC,CAAC,CAAC,IAAI8lB,EAAE;IACV9lB,CAAC,CAAC,CAAC,CAAC,IAAI+lB,EAAE;IACViC,QAAQ,CAAClT,GAAG,EAAEgR,EAAE,EAAEC,EAAE,EAAE/lB,CAAC,CAAC;IACxB8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT,OAAQ+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;GAClB;EAEDymB,CAACA,CAAC3R,GAAG,EAAE9U,CAAC,EAAE;IACR8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACT+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACTgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACd,OAAOnR,GAAG,CAACmT,MAAM,CAACnC,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAED1kB,CAACA,CAACyT,GAAG,EAAE9U,CAAC,EAAE;IACR8lB,EAAE,IAAI9lB,CAAC,CAAC,CAAC,CAAC;IACV+lB,EAAE,IAAI/lB,CAAC,CAAC,CAAC,CAAC;IACVgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACd,OAAOnR,GAAG,CAACmT,MAAM,CAACnC,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAEDQ,CAACA,CAACzR,GAAG,EAAE9U,CAAC,EAAE;IACR8lB,EAAE,GAAG9lB,CAAC,CAAC,CAAC,CAAC;IACTgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACd,OAAOnR,GAAG,CAACmT,MAAM,CAACnC,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAEDS,CAACA,CAAC1R,GAAG,EAAE9U,CAAC,EAAE;IACR8lB,EAAE,IAAI9lB,CAAC,CAAC,CAAC,CAAC;IACVgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACd,OAAOnR,GAAG,CAACmT,MAAM,CAACnC,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAEDzV,CAACA,CAACwE,GAAG,EAAE9U,CAAC,EAAE;IACR+lB,EAAE,GAAG/lB,CAAC,CAAC,CAAC,CAAC;IACTgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACd,OAAOnR,GAAG,CAACmT,MAAM,CAACnC,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAED1W,CAACA,CAACyF,GAAG,EAAE9U,CAAC,EAAE;IACR+lB,EAAE,IAAI/lB,CAAC,CAAC,CAAC,CAAC;IACVgmB,EAAE,GAAGC,EAAE,GAAG,IAAI;IACd,OAAOnR,GAAG,CAACmT,MAAM,CAACnC,EAAE,EAAEC,EAAE,CAAC;GAC1B;EAEDiB,CAACA,CAAClS,GAAG,EAAE;IACLA,GAAG,CAACoT,SAAS,EAAE;IACfpC,EAAE,GAAGI,EAAE;IACP,OAAQH,EAAE,GAAGI,EAAE;GAChB;EAEDc,CAACA,CAACnS,GAAG,EAAE;IACLA,GAAG,CAACoT,SAAS,EAAE;IACfpC,EAAE,GAAGI,EAAE;IACP,OAAQH,EAAE,GAAGI,EAAE;;AAEnB,CAAC;AAED,MAAM6B,QAAQ,GAAG,UAASlT,GAAG,EAAEzI,CAAC,EAAE8b,CAAC,EAAEC,MAAM,EAAE;EAC3C,MAAM,CAACC,EAAE,EAAEC,EAAE,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAGP,MAAM;EAClD,MAAMQ,IAAI,GAAGC,aAAa,CAACH,EAAE,EAAEC,EAAE,EAAEN,EAAE,EAAEC,EAAE,EAAEE,KAAK,EAAEC,KAAK,EAAEF,GAAG,EAAElc,CAAC,EAAE8b,CAAC,CAAC;EAEnE,KAAK,IAAIW,GAAG,IAAIF,IAAI,EAAE;IACpB,MAAMG,GAAG,GAAGC,eAAe,CAAC,GAAGF,GAAG,CAAC;IACnChU,GAAG,CAACgT,aAAa,CAAC,GAAGiB,GAAG,CAAC;;AAE7B,CAAC;;AAED;AACA,MAAMF,aAAa,GAAG,UAASxc,CAAC,EAAE8b,CAAC,EAAEE,EAAE,EAAEC,EAAE,EAAEE,KAAK,EAAEC,KAAK,EAAEQ,OAAO,EAAEC,EAAE,EAAEC,EAAE,EAAE;EAC1E,MAAMC,EAAE,GAAGH,OAAO,IAAI9lB,IAAI,CAACkmB,EAAE,GAAG,GAAG,CAAC;EACpC,MAAMC,MAAM,GAAGnmB,IAAI,CAAComB,GAAG,CAACH,EAAE,CAAC;EAC3B,MAAMI,MAAM,GAAGrmB,IAAI,CAACsmB,GAAG,CAACL,EAAE,CAAC;EAC3Bf,EAAE,GAAGllB,IAAI,CAACumB,GAAG,CAACrB,EAAE,CAAC;EACjBC,EAAE,GAAGnlB,IAAI,CAACumB,GAAG,CAACpB,EAAE,CAAC;EACjBtC,EAAE,GAAGwD,MAAM,IAAIN,EAAE,GAAG7c,CAAC,CAAC,GAAG,GAAG,GAAGid,MAAM,IAAIH,EAAE,GAAGhB,CAAC,CAAC,GAAG,GAAG;EACtDlC,EAAE,GAAGuD,MAAM,IAAIL,EAAE,GAAGhB,CAAC,CAAC,GAAG,GAAG,GAAGmB,MAAM,IAAIJ,EAAE,GAAG7c,CAAC,CAAC,GAAG,GAAG;EACtD,IAAIsd,EAAE,GAAI3D,EAAE,GAAGA,EAAE,IAAKqC,EAAE,GAAGA,EAAE,CAAC,GAAIpC,EAAE,GAAGA,EAAE,IAAKqC,EAAE,GAAGA,EAAE,CAAC;EACtD,IAAIqB,EAAE,GAAG,CAAC,EAAE;IACVA,EAAE,GAAGxmB,IAAI,CAACymB,IAAI,CAACD,EAAE,CAAC;IAClBtB,EAAE,IAAIsB,EAAE;IACRrB,EAAE,IAAIqB,EAAE;;EAGV,MAAME,GAAG,GAAGL,MAAM,GAAGnB,EAAE;EACvB,MAAMyB,GAAG,GAAGR,MAAM,GAAGjB,EAAE;EACvB,MAAM0B,GAAG,GAAG,CAACT,MAAM,GAAGhB,EAAE;EACxB,MAAM0B,GAAG,GAAGR,MAAM,GAAGlB,EAAE;EACvB,MAAM2B,EAAE,GAAGJ,GAAG,GAAGX,EAAE,GAAGY,GAAG,GAAGX,EAAE;EAC9B,MAAMe,EAAE,GAAGH,GAAG,GAAGb,EAAE,GAAGc,GAAG,GAAGb,EAAE;EAC9B,MAAM/P,EAAE,GAAGyQ,GAAG,GAAGxd,CAAC,GAAGyd,GAAG,GAAG3B,CAAC;EAC5B,MAAM9O,EAAE,GAAG0Q,GAAG,GAAG1d,CAAC,GAAG2d,GAAG,GAAG7B,CAAC;EAE5B,MAAMgC,CAAC,GAAG,CAAC/Q,EAAE,GAAG6Q,EAAE,KAAK7Q,EAAE,GAAG6Q,EAAE,CAAC,GAAG,CAAC5Q,EAAE,GAAG6Q,EAAE,KAAK7Q,EAAE,GAAG6Q,EAAE,CAAC;EACvD,IAAIE,UAAU,GAAG,CAAC,GAAGD,CAAC,GAAG,IAAI;EAC7B,IAAIC,UAAU,GAAG,CAAC,EAAE;IAClBA,UAAU,GAAG,CAAC;;EAEhB,IAAIC,OAAO,GAAGlnB,IAAI,CAACymB,IAAI,CAACQ,UAAU,CAAC;EACnC,IAAI3B,KAAK,KAAKD,KAAK,EAAE;IACnB6B,OAAO,GAAG,CAACA,OAAO;;EAGpB,MAAMC,EAAE,GAAG,GAAG,IAAIL,EAAE,GAAG7Q,EAAE,CAAC,GAAGiR,OAAO,IAAIhR,EAAE,GAAG6Q,EAAE,CAAC;EAChD,MAAMK,EAAE,GAAG,GAAG,IAAIL,EAAE,GAAG7Q,EAAE,CAAC,GAAGgR,OAAO,IAAIjR,EAAE,GAAG6Q,EAAE,CAAC;EAEhD,MAAMO,GAAG,GAAGrnB,IAAI,CAACsnB,KAAK,CAACP,EAAE,GAAGK,EAAE,EAAEN,EAAE,GAAGK,EAAE,CAAC;EACxC,MAAMI,GAAG,GAAGvnB,IAAI,CAACsnB,KAAK,CAACpR,EAAE,GAAGkR,EAAE,EAAEnR,EAAE,GAAGkR,EAAE,CAAC;EAExC,IAAIK,MAAM,GAAGD,GAAG,GAAGF,GAAG;EACtB,IAAIG,MAAM,GAAG,CAAC,IAAIlC,KAAK,KAAK,CAAC,EAAE;IAC7BkC,MAAM,IAAI,CAAC,GAAGxnB,IAAI,CAACkmB,EAAE;GACtB,MAAM,IAAIsB,MAAM,GAAG,CAAC,IAAIlC,KAAK,KAAK,CAAC,EAAE;IACpCkC,MAAM,IAAI,CAAC,GAAGxnB,IAAI,CAACkmB,EAAE;;EAGvB,MAAMuB,QAAQ,GAAGznB,IAAI,CAACyQ,IAAI,CAACzQ,IAAI,CAACumB,GAAG,CAACiB,MAAM,IAAIxnB,IAAI,CAACkmB,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;EACtE,MAAMwB,MAAM,GAAG,EAAE;EAEjB,KAAK,IAAIvpB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGspB,QAAQ,EAAEtpB,CAAC,EAAE,EAAE;IACjC,MAAMwpB,GAAG,GAAGN,GAAG,GAAIlpB,CAAC,GAAGqpB,MAAM,GAAIC,QAAQ;IACzC,MAAMG,GAAG,GAAGP,GAAG,GAAI,CAAClpB,CAAC,GAAG,CAAC,IAAIqpB,MAAM,GAAIC,QAAQ;IAC/CC,MAAM,CAACvpB,CAAC,CAAC,GAAG,CAACgpB,EAAE,EAAEC,EAAE,EAAEO,GAAG,EAAEC,GAAG,EAAE1C,EAAE,EAAEC,EAAE,EAAEgB,MAAM,EAAEE,MAAM,CAAC;;EAGxD,OAAOqB,MAAM;AACf,CAAC;AAED,MAAM7B,eAAe,GAAG,UAASlD,EAAE,EAAEC,EAAE,EAAEyE,GAAG,EAAEE,GAAG,EAAErC,EAAE,EAAEC,EAAE,EAAEgB,MAAM,EAAEE,MAAM,EAAE;EACzE,MAAMK,GAAG,GAAGL,MAAM,GAAGnB,EAAE;EACvB,MAAMyB,GAAG,GAAG,CAACR,MAAM,GAAGhB,EAAE;EACxB,MAAMyB,GAAG,GAAGT,MAAM,GAAGjB,EAAE;EACvB,MAAM2B,GAAG,GAAGR,MAAM,GAAGlB,EAAE;EAEvB,MAAM0C,OAAO,GAAG,GAAG,IAAIN,GAAG,GAAGF,GAAG,CAAC;EACjC,MAAMzD,CAAC,GACH,CAAC,GAAG,CAAC,GAAI5jB,IAAI,CAAComB,GAAG,CAACyB,OAAO,GAAG,GAAG,CAAC,GAAG7nB,IAAI,CAAComB,GAAG,CAACyB,OAAO,GAAG,GAAG,CAAC,GAC5D7nB,IAAI,CAAComB,GAAG,CAACyB,OAAO,CAAC;EACnB,MAAM5R,EAAE,GAAG0M,EAAE,GAAG3iB,IAAI,CAACsmB,GAAG,CAACe,GAAG,CAAC,GAAGzD,CAAC,GAAG5jB,IAAI,CAAComB,GAAG,CAACiB,GAAG,CAAC;EACjD,MAAMnR,EAAE,GAAG0M,EAAE,GAAG5iB,IAAI,CAAComB,GAAG,CAACiB,GAAG,CAAC,GAAGzD,CAAC,GAAG5jB,IAAI,CAACsmB,GAAG,CAACe,GAAG,CAAC;EACjD,MAAMS,EAAE,GAAGnF,EAAE,GAAG3iB,IAAI,CAACsmB,GAAG,CAACiB,GAAG,CAAC;EAC7B,MAAMQ,EAAE,GAAGnF,EAAE,GAAG5iB,IAAI,CAAComB,GAAG,CAACmB,GAAG,CAAC;EAC7B,MAAMpR,EAAE,GAAG2R,EAAE,GAAGlE,CAAC,GAAG5jB,IAAI,CAAComB,GAAG,CAACmB,GAAG,CAAC;EACjC,MAAMnR,EAAE,GAAG2R,EAAE,GAAGnE,CAAC,GAAG5jB,IAAI,CAACsmB,GAAG,CAACiB,GAAG,CAAC;EAEjC,OAAO,CACLb,GAAG,GAAGzQ,EAAE,GAAG0Q,GAAG,GAAGzQ,EAAE,EACnB0Q,GAAG,GAAG3Q,EAAE,GAAG4Q,GAAG,GAAG3Q,EAAE,EACnBwQ,GAAG,GAAGvQ,EAAE,GAAGwQ,GAAG,GAAGvQ,EAAE,EACnBwQ,GAAG,GAAGzQ,EAAE,GAAG0Q,GAAG,GAAGzQ,EAAE,EACnBsQ,GAAG,GAAGoB,EAAE,GAAGnB,GAAG,GAAGoB,EAAE,EACnBnB,GAAG,GAAGkB,EAAE,GAAGjB,GAAG,GAAGkB,EAAE,CACpB;AACH,CAAC;AAED,MAAMC,OAAO,CAAC;EACZ,OAAOje,KAAKA,CAAC4H,GAAG,EAAEqS,IAAI,EAAE;IACtB,MAAMQ,QAAQ,GAAGT,KAAK,CAACC,IAAI,CAAC;IAC5Bja,KAAK,CAACya,QAAQ,EAAE7S,GAAG,CAAC;;AAExB;;AC1ZA,MAAM;UAAE7R;AAAO,CAAC,GAAGzC,SAAS;;AAE5B;AACA;AACA,MAAM4qB,KAAK,GAAG,GAAG,IAAI,CAACjoB,IAAI,CAACymB,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC;AAChD,kBAAe;EACbyB,UAAUA,GAAG;IACX,IAAI,CAACtS,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,OAAQ,IAAI,CAACuS,SAAS,GAAG,EAAE;GAC5B;EAEDC,IAAIA,GAAG;IACL,IAAI,CAACD,SAAS,CAAC/qB,IAAI,CAAC,IAAI,CAACwY,IAAI,CAAC/X,KAAK,EAAE,CAAC;;IAEtC,OAAO,IAAI,CAACkY,UAAU,CAAC,GAAG,CAAC;GAC5B;EAEDsS,OAAOA,GAAG;IACR,IAAI,CAACzS,IAAI,GAAG,IAAI,CAACuS,SAAS,CAACG,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,OAAO,IAAI,CAACvS,UAAU,CAAC,GAAG,CAAC;GAC5B;EAEDgP,SAASA,GAAG;IACV,OAAO,IAAI,CAAChP,UAAU,CAAC,GAAG,CAAC;GAC5B;EAEDwS,SAASA,CAACC,CAAC,EAAE;IACX,OAAO,IAAI,CAACzS,UAAU,CAAE,GAAEjW,QAAM,CAAC0oB,CAAC,CAAE,IAAG,CAAC;GACzC;EAEDC,WAAW,EAAE;IACXC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;GACT;EAEDC,OAAOA,CAAC7pB,CAAC,EAAE;IACT,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;MACzBA,CAAC,GAAG,IAAI,CAACypB,WAAW,CAACzpB,CAAC,CAACoG,WAAW,EAAE,CAAC;;IAEvC,OAAO,IAAI,CAAC2Q,UAAU,CAAE,GAAE/W,CAAE,IAAG,CAAC;GACjC;EAED8pB,YAAY,EAAE;IACZC,KAAK,EAAE,CAAC;IACRJ,KAAK,EAAE,CAAC;IACRK,KAAK,EAAE;GACR;EAEDC,QAAQA,CAACvY,CAAC,EAAE;IACV,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;MACzBA,CAAC,GAAG,IAAI,CAACoY,YAAY,CAACpY,CAAC,CAACtL,WAAW,EAAE,CAAC;;IAExC,OAAO,IAAI,CAAC2Q,UAAU,CAAE,GAAErF,CAAE,IAAG,CAAC;GACjC;EAEDwY,UAAUA,CAACpW,CAAC,EAAE;IACZ,OAAO,IAAI,CAACiD,UAAU,CAAE,GAAEjW,QAAM,CAACgT,CAAC,CAAE,IAAG,CAAC;GACzC;EAEDqW,IAAIA,CAAClsB,MAAM,EAAEf,OAAO,GAAG,EAAE,EAAE;IACzB,MAAMktB,cAAc,GAAGnsB,MAAM;IAC7B,IAAI,CAACW,KAAK,CAAC6B,OAAO,CAACxC,MAAM,CAAC,EAAE;MAC1BA,MAAM,GAAG,CAACA,MAAM,EAAEf,OAAO,CAACwc,KAAK,IAAIzb,MAAM,CAAC;;IAG5C,MAAMosB,KAAK,GAAGpsB,MAAM,CAACqsB,KAAK,CAACpgB,CAAC,IAAIqgB,MAAM,CAACC,QAAQ,CAACtgB,CAAC,CAAC,IAAIA,CAAC,GAAG,CAAC,CAAC;IAC5D,IAAI,CAACmgB,KAAK,EAAE;MACV,MAAM,IAAIttB,KAAK,CACZ,QAAO0tB,IAAI,CAACC,SAAS,CAACN,cAAc,CAAE,KAAIK,IAAI,CAACC,SAAS,CACvDxtB,OACF,CAAE,0DACJ,CAAC;;IAGHe,MAAM,GAAGA,MAAM,CAAC0C,GAAG,CAACG,QAAM,CAAC,CAACrC,IAAI,CAAC,GAAG,CAAC;IACrC,OAAO,IAAI,CAACsY,UAAU,CAAE,IAAG9Y,MAAO,KAAI6C,QAAM,CAAC5D,OAAO,CAACytB,KAAK,IAAI,CAAC,CAAE,IAAG,CAAC;GACtE;EAEDC,MAAMA,GAAG;IACP,OAAO,IAAI,CAAC7T,UAAU,CAAC,QAAQ,CAAC;GACjC;EAED2O,MAAMA,CAACxb,CAAC,EAAE8b,CAAC,EAAE;IACX,OAAO,IAAI,CAACjP,UAAU,CAAE,GAAEjW,QAAM,CAACoJ,CAAC,CAAE,IAAGpJ,QAAM,CAACklB,CAAC,CAAE,IAAG,CAAC;GACtD;EAEDF,MAAMA,CAAC5b,CAAC,EAAE8b,CAAC,EAAE;IACX,OAAO,IAAI,CAACjP,UAAU,CAAE,GAAEjW,QAAM,CAACoJ,CAAC,CAAE,IAAGpJ,QAAM,CAACklB,CAAC,CAAE,IAAG,CAAC;GACtD;EAEDL,aAAaA,CAACkF,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE9gB,CAAC,EAAE8b,CAAC,EAAE;IAC1C,OAAO,IAAI,CAACjP,UAAU,CACnB,GAAEjW,QAAM,CAAC+pB,IAAI,CAAE,IAAG/pB,QAAM,CAACgqB,IAAI,CAAE,IAAGhqB,QAAM,CAACiqB,IAAI,CAAE,IAAGjqB,QAAM,CAACkqB,IAAI,CAAE,IAAGlqB,QAAM,CACvEoJ,CACF,CAAE,IAAGpJ,QAAM,CAACklB,CAAC,CAAE,IACjB,CAAC;GACF;EAEDJ,gBAAgBA,CAACqF,GAAG,EAAEC,GAAG,EAAEhhB,CAAC,EAAE8b,CAAC,EAAE;IAC/B,OAAO,IAAI,CAACjP,UAAU,CACnB,GAAEjW,QAAM,CAACmqB,GAAG,CAAE,IAAGnqB,QAAM,CAACoqB,GAAG,CAAE,IAAGpqB,QAAM,CAACoJ,CAAC,CAAE,IAAGpJ,QAAM,CAACklB,CAAC,CAAE,IAC1D,CAAC;GACF;EAEDmF,IAAIA,CAACjhB,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAE;IACf,OAAO,IAAI,CAACtN,UAAU,CACnB,GAAEjW,QAAM,CAACoJ,CAAC,CAAE,IAAGpJ,QAAM,CAACklB,CAAC,CAAE,IAAGllB,QAAM,CAAC0oB,CAAC,CAAE,IAAG1oB,QAAM,CAACujB,CAAC,CAAE,KACtD,CAAC;GACF;EAED+G,WAAWA,CAAClhB,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAElX,CAAC,EAAE;IACzB,IAAIA,CAAC,IAAI,IAAI,EAAE;MACbA,CAAC,GAAG,CAAC;;IAEPA,CAAC,GAAGnM,IAAI,CAACoP,GAAG,CAACjD,CAAC,EAAE,GAAG,GAAGqc,CAAC,EAAE,GAAG,GAAGnF,CAAC,CAAC;;;IAGjC,MAAMrkB,CAAC,GAAGmN,CAAC,IAAI,GAAG,GAAG8b,KAAK,CAAC;IAE3B,IAAI,CAACvD,MAAM,CAACxb,CAAC,GAAGiD,CAAC,EAAE6Y,CAAC,CAAC;IACrB,IAAI,CAACF,MAAM,CAAC5b,CAAC,GAAGsf,CAAC,GAAGrc,CAAC,EAAE6Y,CAAC,CAAC;IACzB,IAAI,CAACL,aAAa,CAACzb,CAAC,GAAGsf,CAAC,GAAGxpB,CAAC,EAAEgmB,CAAC,EAAE9b,CAAC,GAAGsf,CAAC,EAAExD,CAAC,GAAGhmB,CAAC,EAAEkK,CAAC,GAAGsf,CAAC,EAAExD,CAAC,GAAG7Y,CAAC,CAAC;IAC5D,IAAI,CAAC2Y,MAAM,CAAC5b,CAAC,GAAGsf,CAAC,EAAExD,CAAC,GAAG3B,CAAC,GAAGlX,CAAC,CAAC;IAC7B,IAAI,CAACwY,aAAa,CAACzb,CAAC,GAAGsf,CAAC,EAAExD,CAAC,GAAG3B,CAAC,GAAGrkB,CAAC,EAAEkK,CAAC,GAAGsf,CAAC,GAAGxpB,CAAC,EAAEgmB,CAAC,GAAG3B,CAAC,EAAEna,CAAC,GAAGsf,CAAC,GAAGrc,CAAC,EAAE6Y,CAAC,GAAG3B,CAAC,CAAC;IACxE,IAAI,CAACyB,MAAM,CAAC5b,CAAC,GAAGiD,CAAC,EAAE6Y,CAAC,GAAG3B,CAAC,CAAC;IACzB,IAAI,CAACsB,aAAa,CAACzb,CAAC,GAAGlK,CAAC,EAAEgmB,CAAC,GAAG3B,CAAC,EAAEna,CAAC,EAAE8b,CAAC,GAAG3B,CAAC,GAAGrkB,CAAC,EAAEkK,CAAC,EAAE8b,CAAC,GAAG3B,CAAC,GAAGlX,CAAC,CAAC;IAC5D,IAAI,CAAC2Y,MAAM,CAAC5b,CAAC,EAAE8b,CAAC,GAAG7Y,CAAC,CAAC;IACrB,IAAI,CAACwY,aAAa,CAACzb,CAAC,EAAE8b,CAAC,GAAGhmB,CAAC,EAAEkK,CAAC,GAAGlK,CAAC,EAAEgmB,CAAC,EAAE9b,CAAC,GAAGiD,CAAC,EAAE6Y,CAAC,CAAC;IAChD,OAAO,IAAI,CAACD,SAAS,EAAE;GACxB;EAEDsF,OAAOA,CAACnhB,CAAC,EAAE8b,CAAC,EAAEtO,EAAE,EAAEC,EAAE,EAAE;;IAEpB,IAAIA,EAAE,IAAI,IAAI,EAAE;MACdA,EAAE,GAAGD,EAAE;;IAETxN,CAAC,IAAIwN,EAAE;IACPsO,CAAC,IAAIrO,EAAE;IACP,MAAMoP,EAAE,GAAGrP,EAAE,GAAGuR,KAAK;IACrB,MAAMjC,EAAE,GAAGrP,EAAE,GAAGsR,KAAK;IACrB,MAAMqC,EAAE,GAAGphB,CAAC,GAAGwN,EAAE,GAAG,CAAC;IACrB,MAAM6T,EAAE,GAAGvF,CAAC,GAAGrO,EAAE,GAAG,CAAC;IACrB,MAAM6T,EAAE,GAAGthB,CAAC,GAAGwN,EAAE;IACjB,MAAM+T,EAAE,GAAGzF,CAAC,GAAGrO,EAAE;IAEjB,IAAI,CAAC+N,MAAM,CAACxb,CAAC,EAAEuhB,EAAE,CAAC;IAClB,IAAI,CAAC9F,aAAa,CAACzb,CAAC,EAAEuhB,EAAE,GAAGzE,EAAE,EAAEwE,EAAE,GAAGzE,EAAE,EAAEf,CAAC,EAAEwF,EAAE,EAAExF,CAAC,CAAC;IACjD,IAAI,CAACL,aAAa,CAAC6F,EAAE,GAAGzE,EAAE,EAAEf,CAAC,EAAEsF,EAAE,EAAEG,EAAE,GAAGzE,EAAE,EAAEsE,EAAE,EAAEG,EAAE,CAAC;IACnD,IAAI,CAAC9F,aAAa,CAAC2F,EAAE,EAAEG,EAAE,GAAGzE,EAAE,EAAEwE,EAAE,GAAGzE,EAAE,EAAEwE,EAAE,EAAEC,EAAE,EAAED,EAAE,CAAC;IACpD,IAAI,CAAC5F,aAAa,CAAC6F,EAAE,GAAGzE,EAAE,EAAEwE,EAAE,EAAErhB,CAAC,EAAEuhB,EAAE,GAAGzE,EAAE,EAAE9c,CAAC,EAAEuhB,EAAE,CAAC;IAClD,OAAO,IAAI,CAAC1F,SAAS,EAAE;GACxB;EAED2F,MAAMA,CAACxhB,CAAC,EAAE8b,CAAC,EAAE2F,MAAM,EAAE;IACnB,OAAO,IAAI,CAACN,OAAO,CAACnhB,CAAC,EAAE8b,CAAC,EAAE2F,MAAM,CAAC;GAClC;EAEDC,GAAGA,CAAC1hB,CAAC,EAAE8b,CAAC,EAAE2F,MAAM,EAAEE,UAAU,EAAEC,QAAQ,EAAEC,aAAa,EAAE;IACrD,IAAIA,aAAa,IAAI,IAAI,EAAE;MACzBA,aAAa,GAAG,KAAK;;IAEvB,MAAMC,MAAM,GAAG,GAAG,GAAGhrB,IAAI,CAACkmB,EAAE;IAC5B,MAAM+E,OAAO,GAAG,GAAG,GAAGjrB,IAAI,CAACkmB,EAAE;IAE7B,IAAIgF,QAAQ,GAAGJ,QAAQ,GAAGD,UAAU;IAEpC,IAAI7qB,IAAI,CAACumB,GAAG,CAAC2E,QAAQ,CAAC,GAAGF,MAAM,EAAE;;MAE/BE,QAAQ,GAAGF,MAAM;KAClB,MAAM,IAAIE,QAAQ,KAAK,CAAC,IAAIH,aAAa,KAAKG,QAAQ,GAAG,CAAC,EAAE;;MAE3D,MAAMC,GAAG,GAAGJ,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC;MAClCG,QAAQ,GAAGC,GAAG,GAAGH,MAAM,GAAGE,QAAQ;;IAGpC,MAAME,OAAO,GAAGprB,IAAI,CAACyQ,IAAI,CAACzQ,IAAI,CAACumB,GAAG,CAAC2E,QAAQ,CAAC,GAAGD,OAAO,CAAC;IACvD,MAAMI,MAAM,GAAGH,QAAQ,GAAGE,OAAO;IACjC,MAAME,SAAS,GAAID,MAAM,GAAGJ,OAAO,GAAIhD,KAAK,GAAG0C,MAAM;IACrD,IAAIY,MAAM,GAAGV,UAAU;;;IAGvB,IAAIW,OAAO,GAAG,CAACxrB,IAAI,CAAComB,GAAG,CAACmF,MAAM,CAAC,GAAGD,SAAS;IAC3C,IAAIG,OAAO,GAAGzrB,IAAI,CAACsmB,GAAG,CAACiF,MAAM,CAAC,GAAGD,SAAS;;;IAG1C,IAAII,EAAE,GAAGxiB,CAAC,GAAGlJ,IAAI,CAACsmB,GAAG,CAACiF,MAAM,CAAC,GAAGZ,MAAM;IACtC,IAAIgB,EAAE,GAAG3G,CAAC,GAAGhlB,IAAI,CAAComB,GAAG,CAACmF,MAAM,CAAC,GAAGZ,MAAM;;;IAGtC,IAAI,CAACjG,MAAM,CAACgH,EAAE,EAAEC,EAAE,CAAC;IAEnB,KAAK,IAAIC,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAGR,OAAO,EAAEQ,MAAM,EAAE,EAAE;;MAE/C,MAAM/B,IAAI,GAAG6B,EAAE,GAAGF,OAAO;MACzB,MAAM1B,IAAI,GAAG6B,EAAE,GAAGF,OAAO;;;MAGzBF,MAAM,IAAIF,MAAM;;;MAGhBK,EAAE,GAAGxiB,CAAC,GAAGlJ,IAAI,CAACsmB,GAAG,CAACiF,MAAM,CAAC,GAAGZ,MAAM;MAClCgB,EAAE,GAAG3G,CAAC,GAAGhlB,IAAI,CAAComB,GAAG,CAACmF,MAAM,CAAC,GAAGZ,MAAM;;;MAGlCa,OAAO,GAAG,CAACxrB,IAAI,CAAComB,GAAG,CAACmF,MAAM,CAAC,GAAGD,SAAS;MACvCG,OAAO,GAAGzrB,IAAI,CAACsmB,GAAG,CAACiF,MAAM,CAAC,GAAGD,SAAS;;;MAGtC,MAAMvB,IAAI,GAAG2B,EAAE,GAAGF,OAAO;MACzB,MAAMxB,IAAI,GAAG2B,EAAE,GAAGF,OAAO;;;MAGzB,IAAI,CAAC9G,aAAa,CAACkF,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAE0B,EAAE,EAAEC,EAAE,CAAC;;IAGpD,OAAO,IAAI;GACZ;EAEDE,OAAOA,CAAC,GAAGC,MAAM,EAAE;IACjB,IAAI,CAACpH,MAAM,CAAC,IAAIoH,MAAM,CAACC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,KAAK,IAAIC,KAAK,IAAIF,MAAM,EAAE;MACxB,IAAI,CAAChH,MAAM,CAAC,IAAIkH,KAAK,IAAI,EAAE,CAAC,CAAC;;IAE/B,OAAO,IAAI,CAACjH,SAAS,EAAE;GACxB;EAEDf,IAAIA,CAACA,IAAI,EAAE;IACTgE,OAAO,CAACje,KAAK,CAAC,IAAI,EAAEia,IAAI,CAAC;IACzB,OAAO,IAAI;GACZ;EAEDiI,YAAYA,CAACC,IAAI,EAAE;IACjB,IAAI,WAAW,CAACC,IAAI,CAACD,IAAI,CAAC,EAAE;MAC1B,OAAO,GAAG;;IAGZ,OAAO,EAAE;GACV;EAEDE,IAAIA,CAACna,KAAK,EAAEia,IAAI,EAAE;IAChB,IAAI,yBAAyB,CAACC,IAAI,CAACla,KAAK,CAAC,EAAE;MACzCia,IAAI,GAAGja,KAAK;MACZA,KAAK,GAAG,IAAI;;IAGd,IAAIA,KAAK,EAAE;MACT,IAAI,CAAC0G,SAAS,CAAC1G,KAAK,CAAC;;IAEvB,OAAO,IAAI,CAAC8D,UAAU,CAAE,IAAG,IAAI,CAACkW,YAAY,CAACC,IAAI,CAAE,EAAC,CAAC;GACtD;EAED7W,MAAMA,CAACpD,KAAK,EAAE;IACZ,IAAIA,KAAK,EAAE;MACT,IAAI,CAAC8G,WAAW,CAAC9G,KAAK,CAAC;;IAEzB,OAAO,IAAI,CAAC8D,UAAU,CAAC,GAAG,CAAC;GAC5B;EAEDsW,aAAaA,CAAC1T,SAAS,EAAEI,WAAW,EAAEmT,IAAI,EAAE;IAC1C,IAAInT,WAAW,IAAI,IAAI,EAAE;MACvBA,WAAW,GAAGJ,SAAS;;IAEzB,MAAM2T,UAAU,GAAG,yBAAyB;IAC5C,IAAIA,UAAU,CAACH,IAAI,CAACxT,SAAS,CAAC,EAAE;MAC9BuT,IAAI,GAAGvT,SAAS;MAChBA,SAAS,GAAG,IAAI;;IAGlB,IAAI2T,UAAU,CAACH,IAAI,CAACpT,WAAW,CAAC,EAAE;MAChCmT,IAAI,GAAGnT,WAAW;MAClBA,WAAW,GAAGJ,SAAS;;IAGzB,IAAIA,SAAS,EAAE;MACb,IAAI,CAACA,SAAS,CAACA,SAAS,CAAC;MACzB,IAAI,CAACI,WAAW,CAACA,WAAW,CAAC;;IAG/B,OAAO,IAAI,CAAChD,UAAU,CAAE,IAAG,IAAI,CAACkW,YAAY,CAACC,IAAI,CAAE,EAAC,CAAC;GACtD;EAEDK,IAAIA,CAACL,IAAI,EAAE;IACT,OAAO,IAAI,CAACnW,UAAU,CAAE,IAAG,IAAI,CAACkW,YAAY,CAACC,IAAI,CAAE,IAAG,CAAC;GACxD;EAEDpa,SAASA,CAACS,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAE,EAAEC,EAAE,EAAE;;IAEpC,IAAIL,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,IAAIC,EAAE,KAAK,CAAC,IAAIC,EAAE,KAAK,CAAC,EAAE;;MAE5E,OAAO,IAAI;;IAEb,MAAME,CAAC,GAAG,IAAI,CAAC8C,IAAI;IACnB,MAAM,CAACN,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG7C,CAAC;IAClCA,CAAC,CAAC,CAAC,CAAC,GAAGwC,EAAE,GAAG/C,GAAG,GAAGiD,EAAE,GAAGhD,GAAG;IAC1BM,CAAC,CAAC,CAAC,CAAC,GAAGyC,EAAE,GAAGhD,GAAG,GAAGkD,EAAE,GAAGjD,GAAG;IAC1BM,CAAC,CAAC,CAAC,CAAC,GAAGwC,EAAE,GAAG7C,GAAG,GAAG+C,EAAE,GAAG9C,GAAG;IAC1BI,CAAC,CAAC,CAAC,CAAC,GAAGyC,EAAE,GAAG9C,GAAG,GAAGgD,EAAE,GAAG/C,GAAG;IAC1BI,CAAC,CAAC,CAAC,CAAC,GAAGwC,EAAE,GAAG3C,EAAE,GAAG6C,EAAE,GAAG5C,EAAE,GAAG8C,EAAE;IAC7B5C,CAAC,CAAC,CAAC,CAAC,GAAGyC,EAAE,GAAG5C,EAAE,GAAG8C,EAAE,GAAG7C,EAAE,GAAG+C,EAAE;IAE7B,MAAM6W,MAAM,GAAG,CAACja,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,EAAE,EAAEC,EAAE,CAAC,CAACjT,GAAG,CAACuM,CAAC,IAAIpM,QAAM,CAACoM,CAAC,CAAC,CAAC,CAACzO,IAAI,CAAC,GAAG,CAAC;IACzE,OAAO,IAAI,CAACsY,UAAU,CAAE,GAAEyW,MAAO,KAAI,CAAC;GACvC;EAEDC,SAASA,CAACvjB,CAAC,EAAE8b,CAAC,EAAE;IACd,OAAO,IAAI,CAAClT,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE5I,CAAC,EAAE8b,CAAC,CAAC;GACxC;EAED0H,MAAMA,CAACC,KAAK,EAAEzwB,OAAO,GAAG,EAAE,EAAE;IAC1B,IAAI8oB,CAAC;IACL,MAAM4H,GAAG,GAAID,KAAK,GAAG3sB,IAAI,CAACkmB,EAAE,GAAI,GAAG;IACnC,MAAMI,GAAG,GAAGtmB,IAAI,CAACsmB,GAAG,CAACsG,GAAG,CAAC;IACzB,MAAMxG,GAAG,GAAGpmB,IAAI,CAAComB,GAAG,CAACwG,GAAG,CAAC;IACzB,IAAI1jB,CAAC,GAAI8b,CAAC,GAAG,CAAE;IAEf,IAAI9oB,OAAO,CAAC2wB,MAAM,IAAI,IAAI,EAAE;MAC1B,CAAC3jB,CAAC,EAAE8b,CAAC,CAAC,GAAG9oB,OAAO,CAAC2wB,MAAM;MACvB,MAAM5W,EAAE,GAAG/M,CAAC,GAAGod,GAAG,GAAGtB,CAAC,GAAGoB,GAAG;MAC5B,MAAMlQ,EAAE,GAAGhN,CAAC,GAAGkd,GAAG,GAAGpB,CAAC,GAAGsB,GAAG;MAC5Bpd,CAAC,IAAI+M,EAAE;MACP+O,CAAC,IAAI9O,EAAE;;IAGT,OAAO,IAAI,CAACpE,SAAS,CAACwU,GAAG,EAAEF,GAAG,EAAE,CAACA,GAAG,EAAEE,GAAG,EAAEpd,CAAC,EAAE8b,CAAC,CAAC;GACjD;EAED8H,KAAKA,CAACC,OAAO,EAAEC,OAAO,EAAE9wB,OAAO,GAAG,EAAE,EAAE;IACpC,IAAI8oB,CAAC;IACL,IAAIgI,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAGD,OAAO;;IAEnB,IAAI,OAAOC,OAAO,KAAK,QAAQ,EAAE;MAC/B9wB,OAAO,GAAG8wB,OAAO;MACjBA,OAAO,GAAGD,OAAO;;IAGnB,IAAI7jB,CAAC,GAAI8b,CAAC,GAAG,CAAE;IACf,IAAI9oB,OAAO,CAAC2wB,MAAM,IAAI,IAAI,EAAE;MAC1B,CAAC3jB,CAAC,EAAE8b,CAAC,CAAC,GAAG9oB,OAAO,CAAC2wB,MAAM;MACvB3jB,CAAC,IAAI6jB,OAAO,GAAG7jB,CAAC;MAChB8b,CAAC,IAAIgI,OAAO,GAAGhI,CAAC;;IAGlB,OAAO,IAAI,CAAClT,SAAS,CAACib,OAAO,EAAE,CAAC,EAAE,CAAC,EAAEC,OAAO,EAAE9jB,CAAC,EAAE8b,CAAC,CAAC;;AAEvD,CAAC;;AC3VD,MAAMiI,YAAY,GAAG;EACnB,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE;AACP,CAAC;AAED,MAAMC,UAAU,GAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAACC,KAAK,CAAC,KAAK,CAAC;AAEd,MAAMC,OAAO,CAAC;EACZ,OAAOC,IAAIA,CAACC,QAAQ,EAAE;IACpB,OAAO,IAAIF,OAAO,CAACG,EAAE,CAACC,YAAY,CAACF,QAAQ,EAAE,MAAM,CAAC,CAAC;;EAGvDrxB,WAAWA,CAACwxB,QAAQ,EAAE;IACpB,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,UAAU,GAAG,EAAE;IACpB,IAAI,CAACC,WAAW,GAAG,EAAE;IACrB,IAAI,CAACC,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,SAAS,GAAG,EAAE;IAEnB,IAAI,CAAC9J,KAAK,EAAE;;IAEZ,IAAI,CAAC+J,UAAU,GAAG,IAAIlwB,KAAK,CAAC,GAAG,CAAC;IAChC,KAAK,IAAImwB,IAAI,GAAG,CAAC,EAAEA,IAAI,IAAI,GAAG,EAAEA,IAAI,EAAE,EAAE;MACtC,IAAI,CAACD,UAAU,CAACC,IAAI,CAAC,GAAG,IAAI,CAACJ,WAAW,CAACT,UAAU,CAACa,IAAI,CAAC,CAAC;;IAG5D,IAAI,CAACxU,IAAI,GAAG,IAAI,CAACmU,UAAU,CAAC,UAAU,CAAC,CAACP,KAAK,CAAC,KAAK,CAAC,CAACxtB,GAAG,CAACC,CAAC,IAAI,CAACA,CAAC,CAAC;IACjE,IAAI,CAACouB,QAAQ,GAAG,EAAE,IAAI,CAACN,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAACO,SAAS,GAAG,EAAE,IAAI,CAACP,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAACQ,OAAO,GAAG,EAAE,IAAI,CAACR,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAACS,SAAS,GAAG,EAAE,IAAI,CAACT,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAACU,OAAO,GACV,IAAI,CAAC7U,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAACA,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAACyU,QAAQ,GAAG,IAAI,CAACC,SAAS,CAAC;;EAGlElK,KAAKA,GAAG;IACN,IAAIsK,OAAO,GAAG,EAAE;IAChB,KAAK,IAAIC,IAAI,IAAI,IAAI,CAACb,QAAQ,CAACN,KAAK,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAIoB,KAAK;MACT,IAAI1xB,CAAC;MACL,IAAK0xB,KAAK,GAAGD,IAAI,CAACC,KAAK,CAAC,aAAa,CAAC,EAAG;QACvCF,OAAO,GAAGE,KAAK,CAAC,CAAC,CAAC;QAClB;OACD,MAAM,IAAKA,KAAK,GAAGD,IAAI,CAACC,KAAK,CAAC,WAAW,CAAC,EAAG;QAC5CF,OAAO,GAAG,EAAE;QACZ;;MAGF,QAAQA,OAAO;QACb,KAAK,aAAa;UAChBE,KAAK,GAAGD,IAAI,CAACC,KAAK,CAAC,eAAe,CAAC;UACnC,IAAIjyB,GAAG,GAAGiyB,KAAK,CAAC,CAAC,CAAC;UAClB,IAAI/mB,KAAK,GAAG+mB,KAAK,CAAC,CAAC,CAAC;UAEpB,IAAK1xB,CAAC,GAAG,IAAI,CAAC6wB,UAAU,CAACpxB,GAAG,CAAC,EAAG;YAC9B,IAAI,CAACsB,KAAK,CAAC6B,OAAO,CAAC5C,CAAC,CAAC,EAAE;cACrBA,CAAC,GAAG,IAAI,CAAC6wB,UAAU,CAACpxB,GAAG,CAAC,GAAG,CAACO,CAAC,CAAC;;YAEhCA,CAAC,CAACO,IAAI,CAACoK,KAAK,CAAC;WACd,MAAM;YACL,IAAI,CAACkmB,UAAU,CAACpxB,GAAG,CAAC,GAAGkL,KAAK;;UAE9B;QAEF,KAAK,aAAa;UAChB,IAAI,CAAC,QAAQ,CAAC2kB,IAAI,CAACmC,IAAI,CAAC,EAAE;YACxB;;UAEF,IAAIpV,IAAI,GAAGoV,IAAI,CAACC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;UAC9C,IAAI,CAACZ,WAAW,CAACzU,IAAI,CAAC,GAAG,CAACoV,IAAI,CAACC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;UAC3D;QAEF,KAAK,WAAW;UACdA,KAAK,GAAGD,IAAI,CAACC,KAAK,CAAC,sCAAsC,CAAC;UAC1D,IAAIA,KAAK,EAAE;YACT,IAAI,CAACV,SAAS,CAACU,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGlW,QAAQ,CAACkW,KAAK,CAAC,CAAC,CAAC,CAAC;;UAEjE;;;;EAKRC,UAAUA,CAACC,IAAI,EAAE;IACf,MAAMC,GAAG,GAAG,EAAE;IACd,KAAK,IAAIvwB,CAAC,GAAG,CAAC,EAAEwwB,GAAG,GAAGF,IAAI,CAACxxB,MAAM,EAAEkB,CAAC,GAAGwwB,GAAG,EAAExwB,CAAC,EAAE,EAAE;MAC/C,IAAI4vB,IAAI,GAAGU,IAAI,CAAC/vB,UAAU,CAACP,CAAC,CAAC;MAC7B4vB,IAAI,GAAGd,YAAY,CAACc,IAAI,CAAC,IAAIA,IAAI;MACjCW,GAAG,CAACtxB,IAAI,CAAC2wB,IAAI,CAACjyB,QAAQ,CAAC,EAAE,CAAC,CAAC;;IAG7B,OAAO4yB,GAAG;;EAGZE,eAAeA,CAACpwB,MAAM,EAAE;IACtB,MAAMqwB,MAAM,GAAG,EAAE;IAEjB,KAAK,IAAI1wB,CAAC,GAAG,CAAC,EAAEwwB,GAAG,GAAGnwB,MAAM,CAACvB,MAAM,EAAEkB,CAAC,GAAGwwB,GAAG,EAAExwB,CAAC,EAAE,EAAE;MACjD,MAAM2wB,QAAQ,GAAGtwB,MAAM,CAACE,UAAU,CAACP,CAAC,CAAC;MACrC0wB,MAAM,CAACzxB,IAAI,CAAC,IAAI,CAAC2xB,gBAAgB,CAACD,QAAQ,CAAC,CAAC;;IAG9C,OAAOD,MAAM;;EAGfE,gBAAgBA,CAAC9mB,SAAS,EAAE;IAC1B,OAAOilB,UAAU,CAACD,YAAY,CAAChlB,SAAS,CAAC,IAAIA,SAAS,CAAC,IAAI,SAAS;;EAGtE+mB,YAAYA,CAACC,KAAK,EAAE;IAClB,OAAO,IAAI,CAACtB,WAAW,CAACsB,KAAK,CAAC,IAAI,CAAC;;EAGrCC,WAAWA,CAACxtB,IAAI,EAAEE,KAAK,EAAE;IACvB,OAAO,IAAI,CAACisB,SAAS,CAACnsB,IAAI,GAAG,IAAI,GAAGE,KAAK,CAAC,IAAI,CAAC;;EAGjDutB,iBAAiBA,CAACN,MAAM,EAAE;IACxB,MAAMO,QAAQ,GAAG,EAAE;IAEnB,KAAK,IAAIje,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG0d,MAAM,CAAC5xB,MAAM,EAAEkU,KAAK,EAAE,EAAE;MAClD,MAAMzP,IAAI,GAAGmtB,MAAM,CAAC1d,KAAK,CAAC;MAC1B,MAAMvP,KAAK,GAAGitB,MAAM,CAAC1d,KAAK,GAAG,CAAC,CAAC;MAC/Bie,QAAQ,CAAChyB,IAAI,CAAC,IAAI,CAAC4xB,YAAY,CAACttB,IAAI,CAAC,GAAG,IAAI,CAACwtB,WAAW,CAACxtB,IAAI,EAAEE,KAAK,CAAC,CAAC;;IAGxE,OAAOwtB,QAAQ;;AAEnB;;AClOA,MAAMC,OAAO,CAAC;EACZpzB,WAAWA,GAAG;EAEdkX,MAAMA,GAAG;IACP,MAAM,IAAIpX,KAAK,CAAC,mCAAmC,CAAC;;EAGtDuzB,aAAaA,GAAG;IACd,MAAM,IAAIvzB,KAAK,CAAC,mCAAmC,CAAC;;EAGtDyJ,GAAGA,GAAG;IACJ,OAAO,IAAI,CAACG,UAAU,IAAI,IAAI,GAC1B,IAAI,CAACA,UAAU,GACd,IAAI,CAACA,UAAU,GAAG,IAAI,CAACxF,QAAQ,CAACqF,GAAG,EAAG;;EAG7C1E,QAAQA,GAAG;IACT,IAAI,IAAI,CAAC+Q,QAAQ,IAAI,IAAI,CAAClM,UAAU,IAAI,IAAI,EAAE;MAC5C;;IAGF,IAAI,CAACkN,KAAK,EAAE;IACZ,OAAQ,IAAI,CAAChB,QAAQ,GAAG,IAAI;;EAG9BgB,KAAKA,GAAG;IACN,MAAM,IAAI9W,KAAK,CAAC,mCAAmC,CAAC;;EAGtDwzB,UAAUA,CAACxqB,IAAI,EAAEyqB,UAAU,EAAE;IAC3B,IAAIA,UAAU,IAAI,IAAI,EAAE;MACtBA,UAAU,GAAG,KAAK;;IAEpB,MAAMC,GAAG,GAAGD,UAAU,GAAG,IAAI,CAACpB,OAAO,GAAG,CAAC;IACzC,OAAQ,CAAC,IAAI,CAACJ,QAAQ,GAAGyB,GAAG,GAAG,IAAI,CAACxB,SAAS,IAAI,IAAI,GAAIlpB,IAAI;;AAEjE;;ACjCA;AACA,MAAM2qB,cAAc,GAAG;EACrBC,OAAOA,GAAG;IACR,OAAOpC,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,mBAAmB,EAAE,MAAM,CAAC;GAChE;EACD,cAAcC,GAAG;IACf,OAAOtC,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,wBAAwB,EAAE,MAAM,CAAC;GACrE;EACD,iBAAiBE,GAAG;IAClB,OAAOvC,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,2BAA2B,EAAE,MAAM,CAAC;GACxE;EACD,qBAAqBG,GAAG;IACtB,OAAOxC,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,+BAA+B,EAAE,MAAM,CAAC;GAC5E;EACDI,SAASA,GAAG;IACV,OAAOzC,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,qBAAqB,EAAE,MAAM,CAAC;GAClE;EACD,gBAAgBK,GAAG;IACjB,OAAO1C,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,0BAA0B,EAAE,MAAM,CAAC;GACvE;EACD,mBAAmBM,GAAG;IACpB,OAAO3C,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,6BAA6B,EAAE,MAAM,CAAC;GAC1E;EACD,uBAAuBO,GAAG;IACxB,OAAO5C,EAAE,CAACC,YAAY,CACpBoC,SAAS,GAAG,iCAAiC,EAC7C,MACF,CAAC;GACF;EACD,aAAaQ,GAAG;IACd,OAAO7C,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,uBAAuB,EAAE,MAAM,CAAC;GACpE;EACD,YAAYS,GAAG;IACb,OAAO9C,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,sBAAsB,EAAE,MAAM,CAAC;GACnE;EACD,cAAcU,GAAG;IACf,OAAO/C,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,wBAAwB,EAAE,MAAM,CAAC;GACrE;EACD,kBAAkBW,GAAG;IACnB,OAAOhD,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,4BAA4B,EAAE,MAAM,CAAC;GACzE;EACDY,MAAMA,GAAG;IACP,OAAOjD,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,kBAAkB,EAAE,MAAM,CAAC;GAC/D;EACDa,YAAYA,GAAG;IACb,OAAOlD,EAAE,CAACC,YAAY,CAACoC,SAAS,GAAG,wBAAwB,EAAE,MAAM,CAAC;;AAExE,CAAC;AAED,MAAMc,YAAY,SAASrB,OAAO,CAAC;EACjCpzB,WAAWA,CAACkE,QAAQ,EAAE+Y,IAAI,EAAE9Y,EAAE,EAAE;IAC9B,KAAK,EAAE;IACP,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC+Y,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC9Y,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACuwB,IAAI,GAAG,IAAIvD,OAAO,CAACsC,cAAc,CAAC,IAAI,CAACxW,IAAI,CAAC,EAAE,CAAC;IACpD,CAAC;MACC8U,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzB1U,IAAI,EAAE,IAAI,CAACA,IAAI;MACf6U,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBF,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBC,SAAS,EAAE,IAAI,CAACA;KACjB,GAAG,IAAI,CAACwC,IAAI;;EAGf9d,KAAKA,GAAG;IACN,IAAI,CAAClN,UAAU,CAACtF,IAAI,GAAG;MACrBuF,IAAI,EAAE,MAAM;MACZgrB,QAAQ,EAAE,IAAI,CAAC1X,IAAI;MACnB7E,OAAO,EAAE,OAAO;MAChBwc,QAAQ,EAAE;KACX;IAED,OAAO,IAAI,CAAClrB,UAAU,CAACvH,GAAG,EAAE;;EAG9B+U,MAAMA,CAACsb,IAAI,EAAE;IACX,MAAMqC,OAAO,GAAG,IAAI,CAACH,IAAI,CAACnC,UAAU,CAACC,IAAI,CAAC;IAC1C,MAAMI,MAAM,GAAG,IAAI,CAAC8B,IAAI,CAAC/B,eAAe,CAAE,GAAEH,IAAK,EAAC,CAAC;IACnD,MAAMW,QAAQ,GAAG,IAAI,CAACuB,IAAI,CAACxB,iBAAiB,CAACN,MAAM,CAAC;IACpD,MAAMkC,SAAS,GAAG,EAAE;IACpB,KAAK,IAAI5yB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0wB,MAAM,CAAC5xB,MAAM,EAAEkB,CAAC,EAAE,EAAE;MACtC,MAAM8wB,KAAK,GAAGJ,MAAM,CAAC1wB,CAAC,CAAC;MACvB4yB,SAAS,CAAC3zB,IAAI,CAAC;QACb4zB,QAAQ,EAAE5B,QAAQ,CAACjxB,CAAC,CAAC;QACrB8yB,QAAQ,EAAE,CAAC;QACXC,OAAO,EAAE,CAAC;QACVC,OAAO,EAAE,CAAC;QACVC,YAAY,EAAE,IAAI,CAACT,IAAI,CAAC3B,YAAY,CAACC,KAAK;OAC3C,CAAC;;IAGJ,OAAO,CAAC6B,OAAO,EAAEC,SAAS,CAAC;;EAG7BzB,aAAaA,CAAC9wB,MAAM,EAAEuG,IAAI,EAAE;IAC1B,MAAM8pB,MAAM,GAAG,IAAI,CAAC8B,IAAI,CAAC/B,eAAe,CAAE,GAAEpwB,MAAO,EAAC,CAAC;IACrD,MAAM4wB,QAAQ,GAAG,IAAI,CAACuB,IAAI,CAACxB,iBAAiB,CAACN,MAAM,CAAC;IAEpD,IAAIxpB,KAAK,GAAG,CAAC;IACb,KAAK,IAAIgsB,OAAO,IAAIjC,QAAQ,EAAE;MAC5B/pB,KAAK,IAAIgsB,OAAO;;IAGlB,MAAMvE,KAAK,GAAG/nB,IAAI,GAAG,IAAI;IACzB,OAAOM,KAAK,GAAGynB,KAAK;;EAGtB,OAAOwE,cAAcA,CAACpY,IAAI,EAAE;IAC1B,OAAOA,IAAI,IAAIwW,cAAc;;AAEjC;;AClHA,MAAM6B,KAAK,GAAG,UAASC,GAAG,EAAE;EAC1B,OAAQ,OAAMA,GAAG,CAAC11B,QAAQ,CAAC,EAAE,CAAE,EAAC,CAAC+B,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM4zB,YAAY,SAASpC,OAAO,CAAC;EACjCpzB,WAAWA,CAACkE,QAAQ,EAAEwwB,IAAI,EAAEvwB,EAAE,EAAE;IAC9B,KAAK,EAAE;IACP,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACwwB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACvwB,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACsxB,MAAM,GAAG,IAAI,CAACf,IAAI,CAACgB,YAAY,EAAE;IACtC,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAACC,MAAM,GAAG,CAAC,IAAI,CAAClB,IAAI,CAACmB,QAAQ,CAAC,CAAC,CAAC,CAACV,YAAY,CAAC;IAElD,IAAI,CAAClY,IAAI,GAAG,IAAI,CAACyX,IAAI,CAACoB,cAAc;IACpC,IAAI,CAACjF,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC6D,IAAI,CAACqB,UAAU;IACxC,IAAI,CAAChE,QAAQ,GAAG,IAAI,CAAC2C,IAAI,CAACsB,MAAM,GAAG,IAAI,CAACnF,KAAK;IAC7C,IAAI,CAACmB,SAAS,GAAG,IAAI,CAAC0C,IAAI,CAACuB,OAAO,GAAG,IAAI,CAACpF,KAAK;IAC/C,IAAI,CAACoB,OAAO,GAAG,IAAI,CAACyC,IAAI,CAACzC,OAAO,GAAG,IAAI,CAACpB,KAAK;IAC7C,IAAI,CAACqB,SAAS,GAAG,IAAI,CAACwC,IAAI,CAACxC,SAAS,GAAG,IAAI,CAACrB,KAAK;IACjD,IAAI,CAACsB,OAAO,GAAG,IAAI,CAACuC,IAAI,CAACvC,OAAO,GAAG,IAAI,CAACtB,KAAK;IAC7C,IAAI,CAACvT,IAAI,GAAG,IAAI,CAACoX,IAAI,CAACpX,IAAI;IAE1B,IAAIpZ,QAAQ,CAACjE,OAAO,CAACi2B,eAAe,KAAK,KAAK,EAAE;MAC9C,IAAI,CAACC,WAAW,GAAG11B,MAAM,CAAC+O,MAAM,CAAC,IAAI,CAAC;;;EAI1C4mB,SAASA,CAAC5D,IAAI,EAAE6D,QAAQ,EAAE;IACxB,MAAMC,GAAG,GAAG,IAAI,CAAC5B,IAAI,CAAC3rB,MAAM,CAACypB,IAAI,EAAE6D,QAAQ,CAAC;;;IAG5C,KAAK,IAAIn0B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGo0B,GAAG,CAACxB,SAAS,CAAC9zB,MAAM,EAAEkB,CAAC,EAAE,EAAE;MAC7C,MAAMq0B,QAAQ,GAAGD,GAAG,CAACxB,SAAS,CAAC5yB,CAAC,CAAC;MACjC,KAAK,IAAI7B,GAAG,IAAIk2B,QAAQ,EAAE;QACxBA,QAAQ,CAACl2B,GAAG,CAAC,IAAI,IAAI,CAACwwB,KAAK;;MAG7B0F,QAAQ,CAACpB,YAAY,GAAGmB,GAAG,CAAC1D,MAAM,CAAC1wB,CAAC,CAAC,CAACizB,YAAY,GAAG,IAAI,CAACtE,KAAK;;IAGjE,OAAOyF,GAAG;;EAGZE,YAAYA,CAAChE,IAAI,EAAE;IACjB,IAAI,CAAC,IAAI,CAAC2D,WAAW,EAAE;MACrB,OAAO,IAAI,CAACC,SAAS,CAAC5D,IAAI,CAAC;;IAE7B,IAAIiE,MAAM;IACV,IAAKA,MAAM,GAAG,IAAI,CAACN,WAAW,CAAC3D,IAAI,CAAC,EAAG;MACrC,OAAOiE,MAAM;;IAGf,MAAMH,GAAG,GAAG,IAAI,CAACF,SAAS,CAAC5D,IAAI,CAAC;IAChC,IAAI,CAAC2D,WAAW,CAAC3D,IAAI,CAAC,GAAG8D,GAAG;IAC5B,OAAOA,GAAG;;EAGZvtB,MAAMA,CAACypB,IAAI,EAAE6D,QAAQ,EAAEK,SAAS,EAAE;;IAEhC,IAAIL,QAAQ,EAAE;MACZ,OAAO,IAAI,CAACD,SAAS,CAAC5D,IAAI,EAAE6D,QAAQ,CAAC;;IAGvC,IAAIzD,MAAM,GAAG8D,SAAS,GAAG,IAAI,GAAG,EAAE;IAClC,IAAI5B,SAAS,GAAG4B,SAAS,GAAG,IAAI,GAAG,EAAE;IACrC,IAAIvB,YAAY,GAAG,CAAC;;;;IAIpB,IAAIj0B,IAAI,GAAG,CAAC;IACZ,IAAIgU,KAAK,GAAG,CAAC;IACb,OAAOA,KAAK,IAAIsd,IAAI,CAACxxB,MAAM,EAAE;MAC3B,IAAI21B,MAAM;MACV,IACGzhB,KAAK,KAAKsd,IAAI,CAACxxB,MAAM,IAAIE,IAAI,GAAGgU,KAAK,KACpCyhB,MAAM,GAAGnE,IAAI,CAACtW,MAAM,CAAChH,KAAK,CAAC,EAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAACoT,QAAQ,CAACqO,MAAM,CAAC,CAAC,EAC7D;QACA,MAAML,GAAG,GAAG,IAAI,CAACE,YAAY,CAAChE,IAAI,CAAC5wB,KAAK,CAACV,IAAI,EAAE,EAAEgU,KAAK,CAAC,CAAC;QACxD,IAAI,CAACwhB,SAAS,EAAE;UACd9D,MAAM,GAAGA,MAAM,CAAC1tB,MAAM,CAACoxB,GAAG,CAAC1D,MAAM,CAAC;UAClCkC,SAAS,GAAGA,SAAS,CAAC5vB,MAAM,CAACoxB,GAAG,CAACxB,SAAS,CAAC;;QAG7CK,YAAY,IAAImB,GAAG,CAACnB,YAAY;QAChCj0B,IAAI,GAAGgU,KAAK;OACb,MAAM;QACLA,KAAK,EAAE;;;IAIX,OAAO;MAAE0d,MAAM;MAAEkC,SAAS;MAAEK;KAAc;;EAG5Cje,MAAMA,CAACsb,IAAI,EAAE6D,QAAQ,EAAE;IACrB,MAAM;MAAEzD,MAAM;MAAEkC;KAAW,GAAG,IAAI,CAAC/rB,MAAM,CAACypB,IAAI,EAAE6D,QAAQ,CAAC;IAEzD,MAAM5D,GAAG,GAAG,EAAE;IACd,KAAK,IAAIvwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0wB,MAAM,CAAC5xB,MAAM,EAAEkB,CAAC,EAAE,EAAE;MACtC,MAAM8wB,KAAK,GAAGJ,MAAM,CAAC1wB,CAAC,CAAC;MACvB,MAAM00B,GAAG,GAAG,IAAI,CAACnB,MAAM,CAACoB,YAAY,CAAC7D,KAAK,CAAC7uB,EAAE,CAAC;MAC9CsuB,GAAG,CAACtxB,IAAI,CAAE,OAAMy1B,GAAG,CAAC/2B,QAAQ,CAAC,EAAE,CAAE,EAAC,CAAC+B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;MAE7C,IAAI,IAAI,CAACg0B,MAAM,CAACgB,GAAG,CAAC,IAAI,IAAI,EAAE;QAC5B,IAAI,CAAChB,MAAM,CAACgB,GAAG,CAAC,GAAG5D,KAAK,CAACmC,YAAY,GAAG,IAAI,CAACtE,KAAK;;MAEpD,IAAI,IAAI,CAAC8E,OAAO,CAACiB,GAAG,CAAC,IAAI,IAAI,EAAE;QAC7B,IAAI,CAACjB,OAAO,CAACiB,GAAG,CAAC,GAAG5D,KAAK,CAAC8D,UAAU;;;IAIxC,OAAO,CAACrE,GAAG,EAAEqC,SAAS,CAAC;;EAGzBzB,aAAaA,CAAC9wB,MAAM,EAAEuG,IAAI,EAAEutB,QAAQ,EAAE;IACpC,MAAMjtB,KAAK,GAAG,IAAI,CAACL,MAAM,CAACxG,MAAM,EAAE8zB,QAAQ,EAAE,IAAI,CAAC,CAAClB,YAAY;IAC9D,MAAMtE,KAAK,GAAG/nB,IAAI,GAAG,IAAI;IACzB,OAAOM,KAAK,GAAGynB,KAAK;;EAGtBja,KAAKA,GAAG;IACN,MAAMmgB,KAAK,GAAG,IAAI,CAACtB,MAAM,CAACuB,GAAG,IAAI,IAAI;IACrC,MAAMC,QAAQ,GAAG,IAAI,CAAC/yB,QAAQ,CAACqF,GAAG,EAAE;IAEpC,IAAIwtB,KAAK,EAAE;MACTE,QAAQ,CAAC7yB,IAAI,CAACgU,OAAO,GAAG,eAAe;;IAGzC,IAAI,CAACqd,MAAM,CACRyB,YAAY,EAAE,CACdC,EAAE,CAAC,MAAM,EAAE/yB,IAAI,IAAI6yB,QAAQ,CAACvyB,KAAK,CAACN,IAAI,CAAC,CAAC,CACxC+yB,EAAE,CAAC,KAAK,EAAE,MAAMF,QAAQ,CAAC90B,GAAG,EAAE,CAAC;IAElC,MAAMi1B,WAAW,GACf,CAAC,CAAC,IAAI,CAAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GACvB,IAAI,CAACA,IAAI,CAAC,MAAM,CAAC,CAAC2C,YAAY,GAC9BC,SAAS,KAAK,CAAC,KAAK,CAAC;IAC3B,IAAIC,KAAK,GAAG,CAAC;IACb,IAAI,IAAI,CAAC7C,IAAI,CAAC8C,IAAI,CAACC,YAAY,EAAE;MAC/BF,KAAK,IAAI,CAAC,IAAI,CAAC;;IAEjB,IAAI,CAAC,IAAIH,WAAW,IAAIA,WAAW,IAAI,CAAC,EAAE;MACxCG,KAAK,IAAI,CAAC,IAAI,CAAC;;IAEjBA,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,IAAIH,WAAW,KAAK,EAAE,EAAE;MACtBG,KAAK,IAAI,CAAC,IAAI,CAAC;;IAEjB,IAAI,IAAI,CAAC7C,IAAI,CAACgD,IAAI,CAACC,QAAQ,CAACC,MAAM,EAAE;MAClCL,KAAK,IAAI,CAAC,IAAI,CAAC;;;;IAIjB,MAAMM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC3Bn0B,GAAG,CAACxB,CAAC,IAAII,MAAM,CAACw1B,YAAY,CAAC,CAAC,IAAI,CAAC3zB,EAAE,CAAC1B,UAAU,CAACP,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CACjEV,IAAI,CAAC,EAAE,CAAC;IACX,MAAMyb,IAAI,GAAG4a,GAAG,GAAG,GAAG,GAAG,IAAI,CAACnD,IAAI,CAACoB,cAAc;IAEjD,MAAM;MAAExY;KAAM,GAAG,IAAI,CAACoX,IAAI;IAC1B,MAAMqD,UAAU,GAAG,IAAI,CAAC7zB,QAAQ,CAACqF,GAAG,CAAC;MACnCI,IAAI,EAAE,gBAAgB;MACtBquB,QAAQ,EAAE/a,IAAI;MACdgb,KAAK,EAAEV,KAAK;MACZW,QAAQ,EAAE,CACR5a,IAAI,CAAC6a,IAAI,GAAG,IAAI,CAACtH,KAAK,EACtBvT,IAAI,CAAC8a,IAAI,GAAG,IAAI,CAACvH,KAAK,EACtBvT,IAAI,CAAC+a,IAAI,GAAG,IAAI,CAACxH,KAAK,EACtBvT,IAAI,CAACpS,IAAI,GAAG,IAAI,CAAC2lB,KAAK,CACvB;MACDyH,WAAW,EAAE,IAAI,CAAC5D,IAAI,CAAC6D,WAAW;MAClCC,MAAM,EAAE,IAAI,CAACzG,QAAQ;MACrB0G,OAAO,EAAE,IAAI,CAACzG,SAAS;MACvB0G,SAAS,EAAE,CAAC,IAAI,CAAChE,IAAI,CAACxC,SAAS,IAAI,IAAI,CAACwC,IAAI,CAACsB,MAAM,IAAI,IAAI,CAACnF,KAAK;MACjE8H,OAAO,EAAE,CAAC,IAAI,CAACjE,IAAI,CAACzC,OAAO,IAAI,CAAC,IAAI,IAAI,CAACpB,KAAK;MAC9C+H,KAAK,EAAE;KACR,CAAC,CAAC;;IAEH,IAAI7B,KAAK,EAAE;MACTgB,UAAU,CAAC3zB,IAAI,CAACy0B,SAAS,GAAG5B,QAAQ;KACrC,MAAM;MACLc,UAAU,CAAC3zB,IAAI,CAAC00B,SAAS,GAAG7B,QAAQ;;IAGtC,IAAI,IAAI,CAAC/yB,QAAQ,CAACuxB,MAAM,EAAE;MACxB,MAAMsD,MAAM,GAAGp2B,MAAM,CAACC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;MAC/C,MAAMo2B,SAAS,GAAG,IAAI,CAAC90B,QAAQ,CAACqF,GAAG,EAAE;MACrCyvB,SAAS,CAACt0B,KAAK,CAACq0B,MAAM,CAAC;MACvBC,SAAS,CAAC72B,GAAG,EAAE;MAEf41B,UAAU,CAAC3zB,IAAI,CAAC20B,MAAM,GAAGC,SAAS;;IAGpCjB,UAAU,CAAC51B,GAAG,EAAE;IAEhB,MAAM82B,kBAAkB,GAAG;MACzBtvB,IAAI,EAAE,MAAM;MACZyO,OAAO,EAAE,cAAc;MACvBuc,QAAQ,EAAE1X,IAAI;MACdic,aAAa,EAAE;QACbC,QAAQ,EAAE,IAAI72B,MAAM,CAAC,OAAO,CAAC;QAC7B82B,QAAQ,EAAE,IAAI92B,MAAM,CAAC,UAAU,CAAC;QAChC+2B,UAAU,EAAE;OACb;MACDC,cAAc,EAAEvB,UAAU;MAC1BwB,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC3D,MAAM;KACnB;IAED,IAAI,CAACmB,KAAK,EAAE;MACVkC,kBAAkB,CAAC7gB,OAAO,GAAG,cAAc;MAC3C6gB,kBAAkB,CAACO,WAAW,GAAG,UAAU;;IAG7C,MAAMC,cAAc,GAAG,IAAI,CAACv1B,QAAQ,CAACqF,GAAG,CAAC0vB,kBAAkB,CAAC;IAE5DQ,cAAc,CAACt3B,GAAG,EAAE;IAEpB,IAAI,CAACuH,UAAU,CAACtF,IAAI,GAAG;MACrBuF,IAAI,EAAE,MAAM;MACZyO,OAAO,EAAE,OAAO;MAChBuc,QAAQ,EAAE1X,IAAI;MACd2X,QAAQ,EAAE,YAAY;MACtB8E,eAAe,EAAE,CAACD,cAAc,CAAC;MACjCE,SAAS,EAAE,IAAI,CAACC,aAAa;KAC9B;IAED,OAAO,IAAI,CAAClwB,UAAU,CAACvH,GAAG,EAAE;;;;;;EAM9By3B,aAAaA,GAAG;IACd,MAAMC,IAAI,GAAG,IAAI,CAAC31B,QAAQ,CAACqF,GAAG,EAAE;IAEhC,MAAMuwB,OAAO,GAAG,EAAE;IAClB,KAAK,IAAIhD,UAAU,IAAI,IAAI,CAACnB,OAAO,EAAE;MACnC,MAAMd,OAAO,GAAG,EAAE;;;MAGlB,KAAK,IAAItpB,KAAK,IAAIurB,UAAU,EAAE;QAC5B,IAAIvrB,KAAK,GAAG,MAAM,EAAE;UAClBA,KAAK,IAAI,OAAO;UAChBspB,OAAO,CAAC1zB,IAAI,CAACm0B,KAAK,CAAG/pB,KAAK,KAAK,EAAE,GAAI,KAAK,GAAI,MAAM,CAAC,CAAC;UACtDA,KAAK,GAAG,MAAM,GAAIA,KAAK,GAAG,KAAM;;QAGlCspB,OAAO,CAAC1zB,IAAI,CAACm0B,KAAK,CAAC/pB,KAAK,CAAC,CAAC;;MAG5BuuB,OAAO,CAAC34B,IAAI,CAAE,IAAG0zB,OAAO,CAACrzB,IAAI,CAAC,GAAG,CAAE,GAAE,CAAC;;IAGxC,MAAMu4B,SAAS,GAAG,GAAG;IACrB,MAAMC,MAAM,GAAGj2B,IAAI,CAACyQ,IAAI,CAACslB,OAAO,CAAC94B,MAAM,GAAG+4B,SAAS,CAAC;IACpD,MAAME,MAAM,GAAG,EAAE;IACjB,KAAK,IAAI/3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG83B,MAAM,EAAE93B,CAAC,EAAE,EAAE;MAC/B,MAAMg4B,KAAK,GAAGh4B,CAAC,GAAG63B,SAAS;MAC3B,MAAM53B,GAAG,GAAG4B,IAAI,CAACoP,GAAG,CAAC,CAACjR,CAAC,GAAG,CAAC,IAAI63B,SAAS,EAAED,OAAO,CAAC94B,MAAM,CAAC;MACzDi5B,MAAM,CAAC94B,IAAI,CAAE,IAAGm0B,KAAK,CAAC4E,KAAK,CAAE,MAAK5E,KAAK,CAACnzB,GAAG,GAAG,CAAC,CAAE,MAAK23B,OAAO,CAACl4B,KAAK,CAACs4B,KAAK,EAAE/3B,GAAG,CAAC,CAACX,IAAI,CAAC,GAAG,CAAE,GAAE,CAAC;;IAG/Fq4B,IAAI,CAAC13B,GAAG,CAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE83B,MAAM,CAACz4B,IAAI,CAAC,IAAI,CAAE;AACpB;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;IAEE,OAAOq4B,IAAI;;AAEf;;AC3RA,MAAMM,cAAc,CAAC;EACnB,OAAO/I,IAAIA,CAACltB,QAAQ,EAAEk2B,GAAG,EAAEC,MAAM,EAAEl2B,EAAE,EAAE;IACrC,IAAIuwB,IAAI;IACR,IAAI,OAAO0F,GAAG,KAAK,QAAQ,EAAE;MAC3B,IAAI3F,YAAY,CAACY,cAAc,CAAC+E,GAAG,CAAC,EAAE;QACpC,OAAO,IAAI3F,YAAY,CAACvwB,QAAQ,EAAEk2B,GAAG,EAAEj2B,EAAE,CAAC;;MAG5Ci2B,GAAG,GAAG9I,EAAE,CAACC,YAAY,CAAC6I,GAAG,CAAC;;IAE5B,IAAIz3B,MAAM,CAACK,QAAQ,CAACo3B,GAAG,CAAC,EAAE;MACxB1F,IAAI,GAAG4F,OAAO,CAAC9qB,MAAM,CAAC4qB,GAAG,EAAEC,MAAM,CAAC;KACnC,MAAM,IAAID,GAAG,YAAYG,UAAU,EAAE;MACpC7F,IAAI,GAAG4F,OAAO,CAAC9qB,MAAM,CAAC7M,MAAM,CAACC,IAAI,CAACw3B,GAAG,CAAC,EAAEC,MAAM,CAAC;KAChD,MAAM,IAAID,GAAG,YAAYI,WAAW,EAAE;MACrC9F,IAAI,GAAG4F,OAAO,CAAC9qB,MAAM,CAAC7M,MAAM,CAACC,IAAI,CAAC,IAAI23B,UAAU,CAACH,GAAG,CAAC,CAAC,EAAEC,MAAM,CAAC;;IAGjE,IAAI3F,IAAI,IAAI,IAAI,EAAE;MAChB,MAAM,IAAI50B,KAAK,CAAC,mDAAmD,CAAC;;IAGtE,OAAO,IAAI01B,YAAY,CAACtxB,QAAQ,EAAEwwB,IAAI,EAAEvwB,EAAE,CAAC;;AAE/C;;AC3BA,iBAAe;EACbs2B,SAASA,CAACC,WAAW,GAAG,WAAW,EAAE;;IAEnC,IAAI,CAACC,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,UAAU,GAAG,CAAC;;;IAGnB,IAAI,CAACC,SAAS,GAAG,EAAE;IACnB,IAAI,CAACC,KAAK,GAAG,IAAI;IAEjB,IAAI,CAACC,gBAAgB,GAAG,EAAE;;;IAG1B,IAAIL,WAAW,EAAE;MACf,IAAI,CAAChG,IAAI,CAACgG,WAAW,CAAC;;GAEzB;EAEDhG,IAAIA,CAAC0F,GAAG,EAAEC,MAAM,EAAEvxB,IAAI,EAAE;IACtB,IAAIkyB,QAAQ,EAAEtG,IAAI;IAClB,IAAI,OAAO2F,MAAM,KAAK,QAAQ,EAAE;MAC9BvxB,IAAI,GAAGuxB,MAAM;MACbA,MAAM,GAAG,IAAI;;;;IAIf,IAAI,OAAOD,GAAG,KAAK,QAAQ,IAAI,IAAI,CAACW,gBAAgB,CAACX,GAAG,CAAC,EAAE;MACzDY,QAAQ,GAAGZ,GAAG;MACd,CAAC;QAAEA,GAAG;QAAEC;OAAQ,GAAG,IAAI,CAACU,gBAAgB,CAACX,GAAG,CAAC;KAC9C,MAAM;MACLY,QAAQ,GAAGX,MAAM,IAAID,GAAG;MACxB,IAAI,OAAOY,QAAQ,KAAK,QAAQ,EAAE;QAChCA,QAAQ,GAAG,IAAI;;;IAInB,IAAIlyB,IAAI,IAAI,IAAI,EAAE;MAChB,IAAI,CAACmyB,QAAQ,CAACnyB,IAAI,CAAC;;;;IAIrB,IAAK4rB,IAAI,GAAG,IAAI,CAACiG,aAAa,CAACK,QAAQ,CAAC,EAAG;MACzC,IAAI,CAACF,KAAK,GAAGpG,IAAI;MACjB,OAAO,IAAI;;;;IAIb,MAAMvwB,EAAE,GAAI,IAAG,EAAE,IAAI,CAACy2B,UAAW,EAAC;IAClC,IAAI,CAACE,KAAK,GAAGX,cAAc,CAAC/I,IAAI,CAAC,IAAI,EAAEgJ,GAAG,EAAEC,MAAM,EAAEl2B,EAAE,CAAC;;;;IAIvD,IAAKuwB,IAAI,GAAG,IAAI,CAACiG,aAAa,CAAC,IAAI,CAACG,KAAK,CAAC7d,IAAI,CAAC,EAAG;MAChD,IAAI,CAAC6d,KAAK,GAAGpG,IAAI;MACjB,OAAO,IAAI;;;;IAIb,IAAIsG,QAAQ,EAAE;MACZ,IAAI,CAACL,aAAa,CAACK,QAAQ,CAAC,GAAG,IAAI,CAACF,KAAK;;IAG3C,IAAI,IAAI,CAACA,KAAK,CAAC7d,IAAI,EAAE;MACnB,IAAI,CAAC0d,aAAa,CAAC,IAAI,CAACG,KAAK,CAAC7d,IAAI,CAAC,GAAG,IAAI,CAAC6d,KAAK;;IAGlD,OAAO,IAAI;GACZ;EAEDG,QAAQA,CAACJ,SAAS,EAAE;IAClB,IAAI,CAACA,SAAS,GAAGA,SAAS;IAC1B,OAAO,IAAI;GACZ;EAEDK,iBAAiBA,CAAC3H,UAAU,EAAE;IAC5B,IAAIA,UAAU,IAAI,IAAI,EAAE;MACtBA,UAAU,GAAG,KAAK;;IAEpB,OAAO,IAAI,CAACuH,KAAK,CAACxH,UAAU,CAAC,IAAI,CAACuH,SAAS,EAAEtH,UAAU,CAAC;GACzD;EAED4H,YAAYA,CAACle,IAAI,EAAEmd,GAAG,EAAEC,MAAM,EAAE;IAC9B,IAAI,CAACU,gBAAgB,CAAC9d,IAAI,CAAC,GAAG;MAC5Bmd,GAAG;MACHC;KACD;IAED,OAAO,IAAI;;AAEf,CAAC;;ACxFD,MAAMe,WAAW,GAAG,QAAQ;AAC5B,MAAMC,MAAM,GAAG,GAAG;AAElB,MAAMC,WAAW,SAASC,mBAAY,CAAC;EACrCv7B,WAAWA,CAACkE,QAAQ,EAAEjE,OAAO,EAAE;IAC7B,KAAK,EAAE;IACP,IAAI,CAACiE,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACs3B,MAAM,GAAGv7B,OAAO,CAACu7B,MAAM,IAAI,CAAC;IACjC,IAAI,CAACC,gBAAgB,GAAGx7B,OAAO,CAACw7B,gBAAgB,IAAI,CAAC;IACrD,IAAI,CAACC,WAAW,GAAGz7B,OAAO,CAACy7B,WAAW,KAAK,CAAC;IAC5C,IAAI,CAACC,OAAO,GAAG17B,OAAO,CAAC07B,OAAO,IAAI,CAAC;IACnC,IAAI,CAACC,SAAS,GAAG37B,OAAO,CAAC27B,SAAS,IAAI,IAAI,GAAG37B,OAAO,CAAC27B,SAAS,GAAG,EAAE,CAAC;IACpE,IAAI,CAACtP,SAAS,GACZ,CAACrsB,OAAO,CAACmJ,KAAK,GAAG,IAAI,CAACwyB,SAAS,IAAI,IAAI,CAACD,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAACA,OAAO;IACtE,IAAI,CAACE,SAAS,GAAG,IAAI,CAACvP,SAAS;IAC/B,IAAI,CAACwP,MAAM,GAAG,IAAI,CAAC53B,QAAQ,CAAC+I,CAAC;IAC7B,IAAI,CAAC8uB,MAAM,GAAG,IAAI,CAAC73B,QAAQ,CAAC6kB,CAAC;IAC7B,IAAI,CAACiT,MAAM,GAAG,CAAC;IACf,IAAI,CAACC,QAAQ,GAAGh8B,OAAO,CAACg8B,QAAQ;IAChC,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAAC7F,QAAQ,GAAGp2B,OAAO,CAACo2B,QAAQ;;;IAGhC,IAAIp2B,OAAO,CAACoJ,MAAM,IAAI,IAAI,EAAE;MAC1B,IAAI,CAACA,MAAM,GAAGpJ,OAAO,CAACoJ,MAAM;MAC5B,IAAI,CAAC6B,IAAI,GAAG,IAAI,CAAC6wB,MAAM,GAAG97B,OAAO,CAACoJ,MAAM;KACzC,MAAM;MACL,IAAI,CAAC6B,IAAI,GAAG,IAAI,CAAChH,QAAQ,CAACgU,IAAI,CAAChN,IAAI,EAAE;;;;IAIvC,IAAI,CAACisB,EAAE,CAAC,WAAW,EAAEl3B,OAAO,IAAI;;;;MAI9B,MAAMu7B,MAAM,GAAG,IAAI,CAACU,UAAU,IAAI,IAAI,CAACV,MAAM;MAC7C,IAAI,CAACt3B,QAAQ,CAAC+I,CAAC,IAAIuuB,MAAM;MACzB,IAAI,CAAClP,SAAS,IAAIkP,MAAM;MAExB,OAAO,IAAI,CAACW,IAAI,CAAC,MAAM,EAAE,MAAM;QAC7B,IAAI,CAACj4B,QAAQ,CAAC+I,CAAC,IAAIuuB,MAAM;QACzB,IAAI,CAAClP,SAAS,IAAIkP,MAAM;QACxB,IAAIv7B,OAAO,CAACm8B,SAAS,IAAI,CAAC,IAAI,CAACF,UAAU,EAAE;UACzC,IAAI,CAACA,UAAU,GAAG,IAAI,CAACV,MAAM;;QAE/B,IAAI,CAACv7B,OAAO,CAACm8B,SAAS,EAAE;UACtB,OAAQ,IAAI,CAACF,UAAU,GAAG,CAAC;;OAE9B,CAAC;KACH,CAAC;;;IAGF,IAAI,CAAC/E,EAAE,CAAC,UAAU,EAAEl3B,OAAO,IAAI;MAC7B,MAAM;QAAEo8B;OAAO,GAAGp8B,OAAO;MACzB,IAAIo8B,KAAK,KAAK,SAAS,EAAE;QACvBp8B,OAAO,CAACo8B,KAAK,GAAG,MAAM;;MAExB,IAAI,CAACC,QAAQ,GAAG,IAAI;MAEpB,OAAO,IAAI,CAACH,IAAI,CAAC,MAAM,EAAE,MAAM;QAC7B,IAAI,CAACj4B,QAAQ,CAAC6kB,CAAC,IAAI9oB,OAAO,CAACs8B,YAAY,IAAI,CAAC;QAC5Ct8B,OAAO,CAACo8B,KAAK,GAAGA,KAAK;QACrB,OAAQ,IAAI,CAACC,QAAQ,GAAG,KAAK;OAC9B,CAAC;KACH,CAAC;;EAGJE,SAASA,CAACC,IAAI,EAAE;IACd,OACE,IAAI,CAACv4B,QAAQ,CAACmvB,aAAa,CAACoJ,IAAI,EAAE,IAAI,CAAC,GACvC,IAAI,CAAChB,gBAAgB,GACrB,IAAI,CAACC,WAAW;;EAIpBgB,MAAMA,CAACD,IAAI,EAAElQ,CAAC,EAAE;IACd,IAAIkQ,IAAI,CAACA,IAAI,CAACz7B,MAAM,GAAG,CAAC,CAAC,IAAIo6B,WAAW,EAAE;MACxC,OAAO7O,CAAC,IAAI,IAAI,CAACsP,SAAS;;IAE5B,OAAOtP,CAAC,GAAG,IAAI,CAACiQ,SAAS,CAACnB,MAAM,CAAC,IAAI,IAAI,CAACQ,SAAS;;EAGrDc,QAAQA,CAACnK,IAAI,EAAE1b,EAAE,EAAE;;IAEjB,IAAI8lB,EAAE;IACN,MAAMC,OAAO,GAAG,IAAIC,WAAW,CAACtK,IAAI,CAAC;IACrC,IAAItxB,IAAI,GAAG,IAAI;IACf,MAAM67B,UAAU,GAAGt8B,MAAM,CAAC+O,MAAM,CAAC,IAAI,CAAC;IAEtC,OAAQotB,EAAE,GAAGC,OAAO,CAACG,SAAS,EAAE,EAAG;MACjC,IAAIC,cAAc;MAClB,IAAIR,IAAI,GAAGjK,IAAI,CAAC5wB,KAAK,CACnB,CAACV,IAAI,IAAI,IAAI,GAAGA,IAAI,CAACq1B,QAAQ,GAAGe,SAAS,KAAK,CAAC,EAC/CsF,EAAE,CAACrG,QACL,CAAC;MACD,IAAIhK,CAAC,GACHwQ,UAAU,CAACN,IAAI,CAAC,IAAI,IAAI,GACpBM,UAAU,CAACN,IAAI,CAAC,GACfM,UAAU,CAACN,IAAI,CAAC,GAAG,IAAI,CAACD,SAAS,CAACC,IAAI,CAAE;;;;MAI/C,IAAIlQ,CAAC,GAAG,IAAI,CAACD,SAAS,GAAG,IAAI,CAAC4P,UAAU,EAAE;;QAExC,IAAIgB,GAAG,GAAGh8B,IAAI;QACd,MAAMi8B,GAAG,GAAG,EAAE;QAEd,OAAOV,IAAI,CAACz7B,MAAM,EAAE;;UAElB,IAAIiB,CAAC,EAAEm7B,SAAS;UAChB,IAAI7Q,CAAC,GAAG,IAAI,CAACsP,SAAS,EAAE;;;YAGtB55B,CAAC,GAAG8B,IAAI,CAACyQ,IAAI,CAAC,IAAI,CAACqnB,SAAS,IAAItP,CAAC,GAAGkQ,IAAI,CAACz7B,MAAM,CAAC,CAAC;YACjDurB,CAAC,GAAG,IAAI,CAACiQ,SAAS,CAACC,IAAI,CAAC76B,KAAK,CAAC,CAAC,EAAEK,CAAC,CAAC,CAAC;YACpCm7B,SAAS,GAAG7Q,CAAC,IAAI,IAAI,CAACsP,SAAS,IAAI55B,CAAC,GAAGw6B,IAAI,CAACz7B,MAAM;WACnD,MAAM;YACLiB,CAAC,GAAGw6B,IAAI,CAACz7B,MAAM;;UAEjB,IAAIq8B,UAAU,GAAG9Q,CAAC,GAAG,IAAI,CAACsP,SAAS,IAAI55B,CAAC,GAAG,CAAC;;UAE5C,OAAOo7B,UAAU,IAAID,SAAS,EAAE;YAC9B,IAAIC,UAAU,EAAE;cACd9Q,CAAC,GAAG,IAAI,CAACiQ,SAAS,CAACC,IAAI,CAAC76B,KAAK,CAAC,CAAC,EAAE,EAAEK,CAAC,CAAC,CAAC;cACtCo7B,UAAU,GAAG9Q,CAAC,GAAG,IAAI,CAACsP,SAAS,IAAI55B,CAAC,GAAG,CAAC;aACzC,MAAM;cACLsqB,CAAC,GAAG,IAAI,CAACiQ,SAAS,CAACC,IAAI,CAAC76B,KAAK,CAAC,CAAC,EAAE,EAAEK,CAAC,CAAC,CAAC;cACtCo7B,UAAU,GAAG9Q,CAAC,GAAG,IAAI,CAACsP,SAAS,IAAI55B,CAAC,GAAG,CAAC;cACxCm7B,SAAS,GAAG7Q,CAAC,IAAI,IAAI,CAACsP,SAAS,IAAI55B,CAAC,GAAGw6B,IAAI,CAACz7B,MAAM;;;;;UAKtD,IAAIiB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC45B,SAAS,KAAK,IAAI,CAACvP,SAAS,EAAE;YAChDrqB,CAAC,GAAG,CAAC;;;;UAIPk7B,GAAG,CAACG,QAAQ,GAAGV,EAAE,CAACU,QAAQ,IAAIr7B,CAAC,GAAGw6B,IAAI,CAACz7B,MAAM;UAC7Ci8B,cAAc,GAAGnmB,EAAE,CAAC2lB,IAAI,CAAC76B,KAAK,CAAC,CAAC,EAAEK,CAAC,CAAC,EAAEsqB,CAAC,EAAE4Q,GAAG,EAAED,GAAG,CAAC;UAClDA,GAAG,GAAG;YAAEI,QAAQ,EAAE;WAAO;;;UAGzBb,IAAI,GAAGA,IAAI,CAAC76B,KAAK,CAACK,CAAC,CAAC;UACpBsqB,CAAC,GAAG,IAAI,CAACiQ,SAAS,CAACC,IAAI,CAAC;UAExB,IAAIQ,cAAc,KAAK,KAAK,EAAE;YAC5B;;;OAGL,MAAM;;QAELA,cAAc,GAAGnmB,EAAE,CAAC2lB,IAAI,EAAElQ,CAAC,EAAEqQ,EAAE,EAAE17B,IAAI,CAAC;;MAGxC,IAAI+7B,cAAc,KAAK,KAAK,EAAE;QAC5B;;MAEF/7B,IAAI,GAAG07B,EAAE;;;EAIbW,IAAIA,CAAC/K,IAAI,EAAEvyB,OAAO,EAAE;;IAElB,IAAIA,OAAO,CAACu7B,MAAM,IAAI,IAAI,EAAE;MAC1B,IAAI,CAACA,MAAM,GAAGv7B,OAAO,CAACu7B,MAAM;;IAE9B,IAAIv7B,OAAO,CAACw7B,gBAAgB,IAAI,IAAI,EAAE;MACpC,IAAI,CAACA,gBAAgB,GAAGx7B,OAAO,CAACw7B,gBAAgB;;IAElD,IAAIx7B,OAAO,CAACy7B,WAAW,IAAI,IAAI,EAAE;MAC/B,IAAI,CAACA,WAAW,GAAGz7B,OAAO,CAACy7B,WAAW;;IAExC,IAAIz7B,OAAO,CAACg8B,QAAQ,IAAI,IAAI,EAAE;MAC5B,IAAI,CAACA,QAAQ,GAAGh8B,OAAO,CAACg8B,QAAQ;;;;;;IAMlC,MAAMuB,KAAK,GAAG,IAAI,CAACt5B,QAAQ,CAAC6kB,CAAC,GAAG,IAAI,CAAC7kB,QAAQ,CAACg3B,iBAAiB,CAAC,IAAI,CAAC;IACrE,IAAI,IAAI,CAACh3B,QAAQ,CAAC6kB,CAAC,GAAG,IAAI,CAAC7d,IAAI,IAAIsyB,KAAK,GAAG,IAAI,CAACtyB,IAAI,EAAE;MACpD,IAAI,CAACuyB,WAAW,EAAE;;IAGpB,IAAIh5B,MAAM,GAAG,EAAE;IACf,IAAIi5B,SAAS,GAAG,CAAC;IACjB,IAAIC,EAAE,GAAG,CAAC;IACV,IAAIC,EAAE,GAAG,CAAC;IAEV,IAAI;MAAE7U;KAAG,GAAG,IAAI,CAAC7kB,QAAQ,CAAC;IAC1B,MAAM25B,QAAQ,GAAGA,MAAM;MACrB59B,OAAO,CAACy9B,SAAS,GAAGA,SAAS,GAAG,IAAI,CAAChC,WAAW,IAAIiC,EAAE,GAAG,CAAC,CAAC;MAC3D19B,OAAO,CAAC69B,SAAS,GAAGH,EAAE;MACtB19B,OAAO,CAACqsB,SAAS,GAAG,IAAI,CAACA,SAAS;MAClC,CAAC;QAAEvD;OAAG,GAAG,IAAI,CAAC7kB,QAAQ;MACtB,IAAI,CAAC65B,IAAI,CAAC,MAAM,EAAEt5B,MAAM,EAAExE,OAAO,EAAE,IAAI,CAAC;MACxC,OAAO29B,EAAE,EAAE;KACZ;IAED,IAAI,CAACG,IAAI,CAAC,cAAc,EAAE99B,OAAO,EAAE,IAAI,CAAC;IAExC,IAAI,CAAC08B,QAAQ,CAACnK,IAAI,EAAE,CAACiK,IAAI,EAAElQ,CAAC,EAAEqQ,EAAE,EAAE17B,IAAI,KAAK;MACzC,IAAIA,IAAI,IAAI,IAAI,IAAIA,IAAI,CAACo8B,QAAQ,EAAE;QACjC,IAAI,CAACS,IAAI,CAAC,WAAW,EAAE99B,OAAO,EAAE,IAAI,CAAC;QACrC,IAAI,CAAC47B,SAAS,GAAG,IAAI,CAACvP,SAAS;;MAGjC,IAAI,IAAI,CAACoQ,MAAM,CAACD,IAAI,EAAElQ,CAAC,CAAC,EAAE;QACxB9nB,MAAM,IAAIg4B,IAAI;QACdiB,SAAS,IAAInR,CAAC;QACdoR,EAAE,EAAE;;MAGN,IAAIf,EAAE,CAACU,QAAQ,IAAI,CAAC,IAAI,CAACZ,MAAM,CAACD,IAAI,EAAElQ,CAAC,CAAC,EAAE;;;QAGxC,MAAMyR,EAAE,GAAG,IAAI,CAAC95B,QAAQ,CAACg3B,iBAAiB,CAAC,IAAI,CAAC;QAChD,IACE,IAAI,CAAC7xB,MAAM,IAAI,IAAI,IACnB,IAAI,CAAC4yB,QAAQ,IACb,IAAI,CAAC/3B,QAAQ,CAAC6kB,CAAC,GAAGiV,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC9yB,IAAI,IACpC,IAAI,CAAC8wB,MAAM,IAAI,IAAI,CAACL,OAAO,EAC3B;UACA,IAAI,IAAI,CAACM,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,CAACA,QAAQ,GAAG,GAAG;WACpB;UACDx3B,MAAM,GAAGA,MAAM,CAAC3B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;UACnC46B,SAAS,GAAG,IAAI,CAAClB,SAAS,CAAC/3B,MAAM,GAAG,IAAI,CAACw3B,QAAQ,CAAC;;;;UAIlD,OAAOx3B,MAAM,IAAIi5B,SAAS,GAAG,IAAI,CAACpR,SAAS,EAAE;YAC3C7nB,MAAM,GAAGA,MAAM,CAAC7C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACkB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD46B,SAAS,GAAG,IAAI,CAAClB,SAAS,CAAC/3B,MAAM,GAAG,IAAI,CAACw3B,QAAQ,CAAC;;;UAGpD,IAAIyB,SAAS,IAAI,IAAI,CAACpR,SAAS,EAAE;YAC/B7nB,MAAM,GAAGA,MAAM,GAAG,IAAI,CAACw3B,QAAQ;;UAGjCyB,SAAS,GAAG,IAAI,CAAClB,SAAS,CAAC/3B,MAAM,CAAC;;QAGpC,IAAIm4B,EAAE,CAACU,QAAQ,EAAE;UACf,IAAI/Q,CAAC,GAAG,IAAI,CAACsP,SAAS,EAAE;YACtBgC,QAAQ,EAAE;YACVp5B,MAAM,GAAGg4B,IAAI;YACbiB,SAAS,GAAGnR,CAAC;YACboR,EAAE,GAAG,CAAC;;UAGR,IAAI,CAACI,IAAI,CAAC,UAAU,EAAE99B,OAAO,EAAE,IAAI,CAAC;;;;QAItC,IAAIwE,MAAM,CAACA,MAAM,CAACzD,MAAM,GAAG,CAAC,CAAC,IAAIo6B,WAAW,EAAE;UAC5C32B,MAAM,GAAGA,MAAM,CAAC7C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGy5B,MAAM;UACrC,IAAI,CAACQ,SAAS,IAAI,IAAI,CAACW,SAAS,CAACnB,MAAM,CAAC;;QAG1CwC,QAAQ,EAAE;;;;QAIV,IAAI,IAAI,CAAC35B,QAAQ,CAAC6kB,CAAC,GAAGiV,EAAE,GAAG,IAAI,CAAC9yB,IAAI,EAAE;UACpC,MAAM+xB,cAAc,GAAG,IAAI,CAACQ,WAAW,EAAE;;;UAGzC,IAAI,CAACR,cAAc,EAAE;YACnBU,EAAE,GAAG,CAAC;YACNl5B,MAAM,GAAG,EAAE;YACX,OAAO,KAAK;;;;;QAKhB,IAAIm4B,EAAE,CAACU,QAAQ,EAAE;UACf,IAAI,CAACzB,SAAS,GAAG,IAAI,CAACvP,SAAS;UAC/B7nB,MAAM,GAAG,EAAE;UACXi5B,SAAS,GAAG,CAAC;UACb,OAAQC,EAAE,GAAG,CAAC;SACf,MAAM;;UAEL,IAAI,CAAC9B,SAAS,GAAG,IAAI,CAACvP,SAAS,GAAGC,CAAC;UACnC9nB,MAAM,GAAGg4B,IAAI;UACbiB,SAAS,GAAGnR,CAAC;UACb,OAAQoR,EAAE,GAAG,CAAC;;OAEjB,MAAM;QACL,OAAQ,IAAI,CAAC9B,SAAS,IAAItP,CAAC;;KAE9B,CAAC;IAEF,IAAIoR,EAAE,GAAG,CAAC,EAAE;MACV,IAAI,CAACI,IAAI,CAAC,UAAU,EAAE99B,OAAO,EAAE,IAAI,CAAC;MACpC49B,QAAQ,EAAE;;IAGZ,IAAI,CAACE,IAAI,CAAC,YAAY,EAAE99B,OAAO,EAAE,IAAI,CAAC;;;;;IAKtC,IAAIA,OAAO,CAACm8B,SAAS,KAAK,IAAI,EAAE;MAC9B,IAAIwB,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,CAAC1B,UAAU,GAAG,CAAC;;MAErB,IAAI,CAACA,UAAU,IAAIj8B,OAAO,CAACy9B,SAAS,IAAI,CAAC;MACzC,OAAQ,IAAI,CAACx5B,QAAQ,CAAC6kB,CAAC,GAAGA,CAAC;KAC5B,MAAM;MACL,OAAQ,IAAI,CAAC7kB,QAAQ,CAAC+I,CAAC,GAAG,IAAI,CAAC6uB,MAAM;;;EAIzC2B,WAAWA,CAACx9B,OAAO,EAAE;IACnB,IAAI,CAAC89B,IAAI,CAAC,YAAY,EAAE99B,OAAO,EAAE,IAAI,CAAC;IAEtC,IAAI,EAAE,IAAI,CAAC+7B,MAAM,GAAG,IAAI,CAACL,OAAO,EAAE;;;MAGhC,IAAI,IAAI,CAACtyB,MAAM,IAAI,IAAI,EAAE;QACvB,OAAO,KAAK;;MAGd,IAAI,CAACnF,QAAQ,CAAC+5B,iBAAiB,EAAE;MACjC,IAAI,CAACjC,MAAM,GAAG,CAAC;MACf,IAAI,CAACD,MAAM,GAAG,IAAI,CAAC73B,QAAQ,CAACgU,IAAI,CAACjP,OAAO,CAACzD,GAAG;MAC5C,IAAI,CAAC0F,IAAI,GAAG,IAAI,CAAChH,QAAQ,CAACgU,IAAI,CAAChN,IAAI,EAAE;MACrC,IAAI,CAAChH,QAAQ,CAAC+I,CAAC,GAAG,IAAI,CAAC6uB,MAAM;MAC7B,IAAI,IAAI,CAAC53B,QAAQ,CAAC2Y,UAAU,EAAE;QAC5B,IAAI,CAAC3Y,QAAQ,CAACwY,SAAS,CAAC,GAAG,IAAI,CAACxY,QAAQ,CAAC2Y,UAAU,CAAC;;MAEtD,IAAI,CAACkhB,IAAI,CAAC,WAAW,EAAE99B,OAAO,EAAE,IAAI,CAAC;KACtC,MAAM;MACL,IAAI,CAACiE,QAAQ,CAAC+I,CAAC,IAAI,IAAI,CAACqf,SAAS,GAAG,IAAI,CAACsP,SAAS;MAClD,IAAI,CAAC13B,QAAQ,CAAC6kB,CAAC,GAAG,IAAI,CAACgT,MAAM;MAC7B,IAAI,CAACgC,IAAI,CAAC,aAAa,EAAE99B,OAAO,EAAE,IAAI,CAAC;;IAGzC,IAAI,CAAC89B,IAAI,CAAC,cAAc,EAAE99B,OAAO,EAAE,IAAI,CAAC;IACxC,OAAO,IAAI;;AAEf;;ACvVA,MAAM;UAAE4D;AAAO,CAAC,GAAGzC,SAAS;AAE5B,gBAAe;EACb88B,QAAQA,GAAG;IACT,IAAI,CAACC,KAAK,GAAG,IAAI,CAACA,KAAK,CAACC,IAAI,CAAC,IAAI,CAAC;;IAElC,IAAI,CAACnxB,CAAC,GAAG,CAAC;IACV,IAAI,CAAC8b,CAAC,GAAG,CAAC;IACV,OAAQ,IAAI,CAACsV,QAAQ,GAAG,CAAC;GAC1B;EAEDlM,OAAOA,CAACkM,QAAQ,EAAE;IAChB,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IACxB,OAAO,IAAI;GACZ;EAEDC,QAAQA,CAACC,KAAK,EAAE;IACd,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjBA,KAAK,GAAG,CAAC;;IAEX,IAAI,CAACxV,CAAC,IAAI,IAAI,CAACmS,iBAAiB,CAAC,IAAI,CAAC,GAAGqD,KAAK,GAAG,IAAI,CAACF,QAAQ;IAC9D,OAAO,IAAI;GACZ;EAEDG,MAAMA,CAACD,KAAK,EAAE;IACZ,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjBA,KAAK,GAAG,CAAC;;IAEX,IAAI,CAACxV,CAAC,IAAI,IAAI,CAACmS,iBAAiB,CAAC,IAAI,CAAC,GAAGqD,KAAK,GAAG,IAAI,CAACF,QAAQ;IAC9D,OAAO,IAAI;GACZ;EAEDI,KAAKA,CAACjM,IAAI,EAAEvlB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,EAAEy+B,YAAY,EAAE;IACvCz+B,OAAO,GAAG,IAAI,CAAC0+B,YAAY,CAAC1xB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,CAAC;;;IAG1CuyB,IAAI,GAAGA,IAAI,IAAI,IAAI,GAAG,EAAE,GAAI,GAAEA,IAAK,EAAC;;;IAGpC,IAAIvyB,OAAO,CAACy7B,WAAW,EAAE;MACvBlJ,IAAI,GAAGA,IAAI,CAAC1vB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;;IAGrC,MAAM87B,YAAY,GAAGA,MAAM;MACzB,IAAI3+B,OAAO,CAAC4+B,YAAY,EAAE;QACxB5+B,OAAO,CAAC4+B,YAAY,CAACz+B,GAAG,CAAC,IAAI,CAAC0+B,MAAM,CAAC7+B,OAAO,CAAC8+B,UAAU,IAAI,GAAG,EAC5D,CAAE,IAAI,CAACC,oBAAoB,CAAC/+B,OAAO,CAAC8+B,UAAU,IAAI,GAAG,CAAC,CAAE,CAAC,CAAC;;KAE/D;;;IAGD,IAAI9+B,OAAO,CAACmJ,KAAK,EAAE;MACjB,IAAI61B,OAAO,GAAG,IAAI,CAACC,QAAQ;MAC3B,IAAI,CAACD,OAAO,EAAE;QACZA,OAAO,GAAG,IAAI3D,WAAW,CAAC,IAAI,EAAEr7B,OAAO,CAAC;QACxCg/B,OAAO,CAAC9H,EAAE,CAAC,MAAM,EAAEuH,YAAY,CAAC;QAChCO,OAAO,CAAC9H,EAAE,CAAC,WAAW,EAAEyH,YAAY,CAAC;;MAGvC,IAAI,CAACM,QAAQ,GAAGj/B,OAAO,CAACm8B,SAAS,GAAG6C,OAAO,GAAG,IAAI;MAClD,IAAI,CAACE,YAAY,GAAGl/B,OAAO,CAACm8B,SAAS,GAAGn8B,OAAO,GAAG,IAAI;MACtDg/B,OAAO,CAAC1B,IAAI,CAAC/K,IAAI,EAAEvyB,OAAO,CAAC;;;KAG5B,MAAM;MACL,KAAK,IAAIoyB,IAAI,IAAIG,IAAI,CAACtB,KAAK,CAAC,IAAI,CAAC,EAAE;QACjC0N,YAAY,EAAE;QACdF,YAAY,CAACrM,IAAI,EAAEpyB,OAAO,CAAC;;;IAI/B,OAAO,IAAI;GACZ;EAEDuyB,IAAIA,CAACA,IAAI,EAAEvlB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,EAAE;IACxB,OAAO,IAAI,CAACw+B,KAAK,CAACjM,IAAI,EAAEvlB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,EAAE,IAAI,CAACk+B,KAAK,CAAC;GACnD;EAED9K,aAAaA,CAAC9wB,MAAM,EAAEtC,OAAO,GAAG,EAAE,EAAE;IAClC,OACE,IAAI,CAAC66B,KAAK,CAACzH,aAAa,CAAC9wB,MAAM,EAAE,IAAI,CAACs4B,SAAS,EAAE56B,OAAO,CAACo2B,QAAQ,CAAC,GAClE,CAACp2B,OAAO,CAACw7B,gBAAgB,IAAI,CAAC,KAAKl5B,MAAM,CAACvB,MAAM,GAAG,CAAC,CAAC;GAExD;EAEDo+B,cAAcA,CAAC5M,IAAI,EAAEvyB,OAAO,EAAE;IAC5B,MAAM;MAAEgN,CAAC;MAAE8b;KAAG,GAAG,IAAI;IAErB9oB,OAAO,GAAG,IAAI,CAAC0+B,YAAY,CAAC1+B,OAAO,CAAC;IACpCA,OAAO,CAACoJ,MAAM,GAAGg2B,QAAQ,CAAC;;IAE1B,MAAMlN,OAAO,GAAGlyB,OAAO,CAACkyB,OAAO,IAAI,IAAI,CAACkM,QAAQ,IAAI,CAAC;IACrD,IAAI,CAACI,KAAK,CAACjM,IAAI,EAAE,IAAI,CAACvlB,CAAC,EAAE,IAAI,CAAC8b,CAAC,EAAE9oB,OAAO,EAAE,MAAM;MAC9C,OAAQ,IAAI,CAAC8oB,CAAC,IAAI,IAAI,CAACmS,iBAAiB,CAAC,IAAI,CAAC,GAAG/I,OAAO;KACzD,CAAC;IAEF,MAAM9oB,MAAM,GAAG,IAAI,CAAC0f,CAAC,GAAGA,CAAC;IACzB,IAAI,CAAC9b,CAAC,GAAGA,CAAC;IACV,IAAI,CAAC8b,CAAC,GAAGA,CAAC;IAEV,OAAO1f,MAAM;GACd;EAEDi2B,IAAIA,CAACA,IAAI,EAAEryB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,EAAEg/B,OAAO,EAAE;IACjCh/B,OAAO,GAAG,IAAI,CAAC0+B,YAAY,CAAC1xB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,CAAC;IAE1C,MAAMs/B,QAAQ,GAAGt/B,OAAO,CAACs/B,QAAQ,IAAI,QAAQ;IAC7C,MAAMC,IAAI,GAAGz7B,IAAI,CAACC,KAAK,CAAE,IAAI,CAAC82B,KAAK,CAAC/I,QAAQ,GAAG,IAAI,GAAI,IAAI,CAAC8I,SAAS,CAAC;IACtE,MAAM4E,OAAO,GAAGD,IAAI,GAAG,CAAC;IACxB,MAAMtvB,CAAC,GAAGjQ,OAAO,CAACy/B,YAAY,IAAIF,IAAI,GAAG,CAAC;IAC1C,MAAMhE,MAAM,GACVv7B,OAAO,CAAC0/B,UAAU,KAAKJ,QAAQ,KAAK,QAAQ,GAAGrvB,CAAC,GAAG,CAAC,GAAGsvB,IAAI,GAAG,CAAC,CAAC;IAClE,MAAMI,UAAU,GACd3/B,OAAO,CAAC4/B,YAAY,KAAKN,QAAQ,KAAK,QAAQ,GAAGrvB,CAAC,GAAG,CAAC,GAAGsvB,IAAI,GAAG,CAAC,CAAC;IAEpE,IAAIM,KAAK,GAAG,CAAC;IACb,MAAMr8B,KAAK,GAAG,EAAE;IAChB,MAAMs8B,MAAM,GAAG,EAAE;IACjB,MAAMC,OAAO,GAAG,EAAE;IAElB,IAAIC,OAAO,GAAG,UAASX,IAAI,EAAE;MAC3B,IAAIx7B,CAAC,GAAG,CAAC;MACT,KAAK,IAAI5B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGo9B,IAAI,CAACt+B,MAAM,EAAEkB,CAAC,EAAE,EAAE;QACpC,MAAMg+B,IAAI,GAAGZ,IAAI,CAACp9B,CAAC,CAAC;QACpB,IAAIP,KAAK,CAAC6B,OAAO,CAAC08B,IAAI,CAAC,EAAE;UACvBJ,KAAK,EAAE;UACPG,OAAO,CAACC,IAAI,CAAC;UACbJ,KAAK,EAAE;SACR,MAAM;UACLr8B,KAAK,CAACtC,IAAI,CAAC++B,IAAI,CAAC;UAChBH,MAAM,CAAC5+B,IAAI,CAAC2+B,KAAK,CAAC;UAClB,IAAIP,QAAQ,KAAK,QAAQ,EAAE;YACzBS,OAAO,CAAC7+B,IAAI,CAAC2C,CAAC,EAAE,CAAC;;;;KAIxB;IAEDm8B,OAAO,CAACX,IAAI,CAAC;IAEb,MAAMa,KAAK,GAAG,UAASr8B,CAAC,EAAE;MACxB,QAAQy7B,QAAQ;QACd,KAAK,UAAU;UACb,OAAQ,GAAEz7B,CAAE,GAAE;QAChB,KAAK,UAAU;UACb,IAAIs8B,MAAM,GAAG99B,MAAM,CAACw1B,YAAY,CAAE,CAACh0B,CAAC,GAAG,CAAC,IAAI,EAAE,GAAI,EAAE,CAAC;UACrD,IAAIu8B,KAAK,GAAGt8B,IAAI,CAAC6H,KAAK,CAAC,CAAC9H,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;UACxC,IAAI0uB,IAAI,GAAG7wB,KAAK,CAAC0+B,KAAK,GAAG,CAAC,CAAC,CAAC7+B,IAAI,CAAC4+B,MAAM,CAAC;UACxC,OAAQ,GAAE5N,IAAK,GAAE;;KAEtB;IAED,MAAM8N,YAAY,GAAG,UAASC,QAAQ,EAAE;MACtCtB,OAAO,GAAG,IAAI3D,WAAW,CAAC,IAAI,EAAEr7B,OAAO,CAAC;MACxCg/B,OAAO,CAAC9H,EAAE,CAAC,MAAM,EAAE,IAAI,CAACgH,KAAK,CAAC;MAE9B2B,KAAK,GAAG,CAAC;MACT,IAAI59B,CAAC,GAAG,CAAC;MACT+8B,OAAO,CAAC9C,IAAI,CAAC,WAAW,EAAE,MAAM;QAC9B,IAAI+D,IAAI,EAAEM,QAAQ,EAAEC,SAAS,EAAEC,QAAQ;QACvC,IAAIzgC,OAAO,CAAC4+B,YAAY,EAAE;UACxB,IAAI5+B,OAAO,CAAC0gC,WAAW,EAAE;YACvB,CAACH,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,CAAC,GAAGzgC,OAAO,CAAC0gC,WAAW;WACtD,MAAM;YACL,CAACH,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;;;QAI5D,IAAIF,QAAQ,EAAE;UACZN,IAAI,GAAG,IAAI,CAACpB,MAAM,CAAC0B,QAAQ,CAAC;UAC5BvgC,OAAO,CAAC4+B,YAAY,CAACz+B,GAAG,CAAC8/B,IAAI,CAAC;SAC/B,MAAM,IAAIjgC,OAAO,CAAC4+B,YAAY,EAAE;UAC/BqB,IAAI,GAAGjgC,OAAO,CAAC4+B,YAAY;;QAG7B,IAAI58B,CAAC;QACL,IAAI,CAACA,CAAC,GAAG89B,MAAM,CAAC79B,CAAC,EAAE,CAAC,MAAM49B,KAAK,EAAE;UAC/B,MAAMc,IAAI,GAAGhB,UAAU,IAAI39B,CAAC,GAAG69B,KAAK,CAAC;UACrC,IAAI,CAAC7yB,CAAC,IAAI2zB,IAAI;UACd3B,OAAO,CAAC3S,SAAS,IAAIsU,IAAI;UACzBd,KAAK,GAAG79B,CAAC;;QAGX,IAAIi+B,IAAI,KAAKO,SAAS,IAAIC,QAAQ,CAAC,EAAE;UACnCR,IAAI,CAAC9/B,GAAG,CAAC,IAAI,CAAC0+B,MAAM,CAAC2B,SAAS,IAAIC,QAAQ,EACxC,CAAC,IAAI,CAAC1B,oBAAoB,CAACyB,SAAS,IAAIC,QAAQ,CAAC,CAAC,CAAC,CAAC;;QAExD,QAAQnB,QAAQ;UACd,KAAK,QAAQ;YACX,IAAI,CAAC9Q,MAAM,CAAC,IAAI,CAACxhB,CAAC,GAAGuuB,MAAM,GAAGtrB,CAAC,EAAE,IAAI,CAAC6Y,CAAC,GAAG0W,OAAO,EAAEvvB,CAAC,CAAC;YACrD,IAAI,CAACigB,IAAI,EAAE;YACX;UACF,KAAK,UAAU;UACf,KAAK,UAAU;YACb,IAAIqC,IAAI,GAAG2N,KAAK,CAACH,OAAO,CAAC99B,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC2+B,SAAS,CAACrO,IAAI,EAAE,IAAI,CAACvlB,CAAC,GAAGuuB,MAAM,EAAE,IAAI,CAACzS,CAAC,EAAE9oB,OAAO,CAAC;YACtD;;QAGJ,IAAIigC,IAAI,IAAIO,SAAS,IAAIC,QAAQ,EAAE;UACjCR,IAAI,CAAC9/B,GAAG,CAAC,IAAI,CAAC0+B,MAAM,CAAC4B,QAAQ,EAAE,CAAC,IAAI,CAAC1B,oBAAoB,CAAC0B,QAAQ,CAAC,CAAC,CAAC,CAAC;;QAExE,IAAIR,IAAI,IAAIA,IAAI,KAAKjgC,OAAO,CAAC4+B,YAAY,EAAE;UACzCqB,IAAI,CAAC/9B,GAAG,EAAE;;OAEb,CAAC;MAEF88B,OAAO,CAAC9H,EAAE,CAAC,cAAc,EAAE,MAAM;QAC/B,MAAMphB,GAAG,GAAGylB,MAAM,GAAGoE,UAAU,IAAIE,KAAK,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC7yB,CAAC,IAAI8I,GAAG;QACb,OAAQkpB,OAAO,CAAC3S,SAAS,IAAIvW,GAAG;OACjC,CAAC;MAEFkpB,OAAO,CAAC9H,EAAE,CAAC,YAAY,EAAE,MAAM;QAC7B,MAAMphB,GAAG,GAAGylB,MAAM,GAAGoE,UAAU,IAAIE,KAAK,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC7yB,CAAC,IAAI8I,GAAG;QACb,OAAQkpB,OAAO,CAAC3S,SAAS,IAAIvW,GAAG;OACjC,CAAC;MAEFkpB,OAAO,CAAC1B,IAAI,CAACgD,QAAQ,EAAEtgC,OAAO,CAAC;KAChC;IAGD,KAAK,IAAIiC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuB,KAAK,CAACzC,MAAM,EAAEkB,CAAC,EAAE,EAAE;MACrCo+B,YAAY,CAAC18B,IAAI,CAAC,IAAI,EAAEH,KAAK,CAACvB,CAAC,CAAC,CAAC;;IAGnC,OAAO,IAAI;GACZ;EAEDy8B,YAAYA,CAAC1xB,CAAC,GAAG,EAAE,EAAE8b,CAAC,EAAE9oB,OAAO,GAAG,EAAE,EAAE;IACpC,IAAI,OAAOgN,CAAC,KAAK,QAAQ,EAAE;MACzBhN,OAAO,GAAGgN,CAAC;MACXA,CAAC,GAAG,IAAI;;;;IAIV,MAAMwe,MAAM,GAAGhrB,MAAM,CAACqgC,MAAM,CAAC,EAAE,EAAE7gC,OAAO,CAAC;;;IAGzC,IAAI,IAAI,CAACk/B,YAAY,EAAE;MACrB,KAAK,IAAI9+B,GAAG,IAAI,IAAI,CAAC8+B,YAAY,EAAE;QACjC,MAAM7+B,GAAG,GAAG,IAAI,CAAC6+B,YAAY,CAAC9+B,GAAG,CAAC;QAClC,IAAIA,GAAG,KAAK,WAAW,EAAE;UACvB,IAAIorB,MAAM,CAACprB,GAAG,CAAC,KAAKi3B,SAAS,EAAE;YAC7B7L,MAAM,CAACprB,GAAG,CAAC,GAAGC,GAAG;;;;;;;IAOzB,IAAI2M,CAAC,IAAI,IAAI,EAAE;MACb,IAAI,CAACA,CAAC,GAAGA,CAAC;;IAEZ,IAAI8b,CAAC,IAAI,IAAI,EAAE;MACb,IAAI,CAACA,CAAC,GAAGA,CAAC;;;;IAIZ,IAAI0C,MAAM,CAACsV,SAAS,KAAK,KAAK,EAAE;MAC9B,IAAItV,MAAM,CAACriB,KAAK,IAAI,IAAI,EAAE;QACxBqiB,MAAM,CAACriB,KAAK,GAAG,IAAI,CAAC8O,IAAI,CAAC9O,KAAK,GAAG,IAAI,CAAC6D,CAAC,GAAG,IAAI,CAACiL,IAAI,CAACjP,OAAO,CAACtD,KAAK;;MAEnE8lB,MAAM,CAACriB,KAAK,GAAGrF,IAAI,CAACqS,GAAG,CAACqV,MAAM,CAACriB,KAAK,EAAE,CAAC,CAAC;;IAG1C,IAAI,CAACqiB,MAAM,CAACkQ,OAAO,EAAE;MACnBlQ,MAAM,CAACkQ,OAAO,GAAG,CAAC;;IAEpB,IAAIlQ,MAAM,CAACmQ,SAAS,IAAI,IAAI,EAAE;MAC5BnQ,MAAM,CAACmQ,SAAS,GAAG,EAAE;KACtB;;IAED,OAAOnQ,MAAM;GACd;EAED0S,KAAKA,CAAC3L,IAAI,EAAEvyB,OAAO,GAAG,EAAE,EAAEg/B,OAAO,EAAE;IACjC,IAAI,CAAC4B,SAAS,CAACrO,IAAI,EAAE,IAAI,CAACvlB,CAAC,EAAE,IAAI,CAAC8b,CAAC,EAAE9oB,OAAO,CAAC;IAC7C,MAAMkyB,OAAO,GAAGlyB,OAAO,CAACkyB,OAAO,IAAI,IAAI,CAACkM,QAAQ,IAAI,CAAC;IAErD,IAAI,CAACY,OAAO,EAAE;MACZ,OAAQ,IAAI,CAAChyB,CAAC,IAAI,IAAI,CAAComB,aAAa,CAACb,IAAI,CAAC;KAC3C,MAAM;MACL,OAAQ,IAAI,CAACzJ,CAAC,IAAI,IAAI,CAACmS,iBAAiB,CAAC,IAAI,CAAC,GAAG/I,OAAO;;GAE3D;EAED0O,SAASA,CAACrO,IAAI,EAAEvlB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,EAAE;IAC7B,IAAI0W,EAAE,EAAEke,OAAO,EAAE3yB,CAAC,EAAE4yB,SAAS,EAAE4I,SAAS,EAAEvrB,KAAK;IAC/CqgB,IAAI,GAAI,GAAEA,IAAK,EAAC,CAAC1vB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACnC,IAAI0vB,IAAI,CAACxxB,MAAM,KAAK,CAAC,EAAE;MACrB;;;;IAIF,MAAMq7B,KAAK,GAAGp8B,OAAO,CAACo8B,KAAK,IAAI,MAAM;IACrC,IAAIX,WAAW,GAAGz7B,OAAO,CAACy7B,WAAW,IAAI,CAAC;IAC1C,MAAMD,gBAAgB,GAAGx7B,OAAO,CAACw7B,gBAAgB,IAAI,CAAC;;;IAGtD,IAAIx7B,OAAO,CAACmJ,KAAK,EAAE;MACjB,QAAQizB,KAAK;QACX,KAAK,OAAO;UACVqB,SAAS,GAAG,IAAI,CAACrK,aAAa,CAACb,IAAI,CAAC1vB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE7C,OAAO,CAAC;UACjEgN,CAAC,IAAIhN,OAAO,CAACqsB,SAAS,GAAGoR,SAAS;UAClC;QAEF,KAAK,QAAQ;UACXzwB,CAAC,IAAIhN,OAAO,CAACqsB,SAAS,GAAG,CAAC,GAAGrsB,OAAO,CAACy9B,SAAS,GAAG,CAAC;UAClD;QAEF,KAAK,SAAS;;UAEZvrB,KAAK,GAAGqgB,IAAI,CAACwO,IAAI,EAAE,CAAC9P,KAAK,CAAC,KAAK,CAAC;UAChCwM,SAAS,GAAG,IAAI,CAACrK,aAAa,CAACb,IAAI,CAAC1vB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE7C,OAAO,CAAC;UACjE,IAAIghC,UAAU,GAAG,IAAI,CAAC5N,aAAa,CAAC,GAAG,CAAC,GAAGoI,gBAAgB;UAC3DC,WAAW,GAAG33B,IAAI,CAACqS,GAAG,CACpB,CAAC,EACD,CAACnW,OAAO,CAACqsB,SAAS,GAAGoR,SAAS,IAAI35B,IAAI,CAACqS,GAAG,CAAC,CAAC,EAAEjE,KAAK,CAACnR,MAAM,GAAG,CAAC,CAAC,GAC7DigC,UACJ,CAAC;UACD;;;;;IAKN,IAAI,OAAOhhC,OAAO,CAACihC,QAAQ,KAAK,QAAQ,EAAE;MACxCvqB,EAAE,GAAG,CAAC1W,OAAO,CAACihC,QAAQ;KACvB,MAAM;MACL,QAAQjhC,OAAO,CAACihC,QAAQ;QACtB,KAAK,YAAY;UACfvqB,EAAE,GAAG,GAAG,GAAG,IAAI,CAACmkB,KAAK,CAAC7I,OAAO;UAC7B;QACF,KAAK,QAAQ;QACb,KAAK,aAAa;UAChBtb,EAAE,GAAG,GAAG,IAAI,IAAI,CAACmkB,KAAK,CAAC9I,SAAS,GAAG,IAAI,CAAC8I,KAAK,CAAC/I,QAAQ,CAAC;UACvD;QACF,KAAK,QAAQ;QACb,KAAK,aAAa;UAChBpb,EAAE,GAAG,IAAI,CAACmkB,KAAK,CAAC9I,SAAS;UACzB;QACF,KAAK,YAAY;UACfrb,EAAE,GAAG,CAAC;UACN;QACF,KAAK,cAAc;UACjBA,EAAE,GAAG,GAAG,GAAG,IAAI,CAACmkB,KAAK,CAAC/I,QAAQ;UAC9B;QACF,KAAK,SAAS;UACZpb,EAAE,GAAG,GAAG,GAAG,IAAI,CAACmkB,KAAK,CAAC/I,QAAQ;UAC9B;QACF,KAAK,KAAK;UACRpb,EAAE,GAAG,IAAI,CAACmkB,KAAK,CAAC/I,QAAQ;UACxB;QACF;UACEpb,EAAE,GAAG,IAAI,CAACmkB,KAAK,CAAC/I,QAAQ;;MAE5Bpb,EAAE,GAAIA,EAAE,GAAG,IAAI,GAAI,IAAI,CAACkkB,SAAS;;;;IAInC,MAAMsG,aAAa,GACjBlhC,OAAO,CAACy9B,SAAS,GACjBhC,WAAW,IAAIz7B,OAAO,CAAC69B,SAAS,GAAG,CAAC,CAAC,GACrCrC,gBAAgB,IAAIjJ,IAAI,CAACxxB,MAAM,GAAG,CAAC,CAAC;;;IAGtC,IAAIf,OAAO,CAACmhC,IAAI,IAAI,IAAI,EAAE;MACxB,IAAI,CAACA,IAAI,CAACn0B,CAAC,EAAE8b,CAAC,EAAEoY,aAAa,EAAE,IAAI,CAACjG,iBAAiB,EAAE,EAAEj7B,OAAO,CAACmhC,IAAI,CAAC;;IAExE,IAAInhC,OAAO,CAACohC,IAAI,IAAI,IAAI,EAAE;MACxB,IAAI,CAACA,IAAI,CAACp0B,CAAC,EAAE8b,CAAC,EAAEoY,aAAa,EAAE,IAAI,CAACjG,iBAAiB,EAAE,EAAEj7B,OAAO,CAACohC,IAAI,CAAC;;IAExE,IAAIphC,OAAO,CAACqhC,WAAW,IAAI,IAAI,EAAE;MAC/B,IAAI,CAACC,mBAAmB,CAACthC,OAAO,CAACqhC,WAAW,EAAE,KAAK,EAAEr0B,CAAC,EAAE8b,CAAC,EAAE,IAAI,CAAC;;;;IAIlE,IAAI9oB,OAAO,CAACuhC,SAAS,EAAE;MACrB,IAAI,CAACrV,IAAI,EAAE;MACX,IAAI,CAAClsB,OAAO,CAACmZ,MAAM,EAAE;QACnB,IAAI,CAAC0D,WAAW,CAAC,IAAI,IAAI,CAACD,UAAU,IAAI,EAAE,CAAC,CAAC;;MAG9C,MAAMyP,SAAS,GACb,IAAI,CAACuO,SAAS,GAAG,EAAE,GAAG,GAAG,GAAG92B,IAAI,CAAC6H,KAAK,CAAC,IAAI,CAACivB,SAAS,GAAG,EAAE,CAAC;MAC7D,IAAI,CAACvO,SAAS,CAACA,SAAS,CAAC;MAEzB,IAAImV,KAAK,GAAI1Y,CAAC,GAAG,IAAI,CAACmS,iBAAiB,EAAE,GAAK5O,SAAS;MACvD,IAAI,CAAC7D,MAAM,CAACxb,CAAC,EAAEw0B,KAAK,CAAC;MACrB,IAAI,CAAC5Y,MAAM,CAAC5b,CAAC,GAAGk0B,aAAa,EAAEM,KAAK,CAAC;MACrC,IAAI,CAACroB,MAAM,EAAE;MACb,IAAI,CAACgT,OAAO,EAAE;;;;IAIhB,IAAInsB,OAAO,CAACyhC,MAAM,EAAE;MAClB,IAAI,CAACvV,IAAI,EAAE;MACX,IAAI,CAAClsB,OAAO,CAACmZ,MAAM,EAAE;QACnB,IAAI,CAAC0D,WAAW,CAAC,IAAI,IAAI,CAACD,UAAU,IAAI,EAAE,CAAC,CAAC;;MAG9C,MAAMyP,SAAS,GACb,IAAI,CAACuO,SAAS,GAAG,EAAE,GAAG,GAAG,GAAG92B,IAAI,CAAC6H,KAAK,CAAC,IAAI,CAACivB,SAAS,GAAG,EAAE,CAAC;MAC7D,IAAI,CAACvO,SAAS,CAACA,SAAS,CAAC;MAEzB,IAAImV,KAAK,GAAG1Y,CAAC,GAAG,IAAI,CAACmS,iBAAiB,EAAE,GAAG,CAAC;MAC5C,IAAI,CAACzS,MAAM,CAACxb,CAAC,EAAEw0B,KAAK,CAAC;MACrB,IAAI,CAAC5Y,MAAM,CAAC5b,CAAC,GAAGk0B,aAAa,EAAEM,KAAK,CAAC;MACrC,IAAI,CAACroB,MAAM,EAAE;MACb,IAAI,CAACgT,OAAO,EAAE;;IAGhB,IAAI,CAACD,IAAI,EAAE;;;IAGX,IAAIlsB,OAAO,CAAC0hC,OAAO,EAAE;MACnB,IAAIC,IAAI;MACR,IAAI,OAAO3hC,OAAO,CAAC0hC,OAAO,KAAK,QAAQ,EAAE;QACvCC,IAAI,GAAG,CAAC79B,IAAI,CAACgiB,GAAG,CAAE9lB,OAAO,CAAC0hC,OAAO,GAAG59B,IAAI,CAACkmB,EAAE,GAAI,GAAG,CAAC;OACpD,MAAM;QACL2X,IAAI,GAAG,CAAC,IAAI;;MAEd,IAAI,CAAC/rB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE5I,CAAC,EAAE8b,CAAC,CAAC;MAChC,IAAI,CAAClT,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE+rB,IAAI,EAAE,CAAC,EAAE,CAACA,IAAI,GAAGjrB,EAAE,EAAE,CAAC,CAAC;MAC5C,IAAI,CAACd,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC5I,CAAC,EAAE,CAAC8b,CAAC,CAAC;;;;IAIpC,IAAI,CAAClT,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACqC,IAAI,CAAC7O,MAAM,CAAC;IAChD0f,CAAC,GAAG,IAAI,CAAC7Q,IAAI,CAAC7O,MAAM,GAAG0f,CAAC,GAAGpS,EAAE;;;IAG7B,IAAI,IAAI,CAACuB,IAAI,CAAC/N,KAAK,CAAC,IAAI,CAAC2wB,KAAK,CAAC32B,EAAE,CAAC,IAAI,IAAI,EAAE;MAC1C,IAAI,CAAC+T,IAAI,CAAC/N,KAAK,CAAC,IAAI,CAAC2wB,KAAK,CAAC32B,EAAE,CAAC,GAAG,IAAI,CAAC22B,KAAK,CAACvxB,GAAG,EAAE;;;;IAInD,IAAI,CAACuQ,UAAU,CAAC,IAAI,CAAC;;;IAGrB,IAAI,CAACA,UAAU,CAAE,WAAUjW,QAAM,CAACoJ,CAAC,CAAE,IAAGpJ,QAAM,CAACklB,CAAC,CAAE,KAAI,CAAC;;;IAGvD,IAAI,CAACjP,UAAU,CAAE,IAAG,IAAI,CAACghB,KAAK,CAAC32B,EAAG,IAAGN,QAAM,CAAC,IAAI,CAACg3B,SAAS,CAAE,KAAI,CAAC;;;IAGjE,MAAMrnB,IAAI,GAAGvT,OAAO,CAACkwB,IAAI,IAAIlwB,OAAO,CAACmZ,MAAM,GAAG,CAAC,GAAGnZ,OAAO,CAACmZ,MAAM,GAAG,CAAC,GAAG,CAAC;IACxE,IAAI5F,IAAI,EAAE;MACR,IAAI,CAACsG,UAAU,CAAE,GAAEtG,IAAK,KAAI,CAAC;;;;IAI/B,IAAIioB,gBAAgB,EAAE;MACpB,IAAI,CAAC3hB,UAAU,CAAE,GAAEjW,QAAM,CAAC43B,gBAAgB,CAAE,KAAI,CAAC;;;;;;;IAOnD,IAAIC,WAAW,EAAE;MACfvpB,KAAK,GAAGqgB,IAAI,CAACwO,IAAI,EAAE,CAAC9P,KAAK,CAAC,KAAK,CAAC;MAChCwK,WAAW,IAAI,IAAI,CAACrI,aAAa,CAAC,GAAG,CAAC,GAAGoI,gBAAgB;MACzDC,WAAW,IAAI,IAAI,GAAG,IAAI,CAACb,SAAS;MAEpChG,OAAO,GAAG,EAAE;MACZC,SAAS,GAAG,EAAE;MACd,KAAK,IAAI2H,IAAI,IAAItqB,KAAK,EAAE;QACtB,MAAM,CAAC0vB,WAAW,EAAEC,aAAa,CAAC,GAAG,IAAI,CAAChH,KAAK,CAAC5jB,MAAM,CACpDulB,IAAI,EACJx8B,OAAO,CAACo2B,QACV,CAAC;QACDxB,OAAO,GAAGA,OAAO,CAAC3vB,MAAM,CAAC28B,WAAW,CAAC;QACrC/M,SAAS,GAAGA,SAAS,CAAC5vB,MAAM,CAAC48B,aAAa,CAAC;;;;QAI3C,MAAMrlB,KAAK,GAAG,EAAE;QAChB,MAAMra,MAAM,GAAG0yB,SAAS,CAACA,SAAS,CAAC9zB,MAAM,GAAG,CAAC,CAAC;QAC9C,KAAK,IAAIX,GAAG,IAAI+B,MAAM,EAAE;UACtB,MAAM9B,GAAG,GAAG8B,MAAM,CAAC/B,GAAG,CAAC;UACvBoc,KAAK,CAACpc,GAAG,CAAC,GAAGC,GAAG;;QAElBmc,KAAK,CAACsY,QAAQ,IAAI2G,WAAW;QAC7B5G,SAAS,CAACA,SAAS,CAAC9zB,MAAM,GAAG,CAAC,CAAC,GAAGyb,KAAK;;KAE1C,MAAM;MACL,CAACoY,OAAO,EAAEC,SAAS,CAAC,GAAG,IAAI,CAACgG,KAAK,CAAC5jB,MAAM,CAACsb,IAAI,EAAEvyB,OAAO,CAACo2B,QAAQ,CAAC;;IAGlE,MAAMxF,KAAK,GAAG,IAAI,CAACgK,SAAS,GAAG,IAAI;IACnC,MAAMtS,QAAQ,GAAG,EAAE;IACnB,IAAIrnB,IAAI,GAAG,CAAC;IACZ,IAAI6gC,SAAS,GAAG,KAAK;;;IAGrB,MAAMC,UAAU,GAAGC,GAAG,IAAI;MACxB,IAAI/gC,IAAI,GAAG+gC,GAAG,EAAE;QACd,MAAM9lB,GAAG,GAAG0Y,OAAO,CAACjzB,KAAK,CAACV,IAAI,EAAE+gC,GAAG,CAAC,CAACzgC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM4zB,OAAO,GACXN,SAAS,CAACmN,GAAG,GAAG,CAAC,CAAC,CAAClN,QAAQ,GAAGD,SAAS,CAACmN,GAAG,GAAG,CAAC,CAAC,CAAC9M,YAAY;QAC/D5M,QAAQ,CAACpnB,IAAI,CAAE,IAAGgb,GAAI,KAAItY,QAAM,CAAC,CAACuxB,OAAO,CAAE,EAAC,CAAC;;MAG/C,OAAQl0B,IAAI,GAAG+gC,GAAG;KACnB;;;IAGD,MAAMC,KAAK,GAAGhgC,CAAC,IAAI;MACjB8/B,UAAU,CAAC9/B,CAAC,CAAC;MAEb,IAAIqmB,QAAQ,CAACvnB,MAAM,GAAG,CAAC,EAAE;QACvB,IAAI,CAAC8Y,UAAU,CAAE,IAAGyO,QAAQ,CAAC/mB,IAAI,CAAC,GAAG,CAAE,MAAK,CAAC;QAC7C,OAAQ+mB,QAAQ,CAACvnB,MAAM,GAAG,CAAC;;KAE9B;IAED,KAAKkB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4yB,SAAS,CAAC9zB,MAAM,EAAEkB,CAAC,EAAE,EAAE;;;MAGrC,MAAM6T,GAAG,GAAG+e,SAAS,CAAC5yB,CAAC,CAAC;MACxB,IAAI6T,GAAG,CAACkf,OAAO,IAAIlf,GAAG,CAACmf,OAAO,EAAE;;QAE9BgN,KAAK,CAAChgC,CAAC,CAAC;;;QAGR,IAAI,CAAC4X,UAAU,CACZ,WAAUjW,QAAM,CAACoJ,CAAC,GAAG8I,GAAG,CAACkf,OAAO,GAAGpE,KAAK,CAAE,IAAGhtB,QAAM,CAClDklB,CAAC,GAAGhT,GAAG,CAACmf,OAAO,GAAGrE,KACpB,CAAE,KACJ,CAAC;QACDqR,KAAK,CAAChgC,CAAC,GAAG,CAAC,CAAC;QAEZ6/B,SAAS,GAAG,IAAI;OACjB,MAAM;;QAEL,IAAIA,SAAS,EAAE;UACb,IAAI,CAACjoB,UAAU,CAAE,WAAUjW,QAAM,CAACoJ,CAAC,CAAE,IAAGpJ,QAAM,CAACklB,CAAC,CAAE,KAAI,CAAC;UACvDgZ,SAAS,GAAG,KAAK;;;;QAInB,IAAIhsB,GAAG,CAACgf,QAAQ,GAAGhf,GAAG,CAACof,YAAY,KAAK,CAAC,EAAE;UACzC6M,UAAU,CAAC9/B,CAAC,GAAG,CAAC,CAAC;;;MAIrB+K,CAAC,IAAI8I,GAAG,CAACgf,QAAQ,GAAGlE,KAAK;;;;IAI3BqR,KAAK,CAAChgC,CAAC,CAAC;;;IAGR,IAAI,CAAC4X,UAAU,CAAC,IAAI,CAAC;;;IAGrB,OAAO,IAAI,CAACsS,OAAO,EAAE;;AAEzB,CAAC;;ACjjBD,MAAM+V,OAAO,GAAG,CACd,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP;AAED,MAAMC,eAAe,GAAG;EACtB,CAAC,EAAE,YAAY;EACf,CAAC,EAAE,WAAW;EACd,CAAC,EAAE;AACL,CAAC;AAED,MAAMC,IAAI,CAAC;EACTriC,WAAWA,CAACoE,IAAI,EAAE+7B,KAAK,EAAE;IACvB,IAAImC,MAAM;IACV,IAAI,CAACl+B,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC+7B,KAAK,GAAGA,KAAK;IAClB,IAAI,IAAI,CAAC/7B,IAAI,CAACm+B,YAAY,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;MACxC,MAAM,uBAAuB;;;;IAI/B,IAAI,CAACC,WAAW,GAAGC,IAAI,CAACC,UAAU,CAAC,IAAI,CAACt+B,IAAI,CAAC,CAACu+B,WAAW,IAAI,CAAC;IAE9D,IAAI5sB,GAAG,GAAG,CAAC;IACX,OAAOA,GAAG,GAAG,IAAI,CAAC3R,IAAI,CAACpD,MAAM,EAAE;MAC7BshC,MAAM,GAAG,IAAI,CAACl+B,IAAI,CAACm+B,YAAY,CAACxsB,GAAG,CAAC;MACpCA,GAAG,IAAI,CAAC;MACR,IAAIosB,OAAO,CAAC7Z,QAAQ,CAACga,MAAM,CAAC,EAAE;QAC5B;;MAEFvsB,GAAG,IAAI,IAAI,CAAC3R,IAAI,CAACm+B,YAAY,CAACxsB,GAAG,CAAC;;IAGpC,IAAI,CAACosB,OAAO,CAAC7Z,QAAQ,CAACga,MAAM,CAAC,EAAE;MAC7B,MAAM,eAAe;;IAEvBvsB,GAAG,IAAI,CAAC;IAER,IAAI,CAAC6sB,IAAI,GAAG,IAAI,CAACx+B,IAAI,CAAC2R,GAAG,EAAE,CAAC;IAC5B,IAAI,CAAC1M,MAAM,GAAG,IAAI,CAACjF,IAAI,CAACm+B,YAAY,CAACxsB,GAAG,CAAC;IACzCA,GAAG,IAAI,CAAC;IAER,IAAI,CAAC3M,KAAK,GAAG,IAAI,CAAChF,IAAI,CAACm+B,YAAY,CAACxsB,GAAG,CAAC;IACxCA,GAAG,IAAI,CAAC;IAER,MAAM8sB,QAAQ,GAAG,IAAI,CAACz+B,IAAI,CAAC2R,GAAG,EAAE,CAAC;IACjC,IAAI,CAAC+sB,UAAU,GAAGV,eAAe,CAACS,QAAQ,CAAC;IAE3C,IAAI,CAAC9vB,GAAG,GAAG,IAAI;;EAGjB6D,KAAKA,CAAC1S,QAAQ,EAAE;IACd,IAAI,IAAI,CAAC6O,GAAG,EAAE;MACZ;;IAGF,IAAI,CAACA,GAAG,GAAG7O,QAAQ,CAACqF,GAAG,CAAC;MACtBI,IAAI,EAAE,SAAS;MACfyO,OAAO,EAAE,OAAO;MAChB2qB,gBAAgB,EAAE,IAAI,CAACH,IAAI;MAC3BI,KAAK,EAAE,IAAI,CAAC55B,KAAK;MACjB65B,MAAM,EAAE,IAAI,CAAC55B,MAAM;MACnBuB,UAAU,EAAE,IAAI,CAACk4B,UAAU;MAC3Bv+B,MAAM,EAAE;KACT,CAAC;;;;;IAKF,IAAI,IAAI,CAACu+B,UAAU,KAAK,YAAY,EAAE;MACpC,IAAI,CAAC/vB,GAAG,CAAC3O,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;IAGpE,IAAI,CAAC2O,GAAG,CAAC5Q,GAAG,CAAC,IAAI,CAACiC,IAAI,CAAC;;;IAGvB,OAAQ,IAAI,CAACA,IAAI,GAAG,IAAI;;AAE5B;;AC1FA,MAAM8+B,QAAQ,CAAC;EACbljC,WAAWA,CAACoE,IAAI,EAAE+7B,KAAK,EAAE;IACvB,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACgD,KAAK,GAAG,IAAIC,GAAG,CAACh/B,IAAI,CAAC;IAC1B,IAAI,CAACgF,KAAK,GAAG,IAAI,CAAC+5B,KAAK,CAAC/5B,KAAK;IAC7B,IAAI,CAACC,MAAM,GAAG,IAAI,CAAC85B,KAAK,CAAC95B,MAAM;IAC/B,IAAI,CAACg6B,OAAO,GAAG,IAAI,CAACF,KAAK,CAACE,OAAO;IACjC,IAAI,CAACtwB,GAAG,GAAG,IAAI;;EAGjB6D,KAAKA,CAAC1S,QAAQ,EAAE;IACd,IAAIo/B,WAAW,GAAG,KAAK;IAEvB,IAAI,CAACp/B,QAAQ,GAAGA,QAAQ;IACxB,IAAI,IAAI,CAAC6O,GAAG,EAAE;MACZ;;IAGF,MAAMwwB,eAAe,GAAG,IAAI,CAACJ,KAAK,CAACI,eAAe;IAClD,MAAMC,YAAY,GAAG,IAAI,CAACL,KAAK,CAACM,eAAe,KAAK,CAAC;IAErD,IAAI,CAAC1wB,GAAG,GAAG,IAAI,CAAC7O,QAAQ,CAACqF,GAAG,CAAC;MAC3BI,IAAI,EAAE,SAAS;MACfyO,OAAO,EAAE,OAAO;MAChB2qB,gBAAgB,EAAEQ,eAAe,GAAG,CAAC,GAAG,IAAI,CAACJ,KAAK,CAACP,IAAI;MACvDI,KAAK,EAAE,IAAI,CAAC55B,KAAK;MACjB65B,MAAM,EAAE,IAAI,CAAC55B,MAAM;MACnB9E,MAAM,EAAE;KACT,CAAC;IAEF,IAAI,CAACg/B,eAAe,EAAE;MACpB,MAAMlb,MAAM,GAAG,IAAI,CAACnkB,QAAQ,CAACqF,GAAG,CAAC;QAC/Bm6B,SAAS,EAAEF,YAAY,GAAG,CAAC,GAAG,EAAE;QAChCG,MAAM,EAAE,IAAI,CAACR,KAAK,CAACS,MAAM;QACzBb,gBAAgB,EAAE,IAAI,CAACI,KAAK,CAACP,IAAI;QACjCiB,OAAO,EAAE,IAAI,CAACz6B;OACf,CAAC;MAEF,IAAI,CAAC2J,GAAG,CAAC3O,IAAI,CAAC,aAAa,CAAC,GAAGikB,MAAM;MACrCA,MAAM,CAAClmB,GAAG,EAAE;;IAGd,IAAI,IAAI,CAACghC,KAAK,CAACW,OAAO,CAAC9iC,MAAM,KAAK,CAAC,EAAE;MACnC,IAAI,CAAC+R,GAAG,CAAC3O,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC++B,KAAK,CAACL,UAAU;KACpD,MAAM;;MAEL,MAAMgB,OAAO,GAAG,IAAI,CAAC5/B,QAAQ,CAACqF,GAAG,EAAE;MACnCu6B,OAAO,CAAC3hC,GAAG,CAACQ,MAAM,CAACC,IAAI,CAAC,IAAI,CAACugC,KAAK,CAACW,OAAO,CAAC,CAAC;;;MAG5C,IAAI,CAAC/wB,GAAG,CAAC3O,IAAI,CAAC,YAAY,CAAC,GAAG,CAC5B,SAAS,EACT,WAAW,EACX,IAAI,CAAC++B,KAAK,CAACW,OAAO,CAAC9iC,MAAM,GAAG,CAAC,GAAG,CAAC,EACjC8iC,OAAO,CACR;;;;;IAKH,IAAI,IAAI,CAACX,KAAK,CAACY,YAAY,CAACC,SAAS,IAAI,IAAI,EAAE;;;MAG7C,MAAM1jC,GAAG,GAAG,IAAI,CAAC6iC,KAAK,CAACY,YAAY,CAACC,SAAS;MAC7C,IAAI,CAACjxB,GAAG,CAAC3O,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC9D,GAAG,EAAEA,GAAG,CAAC;KACnC,MAAM,IAAI,IAAI,CAAC6iC,KAAK,CAACY,YAAY,CAACE,GAAG,EAAE;;;MAGtC,MAAM;QAAEA;OAAK,GAAG,IAAI,CAACd,KAAK,CAACY,YAAY;MACvC,MAAMG,IAAI,GAAG,EAAE;MACf,KAAK,IAAIj3B,CAAC,IAAIg3B,GAAG,EAAE;QACjBC,IAAI,CAAC/iC,IAAI,CAAC8L,CAAC,EAAEA,CAAC,CAAC;;MAGjB,IAAI,CAAC8F,GAAG,CAAC3O,IAAI,CAAC,MAAM,CAAC,GAAG8/B,IAAI;KAC7B,MAAM,IAAI,IAAI,CAACf,KAAK,CAACY,YAAY,CAACI,OAAO,EAAE;;;MAG1Cb,WAAW,GAAG,IAAI;MAClB,OAAO,IAAI,CAACc,uBAAuB,EAAE;KACtC,MAAM,IAAIb,eAAe,EAAE;;;;MAI1BD,WAAW,GAAG,IAAI;MAClB,OAAO,IAAI,CAACe,iBAAiB,EAAE;;IAGjC,IAAIb,YAAY,IAAI,CAACF,WAAW,EAAE;MAChC,OAAO,IAAI,CAACgB,UAAU,EAAE;;IAG1B,IAAI,CAACz/B,QAAQ,EAAE;;EAGjBA,QAAQA,GAAG;IACT,IAAI,IAAI,CAAC0/B,YAAY,EAAE;MACrB,MAAMC,KAAK,GAAG,IAAI,CAACtgC,QAAQ,CAACqF,GAAG,CAAC;QAC9BI,IAAI,EAAE,SAAS;QACfyO,OAAO,EAAE,OAAO;QAChB6qB,MAAM,EAAE,IAAI,CAAC55B,MAAM;QACnB25B,KAAK,EAAE,IAAI,CAAC55B,KAAK;QACjB25B,gBAAgB,EAAE,CAAC;QACnBx+B,MAAM,EAAE,aAAa;QACrBqG,UAAU,EAAE,YAAY;QACxB65B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;OACd,CAAC;MAEFD,KAAK,CAACriC,GAAG,CAAC,IAAI,CAACoiC,YAAY,CAAC;MAC5B,IAAI,CAACxxB,GAAG,CAAC3O,IAAI,CAAC,OAAO,CAAC,GAAGogC,KAAK;;;;IAIhC,IAAI,CAACzxB,GAAG,CAAC5Q,GAAG,CAAC,IAAI,CAACkhC,OAAO,CAAC;;;IAG1B,IAAI,CAACF,KAAK,GAAG,IAAI;IACjB,OAAQ,IAAI,CAACE,OAAO,GAAG,IAAI;;EAG7BgB,iBAAiBA,GAAG;IAClB,OAAO,IAAI,CAAClB,KAAK,CAACuB,YAAY,CAACC,MAAM,IAAI;MACvC,IAAI/jC,CAAC,EAAEgkC,CAAC;MACR,MAAMC,UAAU,GAAG,IAAI,CAAC1B,KAAK,CAACS,MAAM;MACpC,MAAMkB,UAAU,GAAG,IAAI,CAAC17B,KAAK,GAAG,IAAI,CAACC,MAAM;MAC3C,MAAMg6B,OAAO,GAAG1gC,MAAM,CAACsS,KAAK,CAAC6vB,UAAU,GAAGD,UAAU,CAAC;MACrD,MAAMN,YAAY,GAAG5hC,MAAM,CAACsS,KAAK,CAAC6vB,UAAU,CAAC;MAE7C,IAAI5iC,CAAC,GAAI0iC,CAAC,GAAGhkC,CAAC,GAAG,CAAE;MACnB,MAAM8xB,GAAG,GAAGiS,MAAM,CAAC3jC,MAAM;;MAEzB,MAAM+jC,aAAa,GAAG,IAAI,CAAC5B,KAAK,CAACP,IAAI,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;MACpD,OAAO1gC,CAAC,GAAGwwB,GAAG,EAAE;QACd,KAAK,IAAIsS,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGH,UAAU,EAAEG,UAAU,EAAE,EAAE;UAC9D3B,OAAO,CAACuB,CAAC,EAAE,CAAC,GAAGD,MAAM,CAACziC,CAAC,EAAE,CAAC;UAC1BA,CAAC,IAAI6iC,aAAa;;QAEpBR,YAAY,CAAC3jC,CAAC,EAAE,CAAC,GAAG+jC,MAAM,CAACziC,CAAC,EAAE,CAAC;QAC/BA,CAAC,IAAI6iC,aAAa;;MAGpB,IAAI,CAAC1B,OAAO,GAAGl+B,IAAI,CAACC,WAAW,CAACi+B,OAAO,CAAC;MACxC,IAAI,CAACkB,YAAY,GAAGp/B,IAAI,CAACC,WAAW,CAACm/B,YAAY,CAAC;MAClD,OAAO,IAAI,CAAC1/B,QAAQ,EAAE;KACvB,CAAC;;EAGJu/B,uBAAuBA,GAAG;IACxB,MAAML,YAAY,GAAG,IAAI,CAACZ,KAAK,CAACY,YAAY,CAACI,OAAO;IACpD,OAAO,IAAI,CAAChB,KAAK,CAACuB,YAAY,CAACC,MAAM,IAAI;MACvC,MAAMJ,YAAY,GAAG5hC,MAAM,CAACsS,KAAK,CAAC,IAAI,CAAC7L,KAAK,GAAG,IAAI,CAACC,MAAM,CAAC;MAE3D,IAAInH,CAAC,GAAG,CAAC;MACT,KAAK,IAAIuS,CAAC,GAAG,CAAC,EAAEtS,GAAG,GAAGwiC,MAAM,CAAC3jC,MAAM,EAAEyT,CAAC,GAAGtS,GAAG,EAAEsS,CAAC,EAAE,EAAE;QACjD8vB,YAAY,CAACriC,CAAC,EAAE,CAAC,GAAG6hC,YAAY,CAACY,MAAM,CAAClwB,CAAC,CAAC,CAAC;;MAG7C,IAAI,CAAC8vB,YAAY,GAAGp/B,IAAI,CAACC,WAAW,CAACm/B,YAAY,CAAC;MAClD,OAAO,IAAI,CAAC1/B,QAAQ,EAAE;KACvB,CAAC;;EAGJy/B,UAAUA,GAAG;IACX,IAAI,CAACnB,KAAK,CAACuB,YAAY,CAACC,MAAM,IAAI;MAChC,IAAI,CAACtB,OAAO,GAAGl+B,IAAI,CAACC,WAAW,CAACu/B,MAAM,CAAC;MACvC,IAAI,CAAC9/B,QAAQ,EAAE;KAChB,CAAC;;AAEN;;AC3KA;AACA;AACA;AACA;AAMA,MAAMogC,QAAQ,CAAC;EACb,OAAO7T,IAAIA,CAACgJ,GAAG,EAAE+F,KAAK,EAAE;IACtB,IAAI/7B,IAAI;IACR,IAAIzB,MAAM,CAACK,QAAQ,CAACo3B,GAAG,CAAC,EAAE;MACxBh2B,IAAI,GAAGg2B,GAAG;KACX,MAAM,IAAIA,GAAG,YAAYI,WAAW,EAAE;MACrCp2B,IAAI,GAAGzB,MAAM,CAACC,IAAI,CAAC,IAAI23B,UAAU,CAACH,GAAG,CAAC,CAAC;KACxC,MAAM;MACL,IAAI9H,KAAK;MACT,IAAKA,KAAK,GAAG,wBAAwB,CAAC4S,IAAI,CAAC9K,GAAG,CAAC,EAAG;QAChDh2B,IAAI,GAAGzB,MAAM,CAACC,IAAI,CAAC0vB,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;OACvC,MAAM;QACLluB,IAAI,GAAGktB,EAAE,CAACC,YAAY,CAAC6I,GAAG,CAAC;QAC3B,IAAI,CAACh2B,IAAI,EAAE;UACT;;;;IAKN,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;MACxC,OAAO,IAAIi+B,IAAI,CAACj+B,IAAI,EAAE+7B,KAAK,CAAC;KAC7B,MAAM,IAAI/7B,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,IAAI,CAACvE,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE;MACrE,OAAO,IAAIujC,QAAG,CAACh/B,IAAI,EAAE+7B,KAAK,CAAC;KAC5B,MAAM;MACL,MAAM,IAAIrgC,KAAK,CAAC,uBAAuB,CAAC;;;AAG9C;;AClCA,kBAAe;EACbqlC,UAAUA,GAAG;IACX,IAAI,CAACC,cAAc,GAAG,EAAE;IACxB,OAAQ,IAAI,CAACC,WAAW,GAAG,CAAC;GAC7B;EAEDlC,KAAKA,CAAC/I,GAAG,EAAEntB,CAAC,EAAE8b,CAAC,EAAE9oB,OAAO,GAAG,EAAE,EAAE;IAC7B,IAAIqlC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAErC,KAAK,EAAEsC,EAAE,EAAEhgC,IAAI,EAAEigC,KAAK,EAAEC,WAAW,EAAEC,OAAO,EAAEC,OAAO;IACrE,IAAI,OAAO54B,CAAC,KAAK,QAAQ,EAAE;MACzBhN,OAAO,GAAGgN,CAAC;MACXA,CAAC,GAAG,IAAI;;;;IAIV,MAAM64B,iBAAiB,GACrB7lC,OAAO,CAAC6lC,iBAAiB,IACxB7lC,OAAO,CAAC6lC,iBAAiB,KAAK,KAAK,IAAI,IAAI,CAAC7lC,OAAO,CAAC6lC,iBAAkB;IAEzE74B,CAAC,GAAG,CAACxH,IAAI,GAAGwH,CAAC,IAAI,IAAI,GAAGA,CAAC,GAAGhN,OAAO,CAACgN,CAAC,KAAK,IAAI,GAAGxH,IAAI,GAAG,IAAI,CAACwH,CAAC;IAC9D8b,CAAC,GAAG,CAAC2c,KAAK,GAAG3c,CAAC,IAAI,IAAI,GAAGA,CAAC,GAAG9oB,OAAO,CAAC8oB,CAAC,KAAK,IAAI,GAAG2c,KAAK,GAAG,IAAI,CAAC3c,CAAC;IAEhE,IAAI,OAAOqR,GAAG,KAAK,QAAQ,EAAE;MAC3B+I,KAAK,GAAG,IAAI,CAACiC,cAAc,CAAChL,GAAG,CAAC;;IAGlC,IAAI,CAAC+I,KAAK,EAAE;MACV,IAAI/I,GAAG,CAAChxB,KAAK,IAAIgxB,GAAG,CAAC/wB,MAAM,EAAE;QAC3B85B,KAAK,GAAG/I,GAAG;OACZ,MAAM;QACL+I,KAAK,GAAG,IAAI,CAAC4C,SAAS,CAAC3L,GAAG,CAAC;;;IAI/B,IAAI,CAAC+I,KAAK,CAACpwB,GAAG,EAAE;MACdowB,KAAK,CAACvsB,KAAK,CAAC,IAAI,CAAC;;IAGnB,IAAI,IAAI,CAACsB,IAAI,CAAC7N,QAAQ,CAAC84B,KAAK,CAAChD,KAAK,CAAC,IAAI,IAAI,EAAE;MAC3C,IAAI,CAACjoB,IAAI,CAAC7N,QAAQ,CAAC84B,KAAK,CAAChD,KAAK,CAAC,GAAGgD,KAAK,CAACpwB,GAAG;;IAG7C,IAAI;MAAE3J,KAAK;MAAEC;KAAQ,GAAG85B,KAAK;;;IAG7B,IAAI,CAAC2C,iBAAiB,IAAI3C,KAAK,CAACX,WAAW,GAAG,CAAC,EAAE;MAC/C,CAACp5B,KAAK,EAAEC,MAAM,CAAC,GAAG,CAACA,MAAM,EAAED,KAAK,CAAC;;IAGnC,IAAImjB,CAAC,GAAGtsB,OAAO,CAACmJ,KAAK,IAAIA,KAAK;IAC9B,IAAIge,CAAC,GAAGnnB,OAAO,CAACoJ,MAAM,IAAIA,MAAM;IAEhC,IAAIpJ,OAAO,CAACmJ,KAAK,IAAI,CAACnJ,OAAO,CAACoJ,MAAM,EAAE;MACpC,MAAM28B,EAAE,GAAGzZ,CAAC,GAAGnjB,KAAK;MACpBmjB,CAAC,GAAGnjB,KAAK,GAAG48B,EAAE;MACd5e,CAAC,GAAG/d,MAAM,GAAG28B,EAAE;KAChB,MAAM,IAAI/lC,OAAO,CAACoJ,MAAM,IAAI,CAACpJ,OAAO,CAACmJ,KAAK,EAAE;MAC3C,MAAM68B,EAAE,GAAG7e,CAAC,GAAG/d,MAAM;MACrBkjB,CAAC,GAAGnjB,KAAK,GAAG68B,EAAE;MACd7e,CAAC,GAAG/d,MAAM,GAAG48B,EAAE;KAChB,MAAM,IAAIhmC,OAAO,CAAC4wB,KAAK,EAAE;MACxBtE,CAAC,GAAGnjB,KAAK,GAAGnJ,OAAO,CAAC4wB,KAAK;MACzBzJ,CAAC,GAAG/d,MAAM,GAAGpJ,OAAO,CAAC4wB,KAAK;KAC3B,MAAM,IAAI5wB,OAAO,CAACimC,GAAG,EAAE;MACtB,CAACV,EAAE,EAAEF,EAAE,CAAC,GAAGrlC,OAAO,CAACimC,GAAG;MACtBX,EAAE,GAAGC,EAAE,GAAGF,EAAE;MACZG,EAAE,GAAGr8B,KAAK,GAAGC,MAAM;MACnB,IAAIo8B,EAAE,GAAGF,EAAE,EAAE;QACXhZ,CAAC,GAAGiZ,EAAE;QACNpe,CAAC,GAAGoe,EAAE,GAAGC,EAAE;OACZ,MAAM;QACLre,CAAC,GAAGke,EAAE;QACN/Y,CAAC,GAAG+Y,EAAE,GAAGG,EAAE;;KAEd,MAAM,IAAIxlC,OAAO,CAACkmC,KAAK,EAAE;MACxB,CAACX,EAAE,EAAEF,EAAE,CAAC,GAAGrlC,OAAO,CAACkmC,KAAK;MACxBZ,EAAE,GAAGC,EAAE,GAAGF,EAAE;MACZG,EAAE,GAAGr8B,KAAK,GAAGC,MAAM;MACnB,IAAIo8B,EAAE,GAAGF,EAAE,EAAE;QACXne,CAAC,GAAGke,EAAE;QACN/Y,CAAC,GAAG+Y,EAAE,GAAGG,EAAE;OACZ,MAAM;QACLlZ,CAAC,GAAGiZ,EAAE;QACNpe,CAAC,GAAGoe,EAAE,GAAGC,EAAE;;;IAIf,IAAIxlC,OAAO,CAACimC,GAAG,IAAIjmC,OAAO,CAACkmC,KAAK,EAAE;MAChC,IAAIlmC,OAAO,CAACo8B,KAAK,KAAK,QAAQ,EAAE;QAC9BpvB,CAAC,GAAGA,CAAC,GAAGu4B,EAAE,GAAG,CAAC,GAAGjZ,CAAC,GAAG,CAAC;OACvB,MAAM,IAAItsB,OAAO,CAACo8B,KAAK,KAAK,OAAO,EAAE;QACpCpvB,CAAC,GAAGA,CAAC,GAAGu4B,EAAE,GAAGjZ,CAAC;;MAGhB,IAAItsB,OAAO,CAACmmC,MAAM,KAAK,QAAQ,EAAE;QAC/Brd,CAAC,GAAGA,CAAC,GAAGuc,EAAE,GAAG,CAAC,GAAGle,CAAC,GAAG,CAAC;OACvB,MAAM,IAAInnB,OAAO,CAACmmC,MAAM,KAAK,QAAQ,EAAE;QACtCrd,CAAC,GAAGA,CAAC,GAAGuc,EAAE,GAAGle,CAAC;;;IAIlB,IAAI,CAAC0e,iBAAiB,EAAE;MACtB,QAAQ3C,KAAK,CAACX,WAAW;;QAEvB;QACA,KAAK,CAAC;UACJpb,CAAC,GAAG,CAACA,CAAC;UACN2B,CAAC,IAAI3B,CAAC;UAENue,WAAW,GAAG,CAAC;UACf;;QAEF,KAAK,CAAC;UACJpZ,CAAC,GAAG,CAACA,CAAC;UACNnF,CAAC,GAAG,CAACA,CAAC;UACNna,CAAC,IAAIsf,CAAC;UACNxD,CAAC,IAAI3B,CAAC;UAENue,WAAW,GAAG,CAAC;UACf;;QAEF,KAAK,CAAC;UACJC,OAAO,GAAG34B,CAAC;UACX44B,OAAO,GAAG9c,CAAC;UAEX3B,CAAC,GAAG,CAACA,CAAC;UACNna,CAAC,IAAIsf,CAAC;UAENoZ,WAAW,GAAG,GAAG;UACjB;;QAEF,KAAK,CAAC;;;UAGJ;;QAEF,KAAK,CAAC;UACJC,OAAO,GAAG34B,CAAC;UACX44B,OAAO,GAAG9c,CAAC;UAEX,CAACwD,CAAC,EAAEnF,CAAC,CAAC,GAAG,CAACA,CAAC,EAAEmF,CAAC,CAAC;UACfxD,CAAC,IAAI3B,CAAC;UAENue,WAAW,GAAG,EAAE;UAChB;;QAEF,KAAK,CAAC;UACJC,OAAO,GAAG34B,CAAC;UACX44B,OAAO,GAAG9c,CAAC;UAEX,CAACwD,CAAC,EAAEnF,CAAC,CAAC,GAAG,CAACA,CAAC,EAAEmF,CAAC,CAAC;UACfnF,CAAC,GAAG,CAACA,CAAC;UAENue,WAAW,GAAG,EAAE;UAChB;;QAEF,KAAK,CAAC;UACJC,OAAO,GAAG34B,CAAC;UACX44B,OAAO,GAAG9c,CAAC;UAEX,CAACwD,CAAC,EAAEnF,CAAC,CAAC,GAAG,CAACA,CAAC,EAAEmF,CAAC,CAAC;UACfnF,CAAC,GAAG,CAACA,CAAC;UACNmF,CAAC,GAAG,CAACA,CAAC;UACNtf,CAAC,IAAIsf,CAAC;UAENoZ,WAAW,GAAG,EAAE;UAChB;;QAEF,KAAK,CAAC;UACJC,OAAO,GAAG34B,CAAC;UACX44B,OAAO,GAAG9c,CAAC;UAEX,CAACwD,CAAC,EAAEnF,CAAC,CAAC,GAAG,CAACA,CAAC,EAAEmF,CAAC,CAAC;UACfnF,CAAC,GAAG,CAACA,CAAC;UACNna,CAAC,IAAIsf,CAAC;UACNxD,CAAC,IAAI3B,CAAC;UAENue,WAAW,GAAG,CAAC,EAAE;UACjB;;KAEL,MAAM;MACLve,CAAC,GAAG,CAACA,CAAC;MACN2B,CAAC,IAAI3B,CAAC;MACNue,WAAW,GAAG,CAAC;;;;IAIjB,IAAI1lC,OAAO,CAACmhC,IAAI,IAAI,IAAI,EAAE;MACxB,IAAI,CAACA,IAAI,CAACn0B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAACmhC,IAAI,CAAC;;IAErC,IAAInhC,OAAO,CAACohC,IAAI,IAAI,IAAI,EAAE;MACxB,IAAI,CAACA,IAAI,CAACp0B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAACohC,IAAI,CAAC;;IAErC,IAAIphC,OAAO,CAACqhC,WAAW,IAAI,IAAI,EAAE;MAC/B,IAAI,CAACC,mBAAmB,CAACthC,OAAO,CAACqhC,WAAW,EAAE,KAAK,EAAEr0B,CAAC,EAAE8b,CAAC,EAAE,IAAI,CAAC;;;;IAIlE,IAAI,IAAI,CAACA,CAAC,KAAKA,CAAC,EAAE;MAChB,IAAI,CAACA,CAAC,IAAI3B,CAAC;;IAGb,IAAI,CAAC+E,IAAI,EAAE;IAEX,IAAIwZ,WAAW,EAAE;MACf,IAAI,CAAClV,MAAM,CAACkV,WAAW,EAAE;QACvB/U,MAAM,EAAE,CAACgV,OAAO,EAAEC,OAAO;OAC1B,CAAC;;IAGJ,IAAI,CAAChwB,SAAS,CAAC0W,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEnF,CAAC,EAAEna,CAAC,EAAE8b,CAAC,CAAC;IAChC,IAAI,CAACjP,UAAU,CAAE,IAAGqpB,KAAK,CAAChD,KAAM,KAAI,CAAC;IACrC,IAAI,CAAC/T,OAAO,EAAE;IAEd,OAAO,IAAI;GACZ;EAED2Z,SAASA,CAAC3L,GAAG,EAAE;IACb,IAAI+I,KAAK;IACT,IAAI,OAAO/I,GAAG,KAAK,QAAQ,EAAE;MAC3B+I,KAAK,GAAG,IAAI,CAACiC,cAAc,CAAChL,GAAG,CAAC;;IAGlC,IAAI,CAAC+I,KAAK,EAAE;MACVA,KAAK,GAAG8B,QAAQ,CAAC7T,IAAI,CAACgJ,GAAG,EAAG,IAAG,EAAE,IAAI,CAACiL,WAAY,EAAC,CAAC;MACpD,IAAI,OAAOjL,GAAG,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAACgL,cAAc,CAAChL,GAAG,CAAC,GAAG+I,KAAK;;;IAIpC,OAAOA,KAAK;;AAEhB,CAAC;;ACzOD,uBAAe;EACbkD,QAAQA,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,EAAE;IAC5BA,OAAO,CAAC0J,IAAI,GAAG,OAAO;IACtB1J,OAAO,CAACqmC,IAAI,GAAG,IAAI,CAACC,YAAY,CAACt5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,CAAC;IAC5CnnB,OAAO,CAACumC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1B,IAAIvmC,OAAO,CAACmY,OAAO,KAAK,MAAM,IAAI,OAAOnY,OAAO,CAACwmC,CAAC,KAAK,WAAW,EAAE;MAClExmC,OAAO,CAACwmC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;IAGrB,IAAIxmC,OAAO,CAACmY,OAAO,KAAK,MAAM,EAAE;MAC9B,IAAInY,OAAO,CAACinB,CAAC,IAAI,IAAI,EAAE;QACrBjnB,OAAO,CAACinB,CAAC,GAAG,IAAI,CAAChR,eAAe,CAACjW,OAAO,CAAC+V,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;KAE/D;IACD,OAAO/V,OAAO,CAAC+V,KAAK;IAEpB,IAAI,OAAO/V,OAAO,CAACymC,IAAI,KAAK,QAAQ,EAAE;MACpCzmC,OAAO,CAACymC,IAAI,GAAG,IAAIpkC,MAAM,CAACrC,OAAO,CAACymC,IAAI,CAAC;;;;IAIzC,KAAK,IAAIrmC,GAAG,IAAIJ,OAAO,EAAE;MACvB,MAAMK,GAAG,GAAGL,OAAO,CAACI,GAAG,CAAC;MACxBJ,OAAO,CAACI,GAAG,CAAC,CAAC,CAAC,CAAC8I,WAAW,EAAE,GAAG9I,GAAG,CAACuB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGtB,GAAG;;IAGpD,MAAMiJ,GAAG,GAAG,IAAI,CAACA,GAAG,CAACtJ,OAAO,CAAC;IAC7B,IAAI,CAACiY,IAAI,CAACrN,WAAW,CAAC1J,IAAI,CAACoI,GAAG,CAAC;IAC/BA,GAAG,CAACpH,GAAG,EAAE;IACT,OAAO,IAAI;GACZ;EAEDwkC,IAAIA,CAAC15B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEoK,QAAQ,EAAEvxB,OAAO,GAAG,EAAE,EAAE;IACvCA,OAAO,CAACmY,OAAO,GAAG,MAAM;IACxBnY,OAAO,CAAC+J,QAAQ,GAAG,IAAI1H,MAAM,CAACkvB,QAAQ,CAAC;IACvCvxB,OAAO,CAAC2mC,IAAI,GAAG,SAAS;IACxB,IAAI3mC,OAAO,CAAC+V,KAAK,IAAI,IAAI,EAAE;MACzB/V,OAAO,CAAC+V,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;;IAEhC,OAAO,IAAI,CAACqwB,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDohC,IAAIA,CAACp0B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnK,IAAI,EAAEhd,OAAO,GAAG,EAAE,EAAE;IACnCA,OAAO,CAACmY,OAAO,GAAG,MAAM;IACxBnY,OAAO,CAACgnB,CAAC,GAAG,IAAI,CAAC1d,GAAG,CAAC;MACnBiP,CAAC,EAAE,MAAM;MACTquB,CAAC,EAAE,IAAIvkC,MAAM,CAAC2a,IAAI;KACnB,CAAC;IACFhd,OAAO,CAACgnB,CAAC,CAAC9kB,GAAG,EAAE;IACf,OAAO,IAAI,CAACkkC,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDmhC,IAAIA,CAACn0B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAE0f,GAAG,EAAE7mC,OAAO,GAAG,EAAE,EAAE;IAClCA,OAAO,CAACmY,OAAO,GAAG,MAAM;IAExB,IAAI,OAAO0uB,GAAG,KAAK,QAAQ,EAAE;;MAE3B,MAAMC,KAAK,GAAG,IAAI,CAACl9B,KAAK,CAACzF,IAAI,CAAC0F,KAAK,CAAC1F,IAAI;MACxC,IAAI0iC,GAAG,IAAI,CAAC,IAAIA,GAAG,GAAGC,KAAK,CAACC,IAAI,CAAChmC,MAAM,EAAE;QACvCf,OAAO,CAACgnB,CAAC,GAAG,IAAI,CAAC1d,GAAG,CAAC;UACnBiP,CAAC,EAAE,MAAM;UACTquB,CAAC,EAAE,CAACE,KAAK,CAACC,IAAI,CAACF,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;SAC7C,CAAC;QACF7mC,OAAO,CAACgnB,CAAC,CAAC9kB,GAAG,EAAE;OAChB,MAAM;QACL,MAAM,IAAIrC,KAAK,CAAE,4BAA2BgnC,GAAI,EAAC,CAAC;;KAErD,MAAM;;MAEL7mC,OAAO,CAACgnB,CAAC,GAAG,IAAI,CAAC1d,GAAG,CAAC;QACnBiP,CAAC,EAAE,KAAK;QACRyuB,GAAG,EAAE,IAAI3kC,MAAM,CAACwkC,GAAG;OACpB,CAAC;MACF7mC,OAAO,CAACgnB,CAAC,CAAC9kB,GAAG,EAAE;;IAGjB,OAAO,IAAI,CAACkkC,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDinC,OAAOA,CAACj6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAChC,MAAM,CAAC+Z,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACosB,YAAY,CAACt5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,CAAC;IACtDnnB,OAAO,CAACknC,UAAU,GAAG,CAACntB,EAAE,EAAEG,EAAE,EAAED,EAAE,EAAEC,EAAE,EAAEH,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAED,EAAE,CAAC;IACrDha,OAAO,CAAC+J,QAAQ,GAAG,IAAI1H,MAAM,EAAE;IAC/B,OAAO,IAAI,CAAC+jC,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDmnC,SAASA,CAACn6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAClCA,OAAO,CAACmY,OAAO,GAAG,WAAW;IAC7B,IAAInY,OAAO,CAAC+V,KAAK,IAAI,IAAI,EAAE;MACzB/V,OAAO,CAAC+V,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;IAEjC,OAAO,IAAI,CAACkxB,OAAO,CAACj6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GACzC;EAEDuhC,SAASA,CAACv0B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAClCA,OAAO,CAACmY,OAAO,GAAG,WAAW;IAC7B,OAAO,IAAI,CAAC8uB,OAAO,CAACj6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GACzC;EAEDyhC,MAAMA,CAACz0B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAC/BA,OAAO,CAACmY,OAAO,GAAG,WAAW;IAC7B,OAAO,IAAI,CAAC8uB,OAAO,CAACj6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GACzC;EAEDonC,cAAcA,CAACrtB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEla,OAAO,GAAG,EAAE,EAAE;IAC3CA,OAAO,CAACmY,OAAO,GAAG,MAAM;IACxBnY,OAAO,CAAC+J,QAAQ,GAAG,IAAI1H,MAAM,EAAE;IAC/BrC,OAAO,CAAConB,CAAC,GAAG,CAACrN,EAAE,EAAE,IAAI,CAAC9B,IAAI,CAAC7O,MAAM,GAAG4Q,EAAE,EAAEC,EAAE,EAAE,IAAI,CAAChC,IAAI,CAAC7O,MAAM,GAAG8Q,EAAE,CAAC;IAClE,OAAO,IAAI,CAACksB,QAAQ,CAACrsB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEla,OAAO,CAAC;GAC9C;EAEDqnC,cAAcA,CAACr6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IACvCA,OAAO,CAACmY,OAAO,GAAG,QAAQ;IAC1BnY,OAAO,CAAC+J,QAAQ,GAAG,IAAI1H,MAAM,EAAE;IAC/B,OAAO,IAAI,CAAC+jC,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDsnC,iBAAiBA,CAACt6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAC1CA,OAAO,CAACmY,OAAO,GAAG,QAAQ;IAC1BnY,OAAO,CAAC+J,QAAQ,GAAG,IAAI1H,MAAM,EAAE;IAC/B,OAAO,IAAI,CAAC+jC,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDunC,cAAcA,CAACv6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEoL,IAAI,EAAEvyB,OAAO,GAAG,EAAE,EAAE;IAC7CA,OAAO,CAACmY,OAAO,GAAG,UAAU;IAC5BnY,OAAO,CAAC+J,QAAQ,GAAG,IAAI1H,MAAM,CAACkwB,IAAI,CAAC;IACnCvyB,OAAO,CAACwnC,EAAE,GAAG,IAAInlC,MAAM,EAAE;IACzB,OAAO,IAAI,CAAC+jC,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDynC,cAAcA,CAACz6B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEugB,IAAI,GAAG,EAAE,EAAE1nC,OAAO,GAAG,EAAE,EAAE;;IAElD,MAAM2nC,QAAQ,GAAG,IAAI,CAACD,IAAI,CACxBA,IAAI,CAACvN,GAAG,EACR35B,MAAM,CAACqgC,MAAM,CAAC;MAAE+G,MAAM,EAAE;KAAM,EAAEF,IAAI,CACtC,CAAC;IAED1nC,OAAO,CAACmY,OAAO,GAAG,gBAAgB;IAClCnY,OAAO,CAAC6nC,EAAE,GAAGF,QAAQ;;;IAGrB,IAAI3nC,OAAO,CAAC+J,QAAQ,EAAE;MACpB/J,OAAO,CAAC+J,QAAQ,GAAG,IAAI1H,MAAM,CAACrC,OAAO,CAAC+J,QAAQ,CAAC;KAChD,MAAM,IAAI49B,QAAQ,CAACxjC,IAAI,CAAC2jC,IAAI,EAAE;MAC7B9nC,OAAO,CAAC+J,QAAQ,GAAG49B,QAAQ,CAACxjC,IAAI,CAAC2jC,IAAI;;IAGvC,OAAO,IAAI,CAAC1B,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC1C;EAEDsmC,YAAYA,CAACvsB,EAAE,EAAEC,EAAE,EAAEsS,CAAC,EAAEnF,CAAC,EAAE;;IAEzB,IAAIjN,EAAE,GAAGF,EAAE;IACXA,EAAE,IAAImN,CAAC;;;IAGP,IAAIlN,EAAE,GAAGF,EAAE,GAAGuS,CAAC;;;IAGf,MAAM,CAAClT,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACC,IAAI;IAC1CK,EAAE,GAAGX,EAAE,GAAGW,EAAE,GAAGT,EAAE,GAAGU,EAAE,GAAGR,EAAE;IAC3BQ,EAAE,GAAGX,EAAE,GAAGU,EAAE,GAAGR,EAAE,GAAGS,EAAE,GAAGP,EAAE;IAC3BQ,EAAE,GAAGb,EAAE,GAAGa,EAAE,GAAGX,EAAE,GAAGY,EAAE,GAAGV,EAAE;IAC3BU,EAAE,GAAGb,EAAE,GAAGY,EAAE,GAAGV,EAAE,GAAGW,EAAE,GAAGT,EAAE;IAE3B,OAAO,CAACM,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;;AAE3B,CAAC;;ACxKD,MAAM6tB,UAAU,CAAC;EACfhoC,WAAWA,CAACkE,QAAQ,EAAE+jC,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEloC,OAAO,GAAG;IAAEmoC,QAAQ,EAAE;GAAO,EAAE;IACxE,IAAI,CAAClkC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACjE,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACooC,WAAW,GAAG,EAAE;IAErB,IAAIF,IAAI,KAAK,IAAI,EAAE;MACjB,IAAI,CAACE,WAAW,CAAC,MAAM,CAAC,GAAG,CAACF,IAAI,CAACz+B,UAAU,EAAE,KAAK,CAAC;;IAGrD,IAAIu+B,MAAM,KAAK,IAAI,EAAE;MACnB,IAAI,CAACI,WAAW,CAAC,QAAQ,CAAC,GAAGJ,MAAM;;IAGrC,IAAIC,KAAK,KAAK,IAAI,EAAE;MAClB,IAAI,CAACG,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI/lC,MAAM,CAAC4lC,KAAK,CAAC;;IAG/C,IAAI,CAACx+B,UAAU,GAAG,IAAI,CAACxF,QAAQ,CAACqF,GAAG,CAAC,IAAI,CAAC8+B,WAAW,CAAC;IACrD,IAAI,CAACC,QAAQ,GAAG,EAAE;;EAGpBC,OAAOA,CAACL,KAAK,EAAEjoC,OAAO,GAAG;IAAEmoC,QAAQ,EAAE;GAAO,EAAE;IAC5C,MAAM3c,MAAM,GAAG,IAAIuc,UAAU,CAC3B,IAAI,CAAC9jC,QAAQ,EACb,IAAI,CAACwF,UAAU,EACfw+B,KAAK,EACL,IAAI,CAAChkC,QAAQ,CAACgU,IAAI,EAClBjY,OACF,CAAC;IACD,IAAI,CAACqoC,QAAQ,CAACnnC,IAAI,CAACsqB,MAAM,CAAC;IAE1B,OAAOA,MAAM;;EAGf+c,UAAUA,GAAG;IACX,IAAI,IAAI,CAACF,QAAQ,CAACtnC,MAAM,GAAG,CAAC,EAAE;MAC5B,IAAI,IAAI,CAACf,OAAO,CAACmoC,QAAQ,EAAE;QACzB,IAAI,CAACC,WAAW,CAACI,KAAK,GAAG,IAAI,CAACH,QAAQ,CAACtnC,MAAM;;MAG/C,MAAMC,KAAK,GAAG,IAAI,CAACqnC,QAAQ,CAAC,CAAC,CAAC;QAC5BpnC,IAAI,GAAG,IAAI,CAAConC,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAACtnC,MAAM,GAAG,CAAC,CAAC;MAChD,IAAI,CAACqnC,WAAW,CAACK,KAAK,GAAGznC,KAAK,CAACyI,UAAU;MACzC,IAAI,CAAC2+B,WAAW,CAACM,IAAI,GAAGznC,IAAI,CAACwI,UAAU;MAEvC,KAAK,IAAIxH,CAAC,GAAG,CAAC,EAAEwwB,GAAG,GAAG,IAAI,CAAC4V,QAAQ,CAACtnC,MAAM,EAAEkB,CAAC,GAAGwwB,GAAG,EAAExwB,CAAC,EAAE,EAAE;QACxD,MAAM0mC,KAAK,GAAG,IAAI,CAACN,QAAQ,CAACpmC,CAAC,CAAC;QAC9B,IAAIA,CAAC,GAAG,CAAC,EAAE;UACT0mC,KAAK,CAACP,WAAW,CAACQ,IAAI,GAAG,IAAI,CAACP,QAAQ,CAACpmC,CAAC,GAAG,CAAC,CAAC,CAACwH,UAAU;;QAE1D,IAAIxH,CAAC,GAAG,IAAI,CAAComC,QAAQ,CAACtnC,MAAM,GAAG,CAAC,EAAE;UAChC4nC,KAAK,CAACP,WAAW,CAACS,IAAI,GAAG,IAAI,CAACR,QAAQ,CAACpmC,CAAC,GAAG,CAAC,CAAC,CAACwH,UAAU;;QAE1Dk/B,KAAK,CAACJ,UAAU,EAAE;;;IAItB,OAAO,IAAI,CAAC9+B,UAAU,CAACvH,GAAG,EAAE;;AAEhC;;AC1DA,mBAAe;EACb4mC,WAAWA,GAAG;IACZ,OAAQ,IAAI,CAACC,OAAO,GAAG,IAAIhB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;GAC9D;EAEDQ,UAAUA,GAAG;IACX,IAAI,CAACQ,OAAO,CAACR,UAAU,EAAE;IACzB,IAAI,IAAI,CAACQ,OAAO,CAACV,QAAQ,CAACtnC,MAAM,GAAG,CAAC,EAAE;MACpC,IAAI,CAAC6I,KAAK,CAACzF,IAAI,CAAC6kC,QAAQ,GAAG,IAAI,CAACD,OAAO,CAACt/B,UAAU;MAClD,OAAQ,IAAI,CAACG,KAAK,CAACzF,IAAI,CAAC8kC,QAAQ,GAAG,aAAa;;;AAGtD,CAAC;;ACdD;AACA;AACA;AACA;;AAEA,MAAMC,mBAAmB,CAAC;EACxBnpC,WAAWA,CAACopC,OAAO,EAAEC,IAAI,EAAE;IACzB,IAAI,CAACC,IAAI,GAAG,CAAC;MAAEF,OAAO;MAAEC;KAAM,CAAC;;EAGjCloC,IAAIA,CAACooC,aAAa,EAAE;IAClBA,aAAa,CAACD,IAAI,CAACluB,OAAO,CAAE7R,GAAG,IAAK,IAAI,CAAC+/B,IAAI,CAACnoC,IAAI,CAACoI,GAAG,CAAC,CAAC;;AAE5D;;ACbA;AACA;AACA;AACA;AAIA,MAAMigC,mBAAmB,CAAC;EACxBxpC,WAAWA,CAACkE,QAAQ,EAAEulC,IAAI,EAAExpC,OAAO,GAAG,EAAE,EAAEqoC,QAAQ,GAAG,IAAI,EAAE;IACzD,IAAI,CAACpkC,QAAQ,GAAGA,QAAQ;IAExB,IAAI,CAACwlC,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,MAAM,GAAG,KAAK;IACnB,IAAI,CAACC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAAClgC,UAAU,GAAGxF,QAAQ,CAACqF,GAAG,CAAC;;MAE7BiP,CAAC,EAAEixB;KACJ,CAAC;IAEF,MAAMrlC,IAAI,GAAG,IAAI,CAACsF,UAAU,CAACtF,IAAI;IAEjC,IAAIzC,KAAK,CAAC6B,OAAO,CAACvD,OAAO,CAAC,IAAI,IAAI,CAAC4pC,aAAa,CAAC5pC,OAAO,CAAC,EAAE;MACzDqoC,QAAQ,GAAGroC,OAAO;MAClBA,OAAO,GAAG,EAAE;;IAGd,IAAI,OAAOA,OAAO,CAACioC,KAAK,KAAK,WAAW,EAAE;MACxC9jC,IAAI,CAACsjB,CAAC,GAAG,IAAIplB,MAAM,CAACrC,OAAO,CAACioC,KAAK,CAAC;;IAEpC,IAAI,OAAOjoC,OAAO,CAAC6pC,IAAI,KAAK,WAAW,EAAE;MACvC1lC,IAAI,CAAC2lC,IAAI,GAAG,IAAIznC,MAAM,CAACrC,OAAO,CAAC6pC,IAAI,CAAC;;IAEtC,IAAI,OAAO7pC,OAAO,CAAC+pC,GAAG,KAAK,WAAW,EAAE;MACtC5lC,IAAI,CAAC6lC,GAAG,GAAG,IAAI3nC,MAAM,CAACrC,OAAO,CAAC+pC,GAAG,CAAC;;IAEpC,IAAI,OAAO/pC,OAAO,CAACmoC,QAAQ,KAAK,WAAW,EAAE;MAC3ChkC,IAAI,CAAC8lC,CAAC,GAAG,IAAI5nC,MAAM,CAACrC,OAAO,CAACmoC,QAAQ,CAAC;;IAEvC,IAAI,OAAOnoC,OAAO,CAACkqC,MAAM,KAAK,WAAW,EAAE;MACzC/lC,IAAI,CAACgmC,UAAU,GAAG,IAAI9nC,MAAM,CAACrC,OAAO,CAACkqC,MAAM,CAAC;;IAG9C,IAAI,CAACE,SAAS,GAAG,EAAE;IAEnB,IAAI/B,QAAQ,EAAE;MACZ,IAAI,CAAC3mC,KAAK,CAAC6B,OAAO,CAAC8kC,QAAQ,CAAC,EAAE;QAC5BA,QAAQ,GAAG,CAACA,QAAQ,CAAC;;MAEvBA,QAAQ,CAACltB,OAAO,CAAEwtB,KAAK,IAAK,IAAI,CAACxoC,GAAG,CAACwoC,KAAK,CAAC,CAAC;MAC5C,IAAI,CAACzmC,GAAG,EAAE;;;EAId/B,GAAGA,CAACwoC,KAAK,EAAE;IACT,IAAI,IAAI,CAACe,MAAM,EAAE;MACf,MAAM,IAAI7pC,KAAK,CAAE,qDAAoD,CAAC;;IAGxE,IAAI,CAAC,IAAI,CAAC+pC,aAAa,CAACjB,KAAK,CAAC,EAAE;MAC9B,MAAM,IAAI9oC,KAAK,CAAE,iCAAgC,CAAC;;IAGpD,IAAI8oC,KAAK,YAAYY,mBAAmB,EAAE;MACxCZ,KAAK,CAAC0B,SAAS,CAAC,IAAI,CAAC5gC,UAAU,CAAC;MAChC,IAAI,IAAI,CAACggC,SAAS,EAAE;QAClBd,KAAK,CAAC2B,WAAW,EAAE;;;IAIvB,IAAI3B,KAAK,YAAYO,mBAAmB,EAAE;MACxC,IAAI,CAACqB,uBAAuB,CAAC5B,KAAK,CAAC;;IAGrC,IAAI,OAAOA,KAAK,KAAK,UAAU,IAAI,IAAI,CAACc,SAAS,EAAE;;MAEjDd,KAAK,GAAG,IAAI,CAAC6B,kBAAkB,CAAC7B,KAAK,CAAC;;IAGxC,IAAI,CAACyB,SAAS,CAAClpC,IAAI,CAACynC,KAAK,CAAC;IAE1B,OAAO,IAAI;;EAGb4B,uBAAuBA,CAAClhC,OAAO,EAAE;IAC/BA,OAAO,CAACggC,IAAI,CAACluB,OAAO,CAAC,CAAC;MAAEguB,OAAO;MAAEC;KAAM,KAAK;MAC1C,MAAMqB,iBAAiB,GAAG,IAAI,CAACxmC,QAAQ,CAACymC,mBAAmB,EAAE,CAC1DpqC,GAAG,CAAC6oC,OAAO,CAAChlC,IAAI,CAAC4G,aAAa,CAAC;MAClC0/B,iBAAiB,CAACrB,IAAI,CAAC,GAAG,IAAI,CAAC3/B,UAAU;KAC1C,CAAC;;EAGJ4gC,SAASA,CAACM,SAAS,EAAE;IACnB,IAAI,IAAI,CAAClhC,UAAU,CAACtF,IAAI,CAACwN,CAAC,EAAE;MAC1B,MAAM,IAAI9R,KAAK,CAAE,iDAAgD,CAAC;;IAGpE,IAAI,CAAC4J,UAAU,CAACtF,IAAI,CAACwN,CAAC,GAAGg5B,SAAS;IAElC,IAAI,CAACC,MAAM,EAAE;;EAGfN,WAAWA,GAAG;IACZ,IAAI,IAAI,CAACb,SAAS,EAAE;MAClB;;IAGF,IAAI,CAACW,SAAS,CAACjvB,OAAO,CAAC,CAACwtB,KAAK,EAAE1zB,KAAK,KAAK;MACvC,IAAI0zB,KAAK,YAAYY,mBAAmB,EAAE;QACxCZ,KAAK,CAAC2B,WAAW,EAAE;;MAErB,IAAI,OAAO3B,KAAK,KAAK,UAAU,EAAE;QAC/B,IAAI,CAACyB,SAAS,CAACn1B,KAAK,CAAC,GAAG,IAAI,CAACu1B,kBAAkB,CAAC7B,KAAK,CAAC;;KAEzD,CAAC;IAEF,IAAI,CAACc,SAAS,GAAG,IAAI;IAErB,IAAI,CAACmB,MAAM,EAAE;;EAGf1oC,GAAGA,GAAG;IACJ,IAAI,IAAI,CAACwnC,MAAM,EAAE;MACf;;IAGF,IAAI,CAACU,SAAS,CACX18B,MAAM,CAAEi7B,KAAK,IAAKA,KAAK,YAAYY,mBAAmB,CAAC,CACvDpuB,OAAO,CAAEwtB,KAAK,IAAKA,KAAK,CAACzmC,GAAG,EAAE,CAAC;IAElC,IAAI,CAACwnC,MAAM,GAAG,IAAI;IAElB,IAAI,CAACkB,MAAM,EAAE;;EAGfhB,aAAaA,CAACjB,KAAK,EAAE;IACnB,OAAOA,KAAK,YAAYY,mBAAmB,IACvCZ,KAAK,YAAYO,mBAAmB,IACpC,OAAOP,KAAK,KAAK,UAAU;;EAGjC6B,kBAAkBA,CAACK,OAAO,EAAE;IAC1B,MAAMxhC,OAAO,GAAG,IAAI,CAACpF,QAAQ,CAAC86B,oBAAoB,CAAC,IAAI,CAACt1B,UAAU,CAACtF,IAAI,CAACoU,CAAC,CAAC;IAC1EsyB,OAAO,EAAE;IACT,IAAI,CAAC5mC,QAAQ,CAAC6mC,gBAAgB,EAAE;IAEhC,IAAI,CAACP,uBAAuB,CAAClhC,OAAO,CAAC;IAErC,OAAOA,OAAO;;EAGhB0hC,YAAYA,GAAG;IACb,IAAI,CAAC,IAAI,CAACthC,UAAU,CAACtF,IAAI,CAACwN,CAAC,IAAI,CAAC,IAAI,CAAC+3B,MAAM,EAAE;MAC3C,OAAO,KAAK;;IAGd,OAAO,IAAI,CAACU,SAAS,CAAChd,KAAK,CAAEub,KAAK,IAAK;MACrC,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;QAC/B,OAAO,KAAK;;MAEd,IAAIA,KAAK,YAAYY,mBAAmB,EAAE;QACxC,OAAOZ,KAAK,CAACoC,YAAY,EAAE;;MAE7B,OAAO,IAAI;KACZ,CAAC;;EAGJH,MAAMA,GAAG;IACP,IAAI,IAAI,CAACjB,QAAQ,IAAI,CAAC,IAAI,CAACoB,YAAY,EAAE,EAAE;MACzC;;IAGF,IAAI,CAACthC,UAAU,CAACtF,IAAI,CAAC6mC,CAAC,GAAG,EAAE;IAE3B,IAAI,CAACZ,SAAS,CAACjvB,OAAO,CAAEwtB,KAAK,IAAK,IAAI,CAACsC,WAAW,CAACtC,KAAK,CAAC,CAAC;IAE1D,IAAI,CAACl/B,UAAU,CAACvH,GAAG,EAAE;;;;;IAKrB,IAAI,CAACkoC,SAAS,GAAG,EAAE;IACnB,IAAI,CAAC3gC,UAAU,CAACtF,IAAI,CAAC6mC,CAAC,GAAG,IAAI;IAE7B,IAAI,CAACrB,QAAQ,GAAG,IAAI;;EAGtBsB,WAAWA,CAACtC,KAAK,EAAE;IACjB,IAAIA,KAAK,YAAYY,mBAAmB,EAAE;MACxC,IAAI,CAAC9/B,UAAU,CAACtF,IAAI,CAAC6mC,CAAC,CAAC9pC,IAAI,CAACynC,KAAK,CAACl/B,UAAU,CAAC;;IAG/C,IAAIk/B,KAAK,YAAYO,mBAAmB,EAAE;MACxCP,KAAK,CAACU,IAAI,CAACluB,OAAO,CAAC,CAAC;QAAEguB,OAAO;QAAEC;OAAM,KAAK;QACxC,IAAI,CAAC,IAAI,CAAC3/B,UAAU,CAACtF,IAAI,CAAC+mC,EAAE,EAAE;UAC5B,IAAI,CAACzhC,UAAU,CAACtF,IAAI,CAAC+mC,EAAE,GAAG/B,OAAO;;QAGnC,IAAI,IAAI,CAAC1/B,UAAU,CAACtF,IAAI,CAAC+mC,EAAE,KAAK/B,OAAO,EAAE;UACvC,IAAI,CAAC1/B,UAAU,CAACtF,IAAI,CAAC6mC,CAAC,CAAC9pC,IAAI,CAACkoC,IAAI,CAAC;SAClC,MAAM;UACL,IAAI,CAAC3/B,UAAU,CAACtF,IAAI,CAAC6mC,CAAC,CAAC9pC,IAAI,CAAC;YAC1BwI,IAAI,EAAE,KAAK;YACXwhC,EAAE,EAAE/B,OAAO;YACXgC,IAAI,EAAE/B;WACP,CAAC;;OAEL,CAAC;;;AAGR;;ACjNA;AACA;AACA;AAIA,MAAMgC,aAAa,SAAStrC,OAAO,CAAC;EAClCe,YAAYA,CAACF,CAAC,EAAEC,CAAC,EAAE;IACjB,OAAOub,QAAQ,CAACxb,CAAC,CAAC,GAAGwb,QAAQ,CAACvb,CAAC,CAAC;;EAGlCU,SAASA,GAAG;IACV,OAAO,MAAM;;EAGfD,WAAWA,CAAC+J,CAAC,EAAE;IACb,OAAO+Q,QAAQ,CAAC/Q,CAAC,CAAC;;AAEtB;;AClBA;AACA;AACA;AACA;AAOA,oBAAe;EAEbigC,YAAYA,CAACrrC,OAAO,EAAE;IACpB,IAAI,CAACsrC,cAAc,GAAG,EAAE;IAExB,IAAItrC,OAAO,CAACurC,MAAM,EAAE;MAClB,IAAI,CAACC,qBAAqB,EAAE,CAACrnC,IAAI,CAACsnC,MAAM,GAAG,IAAI;MAC/C,IAAI,CAACC,iBAAiB,EAAE;;GAE3B;EAEDC,WAAWA,CAAC/T,GAAG,EAAE53B,OAAO,GAAG,IAAI,EAAE;IAC/B,IAAI43B,GAAG,KAAK,UAAU,IAAK53B,OAAO,IAAIA,OAAO,CAACopC,IAAK,EAAE;MACnD,IAAIwC,OAAO,GAAG,CAAC;MACf,IAAI,CAAC3zB,IAAI,CAAChO,QAAQ,CAACkR,OAAO,CAAE0wB,OAAO,IAAK;QACtC,IAAID,OAAO,IAAIC,OAAO,CAACvC,aAAa,IAAIuC,OAAO,CAACjU,GAAG,KAAK,UAAU,EAAE;UAClEgU,OAAO,EAAE;;OAEZ,CAAC;MACF,OAAOA,OAAO,EAAE,EAAE;QAChB,IAAI,CAACd,gBAAgB,EAAE;;;IAI3B,IAAI,CAAC9qC,OAAO,EAAE;MACZ,IAAI,CAACiY,IAAI,CAAChO,QAAQ,CAAC/I,IAAI,CAAC;QAAE02B;OAAK,CAAC;MAChC,IAAI,CAAC/d,UAAU,CAAE,IAAG+d,GAAI,MAAK,CAAC;MAC9B,OAAO,IAAI;;IAGb,IAAI,CAAC3f,IAAI,CAAChO,QAAQ,CAAC/I,IAAI,CAAC;MAAE02B,GAAG;MAAE53B;KAAS,CAAC;IAEzC,MAAMyJ,UAAU,GAAG,EAAE;IAErB,IAAI,OAAOzJ,OAAO,CAACopC,IAAI,KAAK,WAAW,EAAE;MACvC3/B,UAAU,CAAC0hC,IAAI,GAAGnrC,OAAO,CAACopC,IAAI;;IAEhC,IAAIxR,GAAG,KAAK,UAAU,EAAE;MACtB,IAAI,OAAO53B,OAAO,CAACwpC,IAAI,KAAK,QAAQ,EAAE;QACpC//B,UAAU,CAACC,IAAI,GAAG1J,OAAO,CAACwpC,IAAI;;MAEhC,IAAI9nC,KAAK,CAAC6B,OAAO,CAACvD,OAAO,CAACqd,IAAI,CAAC,EAAE;QAC/B5T,UAAU,CAAC4O,IAAI,GAAG,CAACrY,OAAO,CAACqd,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACpF,IAAI,CAAC7O,MAAM,GAAGpJ,OAAO,CAACqd,IAAI,CAAC,CAAC,CAAC,EACpErd,OAAO,CAACqd,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACpF,IAAI,CAAC7O,MAAM,GAAGpJ,OAAO,CAACqd,IAAI,CAAC,CAAC,CAAC,CAAC;;MAExD,IAAI3b,KAAK,CAAC6B,OAAO,CAACvD,OAAO,CAAC8rC,QAAQ,CAAC,IACjC9rC,OAAO,CAAC8rC,QAAQ,CAAC1e,KAAK,CAAC/sB,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,CAAC,EAAE;QACxDoJ,UAAU,CAACsiC,QAAQ,GAAG/rC,OAAO,CAAC8rC,QAAQ;;;IAG1C,IAAIlU,GAAG,KAAK,MAAM,EAAE;MAClB,IAAI53B,OAAO,CAAC6pC,IAAI,EAAE;QAChBpgC,UAAU,CAACqgC,IAAI,GAAG,IAAIznC,MAAM,CAACrC,OAAO,CAAC6pC,IAAI,CAAC;;MAE5C,IAAI7pC,OAAO,CAAC+pC,GAAG,EAAE;QACftgC,UAAU,CAACugC,GAAG,GAAG,IAAI3nC,MAAM,CAACrC,OAAO,CAAC+pC,GAAG,CAAC;;MAE1C,IAAI/pC,OAAO,CAACmoC,QAAQ,EAAE;QACpB1+B,UAAU,CAACwgC,CAAC,GAAG,IAAI5nC,MAAM,CAACrC,OAAO,CAACmoC,QAAQ,CAAC;;MAE7C,IAAInoC,OAAO,CAACkqC,MAAM,EAAE;QAClBzgC,UAAU,CAAC0gC,UAAU,GAAG,IAAI9nC,MAAM,CAACrC,OAAO,CAACkqC,MAAM,CAAC;;;IAItD,IAAI,CAACrwB,UAAU,CAAE,IAAG+d,GAAI,IAAGz2B,SAAS,CAACC,OAAO,CAACqI,UAAU,CAAE,MAAK,CAAC;IAC/D,OAAO,IAAI;GACZ;EAEDs1B,oBAAoBA,CAACnH,GAAG,EAAE53B,OAAO,GAAG,EAAE,EAAE;IACtC,MAAMyqC,iBAAiB,GAAG,IAAI,CAACC,mBAAmB,EAAE,CAACpqC,GAAG,CAAC,IAAI,CAAC2X,IAAI,CAACnN,mBAAmB,CAAC;IACvF,MAAMs+B,IAAI,GAAGqB,iBAAiB,CAAC1pC,MAAM;IACrC0pC,iBAAiB,CAACvpC,IAAI,CAAC,IAAI,CAAC;IAE5B,IAAI,CAACyqC,WAAW,CAAC/T,GAAG,EAAE;MAAE,GAAG53B,OAAO;MAAEopC;KAAM,CAAC;IAE3C,MAAME,aAAa,GAAG,IAAIJ,mBAAmB,CAAC,IAAI,CAACjxB,IAAI,CAACxO,UAAU,EAAE2/B,IAAI,CAAC;IACzE,IAAI,CAACnxB,IAAI,CAAChO,QAAQ,CAACtI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC2nC,aAAa,GAAGA,aAAa;IAC7D,OAAOA,aAAa;GACrB;EAEDwB,gBAAgBA,GAAG;IACjB,IAAI,CAAC7yB,IAAI,CAAChO,QAAQ,CAACmiB,GAAG,EAAE;IACxB,IAAI,CAACvS,UAAU,CAAC,KAAK,CAAC;IACtB,OAAO,IAAI;GACZ;EAEDglB,MAAMA,CAAC2K,IAAI,EAAExpC,OAAO,GAAG,EAAE,EAAEqoC,QAAQ,GAAG,IAAI,EAAE;IAC1C,OAAO,IAAIkB,mBAAmB,CAAC,IAAI,EAAEC,IAAI,EAAExpC,OAAO,EAAEqoC,QAAQ,CAAC;GAC9D;EAED1J,YAAYA,CAACqN,UAAU,EAAE;IACvB,MAAMC,cAAc,GAAG,IAAI,CAACP,iBAAiB,EAAE;IAC/CM,UAAU,CAAC3B,SAAS,CAAC4B,cAAc,CAAC;IACpCD,UAAU,CAAC1B,WAAW,EAAE;IACxB,IAAI,CAACgB,cAAc,CAACpqC,IAAI,CAAC8qC,UAAU,CAAC;IACpC,IAAI,CAACC,cAAc,CAAC9nC,IAAI,CAAC6mC,CAAC,EAAE;MAC1BiB,cAAc,CAAC9nC,IAAI,CAAC6mC,CAAC,GAAG,EAAE;;IAE5BiB,cAAc,CAAC9nC,IAAI,CAAC6mC,CAAC,CAAC9pC,IAAI,CAAC8qC,UAAU,CAACviC,UAAU,CAAC;IACjD,OAAO,IAAI;GACZ;EAEDyiC,gBAAgBA,CAACC,YAAY,EAAE;IAC7BA,YAAY,CAAChxB,OAAO,CAAE0wB,OAAO,IAAK;MAChC,IAAIA,OAAO,CAACvC,aAAa,EAAE;QACzB,MAAMA,aAAa,GAAGuC,OAAO,CAACvC,aAAa;QAC3C,MAAM8C,gBAAgB,GAAG,IAAI,CAACrN,oBAAoB,CAAC8M,OAAO,CAACjU,GAAG,EAAEiU,OAAO,CAAC7rC,OAAO,CAAC;QAChFspC,aAAa,CAACpoC,IAAI,CAACkrC,gBAAgB,CAAC;QACpC,IAAI,CAACn0B,IAAI,CAAChO,QAAQ,CAACtI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC2nC,aAAa,GAAGA,aAAa;OAC9D,MAAM;QACL,IAAI,CAACqC,WAAW,CAACE,OAAO,CAACjU,GAAG,EAAEiU,OAAO,CAAC7rC,OAAO,CAAC;;KAEjD,CAAC;GACH;EAEDqsC,eAAeA,CAACp0B,IAAI,EAAE;IACpB,MAAMk0B,YAAY,GAAGl0B,IAAI,CAAChO,QAAQ;IAClCkiC,YAAY,CAAChxB,OAAO,CAAC,MAAMlD,IAAI,CAACxT,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7CwT,IAAI,CAAChO,QAAQ,GAAG,EAAE;IAClB,OAAOkiC,YAAY;GACpB;EAEDX,qBAAqBA,GAAG;IACtB,IAAI,CAAC,IAAI,CAAC5hC,KAAK,CAACzF,IAAI,CAACmoC,QAAQ,EAAE;MAC7B,IAAI,CAAC1iC,KAAK,CAACzF,IAAI,CAACmoC,QAAQ,GAAG,IAAI,CAAChjC,GAAG,CAAC,EAAE,CAAC;;IAEzC,OAAO,IAAI,CAACM,KAAK,CAACzF,IAAI,CAACmoC,QAAQ;GAChC;EAEDZ,iBAAiBA,GAAG;IAClB,IAAI,CAAC,IAAI,CAAC9hC,KAAK,CAACzF,IAAI,CAACooC,cAAc,EAAE;MACnC,IAAI,CAAC3iC,KAAK,CAACzF,IAAI,CAACooC,cAAc,GAAG,IAAI,CAACjjC,GAAG,CAAC;QACxCI,IAAI,EAAE,gBAAgB;QACtB8iC,UAAU,EAAE,IAAIpB,aAAa,EAAE;QAC/BqB,iBAAiB,EAAE;OACpB,CAAC;;IAEJ,OAAO,IAAI,CAAC7iC,KAAK,CAACzF,IAAI,CAACooC,cAAc;GACtC;EAED7B,mBAAmBA,GAAG;IACpB,OAAO,IAAI,CAACgB,iBAAiB,EAAE,CAACvnC,IAAI,CAACqoC,UAAU;GAChD;EAEDxhC,6BAA6BA,GAAG;;IAE9B,IAAI,CAACwgC,qBAAqB,EAAE;IAE5B,MAAMS,cAAc,GAAG,IAAI,CAACP,iBAAiB,EAAE;IAC/C,MAAMtrC,GAAG,GAAG6rC,cAAc,CAAC9nC,IAAI,CAACsoC,iBAAiB,EAAE;IACnDR,cAAc,CAAC9nC,IAAI,CAACqoC,UAAU,CAACrsC,GAAG,CAACC,GAAG,EAAE,EAAE,CAAC;IAC3C,OAAOA,GAAG;GACX;EAEDssC,WAAWA,GAAG;IACZ,MAAMT,cAAc,GAAG,IAAI,CAACriC,KAAK,CAACzF,IAAI,CAACooC,cAAc;IACrD,IAAIN,cAAc,EAAE;MAClBA,cAAc,CAAC/pC,GAAG,EAAE;MACpB,IAAI,CAACopC,cAAc,CAACnwB,OAAO,CAAE6wB,UAAU,IAAKA,UAAU,CAAC9pC,GAAG,EAAE,CAAC;;IAE/D,IAAI,IAAI,CAAC0H,KAAK,CAACzF,IAAI,CAACmoC,QAAQ,EAAE;MAC5B,IAAI,CAAC1iC,KAAK,CAACzF,IAAI,CAACmoC,QAAQ,CAACpqC,GAAG,EAAE;;;AAIpC,CAAC;;AChLD,MAAMyqC,WAAW,GAAG;EAClBC,QAAQ,EAAE,CAAC;EACXvP,QAAQ,EAAE,CAAC;EACXwP,QAAQ,EAAE,CAAC;EACXC,SAAS,EAAE,MAAM;EACjB/3B,QAAQ,EAAE,MAAM;EAChBg4B,iBAAiB,EAAE,MAAM;EACzBC,WAAW,EAAE,MAAM;EACnBC,UAAU,EAAE,OAAO;EACnBC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,OAAO;EACbzsC,IAAI,EAAE,OAAO;EACb0sC,WAAW,EAAE,QAAQ;EACrBC,OAAO,EAAE;AACX,CAAC;AACD,MAAMC,aAAa,GAAG;EACpB9nC,IAAI,EAAE,CAAC;EACP+nC,MAAM,EAAE,CAAC;EACT7nC,KAAK,EAAE;AACT,CAAC;AACD,MAAM8nC,SAAS,GAAG;EAAEliC,KAAK,EAAE,GAAG;EAAEmiC,YAAY,EAAE;AAAK,CAAC;AACpD,MAAMC,cAAc,GAAG;EACrBC,GAAG,EAAE,GAAG;EACRC,QAAQ,EAAE,GAAG;EACbC,IAAI,EAAE,GAAG;EACTC,KAAK,EAAE,GAAG;EACVC,GAAG,EAAE;AACP,CAAC;AACD,MAAMC,cAAc,GAAG;EACrBpqC,MAAM,EAAE;IACNqqC,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE,YAAY;IACtBC,QAAQ,EAAE,EAAE;IACZC,eAAe,EAAE;GAClB;EACDC,OAAO,EAAE;IACPL,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;;AAEd,CAAC;AAED,oBAAe;;AAEf;AACA;AACA;EACEK,QAAQA,GAAG;IACT,IAAI,CAAC,IAAI,CAAC1T,KAAK,EAAE;MACf,MAAM,IAAIh7B,KAAK,CAAC,gDAAgD,CAAC;;IAEnE,IAAI,CAAC2uC,SAAS,GAAG;MACftkC,KAAK,EAAE,EAAE;MACTuwB,WAAW,EAAE,IAAI,CAACI,KAAK,CAAC7d;KACzB;IACD,IAAI,CAACwxB,SAAS,CAACtkC,KAAK,CAAC,IAAI,CAAC2wB,KAAK,CAAC32B,EAAE,CAAC,GAAG,IAAI,CAAC22B,KAAK,CAACvxB,GAAG,EAAE;IAEtD,IAAInF,IAAI,GAAG;MACTsqC,MAAM,EAAE,EAAE;MACVC,eAAe,EAAE,IAAI;MACrBlH,EAAE,EAAE,IAAInlC,MAAM,CAAE,IAAG,IAAI,CAACw4B,KAAK,CAAC32B,EAAG,WAAU,CAAC;MAC5CyqC,EAAE,EAAE;QACFxkC,IAAI,EAAE;;KAET;IACDhG,IAAI,CAACwqC,EAAE,CAACxkC,IAAI,CAAC,IAAI,CAAC0wB,KAAK,CAAC32B,EAAE,CAAC,GAAG,IAAI,CAAC22B,KAAK,CAACvxB,GAAG,EAAE;IAC9C,MAAMslC,QAAQ,GAAG,IAAI,CAACtlC,GAAG,CAACnF,IAAI,CAAC;IAC/B,IAAI,CAACyF,KAAK,CAACzF,IAAI,CAACyqC,QAAQ,GAAGA,QAAQ;IACnC,OAAO,IAAI;GACZ;;AAGH;AACA;EACEC,WAAWA,GAAG;IACZ,IAAI,IAAI,CAACjlC,KAAK,CAACzF,IAAI,CAACyqC,QAAQ,EAAE;MAC5B,IACE,CAACpuC,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC+tC,SAAS,CAACtkC,KAAK,CAAC,CAACnJ,MAAM,IACzC,CAAC,IAAI,CAACytC,SAAS,CAAC/T,WAAW,EAC3B;QACA,MAAM,IAAI56B,KAAK,CAAC,iCAAiC,CAAC;;MAEpD,IAAIivC,QAAQ,GAAG,IAAI,CAACllC,KAAK,CAACzF,IAAI,CAACyqC,QAAQ,CAACzqC,IAAI,CAACwqC,EAAE,CAACxkC,IAAI;MACpD3J,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC+tC,SAAS,CAACtkC,KAAK,CAAC,CAACiR,OAAO,CAAC6B,IAAI,IAAI;QAChD8xB,QAAQ,CAAC9xB,IAAI,CAAC,GAAG,IAAI,CAACwxB,SAAS,CAACtkC,KAAK,CAAC8S,IAAI,CAAC;OAC5C,CAAC;MACF,IAAI,CAACpT,KAAK,CAACzF,IAAI,CAACyqC,QAAQ,CAACzqC,IAAI,CAACsqC,MAAM,CAACtzB,OAAO,CAAC4zB,QAAQ,IAAI;QACvD,IAAI,CAACC,SAAS,CAACD,QAAQ,CAAC;OACzB,CAAC;MACF,IAAI,CAACnlC,KAAK,CAACzF,IAAI,CAACyqC,QAAQ,CAAC1sC,GAAG,EAAE;;IAEhC,OAAO,IAAI;GACZ;EAED8sC,SAASA,CAAC1lC,GAAG,EAAE;IACb,IAAI5H,KAAK,CAAC6B,OAAO,CAAC+F,GAAG,CAACnF,IAAI,CAAC4iC,IAAI,CAAC,EAAE;MAChCz9B,GAAG,CAACnF,IAAI,CAAC4iC,IAAI,CAAC5rB,OAAO,CAAC8zB,QAAQ,IAAI;QAChC,IAAI,CAACD,SAAS,CAACC,QAAQ,CAAC;OACzB,CAAC;MACF3lC,GAAG,CAACpH,GAAG,EAAE;;IAEX,OAAO,IAAI;GACZ;;AAGH;AACA;AACA;AACA;AACA;AACA;EACEgtC,SAASA,CAAClyB,IAAI,EAAEhd,OAAO,GAAG,EAAE,EAAE;IAC5B,IAAImvC,SAAS,GAAG,IAAI,CAACC,UAAU,CAACpyB,IAAI,EAAE,IAAI,EAAEhd,OAAO,CAAC;IACpD,IAAI+uC,QAAQ,GAAG,IAAI,CAACzlC,GAAG,CAAC6lC,SAAS,CAAC;IAClC,IAAI,CAACE,YAAY,CAACN,QAAQ,CAAC;IAC3B,OAAOA,QAAQ;GAChB;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEO,cAAcA,CAACtyB,IAAI,EAAEwsB,IAAI,EAAEx8B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IACnD,IAAImvC,SAAS,GAAG,IAAI,CAACC,UAAU,CAACpyB,IAAI,EAAEwsB,IAAI,EAAExpC,OAAO,CAAC;IACpDmvC,SAAS,CAACh3B,OAAO,GAAG,QAAQ;IAC5B,IAAIg3B,SAAS,CAAC3I,CAAC,KAAKnP,SAAS,EAAE;MAC7B8X,SAAS,CAAC3I,CAAC,GAAG,CAAC,CAAC;;;;IAIlB,IAAI,CAACJ,QAAQ,CAACp5B,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEgoB,SAAS,CAAC;IACpC,IAAII,QAAQ,GAAG,IAAI,CAACt3B,IAAI,CAACrN,WAAW,CAAC,IAAI,CAACqN,IAAI,CAACrN,WAAW,CAAC7J,MAAM,GAAG,CAAC,CAAC;IAEtE,OAAO,IAAI,CAACsuC,YAAY,CAACE,QAAQ,CAAC;GACnC;EAEDC,QAAQA,CAACxyB,IAAI,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IACvC,OAAO,IAAI,CAACsvC,cAAc,CAACtyB,IAAI,EAAE,MAAM,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC9D;EAEDyvC,cAAcA,CAACzyB,IAAI,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAC7C,OAAO,IAAI,CAACsvC,cAAc,CAACtyB,IAAI,EAAE,YAAY,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GACpE;EAED0vC,SAASA,CAAC1yB,IAAI,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IACxC,OAAO,IAAI,CAACsvC,cAAc,CAACtyB,IAAI,EAAE,OAAO,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC/D;EAED2vC,QAAQA,CAAC3yB,IAAI,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IACvC,OAAO,IAAI,CAACsvC,cAAc,CAACtyB,IAAI,EAAE,MAAM,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAC9D;EAED4vC,eAAeA,CAAC5yB,IAAI,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAC9C,OAAO,IAAI,CAACsvC,cAAc,CAACtyB,IAAI,EAAE,aAAa,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GACrE;EAED6vC,YAAYA,CAAC7yB,IAAI,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,GAAG,EAAE,EAAE;IAC3C,OAAO,IAAI,CAACsvC,cAAc,CAACtyB,IAAI,EAAE,UAAU,EAAEhQ,CAAC,EAAE8b,CAAC,EAAEwD,CAAC,EAAEnF,CAAC,EAAEnnB,OAAO,CAAC;GAClE;EAEDqvC,YAAYA,CAACN,QAAQ,EAAE;IACrB,IAAI/G,MAAM,GAAG+G,QAAQ,CAAC5qC,IAAI,CAACwF,MAAM;IACjC,IAAIq+B,MAAM,EAAE;MACV,IAAI,CAACA,MAAM,CAAC7jC,IAAI,CAAC4iC,IAAI,EAAE;QACrBiB,MAAM,CAAC7jC,IAAI,CAAC4iC,IAAI,GAAG,EAAE;;MAEvBiB,MAAM,CAAC7jC,IAAI,CAAC4iC,IAAI,CAAC7lC,IAAI,CAAC6tC,QAAQ,CAAC;KAChC,MAAM;MACL,IAAI,CAACnlC,KAAK,CAACzF,IAAI,CAACyqC,QAAQ,CAACzqC,IAAI,CAACsqC,MAAM,CAACvtC,IAAI,CAAC6tC,QAAQ,CAAC;;IAErD,OAAO,IAAI;GACZ;EAEDK,UAAUA,CAACpyB,IAAI,EAAEwsB,IAAI,EAAExpC,OAAO,GAAG,EAAE,EAAE;IACnC,IAAI,CAAC,IAAI,CAACwuC,SAAS,EAAE;MACnB,MAAM,IAAI3uC,KAAK,CACb,yEACF,CAAC;;IAEH,IAAI0N,IAAI,GAAG/M,MAAM,CAACqgC,MAAM,CAAC,EAAE,EAAE7gC,OAAO,CAAC;IACrC,IAAIwpC,IAAI,KAAK,IAAI,EAAE;MACjBj8B,IAAI,GAAG,IAAI,CAACuiC,YAAY,CAACtG,IAAI,EAAExpC,OAAO,CAAC;;IAEzCuN,IAAI,GAAG,IAAI,CAACwiC,aAAa,CAACxiC,IAAI,CAAC;IAC/BA,IAAI,GAAG,IAAI,CAACyiC,eAAe,CAACziC,IAAI,CAAC;IACjCA,IAAI,GAAG,IAAI,CAAC0iC,YAAY,CAAC1iC,IAAI,CAAC;IAC9BA,IAAI,GAAG,IAAI,CAAC2iC,eAAe,CAAC3iC,IAAI,CAAC;IACjCA,IAAI,GAAG,IAAI,CAAC4iC,cAAc,CAAC5iC,IAAI,CAAC;IAChCA,IAAI,GAAG,IAAI,CAAC6iC,cAAc,CAAC7iC,IAAI,CAAC;IAChCA,IAAI,CAACka,CAAC,GAAG,IAAIplB,MAAM,CAAC2a,IAAI,CAAC;IACzB,IAAIzP,IAAI,CAACy6B,MAAM,EAAE;MACfz6B,IAAI,CAAC5D,MAAM,GAAG4D,IAAI,CAACy6B,MAAM;MACzB,OAAOz6B,IAAI,CAACy6B,MAAM;;IAEpB,OAAOz6B,IAAI;GACZ;EAEDuiC,YAAYA,CAACtG,IAAI,EAAEj8B,IAAI,EAAE;IACvB,IAAIi8B,IAAI,KAAK,MAAM,EAAE;MACnBj8B,IAAI,CAAC8iC,EAAE,GAAG,IAAI;KACf,MAAM,IAAI7G,IAAI,KAAK,YAAY,EAAE;MAChCj8B,IAAI,CAAC8iC,EAAE,GAAG,KAAK;MACf9iC,IAAI,CAAC0/B,UAAU,GAAG,IAAI;KACvB,MAAM,IAAIzD,IAAI,KAAK,aAAa,EAAE;MACjCj8B,IAAI,CAAC8iC,EAAE,GAAG,KAAK;MACf9iC,IAAI,CAACy/B,WAAW,GAAG,IAAI;KACxB,MAAM,IAAIxD,IAAI,KAAK,UAAU,EAAE;MAC9Bj8B,IAAI,CAAC8iC,EAAE,GAAG,KAAK;KAChB,MAAM,IAAI7G,IAAI,KAAK,OAAO,EAAE;MAC3Bj8B,IAAI,CAAC8iC,EAAE,GAAG,IAAI;MACd9iC,IAAI,CAAC2/B,KAAK,GAAG,IAAI;KAClB,MAAM,IAAI1D,IAAI,KAAK,MAAM,EAAE;MAC1Bj8B,IAAI,CAAC8iC,EAAE,GAAG,IAAI;KACf,MAAM;MACL,MAAM,IAAIxwC,KAAK,CAAE,iCAAgC2pC,IAAK,GAAE,CAAC;;IAE3D,OAAOj8B,IAAI;GACZ;EAED6iC,cAAcA,CAAC7iC,IAAI,EAAE;IACnB,MAAM+iC,CAAC,GAAG/iC,IAAI,CAACgjC,MAAM;IACrB,IAAID,CAAC,IAAIA,CAAC,CAAC9G,IAAI,EAAE;MACf,IAAIgH,WAAW;MACf,IAAIC,QAAQ;MACZ,IAAIroB,MAAM,GAAG,EAAE;MACf,IAAIslB,cAAc,CAAC4C,CAAC,CAAC9G,IAAI,CAAC,KAAKnS,SAAS,EAAE;QACxCmZ,WAAW,GAAI,qBAAoB;QACnCC,QAAQ,GAAI,kBAAiB;QAC7BroB,MAAM,GAAGslB,cAAc,CAAC4C,CAAC,CAAC9G,IAAI,CAAC;OAChC,MAAM;QACL,IAAI+G,MAAM,GAAGD,CAAC,CAAC9G,IAAI,CAACvtB,MAAM,CAAC,CAAC,CAAC,CAAC/S,WAAW,EAAE,GAAGonC,CAAC,CAAC9G,IAAI,CAAC7nC,KAAK,CAAC,CAAC,CAAC;QAC7D6uC,WAAW,GAAI,KAAID,MAAO,YAAW;QACrCE,QAAQ,GAAI,KAAIF,MAAO,SAAQ;QAE/B,IAAID,CAAC,CAAC9G,IAAI,KAAK,MAAM,EAAE;UACrBgH,WAAW,IAAI,IAAI;UACnBpoB,MAAM,GAAG/lB,MAAM,CAACiuC,CAAC,CAACI,KAAK,CAAC;SACzB,MAAM,IAAIJ,CAAC,CAAC9G,IAAI,KAAK,MAAM,EAAE;UAC5BphB,MAAM,GAAG/lB,MAAM,CAACiuC,CAAC,CAACI,KAAK,CAAC;SACzB,MAAM,IAAIJ,CAAC,CAAC9G,IAAI,KAAK,QAAQ,EAAE;UAC9B,IAAI7E,CAAC,GAAGnkC,MAAM,CAACqgC,MAAM,CAAC,EAAE,EAAEmN,cAAc,CAACpqC,MAAM,EAAE0sC,CAAC,CAAC;UACnDloB,MAAM,GAAG/lB,MAAM,CACb,CACEA,MAAM,CAACsiC,CAAC,CAACsJ,IAAI,CAAC,EACdtJ,CAAC,CAACuJ,QAAQ,GAAG,GAAG,GAAG,GAAG,EACtB,GAAG,GAAGvJ,CAAC,CAACwJ,QAAQ,GAAG,GAAG,EACtB,MAAM,EACN,GAAG,GAAGxJ,CAAC,CAACyJ,QAAQ,GAAG,GAAG,EACtB/rC,MAAM,CAACsiC,CAAC,CAAC0J,eAAe,CAAC,CAC1B,CAAC9sC,IAAI,CAAC,GAAG,CACZ,CAAC;SACF,MAAM,IAAI+uC,CAAC,CAAC9G,IAAI,KAAK,SAAS,EAAE;UAC/B,IAAI7E,CAAC,GAAGnkC,MAAM,CAACqgC,MAAM,CAAC,EAAE,EAAEmN,cAAc,CAACM,OAAO,EAAEgC,CAAC,CAAC;UACpDloB,MAAM,GAAG/lB,MAAM,CAAC,CAACA,MAAM,CAACsiC,CAAC,CAACsJ,IAAI,CAAC,EAAEtJ,CAAC,CAACuJ,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC3sC,IAAI,CAAC,GAAG,CAAC,CAAC;;;MAGvEgM,IAAI,CAACojC,EAAE,GAAGpjC,IAAI,CAACojC,EAAE,GAAGpjC,IAAI,CAACojC,EAAE,GAAG,EAAE;MAChCpjC,IAAI,CAACojC,EAAE,CAAC3F,CAAC,GAAG;QACVzyB,CAAC,EAAE,YAAY;QACfq4B,EAAE,EAAE,IAAIvuC,MAAM,CAAE,GAAEmuC,WAAY,IAAGpoB,MAAO,IAAG;OAC5C;MACD7a,IAAI,CAACojC,EAAE,CAACnK,CAAC,GAAG;QACVjuB,CAAC,EAAE,YAAY;QACfq4B,EAAE,EAAE,IAAIvuC,MAAM,CAAE,GAAEouC,QAAS,IAAGroB,MAAO,IAAG;OACzC;;IAEH,OAAO7a,IAAI,CAACgjC,MAAM;IAClB,OAAOhjC,IAAI;GACZ;EAED4iC,cAAcA,CAAC5iC,IAAI,EAAE;IACnB,IAAIwI,KAAK,GAAG,IAAI,CAACE,eAAe,CAAC1I,IAAI,CAACsjC,eAAe,CAAC;IACtD,IAAI96B,KAAK,EAAE;MACT,IAAI,CAACxI,IAAI,CAACujC,EAAE,EAAE;QACZvjC,IAAI,CAACujC,EAAE,GAAG,EAAE;;MAEdvjC,IAAI,CAACujC,EAAE,CAACC,EAAE,GAAGh7B,KAAK;;IAEpBA,KAAK,GAAG,IAAI,CAACE,eAAe,CAAC1I,IAAI,CAACyjC,WAAW,CAAC;IAC9C,IAAIj7B,KAAK,EAAE;MACT,IAAI,CAACxI,IAAI,CAACujC,EAAE,EAAE;QACZvjC,IAAI,CAACujC,EAAE,GAAG,EAAE;;MAEdvjC,IAAI,CAACujC,EAAE,CAACG,EAAE,GAAGl7B,KAAK;;IAEpB,OAAOxI,IAAI,CAACsjC,eAAe;IAC3B,OAAOtjC,IAAI,CAACyjC,WAAW;IACvB,OAAOzjC,IAAI;GACZ;EAEDwiC,aAAaA,CAAC/vC,OAAO,EAAE;IACrB,IAAIwrB,MAAM,GAAG,CAAC;IACdhrB,MAAM,CAACC,IAAI,CAACT,OAAO,CAAC,CAACmb,OAAO,CAAC/a,GAAG,IAAI;MAClC,IAAIusC,WAAW,CAACvsC,GAAG,CAAC,EAAE;QACpB,IAAIJ,OAAO,CAACI,GAAG,CAAC,EAAE;UAChBorB,MAAM,IAAImhB,WAAW,CAACvsC,GAAG,CAAC;;QAE5B,OAAOJ,OAAO,CAACI,GAAG,CAAC;;KAEtB,CAAC;IACF,IAAIorB,MAAM,KAAK,CAAC,EAAE;MAChBxrB,OAAO,CAACkxC,EAAE,GAAGlxC,OAAO,CAACkxC,EAAE,GAAGlxC,OAAO,CAACkxC,EAAE,GAAG,CAAC;MACxClxC,OAAO,CAACkxC,EAAE,IAAI1lB,MAAM;;IAEtB,OAAOxrB,OAAO;GACf;EAEDgwC,eAAeA,CAAChwC,OAAO,EAAE;IACvB,IAAIwrB,MAAM,GAAG,CAAC;IACd,IAAIxrB,OAAO,CAACo8B,KAAK,KAAK/E,SAAS,EAAE;MAC/B,IAAI,OAAOiW,aAAa,CAACttC,OAAO,CAACo8B,KAAK,CAAC,KAAK,QAAQ,EAAE;QACpD5Q,MAAM,GAAG8hB,aAAa,CAACttC,OAAO,CAACo8B,KAAK,CAAC;;MAEvC,OAAOp8B,OAAO,CAACo8B,KAAK;;IAEtB,IAAI5Q,MAAM,KAAK,CAAC,EAAE;MAChBxrB,OAAO,CAACsnB,CAAC,GAAGkE,MAAM,CAAC;;IAErB,OAAOxrB,OAAO;GACf;EAEDiwC,YAAYA,CAACjwC,OAAO,EAAE;;IAEpB,IAAI,IAAI,CAACwuC,SAAS,CAACtkC,KAAK,CAAC,IAAI,CAAC2wB,KAAK,CAAC32B,EAAE,CAAC,KAAK,IAAI,EAAE;MAChD,IAAI,CAACsqC,SAAS,CAACtkC,KAAK,CAAC,IAAI,CAAC2wB,KAAK,CAAC32B,EAAE,CAAC,GAAG,IAAI,CAAC22B,KAAK,CAACvxB,GAAG,EAAE;;;;IAIxD,IAAI,IAAI,CAACklC,SAAS,CAAC/T,WAAW,KAAK,IAAI,CAACI,KAAK,CAAC7d,IAAI,EAAE;MAClDhd,OAAO,CAAC2uC,EAAE,GAAG;QAAExkC,IAAI,EAAE;OAAI;;;MAGzB,MAAM6wB,QAAQ,GAAGh7B,OAAO,CAACg7B,QAAQ,IAAI,CAAC;MAEtCh7B,OAAO,CAAC2uC,EAAE,CAACxkC,IAAI,CAAC,IAAI,CAAC0wB,KAAK,CAAC32B,EAAE,CAAC,GAAG,IAAI,CAAC22B,KAAK,CAACvxB,GAAG,EAAE;MACjDtJ,OAAO,CAACwnC,EAAE,GAAG,IAAInlC,MAAM,CAAE,IAAG,IAAI,CAACw4B,KAAK,CAAC32B,EAAG,IAAG82B,QAAS,SAAQ,CAAC;;IAEjE,OAAOh7B,OAAO;GACf;EAEDkwC,eAAeA,CAAClwC,OAAO,EAAE;IACvB,IAAImxC,MAAM,GAAG,EAAE;IACf,SAASC,aAAaA,CAACzwC,CAAC,EAAE;MACxB,IAAIe,KAAK,CAAC6B,OAAO,CAAC5C,CAAC,CAAC,EAAE;QACpB,KAAK,IAAI0wC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG1wC,CAAC,CAACI,MAAM,EAAEswC,GAAG,EAAE,EAAE;UACvC,IAAI,OAAO1wC,CAAC,CAAC0wC,GAAG,CAAC,KAAK,QAAQ,EAAE;YAC9BF,MAAM,CAACjwC,IAAI,CAAC,IAAImB,MAAM,CAAC1B,CAAC,CAAC0wC,GAAG,CAAC,CAAC,CAAC;WAChC,MAAM;YACLF,MAAM,CAACjwC,IAAI,CAACP,CAAC,CAAC0wC,GAAG,CAAC,CAAC;;;;;IAK3BD,aAAa,CAACpxC,OAAO,CAACsxC,GAAG,CAAC;IAC1B,IAAItxC,OAAO,CAACmxC,MAAM,EAAE;MAClBC,aAAa,CAACpxC,OAAO,CAACmxC,MAAM,CAAC;MAC7B,OAAOnxC,OAAO,CAACmxC,MAAM;;IAEvB,IAAIA,MAAM,CAACpwC,MAAM,EAAE;MACjBf,OAAO,CAACsxC,GAAG,GAAGH,MAAM;;IAGtB3wC,MAAM,CAACC,IAAI,CAAC+sC,SAAS,CAAC,CAACryB,OAAO,CAAC/a,GAAG,IAAI;MACpC,IAAIJ,OAAO,CAACI,GAAG,CAAC,KAAKi3B,SAAS,EAAE;QAC9Br3B,OAAO,CAACwtC,SAAS,CAACptC,GAAG,CAAC,CAAC,GAAGJ,OAAO,CAACI,GAAG,CAAC;QACtC,OAAOJ,OAAO,CAACI,GAAG,CAAC;;KAEtB,CAAC;IACF,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC+a,OAAO,CAAC/a,GAAG,IAAI;MACzB,IAAI,OAAOJ,OAAO,CAACI,GAAG,CAAC,KAAK,QAAQ,EAAE;QACpCJ,OAAO,CAACI,GAAG,CAAC,GAAG,IAAIiC,MAAM,CAACrC,OAAO,CAACI,GAAG,CAAC,CAAC;;KAE1C,CAAC;IAEF,IAAIJ,OAAO,CAAC8wC,EAAE,IAAI9wC,OAAO,CAAC8wC,EAAE,CAAC5zB,EAAE,EAAE;MAC/Bld,OAAO,CAAC8wC,EAAE,CAAC5zB,EAAE,GAAG,IAAI7a,MAAM,CAACrC,OAAO,CAAC8wC,EAAE,CAAC5zB,EAAE,CAAC;;IAE3C,IAAIld,OAAO,CAACkgC,KAAK,EAAE;MACjBlgC,OAAO,CAAC8wC,EAAE,GAAG9wC,OAAO,CAAC8wC,EAAE,GAAG9wC,OAAO,CAAC8wC,EAAE,GAAG,EAAE;MACzC9wC,OAAO,CAAC8wC,EAAE,CAAC5zB,EAAE,GAAG,IAAI7a,MAAM,CAACrC,OAAO,CAACkgC,KAAK,CAAC;MACzC,OAAOlgC,OAAO,CAACkgC,KAAK;;IAEtB,OAAOlgC,OAAO;;AAElB,CAAC;;ACpYD,uBAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE0nC,IAAIA,CAACvN,GAAG,EAAEn6B,OAAO,GAAG,EAAE,EAAE;IACtBA,OAAO,CAACgd,IAAI,GAAGhd,OAAO,CAACgd,IAAI,IAAImd,GAAG;IAElC,MAAMoX,OAAO,GAAG;MACd7nC,IAAI,EAAE,cAAc;MACpB8nC,MAAM,EAAE;KACT;IACD,IAAIrtC,IAAI;IAER,IAAI,CAACg2B,GAAG,EAAE;MACR,MAAM,IAAIt6B,KAAK,CAAC,kBAAkB,CAAC;;IAErC,IAAI6C,MAAM,CAACK,QAAQ,CAACo3B,GAAG,CAAC,EAAE;MACxBh2B,IAAI,GAAGg2B,GAAG;KACX,MAAM,IAAIA,GAAG,YAAYI,WAAW,EAAE;MACrCp2B,IAAI,GAAGzB,MAAM,CAACC,IAAI,CAAC,IAAI23B,UAAU,CAACH,GAAG,CAAC,CAAC;KACxC,MAAM;MACL,IAAI9H,KAAK;MACT,IAAKA,KAAK,GAAG,0BAA0B,CAAC4S,IAAI,CAAC9K,GAAG,CAAC,EAAG;QAClD,IAAI9H,KAAK,CAAC,CAAC,CAAC,EAAE;UACZkf,OAAO,CAACp5B,OAAO,GAAGka,KAAK,CAAC,CAAC,CAAC,CAACxvB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;;QAEhDsB,IAAI,GAAGzB,MAAM,CAACC,IAAI,CAAC0vB,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;OACvC,MAAM;QACLluB,IAAI,GAAGktB,EAAE,CAACC,YAAY,CAAC6I,GAAG,CAAC;QAC3B,IAAI,CAACh2B,IAAI,EAAE;UACT,MAAM,IAAItE,KAAK,CAAE,+CAA8Cs6B,GAAI,EAAC,CAAC;;;;QAIvE,MAAM;UAAEsX,SAAS;UAAEC;SAAO,GAAGrgB,EAAE,CAACsgB,QAAQ,CAACxX,GAAG,CAAC;QAC7CoX,OAAO,CAACC,MAAM,CAAC5iC,YAAY,GAAG6iC,SAAS;QACvCF,OAAO,CAACC,MAAM,CAACI,OAAO,GAAGF,KAAK;;;;;IAKlC,IAAI1xC,OAAO,CAAC6xC,YAAY,YAAY7uC,IAAI,EAAE;MACxCuuC,OAAO,CAACC,MAAM,CAAC5iC,YAAY,GAAG5O,OAAO,CAAC6xC,YAAY;;IAEpD,IAAI7xC,OAAO,CAAC8xC,YAAY,YAAY9uC,IAAI,EAAE;MACxCuuC,OAAO,CAACC,MAAM,CAACI,OAAO,GAAG5xC,OAAO,CAAC8xC,YAAY;;;IAG/C,IAAI9xC,OAAO,CAACwpC,IAAI,EAAE;MAChB+H,OAAO,CAACp5B,OAAO,GAAGnY,OAAO,CAACwpC,IAAI,CAAC3mC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;;;;IAIpD,MAAMkvC,QAAQ,GAAG/iC,QAAQ,CAACC,GAAG,CAC3BD,QAAQ,CAACI,GAAG,CAACC,SAAS,CAACE,MAAM,CAAC,IAAI+qB,UAAU,CAACn2B,IAAI,CAAC,CACpD,CAAC;IACDotC,OAAO,CAACC,MAAM,CAACQ,QAAQ,GAAG,IAAI3vC,MAAM,CAAC0vC,QAAQ,CAAC;IAC9CR,OAAO,CAACC,MAAM,CAACS,IAAI,GAAG9tC,IAAI,CAAC+tC,UAAU;;;;IAIrC,IAAI5oC,GAAG;IACP,IAAI,CAAC,IAAI,CAAC6oC,aAAa,EAAE,IAAI,CAACA,aAAa,GAAG,EAAE;IAChD,IAAIzK,IAAI,GAAG,IAAI,CAACyK,aAAa,CAACnyC,OAAO,CAACgd,IAAI,CAAC;IAC3C,IAAI0qB,IAAI,IAAI0K,OAAO,CAACb,OAAO,EAAE7J,IAAI,CAAC,EAAE;MAClCp+B,GAAG,GAAGo+B,IAAI,CAACp+B,GAAG;KACf,MAAM;MACLA,GAAG,GAAG,IAAI,CAACA,GAAG,CAACioC,OAAO,CAAC;MACvBjoC,GAAG,CAACpH,GAAG,CAACiC,IAAI,CAAC;MAEb,IAAI,CAACguC,aAAa,CAACnyC,OAAO,CAACgd,IAAI,CAAC,GAAG;QAAE,GAAGu0B,OAAO;QAAEjoC;OAAK;;;IAGxD,MAAM+oC,YAAY,GAAG;MACnB3oC,IAAI,EAAE,UAAU;MAChB88B,CAAC,EAAE,IAAInkC,MAAM,CAACrC,OAAO,CAACgd,IAAI,CAAC;MAC3Bs1B,EAAE,EAAE;QAAE9L,CAAC,EAAEl9B;OAAK;MACdipC,EAAE,EAAE,IAAIlwC,MAAM,CAACrC,OAAO,CAACgd,IAAI;KAC5B;IACD,IAAIhd,OAAO,CAACwyC,WAAW,EAAE;MACvBH,YAAY,CAACvK,IAAI,GAAG,IAAIzlC,MAAM,CAACrC,OAAO,CAACwyC,WAAW,CAAC;;IAErD,MAAM7K,QAAQ,GAAG,IAAI,CAACr+B,GAAG,CAAC+oC,YAAY,CAAC;IACvC1K,QAAQ,CAACzlC,GAAG,EAAE;IAEd,IAAI,CAAClC,OAAO,CAAC4nC,MAAM,EAAE;MACnB,IAAI,CAAC6K,oBAAoB,CAACzyC,OAAO,CAACgd,IAAI,EAAE2qB,QAAQ,CAAC;;IAGnD,OAAOA,QAAQ;;AAEnB,CAAC;;AAED;AACA,SAASyK,OAAOA,CAACzxC,CAAC,EAAEC,CAAC,EAAE;EACrB,OACED,CAAC,CAACwX,OAAO,KAAKvX,CAAC,CAACuX,OAAO,IACvBxX,CAAC,CAAC6wC,MAAM,CAACQ,QAAQ,CAACpyC,QAAQ,EAAE,KAAKgB,CAAC,CAAC4wC,MAAM,CAACQ,QAAQ,CAACpyC,QAAQ,EAAE,IAC7De,CAAC,CAAC6wC,MAAM,CAACS,IAAI,KAAKrxC,CAAC,CAAC4wC,MAAM,CAACS,IAAI,IAC/BtxC,CAAC,CAAC6wC,MAAM,CAAC5iC,YAAY,CAACC,OAAO,EAAE,KAAKjO,CAAC,CAAC4wC,MAAM,CAAC5iC,YAAY,CAACC,OAAO,EAAE,IACnElO,CAAC,CAAC6wC,MAAM,CAACI,OAAO,CAAC/iC,OAAO,EAAE,KAAKjO,CAAC,CAAC4wC,MAAM,CAACI,OAAO,CAAC/iC,OAAO,EAAE;AAE7D;;AChHA,WAAe;EACb6jC,QAAQA,CAACC,OAAO,EAAE;IAChB,IAAIA,OAAO,CAAC12B,MAAM,CAAC02B,OAAO,CAAC5xC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;MAC9C,IAAI,CAAC6xC,kBAAkB,GAAGD,OAAO,CAC9B12B,MAAM,CAAC02B,OAAO,CAAC5xC,MAAM,GAAG,CAAC,CAAC,CAC1BmI,WAAW,EAAE;MAChB,IAAI,CAACssB,MAAM,GAAGrZ,QAAQ,CAACw2B,OAAO,CAAC12B,MAAM,CAAC02B,OAAO,CAAC5xC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC3D,MAAM;;MAEL,IAAI,CAAC6xC,kBAAkB,GAAG,GAAG;MAC7B,IAAI,CAACpd,MAAM,GAAGrZ,QAAQ,CAACw2B,OAAO,CAAC12B,MAAM,CAAC02B,OAAO,CAAC5xC,MAAM,GAAG,CAAC,CAAC,CAAC;;GAE7D;EAED8xC,SAASA,GAAG;IACV,IAAI,CAACC,gBAAgB,EAAE;IACvB,IAAI,CAACC,qBAAqB,EAAE;GAC7B;EAEDA,qBAAqBA,GAAG;IACtB,MAAMC,UAAU,GAAG3hB,EAAE,CAACC,YAAY,CAAE,GAAEoC,SAAU,6BAA4B,CAAC;IAE7E,MAAMuf,eAAe,GAAG,IAAI,CAAC3pC,GAAG,CAAC;MAC/B3E,MAAM,EAAEquC,UAAU,CAACjyC,MAAM;MACzBqW,CAAC,EAAE;KACJ,CAAC;IACF67B,eAAe,CAACxuC,KAAK,CAACuuC,UAAU,CAAC;IACjCC,eAAe,CAAC/wC,GAAG,EAAE;IAErB,MAAMgxC,SAAS,GAAG,IAAI,CAAC5pC,GAAG,CAAC;MACzBI,IAAI,EAAE,cAAc;MACpB6O,CAAC,EAAE,WAAW;MACd46B,IAAI,EAAE,IAAI9wC,MAAM,CAAC,mBAAmB,CAAC;MACrC+wC,yBAAyB,EAAE,IAAI/wC,MAAM,CAAC,mBAAmB,CAAC;MAC1DgxC,iBAAiB,EAAEJ;KACpB,CAAC;IACFC,SAAS,CAAChxC,GAAG,EAAE;IAEf,IAAI,CAAC0H,KAAK,CAACzF,IAAI,CAACmvC,aAAa,GAAG,CAACJ,SAAS,CAAC;GAC5C;EAEDK,UAAUA,GAAG;IACX,OAAQ;AACZ;AACA,2BAA2B,IAAI,CAAC/d,MAAO;AACvC,kCAAkC,IAAI,CAACod,kBAAmB;AAC1D;AACA,SAAS;GACN;EAEDE,gBAAgBA,GAAG;IACjB,IAAI,CAACU,SAAS,CAAC,IAAI,CAACD,UAAU,EAAE,CAAC;;AAErC,CAAC;;ACtDD,YAAe;EAEXE,SAASA,GAAG;IACR,IAAI,CAACje,MAAM,GAAG,CAAC;GAClB;EAEDqd,SAASA,GAAG;IACR,IAAI,CAACa,iBAAiB,EAAE;GAC3B;EAEDA,iBAAiBA,GAAG;IAChB,IAAI,CAACF,SAAS,CAAC,IAAI,CAACG,WAAW,EAAE,CAAC;GACrC;EAEDA,WAAWA,GAAG;IACV,OAAQ;AAChB;AACA,4BAA4B,IAAI,CAACne,MAAO;AACxC;AACA,SAAS;;AAGT,CAAC;;ACpBD,kBAAe;EACXoe,aAAaA,CAACpe,MAAM,EAAE;IAClBh1B,MAAM,CAACqgC,MAAM,CAAC,IAAI,EAAErL,MAAM,CAAC;GAC9B;EAEDqe,UAAUA,CAAC7zC,OAAO,EAAE;IAEhB,QAAQA,OAAO,CAACw1B,MAAM;MAClB,KAAK,SAAS;MACd,KAAK,UAAU;MACf,KAAK,UAAU;MACf,KAAK,SAAS;MACd,KAAK,UAAU;MACf,KAAK,UAAU;MACf,KAAK,SAAS;MACd,KAAK,UAAU;MACf,KAAK,UAAU;QACX,IAAI,CAACoe,aAAa,CAACE,IAAI,CAAC;QACxB,IAAI,CAACpB,QAAQ,CAAC1yC,OAAO,CAACw1B,MAAM,CAAC;QAC7B;MACJ,KAAK,QAAQ;QACT,IAAI,CAACoe,aAAa,CAACG,KAAK,CAAC;QACzB,IAAI,CAACN,SAAS,EAAE;QAChB;;;AAGhB,CAAC;;AC5BD,MAAMO,WAAW,CAAC;EACdj0C,WAAWA,GAAG;IACV,IAAI,CAACk0C,SAAS,GAAI;AAC1B;AACA;AACA;AACA,SAAS;;EAGLC,UAAUA,GAAG;IACT,IAAI,CAACD,SAAS,GAAG,IAAI,CAACA,SAAS,CAAChvC,MAAM,CAAE;AAChD;AACA;AACA;AACA,SAAS,CAAC;;EAGNkvC,MAAMA,CAACC,GAAG,EAAEC,OAAO,GAAC,IAAI,EAAE;IACtB,IAAI,CAACJ,SAAS,GAAG,IAAI,CAACA,SAAS,CAAChvC,MAAM,CAACmvC,GAAG,CAAC;IAC3C,IAAIC,OAAO,EACP,IAAI,CAACJ,SAAS,GAAG,IAAI,CAACA,SAAS,CAAChvC,MAAM,CAAC,IAAI,CAAC;;EAGpDqvC,MAAMA,GAAG;IAAE,OAAO,IAAI,CAACL,SAAS;;EAEhCM,SAASA,GAAG;IAAE,OAAO,IAAI,CAACN,SAAS,CAAClzC,MAAM;;EAE1CmB,GAAGA,GAAG;IACF,IAAI,CAACgyC,UAAU,EAAE;IACjB,IAAI,CAACD,SAAS,GAAG,IAAI,CAACA,SAAS,CAAClT,IAAI,EAAE;;AAE9C;;AC9BA,oBAAe;EACXyT,YAAYA,GAAG;IACX,IAAI,CAACC,QAAQ,GAAG,IAAIT,WAAW,EAAE;GACpC;EAEDR,SAASA,CAACY,GAAG,EAAEC,OAAO,GAAC,IAAI,EAAE;IAAE,IAAI,CAACI,QAAQ,CAACN,MAAM,CAACC,GAAG,EAACC,OAAO,CAAC;GAAG;EAEnEK,QAAQA,GAAG;IACP,IAAI,CAAClB,SAAS,CAAE;AACxB;AACA,8BAA8B,IAAI,CAAC9kC,IAAI,CAACE,YAAY,CAAC+lC,WAAW,EAAE,CAAC1jB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAC,GAAI;AACrF,+BAA+B,IAAI,CAACviB,IAAI,CAACkmC,OAAQ;AACjD;AACA,SACQ,CAAC;IAED,IAAI,IAAI,CAAClmC,IAAI,CAACmmC,KAAK,IAAI,IAAI,CAACnmC,IAAI,CAAComC,MAAM,IAAI,IAAI,CAACpmC,IAAI,CAACqmC,OAAO,EAAE;MAC1D,IAAI,CAACvB,SAAS,CAAE;AAC5B;AACA,aAAa,CAAC;MAEF,IAAI,IAAI,CAAC9kC,IAAI,CAACmmC,KAAK,EAAE;QACjB,IAAI,CAACrB,SAAS,CAAE;AAChC;AACA;AACA,uDAAuD,IAAI,CAAC9kC,IAAI,CAACmmC,KAAM;AACvE;AACA;AACA,iBAAiB,CAAC;;MAGN,IAAI,IAAI,CAACnmC,IAAI,CAAComC,MAAM,EAAE;QAClB,IAAI,CAACtB,SAAS,CAAE;AAChC;AACA;AACA,kCAAkC,IAAI,CAAC9kC,IAAI,CAAComC,MAAO;AACnD;AACA;AACA,iBAAiB,CAAC;;MAGN,IAAI,IAAI,CAACpmC,IAAI,CAACqmC,OAAO,EAAE;QACnB,IAAI,CAACvB,SAAS,CAAE;AAChC;AACA;AACA,uDAAuD,IAAI,CAAC9kC,IAAI,CAACqmC,OAAQ;AACzE;AACA;AACA,iBAAiB,CAAC;;MAGN,IAAI,CAACvB,SAAS,CAAE;AAC5B;AACA,aAAa,CAAC;;IAGN,IAAI,CAACA,SAAS,CAAE;AACxB;AACA,4BAA4B,IAAI,CAAC9kC,IAAI,CAACkmC,OAAQ,iBAAgB,EAAE,KAAK,CAAC;IAE9D,IAAI,IAAI,CAAClmC,IAAI,CAACsmC,QAAQ,EAAE;MACpB,IAAI,CAACxB,SAAS,CAAE;AAC5B,4BAA4B,IAAI,CAAC9kC,IAAI,CAACsmC,QAAS,iBAAgB,EAAE,KAAK,CAAC;;IAG/D,IAAI,CAACxB,SAAS,CAAE;AACxB;AACA,SAAS,CAAC;GACL;EAEDyB,WAAWA,GAAG;IACV,IAAI,CAACP,QAAQ,EAAE;IAEf,IAAI,CAACD,QAAQ,CAACvyC,GAAG,EAAE;;;AAG3B;AACA;AACA;IACQ,IAAI,IAAI,CAAC0N,OAAO,IAAI,GAAG,EAAE;MACrB,IAAI,CAACslC,WAAW,GAAG,IAAI,CAAC5rC,GAAG,CAAC;QACxBvI,MAAM,EAAE,IAAI,CAAC0zC,QAAQ,CAACF,SAAS,EAAE;QACjC7qC,IAAI,EAAE,UAAU;QAChByO,OAAO,EAAE;OACZ,CAAC;MACF,IAAI,CAAC+8B,WAAW,CAAC7wC,QAAQ,GAAG,KAAK;MACjC,IAAI,CAAC6wC,WAAW,CAACzwC,KAAK,CAAC/B,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC8xC,QAAQ,CAACH,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;MACpE,IAAI,CAACY,WAAW,CAAChzC,GAAG,EAAE;MACtB,IAAI,CAAC0H,KAAK,CAACzF,IAAI,CAACgxC,QAAQ,GAAG,IAAI,CAACD,WAAW;;;AAGvD,CAAC;;AC7FD;AACA;AACA;AACA;AAsBA,MAAME,WAAW,SAASr6B,MAAM,CAACs6B,QAAQ,CAAC;EACxCt1C,WAAWA,CAACC,OAAO,GAAG,EAAE,EAAE;IACxB,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACA,OAAO,GAAGA,OAAO;;;IAGtB,QAAQA,OAAO,CAAC2P,UAAU;MACxB,KAAK,KAAK;QACR,IAAI,CAACC,OAAO,GAAG,GAAG;QAClB;MACF,KAAK,KAAK;QACR,IAAI,CAACA,OAAO,GAAG,GAAG;QAClB;MACF,KAAK,KAAK;QACR,IAAI,CAACA,OAAO,GAAG,GAAG;QAClB;MACF,KAAK,KAAK;MACV,KAAK,SAAS;QACZ,IAAI,CAACA,OAAO,GAAG,GAAG;QAClB;MACF;QACE,IAAI,CAACA,OAAO,GAAG,GAAG;QAClB;;;;IAIJ,IAAI,CAACvL,QAAQ,GACX,IAAI,CAACrE,OAAO,CAACqE,QAAQ,IAAI,IAAI,GAAG,IAAI,CAACrE,OAAO,CAACqE,QAAQ,GAAG,IAAI;IAE9D,IAAI,CAACixC,WAAW,GAAG,EAAE;IACrB,IAAI,CAACC,gBAAgB,GAAG,CAAC;;;IAGzB,IAAI,CAACC,QAAQ,GAAG,EAAE;IAClB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAAC/L,MAAM,GAAG,KAAK;IACnB,IAAI,CAAC5kC,OAAO,GAAG,CAAC;IAChB,MAAM+E,KAAK,GAAG,IAAI,CAACP,GAAG,CAAC;MACrBI,IAAI,EAAE,OAAO;MACb8+B,KAAK,EAAE,CAAC;MACRzB,IAAI,EAAE;KACP,CAAC;IAEF,MAAM2O,KAAK,GAAG,IAAI,CAACpsC,GAAG,CAAC;MACrBqsC,KAAK,EAAE,IAAIzqC,WAAW;KACvB,CAAC;IAEF,IAAI,CAACtB,KAAK,GAAG,IAAI,CAACN,GAAG,CAAC;MACpBI,IAAI,EAAE,SAAS;MACfG,KAAK;MACL6rC;KACD,CAAC;IAEF,IAAI,IAAI,CAAC11C,OAAO,CAAC6pC,IAAI,EAAE;MACrB,IAAI,CAACjgC,KAAK,CAACzF,IAAI,CAAC2lC,IAAI,GAAG,IAAIznC,MAAM,CAAC,IAAI,CAACrC,OAAO,CAAC6pC,IAAI,CAAC;;;;IAItD,IAAI,CAAC5xB,IAAI,GAAG,IAAI;;;IAGhB,IAAI,CAACu8B,YAAY,EAAE;IACnB,IAAI,CAAC14B,SAAS,EAAE;IAChB,IAAI,CAACkQ,UAAU,EAAE;IACjB,IAAI,CAACwO,SAAS,CAACx6B,OAAO,CAACy0B,IAAI,CAAC;IAC5B,IAAI,CAACwJ,QAAQ,EAAE;IACf,IAAI,CAACiH,UAAU,EAAE;IACjB,IAAI,CAAC4D,WAAW,EAAE;IAClB,IAAI,CAACuC,YAAY,CAACrrC,OAAO,CAAC;IAC1B,IAAI,CAAC6zC,UAAU,CAAC7zC,OAAO,CAAC;;;IAGxB,IAAI,CAAC0O,IAAI,GAAG;MACVknC,QAAQ,EAAE,QAAQ;MAClBhB,OAAO,EAAE,QAAQ;MACjBhmC,YAAY,EAAE,IAAI5L,IAAI;KACvB;IAED,IAAI,IAAI,CAAChD,OAAO,CAAC0O,IAAI,EAAE;MACrB,KAAK,IAAItO,GAAG,IAAI,IAAI,CAACJ,OAAO,CAAC0O,IAAI,EAAE;QACjC,MAAMrO,GAAG,GAAG,IAAI,CAACL,OAAO,CAAC0O,IAAI,CAACtO,GAAG,CAAC;QAClC,IAAI,CAACsO,IAAI,CAACtO,GAAG,CAAC,GAAGC,GAAG;;;IAIxB,IAAI,IAAI,CAACL,OAAO,CAAC61C,YAAY,EAAE;MAC7B,IAAI,CAACjsC,KAAK,CAACzF,IAAI,CAAC2xC,iBAAiB,GAAG,IAAI,CAACxsC,GAAG,CAAC;QAC3CysC,eAAe,EAAE;OAClB,CAAC;;;;IAIJ,IAAI,CAACllC,GAAG,GAAGrC,WAAW,CAACC,cAAc,CAAC,IAAI,CAACC,IAAI,CAAC;;;IAGhD,IAAI,CAAC3J,SAAS,GAAGyJ,WAAW,CAACe,MAAM,CAAC,IAAI,EAAEvP,OAAO,CAAC;;;;IAIlD,IAAI,CAACoF,MAAM,CAAE,QAAO,IAAI,CAACwK,OAAQ,EAAC,CAAC;;;IAGnC,IAAI,CAACxK,MAAM,CAAC,mBAAmB,CAAC;;;IAGhC,IAAI,IAAI,CAACpF,OAAO,CAACg2C,aAAa,KAAK,KAAK,EAAE;MACxC,IAAI,CAACC,OAAO,EAAE;;;EAIlBA,OAAOA,CAACj2C,OAAO,EAAE;IACf,IAAIA,OAAO,IAAI,IAAI,EAAE;MACnB,CAAC;QAAEA;OAAS,GAAG,IAAI;;;;IAIrB,IAAI,CAAC,IAAI,CAACA,OAAO,CAACk2C,WAAW,EAAE;MAC7B,IAAI,CAACC,UAAU,EAAE;;;;IAInB,IAAI,CAACl+B,IAAI,GAAG,IAAIrP,OAAO,CAAC,IAAI,EAAE5I,OAAO,CAAC;IACtC,IAAI,CAACs1C,WAAW,CAACp0C,IAAI,CAAC,IAAI,CAAC+W,IAAI,CAAC;;;IAGhC,MAAM6uB,KAAK,GAAG,IAAI,CAACl9B,KAAK,CAACzF,IAAI,CAAC0F,KAAK,CAAC1F,IAAI;IACxC2iC,KAAK,CAACC,IAAI,CAAC7lC,IAAI,CAAC,IAAI,CAAC+W,IAAI,CAACxO,UAAU,CAAC;IACrCq9B,KAAK,CAAC0B,KAAK,EAAE;;;IAGb,IAAI,CAACx7B,CAAC,GAAG,IAAI,CAACiL,IAAI,CAACjP,OAAO,CAACxD,IAAI;IAC/B,IAAI,CAACsjB,CAAC,GAAG,IAAI,CAAC7Q,IAAI,CAACjP,OAAO,CAACzD,GAAG;;;;IAI9B,IAAI,CAACmU,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC9D,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACqC,IAAI,CAAC7O,MAAM,CAAC;IAEhD,IAAI,CAAC00B,IAAI,CAAC,WAAW,CAAC;IAEtB,OAAO,IAAI;;EAGbE,iBAAiBA,CAACh+B,OAAO,EAAE;IACzB,MAAMmsC,YAAY,GAAG,IAAI,CAACE,eAAe,CAAC,IAAI,CAACp0B,IAAI,CAAC;IAEpD,IAAI,CAACg+B,OAAO,CAACj2C,OAAO,CAAC;IAErB,IAAI,CAACksC,gBAAgB,CAACC,YAAY,CAAC;IAEnC,OAAO,IAAI;;EAGbiK,iBAAiBA,GAAG;IAClB,OAAO;MAAEnc,KAAK,EAAE,IAAI,CAACsb,gBAAgB;MAAEc,KAAK,EAAE,IAAI,CAACf,WAAW,CAACv0C;KAAQ;;EAGzEu1C,YAAYA,CAACzyC,CAAC,EAAE;IACd,IAAIoU,IAAI;IACR,IAAI,EAAEA,IAAI,GAAG,IAAI,CAACq9B,WAAW,CAACzxC,CAAC,GAAG,IAAI,CAAC0xC,gBAAgB,CAAC,CAAC,EAAE;MACzD,MAAM,IAAI11C,KAAK,CACZ,gBAAegE,CAAE,gDAChB,IAAI,CAAC0xC,gBACN,OAAM,IAAI,CAACA,gBAAgB,GAAG,IAAI,CAACD,WAAW,CAACv0C,MAAM,GAAG,CAAE,EAC7D,CAAC;;IAGH,OAAQ,IAAI,CAACkX,IAAI,GAAGA,IAAI;;EAG1Bk+B,UAAUA,GAAG;;;IAGX,MAAMrP,KAAK,GAAG,IAAI,CAACwO,WAAW;IAC9B,IAAI,CAACA,WAAW,GAAG,EAAE;IACrB,IAAI,CAACC,gBAAgB,IAAIzO,KAAK,CAAC/lC,MAAM;IACrC,KAAK,IAAIkX,IAAI,IAAI6uB,KAAK,EAAE;MACtB,IAAI,CAACuF,eAAe,CAACp0B,IAAI,CAAC;MAC1BA,IAAI,CAAC/V,GAAG,EAAE;;;EAIdo/B,mBAAmBA,CAACtkB,IAAI,EAAE,GAAGiL,IAAI,EAAE;IACjC,IAAIA,IAAI,CAAClnB,MAAM,KAAK,CAAC,EAAE;MACrBknB,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;;IAElC,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;MACzCA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAChQ,IAAI,CAAC7O,MAAM,GAAG6e,IAAI,CAAC,CAAC,CAAC;;IAEtCA,IAAI,CAACsuB,OAAO,CAAC,IAAI,CAACt+B,IAAI,CAACxO,UAAU,CAAC;IAClC,IAAI,CAACG,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACvxC,IAAI,CAACwxC,KAAK,CAACx1C,GAAG,CAAC6c,IAAI,EAAEiL,IAAI,CAAC;;EAGlDwqB,oBAAoBA,CAACz1B,IAAI,EAAE1T,GAAG,EAAE;IAC9B,IAAI,CAAC,IAAI,CAACM,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACvxC,IAAI,CAACqyC,aAAa,EAAE;;MAE7C,IAAI,CAAC5sC,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACvxC,IAAI,CAACqyC,aAAa,GAAG,IAAItrC,WAAW,CAAC;QACzDhL,MAAM,EAAE;OACT,CAAC;;;;IAIJ,IAAI,CAAC0J,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACvxC,IAAI,CAACqyC,aAAa,CAACr2C,GAAG,CAAC6c,IAAI,EAAE1T,GAAG,CAAC;;EAGzDmtC,kBAAkBA,CAACz5B,IAAI,EAAE05B,EAAE,EAAE;IAC3B,IAAI,CAAC,IAAI,CAAC9sC,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACvxC,IAAI,CAACwyC,UAAU,EAAE;MAC1C,IAAI,CAAC/sC,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACvxC,IAAI,CAACwyC,UAAU,GAAG,IAAIzrC,WAAW,EAAE;;IAE3D,IAAI/G,IAAI,GAAG;MACTysC,EAAE,EAAE,IAAIvuC,MAAM,CAACq0C,EAAE,CAAC;MAClBn+B,CAAC,EAAE;KACJ;IACD,IAAI,CAAC3O,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACvxC,IAAI,CAACwyC,UAAU,CAACx2C,GAAG,CAAC6c,IAAI,EAAE7Y,IAAI,CAAC;;EAGvDmF,GAAGA,CAACnF,IAAI,EAAE;IACR,MAAMmF,GAAG,GAAG,IAAItF,YAAY,CAAC,IAAI,EAAE,IAAI,CAACwxC,QAAQ,CAACz0C,MAAM,GAAG,CAAC,EAAEoD,IAAI,CAAC;IAClE,IAAI,CAACqxC,QAAQ,CAACt0C,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAACu0C,QAAQ,EAAE;IACf,OAAOnsC,GAAG;;EAGZstC,KAAKA,GAAG;;;EAGRxxC,MAAMA,CAACjB,IAAI,EAAE;IACX,IAAI,CAACzB,MAAM,CAACK,QAAQ,CAACoB,IAAI,CAAC,EAAE;MAC1BA,IAAI,GAAGzB,MAAM,CAACC,IAAI,CAACwB,IAAI,GAAG,IAAI,EAAE,QAAQ,CAAC;;IAG3C,IAAI,CAACjD,IAAI,CAACiD,IAAI,CAAC;IACf,OAAQ,IAAI,CAACW,OAAO,IAAIX,IAAI,CAACpD,MAAM;;EAGrC8Y,UAAUA,CAAC1V,IAAI,EAAE;IACf,IAAI,CAAC8T,IAAI,CAACxT,KAAK,CAACN,IAAI,CAAC;IACrB,OAAO,IAAI;;EAGbkB,OAAOA,CAACiE,GAAG,EAAE;IACX,IAAI,CAACksC,QAAQ,CAAClsC,GAAG,CAACpF,EAAE,GAAG,CAAC,CAAC,GAAGoF,GAAG,CAACzE,MAAM;IACtC,IAAI,EAAE,IAAI,CAAC4wC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC/L,MAAM,EAAE;MACxC,IAAI,CAACmN,SAAS,EAAE;MAChB,OAAQ,IAAI,CAACnN,MAAM,GAAG,KAAK;;;EAI/BxnC,GAAGA,GAAG;IACJ,IAAI,CAACi0C,UAAU,EAAE;IAEjB,IAAI,CAACW,KAAK,GAAG,IAAI,CAACxtC,GAAG,EAAE;IACvB,KAAK,IAAIlJ,GAAG,IAAI,IAAI,CAACsO,IAAI,EAAE;MACzB,IAAIrO,GAAG,GAAG,IAAI,CAACqO,IAAI,CAACtO,GAAG,CAAC;MACxB,IAAI,OAAOC,GAAG,KAAK,QAAQ,EAAE;QAC3BA,GAAG,GAAG,IAAIgC,MAAM,CAAChC,GAAG,CAAC;;MAGvB,IAAI02C,KAAK,GAAG,IAAI,CAACztC,GAAG,CAACjJ,GAAG,CAAC;MACzB02C,KAAK,CAAC70C,GAAG,EAAE;MAEX,IAAI,CAAC40C,KAAK,CAAC3yC,IAAI,CAAC/D,GAAG,CAAC,GAAG22C,KAAK;;IAG9B,IAAI,CAACD,KAAK,CAAC50C,GAAG,EAAE;IAEhB,KAAK,IAAI8a,IAAI,IAAI,IAAI,CAAC0d,aAAa,EAAE;MACnC,MAAMjG,IAAI,GAAG,IAAI,CAACiG,aAAa,CAAC1d,IAAI,CAAC;MACrCyX,IAAI,CAAC7vB,QAAQ,EAAE;;IAGjB,IAAI,CAAC2jC,UAAU,EAAE;IACjB,IAAI,CAACmE,WAAW,EAAE;IAElB,IAAI,IAAI,CAAClX,MAAM,EAAE;MACf,IAAI,CAACqd,SAAS,EAAE;;IAGlB,IAAI,CAACoC,WAAW,EAAE;IAElB,IAAI,CAACrrC,KAAK,CAAC1H,GAAG,EAAE;IAChB,IAAI,CAAC0H,KAAK,CAACzF,IAAI,CAAC0F,KAAK,CAAC3H,GAAG,EAAE;IAC3B,IAAI,CAAC0H,KAAK,CAACzF,IAAI,CAACuxC,KAAK,CAACxzC,GAAG,EAAE;IAC3B,IAAI,CAAC2sC,WAAW,EAAE;IAElB,IAAI,IAAI,CAACjlC,KAAK,CAACzF,IAAI,CAAC2xC,iBAAiB,EAAE;MACrC,IAAI,CAAClsC,KAAK,CAACzF,IAAI,CAAC2xC,iBAAiB,CAAC5zC,GAAG,EAAE;;IAGzC,IAAI,IAAI,CAAC6C,SAAS,EAAE;MAClB,IAAI,CAACA,SAAS,CAAC7C,GAAG,EAAE;;IAGtB,IAAI,IAAI,CAACuzC,QAAQ,KAAK,CAAC,EAAE;MACvB,OAAO,IAAI,CAACoB,SAAS,EAAE;KACxB,MAAM;MACL,OAAQ,IAAI,CAACnN,MAAM,GAAG,IAAI;;;EAI9BmN,SAASA,GAAG;;IAEV,MAAMG,UAAU,GAAG,IAAI,CAAClyC,OAAO;IAC/B,IAAI,CAACM,MAAM,CAAC,MAAM,CAAC;IACnB,IAAI,CAACA,MAAM,CAAE,KAAI,IAAI,CAACowC,QAAQ,CAACz0C,MAAM,GAAG,CAAE,EAAC,CAAC;IAC5C,IAAI,CAACqE,MAAM,CAAC,qBAAqB,CAAC;IAElC,KAAK,IAAIP,MAAM,IAAI,IAAI,CAAC2wC,QAAQ,EAAE;MAChC3wC,MAAM,GAAI,aAAYA,MAAO,EAAC,CAAClD,KAAK,CAAC,CAAC,EAAE,CAAC;MACzC,IAAI,CAACyD,MAAM,CAACP,MAAM,GAAG,WAAW,CAAC;;;;IAInC,MAAMoyC,OAAO,GAAG;MACdhF,IAAI,EAAE,IAAI,CAACuD,QAAQ,CAACz0C,MAAM,GAAG,CAAC;MAC9Bm2C,IAAI,EAAE,IAAI,CAACttC,KAAK;MAChBupC,IAAI,EAAE,IAAI,CAAC2D,KAAK;MAChBK,EAAE,EAAE,CAAC,IAAI,CAACtmC,GAAG,EAAE,IAAI,CAACA,GAAG;KACxB;IACD,IAAI,IAAI,CAAC9L,SAAS,EAAE;MAClBkyC,OAAO,CAACG,OAAO,GAAG,IAAI,CAACryC,SAAS,CAAC0E,UAAU;;IAG7C,IAAI,CAACrE,MAAM,CAAC,SAAS,CAAC;IACtB,IAAI,CAACA,MAAM,CAACjE,SAAS,CAACC,OAAO,CAAC61C,OAAO,CAAC,CAAC;IAEvC,IAAI,CAAC7xC,MAAM,CAAC,WAAW,CAAC;IACxB,IAAI,CAACA,MAAM,CAAE,GAAE4xC,UAAW,EAAC,CAAC;IAC5B,IAAI,CAAC5xC,MAAM,CAAC,OAAO,CAAC;;;IAGpB,OAAO,IAAI,CAAClE,IAAI,CAAC,IAAI,CAAC;;EAGxBtB,QAAQA,GAAG;IACT,OAAO,sBAAsB;;AAEjC;AAEA,MAAMy3C,KAAK,GAAGC,OAAO,IAAI;EACvB92C,MAAM,CAACqgC,MAAM,CAACuU,WAAW,CAACmC,SAAS,EAAED,OAAO,CAAC;AAC/C,CAAC;AAEDD,KAAK,CAACG,aAAa,CAAC;AACpBH,KAAK,CAACI,UAAU,CAAC;AACjBJ,KAAK,CAACK,WAAW,CAAC;AAClBL,KAAK,CAACM,UAAU,CAAC;AACjBN,KAAK,CAACO,SAAS,CAAC;AAChBP,KAAK,CAACQ,WAAW,CAAC;AAClBR,KAAK,CAACS,gBAAgB,CAAC;AACvBT,KAAK,CAACU,YAAY,CAAC;AACnBV,KAAK,CAACW,aAAa,CAAC;AACpBX,KAAK,CAACY,aAAa,CAAC;AACpBZ,KAAK,CAACa,gBAAgB,CAAC;AACvBb,KAAK,CAACc,WAAW,CAAC;AAElB/C,WAAW,CAAC/Z,WAAW,GAAGA,WAAW;;;;"}
|
|
1
|
+
{"version":3,"file":"pdfkit.js","sources":["../lib/abstract_reference.js","../lib/tree.js","../lib/spotcolor.js","../lib/object.js","../lib/reference.js","../lib/page.js","../lib/name_tree.js","../lib/saslprep/lib/util.js","../lib/saslprep/lib/code-points.js","../lib/saslprep/index.js","../lib/security.js","../lib/gradient.js","../lib/pattern.js","../lib/mixins/color.js","../lib/path.js","../lib/mixins/vector.js","../lib/font/afm.js","../lib/font.js","../lib/font/standard.js","../lib/font/embedded.js","../lib/font_factory.js","../lib/mixins/fonts.js","../lib/line_wrapper.js","../lib/mixins/text.js","../lib/image/jpeg.js","../lib/image/png.js","../lib/image.js","../lib/mixins/images.js","../lib/mixins/annotations.js","../lib/outline.js","../lib/mixins/outline.js","../lib/structure_content.js","../lib/structure_element.js","../lib/number_tree.js","../lib/mixins/markings.js","../lib/mixins/acroform.js","../lib/mixins/attachments.js","../lib/mixins/pdfa.js","../lib/mixins/pdfua.js","../lib/mixins/subsets.js","../lib/metadata.js","../lib/mixins/metadata.js","../lib/document.js"],"sourcesContent":["/*\r\nPDFAbstractReference - abstract class for PDF reference\r\n*/\r\n\r\nclass PDFAbstractReference {\r\n toString() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n}\r\n\r\nexport default PDFAbstractReference;\r\n","/*\r\nPDFTree - abstract base class for name and number tree objects\r\n*/\r\n\r\nimport PDFObject from './object';\r\n\r\nclass PDFTree {\r\n constructor(options = {}) {\r\n this._items = {};\r\n // disable /Limits output for this tree\r\n this.limits =\r\n typeof options.limits === 'boolean' ? options.limits : true;\r\n }\r\n\r\n add(key, val) {\r\n return (this._items[key] = val);\r\n }\r\n\r\n get(key) {\r\n return this._items[key];\r\n }\r\n\r\n toString() {\r\n // Needs to be sorted by key\r\n const sortedKeys = Object.keys(this._items).sort((a, b) =>\r\n this._compareKeys(a, b)\r\n );\r\n\r\n const out = ['<<'];\r\n if (this.limits && sortedKeys.length > 1) {\r\n const first = sortedKeys[0],\r\n last = sortedKeys[sortedKeys.length - 1];\r\n out.push(\r\n ` /Limits ${PDFObject.convert([this._dataForKey(first), this._dataForKey(last)])}`\r\n );\r\n }\r\n out.push(` /${this._keysName()} [`);\r\n for (let key of sortedKeys) {\r\n out.push(\r\n ` ${PDFObject.convert(this._dataForKey(key))} ${PDFObject.convert(\r\n this._items[key]\r\n )}`\r\n );\r\n }\r\n out.push(']');\r\n out.push('>>');\r\n return out.join('\\n');\r\n }\r\n\r\n _compareKeys(/*a, b*/) {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n _keysName() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n _dataForKey(/*k*/) {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n}\r\n\r\nexport default PDFTree;\r\n","export default class SpotColor {\r\n constructor(doc, name, C, M, Y, K) {\r\n this.id = 'CS' + Object.keys(doc.spotColors).length;\r\n this.name = name;\r\n this.values = [C, M, Y, K];\r\n this.ref = doc.ref([\r\n 'Separation',\r\n this.name,\r\n 'DeviceCMYK',\r\n {\r\n Range: [0, 1, 0, 1, 0, 1, 0, 1],\r\n C0: [0, 0, 0, 0],\r\n C1: this.values.map(value => value / 100),\r\n FunctionType: 2,\r\n Domain: [0, 1],\r\n N: 1\r\n }\r\n ]);\r\n this.ref.end();\r\n }\r\n\r\n toString() {\r\n return `${this.ref.id} 0 R`;\r\n }\r\n}\r\n","/*\r\nPDFObject - converts JavaScript types into their corresponding PDF types.\r\nBy Devon Govett\r\n*/\r\n\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFTree from './tree';\r\nimport SpotColor from './spotcolor';\r\n\r\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\r\n\r\nconst escapableRe = /[\\n\\r\\t\\b\\f()\\\\]/g;\r\nconst escapable = {\r\n '\\n': '\\\\n',\r\n '\\r': '\\\\r',\r\n '\\t': '\\\\t',\r\n '\\b': '\\\\b',\r\n '\\f': '\\\\f',\r\n '\\\\': '\\\\\\\\',\r\n '(': '\\\\(',\r\n ')': '\\\\)'\r\n};\r\n\r\n// Convert little endian UTF-16 to big endian\r\nconst swapBytes = function(buff) {\r\n const l = buff.length;\r\n if (l & 0x01) {\r\n throw new Error('Buffer length must be even');\r\n } else {\r\n for (let i = 0, end = l - 1; i < end; i += 2) {\r\n const a = buff[i];\r\n buff[i] = buff[i + 1];\r\n buff[i + 1] = a;\r\n }\r\n }\r\n\r\n return buff;\r\n};\r\n\r\nclass PDFObject {\r\n static convert(object, encryptFn = null) {\r\n // String literals are converted to the PDF name type\r\n if (typeof object === 'string') {\r\n return `/${object}`;\r\n\r\n // String objects are converted to PDF strings (UTF-16)\r\n } else if (object instanceof String) {\r\n let string = object;\r\n // Detect if this is a unicode string\r\n let isUnicode = false;\r\n for (let i = 0, end = string.length; i < end; i++) {\r\n if (string.charCodeAt(i) > 0x7f) {\r\n isUnicode = true;\r\n break;\r\n }\r\n }\r\n\r\n // If so, encode it as big endian UTF-16\r\n let stringBuffer;\r\n if (isUnicode) {\r\n stringBuffer = swapBytes(Buffer.from(`\\ufeff${string}`, 'utf16le'));\r\n } else {\r\n stringBuffer = Buffer.from(string.valueOf(), 'ascii');\r\n }\r\n\r\n // Encrypt the string when necessary\r\n if (encryptFn) {\r\n string = encryptFn(stringBuffer).toString('binary');\r\n } else {\r\n string = stringBuffer.toString('binary');\r\n }\r\n\r\n // Escape characters as required by the spec\r\n string = string.replace(escapableRe, c => escapable[c]);\r\n\r\n return `(${string})`;\r\n\r\n // Buffers are converted to PDF hex strings\r\n } else if (Buffer.isBuffer(object)) {\r\n return `<${object.toString('hex')}>`;\r\n } else if (\r\n object instanceof PDFAbstractReference ||\r\n object instanceof PDFTree ||\r\n object instanceof SpotColor\r\n ) {\r\n return object.toString();\r\n } else if (object instanceof Date) {\r\n let string =\r\n `D:${pad(object.getUTCFullYear(), 4)}` +\r\n pad(object.getUTCMonth() + 1, 2) +\r\n pad(object.getUTCDate(), 2) +\r\n pad(object.getUTCHours(), 2) +\r\n pad(object.getUTCMinutes(), 2) +\r\n pad(object.getUTCSeconds(), 2) +\r\n 'Z';\r\n\r\n // Encrypt the string when necessary\r\n if (encryptFn) {\r\n string = encryptFn(Buffer.from(string, 'ascii')).toString('binary');\r\n\r\n // Escape characters as required by the spec\r\n string = string.replace(escapableRe, c => escapable[c]);\r\n }\r\n\r\n return `(${string})`;\r\n } else if (Array.isArray(object)) {\r\n const items = object.map(e => PDFObject.convert(e, encryptFn)).join(' ');\r\n return `[${items}]`;\r\n } else if ({}.toString.call(object) === '[object Object]') {\r\n const out = ['<<'];\r\n for (let key in object) {\r\n const val = object[key];\r\n out.push(`/${key} ${PDFObject.convert(val, encryptFn)}`);\r\n }\r\n\r\n out.push('>>');\r\n return out.join('\\n');\r\n } else if (typeof object === 'number') {\r\n return PDFObject.number(object);\r\n } else {\r\n return `${object}`;\r\n }\r\n }\r\n\r\n static number(n) {\r\n if (n > -1e21 && n < 1e21) {\r\n return Math.round(n * 1e6) / 1e6;\r\n }\r\n\r\n throw new Error(`unsupported number: ${n}`);\r\n }\r\n}\r\n\r\nexport default PDFObject;\r\n","/*\r\nPDFReference - represents a reference to another object in the PDF object heirarchy\r\nBy Devon Govett\r\n*/\r\n\r\nimport zlib from 'zlib';\r\nimport PDFAbstractReference from './abstract_reference';\r\nimport PDFObject from './object';\r\n\r\nclass PDFReference extends PDFAbstractReference {\r\n constructor(document, id, data = {}) {\r\n super();\r\n this.document = document;\r\n this.id = id;\r\n this.data = data;\r\n this.gen = 0;\r\n this.compress = this.document.compress && !this.data.Filter;\r\n this.uncompressedLength = 0;\r\n this.buffer = [];\r\n }\r\n\r\n write(chunk) {\r\n if (!(chunk instanceof Uint8Array)) {\r\n chunk = Buffer.from(chunk + '\\n', 'binary');\r\n }\r\n\r\n this.uncompressedLength += chunk.length;\r\n if (this.data.Length == null) {\r\n this.data.Length = 0;\r\n }\r\n this.buffer.push(chunk);\r\n this.data.Length += chunk.length;\r\n if (this.compress) {\r\n return (this.data.Filter = 'FlateDecode');\r\n }\r\n }\r\n\r\n end(chunk) {\r\n if (chunk) {\r\n this.write(chunk);\r\n }\r\n return this.finalize();\r\n }\r\n\r\n finalize() {\r\n this.offset = this.document._offset;\r\n\r\n const encryptFn = this.document._security\r\n ? this.document._security.getEncryptFn(this.id, this.gen)\r\n : null;\r\n\r\n if (this.buffer.length) {\r\n this.buffer = Buffer.concat(this.buffer);\r\n if (this.compress) {\r\n this.buffer = zlib.deflateSync(this.buffer);\r\n }\r\n\r\n if (encryptFn) {\r\n this.buffer = encryptFn(this.buffer);\r\n }\r\n\r\n this.data.Length = this.buffer.length;\r\n }\r\n\r\n this.document._write(`${this.id} ${this.gen} obj`);\r\n this.document._write(PDFObject.convert(this.data, encryptFn));\r\n\r\n if (this.buffer.length) {\r\n this.document._write('stream');\r\n this.document._write(this.buffer);\r\n\r\n this.buffer = []; // free up memory\r\n this.document._write('\\nendstream');\r\n }\r\n\r\n this.document._write('endobj');\r\n this.document._refEnd(this);\r\n }\r\n toString() {\r\n return `${this.id} ${this.gen} R`;\r\n }\r\n}\r\n\r\nexport default PDFReference;\r\n","/*\r\nPDFPage - represents a single page in the PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nconst DEFAULT_MARGINS = {\r\n top: 72,\r\n left: 72,\r\n bottom: 72,\r\n right: 72\r\n};\r\n\r\nconst SIZES = {\r\n '4A0': [4767.87, 6740.79],\r\n '2A0': [3370.39, 4767.87],\r\n A0: [2383.94, 3370.39],\r\n A1: [1683.78, 2383.94],\r\n A2: [1190.55, 1683.78],\r\n A3: [841.89, 1190.55],\r\n A4: [595.28, 841.89],\r\n A5: [419.53, 595.28],\r\n A6: [297.64, 419.53],\r\n A7: [209.76, 297.64],\r\n A8: [147.4, 209.76],\r\n A9: [104.88, 147.4],\r\n A10: [73.7, 104.88],\r\n B0: [2834.65, 4008.19],\r\n B1: [2004.09, 2834.65],\r\n B2: [1417.32, 2004.09],\r\n B3: [1000.63, 1417.32],\r\n B4: [708.66, 1000.63],\r\n B5: [498.9, 708.66],\r\n B6: [354.33, 498.9],\r\n B7: [249.45, 354.33],\r\n B8: [175.75, 249.45],\r\n B9: [124.72, 175.75],\r\n B10: [87.87, 124.72],\r\n C0: [2599.37, 3676.54],\r\n C1: [1836.85, 2599.37],\r\n C2: [1298.27, 1836.85],\r\n C3: [918.43, 1298.27],\r\n C4: [649.13, 918.43],\r\n C5: [459.21, 649.13],\r\n C6: [323.15, 459.21],\r\n C7: [229.61, 323.15],\r\n C8: [161.57, 229.61],\r\n C9: [113.39, 161.57],\r\n C10: [79.37, 113.39],\r\n RA0: [2437.8, 3458.27],\r\n RA1: [1729.13, 2437.8],\r\n RA2: [1218.9, 1729.13],\r\n RA3: [864.57, 1218.9],\r\n RA4: [609.45, 864.57],\r\n SRA0: [2551.18, 3628.35],\r\n SRA1: [1814.17, 2551.18],\r\n SRA2: [1275.59, 1814.17],\r\n SRA3: [907.09, 1275.59],\r\n SRA4: [637.8, 907.09],\r\n EXECUTIVE: [521.86, 756.0],\r\n FOLIO: [612.0, 936.0],\r\n LEGAL: [612.0, 1008.0],\r\n LETTER: [612.0, 792.0],\r\n TABLOID: [792.0, 1224.0]\r\n};\r\n\r\nclass PDFPage {\r\n constructor(document, options = {}) {\r\n this.document = document;\r\n this.size = options.size || 'letter';\r\n this.layout = options.layout || 'portrait';\r\n\r\n // process margins\r\n if (typeof options.margin === 'number') {\r\n this.margins = {\r\n top: options.margin,\r\n left: options.margin,\r\n bottom: options.margin,\r\n right: options.margin\r\n };\r\n\r\n // default to 1 inch margins\r\n } else {\r\n this.margins = options.margins || DEFAULT_MARGINS;\r\n }\r\n\r\n // calculate page dimensions\r\n const dimensions = Array.isArray(this.size)\r\n ? this.size\r\n : SIZES[this.size.toUpperCase()];\r\n this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\r\n this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\r\n\r\n this.content = this.document.ref();\r\n\r\n // Initialize the Font, XObject, and ExtGState dictionaries\r\n this.resources = this.document.ref({\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']\r\n });\r\n\r\n // The page dictionary\r\n this.dictionary = this.document.ref({\r\n Type: 'Page',\r\n Parent: this.document._root.data.Pages,\r\n MediaBox: [0, 0, this.width, this.height],\r\n Contents: this.content,\r\n Resources: this.resources\r\n });\r\n\r\n this.markings = [];\r\n }\r\n\r\n // Lazily create these objects\r\n get fonts() {\r\n const data = this.resources.data;\r\n return data.Font != null ? data.Font : (data.Font = {});\r\n }\r\n\r\n get xobjects() {\r\n const data = this.resources.data;\r\n return data.XObject != null ? data.XObject : (data.XObject = {});\r\n }\r\n\r\n get ext_gstates() {\r\n const data = this.resources.data;\r\n return data.ExtGState != null ? data.ExtGState : (data.ExtGState = {});\r\n }\r\n\r\n get patterns() {\r\n const data = this.resources.data;\r\n return data.Pattern != null ? data.Pattern : (data.Pattern = {});\r\n }\r\n\r\n get colorSpaces() {\r\n const data = this.resources.data;\r\n return data.ColorSpace || (data.ColorSpace = {});\r\n }\r\n\r\n get annotations() {\r\n const data = this.dictionary.data;\r\n return data.Annots != null ? data.Annots : (data.Annots = []);\r\n }\r\n\r\n get structParentTreeKey() {\r\n const data = this.dictionary.data;\r\n return data.StructParents != null\r\n ? data.StructParents\r\n : (data.StructParents = this.document.createStructParentTreeNextKey());\r\n }\r\n\r\n maxY() {\r\n return this.height - this.margins.bottom;\r\n }\r\n\r\n write(chunk) {\r\n return this.content.write(chunk);\r\n }\r\n\r\n // Set tab order if document is tagged for accessibility.\r\n _setTabOrder() {\r\n if (!this.dictionary.Tabs && this.document.hasMarkInfoDictionary()) {\r\n this.dictionary.data.Tabs = 'S';\r\n }\r\n }\r\n\r\n end() {\r\n this._setTabOrder();\r\n this.dictionary.end();\r\n this.resources.data.ColorSpace = this.resources.data.ColorSpace || {};\r\n for (let color of Object.values(this.document.spotColors)) {\r\n this.resources.data.ColorSpace[color.id] = color;\r\n }\r\n this.resources.end();\r\n return this.content.end();\r\n }\r\n}\r\n\r\nexport default PDFPage;\r\n","/*\r\nPDFNameTree - represents a name tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNameTree extends PDFTree {\r\n _compareKeys(a, b) {\r\n return a.localeCompare(b);\r\n }\r\n\r\n _keysName() {\r\n return \"Names\";\r\n }\r\n\r\n _dataForKey(k) {\r\n return new String(k);\r\n }\r\n}\r\n\r\nexport default PDFNameTree;\r\n","/**\r\n * Check if value is in a range group.\r\n * @param {number} value\r\n * @param {number[]} rangeGroup\r\n * @returns {boolean}\r\n */\r\nfunction inRange(value, rangeGroup) {\r\n if (value < rangeGroup[0]) return false;\r\n let startRange = 0;\r\n let endRange = rangeGroup.length / 2;\r\n while (startRange <= endRange) {\r\n const middleRange = Math.floor((startRange + endRange) / 2);\r\n\r\n // actual array index\r\n const arrayIndex = middleRange * 2;\r\n\r\n // Check if value is in range pointed by actual index\r\n if (\r\n value >= rangeGroup[arrayIndex] &&\r\n value <= rangeGroup[arrayIndex + 1]\r\n ) {\r\n return true;\r\n }\r\n\r\n if (value > rangeGroup[arrayIndex + 1]) {\r\n // Search Right Side Of Array\r\n startRange = middleRange + 1;\r\n } else {\r\n // Search Left Side Of Array\r\n endRange = middleRange - 1;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport { inRange };\r\n","import { inRange } from './util';\r\n\r\n// prettier-ignore-start\r\n/**\r\n * A.1 Unassigned code points in Unicode 3.2\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-A.1\r\n */\r\nconst unassigned_code_points = [\r\n 0x0221,\r\n 0x0221,\r\n 0x0234,\r\n 0x024f,\r\n 0x02ae,\r\n 0x02af,\r\n 0x02ef,\r\n 0x02ff,\r\n 0x0350,\r\n 0x035f,\r\n 0x0370,\r\n 0x0373,\r\n 0x0376,\r\n 0x0379,\r\n 0x037b,\r\n 0x037d,\r\n 0x037f,\r\n 0x0383,\r\n 0x038b,\r\n 0x038b,\r\n 0x038d,\r\n 0x038d,\r\n 0x03a2,\r\n 0x03a2,\r\n 0x03cf,\r\n 0x03cf,\r\n 0x03f7,\r\n 0x03ff,\r\n 0x0487,\r\n 0x0487,\r\n 0x04cf,\r\n 0x04cf,\r\n 0x04f6,\r\n 0x04f7,\r\n 0x04fa,\r\n 0x04ff,\r\n 0x0510,\r\n 0x0530,\r\n 0x0557,\r\n 0x0558,\r\n 0x0560,\r\n 0x0560,\r\n 0x0588,\r\n 0x0588,\r\n 0x058b,\r\n 0x0590,\r\n 0x05a2,\r\n 0x05a2,\r\n 0x05ba,\r\n 0x05ba,\r\n 0x05c5,\r\n 0x05cf,\r\n 0x05eb,\r\n 0x05ef,\r\n 0x05f5,\r\n 0x060b,\r\n 0x060d,\r\n 0x061a,\r\n 0x061c,\r\n 0x061e,\r\n 0x0620,\r\n 0x0620,\r\n 0x063b,\r\n 0x063f,\r\n 0x0656,\r\n 0x065f,\r\n 0x06ee,\r\n 0x06ef,\r\n 0x06ff,\r\n 0x06ff,\r\n 0x070e,\r\n 0x070e,\r\n 0x072d,\r\n 0x072f,\r\n 0x074b,\r\n 0x077f,\r\n 0x07b2,\r\n 0x0900,\r\n 0x0904,\r\n 0x0904,\r\n 0x093a,\r\n 0x093b,\r\n 0x094e,\r\n 0x094f,\r\n 0x0955,\r\n 0x0957,\r\n 0x0971,\r\n 0x0980,\r\n 0x0984,\r\n 0x0984,\r\n 0x098d,\r\n 0x098e,\r\n 0x0991,\r\n 0x0992,\r\n 0x09a9,\r\n 0x09a9,\r\n 0x09b1,\r\n 0x09b1,\r\n 0x09b3,\r\n 0x09b5,\r\n 0x09ba,\r\n 0x09bb,\r\n 0x09bd,\r\n 0x09bd,\r\n 0x09c5,\r\n 0x09c6,\r\n 0x09c9,\r\n 0x09ca,\r\n 0x09ce,\r\n 0x09d6,\r\n 0x09d8,\r\n 0x09db,\r\n 0x09de,\r\n 0x09de,\r\n 0x09e4,\r\n 0x09e5,\r\n 0x09fb,\r\n 0x0a01,\r\n 0x0a03,\r\n 0x0a04,\r\n 0x0a0b,\r\n 0x0a0e,\r\n 0x0a11,\r\n 0x0a12,\r\n 0x0a29,\r\n 0x0a29,\r\n 0x0a31,\r\n 0x0a31,\r\n 0x0a34,\r\n 0x0a34,\r\n 0x0a37,\r\n 0x0a37,\r\n 0x0a3a,\r\n 0x0a3b,\r\n 0x0a3d,\r\n 0x0a3d,\r\n 0x0a43,\r\n 0x0a46,\r\n 0x0a49,\r\n 0x0a4a,\r\n 0x0a4e,\r\n 0x0a58,\r\n 0x0a5d,\r\n 0x0a5d,\r\n 0x0a5f,\r\n 0x0a65,\r\n 0x0a75,\r\n 0x0a80,\r\n 0x0a84,\r\n 0x0a84,\r\n 0x0a8c,\r\n 0x0a8c,\r\n 0x0a8e,\r\n 0x0a8e,\r\n 0x0a92,\r\n 0x0a92,\r\n 0x0aa9,\r\n 0x0aa9,\r\n 0x0ab1,\r\n 0x0ab1,\r\n 0x0ab4,\r\n 0x0ab4,\r\n 0x0aba,\r\n 0x0abb,\r\n 0x0ac6,\r\n 0x0ac6,\r\n 0x0aca,\r\n 0x0aca,\r\n 0x0ace,\r\n 0x0acf,\r\n 0x0ad1,\r\n 0x0adf,\r\n 0x0ae1,\r\n 0x0ae5,\r\n 0x0af0,\r\n 0x0b00,\r\n 0x0b04,\r\n 0x0b04,\r\n 0x0b0d,\r\n 0x0b0e,\r\n 0x0b11,\r\n 0x0b12,\r\n 0x0b29,\r\n 0x0b29,\r\n 0x0b31,\r\n 0x0b31,\r\n 0x0b34,\r\n 0x0b35,\r\n 0x0b3a,\r\n 0x0b3b,\r\n 0x0b44,\r\n 0x0b46,\r\n 0x0b49,\r\n 0x0b4a,\r\n 0x0b4e,\r\n 0x0b55,\r\n 0x0b58,\r\n 0x0b5b,\r\n 0x0b5e,\r\n 0x0b5e,\r\n 0x0b62,\r\n 0x0b65,\r\n 0x0b71,\r\n 0x0b81,\r\n 0x0b84,\r\n 0x0b84,\r\n 0x0b8b,\r\n 0x0b8d,\r\n 0x0b91,\r\n 0x0b91,\r\n 0x0b96,\r\n 0x0b98,\r\n 0x0b9b,\r\n 0x0b9b,\r\n 0x0b9d,\r\n 0x0b9d,\r\n 0x0ba0,\r\n 0x0ba2,\r\n 0x0ba5,\r\n 0x0ba7,\r\n 0x0bab,\r\n 0x0bad,\r\n 0x0bb6,\r\n 0x0bb6,\r\n 0x0bba,\r\n 0x0bbd,\r\n 0x0bc3,\r\n 0x0bc5,\r\n 0x0bc9,\r\n 0x0bc9,\r\n 0x0bce,\r\n 0x0bd6,\r\n 0x0bd8,\r\n 0x0be6,\r\n 0x0bf3,\r\n 0x0c00,\r\n 0x0c04,\r\n 0x0c04,\r\n 0x0c0d,\r\n 0x0c0d,\r\n 0x0c11,\r\n 0x0c11,\r\n 0x0c29,\r\n 0x0c29,\r\n 0x0c34,\r\n 0x0c34,\r\n 0x0c3a,\r\n 0x0c3d,\r\n 0x0c45,\r\n 0x0c45,\r\n 0x0c49,\r\n 0x0c49,\r\n 0x0c4e,\r\n 0x0c54,\r\n 0x0c57,\r\n 0x0c5f,\r\n 0x0c62,\r\n 0x0c65,\r\n 0x0c70,\r\n 0x0c81,\r\n 0x0c84,\r\n 0x0c84,\r\n 0x0c8d,\r\n 0x0c8d,\r\n 0x0c91,\r\n 0x0c91,\r\n 0x0ca9,\r\n 0x0ca9,\r\n 0x0cb4,\r\n 0x0cb4,\r\n 0x0cba,\r\n 0x0cbd,\r\n 0x0cc5,\r\n 0x0cc5,\r\n 0x0cc9,\r\n 0x0cc9,\r\n 0x0cce,\r\n 0x0cd4,\r\n 0x0cd7,\r\n 0x0cdd,\r\n 0x0cdf,\r\n 0x0cdf,\r\n 0x0ce2,\r\n 0x0ce5,\r\n 0x0cf0,\r\n 0x0d01,\r\n 0x0d04,\r\n 0x0d04,\r\n 0x0d0d,\r\n 0x0d0d,\r\n 0x0d11,\r\n 0x0d11,\r\n 0x0d29,\r\n 0x0d29,\r\n 0x0d3a,\r\n 0x0d3d,\r\n 0x0d44,\r\n 0x0d45,\r\n 0x0d49,\r\n 0x0d49,\r\n 0x0d4e,\r\n 0x0d56,\r\n 0x0d58,\r\n 0x0d5f,\r\n 0x0d62,\r\n 0x0d65,\r\n 0x0d70,\r\n 0x0d81,\r\n 0x0d84,\r\n 0x0d84,\r\n 0x0d97,\r\n 0x0d99,\r\n 0x0db2,\r\n 0x0db2,\r\n 0x0dbc,\r\n 0x0dbc,\r\n 0x0dbe,\r\n 0x0dbf,\r\n 0x0dc7,\r\n 0x0dc9,\r\n 0x0dcb,\r\n 0x0dce,\r\n 0x0dd5,\r\n 0x0dd5,\r\n 0x0dd7,\r\n 0x0dd7,\r\n 0x0de0,\r\n 0x0df1,\r\n 0x0df5,\r\n 0x0e00,\r\n 0x0e3b,\r\n 0x0e3e,\r\n 0x0e5c,\r\n 0x0e80,\r\n 0x0e83,\r\n 0x0e83,\r\n 0x0e85,\r\n 0x0e86,\r\n 0x0e89,\r\n 0x0e89,\r\n 0x0e8b,\r\n 0x0e8c,\r\n 0x0e8e,\r\n 0x0e93,\r\n 0x0e98,\r\n 0x0e98,\r\n 0x0ea0,\r\n 0x0ea0,\r\n 0x0ea4,\r\n 0x0ea4,\r\n 0x0ea6,\r\n 0x0ea6,\r\n 0x0ea8,\r\n 0x0ea9,\r\n 0x0eac,\r\n 0x0eac,\r\n 0x0eba,\r\n 0x0eba,\r\n 0x0ebe,\r\n 0x0ebf,\r\n 0x0ec5,\r\n 0x0ec5,\r\n 0x0ec7,\r\n 0x0ec7,\r\n 0x0ece,\r\n 0x0ecf,\r\n 0x0eda,\r\n 0x0edb,\r\n 0x0ede,\r\n 0x0eff,\r\n 0x0f48,\r\n 0x0f48,\r\n 0x0f6b,\r\n 0x0f70,\r\n 0x0f8c,\r\n 0x0f8f,\r\n 0x0f98,\r\n 0x0f98,\r\n 0x0fbd,\r\n 0x0fbd,\r\n 0x0fcd,\r\n 0x0fce,\r\n 0x0fd0,\r\n 0x0fff,\r\n 0x1022,\r\n 0x1022,\r\n 0x1028,\r\n 0x1028,\r\n 0x102b,\r\n 0x102b,\r\n 0x1033,\r\n 0x1035,\r\n 0x103a,\r\n 0x103f,\r\n 0x105a,\r\n 0x109f,\r\n 0x10c6,\r\n 0x10cf,\r\n 0x10f9,\r\n 0x10fa,\r\n 0x10fc,\r\n 0x10ff,\r\n 0x115a,\r\n 0x115e,\r\n 0x11a3,\r\n 0x11a7,\r\n 0x11fa,\r\n 0x11ff,\r\n 0x1207,\r\n 0x1207,\r\n 0x1247,\r\n 0x1247,\r\n 0x1249,\r\n 0x1249,\r\n 0x124e,\r\n 0x124f,\r\n 0x1257,\r\n 0x1257,\r\n 0x1259,\r\n 0x1259,\r\n 0x125e,\r\n 0x125f,\r\n 0x1287,\r\n 0x1287,\r\n 0x1289,\r\n 0x1289,\r\n 0x128e,\r\n 0x128f,\r\n 0x12af,\r\n 0x12af,\r\n 0x12b1,\r\n 0x12b1,\r\n 0x12b6,\r\n 0x12b7,\r\n 0x12bf,\r\n 0x12bf,\r\n 0x12c1,\r\n 0x12c1,\r\n 0x12c6,\r\n 0x12c7,\r\n 0x12cf,\r\n 0x12cf,\r\n 0x12d7,\r\n 0x12d7,\r\n 0x12ef,\r\n 0x12ef,\r\n 0x130f,\r\n 0x130f,\r\n 0x1311,\r\n 0x1311,\r\n 0x1316,\r\n 0x1317,\r\n 0x131f,\r\n 0x131f,\r\n 0x1347,\r\n 0x1347,\r\n 0x135b,\r\n 0x1360,\r\n 0x137d,\r\n 0x139f,\r\n 0x13f5,\r\n 0x1400,\r\n 0x1677,\r\n 0x167f,\r\n 0x169d,\r\n 0x169f,\r\n 0x16f1,\r\n 0x16ff,\r\n 0x170d,\r\n 0x170d,\r\n 0x1715,\r\n 0x171f,\r\n 0x1737,\r\n 0x173f,\r\n 0x1754,\r\n 0x175f,\r\n 0x176d,\r\n 0x176d,\r\n 0x1771,\r\n 0x1771,\r\n 0x1774,\r\n 0x177f,\r\n 0x17dd,\r\n 0x17df,\r\n 0x17ea,\r\n 0x17ff,\r\n 0x180f,\r\n 0x180f,\r\n 0x181a,\r\n 0x181f,\r\n 0x1878,\r\n 0x187f,\r\n 0x18aa,\r\n 0x1dff,\r\n 0x1e9c,\r\n 0x1e9f,\r\n 0x1efa,\r\n 0x1eff,\r\n 0x1f16,\r\n 0x1f17,\r\n 0x1f1e,\r\n 0x1f1f,\r\n 0x1f46,\r\n 0x1f47,\r\n 0x1f4e,\r\n 0x1f4f,\r\n 0x1f58,\r\n 0x1f58,\r\n 0x1f5a,\r\n 0x1f5a,\r\n 0x1f5c,\r\n 0x1f5c,\r\n 0x1f5e,\r\n 0x1f5e,\r\n 0x1f7e,\r\n 0x1f7f,\r\n 0x1fb5,\r\n 0x1fb5,\r\n 0x1fc5,\r\n 0x1fc5,\r\n 0x1fd4,\r\n 0x1fd5,\r\n 0x1fdc,\r\n 0x1fdc,\r\n 0x1ff0,\r\n 0x1ff1,\r\n 0x1ff5,\r\n 0x1ff5,\r\n 0x1fff,\r\n 0x1fff,\r\n 0x2053,\r\n 0x2056,\r\n 0x2058,\r\n 0x205e,\r\n 0x2064,\r\n 0x2069,\r\n 0x2072,\r\n 0x2073,\r\n 0x208f,\r\n 0x209f,\r\n 0x20b2,\r\n 0x20cf,\r\n 0x20eb,\r\n 0x20ff,\r\n 0x213b,\r\n 0x213c,\r\n 0x214c,\r\n 0x2152,\r\n 0x2184,\r\n 0x218f,\r\n 0x23cf,\r\n 0x23ff,\r\n 0x2427,\r\n 0x243f,\r\n 0x244b,\r\n 0x245f,\r\n 0x24ff,\r\n 0x24ff,\r\n 0x2614,\r\n 0x2615,\r\n 0x2618,\r\n 0x2618,\r\n 0x267e,\r\n 0x267f,\r\n 0x268a,\r\n 0x2700,\r\n 0x2705,\r\n 0x2705,\r\n 0x270a,\r\n 0x270b,\r\n 0x2728,\r\n 0x2728,\r\n 0x274c,\r\n 0x274c,\r\n 0x274e,\r\n 0x274e,\r\n 0x2753,\r\n 0x2755,\r\n 0x2757,\r\n 0x2757,\r\n 0x275f,\r\n 0x2760,\r\n 0x2795,\r\n 0x2797,\r\n 0x27b0,\r\n 0x27b0,\r\n 0x27bf,\r\n 0x27cf,\r\n 0x27ec,\r\n 0x27ef,\r\n 0x2b00,\r\n 0x2e7f,\r\n 0x2e9a,\r\n 0x2e9a,\r\n 0x2ef4,\r\n 0x2eff,\r\n 0x2fd6,\r\n 0x2fef,\r\n 0x2ffc,\r\n 0x2fff,\r\n 0x3040,\r\n 0x3040,\r\n 0x3097,\r\n 0x3098,\r\n 0x3100,\r\n 0x3104,\r\n 0x312d,\r\n 0x3130,\r\n 0x318f,\r\n 0x318f,\r\n 0x31b8,\r\n 0x31ef,\r\n 0x321d,\r\n 0x321f,\r\n 0x3244,\r\n 0x3250,\r\n 0x327c,\r\n 0x327e,\r\n 0x32cc,\r\n 0x32cf,\r\n 0x32ff,\r\n 0x32ff,\r\n 0x3377,\r\n 0x337a,\r\n 0x33de,\r\n 0x33df,\r\n 0x33ff,\r\n 0x33ff,\r\n 0x4db6,\r\n 0x4dff,\r\n 0x9fa6,\r\n 0x9fff,\r\n 0xa48d,\r\n 0xa48f,\r\n 0xa4c7,\r\n 0xabff,\r\n 0xd7a4,\r\n 0xd7ff,\r\n 0xfa2e,\r\n 0xfa2f,\r\n 0xfa6b,\r\n 0xfaff,\r\n 0xfb07,\r\n 0xfb12,\r\n 0xfb18,\r\n 0xfb1c,\r\n 0xfb37,\r\n 0xfb37,\r\n 0xfb3d,\r\n 0xfb3d,\r\n 0xfb3f,\r\n 0xfb3f,\r\n 0xfb42,\r\n 0xfb42,\r\n 0xfb45,\r\n 0xfb45,\r\n 0xfbb2,\r\n 0xfbd2,\r\n 0xfd40,\r\n 0xfd4f,\r\n 0xfd90,\r\n 0xfd91,\r\n 0xfdc8,\r\n 0xfdcf,\r\n 0xfdfd,\r\n 0xfdff,\r\n 0xfe10,\r\n 0xfe1f,\r\n 0xfe24,\r\n 0xfe2f,\r\n 0xfe47,\r\n 0xfe48,\r\n 0xfe53,\r\n 0xfe53,\r\n 0xfe67,\r\n 0xfe67,\r\n 0xfe6c,\r\n 0xfe6f,\r\n 0xfe75,\r\n 0xfe75,\r\n 0xfefd,\r\n 0xfefe,\r\n 0xff00,\r\n 0xff00,\r\n 0xffbf,\r\n 0xffc1,\r\n 0xffc8,\r\n 0xffc9,\r\n 0xffd0,\r\n 0xffd1,\r\n 0xffd8,\r\n 0xffd9,\r\n 0xffdd,\r\n 0xffdf,\r\n 0xffe7,\r\n 0xffe7,\r\n 0xffef,\r\n 0xfff8,\r\n 0x10000,\r\n 0x102ff,\r\n 0x1031f,\r\n 0x1031f,\r\n 0x10324,\r\n 0x1032f,\r\n 0x1034b,\r\n 0x103ff,\r\n 0x10426,\r\n 0x10427,\r\n 0x1044e,\r\n 0x1cfff,\r\n 0x1d0f6,\r\n 0x1d0ff,\r\n 0x1d127,\r\n 0x1d129,\r\n 0x1d1de,\r\n 0x1d3ff,\r\n 0x1d455,\r\n 0x1d455,\r\n 0x1d49d,\r\n 0x1d49d,\r\n 0x1d4a0,\r\n 0x1d4a1,\r\n 0x1d4a3,\r\n 0x1d4a4,\r\n 0x1d4a7,\r\n 0x1d4a8,\r\n 0x1d4ad,\r\n 0x1d4ad,\r\n 0x1d4ba,\r\n 0x1d4ba,\r\n 0x1d4bc,\r\n 0x1d4bc,\r\n 0x1d4c1,\r\n 0x1d4c1,\r\n 0x1d4c4,\r\n 0x1d4c4,\r\n 0x1d506,\r\n 0x1d506,\r\n 0x1d50b,\r\n 0x1d50c,\r\n 0x1d515,\r\n 0x1d515,\r\n 0x1d51d,\r\n 0x1d51d,\r\n 0x1d53a,\r\n 0x1d53a,\r\n 0x1d53f,\r\n 0x1d53f,\r\n 0x1d545,\r\n 0x1d545,\r\n 0x1d547,\r\n 0x1d549,\r\n 0x1d551,\r\n 0x1d551,\r\n 0x1d6a4,\r\n 0x1d6a7,\r\n 0x1d7ca,\r\n 0x1d7cd,\r\n 0x1d800,\r\n 0x1fffd,\r\n 0x2a6d7,\r\n 0x2f7ff,\r\n 0x2fa1e,\r\n 0x2fffd,\r\n 0x30000,\r\n 0x3fffd,\r\n 0x40000,\r\n 0x4fffd,\r\n 0x50000,\r\n 0x5fffd,\r\n 0x60000,\r\n 0x6fffd,\r\n 0x70000,\r\n 0x7fffd,\r\n 0x80000,\r\n 0x8fffd,\r\n 0x90000,\r\n 0x9fffd,\r\n 0xa0000,\r\n 0xafffd,\r\n 0xb0000,\r\n 0xbfffd,\r\n 0xc0000,\r\n 0xcfffd,\r\n 0xd0000,\r\n 0xdfffd,\r\n 0xe0000,\r\n 0xe0000,\r\n 0xe0002,\r\n 0xe001f,\r\n 0xe0080,\r\n 0xefffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isUnassignedCodePoint = character =>\r\n inRange(character, unassigned_code_points);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * B.1 Commonly mapped to nothing\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-B.1\r\n */\r\nconst commonly_mapped_to_nothing = [\r\n 0x00ad,\r\n 0x00ad,\r\n 0x034f,\r\n 0x034f,\r\n 0x1806,\r\n 0x1806,\r\n 0x180b,\r\n 0x180b,\r\n 0x180c,\r\n 0x180c,\r\n 0x180d,\r\n 0x180d,\r\n 0x200b,\r\n 0x200b,\r\n 0x200c,\r\n 0x200c,\r\n 0x200d,\r\n 0x200d,\r\n 0x2060,\r\n 0x2060,\r\n 0xfe00,\r\n 0xfe00,\r\n 0xfe01,\r\n 0xfe01,\r\n 0xfe02,\r\n 0xfe02,\r\n 0xfe03,\r\n 0xfe03,\r\n 0xfe04,\r\n 0xfe04,\r\n 0xfe05,\r\n 0xfe05,\r\n 0xfe06,\r\n 0xfe06,\r\n 0xfe07,\r\n 0xfe07,\r\n 0xfe08,\r\n 0xfe08,\r\n 0xfe09,\r\n 0xfe09,\r\n 0xfe0a,\r\n 0xfe0a,\r\n 0xfe0b,\r\n 0xfe0b,\r\n 0xfe0c,\r\n 0xfe0c,\r\n 0xfe0d,\r\n 0xfe0d,\r\n 0xfe0e,\r\n 0xfe0e,\r\n 0xfe0f,\r\n 0xfe0f,\r\n 0xfeff,\r\n 0xfeff\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isCommonlyMappedToNothing = character =>\r\n inRange(character, commonly_mapped_to_nothing);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * C.1.2 Non-ASCII space characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.1.2\r\n */\r\nconst non_ASCII_space_characters = [\r\n 0x00a0,\r\n 0x00a0 /* NO-BREAK SPACE */,\r\n 0x1680,\r\n 0x1680 /* OGHAM SPACE MARK */,\r\n 0x2000,\r\n 0x2000 /* EN QUAD */,\r\n 0x2001,\r\n 0x2001 /* EM QUAD */,\r\n 0x2002,\r\n 0x2002 /* EN SPACE */,\r\n 0x2003,\r\n 0x2003 /* EM SPACE */,\r\n 0x2004,\r\n 0x2004 /* THREE-PER-EM SPACE */,\r\n 0x2005,\r\n 0x2005 /* FOUR-PER-EM SPACE */,\r\n 0x2006,\r\n 0x2006 /* SIX-PER-EM SPACE */,\r\n 0x2007,\r\n 0x2007 /* FIGURE SPACE */,\r\n 0x2008,\r\n 0x2008 /* PUNCTUATION SPACE */,\r\n 0x2009,\r\n 0x2009 /* THIN SPACE */,\r\n 0x200a,\r\n 0x200a /* HAIR SPACE */,\r\n 0x200b,\r\n 0x200b /* ZERO WIDTH SPACE */,\r\n 0x202f,\r\n 0x202f /* NARROW NO-BREAK SPACE */,\r\n 0x205f,\r\n 0x205f /* MEDIUM MATHEMATICAL SPACE */,\r\n 0x3000,\r\n 0x3000 /* IDEOGRAPHIC SPACE */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isNonASCIISpaceCharacter = character =>\r\n inRange(character, non_ASCII_space_characters);\r\n\r\n// prettier-ignore-start\r\nconst non_ASCII_controls_characters = [\r\n /**\r\n * C.2.2 Non-ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.2\r\n */\r\n 0x0080,\r\n 0x009f /* [CONTROL CHARACTERS] */,\r\n 0x06dd,\r\n 0x06dd /* ARABIC END OF AYAH */,\r\n 0x070f,\r\n 0x070f /* SYRIAC ABBREVIATION MARK */,\r\n 0x180e,\r\n 0x180e /* MONGOLIAN VOWEL SEPARATOR */,\r\n 0x200c,\r\n 0x200c /* ZERO WIDTH NON-JOINER */,\r\n 0x200d,\r\n 0x200d /* ZERO WIDTH JOINER */,\r\n 0x2028,\r\n 0x2028 /* LINE SEPARATOR */,\r\n 0x2029,\r\n 0x2029 /* PARAGRAPH SEPARATOR */,\r\n 0x2060,\r\n 0x2060 /* WORD JOINER */,\r\n 0x2061,\r\n 0x2061 /* FUNCTION APPLICATION */,\r\n 0x2062,\r\n 0x2062 /* INVISIBLE TIMES */,\r\n 0x2063,\r\n 0x2063 /* INVISIBLE SEPARATOR */,\r\n 0x206a,\r\n 0x206f /* [CONTROL CHARACTERS] */,\r\n 0xfeff,\r\n 0xfeff /* ZERO WIDTH NO-BREAK SPACE */,\r\n 0xfff9,\r\n 0xfffc /* [CONTROL CHARACTERS] */,\r\n 0x1d173,\r\n 0x1d17a /* [MUSICAL CONTROL CHARACTERS] */\r\n];\r\n\r\nconst non_character_codepoints = [\r\n /**\r\n * C.4 Non-character code points\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.4\r\n */\r\n 0xfdd0,\r\n 0xfdef /* [NONCHARACTER CODE POINTS] */,\r\n 0xfffe,\r\n 0xffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x1fffe,\r\n 0x1ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x2fffe,\r\n 0x2ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x3fffe,\r\n 0x3ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x4fffe,\r\n 0x4ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x5fffe,\r\n 0x5ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x6fffe,\r\n 0x6ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x7fffe,\r\n 0x7ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x8fffe,\r\n 0x8ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x9fffe,\r\n 0x9ffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xafffe,\r\n 0xaffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xbfffe,\r\n 0xbffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xcfffe,\r\n 0xcffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xdfffe,\r\n 0xdffff /* [NONCHARACTER CODE POINTS] */,\r\n 0xefffe,\r\n 0xeffff /* [NONCHARACTER CODE POINTS] */,\r\n 0x10fffe,\r\n 0x10ffff /* [NONCHARACTER CODE POINTS] */\r\n];\r\n\r\n/**\r\n * 2.3. Prohibited Output\r\n */\r\nconst prohibited_characters = [\r\n /**\r\n * C.2.1 ASCII control characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.2.1\r\n */\r\n 0,\r\n 0x001f /* [CONTROL CHARACTERS] */,\r\n 0x007f,\r\n 0x007f /* DELETE */,\r\n\r\n /**\r\n * C.8 Change display properties or are deprecated\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.8\r\n */\r\n 0x0340,\r\n 0x0340 /* COMBINING GRAVE TONE MARK */,\r\n 0x0341,\r\n 0x0341 /* COMBINING ACUTE TONE MARK */,\r\n 0x200e,\r\n 0x200e /* LEFT-TO-RIGHT MARK */,\r\n 0x200f,\r\n 0x200f /* RIGHT-TO-LEFT MARK */,\r\n 0x202a,\r\n 0x202a /* LEFT-TO-RIGHT EMBEDDING */,\r\n 0x202b,\r\n 0x202b /* RIGHT-TO-LEFT EMBEDDING */,\r\n 0x202c,\r\n 0x202c /* POP DIRECTIONAL FORMATTING */,\r\n 0x202d,\r\n 0x202d /* LEFT-TO-RIGHT OVERRIDE */,\r\n 0x202e,\r\n 0x202e /* RIGHT-TO-LEFT OVERRIDE */,\r\n 0x206a,\r\n 0x206a /* INHIBIT SYMMETRIC SWAPPING */,\r\n 0x206b,\r\n 0x206b /* ACTIVATE SYMMETRIC SWAPPING */,\r\n 0x206c,\r\n 0x206c /* INHIBIT ARABIC FORM SHAPING */,\r\n 0x206d,\r\n 0x206d /* ACTIVATE ARABIC FORM SHAPING */,\r\n 0x206e,\r\n 0x206e /* NATIONAL DIGIT SHAPES */,\r\n 0x206f,\r\n 0x206f /* NOMINAL DIGIT SHAPES */,\r\n\r\n /**\r\n * C.7 Inappropriate for canonical representation\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.7\r\n */\r\n 0x2ff0,\r\n 0x2ffb /* [IDEOGRAPHIC DESCRIPTION CHARACTERS] */,\r\n\r\n /**\r\n * C.5 Surrogate codes\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.5\r\n */\r\n 0xd800,\r\n 0xdfff,\r\n\r\n /**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\r\n 0xe000,\r\n 0xf8ff /* [PRIVATE USE, PLANE 0] */,\r\n\r\n /**\r\n * C.6 Inappropriate for plain text\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.6\r\n */\r\n 0xfff9,\r\n 0xfff9 /* INTERLINEAR ANNOTATION ANCHOR */,\r\n 0xfffa,\r\n 0xfffa /* INTERLINEAR ANNOTATION SEPARATOR */,\r\n 0xfffb,\r\n 0xfffb /* INTERLINEAR ANNOTATION TERMINATOR */,\r\n 0xfffc,\r\n 0xfffc /* OBJECT REPLACEMENT CHARACTER */,\r\n 0xfffd,\r\n 0xfffd /* REPLACEMENT CHARACTER */,\r\n\r\n /**\r\n * C.9 Tagging characters\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.9\r\n */\r\n 0xe0001,\r\n 0xe0001 /* LANGUAGE TAG */,\r\n 0xe0020,\r\n 0xe007f /* [TAGGING CHARACTERS] */,\r\n\r\n /**\r\n * C.3 Private use\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-C.3\r\n */\r\n\r\n 0xf0000,\r\n 0xffffd /* [PRIVATE USE, PLANE 15] */,\r\n 0x100000,\r\n 0x10fffd /* [PRIVATE USE, PLANE 16] */\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isProhibitedCharacter = character =>\r\n inRange(character, non_ASCII_space_characters) ||\r\n inRange(character, prohibited_characters) ||\r\n inRange(character, non_ASCII_controls_characters) ||\r\n inRange(character, non_character_codepoints);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.1 Characters with bidirectional property \"R\" or \"AL\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.1\r\n */\r\nconst bidirectional_r_al = [\r\n 0x05be,\r\n 0x05be,\r\n 0x05c0,\r\n 0x05c0,\r\n 0x05c3,\r\n 0x05c3,\r\n 0x05d0,\r\n 0x05ea,\r\n 0x05f0,\r\n 0x05f4,\r\n 0x061b,\r\n 0x061b,\r\n 0x061f,\r\n 0x061f,\r\n 0x0621,\r\n 0x063a,\r\n 0x0640,\r\n 0x064a,\r\n 0x066d,\r\n 0x066f,\r\n 0x0671,\r\n 0x06d5,\r\n 0x06dd,\r\n 0x06dd,\r\n 0x06e5,\r\n 0x06e6,\r\n 0x06fa,\r\n 0x06fe,\r\n 0x0700,\r\n 0x070d,\r\n 0x0710,\r\n 0x0710,\r\n 0x0712,\r\n 0x072c,\r\n 0x0780,\r\n 0x07a5,\r\n 0x07b1,\r\n 0x07b1,\r\n 0x200f,\r\n 0x200f,\r\n 0xfb1d,\r\n 0xfb1d,\r\n 0xfb1f,\r\n 0xfb28,\r\n 0xfb2a,\r\n 0xfb36,\r\n 0xfb38,\r\n 0xfb3c,\r\n 0xfb3e,\r\n 0xfb3e,\r\n 0xfb40,\r\n 0xfb41,\r\n 0xfb43,\r\n 0xfb44,\r\n 0xfb46,\r\n 0xfbb1,\r\n 0xfbd3,\r\n 0xfd3d,\r\n 0xfd50,\r\n 0xfd8f,\r\n 0xfd92,\r\n 0xfdc7,\r\n 0xfdf0,\r\n 0xfdfc,\r\n 0xfe70,\r\n 0xfe74,\r\n 0xfe76,\r\n 0xfefc\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalRAL = character => inRange(character, bidirectional_r_al);\r\n\r\n// prettier-ignore-start\r\n/**\r\n * D.2 Characters with bidirectional property \"L\"\r\n * @link https://tools.ietf.org/html/rfc3454#appendix-D.2\r\n */\r\nconst bidirectional_l = [\r\n 0x0041,\r\n 0x005a,\r\n 0x0061,\r\n 0x007a,\r\n 0x00aa,\r\n 0x00aa,\r\n 0x00b5,\r\n 0x00b5,\r\n 0x00ba,\r\n 0x00ba,\r\n 0x00c0,\r\n 0x00d6,\r\n 0x00d8,\r\n 0x00f6,\r\n 0x00f8,\r\n 0x0220,\r\n 0x0222,\r\n 0x0233,\r\n 0x0250,\r\n 0x02ad,\r\n 0x02b0,\r\n 0x02b8,\r\n 0x02bb,\r\n 0x02c1,\r\n 0x02d0,\r\n 0x02d1,\r\n 0x02e0,\r\n 0x02e4,\r\n 0x02ee,\r\n 0x02ee,\r\n 0x037a,\r\n 0x037a,\r\n 0x0386,\r\n 0x0386,\r\n 0x0388,\r\n 0x038a,\r\n 0x038c,\r\n 0x038c,\r\n 0x038e,\r\n 0x03a1,\r\n 0x03a3,\r\n 0x03ce,\r\n 0x03d0,\r\n 0x03f5,\r\n 0x0400,\r\n 0x0482,\r\n 0x048a,\r\n 0x04ce,\r\n 0x04d0,\r\n 0x04f5,\r\n 0x04f8,\r\n 0x04f9,\r\n 0x0500,\r\n 0x050f,\r\n 0x0531,\r\n 0x0556,\r\n 0x0559,\r\n 0x055f,\r\n 0x0561,\r\n 0x0587,\r\n 0x0589,\r\n 0x0589,\r\n 0x0903,\r\n 0x0903,\r\n 0x0905,\r\n 0x0939,\r\n 0x093d,\r\n 0x0940,\r\n 0x0949,\r\n 0x094c,\r\n 0x0950,\r\n 0x0950,\r\n 0x0958,\r\n 0x0961,\r\n 0x0964,\r\n 0x0970,\r\n 0x0982,\r\n 0x0983,\r\n 0x0985,\r\n 0x098c,\r\n 0x098f,\r\n 0x0990,\r\n 0x0993,\r\n 0x09a8,\r\n 0x09aa,\r\n 0x09b0,\r\n 0x09b2,\r\n 0x09b2,\r\n 0x09b6,\r\n 0x09b9,\r\n 0x09be,\r\n 0x09c0,\r\n 0x09c7,\r\n 0x09c8,\r\n 0x09cb,\r\n 0x09cc,\r\n 0x09d7,\r\n 0x09d7,\r\n 0x09dc,\r\n 0x09dd,\r\n 0x09df,\r\n 0x09e1,\r\n 0x09e6,\r\n 0x09f1,\r\n 0x09f4,\r\n 0x09fa,\r\n 0x0a05,\r\n 0x0a0a,\r\n 0x0a0f,\r\n 0x0a10,\r\n 0x0a13,\r\n 0x0a28,\r\n 0x0a2a,\r\n 0x0a30,\r\n 0x0a32,\r\n 0x0a33,\r\n 0x0a35,\r\n 0x0a36,\r\n 0x0a38,\r\n 0x0a39,\r\n 0x0a3e,\r\n 0x0a40,\r\n 0x0a59,\r\n 0x0a5c,\r\n 0x0a5e,\r\n 0x0a5e,\r\n 0x0a66,\r\n 0x0a6f,\r\n 0x0a72,\r\n 0x0a74,\r\n 0x0a83,\r\n 0x0a83,\r\n 0x0a85,\r\n 0x0a8b,\r\n 0x0a8d,\r\n 0x0a8d,\r\n 0x0a8f,\r\n 0x0a91,\r\n 0x0a93,\r\n 0x0aa8,\r\n 0x0aaa,\r\n 0x0ab0,\r\n 0x0ab2,\r\n 0x0ab3,\r\n 0x0ab5,\r\n 0x0ab9,\r\n 0x0abd,\r\n 0x0ac0,\r\n 0x0ac9,\r\n 0x0ac9,\r\n 0x0acb,\r\n 0x0acc,\r\n 0x0ad0,\r\n 0x0ad0,\r\n 0x0ae0,\r\n 0x0ae0,\r\n 0x0ae6,\r\n 0x0aef,\r\n 0x0b02,\r\n 0x0b03,\r\n 0x0b05,\r\n 0x0b0c,\r\n 0x0b0f,\r\n 0x0b10,\r\n 0x0b13,\r\n 0x0b28,\r\n 0x0b2a,\r\n 0x0b30,\r\n 0x0b32,\r\n 0x0b33,\r\n 0x0b36,\r\n 0x0b39,\r\n 0x0b3d,\r\n 0x0b3e,\r\n 0x0b40,\r\n 0x0b40,\r\n 0x0b47,\r\n 0x0b48,\r\n 0x0b4b,\r\n 0x0b4c,\r\n 0x0b57,\r\n 0x0b57,\r\n 0x0b5c,\r\n 0x0b5d,\r\n 0x0b5f,\r\n 0x0b61,\r\n 0x0b66,\r\n 0x0b70,\r\n 0x0b83,\r\n 0x0b83,\r\n 0x0b85,\r\n 0x0b8a,\r\n 0x0b8e,\r\n 0x0b90,\r\n 0x0b92,\r\n 0x0b95,\r\n 0x0b99,\r\n 0x0b9a,\r\n 0x0b9c,\r\n 0x0b9c,\r\n 0x0b9e,\r\n 0x0b9f,\r\n 0x0ba3,\r\n 0x0ba4,\r\n 0x0ba8,\r\n 0x0baa,\r\n 0x0bae,\r\n 0x0bb5,\r\n 0x0bb7,\r\n 0x0bb9,\r\n 0x0bbe,\r\n 0x0bbf,\r\n 0x0bc1,\r\n 0x0bc2,\r\n 0x0bc6,\r\n 0x0bc8,\r\n 0x0bca,\r\n 0x0bcc,\r\n 0x0bd7,\r\n 0x0bd7,\r\n 0x0be7,\r\n 0x0bf2,\r\n 0x0c01,\r\n 0x0c03,\r\n 0x0c05,\r\n 0x0c0c,\r\n 0x0c0e,\r\n 0x0c10,\r\n 0x0c12,\r\n 0x0c28,\r\n 0x0c2a,\r\n 0x0c33,\r\n 0x0c35,\r\n 0x0c39,\r\n 0x0c41,\r\n 0x0c44,\r\n 0x0c60,\r\n 0x0c61,\r\n 0x0c66,\r\n 0x0c6f,\r\n 0x0c82,\r\n 0x0c83,\r\n 0x0c85,\r\n 0x0c8c,\r\n 0x0c8e,\r\n 0x0c90,\r\n 0x0c92,\r\n 0x0ca8,\r\n 0x0caa,\r\n 0x0cb3,\r\n 0x0cb5,\r\n 0x0cb9,\r\n 0x0cbe,\r\n 0x0cbe,\r\n 0x0cc0,\r\n 0x0cc4,\r\n 0x0cc7,\r\n 0x0cc8,\r\n 0x0cca,\r\n 0x0ccb,\r\n 0x0cd5,\r\n 0x0cd6,\r\n 0x0cde,\r\n 0x0cde,\r\n 0x0ce0,\r\n 0x0ce1,\r\n 0x0ce6,\r\n 0x0cef,\r\n 0x0d02,\r\n 0x0d03,\r\n 0x0d05,\r\n 0x0d0c,\r\n 0x0d0e,\r\n 0x0d10,\r\n 0x0d12,\r\n 0x0d28,\r\n 0x0d2a,\r\n 0x0d39,\r\n 0x0d3e,\r\n 0x0d40,\r\n 0x0d46,\r\n 0x0d48,\r\n 0x0d4a,\r\n 0x0d4c,\r\n 0x0d57,\r\n 0x0d57,\r\n 0x0d60,\r\n 0x0d61,\r\n 0x0d66,\r\n 0x0d6f,\r\n 0x0d82,\r\n 0x0d83,\r\n 0x0d85,\r\n 0x0d96,\r\n 0x0d9a,\r\n 0x0db1,\r\n 0x0db3,\r\n 0x0dbb,\r\n 0x0dbd,\r\n 0x0dbd,\r\n 0x0dc0,\r\n 0x0dc6,\r\n 0x0dcf,\r\n 0x0dd1,\r\n 0x0dd8,\r\n 0x0ddf,\r\n 0x0df2,\r\n 0x0df4,\r\n 0x0e01,\r\n 0x0e30,\r\n 0x0e32,\r\n 0x0e33,\r\n 0x0e40,\r\n 0x0e46,\r\n 0x0e4f,\r\n 0x0e5b,\r\n 0x0e81,\r\n 0x0e82,\r\n 0x0e84,\r\n 0x0e84,\r\n 0x0e87,\r\n 0x0e88,\r\n 0x0e8a,\r\n 0x0e8a,\r\n 0x0e8d,\r\n 0x0e8d,\r\n 0x0e94,\r\n 0x0e97,\r\n 0x0e99,\r\n 0x0e9f,\r\n 0x0ea1,\r\n 0x0ea3,\r\n 0x0ea5,\r\n 0x0ea5,\r\n 0x0ea7,\r\n 0x0ea7,\r\n 0x0eaa,\r\n 0x0eab,\r\n 0x0ead,\r\n 0x0eb0,\r\n 0x0eb2,\r\n 0x0eb3,\r\n 0x0ebd,\r\n 0x0ebd,\r\n 0x0ec0,\r\n 0x0ec4,\r\n 0x0ec6,\r\n 0x0ec6,\r\n 0x0ed0,\r\n 0x0ed9,\r\n 0x0edc,\r\n 0x0edd,\r\n 0x0f00,\r\n 0x0f17,\r\n 0x0f1a,\r\n 0x0f34,\r\n 0x0f36,\r\n 0x0f36,\r\n 0x0f38,\r\n 0x0f38,\r\n 0x0f3e,\r\n 0x0f47,\r\n 0x0f49,\r\n 0x0f6a,\r\n 0x0f7f,\r\n 0x0f7f,\r\n 0x0f85,\r\n 0x0f85,\r\n 0x0f88,\r\n 0x0f8b,\r\n 0x0fbe,\r\n 0x0fc5,\r\n 0x0fc7,\r\n 0x0fcc,\r\n 0x0fcf,\r\n 0x0fcf,\r\n 0x1000,\r\n 0x1021,\r\n 0x1023,\r\n 0x1027,\r\n 0x1029,\r\n 0x102a,\r\n 0x102c,\r\n 0x102c,\r\n 0x1031,\r\n 0x1031,\r\n 0x1038,\r\n 0x1038,\r\n 0x1040,\r\n 0x1057,\r\n 0x10a0,\r\n 0x10c5,\r\n 0x10d0,\r\n 0x10f8,\r\n 0x10fb,\r\n 0x10fb,\r\n 0x1100,\r\n 0x1159,\r\n 0x115f,\r\n 0x11a2,\r\n 0x11a8,\r\n 0x11f9,\r\n 0x1200,\r\n 0x1206,\r\n 0x1208,\r\n 0x1246,\r\n 0x1248,\r\n 0x1248,\r\n 0x124a,\r\n 0x124d,\r\n 0x1250,\r\n 0x1256,\r\n 0x1258,\r\n 0x1258,\r\n 0x125a,\r\n 0x125d,\r\n 0x1260,\r\n 0x1286,\r\n 0x1288,\r\n 0x1288,\r\n 0x128a,\r\n 0x128d,\r\n 0x1290,\r\n 0x12ae,\r\n 0x12b0,\r\n 0x12b0,\r\n 0x12b2,\r\n 0x12b5,\r\n 0x12b8,\r\n 0x12be,\r\n 0x12c0,\r\n 0x12c0,\r\n 0x12c2,\r\n 0x12c5,\r\n 0x12c8,\r\n 0x12ce,\r\n 0x12d0,\r\n 0x12d6,\r\n 0x12d8,\r\n 0x12ee,\r\n 0x12f0,\r\n 0x130e,\r\n 0x1310,\r\n 0x1310,\r\n 0x1312,\r\n 0x1315,\r\n 0x1318,\r\n 0x131e,\r\n 0x1320,\r\n 0x1346,\r\n 0x1348,\r\n 0x135a,\r\n 0x1361,\r\n 0x137c,\r\n 0x13a0,\r\n 0x13f4,\r\n 0x1401,\r\n 0x1676,\r\n 0x1681,\r\n 0x169a,\r\n 0x16a0,\r\n 0x16f0,\r\n 0x1700,\r\n 0x170c,\r\n 0x170e,\r\n 0x1711,\r\n 0x1720,\r\n 0x1731,\r\n 0x1735,\r\n 0x1736,\r\n 0x1740,\r\n 0x1751,\r\n 0x1760,\r\n 0x176c,\r\n 0x176e,\r\n 0x1770,\r\n 0x1780,\r\n 0x17b6,\r\n 0x17be,\r\n 0x17c5,\r\n 0x17c7,\r\n 0x17c8,\r\n 0x17d4,\r\n 0x17da,\r\n 0x17dc,\r\n 0x17dc,\r\n 0x17e0,\r\n 0x17e9,\r\n 0x1810,\r\n 0x1819,\r\n 0x1820,\r\n 0x1877,\r\n 0x1880,\r\n 0x18a8,\r\n 0x1e00,\r\n 0x1e9b,\r\n 0x1ea0,\r\n 0x1ef9,\r\n 0x1f00,\r\n 0x1f15,\r\n 0x1f18,\r\n 0x1f1d,\r\n 0x1f20,\r\n 0x1f45,\r\n 0x1f48,\r\n 0x1f4d,\r\n 0x1f50,\r\n 0x1f57,\r\n 0x1f59,\r\n 0x1f59,\r\n 0x1f5b,\r\n 0x1f5b,\r\n 0x1f5d,\r\n 0x1f5d,\r\n 0x1f5f,\r\n 0x1f7d,\r\n 0x1f80,\r\n 0x1fb4,\r\n 0x1fb6,\r\n 0x1fbc,\r\n 0x1fbe,\r\n 0x1fbe,\r\n 0x1fc2,\r\n 0x1fc4,\r\n 0x1fc6,\r\n 0x1fcc,\r\n 0x1fd0,\r\n 0x1fd3,\r\n 0x1fd6,\r\n 0x1fdb,\r\n 0x1fe0,\r\n 0x1fec,\r\n 0x1ff2,\r\n 0x1ff4,\r\n 0x1ff6,\r\n 0x1ffc,\r\n 0x200e,\r\n 0x200e,\r\n 0x2071,\r\n 0x2071,\r\n 0x207f,\r\n 0x207f,\r\n 0x2102,\r\n 0x2102,\r\n 0x2107,\r\n 0x2107,\r\n 0x210a,\r\n 0x2113,\r\n 0x2115,\r\n 0x2115,\r\n 0x2119,\r\n 0x211d,\r\n 0x2124,\r\n 0x2124,\r\n 0x2126,\r\n 0x2126,\r\n 0x2128,\r\n 0x2128,\r\n 0x212a,\r\n 0x212d,\r\n 0x212f,\r\n 0x2131,\r\n 0x2133,\r\n 0x2139,\r\n 0x213d,\r\n 0x213f,\r\n 0x2145,\r\n 0x2149,\r\n 0x2160,\r\n 0x2183,\r\n 0x2336,\r\n 0x237a,\r\n 0x2395,\r\n 0x2395,\r\n 0x249c,\r\n 0x24e9,\r\n 0x3005,\r\n 0x3007,\r\n 0x3021,\r\n 0x3029,\r\n 0x3031,\r\n 0x3035,\r\n 0x3038,\r\n 0x303c,\r\n 0x3041,\r\n 0x3096,\r\n 0x309d,\r\n 0x309f,\r\n 0x30a1,\r\n 0x30fa,\r\n 0x30fc,\r\n 0x30ff,\r\n 0x3105,\r\n 0x312c,\r\n 0x3131,\r\n 0x318e,\r\n 0x3190,\r\n 0x31b7,\r\n 0x31f0,\r\n 0x321c,\r\n 0x3220,\r\n 0x3243,\r\n 0x3260,\r\n 0x327b,\r\n 0x327f,\r\n 0x32b0,\r\n 0x32c0,\r\n 0x32cb,\r\n 0x32d0,\r\n 0x32fe,\r\n 0x3300,\r\n 0x3376,\r\n 0x337b,\r\n 0x33dd,\r\n 0x33e0,\r\n 0x33fe,\r\n 0x3400,\r\n 0x4db5,\r\n 0x4e00,\r\n 0x9fa5,\r\n 0xa000,\r\n 0xa48c,\r\n 0xac00,\r\n 0xd7a3,\r\n 0xd800,\r\n 0xfa2d,\r\n 0xfa30,\r\n 0xfa6a,\r\n 0xfb00,\r\n 0xfb06,\r\n 0xfb13,\r\n 0xfb17,\r\n 0xff21,\r\n 0xff3a,\r\n 0xff41,\r\n 0xff5a,\r\n 0xff66,\r\n 0xffbe,\r\n 0xffc2,\r\n 0xffc7,\r\n 0xffca,\r\n 0xffcf,\r\n 0xffd2,\r\n 0xffd7,\r\n 0xffda,\r\n 0xffdc,\r\n 0x10300,\r\n 0x1031e,\r\n 0x10320,\r\n 0x10323,\r\n 0x10330,\r\n 0x1034a,\r\n 0x10400,\r\n 0x10425,\r\n 0x10428,\r\n 0x1044d,\r\n 0x1d000,\r\n 0x1d0f5,\r\n 0x1d100,\r\n 0x1d126,\r\n 0x1d12a,\r\n 0x1d166,\r\n 0x1d16a,\r\n 0x1d172,\r\n 0x1d183,\r\n 0x1d184,\r\n 0x1d18c,\r\n 0x1d1a9,\r\n 0x1d1ae,\r\n 0x1d1dd,\r\n 0x1d400,\r\n 0x1d454,\r\n 0x1d456,\r\n 0x1d49c,\r\n 0x1d49e,\r\n 0x1d49f,\r\n 0x1d4a2,\r\n 0x1d4a2,\r\n 0x1d4a5,\r\n 0x1d4a6,\r\n 0x1d4a9,\r\n 0x1d4ac,\r\n 0x1d4ae,\r\n 0x1d4b9,\r\n 0x1d4bb,\r\n 0x1d4bb,\r\n 0x1d4bd,\r\n 0x1d4c0,\r\n 0x1d4c2,\r\n 0x1d4c3,\r\n 0x1d4c5,\r\n 0x1d505,\r\n 0x1d507,\r\n 0x1d50a,\r\n 0x1d50d,\r\n 0x1d514,\r\n 0x1d516,\r\n 0x1d51c,\r\n 0x1d51e,\r\n 0x1d539,\r\n 0x1d53b,\r\n 0x1d53e,\r\n 0x1d540,\r\n 0x1d544,\r\n 0x1d546,\r\n 0x1d546,\r\n 0x1d54a,\r\n 0x1d550,\r\n 0x1d552,\r\n 0x1d6a3,\r\n 0x1d6a8,\r\n 0x1d7c9,\r\n 0x20000,\r\n 0x2a6d6,\r\n 0x2f800,\r\n 0x2fa1d,\r\n 0xf0000,\r\n 0xffffd,\r\n 0x100000,\r\n 0x10fffd\r\n];\r\n// prettier-ignore-end\r\n\r\nconst isBidirectionalL = character => inRange(character, bidirectional_l);\r\n\r\nexport {\r\n isUnassignedCodePoint,\r\n isCommonlyMappedToNothing,\r\n isNonASCIISpaceCharacter,\r\n isProhibitedCharacter,\r\n isBidirectionalRAL,\r\n isBidirectionalL\r\n};\r\n","import {\r\n isUnassignedCodePoint,\r\n isCommonlyMappedToNothing,\r\n isNonASCIISpaceCharacter,\r\n isProhibitedCharacter,\r\n isBidirectionalRAL,\r\n isBidirectionalL\r\n} from './lib/code-points';\r\n\r\n// 2.1. Mapping\r\n\r\n/**\r\n * non-ASCII space characters [StringPrep, C.1.2] that can be\r\n * mapped to SPACE (U+0020)\r\n */\r\nconst mapping2space = isNonASCIISpaceCharacter;\r\n\r\n/**\r\n * the \"commonly mapped to nothing\" characters [StringPrep, B.1]\r\n * that can be mapped to nothing.\r\n */\r\nconst mapping2nothing = isCommonlyMappedToNothing;\r\n\r\n// utils\r\nconst getCodePoint = character => character.codePointAt(0);\r\nconst first = x => x[0];\r\nconst last = x => x[x.length - 1];\r\n\r\n/**\r\n * Convert provided string into an array of Unicode Code Points.\r\n * Based on https://stackoverflow.com/a/21409165/1556249\r\n * and https://www.npmjs.com/package/code-point-at.\r\n * @param {string} input\r\n * @returns {number[]}\r\n */\r\nfunction toCodePoints(input) {\r\n const codepoints = [];\r\n const size = input.length;\r\n\r\n for (let i = 0; i < size; i += 1) {\r\n const before = input.charCodeAt(i);\r\n\r\n if (before >= 0xd800 && before <= 0xdbff && size > i + 1) {\r\n const next = input.charCodeAt(i + 1);\r\n\r\n if (next >= 0xdc00 && next <= 0xdfff) {\r\n codepoints.push((before - 0xd800) * 0x400 + next - 0xdc00 + 0x10000);\r\n i += 1;\r\n continue;\r\n }\r\n }\r\n\r\n codepoints.push(before);\r\n }\r\n\r\n return codepoints;\r\n}\r\n\r\n/**\r\n * SASLprep.\r\n * @param {string} input\r\n * @param {Object} opts\r\n * @param {boolean} opts.allowUnassigned\r\n * @returns {string}\r\n */\r\nfunction saslprep(input, opts = {}) {\r\n if (typeof input !== 'string') {\r\n throw new TypeError('Expected string.');\r\n }\r\n\r\n if (input.length === 0) {\r\n return '';\r\n }\r\n\r\n // 1. Map\r\n const mapped_input = toCodePoints(input)\r\n // 1.1 mapping to space\r\n .map(character => (mapping2space(character) ? 0x20 : character))\r\n // 1.2 mapping to nothing\r\n .filter(character => !mapping2nothing(character));\r\n\r\n // 2. Normalize\r\n const normalized_input = String.fromCodePoint\r\n .apply(null, mapped_input)\r\n .normalize('NFKC');\r\n\r\n const normalized_map = toCodePoints(normalized_input);\r\n\r\n // 3. Prohibit\r\n const hasProhibited = normalized_map.some(isProhibitedCharacter);\r\n\r\n if (hasProhibited) {\r\n throw new Error(\r\n 'Prohibited character, see https://tools.ietf.org/html/rfc4013#section-2.3'\r\n );\r\n }\r\n\r\n // Unassigned Code Points\r\n if (opts.allowUnassigned !== true) {\r\n const hasUnassigned = normalized_map.some(isUnassignedCodePoint);\r\n\r\n if (hasUnassigned) {\r\n throw new Error(\r\n 'Unassigned code point, see https://tools.ietf.org/html/rfc4013#section-2.5'\r\n );\r\n }\r\n }\r\n\r\n // 4. check bidi\r\n\r\n const hasBidiRAL = normalized_map.some(isBidirectionalRAL);\r\n\r\n const hasBidiL = normalized_map.some(isBidirectionalL);\r\n\r\n // 4.1 If a string contains any RandALCat character, the string MUST NOT\r\n // contain any LCat character.\r\n if (hasBidiRAL && hasBidiL) {\r\n throw new Error(\r\n 'String must not contain RandALCat and LCat at the same time,' +\r\n ' see https://tools.ietf.org/html/rfc3454#section-6'\r\n );\r\n }\r\n\r\n /**\r\n * 4.2 If a string contains any RandALCat character, a RandALCat\r\n * character MUST be the first character of the string, and a\r\n * RandALCat character MUST be the last character of the string.\r\n */\r\n\r\n const isFirstBidiRAL = isBidirectionalRAL(\r\n getCodePoint(first(normalized_input))\r\n );\r\n const isLastBidiRAL = isBidirectionalRAL(\r\n getCodePoint(last(normalized_input))\r\n );\r\n\r\n if (hasBidiRAL && !(isFirstBidiRAL && isLastBidiRAL)) {\r\n throw new Error(\r\n 'Bidirectional RandALCat character must be the first and the last' +\r\n ' character of the string, see https://tools.ietf.org/html/rfc3454#section-6'\r\n );\r\n }\r\n\r\n return normalized_input;\r\n}\r\n\r\nexport default saslprep;\r\n","/*\r\n PDFSecurity - represents PDF security settings\r\n By Yang Liu <hi@zesik.com>\r\n */\r\n\r\nimport CryptoJS from 'crypto-js';\r\nimport saslprep from './saslprep/index';\r\n\r\nclass PDFSecurity {\r\n static generateFileID(info = {}) {\r\n let infoStr = `${info.CreationDate.getTime()}\\n`;\r\n\r\n for (let key in info) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!info.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n infoStr += `${key}: ${info[key].valueOf()}\\n`;\r\n }\r\n\r\n return wordArrayToBuffer(CryptoJS.MD5(infoStr));\r\n }\r\n\r\n static generateRandomWordArray(bytes) {\r\n return CryptoJS.lib.WordArray.random(bytes);\r\n }\r\n\r\n static create(document, options = {}) {\r\n if (!options.ownerPassword && !options.userPassword) {\r\n return null;\r\n }\r\n return new PDFSecurity(document, options);\r\n }\r\n\r\n constructor(document, options = {}) {\r\n if (!options.ownerPassword && !options.userPassword) {\r\n throw new Error('None of owner password and user password is defined.');\r\n }\r\n\r\n this.document = document;\r\n this._setupEncryption(options);\r\n }\r\n\r\n _setupEncryption(options) {\r\n switch (options.pdfVersion) {\r\n case '1.4':\r\n case '1.5':\r\n this.version = 2;\r\n break;\r\n case '1.6':\r\n case '1.7':\r\n this.version = 4;\r\n break;\r\n case '1.7ext3':\r\n this.version = 5;\r\n break;\r\n default:\r\n this.version = 1;\r\n break;\r\n }\r\n\r\n const encDict = {\r\n Filter: 'Standard'\r\n };\r\n\r\n switch (this.version) {\r\n case 1:\r\n case 2:\r\n case 4:\r\n this._setupEncryptionV1V2V4(this.version, encDict, options);\r\n break;\r\n case 5:\r\n this._setupEncryptionV5(encDict, options);\r\n break;\r\n }\r\n\r\n this.dictionary = this.document.ref(encDict);\r\n }\r\n\r\n _setupEncryptionV1V2V4(v, encDict, options) {\r\n let r, permissions;\r\n switch (v) {\r\n case 1:\r\n r = 2;\r\n this.keyBits = 40;\r\n permissions = getPermissionsR2(options.permissions);\r\n break;\r\n case 2:\r\n r = 3;\r\n this.keyBits = 128;\r\n permissions = getPermissionsR3(options.permissions);\r\n break;\r\n case 4:\r\n r = 4;\r\n this.keyBits = 128;\r\n permissions = getPermissionsR3(options.permissions);\r\n break;\r\n }\r\n\r\n const paddedUserPassword = processPasswordR2R3R4(options.userPassword);\r\n const paddedOwnerPassword = options.ownerPassword\r\n ? processPasswordR2R3R4(options.ownerPassword)\r\n : paddedUserPassword;\r\n\r\n const ownerPasswordEntry = getOwnerPasswordR2R3R4(\r\n r,\r\n this.keyBits,\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n );\r\n this.encryptionKey = getEncryptionKeyR2R3R4(\r\n r,\r\n this.keyBits,\r\n this.document._id,\r\n paddedUserPassword,\r\n ownerPasswordEntry,\r\n permissions\r\n );\r\n let userPasswordEntry;\r\n if (r === 2) {\r\n userPasswordEntry = getUserPasswordR2(this.encryptionKey);\r\n } else {\r\n userPasswordEntry = getUserPasswordR3R4(\r\n this.document._id,\r\n this.encryptionKey\r\n );\r\n }\r\n\r\n encDict.V = v;\r\n if (v >= 2) {\r\n encDict.Length = this.keyBits;\r\n }\r\n if (v === 4) {\r\n encDict.CF = {\r\n StdCF: {\r\n AuthEvent: 'DocOpen',\r\n CFM: 'AESV2',\r\n Length: this.keyBits / 8\r\n }\r\n };\r\n encDict.StmF = 'StdCF';\r\n encDict.StrF = 'StdCF';\r\n }\r\n encDict.R = r;\r\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n encDict.P = permissions;\r\n }\r\n\r\n _setupEncryptionV5(encDict, options) {\r\n this.keyBits = 256;\r\n const permissions = getPermissionsR3(options.permissions);\r\n\r\n const processedUserPassword = processPasswordR5(options.userPassword);\r\n const processedOwnerPassword = options.ownerPassword\r\n ? processPasswordR5(options.ownerPassword)\r\n : processedUserPassword;\r\n\r\n this.encryptionKey = getEncryptionKeyR5(\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const userPasswordEntry = getUserPasswordR5(\r\n processedUserPassword,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const userKeySalt = CryptoJS.lib.WordArray.create(\r\n userPasswordEntry.words.slice(10, 12),\r\n 8\r\n );\r\n const userEncryptionKeyEntry = getUserEncryptionKeyR5(\r\n processedUserPassword,\r\n userKeySalt,\r\n this.encryptionKey\r\n );\r\n const ownerPasswordEntry = getOwnerPasswordR5(\r\n processedOwnerPassword,\r\n userPasswordEntry,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n const ownerKeySalt = CryptoJS.lib.WordArray.create(\r\n ownerPasswordEntry.words.slice(10, 12),\r\n 8\r\n );\r\n const ownerEncryptionKeyEntry = getOwnerEncryptionKeyR5(\r\n processedOwnerPassword,\r\n ownerKeySalt,\r\n userPasswordEntry,\r\n this.encryptionKey\r\n );\r\n const permsEntry = getEncryptedPermissionsR5(\r\n permissions,\r\n this.encryptionKey,\r\n PDFSecurity.generateRandomWordArray\r\n );\r\n\r\n encDict.V = 5;\r\n encDict.Length = this.keyBits;\r\n encDict.CF = {\r\n StdCF: {\r\n AuthEvent: 'DocOpen',\r\n CFM: 'AESV3',\r\n Length: this.keyBits / 8\r\n }\r\n };\r\n encDict.StmF = 'StdCF';\r\n encDict.StrF = 'StdCF';\r\n encDict.R = 5;\r\n encDict.O = wordArrayToBuffer(ownerPasswordEntry);\r\n encDict.OE = wordArrayToBuffer(ownerEncryptionKeyEntry);\r\n encDict.U = wordArrayToBuffer(userPasswordEntry);\r\n encDict.UE = wordArrayToBuffer(userEncryptionKeyEntry);\r\n encDict.P = permissions;\r\n encDict.Perms = wordArrayToBuffer(permsEntry);\r\n }\r\n\r\n getEncryptFn(obj, gen) {\r\n let digest;\r\n if (this.version < 5) {\r\n digest = this.encryptionKey\r\n .clone()\r\n .concat(\r\n CryptoJS.lib.WordArray.create(\r\n [\r\n ((obj & 0xff) << 24) |\r\n ((obj & 0xff00) << 8) |\r\n ((obj >> 8) & 0xff00) |\r\n (gen & 0xff),\r\n (gen & 0xff00) << 16\r\n ],\r\n 5\r\n )\r\n );\r\n }\r\n\r\n if (this.version === 1 || this.version === 2) {\r\n let key = CryptoJS.MD5(digest);\r\n key.sigBytes = Math.min(16, this.keyBits / 8 + 5);\r\n return buffer =>\r\n wordArrayToBuffer(\r\n CryptoJS.RC4.encrypt(CryptoJS.lib.WordArray.create(buffer), key)\r\n .ciphertext\r\n );\r\n }\r\n\r\n let key;\r\n if (this.version === 4) {\r\n key = CryptoJS.MD5(\r\n digest.concat(CryptoJS.lib.WordArray.create([0x73416c54], 4))\r\n );\r\n } else {\r\n key = this.encryptionKey;\r\n }\r\n\r\n const iv = PDFSecurity.generateRandomWordArray(16);\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7,\r\n iv\r\n };\r\n\r\n return buffer =>\r\n wordArrayToBuffer(\r\n iv\r\n .clone()\r\n .concat(\r\n CryptoJS.AES.encrypt(\r\n CryptoJS.lib.WordArray.create(buffer),\r\n key,\r\n options\r\n ).ciphertext\r\n )\r\n );\r\n }\r\n\r\n end() {\r\n this.dictionary.end();\r\n }\r\n}\r\n\r\nfunction getPermissionsR2(permissionObject = {}) {\r\n let permissions = 0xffffffc0 >> 0;\r\n if (permissionObject.printing) {\r\n permissions |= 0b000000000100;\r\n }\r\n if (permissionObject.modifying) {\r\n permissions |= 0b000000001000;\r\n }\r\n if (permissionObject.copying) {\r\n permissions |= 0b000000010000;\r\n }\r\n if (permissionObject.annotating) {\r\n permissions |= 0b000000100000;\r\n }\r\n return permissions;\r\n}\r\n\r\nfunction getPermissionsR3(permissionObject = {}) {\r\n let permissions = 0xfffff0c0 >> 0;\r\n if (permissionObject.printing === 'lowResolution') {\r\n permissions |= 0b000000000100;\r\n }\r\n if (permissionObject.printing === 'highResolution') {\r\n permissions |= 0b100000000100;\r\n }\r\n if (permissionObject.modifying) {\r\n permissions |= 0b000000001000;\r\n }\r\n if (permissionObject.copying) {\r\n permissions |= 0b000000010000;\r\n }\r\n if (permissionObject.annotating) {\r\n permissions |= 0b000000100000;\r\n }\r\n if (permissionObject.fillingForms) {\r\n permissions |= 0b000100000000;\r\n }\r\n if (permissionObject.contentAccessibility) {\r\n permissions |= 0b001000000000;\r\n }\r\n if (permissionObject.documentAssembly) {\r\n permissions |= 0b010000000000;\r\n }\r\n return permissions;\r\n}\r\n\r\nfunction getUserPasswordR2(encryptionKey) {\r\n return CryptoJS.RC4.encrypt(processPasswordR2R3R4(), encryptionKey)\r\n .ciphertext;\r\n}\r\n\r\nfunction getUserPasswordR3R4(documentId, encryptionKey) {\r\n const key = encryptionKey.clone();\r\n let cipher = CryptoJS.MD5(\r\n processPasswordR2R3R4().concat(CryptoJS.lib.WordArray.create(documentId))\r\n );\r\n for (let i = 0; i < 20; i++) {\r\n const xorRound = Math.ceil(key.sigBytes / 4);\r\n for (let j = 0; j < xorRound; j++) {\r\n key.words[j] =\r\n encryptionKey.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n }\r\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n }\r\n return cipher.concat(CryptoJS.lib.WordArray.create(null, 16));\r\n}\r\n\r\nfunction getOwnerPasswordR2R3R4(\r\n r,\r\n keyBits,\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n) {\r\n let digest = paddedOwnerPassword;\r\n let round = r >= 3 ? 51 : 1;\r\n for (let i = 0; i < round; i++) {\r\n digest = CryptoJS.MD5(digest);\r\n }\r\n\r\n const key = digest.clone();\r\n key.sigBytes = keyBits / 8;\r\n let cipher = paddedUserPassword;\r\n round = r >= 3 ? 20 : 1;\r\n for (let i = 0; i < round; i++) {\r\n const xorRound = Math.ceil(key.sigBytes / 4);\r\n for (let j = 0; j < xorRound; j++) {\r\n key.words[j] = digest.words[j] ^ (i | (i << 8) | (i << 16) | (i << 24));\r\n }\r\n cipher = CryptoJS.RC4.encrypt(cipher, key).ciphertext;\r\n }\r\n return cipher;\r\n}\r\n\r\nfunction getEncryptionKeyR2R3R4(\r\n r,\r\n keyBits,\r\n documentId,\r\n paddedUserPassword,\r\n ownerPasswordEntry,\r\n permissions\r\n) {\r\n let key = paddedUserPassword\r\n .clone()\r\n .concat(ownerPasswordEntry)\r\n .concat(CryptoJS.lib.WordArray.create([lsbFirstWord(permissions)], 4))\r\n .concat(CryptoJS.lib.WordArray.create(documentId));\r\n const round = r >= 3 ? 51 : 1;\r\n for (let i = 0; i < round; i++) {\r\n key = CryptoJS.MD5(key);\r\n key.sigBytes = keyBits / 8;\r\n }\r\n return key;\r\n}\r\n\r\nfunction getUserPasswordR5(processedUserPassword, generateRandomWordArray) {\r\n const validationSalt = generateRandomWordArray(8);\r\n const keySalt = generateRandomWordArray(8);\r\n return CryptoJS.SHA256(processedUserPassword.clone().concat(validationSalt))\r\n .concat(validationSalt)\r\n .concat(keySalt);\r\n}\r\n\r\nfunction getUserEncryptionKeyR5(\r\n processedUserPassword,\r\n userKeySalt,\r\n encryptionKey\r\n) {\r\n const key = CryptoJS.SHA256(\r\n processedUserPassword.clone().concat(userKeySalt)\r\n );\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.NoPadding,\r\n iv: CryptoJS.lib.WordArray.create(null, 16)\r\n };\r\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getOwnerPasswordR5(\r\n processedOwnerPassword,\r\n userPasswordEntry,\r\n generateRandomWordArray\r\n) {\r\n const validationSalt = generateRandomWordArray(8);\r\n const keySalt = generateRandomWordArray(8);\r\n return CryptoJS.SHA256(\r\n processedOwnerPassword\r\n .clone()\r\n .concat(validationSalt)\r\n .concat(userPasswordEntry)\r\n )\r\n .concat(validationSalt)\r\n .concat(keySalt);\r\n}\r\n\r\nfunction getOwnerEncryptionKeyR5(\r\n processedOwnerPassword,\r\n ownerKeySalt,\r\n userPasswordEntry,\r\n encryptionKey\r\n) {\r\n const key = CryptoJS.SHA256(\r\n processedOwnerPassword\r\n .clone()\r\n .concat(ownerKeySalt)\r\n .concat(userPasswordEntry)\r\n );\r\n const options = {\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.NoPadding,\r\n iv: CryptoJS.lib.WordArray.create(null, 16)\r\n };\r\n return CryptoJS.AES.encrypt(encryptionKey, key, options).ciphertext;\r\n}\r\n\r\nfunction getEncryptionKeyR5(generateRandomWordArray) {\r\n return generateRandomWordArray(32);\r\n}\r\n\r\nfunction getEncryptedPermissionsR5(\r\n permissions,\r\n encryptionKey,\r\n generateRandomWordArray\r\n) {\r\n const cipher = CryptoJS.lib.WordArray.create(\r\n [lsbFirstWord(permissions), 0xffffffff, 0x54616462],\r\n 12\r\n ).concat(generateRandomWordArray(4));\r\n const options = {\r\n mode: CryptoJS.mode.ECB,\r\n padding: CryptoJS.pad.NoPadding\r\n };\r\n return CryptoJS.AES.encrypt(cipher, encryptionKey, options).ciphertext;\r\n}\r\n\r\nfunction processPasswordR2R3R4(password = '') {\r\n const out = Buffer.alloc(32);\r\n const length = password.length;\r\n let index = 0;\r\n while (index < length && index < 32) {\r\n const code = password.charCodeAt(index);\r\n if (code > 0xff) {\r\n throw new Error('Password contains one or more invalid characters.');\r\n }\r\n out[index] = code;\r\n index++;\r\n }\r\n while (index < 32) {\r\n out[index] = PASSWORD_PADDING[index - length];\r\n index++;\r\n }\r\n return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction processPasswordR5(password = '') {\r\n password = unescape(encodeURIComponent(saslprep(password)));\r\n const length = Math.min(127, password.length);\r\n const out = Buffer.alloc(length);\r\n\r\n for (let i = 0; i < length; i++) {\r\n out[i] = password.charCodeAt(i);\r\n }\r\n\r\n return CryptoJS.lib.WordArray.create(out);\r\n}\r\n\r\nfunction lsbFirstWord(data) {\r\n return (\r\n ((data & 0xff) << 24) |\r\n ((data & 0xff00) << 8) |\r\n ((data >> 8) & 0xff00) |\r\n ((data >> 24) & 0xff)\r\n );\r\n}\r\n\r\nfunction wordArrayToBuffer(wordArray) {\r\n const byteArray = [];\r\n for (let i = 0; i < wordArray.sigBytes; i++) {\r\n byteArray.push(\r\n (wordArray.words[Math.floor(i / 4)] >> (8 * (3 - (i % 4)))) & 0xff\r\n );\r\n }\r\n return Buffer.from(byteArray);\r\n}\r\n\r\nconst PASSWORD_PADDING = [\r\n 0x28,\r\n 0xbf,\r\n 0x4e,\r\n 0x5e,\r\n 0x4e,\r\n 0x75,\r\n 0x8a,\r\n 0x41,\r\n 0x64,\r\n 0x00,\r\n 0x4e,\r\n 0x56,\r\n 0xff,\r\n 0xfa,\r\n 0x01,\r\n 0x08,\r\n 0x2e,\r\n 0x2e,\r\n 0x00,\r\n 0xb6,\r\n 0xd0,\r\n 0x68,\r\n 0x3e,\r\n 0x80,\r\n 0x2f,\r\n 0x0c,\r\n 0xa9,\r\n 0xfe,\r\n 0x64,\r\n 0x53,\r\n 0x69,\r\n 0x7a\r\n];\r\n\r\nexport default PDFSecurity;\r\n","import PDFObject from './object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nclass PDFGradient {\r\n constructor(doc) {\r\n this.doc = doc;\r\n this.stops = [];\r\n this.embedded = false;\r\n this.transform = [1, 0, 0, 1, 0, 0];\r\n }\r\n\r\n stop(pos, color, opacity) {\r\n if (opacity == null) {\r\n opacity = 1;\r\n }\r\n color = this.doc._normalizeColor(color);\r\n\r\n if (this.stops.length === 0) {\r\n if (color.length === 3) {\r\n this._colorSpace = 'DeviceRGB';\r\n } else if (color.length === 4) {\r\n this._colorSpace = 'DeviceCMYK';\r\n } else if (color.length === 1) {\r\n this._colorSpace = 'DeviceGray';\r\n } else {\r\n throw new Error('Unknown color space');\r\n }\r\n } else if (\r\n (this._colorSpace === 'DeviceRGB' && color.length !== 3) ||\r\n (this._colorSpace === 'DeviceCMYK' && color.length !== 4) ||\r\n (this._colorSpace === 'DeviceGray' && color.length !== 1)\r\n ) {\r\n throw new Error('All gradient stops must use the same color space');\r\n }\r\n\r\n opacity = Math.max(0, Math.min(1, opacity));\r\n this.stops.push([pos, color, opacity]);\r\n return this;\r\n }\r\n\r\n setTransform(m11, m12, m21, m22, dx, dy) {\r\n this.transform = [m11, m12, m21, m22, dx, dy];\r\n return this;\r\n }\r\n\r\n embed(m) {\r\n let fn;\r\n const stopsLength = this.stops.length;\r\n if (stopsLength === 0) {\r\n return;\r\n }\r\n this.embedded = true;\r\n this.matrix = m;\r\n\r\n // if the last stop comes before 100%, add a copy at 100%\r\n const last = this.stops[stopsLength - 1];\r\n if (last[0] < 1) {\r\n this.stops.push([1, last[1], last[2]]);\r\n }\r\n\r\n const bounds = [];\r\n const encode = [];\r\n const stops = [];\r\n\r\n for (let i = 0; i < stopsLength - 1; i++) {\r\n encode.push(0, 1);\r\n if (i + 2 !== stopsLength) {\r\n bounds.push(this.stops[i + 1][0]);\r\n }\r\n\r\n fn = this.doc.ref({\r\n FunctionType: 2,\r\n Domain: [0, 1],\r\n C0: this.stops[i + 0][1],\r\n C1: this.stops[i + 1][1],\r\n N: 1\r\n });\r\n\r\n stops.push(fn);\r\n fn.end();\r\n }\r\n\r\n // if there are only two stops, we don't need a stitching function\r\n if (stopsLength === 1) {\r\n fn = stops[0];\r\n } else {\r\n fn = this.doc.ref({\r\n FunctionType: 3, // stitching function\r\n Domain: [0, 1],\r\n Functions: stops,\r\n Bounds: bounds,\r\n Encode: encode\r\n });\r\n\r\n fn.end();\r\n }\r\n\r\n this.id = `Sh${++this.doc._gradCount}`;\r\n\r\n const shader = this.shader(fn);\r\n shader.end();\r\n\r\n const pattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 2,\r\n Shading: shader,\r\n Matrix: this.matrix.map(number)\r\n });\r\n\r\n pattern.end();\r\n\r\n if (this.stops.some(stop => stop[2] < 1)) {\r\n let grad = this.opacityGradient();\r\n grad._colorSpace = 'DeviceGray';\r\n\r\n for (let stop of this.stops) {\r\n grad.stop(stop[0], [stop[2]]);\r\n }\r\n\r\n grad = grad.embed(this.matrix);\r\n\r\n const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\r\n\r\n const form = this.doc.ref({\r\n Type: 'XObject',\r\n Subtype: 'Form',\r\n FormType: 1,\r\n BBox: pageBBox,\r\n Group: {\r\n Type: 'Group',\r\n S: 'Transparency',\r\n CS: 'DeviceGray'\r\n },\r\n Resources: {\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n Pattern: {\r\n Sh1: grad\r\n }\r\n }\r\n });\r\n\r\n form.write('/Pattern cs /Sh1 scn');\r\n form.end(`${pageBBox.join(' ')} re f`);\r\n\r\n const gstate = this.doc.ref({\r\n Type: 'ExtGState',\r\n SMask: {\r\n Type: 'Mask',\r\n S: 'Luminosity',\r\n G: form\r\n }\r\n });\r\n\r\n gstate.end();\r\n\r\n const opacityPattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 1,\r\n PaintType: 1,\r\n TilingType: 2,\r\n BBox: pageBBox,\r\n XStep: pageBBox[2],\r\n YStep: pageBBox[3],\r\n Resources: {\r\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\r\n Pattern: {\r\n Sh1: pattern\r\n },\r\n ExtGState: {\r\n Gs1: gstate\r\n }\r\n }\r\n });\r\n\r\n opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\r\n opacityPattern.end(`${pageBBox.join(' ')} re f`);\r\n\r\n this.doc.page.patterns[this.id] = opacityPattern;\r\n } else {\r\n this.doc.page.patterns[this.id] = pattern;\r\n }\r\n\r\n return pattern;\r\n }\r\n\r\n apply(stroke) {\r\n // apply gradient transform to existing document ctm\r\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n const [m11, m12, m21, m22, dx, dy] = this.transform;\r\n const m = [\r\n m0 * m11 + m2 * m12,\r\n m1 * m11 + m3 * m12,\r\n m0 * m21 + m2 * m22,\r\n m1 * m21 + m3 * m22,\r\n m0 * dx + m2 * dy + m4,\r\n m1 * dx + m3 * dy + m5\r\n ];\r\n\r\n if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\r\n this.embed(m);\r\n }\r\n this.doc._setColorSpace('Pattern', stroke);\r\n const op = stroke ? 'SCN' : 'scn';\r\n return this.doc.addContent(`/${this.id} ${op}`);\r\n }\r\n}\r\n\r\nclass PDFLinearGradient extends PDFGradient {\r\n constructor(doc, x1, y1, x2, y2) {\r\n super(doc);\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n }\r\n\r\n shader(fn) {\r\n return this.doc.ref({\r\n ShadingType: 2,\r\n ColorSpace: this._colorSpace,\r\n Coords: [this.x1, this.y1, this.x2, this.y2],\r\n Function: fn,\r\n Extend: [true, true]\r\n });\r\n }\r\n\r\n opacityGradient() {\r\n return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\r\n }\r\n}\r\n\r\nclass PDFRadialGradient extends PDFGradient {\r\n constructor(doc, x1, y1, r1, x2, y2, r2) {\r\n super(doc);\r\n this.doc = doc;\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.r1 = r1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n this.r2 = r2;\r\n }\r\n\r\n shader(fn) {\r\n return this.doc.ref({\r\n ShadingType: 3,\r\n ColorSpace: this._colorSpace,\r\n Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\r\n Function: fn,\r\n Extend: [true, true]\r\n });\r\n }\r\n\r\n opacityGradient() {\r\n return new PDFRadialGradient(\r\n this.doc,\r\n this.x1,\r\n this.y1,\r\n this.r1,\r\n this.x2,\r\n this.y2,\r\n this.r2\r\n );\r\n }\r\n}\r\n\r\nexport default { PDFGradient, PDFLinearGradient, PDFRadialGradient };\r\n","/*\r\nPDF tiling pattern support. Uncolored only.\r\n */\r\n\r\nconst underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];\r\n\r\nclass PDFTilingPattern {\r\n constructor(doc, bBox, xStep, yStep, stream) {\r\n this.doc = doc;\r\n this.bBox = bBox;\r\n this.xStep = xStep;\r\n this.yStep = yStep;\r\n this.stream = stream;\r\n }\r\n\r\n createPattern() {\r\n // no resources needed for our current usage\r\n // required entry\r\n const resources = this.doc.ref();\r\n resources.end();\r\n // apply default transform matrix (flipped in the default doc._ctm)\r\n // see document.js & gradient.js\r\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\r\n const [m11, m12, m21, m22, dx, dy] = [1, 0, 0, 1, 0, 0];\r\n const m = [\r\n m0 * m11 + m2 * m12,\r\n m1 * m11 + m3 * m12,\r\n m0 * m21 + m2 * m22,\r\n m1 * m21 + m3 * m22,\r\n m0 * dx + m2 * dy + m4,\r\n m1 * dx + m3 * dy + m5\r\n ];\r\n const pattern = this.doc.ref({\r\n Type: 'Pattern',\r\n PatternType: 1, // tiling\r\n PaintType: 2, // 1-colored, 2-uncolored\r\n TilingType: 2, // 2-no distortion\r\n BBox: this.bBox,\r\n XStep: this.xStep,\r\n YStep: this.yStep,\r\n Matrix: m.map(v => +v.toFixed(5)),\r\n Resources: resources\r\n });\r\n pattern.end(this.stream);\r\n return pattern;\r\n }\r\n\r\n embedPatternColorSpaces() {\r\n // map each pattern to an underlying color space\r\n // and embed on each page\r\n underlyingColorSpaces.forEach(csName => {\r\n const csId = this.getPatternColorSpaceId(csName);\r\n\r\n if (this.doc.page.colorSpaces[csId]) return;\r\n const cs = this.doc.ref(['Pattern', csName]);\r\n cs.end();\r\n this.doc.page.colorSpaces[csId] = cs;\r\n });\r\n }\r\n\r\n getPatternColorSpaceId(underlyingColorspace) {\r\n return `CsP${underlyingColorspace}`;\r\n }\r\n\r\n embed() {\r\n if (!this.id) {\r\n this.doc._patternCount = this.doc._patternCount + 1;\r\n this.id = 'P' + this.doc._patternCount;\r\n this.pattern = this.createPattern();\r\n }\r\n\r\n // patterns are embedded in each page\r\n if (!this.doc.page.patterns[this.id]) {\r\n this.doc.page.patterns[this.id] = this.pattern;\r\n }\r\n }\r\n\r\n apply(stroke, patternColor) {\r\n // do any embedding/creating that might be needed\r\n this.embedPatternColorSpaces();\r\n this.embed();\r\n\r\n const normalizedColor = this.doc._normalizeColor(patternColor);\r\n if (!normalizedColor)\r\n throw Error(`invalid pattern color. (value: ${patternColor})`);\r\n\r\n // select one of the pattern color spaces\r\n const csId = this.getPatternColorSpaceId(\r\n this.doc._getColorSpace(normalizedColor)\r\n );\r\n this.doc._setColorSpace(csId, stroke);\r\n\r\n // stroke/fill using the pattern and color (in the above underlying color space)\r\n const op = stroke ? 'SCN' : 'scn';\r\n return this.doc.addContent(\r\n `${normalizedColor.join(' ')} /${this.id} ${op}`\r\n );\r\n }\r\n}\r\n\r\nexport default { PDFTilingPattern };\r\n","import Gradient from '../gradient';\r\nimport pattern from '../pattern';\r\nimport SpotColor from '../spotcolor';\r\n\r\nconst { PDFGradient, PDFLinearGradient, PDFRadialGradient } = Gradient;\r\nconst { PDFTilingPattern } = pattern;\r\n\r\nexport default {\r\n initColor() {\r\n this.spotColors = {};\r\n // The opacity dictionaries\r\n this._opacityRegistry = {};\r\n this._opacityCount = 0;\r\n this._patternCount = 0;\r\n return (this._gradCount = 0);\r\n },\r\n\r\n _normalizeColor(color) {\r\n if (typeof color === 'string') {\r\n if (color.charAt(0) === '#') {\r\n if (color.length === 4) {\r\n color = color.replace(\r\n /#([0-9A-F])([0-9A-F])([0-9A-F])/i,\r\n '#$1$1$2$2$3$3'\r\n );\r\n }\r\n const hex = parseInt(color.slice(1), 16);\r\n color = [hex >> 16, (hex >> 8) & 0xff, hex & 0xff];\r\n } else if (namedColors[color]) {\r\n color = namedColors[color];\r\n } else if (this.spotColors[color]) {\r\n return this.spotColors[color];\r\n }\r\n }\r\n\r\n if (Array.isArray(color)) {\r\n // RGB\r\n if (color.length === 3) {\r\n color = color.map(part => part / 255);\r\n // CMYK\r\n } else if (color.length === 4) {\r\n color = color.map(part => part / 100);\r\n }\r\n return color;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n _setColor(color, stroke) {\r\n if (color instanceof PDFGradient) {\r\n color.apply(stroke);\r\n return true;\r\n // see if tiling pattern, decode & apply it it\r\n } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern) {\r\n color[0].apply(stroke, color[1]);\r\n return true;\r\n }\r\n // any other case should be a normal color and not a pattern\r\n return this._setColorCore(color, stroke);\r\n },\r\n\r\n _setColorCore(color, stroke) {\r\n color = this._normalizeColor(color);\r\n if (!color) {\r\n return false;\r\n }\r\n\r\n const op = stroke ? 'SCN' : 'scn';\r\n const space = this._getColorSpace(color);\r\n this._setColorSpace(space, stroke);\r\n\r\n if (color instanceof SpotColor) {\r\n this.page.colorSpaces[color.id] = color.ref;\r\n this.addContent(`1 ${op}`);\r\n } else {\r\n this.addContent(`${color.join(' ')} ${op}`);\r\n }\r\n\r\n return true;\r\n },\r\n\r\n _setColorSpace(space, stroke) {\r\n const op = stroke ? 'CS' : 'cs';\r\n return this.addContent(`/${space} ${op}`);\r\n },\r\n\r\n _getColorSpace(color) {\r\n if (color instanceof SpotColor) {\r\n return color.id;\r\n }\r\n\r\n return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\r\n },\r\n\r\n fillColor(color, opacity) {\r\n const set = this._setColor(color, false);\r\n if (set) {\r\n this.fillOpacity(opacity);\r\n }\r\n\r\n // save this for text wrapper, which needs to reset\r\n // the fill color on new pages\r\n this._fillColor = [color, opacity];\r\n return this;\r\n },\r\n\r\n strokeColor(color, opacity) {\r\n const set = this._setColor(color, true);\r\n if (set) {\r\n this.strokeOpacity(opacity);\r\n }\r\n return this;\r\n },\r\n\r\n opacity(opacity) {\r\n this._doOpacity(opacity, opacity);\r\n return this;\r\n },\r\n\r\n fillOpacity(opacity) {\r\n this._doOpacity(opacity, null);\r\n return this;\r\n },\r\n\r\n strokeOpacity(opacity) {\r\n this._doOpacity(null, opacity);\r\n return this;\r\n },\r\n\r\n _doOpacity(fillOpacity, strokeOpacity) {\r\n let dictionary, name;\r\n if (fillOpacity == null && strokeOpacity == null) {\r\n return;\r\n }\r\n\r\n if (fillOpacity != null) {\r\n fillOpacity = Math.max(0, Math.min(1, fillOpacity));\r\n }\r\n if (strokeOpacity != null) {\r\n strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\r\n }\r\n const key = `${fillOpacity}_${strokeOpacity}`;\r\n\r\n if (this._opacityRegistry[key]) {\r\n [dictionary, name] = this._opacityRegistry[key];\r\n } else {\r\n dictionary = { Type: 'ExtGState' };\r\n\r\n if (fillOpacity != null) {\r\n dictionary.ca = fillOpacity;\r\n }\r\n if (strokeOpacity != null) {\r\n dictionary.CA = strokeOpacity;\r\n }\r\n\r\n dictionary = this.ref(dictionary);\r\n dictionary.end();\r\n const id = ++this._opacityCount;\r\n name = `Gs${id}`;\r\n this._opacityRegistry[key] = [dictionary, name];\r\n }\r\n\r\n this.page.ext_gstates[name] = dictionary;\r\n return this.addContent(`/${name} gs`);\r\n },\r\n\r\n linearGradient(x1, y1, x2, y2) {\r\n return new PDFLinearGradient(this, x1, y1, x2, y2);\r\n },\r\n\r\n radialGradient(x1, y1, r1, x2, y2, r2) {\r\n return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);\r\n },\r\n\r\n pattern(bbox, xStep, yStep, stream) {\r\n return new PDFTilingPattern(this, bbox, xStep, yStep, stream);\r\n },\r\n\r\n addSpotColor(name, C, M, Y, K) {\r\n const color = new SpotColor(this, name, C, M, Y, K);\r\n this.spotColors[name] = color;\r\n return this;\r\n }\r\n};\r\n\r\nvar namedColors = {\r\n aliceblue: [240, 248, 255],\r\n antiquewhite: [250, 235, 215],\r\n aqua: [0, 255, 255],\r\n aquamarine: [127, 255, 212],\r\n azure: [240, 255, 255],\r\n beige: [245, 245, 220],\r\n bisque: [255, 228, 196],\r\n black: [0, 0, 0],\r\n blanchedalmond: [255, 235, 205],\r\n blue: [0, 0, 255],\r\n blueviolet: [138, 43, 226],\r\n brown: [165, 42, 42],\r\n burlywood: [222, 184, 135],\r\n cadetblue: [95, 158, 160],\r\n chartreuse: [127, 255, 0],\r\n chocolate: [210, 105, 30],\r\n coral: [255, 127, 80],\r\n cornflowerblue: [100, 149, 237],\r\n cornsilk: [255, 248, 220],\r\n crimson: [220, 20, 60],\r\n cyan: [0, 255, 255],\r\n darkblue: [0, 0, 139],\r\n darkcyan: [0, 139, 139],\r\n darkgoldenrod: [184, 134, 11],\r\n darkgray: [169, 169, 169],\r\n darkgreen: [0, 100, 0],\r\n darkgrey: [169, 169, 169],\r\n darkkhaki: [189, 183, 107],\r\n darkmagenta: [139, 0, 139],\r\n darkolivegreen: [85, 107, 47],\r\n darkorange: [255, 140, 0],\r\n darkorchid: [153, 50, 204],\r\n darkred: [139, 0, 0],\r\n darksalmon: [233, 150, 122],\r\n darkseagreen: [143, 188, 143],\r\n darkslateblue: [72, 61, 139],\r\n darkslategray: [47, 79, 79],\r\n darkslategrey: [47, 79, 79],\r\n darkturquoise: [0, 206, 209],\r\n darkviolet: [148, 0, 211],\r\n deeppink: [255, 20, 147],\r\n deepskyblue: [0, 191, 255],\r\n dimgray: [105, 105, 105],\r\n dimgrey: [105, 105, 105],\r\n dodgerblue: [30, 144, 255],\r\n firebrick: [178, 34, 34],\r\n floralwhite: [255, 250, 240],\r\n forestgreen: [34, 139, 34],\r\n fuchsia: [255, 0, 255],\r\n gainsboro: [220, 220, 220],\r\n ghostwhite: [248, 248, 255],\r\n gold: [255, 215, 0],\r\n goldenrod: [218, 165, 32],\r\n gray: [128, 128, 128],\r\n grey: [128, 128, 128],\r\n green: [0, 128, 0],\r\n greenyellow: [173, 255, 47],\r\n honeydew: [240, 255, 240],\r\n hotpink: [255, 105, 180],\r\n indianred: [205, 92, 92],\r\n indigo: [75, 0, 130],\r\n ivory: [255, 255, 240],\r\n khaki: [240, 230, 140],\r\n lavender: [230, 230, 250],\r\n lavenderblush: [255, 240, 245],\r\n lawngreen: [124, 252, 0],\r\n lemonchiffon: [255, 250, 205],\r\n lightblue: [173, 216, 230],\r\n lightcoral: [240, 128, 128],\r\n lightcyan: [224, 255, 255],\r\n lightgoldenrodyellow: [250, 250, 210],\r\n lightgray: [211, 211, 211],\r\n lightgreen: [144, 238, 144],\r\n lightgrey: [211, 211, 211],\r\n lightpink: [255, 182, 193],\r\n lightsalmon: [255, 160, 122],\r\n lightseagreen: [32, 178, 170],\r\n lightskyblue: [135, 206, 250],\r\n lightslategray: [119, 136, 153],\r\n lightslategrey: [119, 136, 153],\r\n lightsteelblue: [176, 196, 222],\r\n lightyellow: [255, 255, 224],\r\n lime: [0, 255, 0],\r\n limegreen: [50, 205, 50],\r\n linen: [250, 240, 230],\r\n magenta: [255, 0, 255],\r\n maroon: [128, 0, 0],\r\n mediumaquamarine: [102, 205, 170],\r\n mediumblue: [0, 0, 205],\r\n mediumorchid: [186, 85, 211],\r\n mediumpurple: [147, 112, 219],\r\n mediumseagreen: [60, 179, 113],\r\n mediumslateblue: [123, 104, 238],\r\n mediumspringgreen: [0, 250, 154],\r\n mediumturquoise: [72, 209, 204],\r\n mediumvioletred: [199, 21, 133],\r\n midnightblue: [25, 25, 112],\r\n mintcream: [245, 255, 250],\r\n mistyrose: [255, 228, 225],\r\n moccasin: [255, 228, 181],\r\n navajowhite: [255, 222, 173],\r\n navy: [0, 0, 128],\r\n oldlace: [253, 245, 230],\r\n olive: [128, 128, 0],\r\n olivedrab: [107, 142, 35],\r\n orange: [255, 165, 0],\r\n orangered: [255, 69, 0],\r\n orchid: [218, 112, 214],\r\n palegoldenrod: [238, 232, 170],\r\n palegreen: [152, 251, 152],\r\n paleturquoise: [175, 238, 238],\r\n palevioletred: [219, 112, 147],\r\n papayawhip: [255, 239, 213],\r\n peachpuff: [255, 218, 185],\r\n peru: [205, 133, 63],\r\n pink: [255, 192, 203],\r\n plum: [221, 160, 221],\r\n powderblue: [176, 224, 230],\r\n purple: [128, 0, 128],\r\n red: [255, 0, 0],\r\n rosybrown: [188, 143, 143],\r\n royalblue: [65, 105, 225],\r\n saddlebrown: [139, 69, 19],\r\n salmon: [250, 128, 114],\r\n sandybrown: [244, 164, 96],\r\n seagreen: [46, 139, 87],\r\n seashell: [255, 245, 238],\r\n sienna: [160, 82, 45],\r\n silver: [192, 192, 192],\r\n skyblue: [135, 206, 235],\r\n slateblue: [106, 90, 205],\r\n slategray: [112, 128, 144],\r\n slategrey: [112, 128, 144],\r\n snow: [255, 250, 250],\r\n springgreen: [0, 255, 127],\r\n steelblue: [70, 130, 180],\r\n tan: [210, 180, 140],\r\n teal: [0, 128, 128],\r\n thistle: [216, 191, 216],\r\n tomato: [255, 99, 71],\r\n turquoise: [64, 224, 208],\r\n violet: [238, 130, 238],\r\n wheat: [245, 222, 179],\r\n white: [255, 255, 255],\r\n whitesmoke: [245, 245, 245],\r\n yellow: [255, 255, 0],\r\n yellowgreen: [154, 205, 50]\r\n};\r\n","let cx, cy, px, py, sx, sy;\r\n\r\ncx = cy = px = py = sx = sy = 0;\r\n\r\nconst parameters = {\r\n A: 7,\r\n a: 7,\r\n C: 6,\r\n c: 6,\r\n H: 1,\r\n h: 1,\r\n L: 2,\r\n l: 2,\r\n M: 2,\r\n m: 2,\r\n Q: 4,\r\n q: 4,\r\n S: 4,\r\n s: 4,\r\n T: 2,\r\n t: 2,\r\n V: 1,\r\n v: 1,\r\n Z: 0,\r\n z: 0\r\n};\r\n\r\nconst parse = function(path) {\r\n let cmd;\r\n const ret = [];\r\n let args = [];\r\n let curArg = '';\r\n let foundDecimal = false;\r\n let params = 0;\r\n\r\n for (let c of path) {\r\n if (parameters[c] != null) {\r\n params = parameters[c];\r\n if (cmd) {\r\n // save existing command\r\n if (curArg.length > 0) {\r\n args[args.length] = +curArg;\r\n }\r\n ret[ret.length] = { cmd, args };\r\n\r\n args = [];\r\n curArg = '';\r\n foundDecimal = false;\r\n }\r\n\r\n cmd = c;\r\n } else if (\r\n [' ', ','].includes(c) ||\r\n (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\r\n (c === '.' && foundDecimal)\r\n ) {\r\n if (curArg.length === 0) {\r\n continue;\r\n }\r\n\r\n if (args.length === params) {\r\n // handle reused commands\r\n ret[ret.length] = { cmd, args };\r\n args = [+curArg];\r\n\r\n // handle assumed commands\r\n if (cmd === 'M') {\r\n cmd = 'L';\r\n }\r\n if (cmd === 'm') {\r\n cmd = 'l';\r\n }\r\n } else {\r\n args[args.length] = +curArg;\r\n }\r\n\r\n foundDecimal = c === '.';\r\n\r\n // fix for negative numbers or repeated decimals with no delimeter between commands\r\n curArg = ['-', '.'].includes(c) ? c : '';\r\n } else {\r\n curArg += c;\r\n if (c === '.') {\r\n foundDecimal = true;\r\n }\r\n }\r\n }\r\n\r\n // add the last command\r\n if (curArg.length > 0) {\r\n if (args.length === params) {\r\n // handle reused commands\r\n ret[ret.length] = { cmd, args };\r\n args = [+curArg];\r\n\r\n // handle assumed commands\r\n if (cmd === 'M') {\r\n cmd = 'L';\r\n }\r\n if (cmd === 'm') {\r\n cmd = 'l';\r\n }\r\n } else {\r\n args[args.length] = +curArg;\r\n }\r\n }\r\n\r\n ret[ret.length] = { cmd, args };\r\n\r\n return ret;\r\n};\r\n\r\nconst apply = function(commands, doc) {\r\n // current point, control point, and subpath starting point\r\n cx = cy = px = py = sx = sy = 0;\r\n\r\n // run the commands\r\n for (let i = 0; i < commands.length; i++) {\r\n const c = commands[i];\r\n if (typeof runners[c.cmd] === 'function') {\r\n runners[c.cmd](doc, c.args);\r\n }\r\n }\r\n};\r\n\r\nconst runners = {\r\n M(doc, a) {\r\n cx = a[0];\r\n cy = a[1];\r\n px = py = null;\r\n sx = cx;\r\n sy = cy;\r\n return doc.moveTo(cx, cy);\r\n },\r\n\r\n m(doc, a) {\r\n cx += a[0];\r\n cy += a[1];\r\n px = py = null;\r\n sx = cx;\r\n sy = cy;\r\n return doc.moveTo(cx, cy);\r\n },\r\n\r\n C(doc, a) {\r\n cx = a[4];\r\n cy = a[5];\r\n px = a[2];\r\n py = a[3];\r\n return doc.bezierCurveTo(...a);\r\n },\r\n\r\n c(doc, a) {\r\n doc.bezierCurveTo(\r\n a[0] + cx,\r\n a[1] + cy,\r\n a[2] + cx,\r\n a[3] + cy,\r\n a[4] + cx,\r\n a[5] + cy\r\n );\r\n px = cx + a[2];\r\n py = cy + a[3];\r\n cx += a[4];\r\n return (cy += a[5]);\r\n },\r\n\r\n S(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n }\r\n\r\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\r\n px = a[0];\r\n py = a[1];\r\n cx = a[2];\r\n return (cy = a[3]);\r\n },\r\n\r\n s(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n }\r\n\r\n doc.bezierCurveTo(\r\n cx - (px - cx),\r\n cy - (py - cy),\r\n cx + a[0],\r\n cy + a[1],\r\n cx + a[2],\r\n cy + a[3]\r\n );\r\n px = cx + a[0];\r\n py = cy + a[1];\r\n cx += a[2];\r\n return (cy += a[3]);\r\n },\r\n\r\n Q(doc, a) {\r\n px = a[0];\r\n py = a[1];\r\n cx = a[2];\r\n cy = a[3];\r\n return doc.quadraticCurveTo(a[0], a[1], cx, cy);\r\n },\r\n\r\n q(doc, a) {\r\n doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\r\n px = cx + a[0];\r\n py = cy + a[1];\r\n cx += a[2];\r\n return (cy += a[3]);\r\n },\r\n\r\n T(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n } else {\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n }\r\n\r\n doc.quadraticCurveTo(px, py, a[0], a[1]);\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n cx = a[0];\r\n return (cy = a[1]);\r\n },\r\n\r\n t(doc, a) {\r\n if (px === null) {\r\n px = cx;\r\n py = cy;\r\n } else {\r\n px = cx - (px - cx);\r\n py = cy - (py - cy);\r\n }\r\n\r\n doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\r\n cx += a[0];\r\n return (cy += a[1]);\r\n },\r\n\r\n A(doc, a) {\r\n solveArc(doc, cx, cy, a);\r\n cx = a[5];\r\n return (cy = a[6]);\r\n },\r\n\r\n a(doc, a) {\r\n a[5] += cx;\r\n a[6] += cy;\r\n solveArc(doc, cx, cy, a);\r\n cx = a[5];\r\n return (cy = a[6]);\r\n },\r\n\r\n L(doc, a) {\r\n cx = a[0];\r\n cy = a[1];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n l(doc, a) {\r\n cx += a[0];\r\n cy += a[1];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n H(doc, a) {\r\n cx = a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n h(doc, a) {\r\n cx += a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n V(doc, a) {\r\n cy = a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n v(doc, a) {\r\n cy += a[0];\r\n px = py = null;\r\n return doc.lineTo(cx, cy);\r\n },\r\n\r\n Z(doc) {\r\n doc.closePath();\r\n cx = sx;\r\n return (cy = sy);\r\n },\r\n\r\n z(doc) {\r\n doc.closePath();\r\n cx = sx;\r\n return (cy = sy);\r\n }\r\n};\r\n\r\nconst solveArc = function(doc, x, y, coords) {\r\n const [rx, ry, rot, large, sweep, ex, ey] = coords;\r\n const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\r\n\r\n for (let seg of segs) {\r\n const bez = segmentToBezier(...seg);\r\n doc.bezierCurveTo(...bez);\r\n }\r\n};\r\n\r\n// from Inkscape svgtopdf, thanks!\r\nconst arcToSegments = function(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\r\n const th = rotateX * (Math.PI / 180);\r\n const sin_th = Math.sin(th);\r\n const cos_th = Math.cos(th);\r\n rx = Math.abs(rx);\r\n ry = Math.abs(ry);\r\n px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\r\n py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\r\n let pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\r\n if (pl > 1) {\r\n pl = Math.sqrt(pl);\r\n rx *= pl;\r\n ry *= pl;\r\n }\r\n\r\n const a00 = cos_th / rx;\r\n const a01 = sin_th / rx;\r\n const a10 = -sin_th / ry;\r\n const a11 = cos_th / ry;\r\n const x0 = a00 * ox + a01 * oy;\r\n const y0 = a10 * ox + a11 * oy;\r\n const x1 = a00 * x + a01 * y;\r\n const y1 = a10 * x + a11 * y;\r\n\r\n const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\r\n let sfactor_sq = 1 / d - 0.25;\r\n if (sfactor_sq < 0) {\r\n sfactor_sq = 0;\r\n }\r\n let sfactor = Math.sqrt(sfactor_sq);\r\n if (sweep === large) {\r\n sfactor = -sfactor;\r\n }\r\n\r\n const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\r\n const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\r\n\r\n const th0 = Math.atan2(y0 - yc, x0 - xc);\r\n const th1 = Math.atan2(y1 - yc, x1 - xc);\r\n\r\n let th_arc = th1 - th0;\r\n if (th_arc < 0 && sweep === 1) {\r\n th_arc += 2 * Math.PI;\r\n } else if (th_arc > 0 && sweep === 0) {\r\n th_arc -= 2 * Math.PI;\r\n }\r\n\r\n const segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\r\n const result = [];\r\n\r\n for (let i = 0; i < segments; i++) {\r\n const th2 = th0 + (i * th_arc) / segments;\r\n const th3 = th0 + ((i + 1) * th_arc) / segments;\r\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst segmentToBezier = function(cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\r\n const a00 = cos_th * rx;\r\n const a01 = -sin_th * ry;\r\n const a10 = sin_th * rx;\r\n const a11 = cos_th * ry;\r\n\r\n const th_half = 0.5 * (th1 - th0);\r\n const t =\r\n ((8 / 3) * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5)) /\r\n Math.sin(th_half);\r\n const x1 = cx + Math.cos(th0) - t * Math.sin(th0);\r\n const y1 = cy + Math.sin(th0) + t * Math.cos(th0);\r\n const x3 = cx + Math.cos(th1);\r\n const y3 = cy + Math.sin(th1);\r\n const x2 = x3 + t * Math.sin(th1);\r\n const y2 = y3 - t * Math.cos(th1);\r\n\r\n return [\r\n a00 * x1 + a01 * y1,\r\n a10 * x1 + a11 * y1,\r\n a00 * x2 + a01 * y2,\r\n a10 * x2 + a11 * y2,\r\n a00 * x3 + a01 * y3,\r\n a10 * x3 + a11 * y3\r\n ];\r\n};\r\n\r\nclass SVGPath {\r\n static apply(doc, path) {\r\n const commands = parse(path);\r\n apply(commands, doc);\r\n }\r\n}\r\n\r\nexport default SVGPath;\r\n","import SVGPath from '../path';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\n// This constant is used to approximate a symmetrical arc using a cubic\r\n// Bezier curve.\r\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\r\nexport default {\r\n initVector() {\r\n this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\r\n return (this._ctmStack = []);\r\n },\r\n\r\n save() {\r\n this._ctmStack.push(this._ctm.slice());\r\n // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\r\n return this.addContent('q');\r\n },\r\n\r\n restore() {\r\n this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\r\n return this.addContent('Q');\r\n },\r\n\r\n closePath() {\r\n return this.addContent('h');\r\n },\r\n\r\n lineWidth(w) {\r\n return this.addContent(`${number(w)} w`);\r\n },\r\n\r\n _CAP_STYLES: {\r\n BUTT: 0,\r\n ROUND: 1,\r\n SQUARE: 2\r\n },\r\n\r\n lineCap(c) {\r\n if (typeof c === 'string') {\r\n c = this._CAP_STYLES[c.toUpperCase()];\r\n }\r\n return this.addContent(`${c} J`);\r\n },\r\n\r\n _JOIN_STYLES: {\r\n MITER: 0,\r\n ROUND: 1,\r\n BEVEL: 2\r\n },\r\n\r\n lineJoin(j) {\r\n if (typeof j === 'string') {\r\n j = this._JOIN_STYLES[j.toUpperCase()];\r\n }\r\n return this.addContent(`${j} j`);\r\n },\r\n\r\n miterLimit(m) {\r\n return this.addContent(`${number(m)} M`);\r\n },\r\n\r\n dash(length, options = {}) {\r\n const originalLength = length;\r\n if (!Array.isArray(length)) {\r\n length = [length, options.space || length];\r\n }\r\n\r\n const valid = length.every(x => Number.isFinite(x) && x > 0);\r\n if (!valid) {\r\n throw new Error(\r\n `dash(${JSON.stringify(originalLength)}, ${JSON.stringify(\r\n options\r\n )}) invalid, lengths must be numeric and greater than zero`\r\n );\r\n }\r\n\r\n length = length.map(number).join(' ');\r\n return this.addContent(`[${length}] ${number(options.phase || 0)} d`);\r\n },\r\n\r\n undash() {\r\n return this.addContent('[] 0 d');\r\n },\r\n\r\n moveTo(x, y) {\r\n return this.addContent(`${number(x)} ${number(y)} m`);\r\n },\r\n\r\n lineTo(x, y) {\r\n return this.addContent(`${number(x)} ${number(y)} l`);\r\n },\r\n\r\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n return this.addContent(\r\n `${number(cp1x)} ${number(cp1y)} ${number(cp2x)} ${number(cp2y)} ${number(\r\n x\r\n )} ${number(y)} c`\r\n );\r\n },\r\n\r\n quadraticCurveTo(cpx, cpy, x, y) {\r\n return this.addContent(\r\n `${number(cpx)} ${number(cpy)} ${number(x)} ${number(y)} v`\r\n );\r\n },\r\n\r\n rect(x, y, w, h) {\r\n return this.addContent(\r\n `${number(x)} ${number(y)} ${number(w)} ${number(h)} re`\r\n );\r\n },\r\n\r\n roundedRect(x, y, w, h, r) {\r\n if (r == null) {\r\n r = 0;\r\n }\r\n r = Math.min(r, 0.5 * w, 0.5 * h);\r\n\r\n // amount to inset control points from corners (see `ellipse`)\r\n const c = r * (1.0 - KAPPA);\r\n\r\n this.moveTo(x + r, y);\r\n this.lineTo(x + w - r, y);\r\n this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\r\n this.lineTo(x + w, y + h - r);\r\n this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\r\n this.lineTo(x + r, y + h);\r\n this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\r\n this.lineTo(x, y + r);\r\n this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\r\n return this.closePath();\r\n },\r\n\r\n ellipse(x, y, r1, r2) {\r\n // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\r\n if (r2 == null) {\r\n r2 = r1;\r\n }\r\n x -= r1;\r\n y -= r2;\r\n const ox = r1 * KAPPA;\r\n const oy = r2 * KAPPA;\r\n const xe = x + r1 * 2;\r\n const ye = y + r2 * 2;\r\n const xm = x + r1;\r\n const ym = y + r2;\r\n\r\n this.moveTo(x, ym);\r\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\r\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\r\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\r\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\r\n return this.closePath();\r\n },\r\n\r\n circle(x, y, radius) {\r\n return this.ellipse(x, y, radius);\r\n },\r\n\r\n arc(x, y, radius, startAngle, endAngle, anticlockwise) {\r\n if (anticlockwise == null) {\r\n anticlockwise = false;\r\n }\r\n const TWO_PI = 2.0 * Math.PI;\r\n const HALF_PI = 0.5 * Math.PI;\r\n\r\n let deltaAng = endAngle - startAngle;\r\n\r\n if (Math.abs(deltaAng) > TWO_PI) {\r\n // draw only full circle if more than that is specified\r\n deltaAng = TWO_PI;\r\n } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\r\n // necessary to flip direction of rendering\r\n const dir = anticlockwise ? -1 : 1;\r\n deltaAng = dir * TWO_PI + deltaAng;\r\n }\r\n\r\n const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\r\n const segAng = deltaAng / numSegs;\r\n const handleLen = (segAng / HALF_PI) * KAPPA * radius;\r\n let curAng = startAngle;\r\n\r\n // component distances between anchor point and control point\r\n let deltaCx = -Math.sin(curAng) * handleLen;\r\n let deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n // anchor point\r\n let ax = x + Math.cos(curAng) * radius;\r\n let ay = y + Math.sin(curAng) * radius;\r\n\r\n // calculate and render segments\r\n this.moveTo(ax, ay);\r\n\r\n for (let segIdx = 0; segIdx < numSegs; segIdx++) {\r\n // starting control point\r\n const cp1x = ax + deltaCx;\r\n const cp1y = ay + deltaCy;\r\n\r\n // step angle\r\n curAng += segAng;\r\n\r\n // next anchor point\r\n ax = x + Math.cos(curAng) * radius;\r\n ay = y + Math.sin(curAng) * radius;\r\n\r\n // next control point delta\r\n deltaCx = -Math.sin(curAng) * handleLen;\r\n deltaCy = Math.cos(curAng) * handleLen;\r\n\r\n // ending control point\r\n const cp2x = ax - deltaCx;\r\n const cp2y = ay - deltaCy;\r\n\r\n // render segment\r\n this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n polygon(...points) {\r\n this.moveTo(...(points.shift() || []));\r\n for (let point of points) {\r\n this.lineTo(...(point || []));\r\n }\r\n return this.closePath();\r\n },\r\n\r\n path(path) {\r\n SVGPath.apply(this, path);\r\n return this;\r\n },\r\n\r\n _windingRule(rule) {\r\n if (/even-?odd/.test(rule)) {\r\n return '*';\r\n }\r\n\r\n return '';\r\n },\r\n\r\n fill(color, rule) {\r\n if (/(even-?odd)|(non-?zero)/.test(color)) {\r\n rule = color;\r\n color = null;\r\n }\r\n\r\n if (color) {\r\n this.fillColor(color);\r\n }\r\n return this.addContent(`f${this._windingRule(rule)}`);\r\n },\r\n\r\n stroke(color) {\r\n if (color) {\r\n this.strokeColor(color);\r\n }\r\n return this.addContent('S');\r\n },\r\n\r\n fillAndStroke(fillColor, strokeColor, rule) {\r\n if (strokeColor == null) {\r\n strokeColor = fillColor;\r\n }\r\n const isFillRule = /(even-?odd)|(non-?zero)/;\r\n if (isFillRule.test(fillColor)) {\r\n rule = fillColor;\r\n fillColor = null;\r\n }\r\n\r\n if (isFillRule.test(strokeColor)) {\r\n rule = strokeColor;\r\n strokeColor = fillColor;\r\n }\r\n\r\n if (fillColor) {\r\n this.fillColor(fillColor);\r\n this.strokeColor(strokeColor);\r\n }\r\n\r\n return this.addContent(`B${this._windingRule(rule)}`);\r\n },\r\n\r\n clip(rule) {\r\n return this.addContent(`W${this._windingRule(rule)} n`);\r\n },\r\n\r\n transform(m11, m12, m21, m22, dx, dy) {\r\n // keep track of the current transformation matrix\r\n if (m11 === 1 && m12 === 0 && m21 === 0 && m22 === 1 && dx === 0 && dy === 0) {\r\n // Ignore identity transforms\r\n return this;\r\n }\r\n const m = this._ctm;\r\n const [m0, m1, m2, m3, m4, m5] = m;\r\n m[0] = m0 * m11 + m2 * m12;\r\n m[1] = m1 * m11 + m3 * m12;\r\n m[2] = m0 * m21 + m2 * m22;\r\n m[3] = m1 * m21 + m3 * m22;\r\n m[4] = m0 * dx + m2 * dy + m4;\r\n m[5] = m1 * dx + m3 * dy + m5;\r\n\r\n const values = [m11, m12, m21, m22, dx, dy].map(v => number(v)).join(' ');\r\n return this.addContent(`${values} cm`);\r\n },\r\n\r\n translate(x, y) {\r\n return this.transform(1, 0, 0, 1, x, y);\r\n },\r\n\r\n rotate(angle, options = {}) {\r\n let y;\r\n const rad = (angle * Math.PI) / 180;\r\n const cos = Math.cos(rad);\r\n const sin = Math.sin(rad);\r\n let x = (y = 0);\r\n\r\n if (options.origin != null) {\r\n [x, y] = options.origin;\r\n const x1 = x * cos - y * sin;\r\n const y1 = x * sin + y * cos;\r\n x -= x1;\r\n y -= y1;\r\n }\r\n\r\n return this.transform(cos, sin, -sin, cos, x, y);\r\n },\r\n\r\n scale(xFactor, yFactor, options = {}) {\r\n let y;\r\n if (yFactor == null) {\r\n yFactor = xFactor;\r\n }\r\n if (typeof yFactor === 'object') {\r\n options = yFactor;\r\n yFactor = xFactor;\r\n }\r\n\r\n let x = (y = 0);\r\n if (options.origin != null) {\r\n [x, y] = options.origin;\r\n x -= xFactor * x;\r\n y -= yFactor * y;\r\n }\r\n\r\n return this.transform(xFactor, 0, 0, yFactor, x, y);\r\n }\r\n};\r\n","import fs from 'fs';\r\n\r\nconst WIN_ANSI_MAP = {\r\n 402: 131,\r\n 8211: 150,\r\n 8212: 151,\r\n 8216: 145,\r\n 8217: 146,\r\n 8218: 130,\r\n 8220: 147,\r\n 8221: 148,\r\n 8222: 132,\r\n 8224: 134,\r\n 8225: 135,\r\n 8226: 149,\r\n 8230: 133,\r\n 8364: 128,\r\n 8240: 137,\r\n 8249: 139,\r\n 8250: 155,\r\n 710: 136,\r\n 8482: 153,\r\n 338: 140,\r\n 339: 156,\r\n 732: 152,\r\n 352: 138,\r\n 353: 154,\r\n 376: 159,\r\n 381: 142,\r\n 382: 158\r\n};\r\n\r\nconst characters = `\\\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n.notdef .notdef .notdef .notdef\r\n \r\nspace exclam quotedbl numbersign\r\ndollar percent ampersand quotesingle\r\nparenleft parenright asterisk plus\r\ncomma hyphen period slash\r\nzero one two three\r\nfour five six seven\r\neight nine colon semicolon\r\nless equal greater question\r\n \r\nat A B C\r\nD E F G\r\nH I J K\r\nL M N O\r\nP Q R S\r\nT U V W\r\nX Y Z bracketleft\r\nbackslash bracketright asciicircum underscore\r\n \r\ngrave a b c\r\nd e f g\r\nh i j k\r\nl m n o\r\np q r s\r\nt u v w\r\nx y z braceleft\r\nbar braceright asciitilde .notdef\r\n \r\nEuro .notdef quotesinglbase florin\r\nquotedblbase ellipsis dagger daggerdbl\r\ncircumflex perthousand Scaron guilsinglleft\r\nOE .notdef Zcaron .notdef\r\n.notdef quoteleft quoteright quotedblleft\r\nquotedblright bullet endash emdash\r\ntilde trademark scaron guilsinglright\r\noe .notdef zcaron ydieresis\r\n \r\nspace exclamdown cent sterling\r\ncurrency yen brokenbar section\r\ndieresis copyright ordfeminine guillemotleft\r\nlogicalnot hyphen registered macron\r\ndegree plusminus twosuperior threesuperior\r\nacute mu paragraph periodcentered\r\ncedilla onesuperior ordmasculine guillemotright\r\nonequarter onehalf threequarters questiondown\r\n \r\nAgrave Aacute Acircumflex Atilde\r\nAdieresis Aring AE Ccedilla\r\nEgrave Eacute Ecircumflex Edieresis\r\nIgrave Iacute Icircumflex Idieresis\r\nEth Ntilde Ograve Oacute\r\nOcircumflex Otilde Odieresis multiply\r\nOslash Ugrave Uacute Ucircumflex\r\nUdieresis Yacute Thorn germandbls\r\n \r\nagrave aacute acircumflex atilde\r\nadieresis aring ae ccedilla\r\negrave eacute ecircumflex edieresis\r\nigrave iacute icircumflex idieresis\r\neth ntilde ograve oacute\r\nocircumflex otilde odieresis divide\r\noslash ugrave uacute ucircumflex\r\nudieresis yacute thorn ydieresis\\\r\n`.split(/\\s+/);\r\n\r\nclass AFMFont {\r\n static open(filename) {\r\n return new AFMFont(fs.readFileSync(filename, 'utf8'));\r\n }\r\n\r\n constructor(contents) {\r\n this.contents = contents;\r\n this.attributes = {};\r\n this.glyphWidths = {};\r\n this.boundingBoxes = {};\r\n this.kernPairs = {};\r\n\r\n this.parse();\r\n // todo: remove charWidths since appears to not be used\r\n this.charWidths = new Array(256);\r\n for (let char = 0; char <= 255; char++) {\r\n this.charWidths[char] = this.glyphWidths[characters[char]];\r\n }\r\n\r\n this.bbox = this.attributes['FontBBox'].split(/\\s+/).map(e => +e);\r\n this.ascender = +(this.attributes['Ascender'] || 0);\r\n this.descender = +(this.attributes['Descender'] || 0);\r\n this.xHeight = +(this.attributes['XHeight'] || 0);\r\n this.capHeight = +(this.attributes['CapHeight'] || 0);\r\n this.lineGap =\r\n this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\r\n }\r\n\r\n parse() {\r\n let section = '';\r\n for (let line of this.contents.split('\\n')) {\r\n var match;\r\n var a;\r\n if ((match = line.match(/^Start(\\w+)/))) {\r\n section = match[1];\r\n continue;\r\n } else if ((match = line.match(/^End(\\w+)/))) {\r\n section = '';\r\n continue;\r\n }\r\n\r\n switch (section) {\r\n case 'FontMetrics':\r\n match = line.match(/(^\\w+)\\s+(.*)/);\r\n var key = match[1];\r\n var value = match[2];\r\n\r\n if ((a = this.attributes[key])) {\r\n if (!Array.isArray(a)) {\r\n a = this.attributes[key] = [a];\r\n }\r\n a.push(value);\r\n } else {\r\n this.attributes[key] = value;\r\n }\r\n break;\r\n\r\n case 'CharMetrics':\r\n if (!/^CH?\\s/.test(line)) {\r\n continue;\r\n }\r\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\r\n this.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\r\n break;\r\n\r\n case 'KernPairs':\r\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\r\n if (match) {\r\n this.kernPairs[match[1] + '\\0' + match[2]] = parseInt(match[3]);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n encodeText(text) {\r\n const res = [];\r\n for (let i = 0, len = text.length; i < len; i++) {\r\n let char = text.charCodeAt(i);\r\n char = WIN_ANSI_MAP[char] || char;\r\n res.push(char.toString(16));\r\n }\r\n\r\n return res;\r\n }\r\n\r\n glyphsForString(string) {\r\n const glyphs = [];\r\n\r\n for (let i = 0, len = string.length; i < len; i++) {\r\n const charCode = string.charCodeAt(i);\r\n glyphs.push(this.characterToGlyph(charCode));\r\n }\r\n\r\n return glyphs;\r\n }\r\n\r\n characterToGlyph(character) {\r\n return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\r\n }\r\n\r\n widthOfGlyph(glyph) {\r\n return this.glyphWidths[glyph] || 0;\r\n }\r\n\r\n getKernPair(left, right) {\r\n return this.kernPairs[left + '\\0' + right] || 0;\r\n }\r\n\r\n advancesForGlyphs(glyphs) {\r\n const advances = [];\r\n\r\n for (let index = 0; index < glyphs.length; index++) {\r\n const left = glyphs[index];\r\n const right = glyphs[index + 1];\r\n advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\r\n }\r\n\r\n return advances;\r\n }\r\n}\r\n\r\nexport default AFMFont;\r\n","class PDFFont {\r\n constructor() {}\r\n\r\n encode() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n widthOfString() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n ref() {\r\n return this.dictionary != null\r\n ? this.dictionary\r\n : (this.dictionary = this.document.ref());\r\n }\r\n\r\n finalize() {\r\n if (this.embedded || this.dictionary == null) {\r\n return;\r\n }\r\n\r\n this.embed();\r\n return (this.embedded = true);\r\n }\r\n\r\n embed() {\r\n throw new Error('Must be implemented by subclasses');\r\n }\r\n\r\n lineHeight(size, includeGap) {\r\n if (includeGap == null) {\r\n includeGap = false;\r\n }\r\n const gap = includeGap ? this.lineGap : 0;\r\n return ((this.ascender + gap - this.descender) / 1000) * size;\r\n }\r\n}\r\n\r\nexport default PDFFont;\r\n","import AFMFont from './afm';\r\nimport PDFFont from '../font';\r\nimport fs from 'fs';\r\n\r\n// This insanity is so bundlers can inline the font files\r\nconst STANDARD_FONTS = {\r\n Courier() {\r\n return fs.readFileSync(__dirname + '/data/Courier.afm', 'utf8');\r\n },\r\n 'Courier-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-Bold.afm', 'utf8');\r\n },\r\n 'Courier-Oblique'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-Oblique.afm', 'utf8');\r\n },\r\n 'Courier-BoldOblique'() {\r\n return fs.readFileSync(__dirname + '/data/Courier-BoldOblique.afm', 'utf8');\r\n },\r\n Helvetica() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica.afm', 'utf8');\r\n },\r\n 'Helvetica-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica-Bold.afm', 'utf8');\r\n },\r\n 'Helvetica-Oblique'() {\r\n return fs.readFileSync(__dirname + '/data/Helvetica-Oblique.afm', 'utf8');\r\n },\r\n 'Helvetica-BoldOblique'() {\r\n return fs.readFileSync(\r\n __dirname + '/data/Helvetica-BoldOblique.afm',\r\n 'utf8'\r\n );\r\n },\r\n 'Times-Roman'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Roman.afm', 'utf8');\r\n },\r\n 'Times-Bold'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Bold.afm', 'utf8');\r\n },\r\n 'Times-Italic'() {\r\n return fs.readFileSync(__dirname + '/data/Times-Italic.afm', 'utf8');\r\n },\r\n 'Times-BoldItalic'() {\r\n return fs.readFileSync(__dirname + '/data/Times-BoldItalic.afm', 'utf8');\r\n },\r\n Symbol() {\r\n return fs.readFileSync(__dirname + '/data/Symbol.afm', 'utf8');\r\n },\r\n ZapfDingbats() {\r\n return fs.readFileSync(__dirname + '/data/ZapfDingbats.afm', 'utf8');\r\n }\r\n};\r\n\r\nclass StandardFont extends PDFFont {\r\n constructor(document, name, id) {\r\n super();\r\n this.document = document;\r\n this.name = name;\r\n this.id = id;\r\n this.font = new AFMFont(STANDARD_FONTS[this.name]());\r\n ({\r\n ascender: this.ascender,\r\n descender: this.descender,\r\n bbox: this.bbox,\r\n lineGap: this.lineGap,\r\n xHeight: this.xHeight,\r\n capHeight: this.capHeight\r\n } = this.font);\r\n }\r\n\r\n embed() {\r\n this.dictionary.data = {\r\n Type: 'Font',\r\n BaseFont: this.name,\r\n Subtype: 'Type1',\r\n Encoding: 'WinAnsiEncoding'\r\n };\r\n\r\n return this.dictionary.end();\r\n }\r\n\r\n encode(text) {\r\n const encoded = this.font.encodeText(text);\r\n const glyphs = this.font.glyphsForString(`${text}`);\r\n const advances = this.font.advancesForGlyphs(glyphs);\r\n const positions = [];\r\n for (let i = 0; i < glyphs.length; i++) {\r\n const glyph = glyphs[i];\r\n positions.push({\r\n xAdvance: advances[i],\r\n yAdvance: 0,\r\n xOffset: 0,\r\n yOffset: 0,\r\n advanceWidth: this.font.widthOfGlyph(glyph)\r\n });\r\n }\r\n\r\n return [encoded, positions];\r\n }\r\n\r\n widthOfString(string, size) {\r\n const glyphs = this.font.glyphsForString(`${string}`);\r\n const advances = this.font.advancesForGlyphs(glyphs);\r\n\r\n let width = 0;\r\n for (let advance of advances) {\r\n width += advance;\r\n }\r\n\r\n const scale = size / 1000;\r\n return width * scale;\r\n }\r\n\r\n static isStandardFont(name) {\r\n return name in STANDARD_FONTS;\r\n }\r\n}\r\n\r\nexport default StandardFont;\r\n","import PDFFont from '../font';\r\n\r\nconst toHex = function(num) {\r\n return `0000${num.toString(16)}`.slice(-4);\r\n};\r\n\r\nclass EmbeddedFont extends PDFFont {\r\n constructor(document, font, id) {\r\n super();\r\n this.document = document;\r\n this.font = font;\r\n this.id = id;\r\n this.subset = this.font.createSubset();\r\n this.unicode = [[0]];\r\n this.widths = [this.font.getGlyph(0).advanceWidth];\r\n\r\n this.name = this.font.postscriptName;\r\n this.scale = 1000 / this.font.unitsPerEm;\r\n this.ascender = this.font.ascent * this.scale;\r\n this.descender = this.font.descent * this.scale;\r\n this.xHeight = this.font.xHeight * this.scale;\r\n this.capHeight = this.font.capHeight * this.scale;\r\n this.lineGap = this.font.lineGap * this.scale;\r\n this.bbox = this.font.bbox;\r\n\r\n if (document.options.fontLayoutCache !== false) {\r\n this.layoutCache = Object.create(null);\r\n }\r\n }\r\n\r\n layoutRun(text, features) {\r\n const run = this.font.layout(text, features);\r\n\r\n // Normalize position values\r\n for (let i = 0; i < run.positions.length; i++) {\r\n const position = run.positions[i];\r\n for (let key in position) {\r\n position[key] *= this.scale;\r\n }\r\n\r\n position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\r\n }\r\n\r\n return run;\r\n }\r\n\r\n layoutCached(text) {\r\n if (!this.layoutCache) {\r\n return this.layoutRun(text);\r\n }\r\n let cached;\r\n if ((cached = this.layoutCache[text])) {\r\n return cached;\r\n }\r\n\r\n const run = this.layoutRun(text);\r\n this.layoutCache[text] = run;\r\n return run;\r\n }\r\n\r\n layout(text, features, onlyWidth) {\r\n // Skip the cache if any user defined features are applied\r\n if (features) {\r\n return this.layoutRun(text, features);\r\n }\r\n\r\n let glyphs = onlyWidth ? null : [];\r\n let positions = onlyWidth ? null : [];\r\n let advanceWidth = 0;\r\n\r\n // Split the string by words to increase cache efficiency.\r\n // For this purpose, spaces and tabs are a good enough delimeter.\r\n let last = 0;\r\n let index = 0;\r\n while (index <= text.length) {\r\n var needle;\r\n if (\r\n (index === text.length && last < index) ||\r\n ((needle = text.charAt(index)), [' ', '\\t'].includes(needle))\r\n ) {\r\n const run = this.layoutCached(text.slice(last, ++index));\r\n if (!onlyWidth) {\r\n glyphs = glyphs.concat(run.glyphs);\r\n positions = positions.concat(run.positions);\r\n }\r\n\r\n advanceWidth += run.advanceWidth;\r\n last = index;\r\n } else {\r\n index++;\r\n }\r\n }\r\n\r\n return { glyphs, positions, advanceWidth };\r\n }\r\n\r\n encode(text, features) {\r\n const { glyphs, positions } = this.layout(text, features);\r\n\r\n const res = [];\r\n for (let i = 0; i < glyphs.length; i++) {\r\n const glyph = glyphs[i];\r\n const gid = this.subset.includeGlyph(glyph.id);\r\n res.push(`0000${gid.toString(16)}`.slice(-4));\r\n\r\n if (this.widths[gid] == null) {\r\n this.widths[gid] = glyph.advanceWidth * this.scale;\r\n }\r\n if (this.unicode[gid] == null) {\r\n this.unicode[gid] = glyph.codePoints;\r\n }\r\n }\r\n\r\n return [res, positions];\r\n }\r\n\r\n widthOfString(string, size, features) {\r\n const width = this.layout(string, features, true).advanceWidth;\r\n const scale = size / 1000;\r\n return width * scale;\r\n }\r\n\r\n embed() {\r\n const isCFF = this.subset.cff != null;\r\n const fontFile = this.document.ref();\r\n\r\n if (isCFF) {\r\n fontFile.data.Subtype = 'CIDFontType0C';\r\n }\r\n\r\n fontFile.end(this.subset.encode());\r\n\r\n const familyClass =\r\n ((this.font['OS/2'] != null\r\n ? this.font['OS/2'].sFamilyClass\r\n : undefined) || 0) >> 8;\r\n let flags = 0;\r\n if (this.font.post.isFixedPitch) {\r\n flags |= 1 << 0;\r\n }\r\n if (1 <= familyClass && familyClass <= 7) {\r\n flags |= 1 << 1;\r\n }\r\n flags |= 1 << 2; // assume the font uses non-latin characters\r\n if (familyClass === 10) {\r\n flags |= 1 << 3;\r\n }\r\n if (this.font.head.macStyle.italic) {\r\n flags |= 1 << 6;\r\n }\r\n\r\n // generate a tag (6 uppercase letters. 17 is the char code offset from '0' to 'A'. 73 will map to 'Z')\r\n const tag = [1, 2, 3, 4, 5, 6]\r\n .map(i => String.fromCharCode((this.id.charCodeAt(i) || 73) + 17))\r\n .join('');\r\n const name = tag + '+' + this.font.postscriptName.replaceAll(' ', '_');\r\n\r\n const { bbox } = this.font;\r\n const descriptor = this.document.ref({\r\n Type: 'FontDescriptor',\r\n FontName: name,\r\n Flags: flags,\r\n FontBBox: [\r\n bbox.minX * this.scale,\r\n bbox.minY * this.scale,\r\n bbox.maxX * this.scale,\r\n bbox.maxY * this.scale\r\n ],\r\n ItalicAngle: this.font.italicAngle,\r\n Ascent: this.ascender,\r\n Descent: this.descender,\r\n CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\r\n XHeight: (this.font.xHeight || 0) * this.scale,\r\n StemV: 0\r\n }); // not sure how to calculate this\r\n\r\n if (isCFF) {\r\n descriptor.data.FontFile3 = fontFile;\r\n } else {\r\n descriptor.data.FontFile2 = fontFile;\r\n }\r\n\r\n if (this.document.subset && this.document.subset === 1) {\r\n const CIDSet = Buffer.from('FFFFFFFFC0', 'hex');\r\n const CIDSetRef = this.document.ref();\r\n CIDSetRef.write(CIDSet);\r\n CIDSetRef.end();\r\n\r\n descriptor.data.CIDSet = CIDSetRef;\r\n }\r\n\r\n descriptor.end();\r\n\r\n const descendantFontData = {\r\n Type: 'Font',\r\n Subtype: 'CIDFontType0',\r\n BaseFont: name,\r\n CIDSystemInfo: {\r\n Registry: new String('Adobe'),\r\n Ordering: new String('Identity'),\r\n Supplement: 0\r\n },\r\n FontDescriptor: descriptor,\r\n W: [0, this.widths]\r\n };\r\n\r\n if (!isCFF) {\r\n descendantFontData.Subtype = 'CIDFontType2';\r\n descendantFontData.CIDToGIDMap = 'Identity';\r\n }\r\n\r\n const descendantFont = this.document.ref(descendantFontData);\r\n\r\n descendantFont.end();\r\n\r\n this.dictionary.data = {\r\n Type: 'Font',\r\n Subtype: 'Type0',\r\n BaseFont: name,\r\n Encoding: 'Identity-H',\r\n DescendantFonts: [descendantFont],\r\n ToUnicode: this.toUnicodeCmap()\r\n };\r\n\r\n return this.dictionary.end();\r\n }\r\n\r\n // Maps the glyph ids encoded in the PDF back to unicode strings\r\n // Because of ligature substitutions and the like, there may be one or more\r\n // unicode characters represented by each glyph.\r\n toUnicodeCmap() {\r\n const cmap = this.document.ref();\r\n\r\n const entries = [];\r\n for (let codePoints of this.unicode) {\r\n const encoded = [];\r\n\r\n // encode codePoints to utf16\r\n for (let value of codePoints) {\r\n if (value > 0xffff) {\r\n value -= 0x10000;\r\n encoded.push(toHex(((value >>> 10) & 0x3ff) | 0xd800));\r\n value = 0xdc00 | (value & 0x3ff);\r\n }\r\n\r\n encoded.push(toHex(value));\r\n }\r\n\r\n entries.push(`<${encoded.join(' ')}>`);\r\n }\r\n\r\n const chunkSize = 256;\r\n const chunks = Math.ceil(entries.length / chunkSize);\r\n const ranges = [];\r\n for (let i = 0; i < chunks; i++) {\r\n const start = i * chunkSize;\r\n const end = Math.min((i + 1) * chunkSize, entries.length);\r\n ranges.push(`<${toHex(start)}> <${toHex(end - 1)}> [${entries.slice(start, end).join(' ')}]`);\r\n }\r\n\r\n cmap.end(`\\\r\n/CIDInit /ProcSet findresource begin\r\n12 dict begin\r\nbegincmap\r\n/CIDSystemInfo <<\r\n /Registry (Adobe)\r\n /Ordering (UCS)\r\n /Supplement 0\r\n>> def\r\n/CMapName /Adobe-Identity-UCS def\r\n/CMapType 2 def\r\n1 begincodespacerange\r\n<0000><ffff>\r\nendcodespacerange\r\n1 beginbfrange\r\n${ranges.join('\\n')}\r\nendbfrange\r\nendcmap\r\nCMapName currentdict /CMap defineresource pop\r\nend\r\nend\\\r\n`);\r\n\r\n return cmap;\r\n }\r\n}\r\n\r\nexport default EmbeddedFont;\r\n","import fs from 'fs';\r\nimport * as fontkit from 'fontkit';\r\nimport StandardFont from './font/standard';\r\nimport EmbeddedFont from './font/embedded';\r\n\r\nclass PDFFontFactory {\r\n static open(document, src, family, id) {\r\n let font;\r\n if (typeof src === 'string') {\r\n if (StandardFont.isStandardFont(src)) {\r\n return new StandardFont(document, src, id);\r\n }\r\n\r\n src = fs.readFileSync(src);\r\n }\r\n if (src instanceof Uint8Array) {\r\n font = fontkit.create(src, family);\r\n } else if (src instanceof ArrayBuffer) {\r\n font = fontkit.create(new Uint8Array(src), family);\r\n }\r\n\r\n if (font == null) {\r\n throw new Error('Not a supported font format or standard PDF font.');\r\n }\r\n\r\n return new EmbeddedFont(document, font, id);\r\n }\r\n}\r\n\r\nexport default PDFFontFactory;\r\n","import PDFFontFactory from '../font_factory';\r\n\r\nconst isEqualFont = (font1, font2) => {\r\n // compare font checksum\r\n if (font1.font._tables?.head?.checkSumAdjustment !== font2.font._tables?.head?.checkSumAdjustment) {\r\n return false;\r\n }\r\n\r\n // compare font name table\r\n if (JSON.stringify(font1.font._tables?.name?.records) !== JSON.stringify(font2.font._tables?.name?.records)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport default {\r\n initFonts(defaultFont = 'Helvetica') {\r\n // Lookup table for embedded fonts\r\n this._fontFamilies = {};\r\n this._fontCount = 0;\r\n\r\n // Font state\r\n this._fontSize = 12;\r\n this._font = null;\r\n\r\n this._registeredFonts = {};\r\n\r\n // Set the default font\r\n if (defaultFont) {\r\n this.font(defaultFont);\r\n }\r\n },\r\n\r\n font(src, family, size) {\r\n let cacheKey, font;\r\n if (typeof family === 'number') {\r\n size = family;\r\n family = null;\r\n }\r\n\r\n // check registered fonts if src is a string\r\n if (typeof src === 'string' && this._registeredFonts[src]) {\r\n cacheKey = src;\r\n ({ src, family } = this._registeredFonts[src]);\r\n } else {\r\n cacheKey = family || src;\r\n if (typeof cacheKey !== 'string') {\r\n cacheKey = null;\r\n }\r\n }\r\n\r\n if (size != null) {\r\n this.fontSize(size);\r\n }\r\n\r\n // fast path: check if the font is already in the PDF\r\n if ((font = this._fontFamilies[cacheKey])) {\r\n this._font = font;\r\n return this;\r\n }\r\n\r\n // load the font\r\n const id = `F${++this._fontCount}`;\r\n this._font = PDFFontFactory.open(this, src, family, id);\r\n\r\n // check for existing font familes with the same name already in the PDF\r\n // useful if the font was passed as a buffer\r\n if ((font = this._fontFamilies[this._font.name]) && isEqualFont(this._font, font)) {\r\n this._font = font;\r\n return this;\r\n }\r\n\r\n // save the font for reuse later\r\n if (cacheKey) {\r\n this._fontFamilies[cacheKey] = this._font;\r\n }\r\n\r\n if (this._font.name) {\r\n this._fontFamilies[this._font.name] = this._font;\r\n }\r\n\r\n return this;\r\n },\r\n\r\n fontSize(_fontSize) {\r\n this._fontSize = _fontSize;\r\n return this;\r\n },\r\n\r\n currentLineHeight(includeGap) {\r\n if (includeGap == null) {\r\n includeGap = false;\r\n }\r\n return this._font.lineHeight(this._fontSize, includeGap);\r\n },\r\n\r\n registerFont(name, src, family) {\r\n this._registeredFonts[name] = {\r\n src,\r\n family\r\n };\r\n\r\n return this;\r\n }\r\n};\r\n","import { EventEmitter } from 'events';\r\nimport LineBreaker from 'linebreak';\r\n\r\nconst SOFT_HYPHEN = '\\u00AD';\r\nconst HYPHEN = '-';\r\n\r\nclass LineWrapper extends EventEmitter {\r\n constructor(document, options) {\r\n super();\r\n this.document = document;\r\n this.horizontalScaling = options.horizontalScaling || 100;\r\n this.indent = ((options.indent || 0) * this.horizontalScaling) / 100;\r\n this.characterSpacing = ((options.characterSpacing || 0) * this.horizontalScaling) / 100;\r\n this.wordSpacing = ((options.wordSpacing === 0) * this.horizontalScaling) / 100;\r\n this.columns = options.columns || 1;\r\n this.columnGap = ((options.columnGap != null ? options.columnGap : 18) * this.horizontalScaling) / 100; // 1/4 inch\r\n this.lineWidth = (((options.width * this.horizontalScaling) / 100) - (this.columnGap * (this.columns - 1))) / this.columns;\r\n this.spaceLeft = this.lineWidth;\r\n this.startX = this.document.x;\r\n this.startY = this.document.y;\r\n this.column = 1;\r\n this.ellipsis = options.ellipsis;\r\n this.continuedX = 0;\r\n this.features = options.features;\r\n\r\n // calculate the maximum Y position the text can appear at\r\n if (options.height != null) {\r\n this.height = options.height;\r\n this.maxY = this.startY + options.height;\r\n } else {\r\n this.maxY = this.document.page.maxY();\r\n }\r\n\r\n // handle paragraph indents\r\n this.on('firstLine', options => {\r\n // if this is the first line of the text segment, and\r\n // we're continuing where we left off, indent that much\r\n // otherwise use the user specified indent option\r\n const indent = this.continuedX || this.indent;\r\n this.document.x += indent;\r\n this.lineWidth -= indent;\r\n\r\n // if indentAllLines is set to true\r\n // we're not resetting the indentation for this paragraph after the first line\r\n if (options.indentAllLines) {\r\n return;\r\n }\r\n\r\n // otherwise we start the next line without indent\r\n return this.once('line', () => {\r\n this.document.x -= indent;\r\n this.lineWidth += indent;\r\n if (options.continued && !this.continuedX) {\r\n this.continuedX = this.indent;\r\n }\r\n if (!options.continued) {\r\n return (this.continuedX = 0);\r\n }\r\n });\r\n });\r\n\r\n // handle left aligning last lines of paragraphs\r\n this.on('lastLine', options => {\r\n const { align } = options;\r\n if (align === 'justify') {\r\n options.align = 'left';\r\n }\r\n this.lastLine = true;\r\n\r\n return this.once('line', () => {\r\n this.document.y += options.paragraphGap || 0;\r\n options.align = align;\r\n return (this.lastLine = false);\r\n });\r\n });\r\n }\r\n\r\n wordWidth(word) {\r\n return (\r\n this.document.widthOfString(word, this) +\r\n this.characterSpacing +\r\n this.wordSpacing\r\n );\r\n }\r\n\r\n canFit(word, w) {\r\n if (word[word.length - 1] != SOFT_HYPHEN) {\r\n return w <= this.spaceLeft;\r\n }\r\n return w + this.wordWidth(HYPHEN) <= this.spaceLeft;\r\n }\r\n\r\n eachWord(text, fn) {\r\n // setup a unicode line breaker\r\n let bk;\r\n const breaker = new LineBreaker(text);\r\n let last = null;\r\n const wordWidths = Object.create(null);\r\n\r\n while ((bk = breaker.nextBreak())) {\r\n var shouldContinue;\r\n let word = text.slice(\r\n (last != null ? last.position : undefined) || 0,\r\n bk.position\r\n );\r\n let w =\r\n wordWidths[word] != null\r\n ? wordWidths[word]\r\n : (wordWidths[word] = this.wordWidth(word));\r\n\r\n // if the word is longer than the whole line, chop it up\r\n // TODO: break by grapheme clusters, not JS string characters\r\n if (w > this.lineWidth + this.continuedX) {\r\n // make some fake break objects\r\n let lbk = last;\r\n const fbk = {};\r\n\r\n while (word.length) {\r\n // fit as much of the word as possible into the space we have\r\n var l, mightGrow;\r\n if (w > this.spaceLeft) {\r\n // start our check at the end of our available space - this method is faster than a loop of each character and it resolves\r\n // an issue with long loops when processing massive words, such as a huge number of spaces\r\n l = Math.ceil(this.spaceLeft / (w / word.length));\r\n w = this.wordWidth(word.slice(0, l));\r\n mightGrow = w <= this.spaceLeft && l < word.length;\r\n } else {\r\n l = word.length;\r\n }\r\n let mustShrink = w > this.spaceLeft && l > 0;\r\n // shrink or grow word as necessary after our near-guess above\r\n while (mustShrink || mightGrow) {\r\n if (mustShrink) {\r\n w = this.wordWidth(word.slice(0, --l));\r\n mustShrink = w > this.spaceLeft && l > 0;\r\n } else {\r\n w = this.wordWidth(word.slice(0, ++l));\r\n mustShrink = w > this.spaceLeft && l > 0;\r\n mightGrow = w <= this.spaceLeft && l < word.length;\r\n }\r\n }\r\n\r\n // check for the edge case where a single character cannot fit into a line.\r\n if (l === 0 && this.spaceLeft === this.lineWidth) {\r\n l = 1;\r\n }\r\n\r\n // send a required break unless this is the last piece and a linebreak is not specified\r\n fbk.required = bk.required || l < word.length;\r\n shouldContinue = fn(word.slice(0, l), w, fbk, lbk);\r\n lbk = { required: false };\r\n\r\n // get the remaining piece of the word\r\n word = word.slice(l);\r\n w = this.wordWidth(word);\r\n\r\n if (shouldContinue === false) {\r\n break;\r\n }\r\n }\r\n } else {\r\n // otherwise just emit the break as it was given to us\r\n shouldContinue = fn(word, w, bk, last);\r\n }\r\n\r\n if (shouldContinue === false) {\r\n break;\r\n }\r\n last = bk;\r\n }\r\n }\r\n\r\n wrap(text, options) {\r\n // override options from previous continued fragments\r\n this.horizontalScaling = options.horizontalScaling || 100;\r\n if (options.indent != null) {\r\n this.indent = (options.indent * this.horizontalScaling) / 100;\r\n }\r\n if (options.characterSpacing != null) {\r\n this.characterSpacing = (options.characterSpacing * this.horizontalScaling) / 100;\r\n }\r\n if (options.wordSpacing != null) {\r\n this.wordSpacing = (options.wordSpacing * this.horizontalScaling) / 100;\r\n }\r\n if (options.ellipsis != null) {\r\n this.ellipsis = options.ellipsis;\r\n }\r\n\r\n // make sure we're actually on the page\r\n // and that the first line of is never by\r\n // itself at the bottom of a page (orphans)\r\n const nextY = this.document.y + this.document.currentLineHeight(true);\r\n if (this.document.y > this.maxY || nextY > this.maxY) {\r\n this.nextSection();\r\n }\r\n\r\n let buffer = '';\r\n let textWidth = 0;\r\n let wc = 0;\r\n let lc = 0;\r\n\r\n let { y } = this.document; // used to reset Y pos if options.continued (below)\r\n const emitLine = () => {\r\n options.textWidth = textWidth + this.wordSpacing * (wc - 1);\r\n options.wordCount = wc;\r\n options.lineWidth = this.lineWidth;\r\n ({ y } = this.document);\r\n this.emit('line', buffer, options, this);\r\n return lc++;\r\n };\r\n\r\n this.emit('sectionStart', options, this);\r\n\r\n this.eachWord(text, (word, w, bk, last) => {\r\n if (last == null || last.required) {\r\n this.emit('firstLine', options, this);\r\n this.spaceLeft = this.lineWidth;\r\n }\r\n\r\n if (this.canFit(word, w)) {\r\n buffer += word;\r\n textWidth += w;\r\n wc++;\r\n }\r\n\r\n if (bk.required || !this.canFit(word, w)) {\r\n // if the user specified a max height and an ellipsis, and is about to pass the\r\n // max height and max columns after the next line, append the ellipsis\r\n const lh = this.document.currentLineHeight(true);\r\n if (\r\n this.height != null &&\r\n this.ellipsis &&\r\n this.document.y + lh * 2 > this.maxY &&\r\n this.column >= this.columns\r\n ) {\r\n if (this.ellipsis === true) {\r\n this.ellipsis = '…';\r\n } // map default ellipsis character\r\n buffer = buffer.replace(/\\s+$/, '');\r\n textWidth = this.wordWidth(buffer + this.ellipsis);\r\n\r\n // remove characters from the buffer until the ellipsis fits\r\n // to avoid infinite loop need to stop while-loop if buffer is empty string\r\n while (buffer && textWidth > this.lineWidth) {\r\n buffer = buffer.slice(0, -1).replace(/\\s+$/, '');\r\n textWidth = this.wordWidth(buffer + this.ellipsis);\r\n }\r\n // need to add ellipsis only if there is enough space for it\r\n if (textWidth <= this.lineWidth) {\r\n buffer = buffer + this.ellipsis;\r\n }\r\n\r\n textWidth = this.wordWidth(buffer);\r\n }\r\n\r\n if (bk.required) {\r\n if (w > this.spaceLeft) {\r\n emitLine();\r\n buffer = word;\r\n textWidth = w;\r\n wc = 1;\r\n }\r\n\r\n this.emit('lastLine', options, this);\r\n }\r\n\r\n // Previous entry is a soft hyphen - add visible hyphen.\r\n if (buffer[buffer.length - 1] == SOFT_HYPHEN) {\r\n buffer = buffer.slice(0, -1) + HYPHEN;\r\n this.spaceLeft -= this.wordWidth(HYPHEN);\r\n }\r\n\r\n emitLine();\r\n\r\n // if we've reached the edge of the page,\r\n // continue on a new page or column\r\n if (this.document.y + lh > this.maxY) {\r\n const shouldContinue = this.nextSection();\r\n\r\n // stop if we reached the maximum height\r\n if (!shouldContinue) {\r\n wc = 0;\r\n buffer = '';\r\n return false;\r\n }\r\n }\r\n\r\n // reset the space left and buffer\r\n if (bk.required) {\r\n this.spaceLeft = this.lineWidth;\r\n buffer = '';\r\n textWidth = 0;\r\n return (wc = 0);\r\n } else {\r\n // reset the space left and buffer\r\n this.spaceLeft = this.lineWidth - w;\r\n buffer = word;\r\n textWidth = w;\r\n return (wc = 1);\r\n }\r\n } else {\r\n return (this.spaceLeft -= w);\r\n }\r\n });\r\n\r\n if (wc > 0) {\r\n this.emit('lastLine', options, this);\r\n emitLine();\r\n }\r\n\r\n this.emit('sectionEnd', options, this);\r\n\r\n // if the wrap is set to be continued, save the X position\r\n // to start the first line of the next segment at, and reset\r\n // the y position\r\n if (options.continued === true) {\r\n if (lc > 1) {\r\n this.continuedX = 0;\r\n }\r\n this.continuedX += options.textWidth || 0;\r\n return (this.document.y = y);\r\n } else {\r\n return (this.document.x = this.startX);\r\n }\r\n }\r\n\r\n nextSection(options) {\r\n this.emit('sectionEnd', options, this);\r\n\r\n if (++this.column > this.columns) {\r\n // if a max height was specified by the user, we're done.\r\n // otherwise, the default is to make a new page at the bottom.\r\n if (this.height != null) {\r\n return false;\r\n }\r\n\r\n this.document.continueOnNewPage();\r\n this.column = 1;\r\n this.startY = this.document.page.margins.top;\r\n this.maxY = this.document.page.maxY();\r\n this.document.x = this.startX;\r\n if (this.document._fillColor) {\r\n this.document.fillColor(...this.document._fillColor);\r\n }\r\n this.emit('pageBreak', options, this);\r\n } else {\r\n this.document.x += this.lineWidth + this.columnGap;\r\n this.document.y = this.startY;\r\n this.emit('columnBreak', options, this);\r\n }\r\n\r\n this.emit('sectionStart', options, this);\r\n return true;\r\n }\r\n}\r\n\r\nexport default LineWrapper;\r\n","import LineWrapper from '../line_wrapper';\r\nimport PDFObject from '../object';\r\n\r\nconst { number } = PDFObject;\r\n\r\nexport default {\r\n initText() {\r\n this._line = this._line.bind(this);\r\n // Current coordinates\r\n this.x = 0;\r\n this.y = 0;\r\n return (this._lineGap = 0);\r\n },\r\n\r\n lineGap(_lineGap) {\r\n this._lineGap = _lineGap;\r\n return this;\r\n },\r\n\r\n moveDown(lines) {\r\n if (lines == null) {\r\n lines = 1;\r\n }\r\n this.y += this.currentLineHeight(true) * lines + this._lineGap;\r\n return this;\r\n },\r\n\r\n moveUp(lines) {\r\n if (lines == null) {\r\n lines = 1;\r\n }\r\n this.y -= this.currentLineHeight(true) * lines + this._lineGap;\r\n return this;\r\n },\r\n\r\n _text(text, x, y, options, lineCallback) {\r\n options = this._initOptions(x, y, options);\r\n\r\n // Convert text to a string\r\n text = text == null ? '' : `${text}`;\r\n\r\n // if the wordSpacing option is specified, remove multiple consecutive spaces\r\n if (options.wordSpacing) {\r\n text = text.replace(/\\s{2,}/g, ' ');\r\n }\r\n\r\n const addStructure = () => {\r\n if (options.structParent) {\r\n options.structParent.add(this.struct(options.structType || 'P',\r\n [this.markStructureContent(options.structType || 'P')]));\r\n }\r\n };\r\n\r\n // word wrapping\r\n if (options.width) {\r\n let wrapper = this._wrapper;\r\n if (!wrapper) {\r\n wrapper = new LineWrapper(this, options);\r\n wrapper.on('line', lineCallback);\r\n wrapper.on('firstLine', addStructure);\r\n }\r\n\r\n this._wrapper = options.continued ? wrapper : null;\r\n this._textOptions = options.continued ? options : null;\r\n wrapper.wrap(text, options);\r\n\r\n // render paragraphs as single lines\r\n } else {\r\n for (let line of text.split('\\n')) {\r\n addStructure();\r\n lineCallback(line, options);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n text(text, x, y, options) {\r\n return this._text(text, x, y, options, this._line);\r\n },\r\n\r\n widthOfString(string, options = {}) {\r\n const horizontalScaling = options.horizontalScaling || 100;\r\n return ((this._font.widthOfString(string, this._fontSize, options.features) + (options.characterSpacing || 0) * (string.length - 1)) * horizontalScaling) / 100;\r\n },\r\n\r\n heightOfString(text, options) {\r\n const { x, y } = this;\r\n\r\n options = this._initOptions(options);\r\n options.height = Infinity; // don't break pages\r\n\r\n const lineGap = options.lineGap || this._lineGap || 0;\r\n this._text(text, this.x, this.y, options, () => {\r\n return (this.y += this.currentLineHeight(true) + lineGap);\r\n });\r\n\r\n const height = this.y - y;\r\n this.x = x;\r\n this.y = y;\r\n\r\n return height;\r\n },\r\n\r\n list(list, x, y, options, wrapper) {\r\n options = this._initOptions(x, y, options);\r\n\r\n const listType = options.listType || 'bullet';\r\n const unit = Math.round((this._font.ascender / 1000) * this._fontSize);\r\n const midLine = unit / 2;\r\n const r = options.bulletRadius || unit / 3;\r\n const indent =\r\n options.textIndent || (listType === 'bullet' ? r * 5 : unit * 2);\r\n const itemIndent =\r\n options.bulletIndent || (listType === 'bullet' ? r * 8 : unit * 2);\r\n\r\n let level = 1;\r\n const items = [];\r\n const levels = [];\r\n const numbers = [];\r\n\r\n var flatten = function (list) {\r\n let n = 1;\r\n for (let i = 0; i < list.length; i++) {\r\n const item = list[i];\r\n if (Array.isArray(item)) {\r\n level++;\r\n flatten(item);\r\n level--;\r\n } else {\r\n items.push(item);\r\n levels.push(level);\r\n if (listType !== 'bullet') {\r\n numbers.push(n++);\r\n }\r\n }\r\n }\r\n };\r\n\r\n flatten(list);\r\n\r\n const label = function (n) {\r\n switch (listType) {\r\n case 'numbered':\r\n return `${n}.`;\r\n case 'lettered':\r\n var letter = String.fromCharCode(((n - 1) % 26) + 65);\r\n var times = Math.floor((n - 1) / 26 + 1);\r\n var text = Array(times + 1).join(letter);\r\n return `${text}.`;\r\n }\r\n };\r\n\r\n const drawListItem = function (listItem, i) {\r\n wrapper = new LineWrapper(this, options);\r\n wrapper.on('line', this._line);\r\n\r\n level = 1;\r\n wrapper.once('firstLine', () => {\r\n let item, itemType, labelType, bodyType;\r\n if (options.structParent) {\r\n if (options.structTypes) {\r\n [itemType, labelType, bodyType] = options.structTypes;\r\n } else {\r\n [itemType, labelType, bodyType] = ['LI', 'Lbl', 'LBody'];\r\n }\r\n }\r\n\r\n if (itemType) {\r\n item = this.struct(itemType);\r\n options.structParent.add(item);\r\n } else if (options.structParent) {\r\n item = options.structParent;\r\n }\r\n\r\n let l;\r\n if ((l = levels[i++]) !== level) {\r\n const diff = itemIndent * (l - level);\r\n this.x += diff;\r\n wrapper.lineWidth -= diff;\r\n level = l;\r\n }\r\n\r\n if (item && (labelType || bodyType)) {\r\n item.add(this.struct(labelType || bodyType,\r\n [this.markStructureContent(labelType || bodyType)]));\r\n }\r\n switch (listType) {\r\n case 'bullet':\r\n this.circle(this.x - indent + r, this.y + midLine, r);\r\n this.fill();\r\n break;\r\n case 'numbered':\r\n case 'lettered':\r\n var text = label(numbers[i - 1]);\r\n this._fragment(text, this.x - indent, this.y, options);\r\n break;\r\n }\r\n\r\n if (item && labelType && bodyType) {\r\n item.add(this.struct(bodyType, [this.markStructureContent(bodyType)]));\r\n }\r\n if (item && item !== options.structParent) {\r\n item.end();\r\n }\r\n });\r\n\r\n wrapper.on('sectionStart', () => {\r\n const pos = indent + itemIndent * (level - 1);\r\n this.x += pos;\r\n return (wrapper.lineWidth -= pos);\r\n });\r\n\r\n wrapper.on('sectionEnd', () => {\r\n const pos = indent + itemIndent * (level - 1);\r\n this.x -= pos;\r\n return (wrapper.lineWidth += pos);\r\n });\r\n\r\n wrapper.wrap(listItem, options);\r\n };\r\n\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n drawListItem.call(this, items[i], i);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n _initOptions(x = {}, y, options = {}) {\r\n if (typeof x === 'object') {\r\n options = x;\r\n x = null;\r\n }\r\n\r\n // clone options object\r\n const result = Object.assign({}, options);\r\n\r\n // extend options with previous values for continued text\r\n if (this._textOptions) {\r\n for (let key in this._textOptions) {\r\n const val = this._textOptions[key];\r\n if (key !== 'continued') {\r\n if (result[key] === undefined) {\r\n result[key] = val;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Update the current position\r\n if (x != null) {\r\n this.x = x;\r\n }\r\n if (y != null) {\r\n this.y = y;\r\n }\r\n\r\n // wrap to margins if no x or y position passed\r\n if (result.lineBreak !== false) {\r\n if (result.width == null) {\r\n result.width = this.page.width - this.x - this.page.margins.right;\r\n }\r\n result.width = Math.max(result.width, 0);\r\n }\r\n\r\n if (!result.columns) {\r\n result.columns = 0;\r\n }\r\n if (result.columnGap == null) {\r\n result.columnGap = 18;\r\n } // 1/4 inch\r\n\r\n return result;\r\n },\r\n\r\n _line(text, options = {}, wrapper) {\r\n this._fragment(text, this.x, this.y, options);\r\n const lineGap = options.lineGap || this._lineGap || 0;\r\n\r\n if (!wrapper) {\r\n return (this.x += this.widthOfString(text, options));\r\n } else {\r\n return (this.y += this.currentLineHeight(true) + lineGap);\r\n }\r\n },\r\n\r\n _fragment(text, x, y, options) {\r\n let dy, encoded, i, positions, textWidth, words;\r\n text = `${text}`.replace(/\\n/g, '');\r\n if (text.length === 0) {\r\n return;\r\n }\r\n\r\n // handle options\r\n const align = options.align || 'left';\r\n let wordSpacing = options.wordSpacing || 0;\r\n const characterSpacing = options.characterSpacing || 0;\r\n const horizontalScaling = options.horizontalScaling || 100;\r\n\r\n // text alignments\r\n if (options.width) {\r\n switch (align) {\r\n case 'right':\r\n textWidth = this.widthOfString(text.replace(/\\s+$/, ''), options);\r\n x += options.lineWidth - textWidth;\r\n break;\r\n\r\n case 'center':\r\n x += options.lineWidth / 2 - options.textWidth / 2;\r\n break;\r\n\r\n case 'justify':\r\n // calculate the word spacing value\r\n words = text.trim().split(/\\s+/);\r\n textWidth = this.widthOfString(text.replace(/\\s+/g, ''), options);\r\n var spaceWidth = this.widthOfString(' ') + characterSpacing;\r\n wordSpacing = Math.max(\r\n 0,\r\n (options.lineWidth - textWidth) / Math.max(1, words.length - 1) -\r\n spaceWidth\r\n );\r\n break;\r\n }\r\n }\r\n\r\n // text baseline alignments based on http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling\r\n if (typeof options.baseline === 'number') {\r\n dy = -options.baseline;\r\n } else {\r\n switch (options.baseline) {\r\n case 'svg-middle':\r\n dy = 0.5 * this._font.xHeight;\r\n break;\r\n case 'middle':\r\n case 'svg-central':\r\n dy = 0.5 * (this._font.descender + this._font.ascender);\r\n break;\r\n case 'bottom':\r\n case 'ideographic':\r\n dy = this._font.descender;\r\n break;\r\n case 'alphabetic':\r\n dy = 0;\r\n break;\r\n case 'mathematical':\r\n dy = 0.5 * this._font.ascender;\r\n break;\r\n case 'hanging':\r\n dy = 0.8 * this._font.ascender;\r\n break;\r\n case 'top':\r\n dy = this._font.ascender;\r\n break;\r\n default:\r\n dy = this._font.ascender;\r\n }\r\n dy = (dy / 1000) * this._fontSize;\r\n }\r\n\r\n // calculate the actual rendered width of the string after word and character spacing\r\n const renderedWidth =\r\n options.textWidth +\r\n wordSpacing * (options.wordCount - 1) +\r\n characterSpacing * (text.length - 1);\r\n\r\n // create link annotations if the link option is given\r\n if (options.link != null) {\r\n this.link(x, y, renderedWidth, this.currentLineHeight(), options.link);\r\n }\r\n if (options.goTo != null) {\r\n this.goTo(x, y, renderedWidth, this.currentLineHeight(), options.goTo);\r\n }\r\n if (options.destination != null) {\r\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n }\r\n\r\n // create underline\r\n if (options.underline) {\r\n this.save();\r\n if (!options.stroke) {\r\n this.strokeColor(...(this._fillColor || []));\r\n }\r\n\r\n const lineWidth =\r\n this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n this.lineWidth(lineWidth);\r\n\r\n let lineY = (y + this.currentLineHeight()) - lineWidth\r\n this.moveTo(x, lineY);\r\n this.lineTo(x + renderedWidth, lineY);\r\n this.stroke();\r\n this.restore();\r\n }\r\n\r\n // create strikethrough line\r\n if (options.strike) {\r\n this.save();\r\n if (!options.stroke) {\r\n this.strokeColor(...(this._fillColor || []));\r\n }\r\n\r\n const lineWidth =\r\n this._fontSize < 10 ? 0.5 : Math.floor(this._fontSize / 10);\r\n this.lineWidth(lineWidth);\r\n\r\n let lineY = y + this.currentLineHeight() / 2;\r\n this.moveTo(x, lineY);\r\n this.lineTo(x + renderedWidth, lineY);\r\n this.stroke();\r\n this.restore();\r\n }\r\n\r\n this.save();\r\n\r\n // oblique (angle in degrees or boolean)\r\n if (options.oblique) {\r\n let skew;\r\n if (typeof options.oblique === 'number') {\r\n skew = -Math.tan((options.oblique * Math.PI) / 180);\r\n } else {\r\n skew = -0.25;\r\n }\r\n this.transform(1, 0, 0, 1, x, y);\r\n this.transform(1, 0, skew, 1, -skew * dy, 0);\r\n this.transform(1, 0, 0, 1, -x, -y);\r\n }\r\n\r\n // flip coordinate system\r\n this.transform(1, 0, 0, -1, 0, this.page.height);\r\n y = this.page.height - y - dy;\r\n\r\n // add current font to page if necessary\r\n if (this.page.fonts[this._font.id] == null) {\r\n this.page.fonts[this._font.id] = this._font.ref();\r\n }\r\n\r\n // begin the text object\r\n this.addContent('BT');\r\n\r\n // text position\r\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n\r\n // font and font size\r\n this.addContent(`/${this._font.id} ${number(this._fontSize)} Tf`);\r\n\r\n // rendering mode\r\n const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\r\n if (mode) {\r\n this.addContent(`${mode} Tr`);\r\n }\r\n\r\n // Character spacing\r\n if (characterSpacing) {\r\n this.addContent(`${number(characterSpacing)} Tc`);\r\n }\r\n\r\n // Horizontal scaling\r\n if (horizontalScaling !== 100) {\r\n this.addContent(`${horizontalScaling} Tz`);\r\n }\r\n\r\n // Add the actual text\r\n // If we have a word spacing value, we need to encode each word separately\r\n // since the normal Tw operator only works on character code 32, which isn't\r\n // used for embedded fonts.\r\n if (wordSpacing) {\r\n words = text.trim().split(/\\s+/);\r\n wordSpacing += this.widthOfString(' ') + characterSpacing;\r\n wordSpacing *= 1000 / this._fontSize;\r\n\r\n encoded = [];\r\n positions = [];\r\n for (let word of words) {\r\n const [encodedWord, positionsWord] = this._font.encode(\r\n word,\r\n options.features\r\n );\r\n encoded = encoded.concat(encodedWord);\r\n positions = positions.concat(positionsWord);\r\n\r\n // add the word spacing to the end of the word\r\n // clone object because of cache\r\n const space = {};\r\n const object = positions[positions.length - 1];\r\n for (let key in object) {\r\n const val = object[key];\r\n space[key] = val;\r\n }\r\n space.xAdvance += wordSpacing;\r\n positions[positions.length - 1] = space;\r\n }\r\n } else {\r\n [encoded, positions] = this._font.encode(text, options.features);\r\n }\r\n\r\n const scale = this._fontSize / 1000;\r\n const commands = [];\r\n let last = 0;\r\n let hadOffset = false;\r\n\r\n // Adds a segment of text to the TJ command buffer\r\n const addSegment = cur => {\r\n if (last < cur) {\r\n const hex = encoded.slice(last, cur).join('');\r\n const advance =\r\n positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\r\n commands.push(`<${hex}> ${number(-advance)}`);\r\n }\r\n\r\n return (last = cur);\r\n };\r\n\r\n // Flushes the current TJ commands to the output stream\r\n const flush = i => {\r\n addSegment(i);\r\n\r\n if (commands.length > 0) {\r\n this.addContent(`[${commands.join(' ')}] TJ`);\r\n return (commands.length = 0);\r\n }\r\n };\r\n\r\n for (i = 0; i < positions.length; i++) {\r\n // If we have an x or y offset, we have to break out of the current TJ command\r\n // so we can move the text position.\r\n const pos = positions[i];\r\n if (pos.xOffset || pos.yOffset) {\r\n // Flush the current buffer\r\n flush(i);\r\n\r\n // Move the text position and flush just the current character\r\n this.addContent(\r\n `1 0 0 1 ${number(x + pos.xOffset * scale)} ${number(\r\n y + pos.yOffset * scale\r\n )} Tm`\r\n );\r\n flush(i + 1);\r\n\r\n hadOffset = true;\r\n } else {\r\n // If the last character had an offset, reset the text position\r\n if (hadOffset) {\r\n this.addContent(`1 0 0 1 ${number(x)} ${number(y)} Tm`);\r\n hadOffset = false;\r\n }\r\n\r\n // Group segments that don't have any advance adjustments\r\n if (pos.xAdvance - pos.advanceWidth !== 0) {\r\n addSegment(i + 1);\r\n }\r\n }\r\n\r\n x += pos.xAdvance * scale;\r\n }\r\n\r\n // Flush any remaining commands\r\n flush(i);\r\n\r\n // end the text object\r\n this.addContent('ET');\r\n\r\n // restore flipped coordinate system\r\n return this.restore();\r\n }\r\n};\r\n","import exif from 'jpeg-exif';\r\n\r\nconst MARKERS = [\r\n 0xffc0,\r\n 0xffc1,\r\n 0xffc2,\r\n 0xffc3,\r\n 0xffc5,\r\n 0xffc6,\r\n 0xffc7,\r\n 0xffc8,\r\n 0xffc9,\r\n 0xffca,\r\n 0xffcb,\r\n 0xffcc,\r\n 0xffcd,\r\n 0xffce,\r\n 0xffcf\r\n];\r\n\r\nconst COLOR_SPACE_MAP = {\r\n 1: 'DeviceGray',\r\n 3: 'DeviceRGB',\r\n 4: 'DeviceCMYK'\r\n};\r\n\r\nclass JPEG {\r\n constructor(data, label) {\r\n let marker;\r\n this.data = data;\r\n this.label = label;\r\n if (this.data.readUInt16BE(0) !== 0xffd8) {\r\n throw 'SOI not found in JPEG';\r\n }\r\n\r\n // Parse the EXIF orientation\r\n this.orientation = exif.fromBuffer(this.data).Orientation || 1;\r\n\r\n let pos = 2;\r\n while (pos < this.data.length) {\r\n marker = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n if (MARKERS.includes(marker)) {\r\n break;\r\n }\r\n pos += this.data.readUInt16BE(pos);\r\n }\r\n\r\n if (!MARKERS.includes(marker)) {\r\n throw 'Invalid JPEG.';\r\n }\r\n pos += 2;\r\n\r\n this.bits = this.data[pos++];\r\n this.height = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n\r\n this.width = this.data.readUInt16BE(pos);\r\n pos += 2;\r\n\r\n const channels = this.data[pos++];\r\n this.colorSpace = COLOR_SPACE_MAP[channels];\r\n\r\n this.obj = null;\r\n }\r\n\r\n embed(document) {\r\n if (this.obj) {\r\n return;\r\n }\r\n\r\n this.obj = document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n BitsPerComponent: this.bits,\r\n Width: this.width,\r\n Height: this.height,\r\n ColorSpace: this.colorSpace,\r\n Filter: 'DCTDecode'\r\n });\r\n\r\n // add extra decode params for CMYK images. By swapping the\r\n // min and max values from the default, we invert the colors. See\r\n // section 4.8.4 of the spec.\r\n if (this.colorSpace === 'DeviceCMYK') {\r\n this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\r\n }\r\n\r\n this.obj.end(this.data);\r\n\r\n // free memory\r\n return (this.data = null);\r\n }\r\n}\r\n\r\nexport default JPEG;\r\n","import zlib from 'zlib';\r\nimport PNG from 'png-js';\r\n\r\nclass PNGImage {\r\n constructor(data, label) {\r\n this.label = label;\r\n this.image = new PNG(data);\r\n this.width = this.image.width;\r\n this.height = this.image.height;\r\n this.imgData = this.image.imgData;\r\n this.obj = null;\r\n }\r\n\r\n embed(document) {\r\n let dataDecoded = false;\r\n\r\n this.document = document;\r\n if (this.obj) {\r\n return;\r\n }\r\n\r\n const hasAlphaChannel = this.image.hasAlphaChannel;\r\n const isInterlaced = this.image.interlaceMethod === 1;\r\n\r\n this.obj = this.document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\r\n Width: this.width,\r\n Height: this.height,\r\n Filter: 'FlateDecode'\r\n });\r\n\r\n if (!hasAlphaChannel) {\r\n const params = this.document.ref({\r\n Predictor: isInterlaced ? 1 : 15,\r\n Colors: this.image.colors,\r\n BitsPerComponent: this.image.bits,\r\n Columns: this.width\r\n });\r\n\r\n this.obj.data['DecodeParms'] = params;\r\n params.end();\r\n }\r\n\r\n if (this.image.palette.length === 0) {\r\n this.obj.data['ColorSpace'] = this.image.colorSpace;\r\n } else {\r\n // embed the color palette in the PDF as an object stream\r\n const palette = this.document.ref();\r\n palette.end(Buffer.from(this.image.palette));\r\n\r\n // build the color space array for the image\r\n this.obj.data['ColorSpace'] = [\r\n 'Indexed',\r\n 'DeviceRGB',\r\n this.image.palette.length / 3 - 1,\r\n palette\r\n ];\r\n }\r\n\r\n // For PNG color types 0, 2 and 3, the transparency data is stored in\r\n // a dedicated PNG chunk.\r\n if (this.image.transparency.grayscale != null) {\r\n // Use Color Key Masking (spec section 4.8.5)\r\n // An array with N elements, where N is two times the number of color components.\r\n const val = this.image.transparency.grayscale;\r\n this.obj.data['Mask'] = [val, val];\r\n } else if (this.image.transparency.rgb) {\r\n // Use Color Key Masking (spec section 4.8.5)\r\n // An array with N elements, where N is two times the number of color components.\r\n const { rgb } = this.image.transparency;\r\n const mask = [];\r\n for (let x of rgb) {\r\n mask.push(x, x);\r\n }\r\n\r\n this.obj.data['Mask'] = mask;\r\n } else if (this.image.transparency.indexed) {\r\n // Create a transparency SMask for the image based on the data\r\n // in the PLTE and tRNS sections. See below for details on SMasks.\r\n dataDecoded = true;\r\n return this.loadIndexedAlphaChannel();\r\n } else if (hasAlphaChannel) {\r\n // For PNG color types 4 and 6, the transparency data is stored as a alpha\r\n // channel mixed in with the main image data. Separate this data out into an\r\n // SMask object and store it separately in the PDF.\r\n dataDecoded = true;\r\n return this.splitAlphaChannel();\r\n }\r\n\r\n if (isInterlaced && !dataDecoded) {\r\n return this.decodeData();\r\n }\r\n\r\n this.finalize();\r\n }\r\n\r\n finalize() {\r\n if (this.alphaChannel) {\r\n const sMask = this.document.ref({\r\n Type: 'XObject',\r\n Subtype: 'Image',\r\n Height: this.height,\r\n Width: this.width,\r\n BitsPerComponent: 8,\r\n Filter: 'FlateDecode',\r\n ColorSpace: 'DeviceGray',\r\n Decode: [0, 1]\r\n });\r\n\r\n sMask.end(this.alphaChannel);\r\n this.obj.data['SMask'] = sMask;\r\n }\r\n\r\n // add the actual image data\r\n this.obj.end(this.imgData);\r\n\r\n // free memory\r\n this.image = null;\r\n return (this.imgData = null);\r\n }\r\n\r\n splitAlphaChannel() {\r\n return this.image.decodePixels(pixels => {\r\n let a, p;\r\n const colorCount = this.image.colors;\r\n const pixelCount = this.width * this.height;\r\n const imgData = Buffer.alloc(pixelCount * colorCount);\r\n const alphaChannel = Buffer.alloc(pixelCount);\r\n\r\n let i = (p = a = 0);\r\n const len = pixels.length;\r\n // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\r\n const skipByteCount = this.image.bits === 16 ? 1 : 0;\r\n while (i < len) {\r\n for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) {\r\n imgData[p++] = pixels[i++];\r\n i += skipByteCount;\r\n }\r\n alphaChannel[a++] = pixels[i++];\r\n i += skipByteCount;\r\n }\r\n\r\n this.imgData = zlib.deflateSync(imgData);\r\n this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n return this.finalize();\r\n });\r\n }\r\n\r\n loadIndexedAlphaChannel() {\r\n const transparency = this.image.transparency.indexed;\r\n return this.image.decodePixels(pixels => {\r\n const alphaChannel = Buffer.alloc(this.width * this.height);\r\n\r\n let i = 0;\r\n for (let j = 0, end = pixels.length; j < end; j++) {\r\n alphaChannel[i++] = transparency[pixels[j]];\r\n }\r\n\r\n this.alphaChannel = zlib.deflateSync(alphaChannel);\r\n return this.finalize();\r\n });\r\n }\r\n\r\n decodeData() {\r\n this.image.decodePixels(pixels => {\r\n this.imgData = zlib.deflateSync(pixels);\r\n this.finalize();\r\n });\r\n }\r\n}\r\n\r\nexport default PNGImage;\r\n","/*\r\nPDFImage - embeds images in PDF documents\r\nBy Devon Govett\r\n*/\r\n\r\nimport fs from 'fs';\r\nimport JPEG from './image/jpeg';\r\nimport PNG from './image/png';\r\n\r\nclass PDFImage {\r\n static open(src, label) {\r\n let data;\r\n if (Buffer.isBuffer(src)) {\r\n data = src;\r\n } else if (src instanceof ArrayBuffer) {\r\n data = Buffer.from(new Uint8Array(src));\r\n } else {\r\n let match;\r\n if ((match = /^data:.+?;base64,(.*)$/.exec(src))) {\r\n data = Buffer.from(match[1], 'base64');\r\n } else {\r\n data = fs.readFileSync(src);\r\n if (!data) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (data[0] === 0xff && data[1] === 0xd8) {\r\n return new JPEG(data, label);\r\n } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\r\n return new PNG(data, label);\r\n } else {\r\n throw new Error('Unknown image format.');\r\n }\r\n }\r\n}\r\n\r\nexport default PDFImage;\r\n","import PDFImage from '../image';\r\n\r\nexport default {\r\n initImages() {\r\n this._imageRegistry = {};\r\n return (this._imageCount = 0);\r\n },\r\n\r\n image(src, x, y, options = {}) {\r\n let bh, bp, bw, image, ip, left, left1, rotateAngle, originX, originY;\r\n if (typeof x === 'object') {\r\n options = x;\r\n x = null;\r\n }\r\n\r\n // Ignore orientation based on document options or image options\r\n const ignoreOrientation =\r\n options.ignoreOrientation ||\r\n (options.ignoreOrientation !== false && this.options.ignoreOrientation);\r\n\r\n x = (left = x != null ? x : options.x) != null ? left : this.x;\r\n y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\r\n\r\n if (typeof src === 'string') {\r\n image = this._imageRegistry[src];\r\n }\r\n\r\n if (!image) {\r\n if (src.width && src.height) {\r\n image = src;\r\n } else {\r\n image = this.openImage(src);\r\n }\r\n }\r\n\r\n if (!image.obj) {\r\n image.embed(this);\r\n }\r\n\r\n if (this.page.xobjects[image.label] == null) {\r\n this.page.xobjects[image.label] = image.obj;\r\n }\r\n\r\n let { width, height } = image;\r\n\r\n // If EXIF orientation calls for it, swap width and height\r\n if (!ignoreOrientation && image.orientation > 4) {\r\n [width, height] = [height, width];\r\n }\r\n\r\n let w = options.width || width;\r\n let h = options.height || height;\r\n\r\n if (options.width && !options.height) {\r\n const wp = w / width;\r\n w = width * wp;\r\n h = height * wp;\r\n } else if (options.height && !options.width) {\r\n const hp = h / height;\r\n w = width * hp;\r\n h = height * hp;\r\n } else if (options.scale) {\r\n w = width * options.scale;\r\n h = height * options.scale;\r\n } else if (options.fit) {\r\n [bw, bh] = options.fit;\r\n bp = bw / bh;\r\n ip = width / height;\r\n if (ip > bp) {\r\n w = bw;\r\n h = bw / ip;\r\n } else {\r\n h = bh;\r\n w = bh * ip;\r\n }\r\n } else if (options.cover) {\r\n [bw, bh] = options.cover;\r\n bp = bw / bh;\r\n ip = width / height;\r\n if (ip > bp) {\r\n h = bh;\r\n w = bh * ip;\r\n } else {\r\n w = bw;\r\n h = bw / ip;\r\n }\r\n }\r\n\r\n if (options.fit || options.cover) {\r\n if (options.align === 'center') {\r\n x = x + bw / 2 - w / 2;\r\n } else if (options.align === 'right') {\r\n x = x + bw - w;\r\n }\r\n\r\n if (options.valign === 'center') {\r\n y = y + bh / 2 - h / 2;\r\n } else if (options.valign === 'bottom') {\r\n y = y + bh - h;\r\n }\r\n }\r\n\r\n if (!ignoreOrientation) {\r\n switch (image.orientation) {\r\n // No orientation (need to flip image, though, because of the default transform matrix on the document)\r\n default:\r\n case 1:\r\n h = -h;\r\n y -= h;\r\n\r\n rotateAngle = 0;\r\n break;\r\n // Flip Horizontal\r\n case 2:\r\n w = -w;\r\n h = -h;\r\n x -= w;\r\n y -= h;\r\n\r\n rotateAngle = 0;\r\n break;\r\n // Rotate 180 degrees\r\n case 3:\r\n originX = x;\r\n originY = y;\r\n\r\n h = -h;\r\n x -= w;\r\n\r\n rotateAngle = 180;\r\n break;\r\n // Flip vertical\r\n case 4:\r\n // Do nothing, image will be flipped\r\n\r\n break;\r\n // Flip horizontally and rotate 270 degrees CW\r\n case 5:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n y -= h;\r\n\r\n rotateAngle = 90;\r\n break;\r\n // Rotate 90 degrees CW\r\n case 6:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n h = -h;\r\n\r\n rotateAngle = 90;\r\n break;\r\n // Flip horizontally and rotate 90 degrees CW\r\n case 7:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n h = -h;\r\n w = -w;\r\n x -= w;\r\n\r\n rotateAngle = 90;\r\n break;\r\n // Rotate 270 degrees CW\r\n case 8:\r\n originX = x;\r\n originY = y;\r\n\r\n [w, h] = [h, w];\r\n h = -h;\r\n x -= w;\r\n y -= h;\r\n\r\n rotateAngle = -90;\r\n break;\r\n }\r\n } else {\r\n h = -h;\r\n y -= h;\r\n rotateAngle = 0;\r\n }\r\n\r\n // create link annotations if the link option is given\r\n if (options.link != null) {\r\n this.link(x, y, w, h, options.link);\r\n }\r\n if (options.goTo != null) {\r\n this.goTo(x, y, w, h, options.goTo);\r\n }\r\n if (options.destination != null) {\r\n this.addNamedDestination(options.destination, 'XYZ', x, y, null);\r\n }\r\n\r\n // Set the current y position to below the image if it is in the document flow\r\n if (this.y === y) {\r\n this.y += h;\r\n }\r\n\r\n this.save();\r\n\r\n if (rotateAngle) {\r\n this.rotate(rotateAngle, {\r\n origin: [originX, originY]\r\n });\r\n }\r\n\r\n this.transform(w, 0, 0, h, x, y);\r\n this.addContent(`/${image.label} Do`);\r\n this.restore();\r\n\r\n return this;\r\n },\r\n\r\n openImage(src) {\r\n let image;\r\n if (typeof src === 'string') {\r\n image = this._imageRegistry[src];\r\n }\r\n\r\n if (!image) {\r\n image = PDFImage.open(src, `I${++this._imageCount}`);\r\n if (typeof src === 'string') {\r\n this._imageRegistry[src] = image;\r\n }\r\n }\r\n\r\n return image;\r\n }\r\n};\r\n","export default {\r\n annotate(x, y, w, h, options) {\r\n options.Type = 'Annot';\r\n options.Rect = this._convertRect(x, y, w, h);\r\n options.Border = [0, 0, 0];\r\n\r\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\r\n options.F = 1 << 2; // Print Annotation Flag\r\n }\r\n\r\n if (options.Subtype !== 'Link') {\r\n if (options.C == null) {\r\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\r\n }\r\n } // convert colors\r\n delete options.color;\r\n\r\n if (typeof options.Dest === 'string') {\r\n options.Dest = new String(options.Dest);\r\n }\r\n\r\n // Capitalize keys\r\n for (let key in options) {\r\n const val = options[key];\r\n options[key[0].toUpperCase() + key.slice(1)] = val;\r\n }\r\n\r\n const ref = this.ref(options);\r\n this.page.annotations.push(ref);\r\n ref.end();\r\n return this;\r\n },\r\n\r\n note(x, y, w, h, contents, options = {}) {\r\n options.Subtype = 'Text';\r\n options.Contents = new String(contents);\r\n if (options.Name == null) {\r\n options.Name = 'Comment';\r\n }\r\n if (options.color == null) {\r\n options.color = [243, 223, 92];\r\n }\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n goTo(x, y, w, h, name, options = {}) {\r\n options.Subtype = 'Link';\r\n options.A = this.ref({\r\n S: 'GoTo',\r\n D: new String(name)\r\n });\r\n options.A.end();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n link(x, y, w, h, url, options = {}) {\r\n options.Subtype = 'Link';\r\n\r\n if (typeof url === 'number') {\r\n // Link to a page in the document (the page must already exist)\r\n const pages = this._root.data.Pages.data;\r\n if (url >= 0 && url < pages.Kids.length) {\r\n options.A = this.ref({\r\n S: 'GoTo',\r\n D: [pages.Kids[url], 'XYZ', null, null, null]\r\n });\r\n options.A.end();\r\n } else {\r\n throw new Error(`The document has no page ${url}`);\r\n }\r\n } else {\r\n // Link to an external url\r\n options.A = this.ref({\r\n S: 'URI',\r\n URI: new String(url)\r\n });\r\n options.A.end();\r\n }\r\n\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n _markup(x, y, w, h, options = {}) {\r\n const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\r\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n highlight(x, y, w, h, options = {}) {\r\n options.Subtype = 'Highlight';\r\n if (options.color == null) {\r\n options.color = [241, 238, 148];\r\n }\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n underline(x, y, w, h, options = {}) {\r\n options.Subtype = 'Underline';\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n strike(x, y, w, h, options = {}) {\r\n options.Subtype = 'StrikeOut';\r\n return this._markup(x, y, w, h, options);\r\n },\r\n\r\n lineAnnotation(x1, y1, x2, y2, options = {}) {\r\n options.Subtype = 'Line';\r\n options.Contents = new String();\r\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\r\n return this.annotate(x1, y1, x2, y2, options);\r\n },\r\n\r\n rectAnnotation(x, y, w, h, options = {}) {\r\n options.Subtype = 'Square';\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n ellipseAnnotation(x, y, w, h, options = {}) {\r\n options.Subtype = 'Circle';\r\n options.Contents = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n textAnnotation(x, y, w, h, text, options = {}) {\r\n options.Subtype = 'FreeText';\r\n options.Contents = new String(text);\r\n options.DA = new String();\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n fileAnnotation(x, y, w, h, file = {}, options = {}) {\r\n // create hidden file\r\n const filespec = this.file(\r\n file.src,\r\n Object.assign({ hidden: true }, file)\r\n );\r\n\r\n options.Subtype = 'FileAttachment';\r\n options.FS = filespec;\r\n\r\n // add description from filespec unless description (Contents) has already been set\r\n if (options.Contents) {\r\n options.Contents = new String(options.Contents);\r\n } else if (filespec.data.Desc) {\r\n options.Contents = filespec.data.Desc;\r\n }\r\n\r\n return this.annotate(x, y, w, h, options);\r\n },\r\n\r\n _convertRect(x1, y1, w, h) {\r\n // flip y1 and y2\r\n let y2 = y1;\r\n y1 += h;\r\n\r\n // make x2\r\n let x2 = x1 + w;\r\n\r\n // apply current transformation matrix to points\r\n const [m0, m1, m2, m3, m4, m5] = this._ctm;\r\n x1 = m0 * x1 + m2 * y1 + m4;\r\n y1 = m1 * x1 + m3 * y1 + m5;\r\n x2 = m0 * x2 + m2 * y2 + m4;\r\n y2 = m1 * x2 + m3 * y2 + m5;\r\n\r\n return [x1, y1, x2, y2];\r\n }\r\n};\r\n","class PDFOutline {\r\n constructor(document, parent, title, dest, options = { expanded: false }) {\r\n this.document = document;\r\n this.options = options;\r\n this.outlineData = {};\r\n\r\n if (dest !== null) {\r\n this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\r\n }\r\n\r\n if (parent !== null) {\r\n this.outlineData['Parent'] = parent;\r\n }\r\n\r\n if (title !== null) {\r\n this.outlineData['Title'] = new String(title);\r\n }\r\n\r\n this.dictionary = this.document.ref(this.outlineData);\r\n this.children = [];\r\n }\r\n\r\n addItem(title, options = { expanded: false }) {\r\n const result = new PDFOutline(\r\n this.document,\r\n this.dictionary,\r\n title,\r\n this.document.page,\r\n options\r\n );\r\n this.children.push(result);\r\n\r\n return result;\r\n }\r\n\r\n endOutline() {\r\n if (this.children.length > 0) {\r\n if (this.options.expanded) {\r\n this.outlineData.Count = this.children.length;\r\n }\r\n\r\n const first = this.children[0],\r\n last = this.children[this.children.length - 1];\r\n this.outlineData.First = first.dictionary;\r\n this.outlineData.Last = last.dictionary;\r\n\r\n for (let i = 0, len = this.children.length; i < len; i++) {\r\n const child = this.children[i];\r\n if (i > 0) {\r\n child.outlineData.Prev = this.children[i - 1].dictionary;\r\n }\r\n if (i < this.children.length - 1) {\r\n child.outlineData.Next = this.children[i + 1].dictionary;\r\n }\r\n child.endOutline();\r\n }\r\n }\r\n\r\n return this.dictionary.end();\r\n }\r\n}\r\n\r\nexport default PDFOutline;\r\n","import PDFOutline from '../outline';\r\n\r\nexport default {\r\n initOutline() {\r\n return (this.outline = new PDFOutline(this, null, null, null));\r\n },\r\n\r\n endOutline() {\r\n this.outline.endOutline();\r\n if (this.outline.children.length > 0) {\r\n this._root.data.Outlines = this.outline.dictionary;\r\n return (this._root.data.PageMode = 'UseOutlines');\r\n }\r\n }\r\n};\r\n","/*\r\nPDFStructureContent - a reference to a marked structure content\r\nBy Ben Schmidt\r\n*/\r\n\r\nclass PDFStructureContent {\r\n constructor(pageRef, mcid) {\r\n this.refs = [{ pageRef, mcid }];\r\n }\r\n\r\n push(structContent) {\r\n structContent.refs.forEach((ref) => this.refs.push(ref));\r\n }\r\n}\r\n\r\nexport default PDFStructureContent;\r\n","/*\r\nPDFStructureElement - represents an element in the PDF logical structure tree\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureContent from \"./structure_content\";\r\n\r\nclass PDFStructureElement {\r\n constructor(document, type, options = {}, children = null) {\r\n this.document = document;\r\n\r\n this._attached = false;\r\n this._ended = false;\r\n this._flushed = false;\r\n this.dictionary = document.ref({\r\n // Type: \"StructElem\",\r\n S: type\r\n });\r\n\r\n const data = this.dictionary.data;\r\n\r\n if (Array.isArray(options) || this._isValidChild(options)) {\r\n children = options;\r\n options = {};\r\n }\r\n\r\n if (typeof options.title !== 'undefined') {\r\n data.T = new String(options.title);\r\n }\r\n if (typeof options.lang !== 'undefined') {\r\n data.Lang = new String(options.lang);\r\n }\r\n if (typeof options.alt !== 'undefined') {\r\n data.Alt = new String(options.alt);\r\n }\r\n if (typeof options.expanded !== 'undefined') {\r\n data.E = new String(options.expanded);\r\n }\r\n if (typeof options.actual !== 'undefined') {\r\n data.ActualText = new String(options.actual);\r\n }\r\n\r\n this._children = [];\r\n\r\n if (children) {\r\n if (!Array.isArray(children)) {\r\n children = [children];\r\n }\r\n children.forEach((child) => this.add(child));\r\n this.end();\r\n }\r\n }\r\n\r\n add(child) {\r\n if (this._ended) {\r\n throw new Error(`Cannot add child to already-ended structure element`);\r\n }\r\n\r\n if (!this._isValidChild(child)) {\r\n throw new Error(`Invalid structure element child`);\r\n }\r\n\r\n if (child instanceof PDFStructureElement) {\r\n child.setParent(this.dictionary);\r\n if (this._attached) {\r\n child.setAttached();\r\n }\r\n }\r\n\r\n if (child instanceof PDFStructureContent) {\r\n this._addContentToParentTree(child);\r\n }\r\n\r\n if (typeof child === 'function' && this._attached) {\r\n // _contentForClosure() adds the content to the parent tree\r\n child = this._contentForClosure(child);\r\n }\r\n\r\n this._children.push(child);\r\n\r\n return this;\r\n }\r\n\r\n _addContentToParentTree(content) {\r\n content.refs.forEach(({ pageRef, mcid }) => {\r\n const pageStructParents = this.document.getStructParentTree()\r\n .get(pageRef.data.StructParents);\r\n pageStructParents[mcid] = this.dictionary;\r\n });\r\n }\r\n\r\n setParent(parentRef) {\r\n if (this.dictionary.data.P) {\r\n throw new Error(`Structure element added to more than one parent`);\r\n }\r\n\r\n this.dictionary.data.P = parentRef;\r\n\r\n this._flush();\r\n }\r\n\r\n setAttached() {\r\n if (this._attached) {\r\n return;\r\n }\r\n\r\n this._children.forEach((child, index) => {\r\n if (child instanceof PDFStructureElement) {\r\n child.setAttached();\r\n }\r\n if (typeof child === 'function') {\r\n this._children[index] = this._contentForClosure(child);\r\n }\r\n });\r\n\r\n this._attached = true;\r\n\r\n this._flush();\r\n }\r\n\r\n end() {\r\n if (this._ended) {\r\n return;\r\n }\r\n\r\n this._children\r\n .filter((child) => child instanceof PDFStructureElement)\r\n .forEach((child) => child.end());\r\n\r\n this._ended = true;\r\n\r\n this._flush();\r\n }\r\n\r\n _isValidChild(child) {\r\n return child instanceof PDFStructureElement ||\r\n child instanceof PDFStructureContent ||\r\n typeof child === 'function';\r\n }\r\n\r\n _contentForClosure(closure) {\r\n const content = this.document.markStructureContent(this.dictionary.data.S);\r\n closure();\r\n this.document.endMarkedContent();\r\n\r\n this._addContentToParentTree(content);\r\n\r\n return content;\r\n }\r\n\r\n _isFlushable() {\r\n if (!this.dictionary.data.P || !this._ended) {\r\n return false;\r\n }\r\n\r\n return this._children.every((child) => {\r\n if (typeof child === 'function') {\r\n return false;\r\n }\r\n if (child instanceof PDFStructureElement) {\r\n return child._isFlushable();\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n _flush() {\r\n if (this._flushed || !this._isFlushable()) {\r\n return;\r\n }\r\n\r\n this.dictionary.data.K = [];\r\n\r\n this._children.forEach((child) => this._flushChild(child));\r\n\r\n this.dictionary.end();\r\n\r\n // free memory used by children; the dictionary itself may still be\r\n // referenced by a parent structure element or root, but we can\r\n // at least trim the tree here\r\n this._children = [];\r\n this.dictionary.data.K = null;\r\n\r\n this._flushed = true;\r\n }\r\n\r\n _flushChild(child) {\r\n if (child instanceof PDFStructureElement) {\r\n this.dictionary.data.K.push(child.dictionary);\r\n }\r\n\r\n if (child instanceof PDFStructureContent) {\r\n child.refs.forEach(({ pageRef, mcid }) => {\r\n if (!this.dictionary.data.Pg) {\r\n this.dictionary.data.Pg = pageRef;\r\n }\r\n\r\n if (this.dictionary.data.Pg === pageRef) {\r\n this.dictionary.data.K.push(mcid);\r\n } else {\r\n this.dictionary.data.K.push({\r\n Type: \"MCR\",\r\n Pg: pageRef,\r\n MCID: mcid\r\n });\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default PDFStructureElement;\r\n","/*\r\nPDFNumberTree - represents a number tree object\r\n*/\r\n\r\nimport PDFTree from \"./tree\";\r\n\r\nclass PDFNumberTree extends PDFTree {\r\n _compareKeys(a, b) {\r\n return parseInt(a) - parseInt(b);\r\n }\r\n\r\n _keysName() {\r\n return \"Nums\";\r\n }\r\n\r\n _dataForKey(k) {\r\n return parseInt(k);\r\n }\r\n}\r\n\r\nexport default PDFNumberTree;\r\n","/*\r\nMarkings mixin - support marked content sequences in content streams\r\nBy Ben Schmidt\r\n*/\r\n\r\nimport PDFStructureElement from \"../structure_element\";\r\nimport PDFStructureContent from \"../structure_content\";\r\nimport PDFNumberTree from \"../number_tree\";\r\nimport PDFObject from \"../object\";\r\n\r\nexport default {\r\n\r\n initMarkings(options) {\r\n this.structChildren = [];\r\n\r\n if (options.tagged) {\r\n this.getMarkInfoDictionary().data.Marked = true;\r\n this.getStructTreeRoot();\r\n }\r\n },\r\n\r\n markContent(tag, options = null) {\r\n if (tag === 'Artifact' || (options && options.mcid)) {\r\n let toClose = 0;\r\n this.page.markings.forEach((marking) => {\r\n if (toClose || marking.structContent || marking.tag === 'Artifact') {\r\n toClose++;\r\n }\r\n });\r\n while (toClose--) {\r\n this.endMarkedContent();\r\n }\r\n }\r\n\r\n if (!options) {\r\n this.page.markings.push({ tag });\r\n this.addContent(`/${tag} BMC`);\r\n return this;\r\n }\r\n\r\n this.page.markings.push({ tag, options });\r\n\r\n const dictionary = {};\r\n\r\n if (typeof options.mcid !== 'undefined') {\r\n dictionary.MCID = options.mcid;\r\n }\r\n if (tag === 'Artifact') {\r\n if (typeof options.type === 'string') {\r\n dictionary.Type = options.type;\r\n }\r\n if (Array.isArray(options.bbox)) {\r\n dictionary.BBox = [options.bbox[0], this.page.height - options.bbox[3],\r\n options.bbox[2], this.page.height - options.bbox[1]];\r\n }\r\n if (Array.isArray(options.attached) &&\r\n options.attached.every(val => typeof val === 'string')) {\r\n dictionary.Attached = options.attached;\r\n }\r\n }\r\n if (tag === 'Span') {\r\n if (options.lang) {\r\n dictionary.Lang = new String(options.lang);\r\n }\r\n if (options.alt) {\r\n dictionary.Alt = new String(options.alt);\r\n }\r\n if (options.expanded) {\r\n dictionary.E = new String(options.expanded);\r\n }\r\n if (options.actual) {\r\n dictionary.ActualText = new String(options.actual);\r\n }\r\n }\r\n\r\n this.addContent(`/${tag} ${PDFObject.convert(dictionary)} BDC`);\r\n return this;\r\n },\r\n\r\n markStructureContent(tag, options = {}) {\r\n const pageStructParents = this.getStructParentTree().get(this.page.structParentTreeKey);\r\n const mcid = pageStructParents.length;\r\n pageStructParents.push(null);\r\n\r\n this.markContent(tag, { ...options, mcid });\r\n\r\n const structContent = new PDFStructureContent(this.page.dictionary, mcid);\r\n this.page.markings.slice(-1)[0].structContent = structContent;\r\n return structContent;\r\n },\r\n\r\n endMarkedContent() {\r\n this.page.markings.pop();\r\n this.addContent('EMC');\r\n return this;\r\n },\r\n\r\n struct(type, options = {}, children = null) {\r\n return new PDFStructureElement(this, type, options, children);\r\n },\r\n\r\n addStructure(structElem) {\r\n const structTreeRoot = this.getStructTreeRoot();\r\n structElem.setParent(structTreeRoot);\r\n structElem.setAttached();\r\n this.structChildren.push(structElem);\r\n if (!structTreeRoot.data.K) {\r\n structTreeRoot.data.K = [];\r\n }\r\n structTreeRoot.data.K.push(structElem.dictionary);\r\n return this;\r\n },\r\n\r\n initPageMarkings(pageMarkings) {\r\n pageMarkings.forEach((marking) => {\r\n if (marking.structContent) {\r\n const structContent = marking.structContent;\r\n const newStructContent = this.markStructureContent(marking.tag, marking.options);\r\n structContent.push(newStructContent);\r\n this.page.markings.slice(-1)[0].structContent = structContent;\r\n } else {\r\n this.markContent(marking.tag, marking.options);\r\n }\r\n });\r\n },\r\n\r\n endPageMarkings(page) {\r\n const pageMarkings = page.markings;\r\n pageMarkings.forEach(() => page.write('EMC'));\r\n page.markings = [];\r\n return pageMarkings;\r\n },\r\n\r\n getMarkInfoDictionary() {\r\n if (!this._root.data.MarkInfo) {\r\n this._root.data.MarkInfo = this.ref({});\r\n }\r\n return this._root.data.MarkInfo;\r\n },\r\n\r\n hasMarkInfoDictionary() {\r\n return !!this._root.data.MarkInfo;\r\n },\r\n\r\n getStructTreeRoot() {\r\n if (!this._root.data.StructTreeRoot) {\r\n this._root.data.StructTreeRoot = this.ref({\r\n Type: 'StructTreeRoot',\r\n ParentTree: new PDFNumberTree(),\r\n ParentTreeNextKey: 0\r\n });\r\n }\r\n return this._root.data.StructTreeRoot;\r\n },\r\n\r\n getStructParentTree() {\r\n return this.getStructTreeRoot().data.ParentTree;\r\n },\r\n\r\n createStructParentTreeNextKey() {\r\n // initialise the MarkInfo dictionary\r\n this.getMarkInfoDictionary();\r\n\r\n const structTreeRoot = this.getStructTreeRoot();\r\n const key = structTreeRoot.data.ParentTreeNextKey++;\r\n structTreeRoot.data.ParentTree.add(key, []);\r\n return key;\r\n },\r\n\r\n endMarkings() {\r\n const structTreeRoot = this._root.data.StructTreeRoot;\r\n if (structTreeRoot) {\r\n structTreeRoot.end();\r\n this.structChildren.forEach((structElem) => structElem.end());\r\n }\r\n if (this._root.data.MarkInfo) {\r\n this._root.data.MarkInfo.end();\r\n }\r\n }\r\n\r\n};\r\n","const FIELD_FLAGS = {\r\n readOnly: 1,\r\n required: 2,\r\n noExport: 4,\r\n multiline: 0x1000,\r\n password: 0x2000,\r\n toggleToOffButton: 0x4000,\r\n radioButton: 0x8000,\r\n pushButton: 0x10000,\r\n combo: 0x20000,\r\n edit: 0x40000,\r\n sort: 0x80000,\r\n multiSelect: 0x200000,\r\n noSpell: 0x400000\r\n};\r\nconst FIELD_JUSTIFY = {\r\n left: 0,\r\n center: 1,\r\n right: 2\r\n};\r\nconst VALUE_MAP = { value: 'V', defaultValue: 'DV' };\r\nconst FORMAT_SPECIAL = {\r\n zip: '0',\r\n zipPlus4: '1',\r\n zip4: '1',\r\n phone: '2',\r\n ssn: '3'\r\n};\r\nconst FORMAT_DEFAULT = {\r\n number: {\r\n nDec: 0,\r\n sepComma: false,\r\n negStyle: 'MinusBlack',\r\n currency: '',\r\n currencyPrepend: true\r\n },\r\n percent: {\r\n nDec: 0,\r\n sepComma: false\r\n }\r\n};\r\n\r\nexport default {\r\n /**\r\n * Must call if adding AcroForms to a document. Must also call font() before\r\n * this method to set the default font.\r\n */\r\n initForm() {\r\n if (!this._font) {\r\n throw new Error('Must set a font before calling initForm method');\r\n }\r\n this._acroform = {\r\n fonts: {},\r\n defaultFont: this._font.name\r\n };\r\n this._acroform.fonts[this._font.id] = this._font.ref();\r\n\r\n let data = {\r\n Fields: [],\r\n NeedAppearances: true,\r\n DA: new String(`/${this._font.id} 0 Tf 0 g`),\r\n DR: {\r\n Font: {}\r\n }\r\n };\r\n data.DR.Font[this._font.id] = this._font.ref();\r\n const AcroForm = this.ref(data);\r\n this._root.data.AcroForm = AcroForm;\r\n return this;\r\n },\r\n\r\n /**\r\n * Called automatically by document.js\r\n */\r\n endAcroForm() {\r\n if (this._root.data.AcroForm) {\r\n if (\r\n !Object.keys(this._acroform.fonts).length &&\r\n !this._acroform.defaultFont\r\n ) {\r\n throw new Error('No fonts specified for PDF form');\r\n }\r\n let fontDict = this._root.data.AcroForm.data.DR.Font;\r\n Object.keys(this._acroform.fonts).forEach(name => {\r\n fontDict[name] = this._acroform.fonts[name];\r\n });\r\n this._root.data.AcroForm.data.Fields.forEach(fieldRef => {\r\n this._endChild(fieldRef);\r\n });\r\n this._root.data.AcroForm.end();\r\n }\r\n return this;\r\n },\r\n\r\n _endChild(ref) {\r\n if (Array.isArray(ref.data.Kids)) {\r\n ref.data.Kids.forEach(childRef => {\r\n this._endChild(childRef);\r\n });\r\n ref.end();\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Creates and adds a form field to the document. Form fields are intermediate\r\n * nodes in a PDF form that are used to specify form name heirarchy and form\r\n * value defaults.\r\n * @param {string} name - field name (T attribute in field dictionary)\r\n * @param {object} options - other attributes to include in field dictionary\r\n */\r\n formField(name, options = {}) {\r\n let fieldDict = this._fieldDict(name, null, options);\r\n let fieldRef = this.ref(fieldDict);\r\n this._addToParent(fieldRef);\r\n return fieldRef;\r\n },\r\n\r\n /**\r\n * Creates and adds a Form Annotation to the document. Form annotations are\r\n * called Widget annotations internally within a PDF file.\r\n * @param {string} name - form field name (T attribute of widget annotation\r\n * dictionary)\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} w\r\n * @param {number} h\r\n * @param {object} options\r\n */\r\n formAnnotation(name, type, x, y, w, h, options = {}) {\r\n let fieldDict = this._fieldDict(name, type, options);\r\n fieldDict.Subtype = 'Widget';\r\n if (fieldDict.F === undefined) {\r\n fieldDict.F = 4; // print the annotation\r\n }\r\n\r\n // Add Field annot to page, and get it's ref\r\n this.annotate(x, y, w, h, fieldDict);\r\n let annotRef = this.page.annotations[this.page.annotations.length - 1];\r\n\r\n return this._addToParent(annotRef);\r\n },\r\n\r\n formText(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'text', x, y, w, h, options);\r\n },\r\n\r\n formPushButton(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\r\n },\r\n\r\n formCombo(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'combo', x, y, w, h, options);\r\n },\r\n\r\n formList(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'list', x, y, w, h, options);\r\n },\r\n\r\n formRadioButton(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\r\n },\r\n\r\n formCheckbox(name, x, y, w, h, options = {}) {\r\n return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\r\n },\r\n\r\n _addToParent(fieldRef) {\r\n let parent = fieldRef.data.Parent;\r\n if (parent) {\r\n if (!parent.data.Kids) {\r\n parent.data.Kids = [];\r\n }\r\n parent.data.Kids.push(fieldRef);\r\n } else {\r\n this._root.data.AcroForm.data.Fields.push(fieldRef);\r\n }\r\n return this;\r\n },\r\n\r\n _fieldDict(name, type, options = {}) {\r\n if (!this._acroform) {\r\n throw new Error(\r\n 'Call document.initForm() method before adding form elements to document'\r\n );\r\n }\r\n let opts = Object.assign({}, options);\r\n if (type !== null) {\r\n opts = this._resolveType(type, options);\r\n }\r\n opts = this._resolveFlags(opts);\r\n opts = this._resolveJustify(opts);\r\n opts = this._resolveFont(opts);\r\n opts = this._resolveStrings(opts);\r\n opts = this._resolveColors(opts);\r\n opts = this._resolveFormat(opts);\r\n opts.T = new String(name);\r\n if (opts.parent) {\r\n opts.Parent = opts.parent;\r\n delete opts.parent;\r\n }\r\n return opts;\r\n },\r\n\r\n _resolveType(type, opts) {\r\n if (type === 'text') {\r\n opts.FT = 'Tx';\r\n } else if (type === 'pushButton') {\r\n opts.FT = 'Btn';\r\n opts.pushButton = true;\r\n } else if (type === 'radioButton') {\r\n opts.FT = 'Btn';\r\n opts.radioButton = true;\r\n } else if (type === 'checkbox') {\r\n opts.FT = 'Btn';\r\n } else if (type === 'combo') {\r\n opts.FT = 'Ch';\r\n opts.combo = true;\r\n } else if (type === 'list') {\r\n opts.FT = 'Ch';\r\n } else {\r\n throw new Error(`Invalid form annotation type '${type}'`);\r\n }\r\n return opts;\r\n },\r\n\r\n _resolveFormat(opts) {\r\n const f = opts.format;\r\n if (f && f.type) {\r\n let fnKeystroke;\r\n let fnFormat;\r\n let params = '';\r\n if (FORMAT_SPECIAL[f.type] !== undefined) {\r\n fnKeystroke = `AFSpecial_Keystroke`;\r\n fnFormat = `AFSpecial_Format`;\r\n params = FORMAT_SPECIAL[f.type];\r\n } else {\r\n let format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\r\n fnKeystroke = `AF${format}_Keystroke`;\r\n fnFormat = `AF${format}_Format`;\r\n\r\n if (f.type === 'date') {\r\n fnKeystroke += 'Ex';\r\n params = String(f.param);\r\n } else if (f.type === 'time') {\r\n params = String(f.param);\r\n } else if (f.type === 'number') {\r\n let p = Object.assign({}, FORMAT_DEFAULT.number, f);\r\n params = String(\r\n [\r\n String(p.nDec),\r\n p.sepComma ? '0' : '1',\r\n '\"' + p.negStyle + '\"',\r\n 'null',\r\n '\"' + p.currency + '\"',\r\n String(p.currencyPrepend)\r\n ].join(',')\r\n );\r\n } else if (f.type === 'percent') {\r\n let p = Object.assign({}, FORMAT_DEFAULT.percent, f);\r\n params = String([String(p.nDec), p.sepComma ? '0' : '1'].join(','));\r\n }\r\n }\r\n opts.AA = opts.AA ? opts.AA : {};\r\n opts.AA.K = {\r\n S: 'JavaScript',\r\n JS: new String(`${fnKeystroke}(${params});`)\r\n };\r\n opts.AA.F = {\r\n S: 'JavaScript',\r\n JS: new String(`${fnFormat}(${params});`)\r\n };\r\n }\r\n delete opts.format;\r\n return opts;\r\n },\r\n\r\n _resolveColors(opts) {\r\n let color = this._normalizeColor(opts.backgroundColor);\r\n if (color) {\r\n if (!opts.MK) {\r\n opts.MK = {};\r\n }\r\n opts.MK.BG = color;\r\n }\r\n color = this._normalizeColor(opts.borderColor);\r\n if (color) {\r\n if (!opts.MK) {\r\n opts.MK = {};\r\n }\r\n opts.MK.BC = color;\r\n }\r\n delete opts.backgroundColor;\r\n delete opts.borderColor;\r\n return opts;\r\n },\r\n\r\n _resolveFlags(options) {\r\n let result = 0;\r\n Object.keys(options).forEach(key => {\r\n if (FIELD_FLAGS[key]) {\r\n if (options[key]) {\r\n result |= FIELD_FLAGS[key];\r\n }\r\n delete options[key];\r\n }\r\n });\r\n if (result !== 0) {\r\n options.Ff = options.Ff ? options.Ff : 0;\r\n options.Ff |= result;\r\n }\r\n return options;\r\n },\r\n\r\n _resolveJustify(options) {\r\n let result = 0;\r\n if (options.align !== undefined) {\r\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\r\n result = FIELD_JUSTIFY[options.align];\r\n }\r\n delete options.align;\r\n }\r\n if (result !== 0) {\r\n options.Q = result; // default\r\n }\r\n return options;\r\n },\r\n\r\n _resolveFont(options) {\r\n // add current font to document-level AcroForm dict if necessary\r\n if (this._acroform.fonts[this._font.id] == null) {\r\n this._acroform.fonts[this._font.id] = this._font.ref();\r\n }\r\n\r\n // add current font to field's resource dict (RD) if not the default acroform font\r\n if (this._acroform.defaultFont !== this._font.name) {\r\n options.DR = { Font: {} };\r\n\r\n // Get the fontSize option. If not set use auto sizing\r\n const fontSize = options.fontSize || 0;\r\n\r\n options.DR.Font[this._font.id] = this._font.ref();\r\n options.DA = new String(`/${this._font.id} ${fontSize} Tf 0 g`);\r\n }\r\n return options;\r\n },\r\n\r\n _resolveStrings(options) {\r\n let select = [];\r\n function appendChoices(a) {\r\n if (Array.isArray(a)) {\r\n for (let idx = 0; idx < a.length; idx++) {\r\n if (typeof a[idx] === 'string') {\r\n select.push(new String(a[idx]));\r\n } else {\r\n select.push(a[idx]);\r\n }\r\n }\r\n }\r\n }\r\n appendChoices(options.Opt);\r\n if (options.select) {\r\n appendChoices(options.select);\r\n delete options.select;\r\n }\r\n if (select.length) {\r\n options.Opt = select;\r\n }\r\n\r\n Object.keys(VALUE_MAP).forEach(key => {\r\n if (options[key] !== undefined) {\r\n options[VALUE_MAP[key]] = options[key];\r\n delete options[key];\r\n }\r\n });\r\n ['V', 'DV'].forEach(key => {\r\n if (typeof options[key] === 'string') {\r\n options[key] = new String(options[key]);\r\n }\r\n });\r\n\r\n if (options.MK && options.MK.CA) {\r\n options.MK.CA = new String(options.MK.CA);\r\n }\r\n if (options.label) {\r\n options.MK = options.MK ? options.MK : {};\r\n options.MK.CA = new String(options.label);\r\n delete options.label;\r\n }\r\n return options;\r\n }\r\n};\r\n","import fs from 'fs';\r\nimport CryptoJS from 'crypto-js';\r\n\r\nexport default {\r\n /**\r\n * Embed contents of `src` in PDF\r\n * @param {Buffer | ArrayBuffer | string} src input Buffer, ArrayBuffer, base64 encoded string or path to file\r\n * @param {object} options\r\n * * options.name: filename to be shown in PDF, will use `src` if none set\r\n * * options.type: filetype to be shown in PDF\r\n * * options.description: description to be shown in PDF\r\n * * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations\r\n * * options.creationDate: override creation date\r\n * * options.modifiedDate: override modified date\r\n * * options.relationship: Relationship between the PDF document and its attached file. Can be 'Alternative', 'Data', 'Source', 'Supplement' or 'Unspecified'.\r\n * @returns filespec reference\r\n */\r\n file(src, options = {}) {\r\n options.name = options.name || src;\r\n options.relationship = options.relationship || 'Unspecified';\r\n\r\n const refBody = {\r\n Type: 'EmbeddedFile',\r\n Params: {}\r\n };\r\n let data;\r\n\r\n if (!src) {\r\n throw new Error('No src specified');\r\n }\r\n if (Buffer.isBuffer(src)) {\r\n data = src;\r\n } else if (src instanceof ArrayBuffer) {\r\n data = Buffer.from(new Uint8Array(src));\r\n } else {\r\n let match;\r\n if ((match = /^data:(.*?);base64,(.*)$/.exec(src))) {\r\n if (match[1]) {\r\n refBody.Subtype = match[1].replace('/', '#2F');\r\n }\r\n data = Buffer.from(match[2], 'base64');\r\n } else {\r\n data = fs.readFileSync(src);\r\n if (!data) {\r\n throw new Error(`Could not read contents of file at filepath ${src}`);\r\n }\r\n\r\n // update CreationDate and ModDate\r\n const { birthtime, ctime } = fs.statSync(src);\r\n refBody.Params.CreationDate = birthtime;\r\n refBody.Params.ModDate = ctime;\r\n }\r\n }\r\n\r\n // override creation date and modified date\r\n if (options.creationDate instanceof Date) {\r\n refBody.Params.CreationDate = options.creationDate;\r\n }\r\n if (options.modifiedDate instanceof Date) {\r\n refBody.Params.ModDate = options.modifiedDate;\r\n }\r\n // add optional subtype\r\n if (options.type) {\r\n refBody.Subtype = options.type.replace('/', '#2F');\r\n }\r\n\r\n // add checksum and size information\r\n const checksum = CryptoJS.MD5(\r\n CryptoJS.lib.WordArray.create(new Uint8Array(data))\r\n );\r\n refBody.Params.CheckSum = new String(checksum);\r\n refBody.Params.Size = data.byteLength;\r\n\r\n // save some space when embedding the same file again\r\n // if a file with the same name and metadata exists, reuse its reference\r\n let ref;\r\n if (!this._fileRegistry) this._fileRegistry = {};\r\n let file = this._fileRegistry[options.name];\r\n if (file && isEqual(refBody, file)) {\r\n ref = file.ref;\r\n } else {\r\n ref = this.ref(refBody);\r\n ref.end(data);\r\n\r\n this._fileRegistry[options.name] = { ...refBody, ref };\r\n }\r\n // add filespec for embedded file\r\n const fileSpecBody = {\r\n Type: 'Filespec',\r\n AFRelationship: options.relationship,\r\n F: new String(options.name),\r\n EF: { F: ref },\r\n UF: new String(options.name)\r\n };\r\n if (options.description) {\r\n fileSpecBody.Desc = new String(options.description);\r\n }\r\n const filespec = this.ref(fileSpecBody);\r\n filespec.end();\r\n\r\n if (!options.hidden) {\r\n this.addNamedEmbeddedFile(options.name, filespec);\r\n }\r\n\r\n // Add file to the catalogue to be PDF/A3 compliant\r\n if (this._root.data.AF) {\r\n this._root.data.AF.push(filespec);\r\n } else {\r\n this._root.data.AF = [filespec];\r\n }\r\n\r\n return filespec;\r\n }\r\n};\r\n\r\n/** check two embedded file metadata objects for equality */\r\nfunction isEqual(a, b) {\r\n return (\r\n a.Subtype === b.Subtype &&\r\n a.Params.CheckSum.toString() === b.Params.CheckSum.toString() &&\r\n a.Params.Size === b.Params.Size &&\r\n a.Params.CreationDate.getTime() === b.Params.CreationDate.getTime() &&\r\n ((a.Params.ModDate === undefined && b.Params.ModDate === undefined) ||\r\n a.Params.ModDate.getTime() === b.Params.ModDate.getTime())\r\n );\r\n}\r\n","import fs from 'fs';\r\n\r\nexport default {\r\n initPDFA(pSubset) {\r\n if (pSubset.charAt(pSubset.length - 3) === '-') {\r\n this.subset_conformance = pSubset\r\n .charAt(pSubset.length - 1)\r\n .toUpperCase();\r\n this.subset = parseInt(pSubset.charAt(pSubset.length - 2));\r\n } else {\r\n // Default to Basic conformance when user doesn't specify\r\n this.subset_conformance = 'B';\r\n this.subset = parseInt(pSubset.charAt(pSubset.length - 1));\r\n }\r\n },\r\n\r\n endSubset() {\r\n this._addPdfaMetadata();\r\n this._addColorOutputIntent();\r\n },\r\n\r\n _addColorOutputIntent() {\r\n const iccProfile = fs.readFileSync(`${__dirname}/data/sRGB_IEC61966_2_1.icc`);\r\n\r\n const colorProfileRef = this.ref({\r\n Length: iccProfile.length,\r\n N: 3\r\n });\r\n colorProfileRef.write(iccProfile);\r\n colorProfileRef.end();\r\n\r\n const intentRef = this.ref({\r\n Type: 'OutputIntent',\r\n S: 'GTS_PDFA1',\r\n Info: new String('sRGB IEC61966-2.1'),\r\n OutputConditionIdentifier: new String('sRGB IEC61966-2.1'),\r\n DestOutputProfile: colorProfileRef\r\n });\r\n intentRef.end();\r\n\r\n this._root.data.OutputIntents = [intentRef];\r\n },\r\n\r\n _getPdfaid() {\r\n return `\r\n <rdf:Description xmlns:pdfaid=\"http://www.aiim.org/pdfa/ns/id/\" rdf:about=\"\">\r\n <pdfaid:part>${this.subset}</pdfaid:part>\r\n <pdfaid:conformance>${this.subset_conformance}</pdfaid:conformance>\r\n </rdf:Description>\r\n `;\r\n },\r\n\r\n _addPdfaMetadata() {\r\n this.appendXML(this._getPdfaid());\r\n }\r\n};\r\n","\r\nexport default {\r\n\r\n initPDFUA() {\r\n this.subset = 1;\r\n },\r\n\r\n endSubset() {\r\n this._addPdfuaMetadata();\r\n },\r\n\r\n _addPdfuaMetadata() {\r\n this.appendXML(this._getPdfuaid());\r\n },\r\n\r\n _getPdfuaid() {\r\n return `\r\n <rdf:Description xmlns:pdfuaid=\"http://www.aiim.org/pdfua/ns/id/\" rdf:about=\"\">\r\n <pdfuaid:part>${this.subset}</pdfuaid:part>\r\n </rdf:Description>\r\n `;\r\n },\r\n\r\n}","import PDFA from './pdfa';\r\nimport PDFUA from './pdfua';\r\n\r\nexport default {\r\n _importSubset(subset) {\r\n Object.assign(this, subset)\r\n },\r\n\r\n initSubset(options) {\r\n\r\n switch (options.subset) {\r\n case 'PDF/A-1':\r\n case 'PDF/A-1a':\r\n case 'PDF/A-1b':\r\n case 'PDF/A-2':\r\n case 'PDF/A-2a':\r\n case 'PDF/A-2b':\r\n case 'PDF/A-3':\r\n case 'PDF/A-3a':\r\n case 'PDF/A-3b':\r\n this._importSubset(PDFA);\r\n this.initPDFA(options.subset);\r\n break;\r\n case 'PDF/UA':\r\n this._importSubset(PDFUA);\r\n this.initPDFUA();\r\n break;\r\n }\r\n }\r\n}","\r\nclass PDFMetadata {\r\n constructor() {\r\n this._metadata = `\r\n <?xpacket begin=\"\\ufeff\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\r\n <x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\r\n <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n `;\r\n }\r\n \r\n _closeTags() {\r\n this._metadata = this._metadata.concat(`\r\n </rdf:RDF>\r\n </x:xmpmeta>\r\n <?xpacket end=\"w\"?>\r\n `);\r\n }\r\n\r\n append(xml, newline=true) {\r\n this._metadata = this._metadata.concat(xml); \r\n if (newline)\r\n this._metadata = this._metadata.concat('\\n'); \r\n }\r\n\r\n getXML() { return this._metadata; }\r\n\r\n getLength() { return this._metadata.length; }\r\n\r\n end() {\r\n this._closeTags();\r\n this._metadata = this._metadata.trim();\r\n }\r\n}\r\n\r\nexport default PDFMetadata;","import PDFMetadata from \"../metadata\"\r\n\r\nexport default {\r\n initMetadata() {\r\n this.metadata = new PDFMetadata();\r\n },\r\n\r\n appendXML(xml, newline=true) { this.metadata.append(xml,newline); },\r\n\r\n _addInfo() {\r\n this.appendXML(`\r\n <rdf:Description rdf:about=\"\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\">\r\n <xmp:CreateDate>${this.info.CreationDate.toISOString().split('.')[0]+\"Z\"}</xmp:CreateDate>\r\n <xmp:CreatorTool>${this.info.Creator}</xmp:CreatorTool>\r\n </rdf:Description>\r\n `\r\n );\r\n\r\n if (this.info.Title || this.info.Author || this.info.Subject) {\r\n this.appendXML(`\r\n <rdf:Description rdf:about=\"\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\r\n `);\r\n \r\n if (this.info.Title) {\r\n this.appendXML(`\r\n <dc:title>\r\n <rdf:Alt>\r\n <rdf:li xml:lang=\"x-default\">${this.info.Title}</rdf:li>\r\n </rdf:Alt>\r\n </dc:title>\r\n `);\r\n }\r\n\r\n if (this.info.Author) {\r\n this.appendXML(`\r\n <dc:creator>\r\n <rdf:Seq>\r\n <rdf:li>${this.info.Author}</rdf:li>\r\n </rdf:Seq>\r\n </dc:creator>\r\n `);\r\n }\r\n\r\n if (this.info.Subject) {\r\n this.appendXML(`\r\n <dc:description>\r\n <rdf:Alt>\r\n <rdf:li xml:lang=\"x-default\">${this.info.Subject}</rdf:li>\r\n </rdf:Alt>\r\n </dc:description>\r\n `);\r\n }\r\n\r\n this.appendXML(`\r\n </rdf:Description>\r\n `);\r\n }\r\n\r\n this.appendXML(`\r\n <rdf:Description rdf:about=\"\" xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\">\r\n <pdf:Producer>${this.info.Creator}</pdf:Producer>`, false);\r\n\r\n if (this.info.Keywords) {\r\n this.appendXML(`\r\n <pdf:Keywords>${this.info.Keywords}</pdf:Keywords>`, false);\r\n }\r\n\r\n this.appendXML(`\r\n </rdf:Description>\r\n `);\r\n },\r\n\r\n endMetadata() {\r\n this._addInfo();\r\n \r\n this.metadata.end();\r\n\r\n /*\r\n Metadata was introduced in PDF 1.4, so adding it to 1.3 \r\n will likely only take up more space.\r\n */\r\n if (this.version != 1.3) {\r\n this.metadataRef = this.ref({\r\n length: this.metadata.getLength(),\r\n Type: 'Metadata',\r\n Subtype: 'XML'\r\n });\r\n this.metadataRef.compress = false;\r\n this.metadataRef.write(Buffer.from(this.metadata.getXML(), 'utf-8'));\r\n this.metadataRef.end();\r\n this._root.data.Metadata = this.metadataRef;\r\n }\r\n }\r\n}","/*\r\nPDFDocument - represents an entire PDF document\r\nBy Devon Govett\r\n*/\r\n\r\nimport stream from 'stream';\r\nimport PDFObject from './object';\r\nimport PDFReference from './reference';\r\nimport PDFPage from './page';\r\nimport PDFNameTree from './name_tree';\r\nimport PDFSecurity from './security';\r\nimport ColorMixin from './mixins/color';\r\nimport VectorMixin from './mixins/vector';\r\nimport FontsMixin from './mixins/fonts';\r\nimport TextMixin from './mixins/text';\r\nimport ImagesMixin from './mixins/images';\r\nimport AnnotationsMixin from './mixins/annotations';\r\nimport OutlineMixin from './mixins/outline';\r\nimport MarkingsMixin from './mixins/markings';\r\nimport AcroFormMixin from './mixins/acroform';\r\nimport AttachmentsMixin from './mixins/attachments';\r\nimport LineWrapper from './line_wrapper';\r\nimport SubsetMixin from './mixins/subsets';\r\nimport MetadataMixin from './mixins/metadata';\r\n\r\nclass PDFDocument extends stream.Readable {\r\n constructor(options = {}) {\r\n super(options);\r\n this.options = options;\r\n\r\n // PDF version\r\n switch (options.pdfVersion) {\r\n case '1.4':\r\n this.version = 1.4;\r\n break;\r\n case '1.5':\r\n this.version = 1.5;\r\n break;\r\n case '1.6':\r\n this.version = 1.6;\r\n break;\r\n case '1.7':\r\n case '1.7ext3':\r\n this.version = 1.7;\r\n break;\r\n default:\r\n this.version = 1.3;\r\n break;\r\n }\r\n\r\n // Whether streams should be compressed\r\n this.compress =\r\n this.options.compress != null ? this.options.compress : true;\r\n\r\n this._pageBuffer = [];\r\n this._pageBufferStart = 0;\r\n\r\n // The PDF object store\r\n this._offsets = [];\r\n this._waiting = 0;\r\n this._ended = false;\r\n this._offset = 0;\r\n const Pages = this.ref({\r\n Type: 'Pages',\r\n Count: 0,\r\n Kids: []\r\n });\r\n\r\n const Names = this.ref({\r\n Dests: new PDFNameTree()\r\n });\r\n\r\n this._root = this.ref({\r\n Type: 'Catalog',\r\n Pages,\r\n Names\r\n });\r\n\r\n if (this.options.lang) {\r\n this._root.data.Lang = new String(this.options.lang);\r\n }\r\n\r\n // The current page\r\n this.page = null;\r\n\r\n // Initialize mixins\r\n this.initMetadata();\r\n this.initColor();\r\n this.initVector();\r\n this.initFonts(options.font);\r\n this.initText();\r\n this.initImages();\r\n this.initOutline();\r\n this.initMarkings(options);\r\n this.initSubset(options);\r\n\r\n // Initialize the metadata\r\n this.info = {\r\n Producer: 'PDFKit',\r\n Creator: 'PDFKit',\r\n CreationDate: new Date()\r\n };\r\n\r\n if (this.options.info) {\r\n for (let key in this.options.info) {\r\n const val = this.options.info[key];\r\n this.info[key] = val;\r\n }\r\n }\r\n\r\n if (this.options.displayTitle) {\r\n this._root.data.ViewerPreferences = this.ref({\r\n DisplayDocTitle: true\r\n });\r\n }\r\n\r\n // Generate file ID\r\n this._id = PDFSecurity.generateFileID(this.info);\r\n\r\n // Initialize security settings\r\n this._security = PDFSecurity.create(this, options);\r\n\r\n // Write the header\r\n // PDF version\r\n this._write(`%PDF-${this.version}`);\r\n\r\n // 4 binary chars, as recommended by the spec\r\n this._write('%\\xFF\\xFF\\xFF\\xFF');\r\n\r\n // Add the first page\r\n if (this.options.autoFirstPage !== false) {\r\n this.addPage();\r\n }\r\n }\r\n\r\n addPage(options) {\r\n if (options == null) {\r\n ({ options } = this);\r\n }\r\n\r\n // end the current page if needed\r\n if (!this.options.bufferPages) {\r\n this.flushPages();\r\n }\r\n\r\n // create a page object\r\n this.page = new PDFPage(this, options);\r\n this._pageBuffer.push(this.page);\r\n\r\n // add the page to the object store\r\n const pages = this._root.data.Pages.data;\r\n pages.Kids.push(this.page.dictionary);\r\n pages.Count++;\r\n\r\n // reset x and y coordinates\r\n this.x = this.page.margins.left;\r\n this.y = this.page.margins.top;\r\n\r\n // flip PDF coordinate system so that the origin is in\r\n // the top left rather than the bottom left\r\n this._ctm = [1, 0, 0, 1, 0, 0];\r\n this.transform(1, 0, 0, -1, 0, this.page.height);\r\n\r\n this.emit('pageAdded');\r\n\r\n return this;\r\n }\r\n\r\n continueOnNewPage(options) {\r\n const pageMarkings = this.endPageMarkings(this.page);\r\n\r\n this.addPage(options);\r\n\r\n this.initPageMarkings(pageMarkings);\r\n\r\n return this;\r\n }\r\n\r\n bufferedPageRange() {\r\n return { start: this._pageBufferStart, count: this._pageBuffer.length };\r\n }\r\n\r\n switchToPage(n) {\r\n let page;\r\n if (!(page = this._pageBuffer[n - this._pageBufferStart])) {\r\n throw new Error(\r\n `switchToPage(${n}) out of bounds, current buffer covers pages ${\r\n this._pageBufferStart\r\n } to ${this._pageBufferStart + this._pageBuffer.length - 1}`\r\n );\r\n }\r\n\r\n return (this.page = page);\r\n }\r\n\r\n flushPages() {\r\n // this local variable exists so we're future-proof against\r\n // reentrant calls to flushPages.\r\n const pages = this._pageBuffer;\r\n this._pageBuffer = [];\r\n this._pageBufferStart += pages.length;\r\n for (let page of pages) {\r\n this.endPageMarkings(page);\r\n page.end();\r\n }\r\n }\r\n\r\n addNamedDestination(name, ...args) {\r\n if (args.length === 0) {\r\n args = ['XYZ', null, null, null];\r\n }\r\n if (args[0] === 'XYZ' && args[2] !== null) {\r\n args[2] = this.page.height - args[2];\r\n }\r\n args.unshift(this.page.dictionary);\r\n this._root.data.Names.data.Dests.add(name, args);\r\n }\r\n\r\n addNamedEmbeddedFile(name, ref) {\r\n if (!this._root.data.Names.data.EmbeddedFiles) {\r\n // disabling /Limits for this tree fixes attachments not showing in Adobe Reader\r\n this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({\r\n limits: false\r\n });\r\n }\r\n\r\n // add filespec to EmbeddedFiles\r\n this._root.data.Names.data.EmbeddedFiles.add(name, ref);\r\n }\r\n\r\n addNamedJavaScript(name, js) {\r\n if (!this._root.data.Names.data.JavaScript) {\r\n this._root.data.Names.data.JavaScript = new PDFNameTree();\r\n }\r\n let data = {\r\n JS: new String(js),\r\n S: 'JavaScript'\r\n };\r\n this._root.data.Names.data.JavaScript.add(name, data);\r\n }\r\n\r\n ref(data) {\r\n const ref = new PDFReference(this, this._offsets.length + 1, data);\r\n this._offsets.push(null); // placeholder for this object's offset once it is finalized\r\n this._waiting++;\r\n return ref;\r\n }\r\n\r\n _read() {}\r\n // do nothing, but this method is required by node\r\n\r\n _write(data) {\r\n if (!Buffer.isBuffer(data)) {\r\n data = Buffer.from(data + '\\n', 'binary');\r\n }\r\n\r\n this.push(data);\r\n return (this._offset += data.length);\r\n }\r\n\r\n addContent(data) {\r\n this.page.write(data);\r\n return this;\r\n }\r\n\r\n _refEnd(ref) {\r\n this._offsets[ref.id - 1] = ref.offset;\r\n if (--this._waiting === 0 && this._ended) {\r\n this._finalize();\r\n return (this._ended = false);\r\n }\r\n }\r\n\r\n end() {\r\n this.flushPages();\r\n\r\n this._info = this.ref();\r\n for (let key in this.info) {\r\n let val = this.info[key];\r\n if (typeof val === 'string') {\r\n val = new String(val);\r\n }\r\n\r\n let entry = this.ref(val);\r\n entry.end();\r\n\r\n this._info.data[key] = entry;\r\n }\r\n\r\n this._info.end();\r\n\r\n for (let name in this._fontFamilies) {\r\n const font = this._fontFamilies[name];\r\n font.finalize();\r\n }\r\n\r\n this.endOutline();\r\n this.endMarkings();\r\n\r\n if (this.subset) {\r\n this.endSubset();\r\n }\r\n\r\n this.endMetadata();\r\n\r\n this._root.end();\r\n this._root.data.Pages.end();\r\n this._root.data.Names.end();\r\n this.endAcroForm();\r\n\r\n if (this._root.data.ViewerPreferences) {\r\n this._root.data.ViewerPreferences.end();\r\n }\r\n\r\n if (this._security) {\r\n this._security.end();\r\n }\r\n\r\n if (this._waiting === 0) {\r\n return this._finalize();\r\n } else {\r\n return (this._ended = true);\r\n }\r\n }\r\n\r\n _finalize() {\r\n // generate xref\r\n const xRefOffset = this._offset;\r\n this._write('xref');\r\n this._write(`0 ${this._offsets.length + 1}`);\r\n this._write('0000000000 65535 f ');\r\n\r\n for (let offset of this._offsets) {\r\n offset = `0000000000${offset}`.slice(-10);\r\n this._write(offset + ' 00000 n ');\r\n }\r\n\r\n // trailer\r\n const trailer = {\r\n Size: this._offsets.length + 1,\r\n Root: this._root,\r\n Info: this._info,\r\n ID: [this._id, this._id]\r\n };\r\n if (this._security) {\r\n trailer.Encrypt = this._security.dictionary;\r\n }\r\n\r\n this._write('trailer');\r\n this._write(PDFObject.convert(trailer));\r\n\r\n this._write('startxref');\r\n this._write(`${xRefOffset}`);\r\n this._write('%%EOF');\r\n\r\n // end the stream\r\n return this.push(null);\r\n }\r\n\r\n toString() {\r\n return '[object PDFDocument]';\r\n }\r\n}\r\n\r\nconst mixin = methods => {\r\n Object.assign(PDFDocument.prototype, methods);\r\n};\r\n\r\nmixin(MetadataMixin);\r\nmixin(ColorMixin);\r\nmixin(VectorMixin);\r\nmixin(FontsMixin);\r\nmixin(TextMixin);\r\nmixin(ImagesMixin);\r\nmixin(AnnotationsMixin);\r\nmixin(OutlineMixin);\r\nmixin(MarkingsMixin);\r\nmixin(AcroFormMixin);\r\nmixin(AttachmentsMixin);\r\nmixin(SubsetMixin);\r\n\r\nPDFDocument.LineWrapper = LineWrapper;\r\n\r\nexport default PDFDocument;\r\n"],"names":["PDFAbstractReference","toString","Error","PDFTree","constructor","options","_items","limits","add","key","val","get","sortedKeys","Object","keys","sort","a","b","_compareKeys","out","length","first","last","push","PDFObject","convert","_dataForKey","_keysName","join","SpotColor","doc","name","C","M","Y","K","id","spotColors","values","ref","Range","C0","C1","map","value","FunctionType","Domain","N","end","pad","str","Array","slice","escapableRe","escapable","swapBytes","buff","l","i","object","encryptFn","String","string","isUnicode","charCodeAt","stringBuffer","Buffer","from","valueOf","replace","c","isBuffer","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","isArray","items","e","call","number","n","Math","round","PDFReference","document","data","gen","compress","Filter","uncompressedLength","buffer","write","chunk","Uint8Array","Length","finalize","offset","_offset","_security","getEncryptFn","concat","zlib","deflateSync","_write","_refEnd","DEFAULT_MARGINS","top","left","bottom","right","SIZES","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","PDFPage","size","layout","margin","margins","dimensions","toUpperCase","width","height","content","resources","ProcSet","dictionary","Type","Parent","_root","Pages","MediaBox","Contents","Resources","markings","fonts","Font","xobjects","XObject","ext_gstates","ExtGState","patterns","Pattern","colorSpaces","ColorSpace","annotations","Annots","structParentTreeKey","StructParents","createStructParentTreeNextKey","maxY","_setTabOrder","Tabs","hasMarkInfoDictionary","color","PDFNameTree","localeCompare","k","inRange","rangeGroup","startRange","endRange","middleRange","floor","arrayIndex","unassigned_code_points","isUnassignedCodePoint","character","commonly_mapped_to_nothing","isCommonlyMappedToNothing","non_ASCII_space_characters","isNonASCIISpaceCharacter","non_ASCII_controls_characters","non_character_codepoints","prohibited_characters","isProhibitedCharacter","bidirectional_r_al","isBidirectionalRAL","bidirectional_l","isBidirectionalL","mapping2space","mapping2nothing","getCodePoint","codePointAt","x","toCodePoints","input","codepoints","before","next","saslprep","opts","TypeError","mapped_input","filter","normalized_input","fromCodePoint","apply","normalize","normalized_map","hasProhibited","some","allowUnassigned","hasUnassigned","hasBidiRAL","hasBidiL","isFirstBidiRAL","isLastBidiRAL","PDFSecurity","generateFileID","info","infoStr","CreationDate","getTime","hasOwnProperty","wordArrayToBuffer","CryptoJS","MD5","generateRandomWordArray","bytes","lib","WordArray","random","create","ownerPassword","userPassword","_setupEncryption","pdfVersion","version","encDict","_setupEncryptionV1V2V4","_setupEncryptionV5","v","r","permissions","keyBits","getPermissionsR2","getPermissionsR3","paddedUserPassword","processPasswordR2R3R4","paddedOwnerPassword","ownerPasswordEntry","getOwnerPasswordR2R3R4","encryptionKey","getEncryptionKeyR2R3R4","_id","userPasswordEntry","getUserPasswordR2","getUserPasswordR3R4","V","CF","StdCF","AuthEvent","CFM","StmF","StrF","R","O","U","P","processedUserPassword","processPasswordR5","processedOwnerPassword","getEncryptionKeyR5","getUserPasswordR5","userKeySalt","words","userEncryptionKeyEntry","getUserEncryptionKeyR5","getOwnerPasswordR5","ownerKeySalt","ownerEncryptionKeyEntry","getOwnerEncryptionKeyR5","permsEntry","getEncryptedPermissionsR5","OE","UE","Perms","obj","digest","clone","sigBytes","min","RC4","encrypt","ciphertext","iv","mode","CBC","padding","Pkcs7","AES","permissionObject","printing","modifying","copying","annotating","fillingForms","contentAccessibility","documentAssembly","documentId","cipher","xorRound","ceil","j","lsbFirstWord","validationSalt","keySalt","SHA256","NoPadding","ECB","password","alloc","index","code","PASSWORD_PADDING","unescape","encodeURIComponent","wordArray","byteArray","PDFGradient","stops","embedded","transform","stop","pos","opacity","_normalizeColor","_colorSpace","max","setTransform","m11","m12","m21","m22","dx","dy","embed","m","fn","stopsLength","matrix","bounds","encode","Functions","Bounds","Encode","_gradCount","shader","pattern","PatternType","Shading","Matrix","grad","opacityGradient","pageBBox","page","form","Subtype","FormType","BBox","Group","S","CS","Sh1","gstate","SMask","G","opacityPattern","PaintType","TilingType","XStep","YStep","Gs1","stroke","m0","m1","m2","m3","m4","m5","_ctm","_setColorSpace","op","addContent","PDFLinearGradient","x1","y1","x2","y2","ShadingType","Coords","Function","Extend","PDFRadialGradient","r1","r2","underlyingColorSpaces","PDFTilingPattern","bBox","xStep","yStep","stream","createPattern","toFixed","embedPatternColorSpaces","forEach","csName","csId","getPatternColorSpaceId","cs","underlyingColorspace","_patternCount","patternColor","normalizedColor","_getColorSpace","Gradient","initColor","_opacityRegistry","_opacityCount","charAt","hex","parseInt","namedColors","part","_setColor","_setColorCore","space","fillColor","set","fillOpacity","_fillColor","strokeColor","strokeOpacity","_doOpacity","ca","CA","linearGradient","radialGradient","bbox","addSpotColor","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","cx","cy","px","py","sx","sy","parameters","A","H","h","L","Q","q","s","T","t","Z","z","parse","path","cmd","ret","args","curArg","foundDecimal","params","includes","commands","runners","moveTo","bezierCurveTo","quadraticCurveTo","solveArc","lineTo","closePath","y","coords","rx","ry","rot","large","sweep","ex","ey","segs","arcToSegments","seg","bez","segmentToBezier","rotateX","ox","oy","th","PI","sin_th","sin","cos_th","cos","abs","pl","sqrt","a00","a01","a10","a11","x0","y0","d","sfactor_sq","sfactor","xc","yc","th0","atan2","th1","th_arc","segments","result","th2","th3","th_half","x3","y3","SVGPath","KAPPA","initVector","_ctmStack","save","restore","pop","lineWidth","w","_CAP_STYLES","BUTT","ROUND","SQUARE","lineCap","_JOIN_STYLES","MITER","BEVEL","lineJoin","miterLimit","dash","originalLength","valid","every","Number","isFinite","JSON","stringify","phase","undash","cp1x","cp1y","cp2x","cp2y","cpx","cpy","rect","roundedRect","ellipse","xe","ye","xm","ym","circle","radius","arc","startAngle","endAngle","anticlockwise","TWO_PI","HALF_PI","deltaAng","dir","numSegs","segAng","handleLen","curAng","deltaCx","deltaCy","ax","ay","segIdx","polygon","points","shift","point","_windingRule","rule","test","fill","fillAndStroke","isFillRule","clip","translate","rotate","angle","rad","origin","scale","xFactor","yFactor","WIN_ANSI_MAP","characters","split","AFMFont","open","filename","fs","readFileSync","contents","attributes","glyphWidths","boundingBoxes","kernPairs","charWidths","char","ascender","descender","xHeight","capHeight","lineGap","section","line","match","encodeText","text","res","len","glyphsForString","glyphs","charCode","characterToGlyph","widthOfGlyph","glyph","getKernPair","advancesForGlyphs","advances","PDFFont","widthOfString","lineHeight","includeGap","gap","STANDARD_FONTS","Courier","__dirname","Courier-Bold","Courier-Oblique","Courier-BoldOblique","Helvetica","Helvetica-Bold","Helvetica-Oblique","Helvetica-BoldOblique","Times-Roman","Times-Bold","Times-Italic","Times-BoldItalic","Symbol","ZapfDingbats","StandardFont","font","BaseFont","Encoding","encoded","positions","xAdvance","yAdvance","xOffset","yOffset","advanceWidth","advance","isStandardFont","toHex","num","EmbeddedFont","subset","createSubset","unicode","widths","getGlyph","postscriptName","unitsPerEm","ascent","descent","fontLayoutCache","layoutCache","layoutRun","features","run","position","layoutCached","cached","onlyWidth","needle","gid","includeGlyph","codePoints","isCFF","cff","fontFile","familyClass","sFamilyClass","undefined","flags","post","isFixedPitch","head","macStyle","italic","tag","fromCharCode","replaceAll","descriptor","FontName","Flags","FontBBox","minX","minY","maxX","ItalicAngle","italicAngle","Ascent","Descent","CapHeight","XHeight","StemV","FontFile3","FontFile2","CIDSet","CIDSetRef","descendantFontData","CIDSystemInfo","Registry","Ordering","Supplement","FontDescriptor","W","CIDToGIDMap","descendantFont","DescendantFonts","ToUnicode","toUnicodeCmap","cmap","entries","chunkSize","chunks","ranges","start","PDFFontFactory","src","family","fontkit","ArrayBuffer","isEqualFont","font1","font2","_tables","checkSumAdjustment","records","initFonts","defaultFont","_fontFamilies","_fontCount","_fontSize","_font","_registeredFonts","cacheKey","fontSize","currentLineHeight","registerFont","SOFT_HYPHEN","HYPHEN","LineWrapper","EventEmitter","horizontalScaling","indent","characterSpacing","wordSpacing","columns","columnGap","spaceLeft","startX","startY","column","ellipsis","continuedX","on","indentAllLines","once","continued","align","lastLine","paragraphGap","wordWidth","word","canFit","eachWord","bk","breaker","LineBreaker","wordWidths","nextBreak","shouldContinue","lbk","fbk","mightGrow","mustShrink","required","wrap","nextY","nextSection","textWidth","wc","lc","emitLine","wordCount","emit","lh","continueOnNewPage","initText","_line","bind","_lineGap","moveDown","lines","moveUp","_text","lineCallback","_initOptions","addStructure","structParent","struct","structType","markStructureContent","wrapper","_wrapper","_textOptions","heightOfString","Infinity","list","listType","unit","midLine","bulletRadius","textIndent","itemIndent","bulletIndent","level","levels","numbers","flatten","item","label","letter","times","drawListItem","listItem","itemType","labelType","bodyType","structTypes","diff","_fragment","assign","lineBreak","trim","spaceWidth","baseline","renderedWidth","link","goTo","destination","addNamedDestination","underline","lineY","strike","oblique","skew","encodedWord","positionsWord","hadOffset","addSegment","cur","flush","MARKERS","COLOR_SPACE_MAP","JPEG","marker","readUInt16BE","orientation","exif","fromBuffer","Orientation","bits","channels","colorSpace","BitsPerComponent","Width","Height","PNGImage","image","PNG","imgData","dataDecoded","hasAlphaChannel","isInterlaced","interlaceMethod","Predictor","Colors","colors","Columns","palette","transparency","grayscale","rgb","mask","indexed","loadIndexedAlphaChannel","splitAlphaChannel","decodeData","alphaChannel","sMask","Decode","decodePixels","pixels","p","colorCount","pixelCount","skipByteCount","colorIndex","PDFImage","exec","initImages","_imageRegistry","_imageCount","bh","bp","bw","ip","left1","rotateAngle","originX","originY","ignoreOrientation","openImage","wp","hp","fit","cover","valign","annotate","Rect","_convertRect","Border","F","Dest","note","Name","D","url","pages","Kids","URI","_markup","QuadPoints","highlight","lineAnnotation","rectAnnotation","ellipseAnnotation","textAnnotation","DA","fileAnnotation","file","filespec","hidden","FS","Desc","PDFOutline","parent","title","dest","expanded","outlineData","children","addItem","endOutline","Count","First","Last","child","Prev","Next","initOutline","outline","Outlines","PageMode","PDFStructureContent","pageRef","mcid","refs","structContent","PDFStructureElement","type","_attached","_ended","_flushed","_isValidChild","lang","Lang","alt","Alt","E","actual","ActualText","_children","setParent","setAttached","_addContentToParentTree","_contentForClosure","pageStructParents","getStructParentTree","parentRef","_flush","closure","endMarkedContent","_isFlushable","_flushChild","Pg","MCID","PDFNumberTree","initMarkings","structChildren","tagged","getMarkInfoDictionary","Marked","getStructTreeRoot","markContent","toClose","marking","attached","Attached","structElem","structTreeRoot","initPageMarkings","pageMarkings","newStructContent","endPageMarkings","MarkInfo","StructTreeRoot","ParentTree","ParentTreeNextKey","endMarkings","FIELD_FLAGS","readOnly","noExport","multiline","toggleToOffButton","radioButton","pushButton","combo","edit","multiSelect","noSpell","FIELD_JUSTIFY","center","VALUE_MAP","defaultValue","FORMAT_SPECIAL","zip","zipPlus4","zip4","phone","ssn","FORMAT_DEFAULT","nDec","sepComma","negStyle","currency","currencyPrepend","percent","initForm","_acroform","Fields","NeedAppearances","DR","AcroForm","endAcroForm","fontDict","fieldRef","_endChild","childRef","formField","fieldDict","_fieldDict","_addToParent","formAnnotation","annotRef","formText","formPushButton","formCombo","formList","formRadioButton","formCheckbox","_resolveType","_resolveFlags","_resolveJustify","_resolveFont","_resolveStrings","_resolveColors","_resolveFormat","FT","f","format","fnKeystroke","fnFormat","param","AA","JS","backgroundColor","MK","BG","borderColor","BC","Ff","select","appendChoices","idx","Opt","relationship","refBody","Params","birthtime","ctime","statSync","ModDate","creationDate","modifiedDate","checksum","CheckSum","Size","byteLength","_fileRegistry","isEqual","fileSpecBody","AFRelationship","EF","UF","description","addNamedEmbeddedFile","AF","initPDFA","pSubset","subset_conformance","endSubset","_addPdfaMetadata","_addColorOutputIntent","iccProfile","colorProfileRef","intentRef","Info","OutputConditionIdentifier","DestOutputProfile","OutputIntents","_getPdfaid","appendXML","initPDFUA","_addPdfuaMetadata","_getPdfuaid","_importSubset","initSubset","PDFA","PDFUA","PDFMetadata","_metadata","_closeTags","append","xml","newline","getXML","getLength","initMetadata","metadata","_addInfo","toISOString","Creator","Title","Author","Subject","Keywords","endMetadata","metadataRef","Metadata","PDFDocument","Readable","_pageBuffer","_pageBufferStart","_offsets","_waiting","Names","Dests","Producer","displayTitle","ViewerPreferences","DisplayDocTitle","autoFirstPage","addPage","bufferPages","flushPages","bufferedPageRange","count","switchToPage","unshift","EmbeddedFiles","addNamedJavaScript","js","JavaScript","_read","_finalize","_info","entry","xRefOffset","trailer","Root","ID","Encrypt","mixin","methods","prototype","MetadataMixin","ColorMixin","VectorMixin","FontsMixin","TextMixin","ImagesMixin","AnnotationsMixin","OutlineMixin","MarkingsMixin","AcroFormMixin","AttachmentsMixin","SubsetMixin"],"mappings":"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,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACR,CAAA;AACD;;AAEA,MAAMC,qBAAqB,GAAGC,SAAS,IACrCT,OAAO,CAACS,SAAS,EAAEF,sBAAsB,CAAC,CAAA;;AAE5C;AACA;AACA;AACA;AACA;AACA,MAAMG,0BAA0B,GAAG,CACjC,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP,CAAA;AACD;;AAEA,MAAMC,yBAAyB,GAAGF,SAAS,IACzCT,OAAO,CAACS,SAAS,EAAEC,0BAA0B,CAAC,CAAA;;AAEhD;AACA;AACA;AACA;AACA;AACA,MAAME,0BAA0B,GAAG,CACjC,MAAM,EACN,MAAM,uBACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,gBACN,MAAM,EACN,MAAM,gBACN,MAAM,EACN,MAAM,iBACN,MAAM,EACN,MAAM,iBACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,qBACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,mBACN,MAAM,EACN,MAAM,mBACN,MAAM,EACN,MAAM,yBACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,yBACP,CAAA;AACD;;AAEA,MAAMC,wBAAwB,GAAGJ,SAAS,IACxCT,OAAO,CAACS,SAAS,EAAEG,0BAA0B,CAAC,CAAA;;AAEhD;AACA,MAAME,6BAA6B,GAAG;AACpC;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,iCACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM,0BACN,MAAM,EACN,MAAM,uBACN,MAAM,EACN,MAAM,4BACN,MAAM,EACN,MAAM,oBACN,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,wBACN,MAAM,EACN,MAAM,4BACN,MAAM,EACN,MAAM,6BACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,6BACN,OAAO,EACP,OAAO,oCACR,CAAA;AAED,MAAMC,wBAAwB,GAAG;AAC/B;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,mCACN,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,OAAO,EACP,OAAO,mCACP,QAAQ,EACR,QAAQ,kCACT,CAAA;;AAED;AACA;AACA;AACA,MAAMC,qBAAqB,GAAG;AAC5B;AACF;AACA;AACA;AACE,CAAC,EACD,MAAM,6BACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,kCACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,2BACN,MAAM,EACN,MAAM,gCACN,MAAM,EACN,MAAM,gCACN,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,+BACN,MAAM,EACN,MAAM,+BACN,MAAM,EACN,MAAM,mCACN,MAAM,EACN,MAAM,oCACN,MAAM,EACN,MAAM,oCACN,MAAM,EACN,MAAM,qCACN,MAAM,EACN,MAAM,8BACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,MAAM,EACN,MAAM,sCACN,MAAM,EACN,MAAM,yCACN,MAAM,EACN,MAAM,0CACN,MAAM,EACN,MAAM,qCACN,MAAM,EACN,MAAM;AAEN;AACF;AACA;AACA;AACE,OAAO,EACP,OAAO,qBACP,OAAO,EACP,OAAO;AAEP;AACF;AACA;AACA;;AAEE,OAAO,EACP,OAAO,gCACP,QAAQ,EACR,QAAQ,+BACT,CAAA;AACD;;AAEA,MAAMC,qBAAqB,GAAGR,SAAS,IACrCT,OAAO,CAACS,SAAS,EAAEG,0BAA0B,CAAC,IAC9CZ,OAAO,CAACS,SAAS,EAAEO,qBAAqB,CAAC,IACzChB,OAAO,CAACS,SAAS,EAAEK,6BAA6B,CAAC,IACjDd,OAAO,CAACS,SAAS,EAAEM,wBAAwB,CAAC,CAAA;;AAE9C;AACA;AACA;AACA;AACA;AACA,MAAMG,kBAAkB,GAAG,CACzB,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP,CAAA;AACD;;AAEA,MAAMC,kBAAkB,GAAGV,SAAS,IAAIT,OAAO,CAACS,SAAS,EAAES,kBAAkB,CAAC,CAAA;;AAE9E;AACA;AACA;AACA;AACA;AACA,MAAME,eAAe,GAAG,CACtB,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,M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"}
|