{"version":3,"sources":["../node_modules/.pnpm/tsup@5.12.1_typescript@4.6.2/node_modules/tsup/assets/esm_shims.js","../node_modules/.pnpm/joycon@3.1.1/node_modules/joycon/lib/index.js","../node_modules/.pnpm/deepmerge@4.2.2/node_modules/deepmerge/dist/cjs.js","../src/index.ts","../src/polyfill.ts","../src/load.ts","../src/loaders/index.ts","../src/loaders/typescript.ts","../src/utils.ts","../src/loaders/json5.ts","../node_modules/.pnpm/json5@2.2.0/node_modules/json5/dist/index.mjs","../src/config.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _fs = _interopRequireDefault(require(\"fs\"));\n\nvar _path = _interopRequireDefault(require(\"path\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst readFileSync = fp => {\n  return _fs.default.readFileSync(fp, 'utf8');\n};\n\nconst pathExists = fp => new Promise(resolve => {\n  _fs.default.access(fp, err => {\n    resolve(!err);\n  });\n});\n\nconst pathExistsSync = _fs.default.existsSync;\n\nclass JoyCon {\n  constructor({\n    files,\n    cwd = process.cwd(),\n    stopDir,\n    packageKey,\n    parseJSON = JSON.parse\n  } = {}) {\n    this.options = {\n      files,\n      cwd,\n      stopDir,\n      packageKey,\n      parseJSON\n    };\n    this.existsCache = new Map();\n    this.loaders = new Set();\n    this.packageJsonCache = new Map();\n    this.loadCache = new Map();\n  }\n\n  addLoader(loader) {\n    this.loaders.add(loader);\n    return this;\n  }\n\n  removeLoader(name) {\n    for (const loader of this.loaders) {\n      if (name && loader.name === name) {\n        this.loaders.delete(loader);\n      }\n    }\n\n    return this;\n  }\n\n  async recusivelyResolve(options) {\n    if (options.cwd === options.stopDir || _path.default.basename(options.cwd) === 'node_modules') {\n      return null;\n    }\n\n    for (const filename of options.files) {\n      const file = _path.default.resolve(options.cwd, filename);\n\n      const exists = process.env.NODE_ENV !== 'test' && this.existsCache.has(file) ? this.existsCache.get(file) : await pathExists(file);\n      this.existsCache.set(file, exists);\n\n      if (exists) {\n        if (!options.packageKey || _path.default.basename(file) !== 'package.json') {\n          return file;\n        }\n\n        const data = require(file);\n\n        delete require.cache[file];\n        const hasPackageKey = Object.prototype.hasOwnProperty.call(data, options.packageKey);\n\n        if (hasPackageKey) {\n          this.packageJsonCache.set(file, data);\n          return file;\n        }\n      }\n\n      continue;\n    }\n\n    return this.recusivelyResolve(Object.assign({}, options, {\n      cwd: _path.default.dirname(options.cwd)\n    }));\n  }\n\n  recusivelyResolveSync(options) {\n    if (options.cwd === options.stopDir || _path.default.basename(options.cwd) === 'node_modules') {\n      return null;\n    }\n\n    for (const filename of options.files) {\n      const file = _path.default.resolve(options.cwd, filename);\n\n      const exists = process.env.NODE_ENV !== 'test' && this.existsCache.has(file) ? this.existsCache.get(file) : pathExistsSync(file);\n      this.existsCache.set(file, exists);\n\n      if (exists) {\n        if (!options.packageKey || _path.default.basename(file) !== 'package.json') {\n          return file;\n        }\n\n        const data = require(file);\n\n        delete require.cache[file];\n        const hasPackageKey = Object.prototype.hasOwnProperty.call(data, options.packageKey);\n\n        if (hasPackageKey) {\n          this.packageJsonCache.set(file, data);\n          return file;\n        }\n      }\n\n      continue;\n    }\n\n    return this.recusivelyResolveSync(Object.assign({}, options, {\n      cwd: _path.default.dirname(options.cwd)\n    }));\n  }\n\n  async resolve(...args) {\n    const options = this.normalizeOptions(args);\n    return this.recusivelyResolve(options);\n  }\n\n  resolveSync(...args) {\n    const options = this.normalizeOptions(args);\n    return this.recusivelyResolveSync(options);\n  }\n\n  runLoaderSync(loader, filepath) {\n    return loader.loadSync(filepath);\n  }\n\n  runLoader(loader, filepath) {\n    if (!loader.load) return loader.loadSync(filepath);\n    return loader.load(filepath);\n  }\n\n  async load(...args) {\n    const options = this.normalizeOptions(args);\n    const filepath = await this.recusivelyResolve(options);\n\n    if (filepath) {\n      const defaultLoader = {\n        test: /\\.+/,\n        loadSync: filepath => {\n          const extname = _path.default.extname(filepath).slice(1);\n\n          if (extname === 'js' || extname === 'cjs') {\n            delete require.cache[filepath];\n            return require(filepath);\n          }\n\n          if (this.packageJsonCache.has(filepath)) {\n            return this.packageJsonCache.get(filepath)[options.packageKey];\n          }\n\n          const data = this.options.parseJSON(readFileSync(filepath));\n          return data;\n        }\n      };\n      const loader = this.findLoader(filepath) || defaultLoader;\n      let data;\n\n      if (this.loadCache.has(filepath)) {\n        data = this.loadCache.get(filepath);\n      } else {\n        data = await this.runLoader(loader, filepath);\n        this.loadCache.set(filepath, data);\n      }\n\n      return {\n        path: filepath,\n        data\n      };\n    }\n\n    return {};\n  }\n\n  loadSync(...args) {\n    const options = this.normalizeOptions(args);\n    const filepath = this.recusivelyResolveSync(options);\n\n    if (filepath) {\n      const defaultLoader = {\n        test: /\\.+/,\n        loadSync: filepath => {\n          const extname = _path.default.extname(filepath).slice(1);\n\n          if (extname === 'js' || extname === 'cjs') {\n            delete require.cache[filepath];\n            return require(filepath);\n          }\n\n          if (this.packageJsonCache.has(filepath)) {\n            return this.packageJsonCache.get(filepath)[options.packageKey];\n          }\n\n          const data = this.options.parseJSON(readFileSync(filepath));\n          return data;\n        }\n      };\n      const loader = this.findLoader(filepath) || defaultLoader;\n      let data;\n\n      if (this.loadCache.has(filepath)) {\n        data = this.loadCache.get(filepath);\n      } else {\n        data = this.runLoaderSync(loader, filepath);\n        this.loadCache.set(filepath, data);\n      }\n\n      return {\n        path: filepath,\n        data\n      };\n    }\n\n    return {};\n  }\n\n  findLoader(filepath) {\n    for (const loader of this.loaders) {\n      if (loader.test && loader.test.test(filepath)) {\n        return loader;\n      }\n    }\n\n    return null;\n  }\n\n  clearCache() {\n    this.existsCache.clear();\n    this.packageJsonCache.clear();\n    this.loadCache.clear();\n    return this;\n  }\n\n  normalizeOptions(args) {\n    const options = Object.assign({}, this.options);\n\n    if (Object.prototype.toString.call(args[0]) === '[object Object]') {\n      Object.assign(options, args[0]);\n    } else {\n      if (args[0]) {\n        options.files = args[0];\n      }\n\n      if (args[1]) {\n        options.cwd = args[1];\n      }\n\n      if (args[2]) {\n        options.stopDir = args[2];\n      }\n    }\n\n    options.cwd = _path.default.resolve(options.cwd);\n    options.stopDir = options.stopDir ? _path.default.resolve(options.stopDir) : _path.default.parse(options.cwd).root;\n\n    if (!options.files || options.files.length === 0) {\n      throw new Error('[joycon] files must be an non-empty array!');\n    }\n\n    options.__normalized__ = true;\n    return options;\n  }\n\n}\n\nexports.default = JoyCon;\nmodule.exports = JoyCon;\nmodule.exports.default = JoyCon;","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import './polyfill'\n\nexport { loadConfig } from './load'\n","import { createRequire } from 'module'\n\nglobal.require = createRequire(import.meta.url)\n","import JoyCon, { type LoadResult } from 'joycon'\nimport path from 'path'\nimport merge from 'deepmerge'\nimport { exec } from 'child_process'\nimport { loaders, compleFiles } from './loaders'\nimport { extendKey } from './config'\n\n/**\n * 加载配置文件数据\n *\n * @param name 配置文件名称\n * @param cwd 执行查询的基础路径\n * @returns 路径以及配置数据\n */\nexport async function loadConfig(\n  name: string,\n  cwd = process.cwd()\n): Promise<LoadResult> {\n  const files = generateSearchFiles(name)\n\n  const joycon = new JoyCon({\n    cwd,\n    files,\n    ...(files.includes('package.json') ? { packageKey: name } : {})\n  })\n\n  for (const item in loaders as { [fname: string]: () => void }) {\n    if (Object.prototype.hasOwnProperty.call(loaders, item)) {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      const loader = loaders[item]\n      joycon.addLoader(loader.call())\n    }\n  }\n\n  const { data, path: configStartPath = '' } = await joycon.load()\n  let cleanData = data\n\n  // 清理数据 1. package.json包含了外层数据\n  if (path.basename(configStartPath) === 'package.json') cleanData = data[name]\n\n  const extendsName = cleanData?.[extendKey]\n  if (typeof extendsName === 'string') {\n    const extendsData = await loadExtendsData(\n      extendsName,\n      configStartPath,\n      cleanData\n    )\n    return {\n      path: configStartPath,\n      data: extendsData\n    }\n  }\n\n  return {\n    data: cleanData,\n    path: configStartPath\n  }\n}\n\n/**\n * 加载继承数据\n *\n * @param extendsName 继承的模块名称或者配置文件路径\n * @param configFilePath 当前具有继承属性的配置文件路径\n * @param beforeConfigData 上一次的继承数据\n */\nasync function loadExtendsData(\n  extendsName: string,\n  configFilePath: string,\n  beforeConfigData: Record<string, unknown>\n): Promise<Record<string, unknown>> {\n  const extendsTarget = await resolveResolvePath(extendsName, configFilePath)\n  const extendsData = await compleFiles(extendsTarget)\n\n  const currentExtendsName = extendsData?.[extendKey]\n  const hasExtendConfig = typeof currentExtendsName === 'string'\n\n  const mergeData = handleExtendsData(beforeConfigData, extendsData)\n  if (hasExtendConfig) {\n    const result = await loadExtendsData(\n      currentExtendsName,\n      extendsTarget,\n      mergeData\n    )\n    return result\n  }\n  return mergeData\n}\n\n/**\n * 生成要搜索的配置文件列表\n *\n * @param name 配置模块名称\n * @returns 搜索的目标文件列表\n */\nfunction generateSearchFiles(name: string) {\n  const isFile = path.extname(name)\n  if (isFile) return [name]\n  const suffixes = ['.json', '.yaml', '.yml', '.ts', '.js', '.cjs']\n\n  return [\n    'package.json',\n    `.${name}rc`,\n    ...suffixes.map(suffix => `.${name}rc${suffix}`),\n    `${name}.config.ts`,\n    `${name}.config.js`,\n    `${name}.config.cjs`\n  ]\n}\n\n/**\n * 处理继承数据\n *\n * @param currentData 当前数据\n * @param extendsData 继承的数据\n * @returns 如果存在相同的配置项，当前数据的优先级更高\n */\nfunction handleExtendsData(\n  currentData: Record<string, unknown>,\n  extendsData: Record<string, unknown>\n): Record<string, unknown> {\n  const result = merge(extendsData, currentData)\n  delete result?.[extendKey]\n  return result\n}\n\n/**\n * 指定cwd查找模块\n *\n * @param moduleName 模块名称\n * @param relativePath cwd路径\n * @returns 模块的路径\n */\nasync function resolveResolvePath(\n  moduleName: string,\n  relativePath: string\n): Promise<string> {\n  return new Promise((resolve, reject) => {\n    exec(\n      `node -e 'console.log(require.resolve(\"${moduleName}\"))'`,\n      {\n        cwd: path.dirname(relativePath)\n      },\n      (err, stdout, stderr) => {\n        if (err) {\n          reject(new Error(stderr))\n          return\n        }\n        resolve(stdout.trim())\n      }\n    )\n  })\n}\n","import path from 'path'\nimport { compileTypescriptData, useTypescriptLoader } from './typescript'\nimport { compileJsonData, useJson5Loader } from './json5'\n\n/**\n * 加载器用来解析文件路径\n */\nexport const loaders = {\n  useTypescriptLoader,\n  useJson5Loader\n}\n\n/**\n * 编译各种文件数据\n *\n * @param filePath 文件路径\n * @returns 数据\n */\nexport async function compleFiles(filePath: string) {\n  const ext = path.extname(filePath)\n\n  switch (ext) {\n    case '.ts': {\n      const data = await compileTypescriptData(filePath)\n      return data\n    }\n    case '.js': {\n      const data = require(filePath)\n      return data.default || data\n    }\n    case '.json':\n    case '.json5':\n    case '.jsonc': {\n      const data = await compileJsonData(filePath)\n      return data\n    }\n    default:\n      break\n  }\n}\n","import type { AsyncLoader } from 'joycon'\nimport esbuild from 'esbuild'\nimport vm from 'vm'\nimport Module from 'module'\nimport path from 'path'\nimport { findDependencies } from '../utils'\n\nexport function useTypescriptLoader(): AsyncLoader {\n  return {\n    test: /\\.ts/,\n    load: compileTypescriptData\n  }\n}\n\n/**\n * 编译typescript代码到文件系统\n *\n * @param tsFilePath typescript文件路径\n */\nexport async function compileTypescriptData(\n  tsFilePath: string\n): Promise<unknown> {\n  const installedLibraries = await findDependencies(\n    path.join(process.cwd(), 'package.json')\n  )\n\n  console.log(Object.keys(installedLibraries))\n  const buildResult = await esbuild.build({\n    entryPoints: [tsFilePath],\n    write: false,\n    bundle: true,\n    format: 'cjs',\n    target: 'node10',\n    external: Object.keys(installedLibraries),\n    platform: 'node'\n  })\n\n  const content = buildResult.outputFiles?.[0]?.contents\n  const contentStr = new TextDecoder('utf-8').decode(content)\n\n  const container = {\n    exports: {\n      default: {}\n    }\n  }\n  vm.runInThisContext(Module.wrap(contentStr))(\n    container.exports,\n    require,\n    container,\n    __filename,\n    __dirname\n  )\n  return container.exports.default\n}\n","import fs from 'fs/promises'\n\n/**\n * 查找项目安装的依赖项\n *\n * @param pkgPath package.json路径\n * @returns 安装的本地依赖项\n */\nexport async function findDependencies(pkgPath: string) {\n  const pkgData = await fs.readFile(pkgPath, { encoding: 'utf-8' })\n  const { dependencies = {}, devDependencies = {} } = JSON.parse(pkgData)\n\n  return {\n    ...dependencies,\n    ...devDependencies\n  }\n}\n","import type { AsyncLoader } from 'joycon'\nimport Json5 from 'json5'\nimport { readFile } from 'fs/promises'\n\nexport function useJson5Loader(): AsyncLoader {\n  return {\n    test: /\\.json(c|5|)$/,\n    load: compileJsonData\n  }\n}\n\nexport async function compileJsonData(jsonFilePath: string) {\n  const jsonStr = await readFile(jsonFilePath, { encoding: 'utf-8' })\n  return Json5.parse(jsonStr)\n}\n","// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\n    isSpaceSeparator (c) {\n        return typeof c === 'string' && unicode.Space_Separator.test(c)\n    },\n\n    isIdStartChar (c) {\n        return typeof c === 'string' && (\n            (c >= 'a' && c <= 'z') ||\n        (c >= 'A' && c <= 'Z') ||\n        (c === '$') || (c === '_') ||\n        unicode.ID_Start.test(c)\n        )\n    },\n\n    isIdContinueChar (c) {\n        return typeof c === 'string' && (\n            (c >= 'a' && c <= 'z') ||\n        (c >= 'A' && c <= 'Z') ||\n        (c >= '0' && c <= '9') ||\n        (c === '$') || (c === '_') ||\n        (c === '\\u200C') || (c === '\\u200D') ||\n        unicode.ID_Continue.test(c)\n        )\n    },\n\n    isDigit (c) {\n        return typeof c === 'string' && /[0-9]/.test(c)\n    },\n\n    isHexDigit (c) {\n        return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n    },\n};\n\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = function parse (text, reviver) {\n    source = String(text);\n    parseState = 'start';\n    stack = [];\n    pos = 0;\n    line = 1;\n    column = 0;\n    token = undefined;\n    key = undefined;\n    root = undefined;\n\n    do {\n        token = lex();\n\n        // This code is unreachable.\n        // if (!parseStates[parseState]) {\n        //     throw invalidParseState()\n        // }\n\n        parseStates[parseState]();\n    } while (token.type !== 'eof')\n\n    if (typeof reviver === 'function') {\n        return internalize({'': root}, '', reviver)\n    }\n\n    return root\n};\n\nfunction internalize (holder, name, reviver) {\n    const value = holder[name];\n    if (value != null && typeof value === 'object') {\n        for (const key in value) {\n            const replacement = internalize(value, key, reviver);\n            if (replacement === undefined) {\n                delete value[key];\n            } else {\n                value[key] = replacement;\n            }\n        }\n    }\n\n    return reviver.call(holder, name, value)\n}\n\nlet lexState;\nlet buffer;\nlet doubleQuote;\nlet sign;\nlet c;\n\nfunction lex () {\n    lexState = 'default';\n    buffer = '';\n    doubleQuote = false;\n    sign = 1;\n\n    for (;;) {\n        c = peek();\n\n        // This code is unreachable.\n        // if (!lexStates[lexState]) {\n        //     throw invalidLexState(lexState)\n        // }\n\n        const token = lexStates[lexState]();\n        if (token) {\n            return token\n        }\n    }\n}\n\nfunction peek () {\n    if (source[pos]) {\n        return String.fromCodePoint(source.codePointAt(pos))\n    }\n}\n\nfunction read () {\n    const c = peek();\n\n    if (c === '\\n') {\n        line++;\n        column = 0;\n    } else if (c) {\n        column += c.length;\n    } else {\n        column++;\n    }\n\n    if (c) {\n        pos += c.length;\n    }\n\n    return c\n}\n\nconst lexStates = {\n    default () {\n        switch (c) {\n        case '\\t':\n        case '\\v':\n        case '\\f':\n        case ' ':\n        case '\\u00A0':\n        case '\\uFEFF':\n        case '\\n':\n        case '\\r':\n        case '\\u2028':\n        case '\\u2029':\n            read();\n            return\n\n        case '/':\n            read();\n            lexState = 'comment';\n            return\n\n        case undefined:\n            read();\n            return newToken('eof')\n        }\n\n        if (util.isSpaceSeparator(c)) {\n            read();\n            return\n        }\n\n        // This code is unreachable.\n        // if (!lexStates[parseState]) {\n        //     throw invalidLexState(parseState)\n        // }\n\n        return lexStates[parseState]()\n    },\n\n    comment () {\n        switch (c) {\n        case '*':\n            read();\n            lexState = 'multiLineComment';\n            return\n\n        case '/':\n            read();\n            lexState = 'singleLineComment';\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    multiLineComment () {\n        switch (c) {\n        case '*':\n            read();\n            lexState = 'multiLineCommentAsterisk';\n            return\n\n        case undefined:\n            throw invalidChar(read())\n        }\n\n        read();\n    },\n\n    multiLineCommentAsterisk () {\n        switch (c) {\n        case '*':\n            read();\n            return\n\n        case '/':\n            read();\n            lexState = 'default';\n            return\n\n        case undefined:\n            throw invalidChar(read())\n        }\n\n        read();\n        lexState = 'multiLineComment';\n    },\n\n    singleLineComment () {\n        switch (c) {\n        case '\\n':\n        case '\\r':\n        case '\\u2028':\n        case '\\u2029':\n            read();\n            lexState = 'default';\n            return\n\n        case undefined:\n            read();\n            return newToken('eof')\n        }\n\n        read();\n    },\n\n    value () {\n        switch (c) {\n        case '{':\n        case '[':\n            return newToken('punctuator', read())\n\n        case 'n':\n            read();\n            literal('ull');\n            return newToken('null', null)\n\n        case 't':\n            read();\n            literal('rue');\n            return newToken('boolean', true)\n\n        case 'f':\n            read();\n            literal('alse');\n            return newToken('boolean', false)\n\n        case '-':\n        case '+':\n            if (read() === '-') {\n                sign = -1;\n            }\n\n            lexState = 'sign';\n            return\n\n        case '.':\n            buffer = read();\n            lexState = 'decimalPointLeading';\n            return\n\n        case '0':\n            buffer = read();\n            lexState = 'zero';\n            return\n\n        case '1':\n        case '2':\n        case '3':\n        case '4':\n        case '5':\n        case '6':\n        case '7':\n        case '8':\n        case '9':\n            buffer = read();\n            lexState = 'decimalInteger';\n            return\n\n        case 'I':\n            read();\n            literal('nfinity');\n            return newToken('numeric', Infinity)\n\n        case 'N':\n            read();\n            literal('aN');\n            return newToken('numeric', NaN)\n\n        case '\"':\n        case \"'\":\n            doubleQuote = (read() === '\"');\n            buffer = '';\n            lexState = 'string';\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    identifierNameStartEscape () {\n        if (c !== 'u') {\n            throw invalidChar(read())\n        }\n\n        read();\n        const u = unicodeEscape();\n        switch (u) {\n        case '$':\n        case '_':\n            break\n\n        default:\n            if (!util.isIdStartChar(u)) {\n                throw invalidIdentifier()\n            }\n\n            break\n        }\n\n        buffer += u;\n        lexState = 'identifierName';\n    },\n\n    identifierName () {\n        switch (c) {\n        case '$':\n        case '_':\n        case '\\u200C':\n        case '\\u200D':\n            buffer += read();\n            return\n\n        case '\\\\':\n            read();\n            lexState = 'identifierNameEscape';\n            return\n        }\n\n        if (util.isIdContinueChar(c)) {\n            buffer += read();\n            return\n        }\n\n        return newToken('identifier', buffer)\n    },\n\n    identifierNameEscape () {\n        if (c !== 'u') {\n            throw invalidChar(read())\n        }\n\n        read();\n        const u = unicodeEscape();\n        switch (u) {\n        case '$':\n        case '_':\n        case '\\u200C':\n        case '\\u200D':\n            break\n\n        default:\n            if (!util.isIdContinueChar(u)) {\n                throw invalidIdentifier()\n            }\n\n            break\n        }\n\n        buffer += u;\n        lexState = 'identifierName';\n    },\n\n    sign () {\n        switch (c) {\n        case '.':\n            buffer = read();\n            lexState = 'decimalPointLeading';\n            return\n\n        case '0':\n            buffer = read();\n            lexState = 'zero';\n            return\n\n        case '1':\n        case '2':\n        case '3':\n        case '4':\n        case '5':\n        case '6':\n        case '7':\n        case '8':\n        case '9':\n            buffer = read();\n            lexState = 'decimalInteger';\n            return\n\n        case 'I':\n            read();\n            literal('nfinity');\n            return newToken('numeric', sign * Infinity)\n\n        case 'N':\n            read();\n            literal('aN');\n            return newToken('numeric', NaN)\n        }\n\n        throw invalidChar(read())\n    },\n\n    zero () {\n        switch (c) {\n        case '.':\n            buffer += read();\n            lexState = 'decimalPoint';\n            return\n\n        case 'e':\n        case 'E':\n            buffer += read();\n            lexState = 'decimalExponent';\n            return\n\n        case 'x':\n        case 'X':\n            buffer += read();\n            lexState = 'hexadecimal';\n            return\n        }\n\n        return newToken('numeric', sign * 0)\n    },\n\n    decimalInteger () {\n        switch (c) {\n        case '.':\n            buffer += read();\n            lexState = 'decimalPoint';\n            return\n\n        case 'e':\n        case 'E':\n            buffer += read();\n            lexState = 'decimalExponent';\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read();\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    decimalPointLeading () {\n        if (util.isDigit(c)) {\n            buffer += read();\n            lexState = 'decimalFraction';\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    decimalPoint () {\n        switch (c) {\n        case 'e':\n        case 'E':\n            buffer += read();\n            lexState = 'decimalExponent';\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read();\n            lexState = 'decimalFraction';\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    decimalFraction () {\n        switch (c) {\n        case 'e':\n        case 'E':\n            buffer += read();\n            lexState = 'decimalExponent';\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read();\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    decimalExponent () {\n        switch (c) {\n        case '+':\n        case '-':\n            buffer += read();\n            lexState = 'decimalExponentSign';\n            return\n        }\n\n        if (util.isDigit(c)) {\n            buffer += read();\n            lexState = 'decimalExponentInteger';\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    decimalExponentSign () {\n        if (util.isDigit(c)) {\n            buffer += read();\n            lexState = 'decimalExponentInteger';\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    decimalExponentInteger () {\n        if (util.isDigit(c)) {\n            buffer += read();\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    hexadecimal () {\n        if (util.isHexDigit(c)) {\n            buffer += read();\n            lexState = 'hexadecimalInteger';\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    hexadecimalInteger () {\n        if (util.isHexDigit(c)) {\n            buffer += read();\n            return\n        }\n\n        return newToken('numeric', sign * Number(buffer))\n    },\n\n    string () {\n        switch (c) {\n        case '\\\\':\n            read();\n            buffer += escape();\n            return\n\n        case '\"':\n            if (doubleQuote) {\n                read();\n                return newToken('string', buffer)\n            }\n\n            buffer += read();\n            return\n\n        case \"'\":\n            if (!doubleQuote) {\n                read();\n                return newToken('string', buffer)\n            }\n\n            buffer += read();\n            return\n\n        case '\\n':\n        case '\\r':\n            throw invalidChar(read())\n\n        case '\\u2028':\n        case '\\u2029':\n            separatorChar(c);\n            break\n\n        case undefined:\n            throw invalidChar(read())\n        }\n\n        buffer += read();\n    },\n\n    start () {\n        switch (c) {\n        case '{':\n        case '[':\n            return newToken('punctuator', read())\n\n        // This code is unreachable since the default lexState handles eof.\n        // case undefined:\n        //     return newToken('eof')\n        }\n\n        lexState = 'value';\n    },\n\n    beforePropertyName () {\n        switch (c) {\n        case '$':\n        case '_':\n            buffer = read();\n            lexState = 'identifierName';\n            return\n\n        case '\\\\':\n            read();\n            lexState = 'identifierNameStartEscape';\n            return\n\n        case '}':\n            return newToken('punctuator', read())\n\n        case '\"':\n        case \"'\":\n            doubleQuote = (read() === '\"');\n            lexState = 'string';\n            return\n        }\n\n        if (util.isIdStartChar(c)) {\n            buffer += read();\n            lexState = 'identifierName';\n            return\n        }\n\n        throw invalidChar(read())\n    },\n\n    afterPropertyName () {\n        if (c === ':') {\n            return newToken('punctuator', read())\n        }\n\n        throw invalidChar(read())\n    },\n\n    beforePropertyValue () {\n        lexState = 'value';\n    },\n\n    afterPropertyValue () {\n        switch (c) {\n        case ',':\n        case '}':\n            return newToken('punctuator', read())\n        }\n\n        throw invalidChar(read())\n    },\n\n    beforeArrayValue () {\n        if (c === ']') {\n            return newToken('punctuator', read())\n        }\n\n        lexState = 'value';\n    },\n\n    afterArrayValue () {\n        switch (c) {\n        case ',':\n        case ']':\n            return newToken('punctuator', read())\n        }\n\n        throw invalidChar(read())\n    },\n\n    end () {\n        // This code is unreachable since it's handled by the default lexState.\n        // if (c === undefined) {\n        //     read()\n        //     return newToken('eof')\n        // }\n\n        throw invalidChar(read())\n    },\n};\n\nfunction newToken (type, value) {\n    return {\n        type,\n        value,\n        line,\n        column,\n    }\n}\n\nfunction literal (s) {\n    for (const c of s) {\n        const p = peek();\n\n        if (p !== c) {\n            throw invalidChar(read())\n        }\n\n        read();\n    }\n}\n\nfunction escape () {\n    const c = peek();\n    switch (c) {\n    case 'b':\n        read();\n        return '\\b'\n\n    case 'f':\n        read();\n        return '\\f'\n\n    case 'n':\n        read();\n        return '\\n'\n\n    case 'r':\n        read();\n        return '\\r'\n\n    case 't':\n        read();\n        return '\\t'\n\n    case 'v':\n        read();\n        return '\\v'\n\n    case '0':\n        read();\n        if (util.isDigit(peek())) {\n            throw invalidChar(read())\n        }\n\n        return '\\0'\n\n    case 'x':\n        read();\n        return hexEscape()\n\n    case 'u':\n        read();\n        return unicodeEscape()\n\n    case '\\n':\n    case '\\u2028':\n    case '\\u2029':\n        read();\n        return ''\n\n    case '\\r':\n        read();\n        if (peek() === '\\n') {\n            read();\n        }\n\n        return ''\n\n    case '1':\n    case '2':\n    case '3':\n    case '4':\n    case '5':\n    case '6':\n    case '7':\n    case '8':\n    case '9':\n        throw invalidChar(read())\n\n    case undefined:\n        throw invalidChar(read())\n    }\n\n    return read()\n}\n\nfunction hexEscape () {\n    let buffer = '';\n    let c = peek();\n\n    if (!util.isHexDigit(c)) {\n        throw invalidChar(read())\n    }\n\n    buffer += read();\n\n    c = peek();\n    if (!util.isHexDigit(c)) {\n        throw invalidChar(read())\n    }\n\n    buffer += read();\n\n    return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n    let buffer = '';\n    let count = 4;\n\n    while (count-- > 0) {\n        const c = peek();\n        if (!util.isHexDigit(c)) {\n            throw invalidChar(read())\n        }\n\n        buffer += read();\n    }\n\n    return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n    start () {\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        push();\n    },\n\n    beforePropertyName () {\n        switch (token.type) {\n        case 'identifier':\n        case 'string':\n            key = token.value;\n            parseState = 'afterPropertyName';\n            return\n\n        case 'punctuator':\n            // This code is unreachable since it's handled by the lexState.\n            // if (token.value !== '}') {\n            //     throw invalidToken()\n            // }\n\n            pop();\n            return\n\n        case 'eof':\n            throw invalidEOF()\n        }\n\n        // This code is unreachable since it's handled by the lexState.\n        // throw invalidToken()\n    },\n\n    afterPropertyName () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'punctuator' || token.value !== ':') {\n        //     throw invalidToken()\n        // }\n\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        parseState = 'beforePropertyValue';\n    },\n\n    beforePropertyValue () {\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        push();\n    },\n\n    beforeArrayValue () {\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        if (token.type === 'punctuator' && token.value === ']') {\n            pop();\n            return\n        }\n\n        push();\n    },\n\n    afterPropertyValue () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'punctuator') {\n        //     throw invalidToken()\n        // }\n\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        switch (token.value) {\n        case ',':\n            parseState = 'beforePropertyName';\n            return\n\n        case '}':\n            pop();\n        }\n\n        // This code is unreachable since it's handled by the lexState.\n        // throw invalidToken()\n    },\n\n    afterArrayValue () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'punctuator') {\n        //     throw invalidToken()\n        // }\n\n        if (token.type === 'eof') {\n            throw invalidEOF()\n        }\n\n        switch (token.value) {\n        case ',':\n            parseState = 'beforeArrayValue';\n            return\n\n        case ']':\n            pop();\n        }\n\n        // This code is unreachable since it's handled by the lexState.\n        // throw invalidToken()\n    },\n\n    end () {\n        // This code is unreachable since it's handled by the lexState.\n        // if (token.type !== 'eof') {\n        //     throw invalidToken()\n        // }\n    },\n};\n\nfunction push () {\n    let value;\n\n    switch (token.type) {\n    case 'punctuator':\n        switch (token.value) {\n        case '{':\n            value = {};\n            break\n\n        case '[':\n            value = [];\n            break\n        }\n\n        break\n\n    case 'null':\n    case 'boolean':\n    case 'numeric':\n    case 'string':\n        value = token.value;\n        break\n\n    // This code is unreachable.\n    // default:\n    //     throw invalidToken()\n    }\n\n    if (root === undefined) {\n        root = value;\n    } else {\n        const parent = stack[stack.length - 1];\n        if (Array.isArray(parent)) {\n            parent.push(value);\n        } else {\n            parent[key] = value;\n        }\n    }\n\n    if (value !== null && typeof value === 'object') {\n        stack.push(value);\n\n        if (Array.isArray(value)) {\n            parseState = 'beforeArrayValue';\n        } else {\n            parseState = 'beforePropertyName';\n        }\n    } else {\n        const current = stack[stack.length - 1];\n        if (current == null) {\n            parseState = 'end';\n        } else if (Array.isArray(current)) {\n            parseState = 'afterArrayValue';\n        } else {\n            parseState = 'afterPropertyValue';\n        }\n    }\n}\n\nfunction pop () {\n    stack.pop();\n\n    const current = stack[stack.length - 1];\n    if (current == null) {\n        parseState = 'end';\n    } else if (Array.isArray(current)) {\n        parseState = 'afterArrayValue';\n    } else {\n        parseState = 'afterPropertyValue';\n    }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n//     return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n//     return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n    if (c === undefined) {\n        return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n    }\n\n    return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n    return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n//     if (token.type === 'eof') {\n//         return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n//     }\n\n//     const c = String.fromCodePoint(token.value.codePointAt(0))\n//     return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n    column -= 5;\n    return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n    console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\n}\n\nfunction formatChar (c) {\n    const replacements = {\n        \"'\": \"\\\\'\",\n        '\"': '\\\\\"',\n        '\\\\': '\\\\\\\\',\n        '\\b': '\\\\b',\n        '\\f': '\\\\f',\n        '\\n': '\\\\n',\n        '\\r': '\\\\r',\n        '\\t': '\\\\t',\n        '\\v': '\\\\v',\n        '\\0': '\\\\0',\n        '\\u2028': '\\\\u2028',\n        '\\u2029': '\\\\u2029',\n    };\n\n    if (replacements[c]) {\n        return replacements[c]\n    }\n\n    if (c < ' ') {\n        const hexString = c.charCodeAt(0).toString(16);\n        return '\\\\x' + ('00' + hexString).substring(hexString.length)\n    }\n\n    return c\n}\n\nfunction syntaxError (message) {\n    const err = new SyntaxError(message);\n    err.lineNumber = line;\n    err.columnNumber = column;\n    return err\n}\n\nvar stringify = function stringify (value, replacer, space) {\n    const stack = [];\n    let indent = '';\n    let propertyList;\n    let replacerFunc;\n    let gap = '';\n    let quote;\n\n    if (\n        replacer != null &&\n        typeof replacer === 'object' &&\n        !Array.isArray(replacer)\n    ) {\n        space = replacer.space;\n        quote = replacer.quote;\n        replacer = replacer.replacer;\n    }\n\n    if (typeof replacer === 'function') {\n        replacerFunc = replacer;\n    } else if (Array.isArray(replacer)) {\n        propertyList = [];\n        for (const v of replacer) {\n            let item;\n\n            if (typeof v === 'string') {\n                item = v;\n            } else if (\n                typeof v === 'number' ||\n                v instanceof String ||\n                v instanceof Number\n            ) {\n                item = String(v);\n            }\n\n            if (item !== undefined && propertyList.indexOf(item) < 0) {\n                propertyList.push(item);\n            }\n        }\n    }\n\n    if (space instanceof Number) {\n        space = Number(space);\n    } else if (space instanceof String) {\n        space = String(space);\n    }\n\n    if (typeof space === 'number') {\n        if (space > 0) {\n            space = Math.min(10, Math.floor(space));\n            gap = '          '.substr(0, space);\n        }\n    } else if (typeof space === 'string') {\n        gap = space.substr(0, 10);\n    }\n\n    return serializeProperty('', {'': value})\n\n    function serializeProperty (key, holder) {\n        let value = holder[key];\n        if (value != null) {\n            if (typeof value.toJSON5 === 'function') {\n                value = value.toJSON5(key);\n            } else if (typeof value.toJSON === 'function') {\n                value = value.toJSON(key);\n            }\n        }\n\n        if (replacerFunc) {\n            value = replacerFunc.call(holder, key, value);\n        }\n\n        if (value instanceof Number) {\n            value = Number(value);\n        } else if (value instanceof String) {\n            value = String(value);\n        } else if (value instanceof Boolean) {\n            value = value.valueOf();\n        }\n\n        switch (value) {\n        case null: return 'null'\n        case true: return 'true'\n        case false: return 'false'\n        }\n\n        if (typeof value === 'string') {\n            return quoteString(value, false)\n        }\n\n        if (typeof value === 'number') {\n            return String(value)\n        }\n\n        if (typeof value === 'object') {\n            return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n        }\n\n        return undefined\n    }\n\n    function quoteString (value) {\n        const quotes = {\n            \"'\": 0.1,\n            '\"': 0.2,\n        };\n\n        const replacements = {\n            \"'\": \"\\\\'\",\n            '\"': '\\\\\"',\n            '\\\\': '\\\\\\\\',\n            '\\b': '\\\\b',\n            '\\f': '\\\\f',\n            '\\n': '\\\\n',\n            '\\r': '\\\\r',\n            '\\t': '\\\\t',\n            '\\v': '\\\\v',\n            '\\0': '\\\\0',\n            '\\u2028': '\\\\u2028',\n            '\\u2029': '\\\\u2029',\n        };\n\n        let product = '';\n\n        for (let i = 0; i < value.length; i++) {\n            const c = value[i];\n            switch (c) {\n            case \"'\":\n            case '\"':\n                quotes[c]++;\n                product += c;\n                continue\n\n            case '\\0':\n                if (util.isDigit(value[i + 1])) {\n                    product += '\\\\x00';\n                    continue\n                }\n            }\n\n            if (replacements[c]) {\n                product += replacements[c];\n                continue\n            }\n\n            if (c < ' ') {\n                let hexString = c.charCodeAt(0).toString(16);\n                product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n                continue\n            }\n\n            product += c;\n        }\n\n        const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\n\n        product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n        return quoteChar + product + quoteChar\n    }\n\n    function serializeObject (value) {\n        if (stack.indexOf(value) >= 0) {\n            throw TypeError('Converting circular structure to JSON5')\n        }\n\n        stack.push(value);\n\n        let stepback = indent;\n        indent = indent + gap;\n\n        let keys = propertyList || Object.keys(value);\n        let partial = [];\n        for (const key of keys) {\n            const propertyString = serializeProperty(key, value);\n            if (propertyString !== undefined) {\n                let member = serializeKey(key) + ':';\n                if (gap !== '') {\n                    member += ' ';\n                }\n                member += propertyString;\n                partial.push(member);\n            }\n        }\n\n        let final;\n        if (partial.length === 0) {\n            final = '{}';\n        } else {\n            let properties;\n            if (gap === '') {\n                properties = partial.join(',');\n                final = '{' + properties + '}';\n            } else {\n                let separator = ',\\n' + indent;\n                properties = partial.join(separator);\n                final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n            }\n        }\n\n        stack.pop();\n        indent = stepback;\n        return final\n    }\n\n    function serializeKey (key) {\n        if (key.length === 0) {\n            return quoteString(key, true)\n        }\n\n        const firstChar = String.fromCodePoint(key.codePointAt(0));\n        if (!util.isIdStartChar(firstChar)) {\n            return quoteString(key, true)\n        }\n\n        for (let i = firstChar.length; i < key.length; i++) {\n            if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n                return quoteString(key, true)\n            }\n        }\n\n        return key\n    }\n\n    function serializeArray (value) {\n        if (stack.indexOf(value) >= 0) {\n            throw TypeError('Converting circular structure to JSON5')\n        }\n\n        stack.push(value);\n\n        let stepback = indent;\n        indent = indent + gap;\n\n        let partial = [];\n        for (let i = 0; i < value.length; i++) {\n            const propertyString = serializeProperty(String(i), value);\n            partial.push((propertyString !== undefined) ? propertyString : 'null');\n        }\n\n        let final;\n        if (partial.length === 0) {\n            final = '[]';\n        } else {\n            if (gap === '') {\n                let properties = partial.join(',');\n                final = '[' + properties + ']';\n            } else {\n                let separator = ',\\n' + indent;\n                let properties = partial.join(separator);\n                final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\n            }\n        }\n\n        stack.pop();\n        indent = stepback;\n        return final\n    }\n};\n\nconst JSON5 = {\n    parse,\n    stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\n","/**\n * 继承配置的属性名\n */\nexport const extendKey = '$extends'\n"],"mappings":"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","names":[]}