{"version":3,"file":"index-DbYobIHH.mjs","sources":["../../../node_modules/.pnpm/@shockpkg+archive-files@3.2.5/node_modules/@shockpkg/archive-files/esm/util.mjs","../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/conventions.js","../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/dom.js","../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/sax.js","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/util.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value/integer.mjs","../../../node_modules/.pnpm/@shockpkg+archive-files@3.2.5/node_modules/@shockpkg/archive-files/esm/types.mjs","../../../node_modules/.pnpm/@shockpkg+archive-files@3.2.5/node_modules/@shockpkg/archive-files/esm/archive.mjs","../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/index.js","../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/dom-parser.js","../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/entities.js","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/options.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value/boolean.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value/data.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value/real.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value/string.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value/dict.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/value/array.mjs","../../../node_modules/.pnpm/@shockpkg+plist-dom@4.0.7/node_modules/@shockpkg/plist-dom/esm/plist.mjs","../../../node_modules/.pnpm/@shockpkg+hdi-mac@3.1.4/node_modules/@shockpkg/hdi-mac/esm/mounter.mjs","../../../node_modules/.pnpm/@shockpkg+archive-files@3.2.5/node_modules/@shockpkg/archive-files/esm/archive/hdi.mjs"],"sourcesContent":["import { constants as fsConstants } from 'node:fs';\nimport { chmod, lstat, open, readdir, readlink, symlink, utimes } from 'node:fs/promises';\nimport { join as pathJoin } from 'node:path';\nimport { Writable } from 'node:stream';\nimport { pipeline } from 'node:stream/promises';\nimport { PathType } from \"./types.mjs\";\nconst {\n  O_WRONLY,\n  O_SYMLINK\n} = fsConstants;\nexport const fsLchmodSupported = !!O_SYMLINK;\nexport const fsLutimesSupported = !!O_SYMLINK;\n\n/**\n * Normalize an entry path.\n *\n * @param path Path string.\n * @returns Normalized path.\n */\nexport function pathNormalize(path) {\n  return path.replace(/\\\\/g, '/').replace(/([^/])\\/+$/, '$1');\n}\n\n/**\n * Get path to the resource fork pseudo-file.\n *\n * @param path Path string.\n * @returns Resource fork pseudo-file path.\n */\nexport function pathResourceFork(path) {\n  return pathJoin(path, '..namedfork', 'rsrc');\n}\n\n/**\n * Get path type from stat object, or null if unsupported.\n *\n * @param stat Stats object.\n * @returns Path type.\n */\nexport function statToPathType(stat) {\n  if (stat.isSymbolicLink()) {\n    return PathType.SYMLINK;\n  }\n  if (stat.isDirectory()) {\n    return PathType.DIRECTORY;\n  }\n  if (stat.isFile()) {\n    return PathType.FILE;\n  }\n  return null;\n}\n\n/**\n * Get path type from stat mode, or null if unsupported.\n *\n * @param mode Stat mode.\n * @returns Path type.\n */\nexport function modeToPathType(mode) {\n  if (bitwiseAndEqual(mode, 0o0120000)) {\n    return PathType.SYMLINK;\n  }\n  if (bitwiseAndEqual(mode, 0o0040000)) {\n    return PathType.DIRECTORY;\n  }\n  if (bitwiseAndEqual(mode, 0o0100000)) {\n    return PathType.FILE;\n  }\n  return null;\n}\n\n/**\n * Get permission bits from mode value.\n *\n * @param mode Stat mode.\n * @returns Permission bits.\n */\nexport function modePermissionBits(mode) {\n  // eslint-disable-next-line no-bitwise\n  return mode & 0b111111111;\n}\n\n/**\n * Check if all the bits set.\n *\n * @param value Bits value.\n * @param mask Mask value.\n * @returns True of all the bits set.\n */\nexport function bitwiseAndEqual(value, mask) {\n  // eslint-disable-next-line no-bitwise\n  return (value & mask) === mask;\n}\n\n/**\n * Read a stream into a buffer.\n * Reading a stream into a buffer should be avoided where possible.\n * This is however useful for some small streams.\n *\n * @param stream Readable stream.\n * @returns Full buffer.\n */\nexport async function streamToBuffer(stream) {\n  const datas = [];\n  let size = 0;\n  await pipeline(stream, new Writable({\n    // eslint-disable-next-line jsdoc/require-jsdoc\n    write: (data, _encoding, cb) => {\n      datas.push(data);\n      size += data.length;\n      cb();\n    }\n  }));\n  return Buffer.concat(datas, size);\n}\n\n/**\n * Wrapper for lchmod, does nothing on unsupported platforms.\n *\n * @param path File path.\n * @param mode File mode.\n */\nexport async function fsLchmod(path, mode) {\n  // Skip if not supported.\n  if (!fsLchmodSupported) {\n    return;\n  }\n\n  // eslint-disable-next-line no-bitwise\n  const fd = await open(path, O_WRONLY | O_SYMLINK);\n  try {\n    await fd.chmod(mode);\n  } finally {\n    await fd.close();\n  }\n}\n\n/**\n * Wrapper for utimes.\n *\n * @param path File path.\n * @param atime Access time.\n * @param mtime Modification time.\n */\nexport async function fsUtimes(path, atime, mtime) {\n  await utimes(path, atime, mtime);\n}\n\n/**\n * Implementation of lutimes, does nothing on unsupported platforms.\n *\n * @param path File path.\n * @param atime Access time.\n * @param mtime Modification time.\n */\nexport async function fsLutimes(path, atime, mtime) {\n  // Skip if not supported.\n  if (!fsLutimesSupported) {\n    return;\n  }\n\n  // eslint-disable-next-line no-bitwise\n  const fd = await open(path, O_WRONLY | O_SYMLINK);\n  try {\n    await fd.utimes(atime, mtime);\n  } finally {\n    await fd.close();\n  }\n}\n\n/**\n * A readlink wrapper that returns raw link buffer.\n *\n * @param path Link path.\n * @returns Raw link.\n */\nexport async function fsReadlinkRaw(path) {\n  return readlink(path, 'buffer');\n}\n\n/**\n * Wrapper for symlink.\n *\n * @param path Path of symbolic link.\n * @param target Target of symbolic link.\n */\nexport async function fsSymlink(path, target) {\n  await symlink(target, path);\n}\n\n/**\n * Wrapper for chmod.\n *\n * @param path File path.\n * @param mode File mode.\n */\nexport async function fsChmod(path, mode) {\n  await chmod(path, mode);\n}\n\n/**\n * A readdir wrapper with consistent output.\n *\n * @param path Directory path.\n * @returns Directory listing.\n */\nexport async function fsReaddir(path) {\n  return (await readdir(path)).sort();\n}\n\n/**\n * An lstat wrapper.\n *\n * @param path Path string.\n * @returns Stat object.\n */\nexport async function fsLstat(path) {\n  return lstat(path);\n}\n\n/**\n * An lstat wrapper returning null if not exist.\n *\n * @param path Path string.\n * @returns Stat object.\n */\nexport async function fsLstatExists(path) {\n  try {\n    return await fsLstat(path);\n  } catch (err) {\n    const {\n      code\n    } = err;\n    if (code === 'ENOENT' || code === 'ENOTDIR') {\n      return null;\n    }\n    throw err;\n  }\n}\n\n/**\n * Walk file system path.\n * If callback returns false skips recursing a directory.\n * If callback returns null aborts walking.\n *\n * @param base Directory path.\n * @param itter Callback for each entry.\n * @param options Walk options.\n */\nexport async function fsWalk(base, itter, options = {}) {\n  const {\n    ignoreUnreadableDirectories\n  } = options;\n  const stack = (await fsReaddir(base)).reverse();\n  while (stack.length) {\n    const entry = stack.pop();\n    const fullPath = pathJoin(base, entry);\n    // eslint-disable-next-line no-await-in-loop\n    const stat = await fsLstat(fullPath);\n\n    // Callback, possibly stop recursion on directory.\n    // eslint-disable-next-line no-await-in-loop\n    const recurse = await itter(entry, stat);\n    if (recurse === null) {\n      break;\n    }\n    if (recurse === false || !stat.isDirectory()) {\n      continue;\n    }\n\n    // Recurse down.\n    let subs = [];\n    try {\n      // eslint-disable-next-line no-await-in-loop\n      subs = await fsReaddir(fullPath);\n    } catch (err) {\n      if (!(err && ignoreUnreadableDirectories && err.code === 'EACCES')) {\n        throw err;\n      }\n    }\n    for (let i = subs.length; i--;) {\n      stack.push(pathJoin(entry, subs[i]));\n    }\n  }\n}\n//# sourceMappingURL=util.mjs.map","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array<T> | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array<T> | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial<Pick<ArrayConstructor['prototype'], 'find'>>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick<ObjectConstructor, 'freeze'> = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly<T>}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record<string, boolean | undefined>} current\n * @param {string} element\n * @returns {Record<string, boolean | undefined>}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE                = NodeType.ELEMENT_NODE                = 1;\nvar ATTRIBUTE_NODE              = NodeType.ATTRIBUTE_NODE              = 2;\nvar TEXT_NODE                   = NodeType.TEXT_NODE                   = 3;\nvar CDATA_SECTION_NODE          = NodeType.CDATA_SECTION_NODE          = 4;\nvar ENTITY_REFERENCE_NODE       = NodeType.ENTITY_REFERENCE_NODE       = 5;\nvar ENTITY_NODE                 = NodeType.ENTITY_NODE                 = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE                = NodeType.COMMENT_NODE                = 8;\nvar DOCUMENT_NODE               = NodeType.DOCUMENT_NODE               = 9;\nvar DOCUMENT_TYPE_NODE          = NodeType.DOCUMENT_TYPE_NODE          = 10;\nvar DOCUMENT_FRAGMENT_NODE      = NodeType.DOCUMENT_FRAGMENT_NODE      = 11;\nvar NOTATION_NODE               = NodeType.NOTATION_NODE               = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR              = ExceptionCode.INDEX_SIZE_ERR              = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR          = ExceptionCode.DOMSTRING_SIZE_ERR          = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR       = ExceptionCode.HIERARCHY_REQUEST_ERR       = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR          = ExceptionCode.WRONG_DOCUMENT_ERR          = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR       = ExceptionCode.INVALID_CHARACTER_ERR       = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR         = ExceptionCode.NO_DATA_ALLOWED_ERR         = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR               = ExceptionCode.NOT_FOUND_ERR               = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR           = ExceptionCode.NOT_SUPPORTED_ERR           = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR         = ExceptionCode.INUSE_ATTRIBUTE_ERR         = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR        \t= ExceptionCode.INVALID_STATE_ERR        \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR               \t= ExceptionCode.SYNTAX_ERR               \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR            \t= ExceptionCode.NAMESPACE_ERR           \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR       \t= ExceptionCode.INVALID_ACCESS_ERR      \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index  unsigned long\n\t *   Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i<this.length;i++){\n\t\t\tserializeToString(this[i],buf,isHTML,nodeFilter);\n\t\t}\n\t\treturn buf.join('');\n\t},\n\t/**\n\t * @private\n\t * @param {function (Node):boolean} predicate\n\t * @returns {Node[]}\n\t */\n\tfilter: function (predicate) {\n\t\treturn Array.prototype.filter.call(this, predicate);\n\t},\n\t/**\n\t * @private\n\t * @param {Node} item\n\t * @returns {number}\n\t */\n\tindexOf: function (item) {\n\t\treturn Array.prototype.indexOf.call(this, item);\n\t},\n};\n\nfunction LiveNodeList(node,refresh){\n\tthis._node = node;\n\tthis._refresh = refresh\n\t_updateLiveList(this);\n}\nfunction _updateLiveList(list){\n\tvar inc = list._node._inc || list._node.ownerDocument._inc;\n\tif (list._inc !== inc) {\n\t\tvar ls = list._refresh(list._node);\n\t\t__set__(list,'length',ls.length);\n\t\tif (!list.$$length || ls.length < list.$$length) {\n\t\t\tfor (var i = ls.length; i in list; i++) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\t\t\tdelete list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcopy(ls,list);\n\t\tlist._inc = inc;\n\t}\n}\nLiveNodeList.prototype.item = function(i){\n\t_updateLiveList(this);\n\treturn this[i] || null;\n}\n\n_extends(LiveNodeList,NodeList);\n\n/**\n * Objects implementing the NamedNodeMap interface are used\n * to represent collections of nodes that can be accessed by name.\n * Note that NamedNodeMap does not inherit from NodeList;\n * NamedNodeMaps are not maintained in any particular order.\n * Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index,\n * but this is simply to allow convenient enumeration of the contents of a NamedNodeMap,\n * and does not imply that the DOM specifies an order to these Nodes.\n * NamedNodeMap objects in the DOM are live.\n * used for attributes or DocumentType entities\n */\nfunction NamedNodeMap() {\n};\n\nfunction _findNodeIndex(list,node){\n\tvar i = list.length;\n\twhile(i--){\n\t\tif(list[i] === node){return i}\n\t}\n}\n\nfunction _addNamedNode(el,list,newAttr,oldAttr){\n\tif(oldAttr){\n\t\tlist[_findNodeIndex(list,oldAttr)] = newAttr;\n\t}else{\n\t\tlist[list.length++] = newAttr;\n\t}\n\tif(el){\n\t\tnewAttr.ownerElement = el;\n\t\tvar doc = el.ownerDocument;\n\t\tif(doc){\n\t\t\toldAttr && _onRemoveAttribute(doc,el,oldAttr);\n\t\t\t_onAddAttribute(doc,el,newAttr);\n\t\t}\n\t}\n}\nfunction _removeNamedNode(el,list,attr){\n\t//console.log('remove attr:'+attr)\n\tvar i = _findNodeIndex(list,attr);\n\tif(i>=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i<lastIndex){\n\t\t\tlist[i] = list[++i]\n\t\t}\n\t\tlist.length = lastIndex;\n\t\tif(el){\n\t\t\tvar doc = el.ownerDocument;\n\t\t\tif(doc){\n\t\t\t\t_onRemoveAttribute(doc,el,attr);\n\t\t\t\tattr.ownerElement = null;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tthrow new DOMException(NOT_FOUND_ERR,new Error(el.tagName+'@'+attr))\n\t}\n}\nNamedNodeMap.prototype = {\n\tlength:0,\n\titem:NodeList.prototype.item,\n\tgetNamedItem: function(key) {\n//\t\tif(key.indexOf(':')>0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t *   (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument  DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI,  qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t *   (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t  or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n  \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n    // Introduced in DOM Level 2:\n    hasAttributes:function(){\n    \treturn this.attributes.length>0;\n    },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n    lookupPrefix:function(namespaceURI){\n    \tvar el = this;\n    \twhile(el){\n    \t\tvar map = el._nsMap;\n    \t\t//console.dir(map)\n    \t\tif(map){\n    \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n    \t\t\t}\n    \t\t}\n    \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n    \t}\n    \treturn null;\n    },\n    // Introduced in DOM Level 3:\n    lookupNamespaceURI:function(prefix){\n    \tvar el = this;\n    \twhile(el){\n    \t\tvar map = el._nsMap;\n    \t\t//console.dir(map)\n    \t\tif(map){\n    \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n    \t\t\t\treturn map[prefix] ;\n    \t\t\t}\n    \t\t}\n    \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n    \t}\n    \treturn null;\n    },\n    // Introduced in DOM Level 3:\n    isDefaultNamespace:function(namespaceURI){\n    \tvar prefix = this.lookupPrefix(namespaceURI);\n    \treturn prefix == null;\n    }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '&lt;' ||\n         c == '>' && '&gt;' ||\n         c == '&' && '&amp;' ||\n         c == '\"' && '&quot;' ||\n         '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n        }while(node=node.nextSibling)\n    }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName :  '#document',\n\tnodeType :  DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype :  null,\n\tdocumentElement :  null,\n\t_inc : 1,\n\n\tinsertBefore :  function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild :  function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\t// add namespaces for attributes\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (attr.prefix == 'xmlns') {\n\t\t\t\tvisibleNamespaces.push({ prefix: attr.localName, namespace: attr.value });\n\t\t\t}else if(attr.nodeName == 'xmlns'){\n\t\t\t\tvisibleNamespaces.push({ prefix: '', namespace: attr.value });\n\t\t\t}\n\t\t}\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (needNamespaceDefine(attr,isHTML, visibleNamespaces)) {\n\t\t\t\tvar prefix = attr.prefix||'';\n\t\t\t\tvar uri = attr.namespaceURI;\n\t\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t\t}\n\t\t\tserializeToString(attr,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t}\n\n\t\t// add namespace for current node\n\t\tif (nodeName === prefixedNodeName && needNamespaceDefine(node, isHTML, visibleNamespaces)) {\n\t\t\tvar prefix = node.prefix||'';\n\t\t\tvar uri = node.namespaceURI;\n\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t}\n\n\t\tif(child || isHTML && !/^(?:meta|link|img|br|hr|input)$/i.test(nodeName)){\n\t\t\tbuf.push('>');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('</',prefixedNodeName,'>');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&amp;` and `&lt;` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" &gt; \", and must, for compatibility,\n\t\t * be escaped using either `&gt;` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '<![CDATA[',node.data,']]>');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"<!--\",node.data,\"-->\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('<!DOCTYPE ',node.name);\n\t\tif(pubid){\n\t\t\tbuf.push(' PUBLIC ', pubid);\n\t\t\tif (sysid && sysid!='.') {\n\t\t\t\tbuf.push(' ', sysid);\n\t\t\t}\n\t\t\tbuf.push('>');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"<?\",node.target,\" \",node.data,\"?>\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i<len;i++){\n\t\t\t//node2.setAttributeNodeNS(importNode(doc,attrs.item(i),deep));\n\t\t//}\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tbreak;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t\tbreak;\n\t//case ENTITY_REFERENCE_NODE:\n\t//case PROCESSING_INSTRUCTION_NODE:\n\t////case TEXT_NODE:\n\t//case CDATA_SECTION_NODE:\n\t//case COMMENT_NODE:\n\t//\tdeep = false;\n\t//\tbreak;\n\t//case DOCUMENT_NODE:\n\t//case DOCUMENT_TYPE_NODE:\n\t//cannot be imported.\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE：\n\t//can not hit in level3\n\t//default:throw e;\n\t}\n\tif(!node2){\n\t\tnode2 = node.cloneNode(false);//false\n\t}\n\tnode2.ownerDocument = doc;\n\tnode2.parentNode = null;\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(importNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n//\n//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1,\n//\t\t\t\t\tattributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,};\nfunction cloneNode(doc,node,deep){\n\tvar node2 = new node.constructor();\n\tfor (var n in node) {\n\t\tif (Object.prototype.hasOwnProperty.call(node, n)) {\n\t\t\tvar v = node[n];\n\t\t\tif (typeof v != \"object\") {\n\t\t\t\tif (v != node2[n]) {\n\t\t\t\t\tnode2[n] = v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif(node.childNodes){\n\t\tnode2.childNodes = new NodeList();\n\t}\n\tnode2.ownerDocument = doc;\n\tswitch (node2.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tvar attrs\t= node.attributes;\n\t\tvar attrs2\t= node2.attributes = new NamedNodeMap();\n\t\tvar len = attrs.length\n\t\tattrs2._ownerElement = node2;\n\t\tfor(var i=0;i<len;i++){\n\t\t\tnode2.setAttributeNode(cloneNode(doc,attrs.item(i),true));\n\t\t}\n\t\tbreak;;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t}\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(cloneNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n\nfunction __set__(object,key,value){\n\tobject[key] = value\n}\n//do dynamic\ntry{\n\tif(Object.defineProperty){\n\t\tObject.defineProperty(LiveNodeList.prototype,'length',{\n\t\t\tget:function(){\n\t\t\t\t_updateLiveList(this);\n\t\t\t\treturn this.$$length;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(Node.prototype,'textContent',{\n\t\t\tget:function(){\n\t\t\t\treturn getTextContent(this);\n\t\t\t},\n\n\t\t\tset:function(data){\n\t\t\t\tswitch(this.nodeType){\n\t\t\t\tcase ELEMENT_NODE:\n\t\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\t\twhile(this.firstChild){\n\t\t\t\t\t\tthis.removeChild(this.firstChild);\n\t\t\t\t\t}\n\t\t\t\t\tif(data || String(data)){\n\t\t\t\t\t\tthis.appendChild(this.ownerDocument.createTextNode(data));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.data = data;\n\t\t\t\t\tthis.value = data;\n\t\t\t\t\tthis.nodeValue = data;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tfunction getTextContent(node){\n\t\t\tswitch(node.nodeType){\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\tvar buf = [];\n\t\t\t\tnode = node.firstChild;\n\t\t\t\twhile(node){\n\t\t\t\t\tif(node.nodeType!==7 && node.nodeType !==8){\n\t\t\t\t\t\tbuf.push(getTextContent(node));\n\t\t\t\t\t}\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t}\n\t\t\t\treturn buf.join('');\n\t\t\tdefault:\n\t\t\t\treturn node.nodeValue;\n\t\t\t}\n\t\t}\n\n\t\t__set__ = function(object,key,value){\n\t\t\t//console.log(value)\n\t\t\tobject['$$'+key] = value\n\t\t}\n\t}\n}catch(e){//ie8\n}\n\n//if(typeof require == 'function'){\n\texports.DocumentType = DocumentType;\n\texports.DOMException = DOMException;\n\texports.DOMImplementation = DOMImplementation;\n\texports.Element = Element;\n\texports.Node = Node;\n\texports.NodeList = NodeList;\n\texports.XMLSerializer = XMLSerializer;\n//}\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4]   \tNameStartChar\t   ::=   \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a]   \tNameChar\t   ::=   \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5]   \tName\t   ::=   \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el<el />\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t    \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t    \t\t\tdoc.appendChild(text);\n\t    \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t        \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t        \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t        \t\tend = tagStart+1+tagName.length;\n\t        \t}else if(tagName.match(/\\s</)){\n\t        \t\ttagName = tagName.replace(/[\\s<].*/,'');\n\t        \t\terrorHandler.error(\"end tag name: \"+tagName+' maybe not complete');\n\t        \t\tend = tagStart+1+tagName.length;\n\t\t\t\t}\n\t\t\t\tvar localNSMap = config.localNSMap;\n\t\t\t\tvar endMatch = config.tagName == tagName;\n\t\t\t\tvar endIgnoreCaseMach = endMatch || config.tagName&&config.tagName.toLowerCase() == tagName.toLowerCase()\n\t\t        if(endIgnoreCaseMach){\n\t\t        \tdomBuilder.endElement(config.uri,config.localName,tagName);\n\t\t\t\t\tif(localNSMap){\n\t\t\t\t\t\tfor (var prefix in localNSMap) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!endMatch){\n\t\t            \terrorHandler.fatalError(\"end tag name: \"+tagName+' is not match the current start tagName:'+config.tagName ); // No known test case\n\t\t\t\t\t}\n\t\t        }else{\n\t\t        \tparseStack.push(config)\n\t\t        }\n\n\t\t\t\tend++;\n\t\t\t\tbreak;\n\t\t\t\t// end elment\n\t\t\tcase '?':// <?...?>\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// <!doctype,<![CDATA,<!--\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseDCC(source,tagStart,domBuilder,errorHandler);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tvar el = new ElementAttributes();\n\t\t\t\tvar currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\t\t\t\t//elStartEnd\n\t\t\t\tvar end = parseElementStartPart(source,tagStart,el,currentNSMap,entityReplacer,errorHandler);\n\t\t\t\tvar len = el.length;\n\n\n\t\t\t\tif(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tif(!entityMap.nbsp){\n\t\t\t\t\t\terrorHandler.warning('unclosed xml attribute');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(locator && len){\n\t\t\t\t\tvar locator2 = copyLocator(locator,{});\n\t\t\t\t\t//try{//attribute position fixed\n\t\t\t\t\tfor(var i = 0;i<len;i++){\n\t\t\t\t\t\tvar a = el[i];\n\t\t\t\t\t\tposition(a.offset);\n\t\t\t\t\t\ta.locator = copyLocator(locator,{});\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator2\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator;\n\t\t\t\t}else{\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (NAMESPACE.isHTML(el.uri) && !el.closed) {\n\t\t\t\t\tend = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)\n\t\t\t\t} else {\n\t\t\t\t\tend++;\n\t\t\t\t}\n\t\t\t}\n\t\t}catch(e){\n\t\t\tif (e instanceof ParseError) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\terrorHandler.error('element parse error: '+e)\n\t\t\tend = -1;\n\t\t}\n\t\tif(end>start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退，有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed  = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName =  el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart =  source.indexOf('</'+tagName+'>',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos =  source.lastIndexOf('</'+tagName+'>')\n\t\tif(pos<elStartEnd){//忘记闭合\n\t\t\tpos = source.lastIndexOf('</'+tagName)\n\t\t}\n\t\tcloseMap[tagName] =pos\n\t}\n\treturn pos<elStartEnd;\n\t//}\n}\n\nfunction _copy (source, target) {\n\tfor (var n in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, n)) {\n\t\t\ttarget[n] = source[n];\n\t\t}\n\t}\n}\n\nfunction parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'\n\tvar next= source.charAt(start+2)\n\tswitch(next){\n\tcase '-':\n\t\tif(source.charAt(start + 3) === '-'){\n\t\t\tvar end = source.indexOf('-->',start+4);\n\t\t\t//append comment source.substring(4,end)//<!--\n\t\t\tif(end>start){\n\t\t\t\tdomBuilder.comment(source,start+4,end-start-4);\n\t\t\t\treturn end+3;\n\t\t\t}else{\n\t\t\t\terrorHandler.error(\"Unclosed comment\");\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}else{\n\t\t\t//error\n\t\t\treturn -1;\n\t\t}\n\tdefault:\n\t\tif(source.substr(start+3,6) == 'CDATA['){\n\t\t\tvar end = source.indexOf(']]>',start+9);\n\t\t\tdomBuilder.startCDATA();\n\t\t\tdomBuilder.characters(source,start+9,end-start-9);\n\t\t\tdomBuilder.endCDATA()\n\t\t\treturn end+3;\n\t\t}\n\t\t//<!DOCTYPE\n\t\t//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)\n\t\tvar matchs = split(source,start);\n\t\tvar len = matchs.length;\n\t\tif(len>1 && /!doctype/i.test(matchs[0][0])){\n\t\t\tvar name = matchs[1][0];\n\t\t\tvar pubid = false;\n\t\t\tvar sysid = false;\n\t\t\tif(len>3){\n\t\t\t\tif(/^public$/i.test(matchs[2][0])){\n\t\t\t\t\tpubid = matchs[3][0];\n\t\t\t\t\tsysid = len>4 && matchs[4][0];\n\t\t\t\t}else if(/^system$/i.test(matchs[2][0])){\n\t\t\t\t\tsysid = matchs[3][0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar lastMatch = matchs[len-1]\n\t\t\tdomBuilder.startDTD(name, pubid, sysid);\n\t\t\tdomBuilder.endDTD();\n\n\t\t\treturn lastMatch.index+lastMatch[0].length\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n\nfunction parseInstruction(source,start,domBuilder){\n\tvar end = source.indexOf('?>',start);\n\tif(end){\n\t\tvar match = source.substring(start,end).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);\n\t\tif(match){\n\t\t\tvar len = match[0].length;\n\t\t\tdomBuilder.processingInstruction(match[1], match[2]) ;\n\t\t\treturn end+2;\n\t\t}else{//error\n\t\t\treturn -1;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction ElementAttributes(){\n\tthis.attributeNames = {}\n}\nElementAttributes.prototype = {\n\tsetTagName:function(tagName){\n\t\tif(!tagNamePattern.test(tagName)){\n\t\t\tthrow new Error('invalid tagName:'+tagName)\n\t\t}\n\t\tthis.tagName = tagName\n\t},\n\taddValue:function(qName, value, offset) {\n\t\tif(!tagNamePattern.test(qName)){\n\t\t\tthrow new Error('invalid attribute:'+qName)\n\t\t}\n\t\tthis.attributeNames[qName] = this.length;\n\t\tthis[this.length++] = {qName:qName,value:value,offset:offset}\n\t},\n\tlength:0,\n\tgetLocalName:function(i){return this[i].localName},\n\tgetLocator:function(i){return this[i].locator},\n\tgetQName:function(i){return this[i].qName},\n\tgetURI:function(i){return this[i].uri},\n\tgetValue:function(i){return this[i].value}\n//\t,getIndex:function(uri, localName)){\n//\t\tif(localName){\n//\n//\t\t}else{\n//\t\t\tvar qName = uri\n//\t\t}\n//\t},\n//\tgetValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},\n//\tgetType:function(uri,localName){}\n//\tgetType:function(i){},\n}\n\n\n\nfunction split(source,start){\n\tvar match;\n\tvar buf = [];\n\tvar reg = /'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;\n\treg.lastIndex = start;\n\treg.exec(source);//skip <\n\twhile(match = reg.exec(source)){\n\t\tbuf.push(match);\n\t\tif(match[1])return buf;\n\t}\n}\n\nexports.XMLReader = XMLReader;\nexports.ParseError = ParseError;\n","import { DOMParser } from '@xmldom/xmldom';\nconst B6 = 0x3f;\nconst B8 = 0xff;\nconst C64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst C64M = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, 64, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51];\n/**\n * Decode an XML string.\n *\n * @param xml XML string.\n * @returns Decoded declaration, doctype, and document element.\n */\nexport function xmlDecode(xml) {\n  let declaration = null;\n  let doctype = null;\n  const errors = [];\n  const parser = new DOMParser({\n    locator: {},\n    errorHandler: {\n      /**\n       * Warning callback.\n       *\n       * @param e Error string.\n       */\n      warning: e => {\n        // Ignore warnings.\n      },\n      /**\n       * Error callback.\n       *\n       * @param e Error string.\n       */\n      error: e => {\n        errors.push(e);\n      },\n      /**\n       * Fatal error callback.\n       *\n       * @param e Error string.\n       */\n      fatalError: e => {\n        errors.push(e);\n      }\n    }\n  });\n  const doc = parser.parseFromString(xml, 'text/xml');\n  if (errors.length) {\n    throw new Error(`XML decode error: ${errors[0]}`);\n  }\n  const {\n    childNodes\n  } = doc;\n  const documentElement = doc.documentElement || null;\n  for (let i = 0, l = childNodes.length; i < l; i++) {\n    const childNode = childNodes[i];\n    if (childNode === documentElement) {\n      break;\n    }\n    const str = childNode.toString();\n    if (/^<\\?xml[^>]*\\?>$/.test(str)) {\n      declaration = str;\n    }\n    if (/^<!DOCTYPE[^>]*>$/.test(str)) {\n      doctype = str;\n    }\n  }\n  if (!documentElement) {\n    throw new Error('XML decode error: No document element');\n  }\n  return {\n    declaration,\n    doctype,\n    documentElement\n  };\n}\n\n/**\n * List XML element child elements.\n * Throws if non-whitespace nodes are found.\n *\n * @param element XML element.\n * @returns XML element list.\n */\nexport function xmlElementChildElements(element) {\n  const {\n    childNodes\n  } = element;\n  const r = [];\n  for (let i = 0, l = childNodes.length; i < l; i++) {\n    const childNode = childNodes[i];\n    if ('tagName' in childNode) {\n      r.push(childNode);\n      continue;\n    }\n    const {\n      nodeValue\n    } = childNode;\n    if (nodeValue && !/^\\s*$/.test(nodeValue)) {\n      throw new Error(`Found text children of: ${element.tagName}`);\n    }\n  }\n  return r;\n}\n\n/**\n * Get the XML element text node.\n * Returns null if none, throws if multiple elements.\n *\n * @param element XML element.\n * @returns XML text node list.\n */\nexport function xmlElementText(element) {\n  const {\n    childNodes\n  } = element;\n  let r = null;\n  for (let i = 0, l = childNodes.length; i < l; i++) {\n    if (i) {\n      throw new Error(`Multiple child elements in: ${element.tagName}`);\n    }\n    const childNode = childNodes[i];\n    if (!('tagName' in childNode) && 'data' in childNode && 'nodeValue' in childNode) {\n      r = childNode;\n    } else {\n      throw new Error(`Unexpected child element in: ${element.tagName}`);\n    }\n  }\n  return r;\n}\n\n/**\n * Assert XML element has no children.\n *\n * @param element XML element.\n * @param tagName XML element tag name.\n */\nexport function assertXmlTagName(element, tagName) {\n  const tn = element.tagName;\n  if (tn !== tagName) {\n    throw new Error(`Unexpected tagName: ${tagName}`);\n  }\n}\n\n/**\n * Assert XML element has no children.\n *\n * @param element XML element.\n */\nexport function assertNoXmlElementChildNodes(element) {\n  const {\n    childNodes\n  } = element;\n  if (childNodes.length) {\n    throw new Error(`Unexpected child nodes: ${element.tagName}`);\n  }\n}\n\n/**\n * Base64 encode function mirroring decode function.\n *\n * @param data Byte array.\n * @returns Base64 string.\n */\nexport function base64Encode(data) {\n  const l = data.length;\n  let r = '';\n  for (let i = 0; i < l;) {\n    const a = data[i++];\n    const b = i < l ? data[i++] : null;\n    const c = i < l ? data[i++] : null;\n    // eslint-disable-next-line no-bitwise\n    const o = a << 16 | (b || 0) << 8 | (c || 0);\n    r +=\n    // eslint-disable-next-line no-bitwise\n    C64[o >> 18] +\n    // eslint-disable-next-line no-bitwise\n    C64[o >> 12 & B6] +\n    // eslint-disable-next-line no-bitwise\n    C64[b === null ? 64 : o >> 6 & B6] +\n    // eslint-disable-next-line no-bitwise\n    C64[c === null ? 64 : o & B6];\n  }\n  return r;\n}\n\n/**\n * Base64 decode function that matches plist parsing behavior.\n *\n * @param base64 Base64 string.\n * @returns Byte array.\n */\nexport function base64Decode(base64) {\n  const l = base64.length;\n  const r = [];\n  OUTER: for (let a, b, c, d, m, z, i = 0; i < l;) {\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        a = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        b = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        c = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    for (;;) {\n      // eslint-disable-next-line unicorn/prefer-code-point\n      if ((m = C64M[base64.charCodeAt(i++)]) >= 0) {\n        d = m;\n        break;\n      }\n      if (i >= l) {\n        break OUTER;\n      }\n    }\n    // eslint-disable-next-line no-bitwise\n    z = (a & B6) << 18 | (b & B6) << 12 | (c & B6) << 6 | d & B6;\n    // eslint-disable-next-line default-case, no-nested-ternary\n    switch (c > B6 ? d > B6 ? 2 : 0 : d > B6 ? 1 : 0) {\n      case 0:\n        {\n          // eslint-disable-next-line no-bitwise\n          r.push(z >> 16 & B8, z >> 8 & B8, z & B8);\n          break;\n        }\n      case 1:\n        {\n          // eslint-disable-next-line no-bitwise\n          r.push(z >> 16 & B8, z >> 8 & B8);\n          break;\n        }\n      case 2:\n        {\n          // eslint-disable-next-line no-bitwise\n          r.push(z >> 16 & B8);\n          break;\n        }\n    }\n  }\n  return new Uint8Array(r);\n}\n//# sourceMappingURL=util.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\nconst MAX_NUM = 0x1fffffffffffff;\n\n/**\n * Assert number is integer.\n *\n * @param value Number value.\n */\nfunction assertInteger(value) {\n  if (typeof value === 'number' && !Number.isInteger(value)) {\n    // eslint-disable-next-line unicorn/prefer-type-error\n    throw new Error(`Value not an integer: ${value}`);\n  }\n}\n\n/**\n * ValueInteger object.\n */\nexport class ValueInteger extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'integer';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['integer'];\n\n  /**\n   * Value value.\n   */\n  value = 0;\n\n  /**\n   * ValueInteger constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = 0) {\n    super();\n    assertInteger(value);\n    this.value = value;\n  }\n\n  /**\n   * Get value as BigInt.\n   *\n   * @returns Value as a BigInt.\n   */\n  asBigInt() {\n    return BigInt(this.value);\n  }\n\n  /**\n   * Get value as Number, possibly losing some precision.\n   *\n   * @returns Value as a Number.\n   */\n  asNumber() {\n    return Number(this.value);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'integer');\n    const text = xmlElementText(element)?.nodeValue || '';\n    if (!/^[+-]?\\d+$/.test(text)) {\n      throw new Error(`Invalid integer data: ${text}`);\n    }\n    const num = +text;\n    this.value = num > MAX_NUM || num < -MAX_NUM ? BigInt(text) : num;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const v = this.value;\n    assertInteger(v);\n    return `${p}<integer>${v}</integer>`;\n  }\n}\n//# sourceMappingURL=integer.mjs.map","export let PathType = /*#__PURE__*/function (PathType) {\n  PathType[\"DIRECTORY\"] = \"directory\";\n  PathType[\"FILE\"] = \"file\";\n  PathType[\"SYMLINK\"] = \"symlink\";\n  PathType[\"RESOURCE_FORK\"] = \"resource-fork\";\n  return PathType;\n}({});\n//# sourceMappingURL=types.mjs.map","/* eslint-disable max-classes-per-file */\n\nimport { createWriteStream } from 'node:fs';\nimport { mkdir, rm, writeFile } from 'node:fs/promises';\nimport { dirname, resolve } from 'node:path';\nimport { Readable, pipeline } from 'node:stream';\nimport { promisify } from 'node:util';\nconst pipe = promisify(pipeline);\nimport { PathType } from \"./types.mjs\";\nimport { fsChmod, fsLchmod, fsLstatExists, fsLutimes, fsSymlink, fsUtimes, modePermissionBits, pathNormalize, pathResourceFork, streamToBuffer } from \"./util.mjs\";\n/**\n * Entry object.\n */\nexport class Entry {\n  /**\n   * Entry archive.\n   */\n\n  /**\n   * Entry type.\n   */\n\n  /**\n   * Entry path.\n   */\n\n  /**\n   * Entry path, raw.\n   */\n\n  /**\n   * Entry size.\n   */\n\n  /**\n   * Entry size, compressed.\n   */\n\n  /**\n   * Entry mode.\n   */\n\n  /**\n   * Entry uid.\n   */\n\n  /**\n   * Entry gid.\n   */\n\n  /**\n   * Entry uname.\n   */\n\n  /**\n   * Entry gname.\n   */\n\n  /**\n   * Entry atime.\n   */\n\n  /**\n   * Entry mtime.\n   */\n\n  /**\n   * Read data.\n   */\n\n  /**\n   * Read rsrc.\n   */\n\n  /**\n   * Read symlink.\n   */\n\n  /**\n   * Entry triggering.\n   */\n  _triggering = false;\n\n  /**\n   * Entry triggered.\n   */\n  _triggered = false;\n\n  /**\n   * Entry extracted.\n   */\n  _extracted = false;\n\n  /**\n   * Entry constructor.\n   *\n   * @param info Info object.\n   */\n  constructor(info) {\n    this.archive = info.archive;\n    this.type = info.type;\n    this.pathRaw = info.pathRaw;\n    this.path = pathNormalize(info.pathRaw);\n    this.size = info.size ?? null;\n    this.sizeComp = info.sizeComp ?? null;\n    this.mode = info.mode ?? null;\n    this.uid = info.uid ?? null;\n    this.gid = info.gid ?? null;\n    this.uname = info.uname ?? null;\n    this.gname = info.gname ?? null;\n    this.atime = info.atime ?? null;\n    this.mtime = info.mtime ?? null;\n    this._readData = info.readData ?? null;\n    this._readRsrc = info.readRsrc ?? null;\n    this._readSymlink = info.readSymlink ?? null;\n  }\n\n  /**\n   * This entry path includes named volume.\n   *\n   * @returns Entry has volume name in path.\n   */\n  get hasNamedVolume() {\n    return this.archive.hasNamedVolumes;\n  }\n\n  /**\n   * This entry volume name, or null.\n   *\n   * @returns Entry path volume name.\n   */\n  get volumeName() {\n    if (this.hasNamedVolume) {\n      const {\n        path\n      } = this;\n      return path.slice(0, path.indexOf('/'));\n    }\n    return null;\n  }\n\n  /**\n   * This entry path without any possible volume name.\n   *\n   * @returns Entry path without the volume name.\n   */\n  get volumePath() {\n    const {\n      path\n    } = this;\n    if (this.hasNamedVolume) {\n      return path.slice(path.indexOf('/') + 1);\n    }\n    return path;\n  }\n\n  /**\n   * Read entry as stream, or null if nothing to read.\n   * Consuming function will need to wait for stream to close.\n   *\n   * @returns Readable stream or null if nothing to read.\n   */\n  async stream() {\n    this._beginExtract();\n    return this._stream();\n  }\n\n  /**\n   * Read entire entry into a Buffer.\n   *\n   * @returns Buffer or null if nothing to be read.\n   */\n  async read() {\n    this._beginExtract();\n    const stream = await this._stream();\n    return stream ? streamToBuffer(stream) : null;\n  }\n\n  /**\n   * Extract entry.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async extract(path, options = {}) {\n    this._beginExtract();\n    await this._extract(path, options);\n  }\n\n  /**\n   * Trigger on itterator function.\n   *\n   * @param itter Itterator function.\n   * @returns Return value.\n   */\n  async trigger(itter) {\n    let r;\n    if (this._triggered) {\n      throw new Error('Archive entry already triggered');\n    }\n    this._triggered = this._triggering = true;\n    try {\n      r = await itter(this);\n    } finally {\n      this._triggering = false;\n    }\n    return r;\n  }\n\n  /**\n   * Run again after reading.\n   *\n   * @param path Extract path, relative.\n   * @param pathFull An optional full path to be used.\n   * @param options Extract options.\n   */\n  async setAttributes(path, pathFull = null, options = {}) {\n    const pathSet = pathFull === null ? path : pathFull;\n    const {\n      ignorePermissions,\n      ignoreTimes\n    } = options;\n    const {\n      type,\n      mode,\n      atime,\n      mtime\n    } = this;\n    let link = false;\n    switch (type) {\n      case PathType.FILE:\n        {\n          break;\n        }\n      case PathType.RESOURCE_FORK:\n        {\n          break;\n        }\n      case PathType.DIRECTORY:\n        {\n          break;\n        }\n      case PathType.SYMLINK:\n        {\n          link = true;\n          break;\n        }\n      default:\n        {\n          throw new Error(`Unsupported path type: ${type}`);\n        }\n    }\n    const atimeSet = atime || mtime || null;\n    const mtimeSet = mtime || atime || null;\n    if (!ignorePermissions && mode !== null) {\n      const chmod = link ? fsLchmod : fsChmod;\n      const modeSet = modePermissionBits(mode);\n      await chmod(pathSet, modeSet);\n    }\n    if (!ignoreTimes && atimeSet && mtimeSet) {\n      const utimes = link ? fsLutimes : fsUtimes;\n      await utimes(pathSet, atimeSet, mtimeSet);\n    }\n  }\n\n  /**\n   * Method to call before begining extraction.\n   * Throws error if extraction already started or entry not active.\n   */\n  _beginExtract() {\n    if (!this._triggering) {\n      throw new Error('Archive entry is not active');\n    }\n    if (this._extracted) {\n      throw new Error('Archive entry can only be extracted once');\n    }\n    this._extracted = true;\n  }\n\n  /**\n   * Create an extract error for path that exists.\n   *\n   * @param path Extract path.\n   * @returns Error object.\n   */\n  _errorExtractPathExists(path) {\n    return new Error(`Extract path already exists: ${path}`);\n  }\n\n  /**\n   * Create an extract error for a resource fork not going to a file.\n   *\n   * @param path Extract path.\n   * @returns Error object.\n   */\n  _errorNoResourceFork(path) {\n    return new Error(`Extract path for resource fork not a file: ${path}`);\n  }\n\n  /**\n   * Extract entry.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extract(path, options) {\n    this.archive.afterReadSetAttributesRemove(path);\n    const {\n      type\n    } = this;\n    switch (type) {\n      case PathType.FILE:\n        {\n          await this._extractFile(path, options);\n          break;\n        }\n      case PathType.RESOURCE_FORK:\n        {\n          await this._extractResourceFork(path, options);\n          break;\n        }\n      case PathType.DIRECTORY:\n        {\n          await this._extractDirectory(path, options);\n          break;\n        }\n      case PathType.SYMLINK:\n        {\n          await this._extractSymlink(path, options);\n          break;\n        }\n      default:\n        {\n          throw new Error(`Unsupported path type: ${type}`);\n        }\n    }\n  }\n\n  /**\n   * Base function for extracting stream to a file.\n   *\n   * @param path Extract path.\n   * @param reader Reader function.\n   * @param options Extract options.\n   */\n  async _extractStreamToFile(path, reader, options) {\n    const {\n      replace\n    } = options;\n\n    // Check if something exists at path, optionally removing.\n    const stat = await fsLstatExists(path);\n    if (stat) {\n      // If replacing, then remove, else throw.\n      if (replace) {\n        await rm(path, {\n          recursive: true,\n          force: true\n        });\n      } else {\n        throw this._errorExtractPathExists(path);\n      }\n    } else {\n      await mkdir(dirname(path), {\n        recursive: true\n      });\n    }\n\n    // Write file.\n    await writeFile(path, Buffer.alloc(0));\n    const stream = await reader();\n    if (stream) {\n      await pipe(stream, createWriteStream(path));\n    }\n\n    // Set attributes.\n    await this.setAttributes(path, null, options);\n  }\n\n  /**\n   * Extract as a file.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractFile(path, options) {\n    const readData = this._readData;\n    if (!readData) {\n      throw new Error('Internal error');\n    }\n    await this._extractStreamToFile(path, readData, options);\n  }\n\n  /**\n   * Extract as resource fork to an existing file.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractResourceFork(path, options) {\n    const readRsrc = this._readRsrc;\n    if (!readRsrc) {\n      throw new Error('Internal error');\n    }\n\n    // Optionally extract as a data file.\n    if (options.resourceForkAsFile) {\n      await this._extractStreamToFile(path, readRsrc, options);\n      return;\n    }\n\n    // Check if file exists at path, else throw.\n    const stat = await fsLstatExists(path);\n    if (!stat || !stat.isFile()) {\n      throw this._errorNoResourceFork(path);\n    }\n\n    // Create resource fork path.\n    const pathRsrc = pathResourceFork(path);\n\n    // Write the resource fork.\n    const stream = await readRsrc();\n\n    // eslint-disable-next-line unicorn/prefer-ternary\n    if (stream) {\n      await pipe(stream, createWriteStream(pathRsrc));\n    } else {\n      await writeFile(pathRsrc, Buffer.alloc(0));\n    }\n\n    // Set attributes.\n    await this.setAttributes(path, null, options);\n  }\n\n  /**\n   * Extract as a directory.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractDirectory(path, options) {\n    const {\n      replace\n    } = options;\n\n    // Check if something exists at path, else create.\n    const stat = await fsLstatExists(path);\n    if (stat) {\n      // If not directory, then remove and replace it, else throw.\n      if (!stat.isDirectory()) {\n        if (replace) {\n          await rm(path, {\n            recursive: true,\n            force: true\n          });\n          await mkdir(path, {\n            recursive: true\n          });\n        } else {\n          throw this._errorExtractPathExists(path);\n        }\n      }\n    } else {\n      await mkdir(path, {\n        recursive: true\n      });\n    }\n\n    // Set directory attributes after any children are added.\n    this.archive.afterReadSetAttributes(path, this, {\n      ...options\n    });\n  }\n\n  /**\n   * Extract as a symlink.\n   *\n   * @param path Extract path.\n   * @param options Extract options.\n   */\n  async _extractSymlink(path, options) {\n    const readSymlink = this._readSymlink;\n    if (!readSymlink) {\n      throw new Error('Internal error');\n    }\n    const {\n      replace,\n      symlinkAsFile\n    } = options;\n\n    // Check if something exists at path, optionally removing.\n    const stat = await fsLstatExists(path);\n    if (stat) {\n      // If replacing, then remove, else throw.\n      if (replace) {\n        await rm(path, {\n          recursive: true,\n          force: true\n        });\n      } else {\n        throw this._errorExtractPathExists(path);\n      }\n    } else {\n      // Ensure base directory exists.\n      await mkdir(dirname(path), {\n        recursive: true\n      });\n    }\n\n    // Read target.\n    const target = await readSymlink();\n\n    // Create link, optionally as a file.\n    // eslint-disable-next-line unicorn/prefer-ternary\n    if (symlinkAsFile) {\n      await writeFile(path, target);\n    } else {\n      await fsSymlink(path, target);\n    }\n\n    // Set attributes.\n    await this.setAttributes(path, null, options);\n  }\n\n  /**\n   * Read as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _stream() {\n    const {\n      type\n    } = this;\n    switch (type) {\n      case PathType.FILE:\n        {\n          return this._streamFile();\n        }\n      case PathType.RESOURCE_FORK:\n        {\n          return this._streamResourceFork();\n        }\n      case PathType.DIRECTORY:\n        {\n          return this._streamDirectory();\n        }\n      case PathType.SYMLINK:\n        {\n          return this._streamSymlink();\n        }\n      default:\n        {\n          throw new Error(`Unsupported path type: ${type}`);\n        }\n    }\n  }\n\n  /**\n   * Read file as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _streamFile() {\n    const readData = this._readData;\n    if (!readData) {\n      throw new Error('Internal error');\n    }\n    return readData();\n  }\n\n  /**\n   * Read resource fork as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _streamResourceFork() {\n    const readRsrc = this._readRsrc;\n    if (!readRsrc) {\n      throw new Error('Internal error');\n    }\n    return readRsrc();\n  }\n\n  /**\n   * Read directory null stream.\n   *\n   * @returns Null stream.\n   */\n  async _streamDirectory() {\n    return null;\n  }\n\n  /**\n   * Read symlink as stream.\n   *\n   * @returns Readable stream.\n   */\n  async _streamSymlink() {\n    const readSymlink = this._readSymlink;\n    if (!readSymlink) {\n      throw new Error('Internal error');\n    }\n    const r = new Readable({\n      // eslint-disable-next-line jsdoc/require-jsdoc\n      read: () => {\n        readSymlink().then(d => {\n          r.push(d);\n          // eslint-disable-next-line unicorn/no-array-push-push\n          r.push(null);\n        }, err => {\n          r.emit('error', err);\n        });\n      }\n    });\n    return r;\n  }\n}\n\n/**\n * Archive object.\n */\nexport class Archive {\n  /**\n   * List of file extensions, or null.\n   */\n  static FILE_EXTENSIONS = null;\n\n  /**\n   * Archive has named volumes that each entry will be under.\n   */\n  static HAS_NAMED_VOLUMES = false;\n\n  /**\n   * Entry constructor.\n   */\n  Entry = Entry;\n\n  /**\n   * File path.\n   */\n\n  /**\n   * Flag for currently reading.\n   */\n  _reading = false;\n\n  /**\n   * Map of entries to set attributes on after reading.\n   */\n  _afterReadSetAttributes = null;\n\n  /**\n   * Archive constructor.\n   *\n   * @param path File path.\n   */\n  constructor(path) {\n    this.path = path;\n  }\n\n  /**\n   * List of file extensions used by this format.\n   *\n   * @returns List of file extensions.\n   */\n  get fileExtensions() {\n    return this.constructor.FILE_EXTENSIONS || null;\n  }\n\n  /**\n   * Archive has named volumes that each entry will be under.\n   *\n   * @returns Archive has named volumns.\n   */\n  get hasNamedVolumes() {\n    return this.constructor.HAS_NAMED_VOLUMES;\n  }\n\n  /**\n   * Add an instance to set attributes after the read finishes.\n   *\n   * @param path Path string.\n   * @param entry Entry instance.\n   * @param options Extract options.\n   */\n  afterReadSetAttributes(path, entry, options = {}) {\n    const afters = this._afterReadSetAttributes;\n    if (!afters) {\n      throw new Error('Archive after read callbacks can only be added while reading');\n    }\n    afters.set(resolve(path), {\n      path,\n      entry,\n      options\n    });\n  }\n\n  /**\n   * Remove an instance to set attributes after the read finishes.\n   *\n   * @param path Path string.\n   */\n  afterReadSetAttributesRemove(path) {\n    const afters = this._afterReadSetAttributes;\n    if (!afters) {\n      throw new Error('Archive after read callbacks can only be removed while reading');\n    }\n    afters.delete(resolve(path));\n  }\n\n  /**\n   * Read archive.\n   * If the itter callback returns false, reading ends.\n   * If the itter callback returns null, skip descent where available.\n   *\n   * @param itter Async callback for each archive entry.\n   */\n  async read(itter) {\n    if (this._reading) {\n      throw new Error('Archive already being read');\n    }\n    this._reading = true;\n\n    // Reset the after entries.\n    this._afterReadSetAttributes = new Map();\n\n    // Read and handle all the afters, reset after.\n    try {\n      await this._read(itter);\n      await this._afterReadSetAttributesTrigger();\n    } finally {\n      this._afterReadSetAttributes = null;\n      this._reading = false;\n    }\n  }\n\n  /**\n   * Run all after read set attributes.\n   */\n  async _afterReadSetAttributesTrigger() {\n    const afters = this._afterReadSetAttributes;\n    if (!afters) {\n      return;\n    }\n\n    // Prioritize by path length.\n    const resolves = [];\n    for (const [resolved] of afters) {\n      resolves.push(resolved);\n    }\n    resolves.sort((a, b) => b.length - a.length);\n    for (const resolved of resolves) {\n      const ent = afters.get(resolved);\n      if (!ent) {\n        throw new Error('Internal error');\n      }\n      const {\n        entry,\n        path,\n        options\n      } = ent;\n      // eslint-disable-next-line no-await-in-loop\n      await entry.setAttributes(path, resolved, options);\n    }\n  }\n\n  /**\n   * Read archive, class implementation.\n   * If the itter callback returns false, reading ends.\n   * If the itter callback returns null, skip descent where available.\n   *\n   * @param itter Async callback for each archive entry.\n   */\n}\n//# sourceMappingURL=archive.mjs.map","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record<string, string>} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax =  new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n  \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n    this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n    \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n    \tif (this.locator) {\n        \tthis.doc.documentURI = this.locator.systemId;\n    \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t    var el = doc.createElementNS(namespaceURI, qName||localName);\n\t    var len = attrs.length;\n\t    appendElement(this, el);\n\t    this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t    for (var i = 0 ; i < len; i++) {\n\t        var namespaceURI = attrs.getURI(i);\n\t        var value = attrs.getValue(i);\n\t        var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t    }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t    var ins = this.doc.createProcessingInstruction(target, data);\n\t    this.locator && position(this.locator,ins)\n\t    appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t    if(this.locator = locator){// && !('lineNumber' in locator)){\n\t    \tlocator.lineNumber = 0;\n\t    }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t    var comm = this.doc.createComment(chars);\n\t    this.locator && position(this.locator,comm)\n\t    appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t    //used in characters() methods\n\t    this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t    this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t    if (impl && impl.createDocumentType) {\n\t        var dt = impl.createDocumentType(name, publicId, systemId);\n\t        this.locator && position(this.locator,dt)\n\t        appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t    }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n *  #comment(chars, start, length)\n *  #startCDATA()\n *  #endCDATA()\n *  #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n *  #endDTD()\n *  #startEntity(name)\n *  #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n *  #elementDecl(name, model)\n *  #externalEntityDecl(name, publicId, systemId)\n *  #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n *  #resolveEntity(String name,String publicId,String baseURI,String systemId)\n *  #resolveEntity(publicId, systemId)\n *  #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n *  #notationDecl(name, publicId, systemId) {};\n *  #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n    if (!hander.currentElement) {\n        hander.doc.appendChild(node);\n    } else {\n        hander.currentElement.appendChild(node);\n    }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","export const INDENT_STRING = '\\t';\nexport const NEWLINE_STRING = '\\n';\nexport const DATA_COLUMNS = 68;\nexport const INDENT_ROOT = false;\n//# sourceMappingURL=options.mjs.map","import { xmlDecode } from \"./util.mjs\";\n\n/**\n * Value object.\n */\nexport class Value {\n  /**\n   * Value type.\n   */\n\n  /**\n   * Tag names.\n   */\n\n  /**\n   * Value constructor.\n   */\n  constructor() {}\n\n  /**\n   * Value type.\n   *\n   * @returns Type string.\n   */\n  get type() {\n    return this.constructor.TYPE;\n  }\n\n  /**\n   * Cast to specific type or null.\n   *\n   * @param Type Type constructor.\n   * @returns This object or null.\n   */\n  castTo(Type) {\n    return this.type === Type.TYPE ? this : null;\n  }\n\n  /**\n   * Cast to specific type or throw.\n   *\n   * @param Type Type constructor.\n   * @returns This object.\n   */\n  castAs(Type) {\n    const casted = this.castTo(Type);\n    if (!casted) {\n      throw new Error(`Cannot cast type '${this.type}' to '${Type.TYPE}'`);\n    }\n    return casted;\n  }\n\n  /**\n   * Decode document from string.\n   *\n   * @param xml XML string.\n   */\n  fromXml(xml) {\n    const {\n      documentElement\n    } = xmlDecode(xml);\n    this.fromXmlElement(documentElement);\n  }\n\n  /**\n   * Decode value from element.\n   *\n   * @param element XML element.\n   */\n\n  /**\n   * Encode Value to string.\n   *\n   * @param options Options object.\n   * @param depth Indent depth.\n   * @returns Xml string.\n   */\n}\n//# sourceMappingURL=value.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertNoXmlElementChildNodes, assertXmlTagName } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueBoolean object.\n */\nexport class ValueBoolean extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'boolean';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['true', 'false'];\n\n  /**\n   * Value value.\n   */\n  value = false;\n\n  /**\n   * ValueBoolean constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = false) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertNoXmlElementChildNodes(element);\n    switch (element.tagName) {\n      case 'true':\n        {\n          this.value = true;\n          return;\n        }\n      case 'false':\n        {\n          this.value = false;\n          return;\n        }\n      default:\n        {\n          throw assertXmlTagName(element, '');\n        }\n    }\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    return this.value ? `${p}<true/>` : `${p}<false/>`;\n  }\n}\n//# sourceMappingURL=boolean.mjs.map","import { DATA_COLUMNS, INDENT_STRING, NEWLINE_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, base64Decode, base64Encode, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueData object.\n */\nexport class ValueData extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'data';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['data'];\n\n  /**\n   * Value value.\n   */\n\n  /**\n   * ValueData constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = new Uint8Array(0)) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'data');\n    const text = xmlElementText(element)?.nodeValue || '';\n    this.value = base64Decode(text);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const c = options?.dataColumns ?? DATA_COLUMNS;\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    let r = `${p}<data>`;\n    if (c > 0) {\n      for (let s = base64Encode(this.value); s; s = s.slice(c)) {\n        r += `${n}${p}${s.slice(0, c)}`;\n      }\n    } else {\n      r += `${n}${p}${base64Encode(this.value)}`;\n    }\n    r += `${n}${p}</data>`;\n    return r;\n  }\n}\n//# sourceMappingURL=data.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueReal object.\n */\nexport class ValueReal extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'real';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['real'];\n\n  /**\n   * Value value.\n   */\n  value = 0;\n\n  /**\n   * ValueReal constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = 0) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'real');\n    const text = xmlElementText(element)?.nodeValue || '';\n    if (!/^[+-]?(\\d+|\\d*\\.\\d+)$/.test(text)) {\n      throw new Error(`Invalid real data: ${text}`);\n    }\n    this.value = +text;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const v = this.value;\n    return `${p}<real>${v}</real>`;\n  }\n}\n//# sourceMappingURL=real.mjs.map","import { INDENT_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\n\n/**\n * ValueString object.\n */\nexport class ValueString extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'string';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['string'];\n\n  /**\n   * Value value.\n   */\n  value = '';\n\n  /**\n   * ValueString constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = '') {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'string');\n    this.value = xmlElementText(element)?.nodeValue || '';\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const e = this.value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');\n    return `${p}<string>${e}</string>`;\n  }\n}\n//# sourceMappingURL=string.mjs.map","import { INDENT_STRING, NEWLINE_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementChildElements, xmlElementText } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\nimport { ValueArray } from \"./array.mjs\";\nimport { ValueBoolean } from \"./boolean.mjs\";\nimport { ValueData } from \"./data.mjs\";\nimport { ValueInteger } from \"./integer.mjs\";\nimport { ValueReal } from \"./real.mjs\";\nimport { ValueString } from \"./string.mjs\";\nlet childTagNames;\n\n/**\n * ValueDict object.\n */\nexport class ValueDict extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'dict';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['dict'];\n\n  /**\n   * Child tag names.\n   *\n   * @returns Child tag names map.\n   */\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  static get CHILD_TAG_NAMES() {\n    if (!childTagNames) {\n      childTagNames = new Map();\n      for (const ValueType of [ValueArray, ValueBoolean, ValueData, ValueDict, ValueInteger, ValueReal, ValueString]) {\n        for (const t of ValueType.TAG_NAMES) {\n          childTagNames.set(t, ValueType);\n        }\n      }\n    }\n    return childTagNames;\n  }\n\n  /**\n   * Value value.\n   */\n  value = new Map();\n\n  /**\n   * ValueDict constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = new Map()) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * Dictionary size.\n   *\n   * @returns The size.\n   */\n  get size() {\n    return this.value.size;\n  }\n\n  /**\n   * Check if key exists.\n   *\n   * @param key Dictionary key.\n   * @returns The value or null.\n   */\n  has(key) {\n    return this.value.has(key);\n  }\n\n  /**\n   * Get value for key or null if does not exist.\n   *\n   * @param key Dictionary key.\n   * @returns The value or null.\n   */\n  get(key) {\n    return this.value.get(key) || null;\n  }\n\n  /**\n   * Get value for key or throw.\n   *\n   * @param key Dictionary key.\n   * @returns The value.\n   */\n  getValue(key) {\n    const r = this.get(key);\n    if (!r) {\n      throw new Error(`Key is null: ${key}`);\n    }\n    return r;\n  }\n\n  /**\n   * Set value for key.\n   *\n   * @param key Dictionary key.\n   * @param value Value object.\n   */\n  set(key, value) {\n    this.value.set(key, value);\n  }\n\n  /**\n   * Delete value for key.\n   *\n   * @param key Dictionary key.\n   */\n  delete(key) {\n    this.value.delete(key);\n  }\n\n  /**\n   * Clear dictionary.\n   */\n  clear() {\n    this.value.clear();\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'dict');\n    const children = xmlElementChildElements(element);\n    const l = children.length;\n    if (l % 2) {\n      throw new Error(`Uneven number of child elements: ${l}`);\n    }\n    const v = new Map();\n    for (let i = 0; i < l; i += 2) {\n      const eK = children[i];\n      const eV = children[i + 1];\n      assertXmlTagName(eK, 'key');\n      const key = xmlElementText(eK)?.nodeValue || '';\n      const value = this.childFromXmlElement(eV);\n      v.set(key, value);\n    }\n    this.value = v;\n  }\n\n  /**\n   * Decode child element from XML element.\n   *\n   * @param element XML element.\n   * @returns Value element.\n   */\n  childFromXmlElement(element) {\n    const {\n      tagName\n    } = element;\n    const {\n      CHILD_TAG_NAMES\n    } = this.constructor;\n    const Value = CHILD_TAG_NAMES.get(tagName) || null;\n    if (!Value) {\n      throw new Error(`Unknown element type: ${tagName}`);\n    }\n    const r = new Value();\n    r.fromXmlElement(element);\n    return r;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const i = options?.indentString ?? INDENT_STRING;\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const p = i.repeat(depth);\n    const v = this.value;\n    if (!v.size) {\n      return `${p}<dict/>`;\n    }\n    const p2 = i.repeat(depth + 1);\n    let r = `${p}<dict>`;\n    for (const [key, val] of v) {\n      const e = key.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');\n      r += `${n}${p2}<key>${e}</key>${n}${val.toXml(options, depth + 1)}`;\n    }\n    r += `${n}${p}</dict>`;\n    return r;\n  }\n}\n//# sourceMappingURL=dict.mjs.map","import { INDENT_STRING, NEWLINE_STRING } from \"../options.mjs\";\nimport { assertXmlTagName, xmlElementChildElements } from \"../util.mjs\";\nimport { Value } from \"../value.mjs\";\nimport { ValueBoolean } from \"./boolean.mjs\";\nimport { ValueData } from \"./data.mjs\";\nimport { ValueDict } from \"./dict.mjs\";\nimport { ValueInteger } from \"./integer.mjs\";\nimport { ValueReal } from \"./real.mjs\";\nimport { ValueString } from \"./string.mjs\";\nlet childTagNames;\n\n/**\n * ValueArray object.\n */\nexport class ValueArray extends Value {\n  /**\n   * Value type.\n   */\n  static TYPE = 'array';\n\n  /**\n   * Tag names.\n   */\n  static TAG_NAMES = ['array'];\n\n  /**\n   * Child tag names.\n   *\n   * @returns Child tag names map.\n   */\n  // eslint-disable-next-line @typescript-eslint/naming-convention\n  static get CHILD_TAG_NAMES() {\n    if (!childTagNames) {\n      childTagNames = new Map();\n      for (const ValueType of [ValueArray, ValueBoolean, ValueData, ValueDict, ValueInteger, ValueReal, ValueString]) {\n        for (const t of ValueType.TAG_NAMES) {\n          childTagNames.set(t, ValueType);\n        }\n      }\n    }\n    return childTagNames;\n  }\n\n  /**\n   * Value value.\n   */\n  value = [];\n\n  /**\n   * ValueArray constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = []) {\n    super();\n    this.value = value;\n  }\n\n  /**\n   * Array length.\n   *\n   * @returns The length.\n   */\n  get length() {\n    return this.value.length;\n  }\n\n  /**\n   * Get value at index or null if out of bounds.\n   *\n   * @param index Array index.\n   * @returns The value or null.\n   */\n  get(index) {\n    const {\n      value\n    } = this;\n    return index < this.length ? value[index] : null;\n  }\n\n  /**\n   * Get value at index or throw.\n   *\n   * @param index Array index.\n   * @returns The value.\n   */\n  getValue(index) {\n    const r = this.get(index);\n    if (!r) {\n      throw new Error(`Index out of bounds: ${index}`);\n    }\n    return r;\n  }\n\n  /**\n   * Set value at index.\n   *\n   * @param index Array index.\n   * @param value Value object.\n   */\n  set(index, value) {\n    this.value[index] = value;\n  }\n\n  /**\n   * Push values onto array.\n   *\n   * @param values Value objects.\n   */\n  push(...values) {\n    this.value.push(...values);\n  }\n\n  /**\n   * Pop value off array or null.\n   *\n   * @returns Value object or null.\n   */\n  pop() {\n    return this.value.pop() || null;\n  }\n\n  /**\n   * Pop value off array or throw.\n   *\n   * @returns Value object or null.\n   */\n  popValue() {\n    const r = this.pop();\n    if (!r) {\n      throw new Error('Cannot pop empty array');\n    }\n    return r;\n  }\n\n  /**\n   * Shift value off array or null.\n   *\n   * @returns Value object or null.\n   */\n  shift() {\n    return this.value.shift() || null;\n  }\n\n  /**\n   * Pop value off array or throw.\n   *\n   * @returns Value object or null.\n   */\n  shiftValue() {\n    const r = this.shift();\n    if (!r) {\n      throw new Error('Cannot shift empty array');\n    }\n    return r;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  fromXmlElement(element) {\n    assertXmlTagName(element, 'array');\n    const children = xmlElementChildElements(element);\n    this.value = children.map(el => this.childFromXmlElement(el));\n  }\n\n  /**\n   * Decode child element from XML element.\n   *\n   * @param element XML element.\n   * @returns Value element.\n   */\n  childFromXmlElement(element) {\n    const {\n      tagName\n    } = element;\n    const {\n      CHILD_TAG_NAMES\n    } = this.constructor;\n    const Value = CHILD_TAG_NAMES.get(tagName) || null;\n    if (!Value) {\n      throw new Error(`Unknown element type: ${tagName}`);\n    }\n    const r = new Value();\n    r.fromXmlElement(element);\n    return r;\n  }\n\n  /**\n   * @inheritdoc\n   */\n  toXml(options = null, depth = 0) {\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const p = (options?.indentString ?? INDENT_STRING).repeat(depth);\n    const v = this.value;\n    if (!v.length) {\n      return `${p}<array/>`;\n    }\n    let r = `${p}<array>`;\n    for (const el of v) {\n      r += `${n}${el.toXml(options, depth + 1)}`;\n    }\n    r += `${n}${p}</array>`;\n    return r;\n  }\n}\n//# sourceMappingURL=array.mjs.map","import { INDENT_ROOT, NEWLINE_STRING } from \"./options.mjs\";\nimport { xmlDecode, xmlElementChildElements } from \"./util.mjs\";\nimport { ValueDict } from \"./value/dict.mjs\";\nconst xmlDeclaration = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>';\nconst xmlDoctype = '<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">';\n\n/**\n * Plist object.\n */\nexport class Plist {\n  /**\n   * Default XML declaration.\n   */\n  static XML_DECLARATION = xmlDeclaration;\n\n  /**\n   * Default XML doctype.\n   */\n  static XML_DOCTYPE = xmlDoctype;\n\n  /**\n   * XML declaration.\n   */\n  xmlDeclaration = xmlDeclaration;\n\n  /**\n   * XML doctype.\n   */\n  xmlDoctype = xmlDoctype;\n\n  /**\n   * Value element.\n   */\n  value = null;\n\n  /**\n   * Plist constructor.\n   *\n   * @param value The value.\n   */\n  constructor(value = null) {\n    this.value = value;\n  }\n\n  /**\n   * Get value or throw if null.\n   *\n   * @returns The value.\n   */\n  getValue() {\n    const {\n      value\n    } = this;\n    if (!value) {\n      throw new Error('Value is null');\n    }\n    return value;\n  }\n\n  /**\n   * Cast to specific type or null.\n   *\n   * @param Type Type constructor.\n   * @returns The object or null.\n   */\n  valueCastTo(Type) {\n    const {\n      value\n    } = this;\n    return value ? value.castTo(Type) : null;\n  }\n\n  /**\n   * Cast to specific type or throw.\n   *\n   * @param Type Type constructor.\n   * @returns The object.\n   */\n  valueCastAs(Type) {\n    const casted = this.valueCastTo(Type);\n    if (!casted) {\n      throw new Error(`Cannot cast value to type '${Type.TYPE}'`);\n    }\n    return casted;\n  }\n\n  /**\n   * Decode document from string.\n   *\n   * @param xml XML string.\n   */\n  fromXml(xml) {\n    const {\n      declaration,\n      doctype,\n      documentElement\n    } = xmlDecode(xml);\n    this.fromXmlElement(documentElement, declaration, doctype);\n  }\n\n  /**\n   * Decode document from element.\n   *\n   * @param element XML element.\n   * @param declaration XML declaration.\n   * @param doctype XML doctype.\n   */\n  fromXmlElement(element, declaration = null, doctype = null) {\n    const {\n      tagName\n    } = element;\n    if (tagName !== 'plist') {\n      throw new Error(`Unexpected root plist tag name: ${tagName}`);\n    }\n    const childElements = xmlElementChildElements(element);\n    const childElementsL = childElements.length;\n    if (childElementsL > 1) {\n      throw new Error(`Multiple root plist child tag: ${childElementsL}`);\n    }\n    this.value = childElementsL ? this.childFromXmlElement(childElements[0]) : null;\n    this.xmlDeclaration = declaration || '';\n    this.xmlDoctype = doctype || '';\n  }\n\n  /**\n   * Decode child element from XML element.\n   *\n   * @param element XML element.\n   * @returns Value element.\n   */\n  childFromXmlElement(element) {\n    const a = new ValueDict();\n    return a.childFromXmlElement(element);\n  }\n\n  /**\n   * Encode documents to string.\n   *\n   * @param options Options object.\n   * @returns XML string.\n   */\n  toXml(options = null) {\n    const ir = options?.indentRoot ?? INDENT_ROOT;\n    const n = options?.newlineString ?? NEWLINE_STRING;\n    const v = this.value;\n    return [...[this.xmlDeclaration, this.xmlDoctype].filter(Boolean), '<plist version=\"1.0\">', ...(v ? [v.toXml(options, ir ? 1 : 0)] : []), '</plist>', ''].join(n);\n  }\n}\n//# sourceMappingURL=plist.mjs.map","import { spawn, spawnSync } from 'node:child_process';\nimport { Plist, ValueDict, ValueArray, ValueString, ValueBoolean } from '@shockpkg/plist-dom';\n/**\n * Mounter object.\n */\nexport class Mounter {\n  /**\n   * The path to hdiutil.\n   */\n\n  /**\n   * Mounter constructor.\n   *\n   * @param options Options object.\n   */\n  constructor(options = null) {\n    this.hdiutil = (options ? options.hdiutil : null) || 'hdiutil';\n  }\n\n  /**\n   * Attach a disk image.\n   *\n   * @param file Path to disk image.\n   * @param options Options object.\n   * @param ejectOnExit Eject on exit options, or null.\n   * @returns Info object.\n   */\n  async attach(file, options = null, ejectOnExit = null) {\n    const devices = await this._runAttach(this._argsAttach(file, options));\n    const {\n      eject,\n      ejectSync\n    } = this._createEjects(devices);\n    return {\n      devices,\n      eject,\n      ejectSync\n    };\n  }\n\n  /**\n   * Attach a disk image.\n   *\n   * @param file Path to disk image.\n   * @param options Options object.\n   * @param ejectOnExit Eject on exit options, or null.\n   * @returns Info object.\n   */\n  attachSync(file, options = null, ejectOnExit = null) {\n    // eslint-disable-next-line no-sync\n    const devices = this._runAttachSync(this._argsAttach(file, options));\n    const {\n      eject,\n      ejectSync\n    } = this._createEjects(devices);\n    return {\n      devices,\n      eject,\n      ejectSync\n    };\n  }\n\n  /**\n   * Eject a disk image.\n   *\n   * @param file Path to device file or volume mount point.\n   * @param options Options object.\n   */\n  async eject(file, options = null) {\n    await this._runEject(this._argsEject(file, options));\n  }\n\n  /**\n   * Eject a disk image.\n   *\n   * @param file Path to device file or volume mount point.\n   * @param options Options object.\n   */\n  ejectSync(file, options = null) {\n    // eslint-disable-next-line no-sync\n    this._runEjectSync(this._argsEject(file, options));\n  }\n\n  /**\n   * Create args for attach.\n   *\n   * @param file Path to disk image.\n   * @param options Options object.\n   * @returns Argument list.\n   */\n  _argsAttach(file, options = null) {\n    const args = ['attach', '-plist'];\n    if (options) {\n      if (options.readonly) {\n        args.push('-readonly');\n      }\n      if (options.nobrowse) {\n        args.push('-nobrowse');\n      }\n    }\n    args.push(this._fileArg(file));\n    return args;\n  }\n\n  /**\n   * Create args for eject.\n   *\n   * @param file Path to device file or volume mount point.\n   * @param options Options object.\n   * @returns Argument list.\n   */\n  _argsEject(file, options = null) {\n    const args = ['eject'];\n    if (options && options.force) {\n      args.push('-force');\n    }\n    args.push(this._fileArg(file));\n    return args;\n  }\n\n  /**\n   * Run hdiutil attach command, returning the devices list on success.\n   *\n   * @param args CLI args.\n   * @returns Devices list.\n   */\n  async _runAttach(args) {\n    const stdouts = [];\n    const proc = spawn(this.hdiutil, args);\n    proc.stdout.on('data', data => {\n      stdouts.push(data);\n    });\n    const code = await new Promise((resolve, reject) => {\n      proc.once('exit', resolve);\n      proc.once('error', reject);\n    });\n    if (code) {\n      throw new Error(`Attach failed: hdiutil exit code: ${code}`);\n    }\n    return this._parseDevices(Buffer.concat(stdouts).toString());\n  }\n\n  /**\n   * Run hdiutil attach command, returning the devices list on success.\n   *\n   * @param args CLI args.\n   * @returns Devices list.\n   */\n  _runAttachSync(args) {\n    const {\n      status,\n      error,\n      stdout\n    } = spawnSync(this.hdiutil, args);\n    if (error) {\n      throw error;\n    }\n    if (status) {\n      throw new Error(`Attach failed: hdiutil exit code: ${status}`);\n    }\n    return this._parseDevices(stdout.toString());\n  }\n\n  /**\n   * Run hdiutil eject command.\n   *\n   * @param args CLI args.\n   */\n  async _runEject(args) {\n    const proc = spawn(this.hdiutil, args);\n    const status = await new Promise((resolve, reject) => {\n      proc.once('exit', resolve);\n      proc.once('error', reject);\n    });\n    if (status) {\n      throw new Error(`Eject failed: hdiutil exit code: ${status}`);\n    }\n  }\n\n  /**\n   * Run hdiutil eject command.\n   *\n   * @param args CLI args.\n   */\n  _runEjectSync(args) {\n    const {\n      status,\n      error\n    } = spawnSync(this.hdiutil, args);\n    if (error) {\n      throw error;\n    }\n    if (status) {\n      throw new Error(`Eject failed: hdiutil exit code: ${status}`);\n    }\n  }\n\n  /**\n   * Create file argument from file path.\n   *\n   * @param file File path.\n   * @returns A path for use as argument.\n   */\n  _fileArg(file) {\n    // Make sure it will not be recognized as option argument.\n    return file.startsWith('-') ? `./${file}` : file;\n  }\n\n  /**\n   * Parse devices plist into devices list.\n   *\n   * @param xml XML plist.\n   * @returns Devices list.\n   */\n  _parseDevices(xml) {\n    const plist = new Plist();\n    plist.fromXml(xml);\n    const systemEntities = plist.valueCastAs(ValueDict).getValue('system-entities').castAs(ValueArray);\n    const r = [];\n    for (const value of systemEntities.value) {\n      const dict = value.castAs(ValueDict);\n      const devEntry = dict.getValue('dev-entry').castAs(ValueString).value;\n      const potentiallyMountable = dict.getValue('potentially-mountable').castAs(ValueBoolean).value;\n      const contentHint = dict.get('content-hint');\n      const unmappedContentHint = dict.get('unmapped-content-hint');\n      const volumeKind = dict.get('volume-kind');\n      const mountPoint = dict.get('mount-point');\n      const device = {\n        devEntry,\n        potentiallyMountable\n      };\n      if (contentHint) {\n        device.contentHint = contentHint.castAs(ValueString).value;\n      }\n      if (unmappedContentHint) {\n        device.unmappedContentHint = unmappedContentHint.castAs(ValueString).value;\n      }\n      if (volumeKind) {\n        device.volumeKind = volumeKind.castAs(ValueString).value;\n      }\n      if (mountPoint) {\n        device.mountPoint = mountPoint.castAs(ValueString).value;\n      }\n      r.push(device);\n    }\n    return r;\n  }\n\n  /**\n   * Find the root device, null on empty list.\n   *\n   * @param devices Device list.\n   * @returns Root device or null if an empty list.\n   */\n  _findRootDevice(devices) {\n    let r = null;\n    for (const device of devices) {\n      if (r === null || r.devEntry.length > device.devEntry.length) {\n        r = device;\n      }\n    }\n    return r;\n  }\n\n  /**\n   * Create ejects callback from a list of devices.\n   *\n   * @param devices Device list.\n   * @param ejectOnExit Eject on exit options, or null.\n   * @returns Callback function.\n   */\n  _createEjects(devices, ejectOnExit = null) {\n    // Find the root device, to use to eject (none possible in theory).\n    let devEntry = this._findRootDevice(devices)?.devEntry;\n    let shutdown = null;\n    const info = {\n      /**\n       * The eject callback function.\n       *\n       * @param options Eject options.\n       */\n      eject: async (options = null) => {\n        if (devEntry) {\n          await this.eject(devEntry, options);\n          devEntry = '';\n          if (shutdown) {\n            process.off('exit', shutdown);\n          }\n        }\n      },\n      /**\n       * The eject callback function.\n       *\n       * @param options Eject options.\n       */\n      ejectSync: (options = null) => {\n        if (devEntry) {\n          // eslint-disable-next-line no-sync\n          this.ejectSync(devEntry, options);\n          devEntry = '';\n          if (shutdown) {\n            process.off('exit', shutdown);\n          }\n        }\n      }\n    };\n    if (ejectOnExit) {\n      /**\n       * Attempt to auto-eject on normal shutdown.\n       * Does not catch signals (no clean way in a library).\n       * Users can explicitly call process.exit() on signals to use this.\n       */\n      shutdown = () => {\n        // eslint-disable-next-line no-sync\n        info.ejectSync(ejectOnExit);\n      };\n      process.once('exit', shutdown);\n    }\n    return info;\n  }\n}\n//# sourceMappingURL=mounter.mjs.map","/* eslint-disable max-classes-per-file */\n\nimport { createReadStream } from 'node:fs';\nimport { basename, join as pathJoin } from 'node:path';\nimport { Mounter } from '@shockpkg/hdi-mac';\nimport { Archive, Entry } from \"../archive.mjs\";\nimport { PathType } from \"../types.mjs\";\nimport { fsLstatExists, fsReadlinkRaw, fsWalk, pathNormalize, pathResourceFork, statToPathType } from \"../util.mjs\";\nconst walkOpts = {\n  ignoreUnreadableDirectories: true\n};\nconst ejectOptions = {\n  force: true\n};\n/**\n * EntryHdi object.\n */\nexport class EntryHdi extends Entry {\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n  sizeComp = null;\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n  uname = null;\n\n  /**\n   * @inheritdoc\n   */\n  gname = null;\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * @inheritdoc\n   */\n\n  /**\n   * EntryHdi constructor.\n   *\n   * @param info Info object.\n   */\n  constructor(info) {\n    super(info);\n    this.archive = info.archive;\n    this.size = info.size;\n    this.mode = info.mode;\n    this.uid = info.uid;\n    this.gid = info.gid;\n    this.atime = info.atime;\n    this.mtime = info.mtime;\n  }\n\n  /**\n   * Get the path of resource psuedo-file, raw.\n   *\n   * @returns Path string.\n   */\n  get rsrcPathRaw() {\n    return pathResourceFork(this.pathRaw);\n  }\n\n  /**\n   * Get the path of resource psuedo-file, normalized.\n   *\n   * @returns Path string.\n   */\n  get rsrcPath() {\n    return pathNormalize(pathResourceFork(this.path));\n  }\n}\n\n/**\n * ArchiveHdi object.\n */\nexport class ArchiveHdi extends Archive {\n  /**\n   * @inheritdoc\n   */\n  static FILE_EXTENSIONS = ['.dmg', '.iso', '.cdr'];\n\n  /**\n   * @inheritdoc\n   */\n  static HAS_NAMED_VOLUMES = true;\n\n  /**\n   * @inheritdoc\n   */\n  Entry = EntryHdi;\n\n  /**\n   * Mounter, Mac.\n   */\n  mounterMac = new Mounter();\n\n  /**\n   * Hide mounted disk image from the file explorers.\n   */\n  nobrowse = false;\n\n  /**\n   * ArchiveHdi constructor.\n   *\n   * @param path File path.\n   */\n  constructor(path) {\n    super(path);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  async read(itter) {\n    await super.read(itter);\n  }\n\n  /**\n   * @inheritdoc\n   */\n  async _read(itter) {\n    const {\n      mounterMac,\n      nobrowse\n    } = this;\n\n    /**\n     * Each itterator.\n     *\n     * @param pathFull Full path.\n     * @param pathRaw Raw path.\n     * @param stat Stat object.\n     * @returns Recursion hint.\n     */\n    const each = async (pathFull, pathRaw, stat) => {\n      const type = statToPathType(stat);\n      if (type === null) {\n        return true;\n      }\n      const {\n        size,\n        mode,\n        uid,\n        gid,\n        atime,\n        mtime\n      } = stat;\n      const readData = type === PathType.FILE ? async () => createReadStream(pathFull) : null;\n      const readSymlink = type === PathType.SYMLINK ? async () => fsReadlinkRaw(pathFull) : null;\n      const entry = new this.Entry({\n        archive: this,\n        type,\n        pathRaw,\n        size,\n        mode,\n        uid,\n        gid,\n        atime,\n        mtime,\n        readData,\n        readSymlink\n      });\n      const ret = await entry.trigger(itter);\n      if (ret === false) {\n        return null;\n      }\n      if (ret === null) {\n        return false;\n      }\n      if (type === PathType.FILE) {\n        const rsrcPathFull = pathResourceFork(pathFull);\n        const rsrcStat = await fsLstatExists(rsrcPathFull);\n        if (rsrcStat) {\n          const sizeRsrc = rsrcStat.size;\n\n          /**\n           * Read RSRC.\n           *\n           * @returns Read stream.\n           */\n          const readRsrc = async () => createReadStream(rsrcPathFull);\n          const entryRsrc = new this.Entry({\n            archive: this,\n            type: PathType.RESOURCE_FORK,\n            pathRaw,\n            size: sizeRsrc,\n            mode,\n            uid,\n            gid,\n            atime,\n            mtime,\n            readRsrc\n          });\n          const ret = await entryRsrc.trigger(itter);\n          if (ret === false) {\n            return null;\n          }\n          if (ret === null) {\n            return false;\n          }\n        }\n      }\n      return true;\n    };\n\n    // Using auto-eject on normal exit option.\n    const info = await mounterMac.attach(this.path, {\n      nobrowse,\n      readonly: true\n    }, ejectOptions);\n\n    // Eject device when done.\n    try {\n      for (const device of info.devices) {\n        const {\n          mountPoint\n        } = device;\n        if (!mountPoint) {\n          continue;\n        }\n        const volumeName = basename(mountPoint);\n        // eslint-disable-next-line no-await-in-loop\n        await fsWalk(mountPoint, async (pathRel, stat) => {\n          const pathFull = pathJoin(mountPoint, pathRel);\n          const pathRaw = pathJoin(volumeName, pathRel);\n          return each(pathFull, pathRaw, stat);\n        }, walkOpts);\n      }\n    } finally {\n      await info.eject(ejectOptions);\n    }\n  }\n}\n//# sourceMappingURL=hdi.mjs.map"],"names":["pathNormalize","path","replace","pathResourceFork","pathJoin","statToPathType","stat","isSymbolicLink","PathType","SYMLINK","isDirectory","DIRECTORY","isFile","FILE","modePermissionBits","mode","async","streamToBuffer","stream","datas","size","pipeline","Writable","write","data","_encoding","cb","push","length","Buffer","concat","fsLchmod","fsLchmodSupported","fd","open","O_WRONLY","O_SYMLINK","chmod","close","fsUtimes","atime","mtime","utimes","fsLutimes","fsLutimesSupported","fsReadlinkRaw","readlink","fsSymlink","target","symlink","fsChmod","fsReaddir","readdir","sort","fsLstat","lstat","fsLstatExists","err","code","fsWalk","base","itter","options","ignoreUnreadableDirectories","stack","reverse","entry","pop","fullPath","recurse","subs","i","freeze","object","oc","Object","MIME_TYPE","HTML","isHTML","value","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","uri","SVG","XML","XMLNS","conventions","assign","source","TypeError","key","prototype","hasOwnProperty","call","find","list","predicate","ac","Array","item","notEmptyString","input","orderedSetReducer","current","element","toOrderedSet","split","filter","splitOnASCIIWhitespace","keys","reduce","copy","src","dest","p","_extends","Class","Super","pt","t","constructor","console","error","DOMException","message","Error","this","ExceptionMessage","captureStackTrace","NodeList","LiveNodeList","node","refresh","_node","_refresh","_updateLiveList","inc","_inc","ownerDocument","ls","__set__","$$length","NamedNodeMap","_findNodeIndex","_addNamedNode","el","newAttr","oldAttr","ownerElement","doc","_onRemoveAttribute","namespaceURI","_nsMap","prefix","localName","_onAddAttribute","_removeNamedNode","attr","NOT_FOUND_ERR","tagName","lastIndex","DOMImplementation","Node","_xmlEncoder","c","charCodeAt","_visitNode","callback","firstChild","nextSibling","Document","remove","_onUpdateChild","newChild","cs","childNodes","child","_removeChild","parentNode","previous","previousSibling","next","lastChild","isDocTypeNode","nodeType","DOCUMENT_TYPE_NODE","isElementNode","ELEMENT_NODE","isTextNode","TEXT_NODE","isElementInsertionPossible","parentChildNodes","docTypeNode","indexOf","isElementReplacementPossible","assertPreInsertionValidityInDocument","parent","nodeChildNodes","DOCUMENT_FRAGMENT_NODE","nodeChildElements","HIERARCHY_REQUEST_ERR","parentElementChild","assertPreReplacementValidityInDocument","_insertBefore","_inDocumentAssertion","DOCUMENT_NODE","hasValidParentNodeType","COMMENT_NODE","PROCESSING_INSTRUCTION_NODE","hasInsertableNodeType","assertPreInsertionValidity1to5","cp","removeChild","newFirst","newLast","pre","Element","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","XMLSerializer","nodeSerializeToString","isHtml","nodeFilter","buf","refNode","documentElement","lookupPrefix","visibleNamespaces","namespace","serializeToString","join","needNamespaceDefine","ns","addSerializedAttribute","qualifiedName","attrs","attributes","len","nodeName","prefixedNodeName","defaultNS","ai","name","nsi","test","slice","ATTRIBUTE_NODE","CDATA_SECTION_NODE","pubid","publicId","sysid","systemId","sub","internalSubset","ENTITY_REFERENCE_NODE","importNode","deep","node2","cloneNode","appendChild","n","v","attrs2","_ownerElement","setAttributeNode","require$$0","NodeType","ENTITY_NODE","NOTATION_NODE","ExceptionCode","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","NOT_SUPPORTED_ERR","INUSE_ATTRIBUTE_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","index","toString","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","version","createDocument","doctype","implementation","root","createElementNS","createDocumentType","nodeValue","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","normalize","appendData","isSupported","hasAttributes","map","lookupNamespaceURI","isDefaultNamespace","importedNode","getElementById","id","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","nodeClassNames","matches","nodeClassNamesSet","every","createElement","createDocumentFragment","createTextNode","createComment","createCDATASection","createProcessingInstruction","createAttribute","specified","createEntityReference","pl","createAttributeNS","getElementsByTagName","hasAttribute","getAttributeNode","setAttribute","removeAttribute","removeAttributeNode","_appendSingleChild","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","offset","count","substring","text","insertData","replaceData","deleteData","start","end","splitText","newText","newNode","defineProperty","getTextContent","get","set","String","e","dom","ParseError","locator","XMLReader","copyLocator","f","lineNumber","columnNumber","parseElementStartPart","currentNSMap","entityReplacer","errorHandler","addAttribute","qname","startIndex","attributeNames","fatalError","addValue","attrName","s","charAt","warning","setTagName","closed","match","appendElement","domBuilder","localNSMap","a","qName","nsp","nsPrefix","_copy","startPrefixMapping","startElement","endElement","endPrefixMapping","parseHtmlSpecialContent","elStartEnd","elEndStart","characters","fixSelfClosed","closeMap","pos","lastIndexOf","parseDCC","comment","substr","startCDATA","endCDATA","matchs","reg","exec","lastMatch","startDTD","endDTD","parseInstruction","processingInstruction","ElementAttributes","nameStartChar","nameChar","RegExp","tagNamePattern","parse","defaultNSMap","entityMap","startDocument","defaultNSMapCopy","k","parseInt","fromCharCode","appendText","xt","position","m","lineEnd","linePattern","lineStart","parseStack","tagStart","currentElement","config","endMatch","toLowerCase","nbsp","locator2","Math","max","endDocument","getLocalName","getLocator","getQName","getURI","getValue","sax","xmlDecode","xml","declaration","errors","DOMParser","parseFromString","l","childNode","str","xmlElementChildElements","r","xmlElementText","assertXmlTagName","base64Encode","b","o","C64","B6","assertInteger","Number","isInteger","fsConstants","pipe","promisify","Entry","_triggering","_triggered","_extracted","info","archive","type","pathRaw","sizeComp","uid","gid","uname","gname","_readData","readData","_readRsrc","readRsrc","_readSymlink","readSymlink","hasNamedVolume","hasNamedVolumes","volumeName","volumePath","_beginExtract","_stream","read","extract","_extract","trigger","setAttributes","pathFull","pathSet","ignorePermissions","ignoreTimes","link","RESOURCE_FORK","atimeSet","mtimeSet","modeSet","_errorExtractPathExists","_errorNoResourceFork","afterReadSetAttributesRemove","_extractFile","_extractResourceFork","_extractDirectory","_extractSymlink","_extractStreamToFile","reader","rm","recursive","force","mkdir","dirname","writeFile","alloc","createWriteStream","resourceForkAsFile","pathRsrc","afterReadSetAttributes","symlinkAsFile","_streamFile","_streamResourceFork","_streamDirectory","_streamSymlink","Readable","then","d","emit","Archive","static","_reading","_afterReadSetAttributes","fileExtensions","FILE_EXTENSIONS","HAS_NAMED_VOLUMES","afters","resolve","delete","Map","_read","_afterReadSetAttributesTrigger","resolves","resolved","ent","lib","normalizeLineEndings","DOMHandler","cdata","_locator","_toString","chars","java","lang","hander","require$$1","entities","exports","XML_ENTITIES","amp","apos","gt","lt","quot","HTML_ENTITIES","Aacute","aacute","Abreve","abreve","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","AMP","And","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","ap","apacir","apE","ape","apid","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","Barwed","barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","Because","because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bottom","bowtie","boxbox","boxDL","boxDl","boxdL","boxdl","boxDR","boxDr","boxdR","boxdr","boxH","boxh","boxHD","boxHd","boxhD","boxhd","boxHU","boxHu","boxhU","boxhu","boxminus","boxplus","boxtimes","boxUL","boxUl","boxuL","boxul","boxUR","boxUr","boxuR","boxur","boxV","boxv","boxVH","boxVh","boxvH","boxvh","boxVL","boxVl","boxvL","boxvl","boxVR","boxVr","boxvR","boxvr","bprime","Breve","breve","brvbar","Bscr","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","Cap","cap","capand","capbrcup","capcap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","CenterDot","centerdot","Cfr","cfr","CHcy","chcy","check","checkmark","Chi","chi","cir","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","Colon","colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","Conint","conint","ContourIntegral","Copf","copf","coprod","Coproduct","COPY","copysr","CounterClockwiseContourIntegral","crarr","Cross","cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","Cup","cup","cupbrcap","CupCap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","Dagger","dagger","daleth","Darr","dArr","darr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","DD","dd","ddagger","ddarr","DDotrahd","ddotseq","deg","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","Diamond","diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","div","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","Downarrow","downarrow","DownArrowBar","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","ecir","Ecirc","ecirc","ecolon","Ecy","ecy","eDDot","Edot","eDot","edot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp","emsp13","emsp14","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","Escr","escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","ExponentialE","exponentiale","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","ForAll","forall","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","Fscr","fscr","gacute","Gamma","gamma","Gammad","gammad","gap","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","gE","ge","gEl","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","Gg","gg","ggg","gimel","GJcy","gjcy","gl","gla","glE","glj","gnap","gnapprox","gnE","gne","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","Gt","GT","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","hArr","harr","harrcir","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","Hfr","hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","Hopf","hopf","horbar","HorizontalLine","Hscr","hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","Ifr","ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Im","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","imof","imped","Implies","in","incare","infin","infintie","inodot","Int","int","intcal","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","Iscr","iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","Lang","langd","langle","lap","Laplacetrf","laquo","Larr","lArr","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","lAtail","latail","late","lates","lBarr","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","lE","le","LeftAngleBracket","LeftArrow","Leftarrow","leftarrow","LeftArrowBar","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","LeftRightArrow","Leftrightarrow","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","leftthreetimes","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","lEg","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","Ll","ll","llarr","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoust","lmoustache","lnap","lnapprox","lnE","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","LongLeftArrow","Longleftarrow","longleftarrow","LongLeftRightArrow","Longleftrightarrow","longleftrightarrow","longmapsto","LongRightArrow","Longrightarrow","longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","Lscr","lscr","Lsh","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","Lt","LT","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","mid","midast","midcir","middot","minus","minusb","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","Mscr","mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","ne","nearhk","neArr","nearr","nearrow","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nhArr","nharr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlArr","nlarr","nldr","nlE","nle","nLeftarrow","nleftarrow","nLeftrightarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","Nopf","nopf","Not","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nRightarrow","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","num","numero","numsp","nvap","nVDash","nVdash","nvDash","nvdash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwArr","nwarr","nwarrow","nwnear","Oacute","oacute","oast","ocir","Ocirc","ocirc","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","Or","or","orarr","ord","order","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","Otimes","otimes","otimesas","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","par","para","parallel","parsim","parsl","part","PartialD","Pcy","pcy","percnt","period","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","Popf","popf","pound","Pr","pr","prap","prcue","prE","prec","precapprox","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","precsim","Prime","prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","prop","Proportion","Proportional","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","Qopf","qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","QUOT","rAarr","race","Racute","racute","radic","raemptyv","Rang","rang","rangd","range","rangle","raquo","Rarr","rArr","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","rAtail","ratail","ratio","rationals","RBarr","rBarr","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","Re","real","realine","realpart","reals","rect","REG","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","Rfr","rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrow","Rightarrow","rightarrow","RightArrowBar","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTee","RightTeeArrow","RightTeeVector","rightthreetimes","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","ring","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","Ropf","ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","Rscr","rscr","Rsh","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","Sc","sc","scap","Scaron","scaron","sccue","scE","sce","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdot","sdotb","sdote","searhk","seArr","searr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","sol","solb","solbar","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","Square","square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","Sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","Subset","subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","Sum","sum","sung","Sup","sup","sup1","sup2","sup3","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","Supset","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swArr","swarr","swarrow","swnwar","szlig","Tab","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","Therefore","therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","thinsp","ThinSpace","thkap","thksim","THORN","thorn","Tilde","tilde","TildeEqual","TildeFullEqual","TildeTilde","times","timesb","timesbar","timesd","tint","toea","top","topbot","topcir","Topf","topf","topfork","tosa","tprime","TRADE","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","Uarr","uArr","uarr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrow","Uparrow","uparrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","Updownarrow","updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","Upsi","upsi","upsih","Upsilon","upsilon","UpTee","UpTeeArrow","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","vArr","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","Vbar","vBar","vBarv","Vcy","vcy","VDash","Vdash","vDash","vdash","Vdashl","Vee","vee","veebar","veeeq","vellip","Verbar","verbar","Vert","vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","Wedge","wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xhArr","xharr","Xi","xi","xlArr","xlarr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrArr","xrarr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","Yuml","yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","Zfr","zfr","ZHcy","zhcy","zigrarr","Zopf","zopf","Zscr","zscr","zwj","zwnj","require$$3","mimeType","xmlns","setDocumentLocator","errorImpl","build","fn","isCallback","msg","Function","buildErrorHandler","documentURI","ins","ignorableWhitespace","ch","apply","arguments","charNode","skippedEntity","comm","impl","dt","warn","domParser","__DOMHandler","B8","C64M","INDENT_STRING","NEWLINE_STRING","Value","TYPE","castTo","Type","castAs","casted","fromXml","fromXmlElement","ValueBoolean","super","assertNoXmlElementChildNodes","toXml","depth","indentString","repeat","ValueData","Uint8Array","base64","OUTER","z","base64Decode","newlineString","dataColumns","ValueInteger","asBigInt","BigInt","asNumber","ValueReal","ValueString","replaceAll","childTagNames","ValueDict","CHILD_TAG_NAMES","ValueType","ValueArray","TAG_NAMES","childTagNames$1","has","clear","children","eK","eV","childFromXmlElement","p2","val","values","popValue","shift","shiftValue","xmlDeclaration","xmlDoctype","Plist","valueCastTo","valueCastAs","childElements","childElementsL","ir","indentRoot","Boolean","Mounter","hdiutil","attach","file","ejectOnExit","devices","_runAttach","_argsAttach","eject","ejectSync","_createEjects","attachSync","_runAttachSync","_runEject","_argsEject","_runEjectSync","args","readonly","nobrowse","_fileArg","stdouts","proc","spawn","stdout","on","Promise","reject","once","_parseDevices","status","spawnSync","startsWith","plist","systemEntities","dict","devEntry","potentiallyMountable","contentHint","unmappedContentHint","volumeKind","mountPoint","device","_findRootDevice","shutdown","process","off","walkOpts","ejectOptions","EntryHdi","rsrcPathRaw","rsrcPath","ArchiveHdi","mounterMac","each","createReadStream","ret","rsrcPathFull","rsrcStat","entryRsrc","basename","pathRel"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]}