diff --git a/packages/astro/vendor/vite/dist/client/client.mjs b/packages/astro/vendor/vite/dist/client/client.mjs
old mode 100755
new mode 100644
index 53609982f9d2..f559aa3a46aa
--- a/packages/astro/vendor/vite/dist/client/client.mjs
+++ b/packages/astro/vendor/vite/dist/client/client.mjs
@@ -195,20 +195,15 @@ function warnFailedFetch(err, path) {
`This could be due to syntax errors or importing non-existent ` +
`modules. (see errors above)`);
}
+function cleanUrl(pathname) {
+ const url = new URL(pathname, location.toString());
+ url.searchParams.delete('direct');
+ return url.pathname + url.search;
+}
// Listen for messages
socket.addEventListener('message', async ({ data }) => {
handleMessage(JSON.parse(data));
});
-
-/**
- * This cleans up the query params and removes the `direct` param which is internal.
- * Other query params are preserved.
- */
-function cleanUrl(pathname) {
- let url = new URL(pathname, location);
- url.searchParams.delete('direct');
- return url.pathname + url.search;
-}
let isFirstUpdate = true;
async function handleMessage(payload) {
switch (payload.type) {
@@ -239,19 +234,18 @@ async function handleMessage(payload) {
else {
// css-update
// this is only sent when a css file referenced with is updated
- let { path, timestamp } = update;
- let searchUrl = cleanUrl(path);
+ const { path, timestamp } = update;
+ const searchUrl = cleanUrl(path);
// can't use querySelector with `[href*=]` here since the link may be
// using relative paths so we need to use link.href to grab the full
// URL for the include check.
- const el = [].slice.call(document.querySelectorAll(`link`)).find((e) => {
- return cleanUrl(e.href).includes(searchUrl)
- });
+ const el = Array.from(document.querySelectorAll('link')).find((e) => cleanUrl(e.href).includes(searchUrl));
if (el) {
- const newPath = `${base}${path.slice(1)}${path.includes('?') ? '&' : '?'}t=${timestamp}`;
+ const newPath = `${base}${searchUrl.slice(1)}${searchUrl.includes('?') ? '&' : '?'}t=${timestamp}`;
el.href = new URL(newPath, el.href).href;
}
- console.log(`[vite] css hot updated: ${path}`);
+ console.log(`[vite] css hot updated: ${searchUrl}`);
+ notifyListeners('vite:afterUpdate:css', el);
}
});
break;
@@ -389,8 +383,6 @@ function removeStyle(id) {
const style = sheetsMap.get(id);
if (style) {
if (style instanceof CSSStyleSheet) {
- // @ts-ignore
- document.adoptedStyleSheets.indexOf(style);
// @ts-ignore
document.adoptedStyleSheets = document.adoptedStyleSheets.filter((s) => s !== style);
}
diff --git a/packages/astro/vendor/vite/dist/client/client.mjs.map b/packages/astro/vendor/vite/dist/client/client.mjs.map
old mode 100755
new mode 100644
index 483469f1dd50..e8e3bbb4f830
--- a/packages/astro/vendor/vite/dist/client/client.mjs.map
+++ b/packages/astro/vendor/vite/dist/client/client.mjs.map
@@ -1 +1 @@
-{"version":3,"file":"client.mjs","sources":["../../src/client/overlay.ts","../../src/client/client.ts"],"sourcesContent":["import { ErrorPayload } from 'types/hmrPayload'\n\nconst template = /*html*/ `\n\n
\n
\n
\n
\n
\n
\n Click outside or fix the code to dismiss. \n You can also disable this overlay by setting\n server.hmr.overlay
to false
in vite.config.js.
\n
\n
\n`\n\nconst fileRE = /(?:[a-zA-Z]:\\\\|\\/).*?:\\d+:\\d+/g\nconst codeframeRE = /^(?:>?\\s+\\d+\\s+\\|.*|\\s+\\|\\s*\\^.*)\\r?\\n/gm\n\nexport class ErrorOverlay extends HTMLElement {\n root: ShadowRoot\n\n constructor(err: ErrorPayload['err']) {\n super()\n this.root = this.attachShadow({ mode: 'open' })\n this.root.innerHTML = template\n\n codeframeRE.lastIndex = 0\n const hasFrame = err.frame && codeframeRE.test(err.frame)\n const message = hasFrame\n ? err.message.replace(codeframeRE, '')\n : err.message\n if (err.plugin) {\n this.text('.plugin', `[plugin:${err.plugin}] `)\n }\n this.text('.message-body', message.trim())\n\n const [file] = (err.loc?.file || err.id || 'unknown file').split(`?`)\n if (err.loc) {\n this.text('.file', `${file}:${err.loc.line}:${err.loc.column}`, true)\n } else if (err.id) {\n this.text('.file', file)\n }\n\n if (hasFrame) {\n this.text('.frame', err.frame!.trim())\n }\n this.text('.stack', err.stack, true)\n\n this.root.querySelector('.window')!.addEventListener('click', (e) => {\n e.stopPropagation()\n })\n this.addEventListener('click', () => {\n this.close()\n })\n }\n\n text(selector: string, text: string, linkFiles = false): void {\n const el = this.root.querySelector(selector)!\n if (!linkFiles) {\n el.textContent = text\n } else {\n let curIndex = 0\n let match: RegExpExecArray | null\n while ((match = fileRE.exec(text))) {\n const { 0: file, index } = match\n if (index != null) {\n const frag = text.slice(curIndex, index)\n el.appendChild(document.createTextNode(frag))\n const link = document.createElement('a')\n link.textContent = file\n link.className = 'file-link'\n link.onclick = () => {\n fetch('/__open-in-editor?file=' + encodeURIComponent(file))\n }\n el.appendChild(link)\n curIndex += frag.length + file.length\n }\n }\n }\n }\n\n close(): void {\n this.parentNode?.removeChild(this)\n }\n}\n\nexport const overlayId = 'vite-error-overlay'\nif (customElements && !customElements.get(overlayId)) {\n customElements.define(overlayId, ErrorOverlay)\n}\n","import {\n ErrorPayload,\n FullReloadPayload,\n HMRPayload,\n PrunePayload,\n Update,\n UpdatePayload\n} from 'types/hmrPayload'\nimport { CustomEventName } from 'types/customEvent'\nimport { ErrorOverlay, overlayId } from './overlay'\n// eslint-disable-next-line node/no-missing-import\nimport '@vite/env'\n\n// injected by the hmr plugin when served\ndeclare const __BASE__: string\ndeclare const __HMR_PROTOCOL__: string\ndeclare const __HMR_HOSTNAME__: string\ndeclare const __HMR_PORT__: string\ndeclare const __HMR_TIMEOUT__: number\ndeclare const __HMR_ENABLE_OVERLAY__: boolean\n\nconsole.log('[vite] connecting...')\n\n// use server configuration, then fallback to inference\nconst socketProtocol =\n __HMR_PROTOCOL__ || (location.protocol === 'https:' ? 'wss' : 'ws')\nconst socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${__HMR_PORT__}`\nconst socket = new WebSocket(`${socketProtocol}://${socketHost}`, 'vite-hmr')\nconst base = __BASE__ || '/'\n\nfunction warnFailedFetch(err: Error, path: string | string[]) {\n if (!err.message.match('fetch')) {\n console.error(err)\n }\n console.error(\n `[hmr] Failed to reload ${path}. ` +\n `This could be due to syntax errors or importing non-existent ` +\n `modules. (see errors above)`\n )\n}\n\n// Listen for messages\nsocket.addEventListener('message', async ({ data }) => {\n handleMessage(JSON.parse(data))\n})\n\nlet isFirstUpdate = true\n\nasync function handleMessage(payload: HMRPayload) {\n switch (payload.type) {\n case 'connected':\n console.log(`[vite] connected.`)\n // proxy(nginx, docker) hmr ws maybe caused timeout,\n // so send ping package let ws keep alive.\n setInterval(() => socket.send('ping'), __HMR_TIMEOUT__)\n break\n case 'update':\n notifyListeners('vite:beforeUpdate', payload)\n // if this is the first update and there's already an error overlay, it\n // means the page opened with existing server compile error and the whole\n // module script failed to load (since one of the nested imports is 500).\n // in this case a normal update won't work and a full reload is needed.\n if (isFirstUpdate && hasErrorOverlay()) {\n window.location.reload()\n return\n } else {\n clearErrorOverlay()\n isFirstUpdate = false\n }\n payload.updates.forEach((update) => {\n if (update.type === 'js-update') {\n queueUpdate(fetchUpdate(update))\n } else {\n // css-update\n // this is only sent when a css file referenced with is updated\n let { path, timestamp } = update\n path = path.replace(/\\?.*/, '')\n // can't use querySelector with `[href*=]` here since the link may be\n // using relative paths so we need to use link.href to grab the full\n // URL for the include check.\n const el = (\n [].slice.call(\n document.querySelectorAll(`link`)\n ) as HTMLLinkElement[]\n ).find((e) => e.href.includes(path))\n if (el) {\n const newPath = `${base}${path.slice(1)}${\n path.includes('?') ? '&' : '?'\n }t=${timestamp}`\n el.href = new URL(newPath, el.href).href\n }\n console.log(`[vite] css hot updated: ${path}`)\n }\n })\n break\n case 'custom': {\n notifyListeners(payload.event as CustomEventName, payload.data)\n break\n }\n case 'full-reload':\n notifyListeners('vite:beforeFullReload', payload)\n if (payload.path && payload.path.endsWith('.html')) {\n // if html file is edited, only reload the page if the browser is\n // currently on that page.\n const pagePath = location.pathname\n const payloadPath = base + payload.path.slice(1)\n if (\n pagePath === payloadPath ||\n (pagePath.endsWith('/') && pagePath + 'index.html' === payloadPath)\n ) {\n location.reload()\n }\n return\n } else {\n location.reload()\n }\n break\n case 'prune':\n notifyListeners('vite:beforePrune', payload)\n // After an HMR update, some modules are no longer imported on the page\n // but they may have left behind side effects that need to be cleaned up\n // (.e.g style injections)\n // TODO Trigger their dispose callbacks.\n payload.paths.forEach((path) => {\n const fn = pruneMap.get(path)\n if (fn) {\n fn(dataMap.get(path))\n }\n })\n break\n case 'error': {\n notifyListeners('vite:error', payload)\n const err = payload.err\n if (enableOverlay) {\n createErrorOverlay(err)\n } else {\n console.error(\n `[vite] Internal Server Error\\n${err.message}\\n${err.stack}`\n )\n }\n break\n }\n default: {\n const check: never = payload\n return check\n }\n }\n}\n\nfunction notifyListeners(\n event: 'vite:beforeUpdate',\n payload: UpdatePayload\n): void\nfunction notifyListeners(event: 'vite:beforePrune', payload: PrunePayload): void\nfunction notifyListeners(\n event: 'vite:beforeFullReload',\n payload: FullReloadPayload\n): void\nfunction notifyListeners(event: 'vite:error', payload: ErrorPayload): void\nfunction notifyListeners(\n event: CustomEventName,\n data: any\n): void\nfunction notifyListeners(event: string, data: any): void {\n const cbs = customListenersMap.get(event)\n if (cbs) {\n cbs.forEach((cb) => cb(data))\n }\n}\n\nconst enableOverlay = __HMR_ENABLE_OVERLAY__\n\nfunction createErrorOverlay(err: ErrorPayload['err']) {\n if (!enableOverlay) return\n clearErrorOverlay()\n document.body.appendChild(new ErrorOverlay(err))\n}\n\nfunction clearErrorOverlay() {\n document\n .querySelectorAll(overlayId)\n .forEach((n) => (n as ErrorOverlay).close())\n}\n\nfunction hasErrorOverlay() {\n return document.querySelectorAll(overlayId).length\n}\n\nlet pending = false\nlet queued: Promise<(() => void) | undefined>[] = []\n\n/**\n * buffer multiple hot updates triggered by the same src change\n * so that they are invoked in the same order they were sent.\n * (otherwise the order may be inconsistent because of the http request round trip)\n */\nasync function queueUpdate(p: Promise<(() => void) | undefined>) {\n queued.push(p)\n if (!pending) {\n pending = true\n await Promise.resolve()\n pending = false\n const loading = [...queued]\n queued = []\n ;(await Promise.all(loading)).forEach((fn) => fn && fn())\n }\n}\n\nasync function waitForSuccessfulPing(ms = 1000) {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n await fetch(`${base}__vite_ping`)\n break\n } catch (e) {\n await new Promise((resolve) => setTimeout(resolve, ms))\n }\n }\n}\n\n// ping server\nsocket.addEventListener('close', async ({ wasClean }) => {\n if (wasClean) return\n console.log(`[vite] server connection lost. polling for restart...`)\n await waitForSuccessfulPing()\n location.reload()\n})\n\n// https://wicg.github.io/construct-stylesheets\nconst supportsConstructedSheet = (() => {\n try {\n // new CSSStyleSheet()\n // return true\n } catch (e) {}\n return false\n})()\n\nconst sheetsMap = new Map()\n\nexport function updateStyle(id: string, content: string): void {\n let style = sheetsMap.get(id)\n if (supportsConstructedSheet && !content.includes('@import')) {\n if (style && !(style instanceof CSSStyleSheet)) {\n removeStyle(id)\n style = undefined\n }\n\n if (!style) {\n style = new CSSStyleSheet()\n style.replaceSync(content)\n // @ts-ignore\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, style]\n } else {\n style.replaceSync(content)\n }\n } else {\n if (style && !(style instanceof HTMLStyleElement)) {\n removeStyle(id)\n style = undefined\n }\n\n if (!style) {\n style = document.createElement('style')\n style.setAttribute('type', 'text/css')\n style.innerHTML = content\n document.head.appendChild(style)\n } else {\n style.innerHTML = content\n }\n }\n sheetsMap.set(id, style)\n}\n\nexport function removeStyle(id: string): void {\n const style = sheetsMap.get(id)\n if (style) {\n if (style instanceof CSSStyleSheet) {\n // @ts-ignore\n const index = document.adoptedStyleSheets.indexOf(style)\n // @ts-ignore\n document.adoptedStyleSheets = document.adoptedStyleSheets.filter(\n (s: CSSStyleSheet) => s !== style\n )\n } else {\n document.head.removeChild(style)\n }\n sheetsMap.delete(id)\n }\n}\n\nasync function fetchUpdate({ path, acceptedPath, timestamp }: Update) {\n const mod = hotModulesMap.get(path)\n if (!mod) {\n // In a code-splitting project,\n // it is common that the hot-updating module is not loaded yet.\n // https://github.com/vitejs/vite/issues/721\n return\n }\n\n const moduleMap = new Map()\n const isSelfUpdate = path === acceptedPath\n\n // make sure we only import each dep once\n const modulesToUpdate = new Set()\n if (isSelfUpdate) {\n // self update - only update self\n modulesToUpdate.add(path)\n } else {\n // dep update\n for (const { deps } of mod.callbacks) {\n deps.forEach((dep) => {\n if (acceptedPath === dep) {\n modulesToUpdate.add(dep)\n }\n })\n }\n }\n\n // determine the qualified callbacks before we re-import the modules\n const qualifiedCallbacks = mod.callbacks.filter(({ deps }) => {\n return deps.some((dep) => modulesToUpdate.has(dep))\n })\n\n await Promise.all(\n Array.from(modulesToUpdate).map(async (dep) => {\n const disposer = disposeMap.get(dep)\n if (disposer) await disposer(dataMap.get(dep))\n const [path, query] = dep.split(`?`)\n try {\n const newMod = await import(\n /* @vite-ignore */\n base +\n path.slice(1) +\n `?import&t=${timestamp}${query ? `&${query}` : ''}`\n )\n moduleMap.set(dep, newMod)\n } catch (e) {\n warnFailedFetch(e, dep)\n }\n })\n )\n\n return () => {\n for (const { deps, fn } of qualifiedCallbacks) {\n fn(deps.map((dep) => moduleMap.get(dep)))\n }\n const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`\n console.log(`[vite] hot updated: ${loggedPath}`)\n }\n}\n\ninterface HotModule {\n id: string\n callbacks: HotCallback[]\n}\n\ninterface HotCallback {\n // the dependencies must be fetchable paths\n deps: string[]\n fn: (modules: object[]) => void\n}\n\nconst hotModulesMap = new Map()\nconst disposeMap = new Map void | Promise>()\nconst pruneMap = new Map void | Promise>()\nconst dataMap = new Map()\nconst customListenersMap = new Map void)[]>()\nconst ctxToListenersMap = new Map<\n string,\n Map void)[]>\n>()\n\n// Just infer the return type for now\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const createHotContext = (ownerPath: string) => {\n if (!dataMap.has(ownerPath)) {\n dataMap.set(ownerPath, {})\n }\n\n // when a file is hot updated, a new context is created\n // clear its stale callbacks\n const mod = hotModulesMap.get(ownerPath)\n if (mod) {\n mod.callbacks = []\n }\n\n // clear stale custom event listeners\n const staleListeners = ctxToListenersMap.get(ownerPath)\n if (staleListeners) {\n for (const [event, staleFns] of staleListeners) {\n const listeners = customListenersMap.get(event)\n if (listeners) {\n customListenersMap.set(\n event,\n listeners.filter((l) => !staleFns.includes(l))\n )\n }\n }\n }\n\n const newListeners = new Map()\n ctxToListenersMap.set(ownerPath, newListeners)\n\n function acceptDeps(deps: string[], callback: HotCallback['fn'] = () => {}) {\n const mod: HotModule = hotModulesMap.get(ownerPath) || {\n id: ownerPath,\n callbacks: []\n }\n mod.callbacks.push({\n deps,\n fn: callback\n })\n hotModulesMap.set(ownerPath, mod)\n }\n\n const hot = {\n get data() {\n return dataMap.get(ownerPath)\n },\n\n accept(deps: any, callback?: any) {\n if (typeof deps === 'function' || !deps) {\n // self-accept: hot.accept(() => {})\n acceptDeps([ownerPath], ([mod]) => deps && deps(mod))\n } else if (typeof deps === 'string') {\n // explicit deps\n acceptDeps([deps], ([mod]) => callback && callback(mod))\n } else if (Array.isArray(deps)) {\n acceptDeps(deps, callback)\n } else {\n throw new Error(`invalid hot.accept() usage.`)\n }\n },\n\n acceptDeps() {\n throw new Error(\n `hot.acceptDeps() is deprecated. ` +\n `Use hot.accept() with the same signature instead.`\n )\n },\n\n dispose(cb: (data: any) => void) {\n disposeMap.set(ownerPath, cb)\n },\n\n prune(cb: (data: any) => void) {\n pruneMap.set(ownerPath, cb)\n },\n\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n decline() {},\n\n invalidate() {\n // TODO should tell the server to re-perform hmr propagation\n // from this module as root\n location.reload()\n },\n\n // custom events\n on: (event: string, cb: (data: any) => void) => {\n const addToMap = (map: Map) => {\n const existing = map.get(event) || []\n existing.push(cb)\n map.set(event, existing)\n }\n addToMap(customListenersMap)\n addToMap(newListeners)\n }\n }\n\n return hot\n}\n\n/**\n * urls here are dynamic import() urls that couldn't be statically analyzed\n */\nexport function injectQuery(url: string, queryToInject: string): string {\n // skip urls that won't be handled by vite\n if (!url.startsWith('.') && !url.startsWith('/')) {\n return url\n }\n\n // can't use pathname from URL since it may be relative like ../\n const pathname = url.replace(/#.*$/, '').replace(/\\?.*$/, '')\n const { search, hash } = new URL(url, 'http://vitejs.dev')\n\n return `${pathname}?${queryToInject}${search ? `&` + search.slice(1) : ''}${\n hash || ''\n }`\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"client.mjs","sources":["../../src/client/overlay.ts","../../src/client/client.ts"],"sourcesContent":["import { ErrorPayload } from 'types/hmrPayload'\n\nconst template = /*html*/ `\n\n\n
\n
\n
\n
\n
\n Click outside or fix the code to dismiss. \n You can also disable this overlay by setting\n server.hmr.overlay
to false
in vite.config.js.
\n
\n
\n`\n\nconst fileRE = /(?:[a-zA-Z]:\\\\|\\/).*?:\\d+:\\d+/g\nconst codeframeRE = /^(?:>?\\s+\\d+\\s+\\|.*|\\s+\\|\\s*\\^.*)\\r?\\n/gm\n\nexport class ErrorOverlay extends HTMLElement {\n root: ShadowRoot\n\n constructor(err: ErrorPayload['err']) {\n super()\n this.root = this.attachShadow({ mode: 'open' })\n this.root.innerHTML = template\n\n codeframeRE.lastIndex = 0\n const hasFrame = err.frame && codeframeRE.test(err.frame)\n const message = hasFrame\n ? err.message.replace(codeframeRE, '')\n : err.message\n if (err.plugin) {\n this.text('.plugin', `[plugin:${err.plugin}] `)\n }\n this.text('.message-body', message.trim())\n\n const [file] = (err.loc?.file || err.id || 'unknown file').split(`?`)\n if (err.loc) {\n this.text('.file', `${file}:${err.loc.line}:${err.loc.column}`, true)\n } else if (err.id) {\n this.text('.file', file)\n }\n\n if (hasFrame) {\n this.text('.frame', err.frame!.trim())\n }\n this.text('.stack', err.stack, true)\n\n this.root.querySelector('.window')!.addEventListener('click', (e) => {\n e.stopPropagation()\n })\n this.addEventListener('click', () => {\n this.close()\n })\n }\n\n text(selector: string, text: string, linkFiles = false): void {\n const el = this.root.querySelector(selector)!\n if (!linkFiles) {\n el.textContent = text\n } else {\n let curIndex = 0\n let match: RegExpExecArray | null\n while ((match = fileRE.exec(text))) {\n const { 0: file, index } = match\n if (index != null) {\n const frag = text.slice(curIndex, index)\n el.appendChild(document.createTextNode(frag))\n const link = document.createElement('a')\n link.textContent = file\n link.className = 'file-link'\n link.onclick = () => {\n fetch('/__open-in-editor?file=' + encodeURIComponent(file))\n }\n el.appendChild(link)\n curIndex += frag.length + file.length\n }\n }\n }\n }\n\n close(): void {\n this.parentNode?.removeChild(this)\n }\n}\n\nexport const overlayId = 'vite-error-overlay'\nif (customElements && !customElements.get(overlayId)) {\n customElements.define(overlayId, ErrorOverlay)\n}\n","import {\n ErrorPayload,\n FullReloadPayload,\n HMRPayload,\n PrunePayload,\n Update,\n UpdatePayload\n} from 'types/hmrPayload'\nimport { CustomEventName } from 'types/customEvent'\nimport { ErrorOverlay, overlayId } from './overlay'\n// eslint-disable-next-line node/no-missing-import\nimport '@vite/env'\n\n// injected by the hmr plugin when served\ndeclare const __BASE__: string\ndeclare const __HMR_PROTOCOL__: string\ndeclare const __HMR_HOSTNAME__: string\ndeclare const __HMR_PORT__: string\ndeclare const __HMR_TIMEOUT__: number\ndeclare const __HMR_ENABLE_OVERLAY__: boolean\n\nconsole.log('[vite] connecting...')\n\n// use server configuration, then fallback to inference\nconst socketProtocol =\n __HMR_PROTOCOL__ || (location.protocol === 'https:' ? 'wss' : 'ws')\nconst socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${__HMR_PORT__}`\nconst socket = new WebSocket(`${socketProtocol}://${socketHost}`, 'vite-hmr')\nconst base = __BASE__ || '/'\n\nfunction warnFailedFetch(err: Error, path: string | string[]) {\n if (!err.message.match('fetch')) {\n console.error(err)\n }\n console.error(\n `[hmr] Failed to reload ${path}. ` +\n `This could be due to syntax errors or importing non-existent ` +\n `modules. (see errors above)`\n )\n}\n\nfunction cleanUrl(pathname: string): string {\n const url = new URL(pathname, location.toString())\n url.searchParams.delete('direct')\n return url.pathname + url.search\n}\n\n// Listen for messages\nsocket.addEventListener('message', async ({ data }) => {\n handleMessage(JSON.parse(data))\n})\n\nlet isFirstUpdate = true\n\nasync function handleMessage(payload: HMRPayload) {\n switch (payload.type) {\n case 'connected':\n console.log(`[vite] connected.`)\n // proxy(nginx, docker) hmr ws maybe caused timeout,\n // so send ping package let ws keep alive.\n setInterval(() => socket.send('ping'), __HMR_TIMEOUT__)\n break\n case 'update':\n notifyListeners('vite:beforeUpdate', payload)\n // if this is the first update and there's already an error overlay, it\n // means the page opened with existing server compile error and the whole\n // module script failed to load (since one of the nested imports is 500).\n // in this case a normal update won't work and a full reload is needed.\n if (isFirstUpdate && hasErrorOverlay()) {\n window.location.reload()\n return\n } else {\n clearErrorOverlay()\n isFirstUpdate = false\n }\n payload.updates.forEach((update) => {\n if (update.type === 'js-update') {\n queueUpdate(fetchUpdate(update))\n } else {\n // css-update\n // this is only sent when a css file referenced with is updated\n const { path, timestamp } = update\n const searchUrl = cleanUrl(path)\n // can't use querySelector with `[href*=]` here since the link may be\n // using relative paths so we need to use link.href to grab the full\n // URL for the include check.\n const el = Array.from(\n document.querySelectorAll('link')\n ).find((e) => cleanUrl(e.href).includes(searchUrl))\n if (el) {\n const newPath = `${base}${searchUrl.slice(1)}${\n searchUrl.includes('?') ? '&' : '?'\n }t=${timestamp}`\n el.href = new URL(newPath, el.href).href\n }\n console.log(`[vite] css hot updated: ${searchUrl}`)\n notifyListeners<'vite:afterUpdate:css'>('vite:afterUpdate:css', el)\n }\n })\n break\n case 'custom': {\n notifyListeners(payload.event as CustomEventName, payload.data)\n break\n }\n case 'full-reload':\n notifyListeners('vite:beforeFullReload', payload)\n if (payload.path && payload.path.endsWith('.html')) {\n // if html file is edited, only reload the page if the browser is\n // currently on that page.\n const pagePath = location.pathname\n const payloadPath = base + payload.path.slice(1)\n if (\n pagePath === payloadPath ||\n (pagePath.endsWith('/') && pagePath + 'index.html' === payloadPath)\n ) {\n location.reload()\n }\n return\n } else {\n location.reload()\n }\n break\n case 'prune':\n notifyListeners('vite:beforePrune', payload)\n // After an HMR update, some modules are no longer imported on the page\n // but they may have left behind side effects that need to be cleaned up\n // (.e.g style injections)\n // TODO Trigger their dispose callbacks.\n payload.paths.forEach((path) => {\n const fn = pruneMap.get(path)\n if (fn) {\n fn(dataMap.get(path))\n }\n })\n break\n case 'error': {\n notifyListeners('vite:error', payload)\n const err = payload.err\n if (enableOverlay) {\n createErrorOverlay(err)\n } else {\n console.error(\n `[vite] Internal Server Error\\n${err.message}\\n${err.stack}`\n )\n }\n break\n }\n default: {\n const check: never = payload\n return check\n }\n }\n}\n\nfunction notifyListeners(\n event: 'vite:beforeUpdate',\n payload: UpdatePayload\n): void\nfunction notifyListeners(event: 'vite:beforePrune', payload: PrunePayload): void\nfunction notifyListeners(\n event: 'vite:beforeFullReload',\n payload: FullReloadPayload\n): void\nfunction notifyListeners(event: 'vite:error', payload: ErrorPayload): void\nfunction notifyListeners(\n event: CustomEventName,\n data: any\n): void\nfunction notifyListeners(event: string, data: any): void {\n const cbs = customListenersMap.get(event)\n if (cbs) {\n cbs.forEach((cb) => cb(data))\n }\n}\n\nconst enableOverlay = __HMR_ENABLE_OVERLAY__\n\nfunction createErrorOverlay(err: ErrorPayload['err']) {\n if (!enableOverlay) return\n clearErrorOverlay()\n document.body.appendChild(new ErrorOverlay(err))\n}\n\nfunction clearErrorOverlay() {\n document\n .querySelectorAll(overlayId)\n .forEach((n) => (n as ErrorOverlay).close())\n}\n\nfunction hasErrorOverlay() {\n return document.querySelectorAll(overlayId).length\n}\n\nlet pending = false\nlet queued: Promise<(() => void) | undefined>[] = []\n\n/**\n * buffer multiple hot updates triggered by the same src change\n * so that they are invoked in the same order they were sent.\n * (otherwise the order may be inconsistent because of the http request round trip)\n */\nasync function queueUpdate(p: Promise<(() => void) | undefined>) {\n queued.push(p)\n if (!pending) {\n pending = true\n await Promise.resolve()\n pending = false\n const loading = [...queued]\n queued = []\n ;(await Promise.all(loading)).forEach((fn) => fn && fn())\n }\n}\n\nasync function waitForSuccessfulPing(ms = 1000) {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n await fetch(`${base}__vite_ping`)\n break\n } catch (e) {\n await new Promise((resolve) => setTimeout(resolve, ms))\n }\n }\n}\n\n// ping server\nsocket.addEventListener('close', async ({ wasClean }) => {\n if (wasClean) return\n console.log(`[vite] server connection lost. polling for restart...`)\n await waitForSuccessfulPing()\n location.reload()\n})\n\n// https://wicg.github.io/construct-stylesheets\nconst supportsConstructedSheet = (() => {\n try {\n // new CSSStyleSheet()\n // return true\n } catch (e) {}\n return false\n})()\n\nconst sheetsMap = new Map()\n\nexport function updateStyle(id: string, content: string): void {\n let style = sheetsMap.get(id)\n if (supportsConstructedSheet && !content.includes('@import')) {\n if (style && !(style instanceof CSSStyleSheet)) {\n removeStyle(id)\n style = undefined\n }\n\n if (!style) {\n style = new CSSStyleSheet()\n style.replaceSync(content)\n // @ts-ignore\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, style]\n } else {\n style.replaceSync(content)\n }\n } else {\n if (style && !(style instanceof HTMLStyleElement)) {\n removeStyle(id)\n style = undefined\n }\n\n if (!style) {\n style = document.createElement('style')\n style.setAttribute('type', 'text/css')\n style.innerHTML = content\n document.head.appendChild(style)\n } else {\n style.innerHTML = content\n }\n }\n sheetsMap.set(id, style)\n}\n\nexport function removeStyle(id: string): void {\n const style = sheetsMap.get(id)\n if (style) {\n if (style instanceof CSSStyleSheet) {\n // @ts-ignore\n document.adoptedStyleSheets = document.adoptedStyleSheets.filter(\n (s: CSSStyleSheet) => s !== style\n )\n } else {\n document.head.removeChild(style)\n }\n sheetsMap.delete(id)\n }\n}\n\nasync function fetchUpdate({ path, acceptedPath, timestamp }: Update) {\n const mod = hotModulesMap.get(path)\n if (!mod) {\n // In a code-splitting project,\n // it is common that the hot-updating module is not loaded yet.\n // https://github.com/vitejs/vite/issues/721\n return\n }\n\n const moduleMap = new Map()\n const isSelfUpdate = path === acceptedPath\n\n // make sure we only import each dep once\n const modulesToUpdate = new Set()\n if (isSelfUpdate) {\n // self update - only update self\n modulesToUpdate.add(path)\n } else {\n // dep update\n for (const { deps } of mod.callbacks) {\n deps.forEach((dep) => {\n if (acceptedPath === dep) {\n modulesToUpdate.add(dep)\n }\n })\n }\n }\n\n // determine the qualified callbacks before we re-import the modules\n const qualifiedCallbacks = mod.callbacks.filter(({ deps }) => {\n return deps.some((dep) => modulesToUpdate.has(dep))\n })\n\n await Promise.all(\n Array.from(modulesToUpdate).map(async (dep) => {\n const disposer = disposeMap.get(dep)\n if (disposer) await disposer(dataMap.get(dep))\n const [path, query] = dep.split(`?`)\n try {\n const newMod = await import(\n /* @vite-ignore */\n base +\n path.slice(1) +\n `?import&t=${timestamp}${query ? `&${query}` : ''}`\n )\n moduleMap.set(dep, newMod)\n } catch (e) {\n warnFailedFetch(e, dep)\n }\n })\n )\n\n return () => {\n for (const { deps, fn } of qualifiedCallbacks) {\n fn(deps.map((dep) => moduleMap.get(dep)))\n }\n const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}`\n console.log(`[vite] hot updated: ${loggedPath}`)\n }\n}\n\ninterface HotModule {\n id: string\n callbacks: HotCallback[]\n}\n\ninterface HotCallback {\n // the dependencies must be fetchable paths\n deps: string[]\n fn: (modules: object[]) => void\n}\n\nconst hotModulesMap = new Map()\nconst disposeMap = new Map void | Promise>()\nconst pruneMap = new Map void | Promise>()\nconst dataMap = new Map()\nconst customListenersMap = new Map void)[]>()\nconst ctxToListenersMap = new Map<\n string,\n Map void)[]>\n>()\n\n// Just infer the return type for now\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const createHotContext = (ownerPath: string) => {\n if (!dataMap.has(ownerPath)) {\n dataMap.set(ownerPath, {})\n }\n\n // when a file is hot updated, a new context is created\n // clear its stale callbacks\n const mod = hotModulesMap.get(ownerPath)\n if (mod) {\n mod.callbacks = []\n }\n\n // clear stale custom event listeners\n const staleListeners = ctxToListenersMap.get(ownerPath)\n if (staleListeners) {\n for (const [event, staleFns] of staleListeners) {\n const listeners = customListenersMap.get(event)\n if (listeners) {\n customListenersMap.set(\n event,\n listeners.filter((l) => !staleFns.includes(l))\n )\n }\n }\n }\n\n const newListeners = new Map()\n ctxToListenersMap.set(ownerPath, newListeners)\n\n function acceptDeps(deps: string[], callback: HotCallback['fn'] = () => {}) {\n const mod: HotModule = hotModulesMap.get(ownerPath) || {\n id: ownerPath,\n callbacks: []\n }\n mod.callbacks.push({\n deps,\n fn: callback\n })\n hotModulesMap.set(ownerPath, mod)\n }\n\n const hot = {\n get data() {\n return dataMap.get(ownerPath)\n },\n\n accept(deps: any, callback?: any) {\n if (typeof deps === 'function' || !deps) {\n // self-accept: hot.accept(() => {})\n acceptDeps([ownerPath], ([mod]) => deps && deps(mod))\n } else if (typeof deps === 'string') {\n // explicit deps\n acceptDeps([deps], ([mod]) => callback && callback(mod))\n } else if (Array.isArray(deps)) {\n acceptDeps(deps, callback)\n } else {\n throw new Error(`invalid hot.accept() usage.`)\n }\n },\n\n acceptDeps() {\n throw new Error(\n `hot.acceptDeps() is deprecated. ` +\n `Use hot.accept() with the same signature instead.`\n )\n },\n\n dispose(cb: (data: any) => void) {\n disposeMap.set(ownerPath, cb)\n },\n\n prune(cb: (data: any) => void) {\n pruneMap.set(ownerPath, cb)\n },\n\n // TODO\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n decline() {},\n\n invalidate() {\n // TODO should tell the server to re-perform hmr propagation\n // from this module as root\n location.reload()\n },\n\n // custom events\n on: (event: string, cb: (data: any) => void) => {\n const addToMap = (map: Map) => {\n const existing = map.get(event) || []\n existing.push(cb)\n map.set(event, existing)\n }\n addToMap(customListenersMap)\n addToMap(newListeners)\n }\n }\n\n return hot\n}\n\n/**\n * urls here are dynamic import() urls that couldn't be statically analyzed\n */\nexport function injectQuery(url: string, queryToInject: string): string {\n // skip urls that won't be handled by vite\n if (!url.startsWith('.') && !url.startsWith('/')) {\n return url\n }\n\n // can't use pathname from URL since it may be relative like ../\n const pathname = url.replace(/#.*$/, '').replace(/\\?.*$/, '')\n const { search, hash } = new URL(url, 'http://vitejs.dev')\n\n return `${pathname}?${queryToInject}${search ? `&` + search.slice(1) : ''}${\n hash || ''\n }`\n}\n"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/astro/vendor/vite/dist/client/env.mjs b/packages/astro/vendor/vite/dist/client/env.mjs
old mode 100755
new mode 100644
diff --git a/packages/astro/vendor/vite/dist/client/env.mjs.map b/packages/astro/vendor/vite/dist/client/env.mjs.map
old mode 100755
new mode 100644
diff --git a/packages/astro/vendor/vite/dist/node/chunks/dep-dab866a6.js b/packages/astro/vendor/vite/dist/node/chunks/dep-0fc9d1dd.js
old mode 100755
new mode 100644
similarity index 88%
rename from packages/astro/vendor/vite/dist/node/chunks/dep-dab866a6.js
rename to packages/astro/vendor/vite/dist/node/chunks/dep-0fc9d1dd.js
index 57e076b7506e..90b5048fa063
--- a/packages/astro/vendor/vite/dist/node/chunks/dep-dab866a6.js
+++ b/packages/astro/vendor/vite/dist/node/chunks/dep-0fc9d1dd.js
@@ -1,7 +1,8 @@
'use strict';
var require$$0 = require('postcss');
-var build$2 = require('./dep-35df7f96.js');
+var build$2 = require('./dep-ac6ff16a.js');
+var JSON5$1 = require('json5');
var path$4 = require('path');
var require$$1 = require('crypto');
var fs = require('fs');
@@ -13,16 +14,17 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
function _mergeNamespaces(n, m) {
for (var i = 0; i < m.length; i++) {
var e = m[i];
- for (var k in e) {
+ if (typeof e !== 'string' && !Array.isArray(e)) { for (var k in e) {
if (k !== 'default' && !(k in n)) {
n[k] = e[k];
}
- }
+ } }
}
return n;
}
var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
+var JSON5__default = /*#__PURE__*/_interopDefaultLegacy(JSON5$1);
var path__default = /*#__PURE__*/_interopDefaultLegacy(path$4);
var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
@@ -630,35 +632,9 @@ function words(string, pattern, guard) {
var lodash_camelcase = camelCase;
-var lib$2 = {};
-
-var lib$1 = {exports: {}};
-
-var parse = {exports: {}};
-
-var util$1 = {};
-
-var unicode$1 = {};
-
-Object.defineProperty(unicode$1,"__esModule",{value:true});unicode$1.Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/;unicode$1.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\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\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-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\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\uDF30-\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\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\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]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\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]|\uD87E[\uDC00-\uDE1D]/;unicode$1.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\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\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\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\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\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-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\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-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\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\uDF30-\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\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\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]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\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]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
-
-Object.defineProperty(util$1,'__esModule',{value:true});util$1.isSpaceSeparator=isSpaceSeparator;util$1.isIdStartChar=isIdStartChar;util$1.isIdContinueChar=isIdContinueChar;util$1.isDigit=isDigit;util$1.isHexDigit=isHexDigit;var _unicode=unicode$1;var unicode=_interopRequireWildcard(_unicode);function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj}else {var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj}}function isSpaceSeparator(c){return unicode.Space_Separator.test(c)}function isIdStartChar(c){return c>='a'&&c<='z'||c>='A'&&c<='Z'||c==='$'||c==='_'||unicode.ID_Start.test(c)}function isIdContinueChar(c){return c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='0'&&c<='9'||c==='$'||c==='_'||c==='\u200C'||c==='\u200D'||unicode.ID_Continue.test(c)}function isDigit(c){return /[0-9]/.test(c)}function isHexDigit(c){return /[0-9A-Fa-f]/.test(c)}
-
-(function (module, exports) {
-Object.defineProperty(exports,'__esModule',{value:true});var _typeof=typeof Symbol==='function'&&typeof Symbol.iterator==='symbol'?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==='function'&&obj.constructor===Symbol&&obj!==Symbol.prototype?'symbol':typeof obj};exports.default=parse;var _util=util$1;var util=_interopRequireWildcard(_util);function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj}else {var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj}}var source=void 0;var parseState=void 0;var stack=void 0;var pos=void 0;var line=void 0;var column=void 0;var token=void 0;var key=void 0;var root=void 0;function parse(text,reviver){source=String(text);parseState='start';stack=[];pos=0;line=1;column=0;token=undefined;key=undefined;root=undefined;do{token=lex();parseStates[parseState]();}while(token.type!=='eof');if(typeof reviver==='function'){return internalize({'':root},'',reviver)}return root}function internalize(holder,name,reviver){var value=holder[name];if(value!=null&&(typeof value==='undefined'?'undefined':_typeof(value))==='object'){for(var _key in value){var replacement=internalize(value,_key,reviver);if(replacement===undefined){delete value[_key];}else {value[_key]=replacement;}}}return reviver.call(holder,name,value)}var lexState=void 0;var buffer=void 0;var doubleQuote=void 0;var _sign=void 0;var c=void 0;function lex(){lexState='default';buffer='';doubleQuote=false;_sign=1;for(;;){c=peek();var _token=lexStates[lexState]();if(_token){return _token}}}function peek(){if(source[pos]){return String.fromCodePoint(source.codePointAt(pos))}}function read(){var c=peek();if(c==='\n'){line++;column=0;}else if(c){column+=c.length;}else {column++;}if(c){pos+=c.length;}return c}var lexStates={default:function _default(){switch(c){case'\t':case'\x0B':case'\f':case' ':case'\xA0':case'\uFEFF':case'\n':case'\r':case'\u2028':case'\u2029':read();return;case'/':read();lexState='comment';return;case undefined:read();return newToken('eof');}if(util.isSpaceSeparator(c)){read();return}return lexStates[parseState]()},comment:function comment(){switch(c){case'*':read();lexState='multiLineComment';return;case'/':read();lexState='singleLineComment';return;}throw invalidChar(read())},multiLineComment:function multiLineComment(){switch(c){case'*':read();lexState='multiLineCommentAsterisk';return;case undefined:throw invalidChar(read());}read();},multiLineCommentAsterisk:function multiLineCommentAsterisk(){switch(c){case'*':read();return;case'/':read();lexState='default';return;case undefined:throw invalidChar(read());}read();lexState='multiLineComment';},singleLineComment:function singleLineComment(){switch(c){case'\n':case'\r':case'\u2028':case'\u2029':read();lexState='default';return;case undefined:read();return newToken('eof');}read();},value:function value(){switch(c){case'{':case'[':return newToken('punctuator',read());case'n':read();literal('ull');return newToken('null',null);case't':read();literal('rue');return newToken('boolean',true);case'f':read();literal('alse');return newToken('boolean',false);case'-':case'+':if(read()==='-'){_sign=-1;}lexState='sign';return;case'.':buffer=read();lexState='decimalPointLeading';return;case'0':buffer=read();lexState='zero';return;case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':buffer=read();lexState='decimalInteger';return;case'I':read();literal('nfinity');return newToken('numeric',Infinity);case'N':read();literal('aN');return newToken('numeric',NaN);case'"':case'\'':doubleQuote=read()==='"';buffer='';lexState='string';return;}throw invalidChar(read())},identifierNameStartEscape:function identifierNameStartEscape(){if(c!=='u'){throw invalidChar(read())}read();var u=unicodeEscape();switch(u){case'$':case'_':break;default:if(!util.isIdStartChar(u)){throw invalidIdentifier()}break;}buffer+=u;lexState='identifierName';},identifierName:function identifierName(){switch(c){case'$':case'_':case'\u200C':case'\u200D':buffer+=read();return;case'\\':read();lexState='identifierNameEscape';return;}if(util.isIdContinueChar(c)){buffer+=read();return}return newToken('identifier',buffer)},identifierNameEscape:function identifierNameEscape(){if(c!=='u'){throw invalidChar(read())}read();var u=unicodeEscape();switch(u){case'$':case'_':case'\u200C':case'\u200D':break;default:if(!util.isIdContinueChar(u)){throw invalidIdentifier()}break;}buffer+=u;lexState='identifierName';},sign:function sign(){switch(c){case'.':buffer=read();lexState='decimalPointLeading';return;case'0':buffer=read();lexState='zero';return;case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':buffer=read();lexState='decimalInteger';return;case'I':read();literal('nfinity');return newToken('numeric',_sign*Infinity);case'N':read();literal('aN');return newToken('numeric',NaN);}throw invalidChar(read())},zero:function zero(){switch(c){case'.':buffer+=read();lexState='decimalPoint';return;case'e':case'E':buffer+=read();lexState='decimalExponent';return;case'x':case'X':buffer+=read();lexState='hexadecimal';return;}return newToken('numeric',_sign*0)},decimalInteger:function decimalInteger(){switch(c){case'.':buffer+=read();lexState='decimalPoint';return;case'e':case'E':buffer+=read();lexState='decimalExponent';return;}if(util.isDigit(c)){buffer+=read();return}return newToken('numeric',_sign*Number(buffer))},decimalPointLeading:function decimalPointLeading(){if(util.isDigit(c)){buffer+=read();lexState='decimalFraction';return}throw invalidChar(read())},decimalPoint:function decimalPoint(){switch(c){case'e':case'E':buffer+=read();lexState='decimalExponent';return;}if(util.isDigit(c)){buffer+=read();lexState='decimalFraction';return}return newToken('numeric',_sign*Number(buffer))},decimalFraction:function decimalFraction(){switch(c){case'e':case'E':buffer+=read();lexState='decimalExponent';return;}if(util.isDigit(c)){buffer+=read();return}return newToken('numeric',_sign*Number(buffer))},decimalExponent:function decimalExponent(){switch(c){case'+':case'-':buffer+=read();lexState='decimalExponentSign';return;}if(util.isDigit(c)){buffer+=read();lexState='decimalExponentInteger';return}throw invalidChar(read())},decimalExponentSign:function decimalExponentSign(){if(util.isDigit(c)){buffer+=read();lexState='decimalExponentInteger';return}throw invalidChar(read())},decimalExponentInteger:function decimalExponentInteger(){if(util.isDigit(c)){buffer+=read();return}return newToken('numeric',_sign*Number(buffer))},hexadecimal:function hexadecimal(){if(util.isHexDigit(c)){buffer+=read();lexState='hexadecimalInteger';return}throw invalidChar(read())},hexadecimalInteger:function hexadecimalInteger(){if(util.isHexDigit(c)){buffer+=read();return}return newToken('numeric',_sign*Number(buffer))},string:function string(){switch(c){case'\\':read();buffer+=escape();return;case'"':if(doubleQuote){read();return newToken('string',buffer)}buffer+=read();return;case'\'':if(!doubleQuote){read();return newToken('string',buffer)}buffer+=read();return;case'\n':case'\r':throw invalidChar(read());case'\u2028':case'\u2029':separatorChar(c);break;case undefined:throw invalidChar(read());}buffer+=read();},start:function start(){switch(c){case'{':case'[':return newToken('punctuator',read());}lexState='value';},beforePropertyName:function beforePropertyName(){switch(c){case'$':case'_':buffer=read();lexState='identifierName';return;case'\\':read();lexState='identifierNameStartEscape';return;case'}':return newToken('punctuator',read());case'"':case'\'':doubleQuote=read()==='"';lexState='string';return;}if(util.isIdStartChar(c)){buffer+=read();lexState='identifierName';return}throw invalidChar(read())},afterPropertyName:function afterPropertyName(){if(c===':'){return newToken('punctuator',read())}throw invalidChar(read())},beforePropertyValue:function beforePropertyValue(){lexState='value';},afterPropertyValue:function afterPropertyValue(){switch(c){case',':case'}':return newToken('punctuator',read());}throw invalidChar(read())},beforeArrayValue:function beforeArrayValue(){if(c===']'){return newToken('punctuator',read())}lexState='value';},afterArrayValue:function afterArrayValue(){switch(c){case',':case']':return newToken('punctuator',read());}throw invalidChar(read())},end:function end(){throw invalidChar(read())}};function newToken(type,value){return {type:type,value:value,line:line,column:column}}function literal(s){var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=s[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _c=_step.value;var p=peek();if(p!==_c){throw invalidChar(read())}read();}}catch(err){_didIteratorError=true;_iteratorError=err;}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return();}}finally{if(_didIteratorError){throw _iteratorError}}}}function escape(){var c=peek();switch(c){case'b':read();return '\b';case'f':read();return '\f';case'n':read();return '\n';case'r':read();return '\r';case't':read();return '\t';case'v':read();return '\x0B';case'0':read();if(util.isDigit(peek())){throw invalidChar(read())}return '\0';case'x':read();return hexEscape();case'u':read();return unicodeEscape();case'\n':case'\u2028':case'\u2029':read();return '';case'\r':read();if(peek()==='\n'){read();}return '';case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':throw invalidChar(read());case undefined:throw invalidChar(read());}return read()}function hexEscape(){var buffer='';var c=peek();if(!util.isHexDigit(c)){throw invalidChar(read())}buffer+=read();c=peek();if(!util.isHexDigit(c)){throw invalidChar(read())}buffer+=read();return String.fromCodePoint(parseInt(buffer,16))}function unicodeEscape(){var buffer='';var count=4;while(count-->0){var _c2=peek();if(!util.isHexDigit(_c2)){throw invalidChar(read())}buffer+=read();}return String.fromCodePoint(parseInt(buffer,16))}var parseStates={start:function start(){if(token.type==='eof'){throw invalidEOF()}push();},beforePropertyName:function beforePropertyName(){switch(token.type){case'identifier':case'string':key=token.value;parseState='afterPropertyName';return;case'punctuator':pop();return;case'eof':throw invalidEOF();}},afterPropertyName:function afterPropertyName(){if(token.type==='eof'){throw invalidEOF()}parseState='beforePropertyValue';},beforePropertyValue:function beforePropertyValue(){if(token.type==='eof'){throw invalidEOF()}push();},beforeArrayValue:function beforeArrayValue(){if(token.type==='eof'){throw invalidEOF()}if(token.type==='punctuator'&&token.value===']'){pop();return}push();},afterPropertyValue:function afterPropertyValue(){if(token.type==='eof'){throw invalidEOF()}switch(token.value){case',':parseState='beforePropertyName';return;case'}':pop();}},afterArrayValue:function afterArrayValue(){if(token.type==='eof'){throw invalidEOF()}switch(token.value){case',':parseState='beforeArrayValue';return;case']':pop();}},end:function end(){}};function push(){var value=void 0;switch(token.type){case'punctuator':switch(token.value){case'{':value={};break;case'[':value=[];break;}break;case'null':case'boolean':case'numeric':case'string':value=token.value;break;}if(root===undefined){root=value;}else {var parent=stack[stack.length-1];if(Array.isArray(parent)){parent.push(value);}else {parent[key]=value;}}if(value!==null&&(typeof value==='undefined'?'undefined':_typeof(value))==='object'){stack.push(value);if(Array.isArray(value)){parseState='beforeArrayValue';}else {parseState='beforePropertyName';}}else {var current=stack[stack.length-1];if(current==null){parseState='end';}else if(Array.isArray(current)){parseState='afterArrayValue';}else {parseState='afterPropertyValue';}}}function pop(){stack.pop();var current=stack[stack.length-1];if(current==null){parseState='end';}else if(Array.isArray(current)){parseState='afterArrayValue';}else {parseState='afterPropertyValue';}}function invalidChar(c){if(c===undefined){return syntaxError('JSON5: invalid end of input at '+line+':'+column)}return syntaxError('JSON5: invalid character \''+formatChar(c)+'\' at '+line+':'+column)}function invalidEOF(){return syntaxError('JSON5: invalid end of input at '+line+':'+column)}function invalidIdentifier(){column-=5;return syntaxError('JSON5: invalid identifier character at '+line+':'+column)}function separatorChar(c){console.warn('JSON5: \''+c+'\' is not valid ECMAScript; consider escaping');}function formatChar(c){var replacements={'\'':'\\\'','"':'\\"','\\':'\\\\','\b':'\\b','\f':'\\f','\n':'\\n','\r':'\\r','\t':'\\t','\x0B':'\\v','\0':'\\0','\u2028':'\\u2028','\u2029':'\\u2029'};if(replacements[c]){return replacements[c]}if(c<' '){var hexString=c.charCodeAt(0).toString(16);return '\\x'+('00'+hexString).substring(hexString.length)}return c}function syntaxError(message){var err=new SyntaxError(message);err.lineNumber=line;err.columnNumber=column;return err}module.exports=exports['default'];
-}(parse, parse.exports));
-
-var stringify = {exports: {}};
-
-(function (module, exports) {
-Object.defineProperty(exports,'__esModule',{value:true});var _typeof=typeof Symbol==='function'&&typeof Symbol.iterator==='symbol'?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==='function'&&obj.constructor===Symbol&&obj!==Symbol.prototype?'symbol':typeof obj};exports.default=stringify;var _util=util$1;var util=_interopRequireWildcard(_util);function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj}else {var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj}}function stringify(value,replacer,space){var stack=[];var indent='';var propertyList=void 0;var replacerFunc=void 0;var gap='';var quote=void 0;if(replacer!=null&&(typeof replacer==='undefined'?'undefined':_typeof(replacer))==='object'&&!Array.isArray(replacer)){space=replacer.space;quote=replacer.quote;replacer=replacer.replacer;}if(typeof replacer==='function'){replacerFunc=replacer;}else if(Array.isArray(replacer)){propertyList=[];var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=replacer[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var v=_step.value;var item=void 0;if(typeof v==='string'){item=v;}else if(typeof v==='number'||v instanceof String||v instanceof Number){item=String(v);}if(item!==undefined&&propertyList.indexOf(item)<0){propertyList.push(item);}}}catch(err){_didIteratorError=true;_iteratorError=err;}finally{try{if(!_iteratorNormalCompletion&&_iterator.return){_iterator.return();}}finally{if(_didIteratorError){throw _iteratorError}}}}if(space instanceof Number){space=Number(space);}else if(space instanceof String){space=String(space);}if(typeof space==='number'){if(space>0){space=Math.min(10,Math.floor(space));gap=' '.substr(0,space);}}else if(typeof space==='string'){gap=space.substr(0,10);}return serializeProperty('',{'':value});function serializeProperty(key,holder){var value=holder[key];if(value!=null){if(typeof value.toJSON5==='function'){value=value.toJSON5(key);}else if(typeof value.toJSON==='function'){value=value.toJSON(key);}}if(replacerFunc){value=replacerFunc.call(holder,key,value);}if(value instanceof Number){value=Number(value);}else if(value instanceof String){value=String(value);}else if(value instanceof Boolean){value=value.valueOf();}switch(value){case null:return 'null';case true:return 'true';case false:return 'false';}if(typeof value==='string'){return quoteString(value)}if(typeof value==='number'){return String(value)}if((typeof value==='undefined'?'undefined':_typeof(value))==='object'){return Array.isArray(value)?serializeArray(value):serializeObject(value)}return undefined}function quoteString(value){var quotes={'\'':0.1,'"':0.2};var replacements={'\'':'\\\'','"':'\\"','\\':'\\\\','\b':'\\b','\f':'\\f','\n':'\\n','\r':'\\r','\t':'\\t','\x0B':'\\v','\0':'\\0','\u2028':'\\u2028','\u2029':'\\u2029'};var product='';var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=value[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var c=_step2.value;switch(c){case'\'':case'"':quotes[c]++;product+=c;continue;}if(replacements[c]){product+=replacements[c];continue}if(c<' '){var hexString=c.charCodeAt(0).toString(16);product+='\\x'+('00'+hexString).substring(hexString.length);continue}product+=c;}}catch(err){_didIteratorError2=true;_iteratorError2=err;}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return){_iterator2.return();}}finally{if(_didIteratorError2){throw _iteratorError2}}}var quoteChar=quote||Object.keys(quotes).reduce(function(a,b){return quotes[a]=0){throw TypeError('Converting circular structure to JSON5')}stack.push(value);var stepback=indent;indent=indent+gap;var keys=propertyList||Object.keys(value);var partial=[];var _iteratorNormalCompletion3=true;var _didIteratorError3=false;var _iteratorError3=undefined;try{for(var _iterator3=keys[Symbol.iterator](),_step3;!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=true){var key=_step3.value;var propertyString=serializeProperty(key,value);if(propertyString!==undefined){var member=serializeKey(key)+':';if(gap!==''){member+=' ';}member+=propertyString;partial.push(member);}}}catch(err){_didIteratorError3=true;_iteratorError3=err;}finally{try{if(!_iteratorNormalCompletion3&&_iterator3.return){_iterator3.return();}}finally{if(_didIteratorError3){throw _iteratorError3}}}var final=void 0;if(partial.length===0){final='{}';}else {var properties=void 0;if(gap===''){properties=partial.join(',');final='{'+properties+'}';}else {var separator=',\n'+indent;properties=partial.join(separator);final='{\n'+indent+properties+',\n'+stepback+'}';}}stack.pop();indent=stepback;return final}function serializeKey(key){if(key.length===0){return quoteString(key)}var firstChar=String.fromCodePoint(key.codePointAt(0));if(!util.isIdStartChar(firstChar)){return quoteString(key)}for(var i=firstChar.length;i=0){throw TypeError('Converting circular structure to JSON5')}stack.push(value);var stepback=indent;indent=indent+gap;var partial=[];for(var i=0;i \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","'use strict';\n\nconst JSON5 = require('json5');\n\nconst specialValues = {\n null: null,\n true: true,\n false: false,\n};\n\nfunction parseQuery(query) {\n if (query.substr(0, 1) !== '?') {\n throw new Error(\n \"A valid query string passed to parseQuery should begin with '?'\"\n );\n }\n\n query = query.substr(1);\n\n if (!query) {\n return {};\n }\n\n if (query.substr(0, 1) === '{' && query.substr(-1) === '}') {\n return JSON5.parse(query);\n }\n\n const queryArgs = query.split(/[,&]/g);\n const result = {};\n\n queryArgs.forEach((arg) => {\n const idx = arg.indexOf('=');\n\n if (idx >= 0) {\n let name = arg.substr(0, idx);\n let value = decodeURIComponent(arg.substr(idx + 1));\n\n if (specialValues.hasOwnProperty(value)) {\n value = specialValues[value];\n }\n\n if (name.substr(-2) === '[]') {\n name = decodeURIComponent(name.substr(0, name.length - 2));\n\n if (!Array.isArray(result[name])) {\n result[name] = [];\n }\n\n result[name].push(value);\n } else {\n name = decodeURIComponent(name);\n result[name] = value;\n }\n } else {\n if (arg.substr(0, 1) === '-') {\n result[decodeURIComponent(arg.substr(1))] = false;\n } else if (arg.substr(0, 1) === '+') {\n result[decodeURIComponent(arg.substr(1))] = true;\n } else {\n result[decodeURIComponent(arg)] = true;\n }\n }\n });\n\n return result;\n}\n\nmodule.exports = parseQuery;\n","'use strict';\n\nconst parseQuery = require('./parseQuery');\n\nfunction getOptions(loaderContext) {\n const query = loaderContext.query;\n\n if (typeof query === 'string' && query !== '') {\n return parseQuery(loaderContext.query);\n }\n\n if (!query || typeof query !== 'object') {\n // Not object-like queries are not supported.\n return null;\n }\n\n return query;\n}\n\nmodule.exports = getOptions;\n","'use strict';\n\nconst path = require('path');\n\nconst matchRelativePath = /^\\.\\.?[/\\\\]/;\n\nfunction isAbsolutePath(str) {\n return path.posix.isAbsolute(str) || path.win32.isAbsolute(str);\n}\n\nfunction isRelativePath(str) {\n return matchRelativePath.test(str);\n}\n\nfunction stringifyRequest(loaderContext, request) {\n const splitted = request.split('!');\n const context =\n loaderContext.context ||\n (loaderContext.options && loaderContext.options.context);\n\n return JSON.stringify(\n splitted\n .map((part) => {\n // First, separate singlePath from query, because the query might contain paths again\n const splittedPart = part.match(/^(.*?)(\\?.*)/);\n const query = splittedPart ? splittedPart[2] : '';\n let singlePath = splittedPart ? splittedPart[1] : part;\n\n if (isAbsolutePath(singlePath) && context) {\n singlePath = path.relative(context, singlePath);\n\n if (isAbsolutePath(singlePath)) {\n // If singlePath still matches an absolute path, singlePath was on a different drive than context.\n // In this case, we leave the path platform-specific without replacing any separators.\n // @see https://github.com/webpack/loader-utils/pull/14\n return singlePath + query;\n }\n\n if (isRelativePath(singlePath) === false) {\n // Ensure that the relative path starts at least with ./ otherwise it would be a request into the modules directory (like node_modules).\n singlePath = './' + singlePath;\n }\n }\n\n return singlePath.replace(/\\\\/g, '/') + query;\n })\n .join('!')\n );\n}\n\nmodule.exports = stringifyRequest;\n","'use strict';\n\nfunction getRemainingRequest(loaderContext) {\n if (loaderContext.remainingRequest) {\n return loaderContext.remainingRequest;\n }\n\n const request = loaderContext.loaders\n .slice(loaderContext.loaderIndex + 1)\n .map((obj) => obj.request)\n .concat([loaderContext.resource]);\n\n return request.join('!');\n}\n\nmodule.exports = getRemainingRequest;\n","'use strict';\n\nfunction getCurrentRequest(loaderContext) {\n if (loaderContext.currentRequest) {\n return loaderContext.currentRequest;\n }\n\n const request = loaderContext.loaders\n .slice(loaderContext.loaderIndex)\n .map((obj) => obj.request)\n .concat([loaderContext.resource]);\n\n return request.join('!');\n}\n\nmodule.exports = getCurrentRequest;\n","'use strict';\n\nconst path = require('path');\n\nfunction isUrlRequest(url, root) {\n // An URL is not an request if\n\n // 1. It's an absolute url and it is not `windows` path like `C:\\dir\\file`\n if (/^[a-z][a-z0-9+.-]*:/i.test(url) && !path.win32.isAbsolute(url)) {\n return false;\n }\n\n // 2. It's a protocol-relative\n if (/^\\/\\//.test(url)) {\n return false;\n }\n\n // 3. It's some kind of url for a template\n if (/^[{}[\\]#*;,'§$%&(=?`´^°<>]/.test(url)) {\n return false;\n }\n\n // 4. It's also not an request if root isn't set and it's a root-relative url\n if ((root === undefined || root === false) && /^\\//.test(url)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = isUrlRequest;\n","'use strict';\n\n// we can't use path.win32.isAbsolute because it also matches paths starting with a forward slash\nconst matchNativeWin32Path = /^[A-Z]:[/\\\\]|^\\\\\\\\/i;\n\nfunction urlToRequest(url, root) {\n // Do not rewrite an empty url\n if (url === '') {\n return '';\n }\n\n const moduleRequestRegex = /^[^?]*~/;\n let request;\n\n if (matchNativeWin32Path.test(url)) {\n // absolute windows path, keep it\n request = url;\n } else if (root !== undefined && root !== false && /^\\//.test(url)) {\n // if root is set and the url is root-relative\n switch (typeof root) {\n // 1. root is a string: root is prefixed to the url\n case 'string':\n // special case: `~` roots convert to module request\n if (moduleRequestRegex.test(root)) {\n request = root.replace(/([^~/])$/, '$1/') + url.slice(1);\n } else {\n request = root + url;\n }\n break;\n // 2. root is `true`: absolute paths are allowed\n // *nix only, windows-style absolute paths are always allowed as they doesn't start with a `/`\n case 'boolean':\n request = url;\n break;\n default:\n throw new Error(\n \"Unexpected parameters to loader-utils 'urlToRequest': url = \" +\n url +\n ', root = ' +\n root +\n '.'\n );\n }\n } else if (/^\\.\\.?\\//.test(url)) {\n // A relative url stays\n request = url;\n } else {\n // every other url is threaded like a relative url\n request = './' + url;\n }\n\n // A `~` makes the url an module\n if (moduleRequestRegex.test(request)) {\n request = request.replace(moduleRequestRegex, '');\n }\n\n return request;\n}\n\nmodule.exports = urlToRequest;\n","'use strict';\n\nfunction parseString(str) {\n try {\n if (str[0] === '\"') {\n return JSON.parse(str);\n }\n\n if (str[0] === \"'\" && str.substr(str.length - 1) === \"'\") {\n return parseString(\n str\n .replace(/\\\\.|\"/g, (x) => (x === '\"' ? '\\\\\"' : x))\n .replace(/^'|'$/g, '\"')\n );\n }\n\n return JSON.parse('\"' + str + '\"');\n } catch (e) {\n return str;\n }\n}\n\nmodule.exports = parseString;\n","/*\r\n * big.js v5.2.2\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2018 Michael Mclaughlin \r\n * https://github.com/MikeMcl/big.js/LICENCE\r\n */\r\n;(function (GLOBAL) {\r\n 'use strict';\r\n var Big,\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\n DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big.\r\n * (This limit is not enforced or checked.)\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n /*\r\n * Create and return a Big constructor.\r\n *\r\n */\r\n function _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n parse(x, n);\r\n }\r\n\r\n /*\r\n * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which\r\n * points to Object.\r\n */\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.version = '5.2.2';\r\n\r\n return Big;\r\n }\r\n\r\n\r\n /*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\n function parse(x, n) {\r\n var e, i, nl;\r\n\r\n // Minus zero?\r\n if (n === 0 && 1 / n < 0) n = '-0';\r\n else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number');\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round Big x to a maximum of dp decimal places using rounding mode rm.\r\n * Called by stringify, P.div, P.round and P.sqrt.\r\n *\r\n * x {Big} The Big to round.\r\n * dp {number} Integer, 0 to MAX_DP inclusive.\r\n * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP)\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\n function round(x, dp, rm, more) {\r\n var xc = x.c,\r\n i = x.e + dp + 1;\r\n\r\n if (i < xc.length) {\r\n if (rm === 1) {\r\n\r\n // xc[i] is the digit after the digit that may be rounded up.\r\n more = xc[i] >= 5;\r\n } else if (rm === 2) {\r\n more = xc[i] > 5 || xc[i] == 5 &&\r\n (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1);\r\n } else if (rm === 3) {\r\n more = more || !!xc[0];\r\n } else {\r\n more = false;\r\n if (rm !== 0) throw Error(INVALID_RM);\r\n }\r\n\r\n if (i < 1) {\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = -dp;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else {\r\n\r\n // Remove any digits after the required decimal places.\r\n xc.length = i--;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[i] > 9;) {\r\n xc[i] = 0;\r\n if (!i--) {\r\n ++x.e;\r\n xc.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; !xc[--i];) xc.pop();\r\n }\r\n } else if (rm < 0 || rm > 3 || rm !== ~~rm) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n *\r\n * x {Big}\r\n * id? {number} Caller id.\r\n * 1 toExponential\r\n * 2 toFixed\r\n * 3 toPrecision\r\n * 4 valueOf\r\n * n? {number|undefined} Caller's argument.\r\n * k? {number|undefined}\r\n */\r\n function stringify(x, id, n, k) {\r\n var e, s,\r\n Big = x.constructor,\r\n z = !x.c[0];\r\n\r\n if (n !== UNDEFINED) {\r\n if (n !== ~~n || n < (id == 3) || n > MAX_DP) {\r\n throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP);\r\n }\r\n\r\n x = new Big(x);\r\n\r\n // The index of the digit that may be rounded up.\r\n n = k - x.e;\r\n\r\n // Round?\r\n if (x.c.length > ++k) round(x, n, Big.RM);\r\n\r\n // toFixed: recalculate k as x.e may have changed if value rounded up.\r\n if (id == 2) k = x.e + n + 1;\r\n\r\n // Append zeros?\r\n for (; x.c.length < k;) x.c.push(0);\r\n }\r\n\r\n e = x.e;\r\n s = x.c.join('');\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) for (e -= n; e--;) s += '0';\r\n else if (e < n) s = s.slice(0, e) + '.' + s.slice(e);\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && (!z || id == 4) ? '-' + s : s;\r\n }\r\n\r\n\r\n // Prototype/instance methods\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\n P.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\n P.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP);\r\n\r\n // Divisor is zero?\r\n if (!b[0]) throw Error(DIV_BY_ZERO);\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) return new Big(k * 0);\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result\r\n\r\n q.s = k;\r\n k = d < 0 ? 0 : d;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n }\r\n\r\n // Round?\r\n if (qi > d) round(q, dp, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\n P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\n P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\n P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\n P.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // y is non-zero? x is non-zero? Or both are zero.\r\n return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0);\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\n P.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) throw Error(DIV_BY_ZERO);\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\n P.plus = P.add = function (y) {\r\n var t,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero? y is non-zero? x is non-zero? Or both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0);\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n a = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (b) {\r\n xc.unshift(b);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (a = xc.length; xc[--a] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\n P.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor(1),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent');\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded using rounding mode rm\r\n * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a\r\n * multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n * If rm is not specified, use Big.RM.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP)\r\n */\r\n P.round = function (dp, rm) {\r\n var Big = this.constructor;\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP);\r\n return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big(0.5);\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) throw Error(NAME + 'No square root');\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s);\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, Big.DP -= 4, Big.RM);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\n P.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) return new Big(y.s * 0);\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = (c[j] + b) % 10;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in exponential notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP inclusive.\r\n */\r\n P.toExponential = function (dp) {\r\n return stringify(this, 1, dp, dp);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in normal notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\n P.toFixed = function (dp) {\r\n return stringify(this, 2, dp, this.e + dp);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Integer, 1 to MAX_DP inclusive.\r\n */\r\n P.toPrecision = function (sd) {\r\n return stringify(this, 3, sd, sd - 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\n P.toString = function () {\r\n return stringify(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return stringify(this, 4);\r\n };\r\n\r\n\r\n // Export\r\n\r\n\r\n Big = _Big_();\r\n\r\n Big['default'] = Big.Big = Big;\r\n\r\n //AMD.\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () { return Big; });\r\n\r\n // Node and other CommonJS-like environments that support module.exports.\r\n } else if (typeof module !== 'undefined' && module.exports) {\r\n module.exports = Big;\r\n\r\n //Browser.\r\n } else {\r\n GLOBAL.Big = Big;\r\n }\r\n})(this);\r\n","'use strict';\n\nconst baseEncodeTables = {\n 26: 'abcdefghijklmnopqrstuvwxyz',\n 32: '123456789abcdefghjkmnpqrstuvwxyz', // no 0lio\n 36: '0123456789abcdefghijklmnopqrstuvwxyz',\n 49: 'abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ', // no lIO\n 52: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n 58: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ', // no 0lIO\n 62: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n 64: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_',\n};\n\nfunction encodeBufferToBase(buffer, base) {\n const encodeTable = baseEncodeTables[base];\n if (!encodeTable) {\n throw new Error('Unknown encoding base' + base);\n }\n\n const readLength = buffer.length;\n const Big = require('big.js');\n\n Big.RM = Big.DP = 0;\n let b = new Big(0);\n\n for (let i = readLength - 1; i >= 0; i--) {\n b = b.times(256).plus(buffer[i]);\n }\n\n let output = '';\n while (b.gt(0)) {\n output = encodeTable[b.mod(base)] + output;\n b = b.div(base);\n }\n\n Big.DP = 20;\n Big.RM = 1;\n\n return output;\n}\n\nfunction getHashDigest(buffer, hashType, digestType, maxLength) {\n hashType = hashType || 'md5';\n maxLength = maxLength || 9999;\n\n const hash = require('crypto').createHash(hashType);\n\n hash.update(buffer);\n\n if (\n digestType === 'base26' ||\n digestType === 'base32' ||\n digestType === 'base36' ||\n digestType === 'base49' ||\n digestType === 'base52' ||\n digestType === 'base58' ||\n digestType === 'base62' ||\n digestType === 'base64'\n ) {\n return encodeBufferToBase(hash.digest(), digestType.substr(4)).substr(\n 0,\n maxLength\n );\n } else {\n return hash.digest(digestType || 'hex').substr(0, maxLength);\n }\n}\n\nmodule.exports = getHashDigest;\n","module.exports = [\n \"🀄️\",\n \"🃏\",\n \"🅰️\",\n \"🅱️\",\n \"🅾️\",\n \"🅿️\",\n \"🆎\",\n \"🆑\",\n \"🆒\",\n \"🆓\",\n \"🆔\",\n \"🆕\",\n \"🆖\",\n \"🆗\",\n \"🆘\",\n \"🆙\",\n \"🆚\",\n \"🇦🇨\",\n \"🇦🇩\",\n \"🇦🇪\",\n \"🇦🇫\",\n \"🇦🇬\",\n \"🇦🇮\",\n \"🇦🇱\",\n \"🇦🇲\",\n \"🇦🇴\",\n \"🇦🇶\",\n \"🇦🇷\",\n \"🇦🇸\",\n \"🇦🇹\",\n \"🇦🇺\",\n \"🇦🇼\",\n \"🇦🇽\",\n \"🇦🇿\",\n \"🇦\",\n \"🇧🇦\",\n \"🇧🇧\",\n \"🇧🇩\",\n \"🇧🇪\",\n \"🇧🇫\",\n \"🇧🇬\",\n \"🇧🇭\",\n \"🇧🇮\",\n \"🇧🇯\",\n \"🇧🇱\",\n \"🇧🇲\",\n \"🇧🇳\",\n \"🇧🇴\",\n \"🇧🇶\",\n \"🇧🇷\",\n \"🇧🇸\",\n \"🇧🇹\",\n \"🇧🇻\",\n \"🇧🇼\",\n \"🇧🇾\",\n \"🇧🇿\",\n \"🇧\",\n \"🇨🇦\",\n \"🇨🇨\",\n \"🇨🇩\",\n \"🇨🇫\",\n \"🇨🇬\",\n \"🇨🇭\",\n \"🇨🇮\",\n \"🇨🇰\",\n \"🇨🇱\",\n \"🇨🇲\",\n \"🇨🇳\",\n \"🇨🇴\",\n \"🇨🇵\",\n \"🇨🇷\",\n \"🇨🇺\",\n \"🇨🇻\",\n \"🇨🇼\",\n \"🇨🇽\",\n \"🇨🇾\",\n \"🇨🇿\",\n \"🇨\",\n \"🇩🇪\",\n \"🇩🇬\",\n \"🇩🇯\",\n \"🇩🇰\",\n \"🇩🇲\",\n \"🇩🇴\",\n \"🇩🇿\",\n \"🇩\",\n \"🇪🇦\",\n \"🇪🇨\",\n \"🇪🇪\",\n \"🇪🇬\",\n \"🇪🇭\",\n \"🇪🇷\",\n \"🇪🇸\",\n \"🇪🇹\",\n \"🇪🇺\",\n \"🇪\",\n \"🇫🇮\",\n \"🇫🇯\",\n \"🇫🇰\",\n \"🇫🇲\",\n \"🇫🇴\",\n \"🇫🇷\",\n \"🇫\",\n \"🇬🇦\",\n \"🇬🇧\",\n \"🇬🇩\",\n \"🇬🇪\",\n \"🇬🇫\",\n \"🇬🇬\",\n \"🇬🇭\",\n \"🇬🇮\",\n \"🇬🇱\",\n \"🇬🇲\",\n \"🇬🇳\",\n \"🇬🇵\",\n \"🇬🇶\",\n \"🇬🇷\",\n \"🇬🇸\",\n \"🇬🇹\",\n \"🇬🇺\",\n \"🇬🇼\",\n \"🇬🇾\",\n \"🇬\",\n \"🇭🇰\",\n \"🇭🇲\",\n \"🇭🇳\",\n \"🇭🇷\",\n \"🇭🇹\",\n \"🇭🇺\",\n \"🇭\",\n \"🇮🇨\",\n \"🇮🇩\",\n \"🇮🇪\",\n \"🇮🇱\",\n \"🇮🇲\",\n \"🇮🇳\",\n \"🇮🇴\",\n \"🇮🇶\",\n \"🇮🇷\",\n \"🇮🇸\",\n \"🇮🇹\",\n \"🇮\",\n \"🇯🇪\",\n \"🇯🇲\",\n \"🇯🇴\",\n \"🇯🇵\",\n \"🇯\",\n \"🇰🇪\",\n \"🇰🇬\",\n \"🇰🇭\",\n \"🇰🇮\",\n \"🇰🇲\",\n \"🇰🇳\",\n \"🇰🇵\",\n \"🇰🇷\",\n \"🇰🇼\",\n \"🇰🇾\",\n \"🇰🇿\",\n \"🇰\",\n \"🇱🇦\",\n \"🇱🇧\",\n \"🇱🇨\",\n \"🇱🇮\",\n \"🇱🇰\",\n \"🇱🇷\",\n \"🇱🇸\",\n \"🇱🇹\",\n \"🇱🇺\",\n \"🇱🇻\",\n \"🇱🇾\",\n \"🇱\",\n \"🇲🇦\",\n \"🇲🇨\",\n \"🇲🇩\",\n \"🇲🇪\",\n \"🇲🇫\",\n \"🇲🇬\",\n \"🇲🇭\",\n \"🇲🇰\",\n \"🇲🇱\",\n \"🇲🇲\",\n \"🇲🇳\",\n \"🇲🇴\",\n \"🇲🇵\",\n \"🇲🇶\",\n \"🇲🇷\",\n \"🇲🇸\",\n \"🇲🇹\",\n \"🇲🇺\",\n \"🇲🇻\",\n \"🇲🇼\",\n \"🇲🇽\",\n \"🇲🇾\",\n \"🇲🇿\",\n \"🇲\",\n \"🇳🇦\",\n \"🇳🇨\",\n \"🇳🇪\",\n \"🇳🇫\",\n \"🇳🇬\",\n \"🇳🇮\",\n \"🇳🇱\",\n \"🇳🇴\",\n \"🇳🇵\",\n \"🇳🇷\",\n \"🇳🇺\",\n \"🇳🇿\",\n \"🇳\",\n \"🇴🇲\",\n \"🇴\",\n \"🇵🇦\",\n \"🇵🇪\",\n \"🇵🇫\",\n \"🇵🇬\",\n \"🇵🇭\",\n \"🇵🇰\",\n \"🇵🇱\",\n \"🇵🇲\",\n \"🇵🇳\",\n \"🇵🇷\",\n \"🇵🇸\",\n \"🇵🇹\",\n \"🇵🇼\",\n \"🇵🇾\",\n \"🇵\",\n \"🇶🇦\",\n \"🇶\",\n \"🇷🇪\",\n \"🇷🇴\",\n \"🇷🇸\",\n \"🇷🇺\",\n \"🇷🇼\",\n \"🇷\",\n \"🇸🇦\",\n \"🇸🇧\",\n \"🇸🇨\",\n \"🇸🇩\",\n \"🇸🇪\",\n \"🇸🇬\",\n \"🇸🇭\",\n \"🇸🇮\",\n \"🇸🇯\",\n \"🇸🇰\",\n \"🇸🇱\",\n \"🇸🇲\",\n \"🇸🇳\",\n \"🇸🇴\",\n \"🇸🇷\",\n \"🇸🇸\",\n \"🇸🇹\",\n \"🇸🇻\",\n \"🇸🇽\",\n \"🇸🇾\",\n \"🇸🇿\",\n \"🇸\",\n \"🇹🇦\",\n \"🇹🇨\",\n \"🇹🇩\",\n \"🇹🇫\",\n \"🇹🇬\",\n \"🇹🇭\",\n \"🇹🇯\",\n \"🇹🇰\",\n \"🇹🇱\",\n \"🇹🇲\",\n \"🇹🇳\",\n \"🇹🇴\",\n \"🇹🇷\",\n \"🇹🇹\",\n \"🇹🇻\",\n \"🇹🇼\",\n \"🇹🇿\",\n \"🇹\",\n \"🇺🇦\",\n \"🇺🇬\",\n \"🇺🇲\",\n \"🇺🇳\",\n \"🇺🇸\",\n \"🇺🇾\",\n \"🇺🇿\",\n \"🇺\",\n \"🇻🇦\",\n \"🇻🇨\",\n \"🇻🇪\",\n \"🇻🇬\",\n \"🇻🇮\",\n \"🇻🇳\",\n \"🇻🇺\",\n \"🇻\",\n \"🇼🇫\",\n \"🇼🇸\",\n \"🇼\",\n \"🇽🇰\",\n \"🇽\",\n \"🇾🇪\",\n \"🇾🇹\",\n \"🇾\",\n \"🇿🇦\",\n \"🇿🇲\",\n \"🇿🇼\",\n \"🇿\",\n \"🈁\",\n \"🈂️\",\n \"🈚️\",\n \"🈯️\",\n \"🈲\",\n \"🈳\",\n \"🈴\",\n \"🈵\",\n \"🈶\",\n \"🈷️\",\n \"🈸\",\n \"🈹\",\n \"🈺\",\n \"🉐\",\n \"🉑\",\n \"🌀\",\n \"🌁\",\n \"🌂\",\n \"🌃\",\n \"🌄\",\n \"🌅\",\n \"🌆\",\n \"🌇\",\n \"🌈\",\n \"🌉\",\n \"🌊\",\n \"🌋\",\n \"🌌\",\n \"🌍\",\n \"🌎\",\n \"🌏\",\n \"🌐\",\n \"🌑\",\n \"🌒\",\n \"🌓\",\n \"🌔\",\n \"🌕\",\n \"🌖\",\n \"🌗\",\n \"🌘\",\n \"🌙\",\n \"🌚\",\n \"🌛\",\n \"🌜\",\n \"🌝\",\n \"🌞\",\n \"🌟\",\n \"🌠\",\n \"🌡️\",\n \"🌤️\",\n \"🌥️\",\n \"🌦️\",\n \"🌧️\",\n \"🌨️\",\n \"🌩️\",\n \"🌪️\",\n \"🌫️\",\n \"🌬️\",\n \"🌭\",\n \"🌮\",\n \"🌯\",\n \"🌰\",\n \"🌱\",\n \"🌲\",\n \"🌳\",\n \"🌴\",\n \"🌵\",\n \"🌶️\",\n \"🌷\",\n \"🌸\",\n \"🌹\",\n \"🌺\",\n \"🌻\",\n \"🌼\",\n \"🌽\",\n \"🌾\",\n \"🌿\",\n \"🍀\",\n \"🍁\",\n \"🍂\",\n \"🍃\",\n \"🍄\",\n \"🍅\",\n \"🍆\",\n \"🍇\",\n \"🍈\",\n \"🍉\",\n \"🍊\",\n \"🍋\",\n \"🍌\",\n \"🍍\",\n \"🍎\",\n \"🍏\",\n \"🍐\",\n \"🍑\",\n \"🍒\",\n \"🍓\",\n \"🍔\",\n \"🍕\",\n \"🍖\",\n \"🍗\",\n \"🍘\",\n \"🍙\",\n \"🍚\",\n \"🍛\",\n \"🍜\",\n \"🍝\",\n \"🍞\",\n \"🍟\",\n \"🍠\",\n \"🍡\",\n \"🍢\",\n \"🍣\",\n \"🍤\",\n \"🍥\",\n \"🍦\",\n \"🍧\",\n \"🍨\",\n \"🍩\",\n \"🍪\",\n \"🍫\",\n \"🍬\",\n \"🍭\",\n \"🍮\",\n \"🍯\",\n \"🍰\",\n \"🍱\",\n \"🍲\",\n \"🍳\",\n \"🍴\",\n \"🍵\",\n \"🍶\",\n \"🍷\",\n \"🍸\",\n \"🍹\",\n \"🍺\",\n \"🍻\",\n \"🍼\",\n \"🍽️\",\n \"🍾\",\n \"🍿\",\n \"🎀\",\n \"🎁\",\n \"🎂\",\n \"🎃\",\n \"🎄\",\n \"🎅🏻\",\n \"🎅🏼\",\n \"🎅🏽\",\n \"🎅🏾\",\n \"🎅🏿\",\n \"🎅\",\n \"🎆\",\n \"🎇\",\n \"🎈\",\n \"🎉\",\n \"🎊\",\n \"🎋\",\n \"🎌\",\n \"🎍\",\n \"🎎\",\n \"🎏\",\n \"🎐\",\n \"🎑\",\n \"🎒\",\n \"🎓\",\n \"🎖️\",\n \"🎗️\",\n \"🎙️\",\n \"🎚️\",\n \"🎛️\",\n \"🎞️\",\n \"🎟️\",\n \"🎠\",\n \"🎡\",\n \"🎢\",\n \"🎣\",\n \"🎤\",\n \"🎥\",\n \"🎦\",\n \"🎧\",\n \"🎨\",\n \"🎩\",\n \"🎪\",\n \"🎫\",\n \"🎬\",\n \"🎭\",\n \"🎮\",\n \"🎯\",\n \"🎰\",\n \"🎱\",\n \"🎲\",\n \"🎳\",\n \"🎴\",\n \"🎵\",\n \"🎶\",\n \"🎷\",\n \"🎸\",\n \"🎹\",\n \"🎺\",\n \"🎻\",\n \"🎼\",\n \"🎽\",\n \"🎾\",\n \"🎿\",\n \"🏀\",\n \"🏁\",\n \"🏂🏻\",\n \"🏂🏼\",\n \"🏂🏽\",\n \"🏂🏾\",\n \"🏂🏿\",\n \"🏂\",\n \"🏃🏻♀️\",\n \"🏃🏻♂️\",\n \"🏃🏻\",\n \"🏃🏼♀️\",\n \"🏃🏼♂️\",\n \"🏃🏼\",\n \"🏃🏽♀️\",\n \"🏃🏽♂️\",\n \"🏃🏽\",\n \"🏃🏾♀️\",\n \"🏃🏾♂️\",\n \"🏃🏾\",\n \"🏃🏿♀️\",\n \"🏃🏿♂️\",\n \"🏃🏿\",\n \"🏃♀️\",\n \"🏃♂️\",\n \"🏃\",\n \"🏄🏻♀️\",\n \"🏄🏻♂️\",\n \"🏄🏻\",\n \"🏄🏼♀️\",\n \"🏄🏼♂️\",\n \"🏄🏼\",\n \"🏄🏽♀️\",\n \"🏄🏽♂️\",\n \"🏄🏽\",\n \"🏄🏾♀️\",\n \"🏄🏾♂️\",\n \"🏄🏾\",\n \"🏄🏿♀️\",\n \"🏄🏿♂️\",\n \"🏄🏿\",\n \"🏄♀️\",\n \"🏄♂️\",\n \"🏄\",\n \"🏅\",\n \"🏆\",\n \"🏇🏻\",\n \"🏇🏼\",\n \"🏇🏽\",\n \"🏇🏾\",\n \"🏇🏿\",\n \"🏇\",\n \"🏈\",\n \"🏉\",\n \"🏊🏻♀️\",\n \"🏊🏻♂️\",\n \"🏊🏻\",\n \"🏊🏼♀️\",\n \"🏊🏼♂️\",\n \"🏊🏼\",\n \"🏊🏽♀️\",\n \"🏊🏽♂️\",\n \"🏊🏽\",\n \"🏊🏾♀️\",\n \"🏊🏾♂️\",\n \"🏊🏾\",\n \"🏊🏿♀️\",\n \"🏊🏿♂️\",\n \"🏊🏿\",\n \"🏊♀️\",\n \"🏊♂️\",\n \"🏊\",\n \"🏋🏻♀️\",\n \"🏋🏻♂️\",\n \"🏋🏻\",\n \"🏋🏼♀️\",\n \"🏋🏼♂️\",\n \"🏋🏼\",\n \"🏋🏽♀️\",\n \"🏋🏽♂️\",\n \"🏋🏽\",\n \"🏋🏾♀️\",\n \"🏋🏾♂️\",\n \"🏋🏾\",\n \"🏋🏿♀️\",\n \"🏋🏿♂️\",\n \"🏋🏿\",\n \"🏋️♀️\",\n \"🏋️♂️\",\n \"🏋️\",\n \"🏌🏻♀️\",\n \"🏌🏻♂️\",\n \"🏌🏻\",\n \"🏌🏼♀️\",\n \"🏌🏼♂️\",\n \"🏌🏼\",\n \"🏌🏽♀️\",\n \"🏌🏽♂️\",\n \"🏌🏽\",\n \"🏌🏾♀️\",\n \"🏌🏾♂️\",\n \"🏌🏾\",\n \"🏌🏿♀️\",\n \"🏌🏿♂️\",\n \"🏌🏿\",\n \"🏌️♀️\",\n \"🏌️♂️\",\n \"🏌️\",\n \"🏍️\",\n \"🏎️\",\n \"🏏\",\n \"🏐\",\n \"🏑\",\n \"🏒\",\n \"🏓\",\n \"🏔️\",\n \"🏕️\",\n \"🏖️\",\n \"🏗️\",\n \"🏘️\",\n \"🏙️\",\n \"🏚️\",\n \"🏛️\",\n \"🏜️\",\n \"🏝️\",\n \"🏞️\",\n \"🏟️\",\n \"🏠\",\n \"🏡\",\n \"🏢\",\n \"🏣\",\n \"🏤\",\n \"🏥\",\n \"🏦\",\n \"🏧\",\n \"🏨\",\n \"🏩\",\n \"🏪\",\n \"🏫\",\n \"🏬\",\n \"🏭\",\n \"🏮\",\n \"🏯\",\n \"🏰\",\n \"🏳️🌈\",\n \"🏳️\",\n \"🏴☠️\",\n \"🏴\",\n \"🏴\",\n \"🏴\",\n \"🏴\",\n \"🏵️\",\n \"🏷️\",\n \"🏸\",\n \"🏹\",\n \"🏺\",\n \"🏻\",\n \"🏼\",\n \"🏽\",\n \"🏾\",\n \"🏿\",\n \"🐀\",\n \"🐁\",\n \"🐂\",\n \"🐃\",\n \"🐄\",\n \"🐅\",\n \"🐆\",\n \"🐇\",\n \"🐈\",\n \"🐉\",\n \"🐊\",\n \"🐋\",\n \"🐌\",\n \"🐍\",\n \"🐎\",\n \"🐏\",\n \"🐐\",\n \"🐑\",\n \"🐒\",\n \"🐓\",\n \"🐔\",\n \"🐕🦺\",\n \"🐕\",\n \"🐖\",\n \"🐗\",\n \"🐘\",\n \"🐙\",\n \"🐚\",\n \"🐛\",\n \"🐜\",\n \"🐝\",\n \"🐞\",\n \"🐟\",\n \"🐠\",\n \"🐡\",\n \"🐢\",\n \"🐣\",\n \"🐤\",\n \"🐥\",\n \"🐦\",\n \"🐧\",\n \"🐨\",\n \"🐩\",\n \"🐪\",\n \"🐫\",\n \"🐬\",\n \"🐭\",\n \"🐮\",\n \"🐯\",\n \"🐰\",\n \"🐱\",\n \"🐲\",\n \"🐳\",\n \"🐴\",\n \"🐵\",\n \"🐶\",\n \"🐷\",\n \"🐸\",\n \"🐹\",\n \"🐺\",\n \"🐻\",\n \"🐼\",\n \"🐽\",\n \"🐾\",\n \"🐿️\",\n \"👀\",\n \"👁🗨\",\n \"👁️\",\n \"👂🏻\",\n \"👂🏼\",\n \"👂🏽\",\n \"👂🏾\",\n \"👂🏿\",\n \"👂\",\n \"👃🏻\",\n \"👃🏼\",\n \"👃🏽\",\n \"👃🏾\",\n \"👃🏿\",\n \"👃\",\n \"👄\",\n \"👅\",\n \"👆🏻\",\n \"👆🏼\",\n \"👆🏽\",\n \"👆🏾\",\n \"👆🏿\",\n \"👆\",\n \"👇🏻\",\n \"👇🏼\",\n \"👇🏽\",\n \"👇🏾\",\n \"👇🏿\",\n \"👇\",\n \"👈🏻\",\n \"👈🏼\",\n \"👈🏽\",\n \"👈🏾\",\n \"👈🏿\",\n \"👈\",\n \"👉🏻\",\n \"👉🏼\",\n \"👉🏽\",\n \"👉🏾\",\n \"👉🏿\",\n \"👉\",\n \"👊🏻\",\n \"👊🏼\",\n \"👊🏽\",\n \"👊🏾\",\n \"👊🏿\",\n \"👊\",\n \"👋🏻\",\n \"👋🏼\",\n \"👋🏽\",\n \"👋🏾\",\n \"👋🏿\",\n \"👋\",\n \"👌🏻\",\n \"👌🏼\",\n \"👌🏽\",\n \"👌🏾\",\n \"👌🏿\",\n \"👌\",\n \"👍🏻\",\n \"👍🏼\",\n \"👍🏽\",\n \"👍🏾\",\n \"👍🏿\",\n \"👍\",\n \"👎🏻\",\n \"👎🏼\",\n \"👎🏽\",\n \"👎🏾\",\n \"👎🏿\",\n \"👎\",\n \"👏🏻\",\n \"👏🏼\",\n \"👏🏽\",\n \"👏🏾\",\n \"👏🏿\",\n \"👏\",\n \"👐🏻\",\n \"👐🏼\",\n \"👐🏽\",\n \"👐🏾\",\n \"👐🏿\",\n \"👐\",\n \"👑\",\n \"👒\",\n \"👓\",\n \"👔\",\n \"👕\",\n \"👖\",\n \"👗\",\n \"👘\",\n \"👙\",\n \"👚\",\n \"👛\",\n \"👜\",\n \"👝\",\n \"👞\",\n \"👟\",\n \"👠\",\n \"👡\",\n \"👢\",\n \"👣\",\n \"👤\",\n \"👥\",\n \"👦🏻\",\n \"👦🏼\",\n \"👦🏽\",\n \"👦🏾\",\n \"👦🏿\",\n \"👦\",\n \"👧🏻\",\n \"👧🏼\",\n \"👧🏽\",\n \"👧🏾\",\n \"👧🏿\",\n \"👧\",\n \"👨🏻🌾\",\n \"👨🏻🍳\",\n \"👨🏻🎓\",\n \"👨🏻🎤\",\n \"👨🏻🎨\",\n \"👨🏻🏫\",\n \"👨🏻🏭\",\n \"👨🏻💻\",\n \"👨🏻💼\",\n \"👨🏻🔧\",\n \"👨🏻🔬\",\n \"👨🏻🚀\",\n \"👨🏻🚒\",\n \"👨🏻🦯\",\n \"👨🏻🦰\",\n \"👨🏻🦱\",\n \"👨🏻🦲\",\n \"👨🏻🦳\",\n \"👨🏻🦼\",\n \"👨🏻🦽\",\n \"👨🏻⚕️\",\n \"👨🏻⚖️\",\n \"👨🏻✈️\",\n \"👨🏻\",\n \"👨🏼🌾\",\n \"👨🏼🍳\",\n \"👨🏼🎓\",\n \"👨🏼🎤\",\n \"👨🏼🎨\",\n \"👨🏼🏫\",\n \"👨🏼🏭\",\n \"👨🏼💻\",\n \"👨🏼💼\",\n \"👨🏼🔧\",\n \"👨🏼🔬\",\n \"👨🏼🚀\",\n \"👨🏼🚒\",\n \"👨🏼🤝👨🏻\",\n \"👨🏼🦯\",\n \"👨🏼🦰\",\n \"👨🏼🦱\",\n \"👨🏼🦲\",\n \"👨🏼🦳\",\n \"👨🏼🦼\",\n \"👨🏼🦽\",\n \"👨🏼⚕️\",\n \"👨🏼⚖️\",\n \"👨🏼✈️\",\n \"👨🏼\",\n \"👨🏽🌾\",\n \"👨🏽🍳\",\n \"👨🏽🎓\",\n \"👨🏽🎤\",\n \"👨🏽🎨\",\n \"👨🏽🏫\",\n \"👨🏽🏭\",\n \"👨🏽💻\",\n \"👨🏽💼\",\n \"👨🏽🔧\",\n \"👨🏽🔬\",\n \"👨🏽🚀\",\n \"👨🏽🚒\",\n \"👨🏽🤝👨🏻\",\n \"👨🏽🤝👨🏼\",\n \"👨🏽🦯\",\n \"👨🏽🦰\",\n \"👨🏽🦱\",\n \"👨🏽🦲\",\n \"👨🏽🦳\",\n \"👨🏽🦼\",\n \"👨🏽🦽\",\n \"👨🏽⚕️\",\n \"👨🏽⚖️\",\n \"👨🏽✈️\",\n \"👨🏽\",\n \"👨🏾🌾\",\n \"👨🏾🍳\",\n \"👨🏾🎓\",\n \"👨🏾🎤\",\n \"👨🏾🎨\",\n \"👨🏾🏫\",\n \"👨🏾🏭\",\n \"👨🏾💻\",\n \"👨🏾💼\",\n \"👨🏾🔧\",\n \"👨🏾🔬\",\n \"👨🏾🚀\",\n \"👨🏾🚒\",\n \"👨🏾🤝👨🏻\",\n \"👨🏾🤝👨🏼\",\n \"👨🏾🤝👨🏽\",\n \"👨🏾🦯\",\n \"👨🏾🦰\",\n \"👨🏾🦱\",\n \"👨🏾🦲\",\n \"👨🏾🦳\",\n \"👨🏾🦼\",\n \"👨🏾🦽\",\n \"👨🏾⚕️\",\n \"👨🏾⚖️\",\n \"👨🏾✈️\",\n \"👨🏾\",\n \"👨🏿🌾\",\n \"👨🏿🍳\",\n \"👨🏿🎓\",\n \"👨🏿🎤\",\n \"👨🏿🎨\",\n \"👨🏿🏫\",\n \"👨🏿🏭\",\n \"👨🏿💻\",\n \"👨🏿💼\",\n \"👨🏿🔧\",\n \"👨🏿🔬\",\n \"👨🏿🚀\",\n \"👨🏿🚒\",\n \"👨🏿🤝👨🏻\",\n \"👨🏿🤝👨🏼\",\n \"👨🏿🤝👨🏽\",\n \"👨🏿🤝👨🏾\",\n \"👨🏿🦯\",\n \"👨🏿🦰\",\n \"👨🏿🦱\",\n \"👨🏿🦲\",\n \"👨🏿🦳\",\n \"👨🏿🦼\",\n \"👨🏿🦽\",\n \"👨🏿⚕️\",\n \"👨🏿⚖️\",\n \"👨🏿✈️\",\n \"👨🏿\",\n \"👨🌾\",\n \"👨🍳\",\n \"👨🎓\",\n \"👨🎤\",\n \"👨🎨\",\n \"👨🏫\",\n \"👨🏭\",\n \"👨👦👦\",\n \"👨👦\",\n \"👨👧👦\",\n \"👨👧👧\",\n \"👨👧\",\n \"👨👨👦👦\",\n \"👨👨👦\",\n \"👨👨👧👦\",\n \"👨👨👧👧\",\n \"👨👨👧\",\n \"👨👩👦👦\",\n \"👨👩👦\",\n \"👨👩👧👦\",\n \"👨👩👧👧\",\n \"👨👩👧\",\n \"👨💻\",\n \"👨💼\",\n \"👨🔧\",\n \"👨🔬\",\n \"👨🚀\",\n \"👨🚒\",\n \"👨🦯\",\n \"👨🦰\",\n \"👨🦱\",\n \"👨🦲\",\n \"👨🦳\",\n \"👨🦼\",\n \"👨🦽\",\n \"👨⚕️\",\n \"👨⚖️\",\n \"👨✈️\",\n \"👨❤️👨\",\n \"👨❤️💋👨\",\n \"👨\",\n \"👩🏻🌾\",\n \"👩🏻🍳\",\n \"👩🏻🎓\",\n \"👩🏻🎤\",\n \"👩🏻🎨\",\n \"👩🏻🏫\",\n \"👩🏻🏭\",\n \"👩🏻💻\",\n \"👩🏻💼\",\n \"👩🏻🔧\",\n \"👩🏻🔬\",\n \"👩🏻🚀\",\n \"👩🏻🚒\",\n \"👩🏻🤝👨🏼\",\n \"👩🏻🤝👨🏽\",\n \"👩🏻🤝👨🏾\",\n \"👩🏻🤝👨🏿\",\n \"👩🏻🦯\",\n \"👩🏻🦰\",\n \"👩🏻🦱\",\n \"👩🏻🦲\",\n \"👩🏻🦳\",\n \"👩🏻🦼\",\n \"👩🏻🦽\",\n \"👩🏻⚕️\",\n \"👩🏻⚖️\",\n \"👩🏻✈️\",\n \"👩🏻\",\n \"👩🏼🌾\",\n \"👩🏼🍳\",\n \"👩🏼🎓\",\n \"👩🏼🎤\",\n \"👩🏼🎨\",\n \"👩🏼🏫\",\n \"👩🏼🏭\",\n \"👩🏼💻\",\n \"👩🏼💼\",\n \"👩🏼🔧\",\n \"👩🏼🔬\",\n \"👩🏼🚀\",\n \"👩🏼🚒\",\n \"👩🏼🤝👨🏻\",\n \"👩🏼🤝👨🏽\",\n \"👩🏼🤝👨🏾\",\n \"👩🏼🤝👨🏿\",\n \"👩🏼🤝👩🏻\",\n \"👩🏼🦯\",\n \"👩🏼🦰\",\n \"👩🏼🦱\",\n \"👩🏼🦲\",\n \"👩🏼🦳\",\n \"👩🏼🦼\",\n \"👩🏼🦽\",\n \"👩🏼⚕️\",\n \"👩🏼⚖️\",\n \"👩🏼✈️\",\n \"👩🏼\",\n \"👩🏽🌾\",\n \"👩🏽🍳\",\n \"👩🏽🎓\",\n \"👩🏽🎤\",\n \"👩🏽🎨\",\n \"👩🏽🏫\",\n \"👩🏽🏭\",\n \"👩🏽💻\",\n \"👩🏽💼\",\n \"👩🏽🔧\",\n \"👩🏽🔬\",\n \"👩🏽🚀\",\n \"👩🏽🚒\",\n \"👩🏽🤝👨🏻\",\n \"👩🏽🤝👨🏼\",\n \"👩🏽🤝👨🏾\",\n \"👩🏽🤝👨🏿\",\n \"👩🏽🤝👩🏻\",\n \"👩🏽🤝👩🏼\",\n \"👩🏽🦯\",\n \"👩🏽🦰\",\n \"👩🏽🦱\",\n \"👩🏽🦲\",\n \"👩🏽🦳\",\n \"👩🏽🦼\",\n \"👩🏽🦽\",\n \"👩🏽⚕️\",\n \"👩🏽⚖️\",\n \"👩🏽✈️\",\n \"👩🏽\",\n \"👩🏾🌾\",\n \"👩🏾🍳\",\n \"👩🏾🎓\",\n \"👩🏾🎤\",\n \"👩🏾🎨\",\n \"👩🏾🏫\",\n \"👩🏾🏭\",\n \"👩🏾💻\",\n \"👩🏾💼\",\n \"👩🏾🔧\",\n \"👩🏾🔬\",\n \"👩🏾🚀\",\n \"👩🏾🚒\",\n \"👩🏾🤝👨🏻\",\n \"👩🏾🤝👨🏼\",\n \"👩🏾🤝👨🏽\",\n \"👩🏾🤝👨🏿\",\n \"👩🏾🤝👩🏻\",\n \"👩🏾🤝👩🏼\",\n \"👩🏾🤝👩🏽\",\n \"👩🏾🦯\",\n \"👩🏾🦰\",\n \"👩🏾🦱\",\n \"👩🏾🦲\",\n \"👩🏾🦳\",\n \"👩🏾🦼\",\n \"👩🏾🦽\",\n \"👩🏾⚕️\",\n \"👩🏾⚖️\",\n \"👩🏾✈️\",\n \"👩🏾\",\n \"👩🏿🌾\",\n \"👩🏿🍳\",\n \"👩🏿🎓\",\n \"👩🏿🎤\",\n \"👩🏿🎨\",\n \"👩🏿🏫\",\n \"👩🏿🏭\",\n \"👩🏿💻\",\n \"👩🏿💼\",\n \"👩🏿🔧\",\n \"👩🏿🔬\",\n \"👩🏿🚀\",\n \"👩🏿🚒\",\n \"👩🏿🤝👨🏻\",\n \"👩🏿🤝👨🏼\",\n \"👩🏿🤝👨🏽\",\n \"👩🏿🤝👨🏾\",\n \"👩🏿🤝👩🏻\",\n \"👩🏿🤝👩🏼\",\n \"👩🏿🤝👩🏽\",\n \"👩🏿🤝👩🏾\",\n \"👩🏿🦯\",\n \"👩🏿🦰\",\n \"👩🏿🦱\",\n \"👩🏿🦲\",\n \"👩🏿🦳\",\n \"👩🏿🦼\",\n \"👩🏿🦽\",\n \"👩🏿⚕️\",\n \"👩🏿⚖️\",\n \"👩🏿✈️\",\n \"👩🏿\",\n \"👩🌾\",\n \"👩🍳\",\n \"👩🎓\",\n \"👩🎤\",\n \"👩🎨\",\n \"👩🏫\",\n \"👩🏭\",\n \"👩👦👦\",\n \"👩👦\",\n \"👩👧👦\",\n \"👩👧👧\",\n \"👩👧\",\n \"👩👩👦👦\",\n \"👩👩👦\",\n \"👩👩👧👦\",\n \"👩👩👧👧\",\n \"👩👩👧\",\n \"👩💻\",\n \"👩💼\",\n \"👩🔧\",\n \"👩🔬\",\n \"👩🚀\",\n \"👩🚒\",\n \"👩🦯\",\n \"👩🦰\",\n \"👩🦱\",\n \"👩🦲\",\n \"👩🦳\",\n \"👩🦼\",\n \"👩🦽\",\n \"👩⚕️\",\n \"👩⚖️\",\n \"👩✈️\",\n \"👩❤️👨\",\n \"👩❤️👩\",\n \"👩❤️💋👨\",\n \"👩❤️💋👩\",\n \"👩\",\n \"👪\",\n \"👫🏻\",\n \"👫🏼\",\n \"👫🏽\",\n \"👫🏾\",\n \"👫🏿\",\n \"👫\",\n \"👬🏻\",\n \"👬🏼\",\n \"👬🏽\",\n \"👬🏾\",\n \"👬🏿\",\n \"👬\",\n \"👭🏻\",\n \"👭🏼\",\n \"👭🏽\",\n \"👭🏾\",\n \"👭🏿\",\n \"👭\",\n \"👮🏻♀️\",\n \"👮🏻♂️\",\n \"👮🏻\",\n \"👮🏼♀️\",\n \"👮🏼♂️\",\n \"👮🏼\",\n \"👮🏽♀️\",\n \"👮🏽♂️\",\n \"👮🏽\",\n \"👮🏾♀️\",\n \"👮🏾♂️\",\n \"👮🏾\",\n \"👮🏿♀️\",\n \"👮🏿♂️\",\n \"👮🏿\",\n \"👮♀️\",\n \"👮♂️\",\n \"👮\",\n \"👯♀️\",\n \"👯♂️\",\n \"👯\",\n \"👰🏻\",\n \"👰🏼\",\n \"👰🏽\",\n \"👰🏾\",\n \"👰🏿\",\n \"👰\",\n \"👱🏻♀️\",\n \"👱🏻♂️\",\n \"👱🏻\",\n \"👱🏼♀️\",\n \"👱🏼♂️\",\n \"👱🏼\",\n \"👱🏽♀️\",\n \"👱🏽♂️\",\n \"👱🏽\",\n \"👱🏾♀️\",\n \"👱🏾♂️\",\n \"👱🏾\",\n \"👱🏿♀️\",\n \"👱🏿♂️\",\n \"👱🏿\",\n \"👱♀️\",\n \"👱♂️\",\n \"👱\",\n \"👲🏻\",\n \"👲🏼\",\n \"👲🏽\",\n \"👲🏾\",\n \"👲🏿\",\n \"👲\",\n \"👳🏻♀️\",\n \"👳🏻♂️\",\n \"👳🏻\",\n \"👳🏼♀️\",\n \"👳🏼♂️\",\n \"👳🏼\",\n \"👳🏽♀️\",\n \"👳🏽♂️\",\n \"👳🏽\",\n \"👳🏾♀️\",\n \"👳🏾♂️\",\n \"👳🏾\",\n \"👳🏿♀️\",\n \"👳🏿♂️\",\n \"👳🏿\",\n \"👳♀️\",\n \"👳♂️\",\n \"👳\",\n \"👴🏻\",\n \"👴🏼\",\n \"👴🏽\",\n \"👴🏾\",\n \"👴🏿\",\n \"👴\",\n \"👵🏻\",\n \"👵🏼\",\n \"👵🏽\",\n \"👵🏾\",\n \"👵🏿\",\n \"👵\",\n \"👶🏻\",\n \"👶🏼\",\n \"👶🏽\",\n \"👶🏾\",\n \"👶🏿\",\n \"👶\",\n \"👷🏻♀️\",\n \"👷🏻♂️\",\n \"👷🏻\",\n \"👷🏼♀️\",\n \"👷🏼♂️\",\n \"👷🏼\",\n \"👷🏽♀️\",\n \"👷🏽♂️\",\n \"👷🏽\",\n \"👷🏾♀️\",\n \"👷🏾♂️\",\n \"👷🏾\",\n \"👷🏿♀️\",\n \"👷🏿♂️\",\n \"👷🏿\",\n \"👷♀️\",\n \"👷♂️\",\n \"👷\",\n \"👸🏻\",\n \"👸🏼\",\n \"👸🏽\",\n \"👸🏾\",\n \"👸🏿\",\n \"👸\",\n \"👹\",\n \"👺\",\n \"👻\",\n \"👼🏻\",\n \"👼🏼\",\n \"👼🏽\",\n \"👼🏾\",\n \"👼🏿\",\n \"👼\",\n \"👽\",\n \"👾\",\n \"👿\",\n \"💀\",\n \"💁🏻♀️\",\n \"💁🏻♂️\",\n \"💁🏻\",\n \"💁🏼♀️\",\n \"💁🏼♂️\",\n \"💁🏼\",\n \"💁🏽♀️\",\n \"💁🏽♂️\",\n \"💁🏽\",\n \"💁🏾♀️\",\n \"💁🏾♂️\",\n \"💁🏾\",\n \"💁🏿♀️\",\n \"💁🏿♂️\",\n \"💁🏿\",\n \"💁♀️\",\n \"💁♂️\",\n \"💁\",\n \"💂🏻♀️\",\n \"💂🏻♂️\",\n \"💂🏻\",\n \"💂🏼♀️\",\n \"💂🏼♂️\",\n \"💂🏼\",\n \"💂🏽♀️\",\n \"💂🏽♂️\",\n \"💂🏽\",\n \"💂🏾♀️\",\n \"💂🏾♂️\",\n \"💂🏾\",\n \"💂🏿♀️\",\n \"💂🏿♂️\",\n \"💂🏿\",\n \"💂♀️\",\n \"💂♂️\",\n \"💂\",\n \"💃🏻\",\n \"💃🏼\",\n \"💃🏽\",\n \"💃🏾\",\n \"💃🏿\",\n \"💃\",\n \"💄\",\n \"💅🏻\",\n \"💅🏼\",\n \"💅🏽\",\n \"💅🏾\",\n \"💅🏿\",\n \"💅\",\n \"💆🏻♀️\",\n \"💆🏻♂️\",\n \"💆🏻\",\n \"💆🏼♀️\",\n \"💆🏼♂️\",\n \"💆🏼\",\n \"💆🏽♀️\",\n \"💆🏽♂️\",\n \"💆🏽\",\n \"💆🏾♀️\",\n \"💆🏾♂️\",\n \"💆🏾\",\n \"💆🏿♀️\",\n \"💆🏿♂️\",\n \"💆🏿\",\n \"💆♀️\",\n \"💆♂️\",\n \"💆\",\n \"💇🏻♀️\",\n \"💇🏻♂️\",\n \"💇🏻\",\n \"💇🏼♀️\",\n \"💇🏼♂️\",\n \"💇🏼\",\n \"💇🏽♀️\",\n \"💇🏽♂️\",\n \"💇🏽\",\n \"💇🏾♀️\",\n \"💇🏾♂️\",\n \"💇🏾\",\n \"💇🏿♀️\",\n \"💇🏿♂️\",\n \"💇🏿\",\n \"💇♀️\",\n \"💇♂️\",\n \"💇\",\n \"💈\",\n \"💉\",\n \"💊\",\n \"💋\",\n \"💌\",\n \"💍\",\n \"💎\",\n \"💏\",\n \"💐\",\n \"💑\",\n \"💒\",\n \"💓\",\n \"💔\",\n \"💕\",\n \"💖\",\n \"💗\",\n \"💘\",\n \"💙\",\n \"💚\",\n \"💛\",\n \"💜\",\n \"💝\",\n \"💞\",\n \"💟\",\n \"💠\",\n \"💡\",\n \"💢\",\n \"💣\",\n \"💤\",\n \"💥\",\n \"💦\",\n \"💧\",\n \"💨\",\n \"💩\",\n \"💪🏻\",\n \"💪🏼\",\n \"💪🏽\",\n \"💪🏾\",\n \"💪🏿\",\n \"💪\",\n \"💫\",\n \"💬\",\n \"💭\",\n \"💮\",\n \"💯\",\n \"💰\",\n \"💱\",\n \"💲\",\n \"💳\",\n \"💴\",\n \"💵\",\n \"💶\",\n \"💷\",\n \"💸\",\n \"💹\",\n \"💺\",\n \"💻\",\n \"💼\",\n \"💽\",\n \"💾\",\n \"💿\",\n \"📀\",\n \"📁\",\n \"📂\",\n \"📃\",\n \"📄\",\n \"📅\",\n \"📆\",\n \"📇\",\n \"📈\",\n \"📉\",\n \"📊\",\n \"📋\",\n \"📌\",\n \"📍\",\n \"📎\",\n \"📏\",\n \"📐\",\n \"📑\",\n \"📒\",\n \"📓\",\n \"📔\",\n \"📕\",\n \"📖\",\n \"📗\",\n \"📘\",\n \"📙\",\n \"📚\",\n \"📛\",\n \"📜\",\n \"📝\",\n \"📞\",\n \"📟\",\n \"📠\",\n \"📡\",\n \"📢\",\n \"📣\",\n \"📤\",\n \"📥\",\n \"📦\",\n \"📧\",\n \"📨\",\n \"📩\",\n \"📪\",\n \"📫\",\n \"📬\",\n \"📭\",\n \"📮\",\n \"📯\",\n \"📰\",\n \"📱\",\n \"📲\",\n \"📳\",\n \"📴\",\n \"📵\",\n \"📶\",\n \"📷\",\n \"📸\",\n \"📹\",\n \"📺\",\n \"📻\",\n \"📼\",\n \"📽️\",\n \"📿\",\n \"🔀\",\n \"🔁\",\n \"🔂\",\n \"🔃\",\n \"🔄\",\n \"🔅\",\n \"🔆\",\n \"🔇\",\n \"🔈\",\n \"🔉\",\n \"🔊\",\n \"🔋\",\n \"🔌\",\n \"🔍\",\n \"🔎\",\n \"🔏\",\n \"🔐\",\n \"🔑\",\n \"🔒\",\n \"🔓\",\n \"🔔\",\n \"🔕\",\n \"🔖\",\n \"🔗\",\n \"🔘\",\n \"🔙\",\n \"🔚\",\n \"🔛\",\n \"🔜\",\n \"🔝\",\n \"🔞\",\n \"🔟\",\n \"🔠\",\n \"🔡\",\n \"🔢\",\n \"🔣\",\n \"🔤\",\n \"🔥\",\n \"🔦\",\n \"🔧\",\n \"🔨\",\n \"🔩\",\n \"🔪\",\n \"🔫\",\n \"🔬\",\n \"🔭\",\n \"🔮\",\n \"🔯\",\n \"🔰\",\n \"🔱\",\n \"🔲\",\n \"🔳\",\n \"🔴\",\n \"🔵\",\n \"🔶\",\n \"🔷\",\n \"🔸\",\n \"🔹\",\n \"🔺\",\n \"🔻\",\n \"🔼\",\n \"🔽\",\n \"🕉️\",\n \"🕊️\",\n \"🕋\",\n \"🕌\",\n \"🕍\",\n \"🕎\",\n \"🕐\",\n \"🕑\",\n \"🕒\",\n \"🕓\",\n \"🕔\",\n \"🕕\",\n \"🕖\",\n \"🕗\",\n \"🕘\",\n \"🕙\",\n \"🕚\",\n \"🕛\",\n \"🕜\",\n \"🕝\",\n \"🕞\",\n \"🕟\",\n \"🕠\",\n \"🕡\",\n \"🕢\",\n \"🕣\",\n \"🕤\",\n \"🕥\",\n \"🕦\",\n \"🕧\",\n \"🕯️\",\n \"🕰️\",\n \"🕳️\",\n \"🕴🏻♀️\",\n \"🕴🏻♂️\",\n \"🕴🏻\",\n \"🕴🏼♀️\",\n \"🕴🏼♂️\",\n \"🕴🏼\",\n \"🕴🏽♀️\",\n \"🕴🏽♂️\",\n \"🕴🏽\",\n \"🕴🏾♀️\",\n \"🕴🏾♂️\",\n \"🕴🏾\",\n \"🕴🏿♀️\",\n \"🕴🏿♂️\",\n \"🕴🏿\",\n \"🕴️♀️\",\n \"🕴️♂️\",\n \"🕴️\",\n \"🕵🏻♀️\",\n \"🕵🏻♂️\",\n \"🕵🏻\",\n \"🕵🏼♀️\",\n \"🕵🏼♂️\",\n \"🕵🏼\",\n \"🕵🏽♀️\",\n \"🕵🏽♂️\",\n \"🕵🏽\",\n \"🕵🏾♀️\",\n \"🕵🏾♂️\",\n \"🕵🏾\",\n \"🕵🏿♀️\",\n \"🕵🏿♂️\",\n \"🕵🏿\",\n \"🕵️♀️\",\n \"🕵️♂️\",\n \"🕵️\",\n \"🕶️\",\n \"🕷️\",\n \"🕸️\",\n \"🕹️\",\n \"🕺🏻\",\n \"🕺🏼\",\n \"🕺🏽\",\n \"🕺🏾\",\n \"🕺🏿\",\n \"🕺\",\n \"🖇️\",\n \"🖊️\",\n \"🖋️\",\n \"🖌️\",\n \"🖍️\",\n \"🖐🏻\",\n \"🖐🏼\",\n \"🖐🏽\",\n \"🖐🏾\",\n \"🖐🏿\",\n \"🖐️\",\n \"🖕🏻\",\n \"🖕🏼\",\n \"🖕🏽\",\n \"🖕🏾\",\n \"🖕🏿\",\n \"🖕\",\n \"🖖🏻\",\n \"🖖🏼\",\n \"🖖🏽\",\n \"🖖🏾\",\n \"🖖🏿\",\n \"🖖\",\n \"🖤\",\n \"🖥️\",\n \"🖨️\",\n \"🖱️\",\n \"🖲️\",\n \"🖼️\",\n \"🗂️\",\n \"🗃️\",\n \"🗄️\",\n \"🗑️\",\n \"🗒️\",\n \"🗓️\",\n \"🗜️\",\n \"🗝️\",\n \"🗞️\",\n \"🗡️\",\n \"🗣️\",\n \"🗨️\",\n \"🗯️\",\n \"🗳️\",\n \"🗺️\",\n \"🗻\",\n \"🗼\",\n \"🗽\",\n \"🗾\",\n \"🗿\",\n \"😀\",\n \"😁\",\n \"😂\",\n \"😃\",\n \"😄\",\n \"😅\",\n \"😆\",\n \"😇\",\n \"😈\",\n \"😉\",\n \"😊\",\n \"😋\",\n \"😌\",\n \"😍\",\n \"😎\",\n \"😏\",\n \"😐\",\n \"😑\",\n \"😒\",\n \"😓\",\n \"😔\",\n \"😕\",\n \"😖\",\n \"😗\",\n \"😘\",\n \"😙\",\n \"😚\",\n \"😛\",\n \"😜\",\n \"😝\",\n \"😞\",\n \"😟\",\n \"😠\",\n \"😡\",\n \"😢\",\n \"😣\",\n \"😤\",\n \"😥\",\n \"😦\",\n \"😧\",\n \"😨\",\n \"😩\",\n \"😪\",\n \"😫\",\n \"😬\",\n \"😭\",\n \"😮\",\n \"😯\",\n \"😰\",\n \"😱\",\n \"😲\",\n \"😳\",\n \"😴\",\n \"😵\",\n \"😶\",\n \"😷\",\n \"😸\",\n \"😹\",\n \"😺\",\n \"😻\",\n \"😼\",\n \"😽\",\n \"😾\",\n \"😿\",\n \"🙀\",\n \"🙁\",\n \"🙂\",\n \"🙃\",\n \"🙄\",\n \"🙅🏻♀️\",\n \"🙅🏻♂️\",\n \"🙅🏻\",\n \"🙅🏼♀️\",\n \"🙅🏼♂️\",\n \"🙅🏼\",\n \"🙅🏽♀️\",\n \"🙅🏽♂️\",\n \"🙅🏽\",\n \"🙅🏾♀️\",\n \"🙅🏾♂️\",\n \"🙅🏾\",\n \"🙅🏿♀️\",\n \"🙅🏿♂️\",\n \"🙅🏿\",\n \"🙅♀️\",\n \"🙅♂️\",\n \"🙅\",\n \"🙆🏻♀️\",\n \"🙆🏻♂️\",\n \"🙆🏻\",\n \"🙆🏼♀️\",\n \"🙆🏼♂️\",\n \"🙆🏼\",\n \"🙆🏽♀️\",\n \"🙆🏽♂️\",\n \"🙆🏽\",\n \"🙆🏾♀️\",\n \"🙆🏾♂️\",\n \"🙆🏾\",\n \"🙆🏿♀️\",\n \"🙆🏿♂️\",\n \"🙆🏿\",\n \"🙆♀️\",\n \"🙆♂️\",\n \"🙆\",\n \"🙇🏻♀️\",\n \"🙇🏻♂️\",\n \"🙇🏻\",\n \"🙇🏼♀️\",\n \"🙇🏼♂️\",\n \"🙇🏼\",\n \"🙇🏽♀️\",\n \"🙇🏽♂️\",\n \"🙇🏽\",\n \"🙇🏾♀️\",\n \"🙇🏾♂️\",\n \"🙇🏾\",\n \"🙇🏿♀️\",\n \"🙇🏿♂️\",\n \"🙇🏿\",\n \"🙇♀️\",\n \"🙇♂️\",\n \"🙇\",\n \"🙈\",\n \"🙉\",\n \"🙊\",\n \"🙋🏻♀️\",\n \"🙋🏻♂️\",\n \"🙋🏻\",\n \"🙋🏼♀️\",\n \"🙋🏼♂️\",\n \"🙋🏼\",\n \"🙋🏽♀️\",\n \"🙋🏽♂️\",\n \"🙋🏽\",\n \"🙋🏾♀️\",\n \"🙋🏾♂️\",\n \"🙋🏾\",\n \"🙋🏿♀️\",\n \"🙋🏿♂️\",\n \"🙋🏿\",\n \"🙋♀️\",\n \"🙋♂️\",\n \"🙋\",\n \"🙌🏻\",\n \"🙌🏼\",\n \"🙌🏽\",\n \"🙌🏾\",\n \"🙌🏿\",\n \"🙌\",\n \"🙍🏻♀️\",\n \"🙍🏻♂️\",\n \"🙍🏻\",\n \"🙍🏼♀️\",\n \"🙍🏼♂️\",\n \"🙍🏼\",\n \"🙍🏽♀️\",\n \"🙍🏽♂️\",\n \"🙍🏽\",\n \"🙍🏾♀️\",\n \"🙍🏾♂️\",\n \"🙍🏾\",\n \"🙍🏿♀️\",\n \"🙍🏿♂️\",\n \"🙍🏿\",\n \"🙍♀️\",\n \"🙍♂️\",\n \"🙍\",\n \"🙎🏻♀️\",\n \"🙎🏻♂️\",\n \"🙎🏻\",\n \"🙎🏼♀️\",\n \"🙎🏼♂️\",\n \"🙎🏼\",\n \"🙎🏽♀️\",\n \"🙎🏽♂️\",\n \"🙎🏽\",\n \"🙎🏾♀️\",\n \"🙎🏾♂️\",\n \"🙎🏾\",\n \"🙎🏿♀️\",\n \"🙎🏿♂️\",\n \"🙎🏿\",\n \"🙎♀️\",\n \"🙎♂️\",\n \"🙎\",\n \"🙏🏻\",\n \"🙏🏼\",\n \"🙏🏽\",\n \"🙏🏾\",\n \"🙏🏿\",\n \"🙏\",\n \"🚀\",\n \"🚁\",\n \"🚂\",\n \"🚃\",\n \"🚄\",\n \"🚅\",\n \"🚆\",\n \"🚇\",\n \"🚈\",\n \"🚉\",\n \"🚊\",\n \"🚋\",\n \"🚌\",\n \"🚍\",\n \"🚎\",\n \"🚏\",\n \"🚐\",\n \"🚑\",\n \"🚒\",\n \"🚓\",\n \"🚔\",\n \"🚕\",\n \"🚖\",\n \"🚗\",\n \"🚘\",\n \"🚙\",\n \"🚚\",\n \"🚛\",\n \"🚜\",\n \"🚝\",\n \"🚞\",\n \"🚟\",\n \"🚠\",\n \"🚡\",\n \"🚢\",\n \"🚣🏻♀️\",\n \"🚣🏻♂️\",\n \"🚣🏻\",\n \"🚣🏼♀️\",\n \"🚣🏼♂️\",\n \"🚣🏼\",\n \"🚣🏽♀️\",\n \"🚣🏽♂️\",\n \"🚣🏽\",\n \"🚣🏾♀️\",\n \"🚣🏾♂️\",\n \"🚣🏾\",\n \"🚣🏿♀️\",\n \"🚣🏿♂️\",\n \"🚣🏿\",\n \"🚣♀️\",\n \"🚣♂️\",\n \"🚣\",\n \"🚤\",\n \"🚥\",\n \"🚦\",\n \"🚧\",\n \"🚨\",\n \"🚩\",\n \"🚪\",\n \"🚫\",\n \"🚬\",\n \"🚭\",\n \"🚮\",\n \"🚯\",\n \"🚰\",\n \"🚱\",\n \"🚲\",\n \"🚳\",\n \"🚴🏻♀️\",\n \"🚴🏻♂️\",\n \"🚴🏻\",\n \"🚴🏼♀️\",\n \"🚴🏼♂️\",\n \"🚴🏼\",\n \"🚴🏽♀️\",\n \"🚴🏽♂️\",\n \"🚴🏽\",\n \"🚴🏾♀️\",\n \"🚴🏾♂️\",\n \"🚴🏾\",\n \"🚴🏿♀️\",\n \"🚴🏿♂️\",\n \"🚴🏿\",\n \"🚴♀️\",\n \"🚴♂️\",\n \"🚴\",\n \"🚵🏻♀️\",\n \"🚵🏻♂️\",\n \"🚵🏻\",\n \"🚵🏼♀️\",\n \"🚵🏼♂️\",\n \"🚵🏼\",\n \"🚵🏽♀️\",\n \"🚵🏽♂️\",\n \"🚵🏽\",\n \"🚵🏾♀️\",\n \"🚵🏾♂️\",\n \"🚵🏾\",\n \"🚵🏿♀️\",\n \"🚵🏿♂️\",\n \"🚵🏿\",\n \"🚵♀️\",\n \"🚵♂️\",\n \"🚵\",\n \"🚶🏻♀️\",\n \"🚶🏻♂️\",\n \"🚶🏻\",\n \"🚶🏼♀️\",\n \"🚶🏼♂️\",\n \"🚶🏼\",\n \"🚶🏽♀️\",\n \"🚶🏽♂️\",\n \"🚶🏽\",\n \"🚶🏾♀️\",\n \"🚶🏾♂️\",\n \"🚶🏾\",\n \"🚶🏿♀️\",\n \"🚶🏿♂️\",\n \"🚶🏿\",\n \"🚶♀️\",\n \"🚶♂️\",\n \"🚶\",\n \"🚷\",\n \"🚸\",\n \"🚹\",\n \"🚺\",\n \"🚻\",\n \"🚼\",\n \"🚽\",\n \"🚾\",\n \"🚿\",\n \"🛀🏻\",\n \"🛀🏼\",\n \"🛀🏽\",\n \"🛀🏾\",\n \"🛀🏿\",\n \"🛀\",\n \"🛁\",\n \"🛂\",\n \"🛃\",\n \"🛄\",\n \"🛅\",\n \"🛋️\",\n \"🛌🏻\",\n \"🛌🏼\",\n \"🛌🏽\",\n \"🛌🏾\",\n \"🛌🏿\",\n \"🛌\",\n \"🛍️\",\n \"🛎️\",\n \"🛏️\",\n \"🛐\",\n \"🛑\",\n \"🛒\",\n \"🛕\",\n \"🛠️\",\n \"🛡️\",\n \"🛢️\",\n \"🛣️\",\n \"🛤️\",\n \"🛥️\",\n \"🛩️\",\n \"🛫\",\n \"🛬\",\n \"🛰️\",\n \"🛳️\",\n \"🛴\",\n \"🛵\",\n \"🛶\",\n \"🛷\",\n \"🛸\",\n \"🛹\",\n \"🛺\",\n \"🟠\",\n \"🟡\",\n \"🟢\",\n \"🟣\",\n \"🟤\",\n \"🟥\",\n \"🟦\",\n \"🟧\",\n \"🟨\",\n \"🟩\",\n \"🟪\",\n \"🟫\",\n \"🤍\",\n \"🤎\",\n \"🤏🏻\",\n \"🤏🏼\",\n \"🤏🏽\",\n \"🤏🏾\",\n \"🤏🏿\",\n \"🤏\",\n \"🤐\",\n \"🤑\",\n \"🤒\",\n \"🤓\",\n \"🤔\",\n \"🤕\",\n \"🤖\",\n \"🤗\",\n \"🤘🏻\",\n \"🤘🏼\",\n \"🤘🏽\",\n \"🤘🏾\",\n \"🤘🏿\",\n \"🤘\",\n \"🤙🏻\",\n \"🤙🏼\",\n \"🤙🏽\",\n \"🤙🏾\",\n \"🤙🏿\",\n \"🤙\",\n \"🤚🏻\",\n \"🤚🏼\",\n \"🤚🏽\",\n \"🤚🏾\",\n \"🤚🏿\",\n \"🤚\",\n \"🤛🏻\",\n \"🤛🏼\",\n \"🤛🏽\",\n \"🤛🏾\",\n \"🤛🏿\",\n \"🤛\",\n \"🤜🏻\",\n \"🤜🏼\",\n \"🤜🏽\",\n \"🤜🏾\",\n \"🤜🏿\",\n \"🤜\",\n \"🤝\",\n \"🤞🏻\",\n \"🤞🏼\",\n \"🤞🏽\",\n \"🤞🏾\",\n \"🤞🏿\",\n \"🤞\",\n \"🤟🏻\",\n \"🤟🏼\",\n \"🤟🏽\",\n \"🤟🏾\",\n \"🤟🏿\",\n \"🤟\",\n \"🤠\",\n \"🤡\",\n \"🤢\",\n \"🤣\",\n \"🤤\",\n \"🤥\",\n \"🤦🏻♀️\",\n \"🤦🏻♂️\",\n \"🤦🏻\",\n \"🤦🏼♀️\",\n \"🤦🏼♂️\",\n \"🤦🏼\",\n \"🤦🏽♀️\",\n \"🤦🏽♂️\",\n \"🤦🏽\",\n \"🤦🏾♀️\",\n \"🤦🏾♂️\",\n \"🤦🏾\",\n \"🤦🏿♀️\",\n \"🤦🏿♂️\",\n \"🤦🏿\",\n \"🤦♀️\",\n \"🤦♂️\",\n \"🤦\",\n \"🤧\",\n \"🤨\",\n \"🤩\",\n \"🤪\",\n \"🤫\",\n \"🤬\",\n \"🤭\",\n \"🤮\",\n \"🤯\",\n \"🤰🏻\",\n \"🤰🏼\",\n \"🤰🏽\",\n \"🤰🏾\",\n \"🤰🏿\",\n \"🤰\",\n \"🤱🏻\",\n \"🤱🏼\",\n \"🤱🏽\",\n \"🤱🏾\",\n \"🤱🏿\",\n \"🤱\",\n \"🤲🏻\",\n \"🤲🏼\",\n \"🤲🏽\",\n \"🤲🏾\",\n \"🤲🏿\",\n \"🤲\",\n \"🤳🏻\",\n \"🤳🏼\",\n \"🤳🏽\",\n \"🤳🏾\",\n \"🤳🏿\",\n \"🤳\",\n \"🤴🏻\",\n \"🤴🏼\",\n \"🤴🏽\",\n \"🤴🏾\",\n \"🤴🏿\",\n \"🤴\",\n \"🤵🏻♀️\",\n \"🤵🏻♂️\",\n \"🤵🏻\",\n \"🤵🏼♀️\",\n \"🤵🏼♂️\",\n \"🤵🏼\",\n \"🤵🏽♀️\",\n \"🤵🏽♂️\",\n \"🤵🏽\",\n \"🤵🏾♀️\",\n \"🤵🏾♂️\",\n \"🤵🏾\",\n \"🤵🏿♀️\",\n \"🤵🏿♂️\",\n \"🤵🏿\",\n \"🤵♀️\",\n \"🤵♂️\",\n \"🤵\",\n \"🤶🏻\",\n \"🤶🏼\",\n \"🤶🏽\",\n \"🤶🏾\",\n \"🤶🏿\",\n \"🤶\",\n \"🤷🏻♀️\",\n \"🤷🏻♂️\",\n \"🤷🏻\",\n \"🤷🏼♀️\",\n \"🤷🏼♂️\",\n \"🤷🏼\",\n \"🤷🏽♀️\",\n \"🤷🏽♂️\",\n \"🤷🏽\",\n \"🤷🏾♀️\",\n \"🤷🏾♂️\",\n \"🤷🏾\",\n \"🤷🏿♀️\",\n \"🤷🏿♂️\",\n \"🤷🏿\",\n \"🤷♀️\",\n \"🤷♂️\",\n \"🤷\",\n \"🤸🏻♀️\",\n \"🤸🏻♂️\",\n \"🤸🏻\",\n \"🤸🏼♀️\",\n \"🤸🏼♂️\",\n \"🤸🏼\",\n \"🤸🏽♀️\",\n \"🤸🏽♂️\",\n \"🤸🏽\",\n \"🤸🏾♀️\",\n \"🤸🏾♂️\",\n \"🤸🏾\",\n \"🤸🏿♀️\",\n \"🤸🏿♂️\",\n \"🤸🏿\",\n \"🤸♀️\",\n \"🤸♂️\",\n \"🤸\",\n \"🤹🏻♀️\",\n \"🤹🏻♂️\",\n \"🤹🏻\",\n \"🤹🏼♀️\",\n \"🤹🏼♂️\",\n \"🤹🏼\",\n \"🤹🏽♀️\",\n \"🤹🏽♂️\",\n \"🤹🏽\",\n \"🤹🏾♀️\",\n \"🤹🏾♂️\",\n \"🤹🏾\",\n \"🤹🏿♀️\",\n \"🤹🏿♂️\",\n \"🤹🏿\",\n \"🤹♀️\",\n \"🤹♂️\",\n \"🤹\",\n \"🤺\",\n \"🤼♀️\",\n \"🤼♂️\",\n \"🤼\",\n \"🤽🏻♀️\",\n \"🤽🏻♂️\",\n \"🤽🏻\",\n \"🤽🏼♀️\",\n \"🤽🏼♂️\",\n \"🤽🏼\",\n \"🤽🏽♀️\",\n \"🤽🏽♂️\",\n \"🤽🏽\",\n \"🤽🏾♀️\",\n \"🤽🏾♂️\",\n \"🤽🏾\",\n \"🤽🏿♀️\",\n \"🤽🏿♂️\",\n \"🤽🏿\",\n \"🤽♀️\",\n \"🤽♂️\",\n \"🤽\",\n \"🤾🏻♀️\",\n \"🤾🏻♂️\",\n \"🤾🏻\",\n \"🤾🏼♀️\",\n \"🤾🏼♂️\",\n \"🤾🏼\",\n \"🤾🏽♀️\",\n \"🤾🏽♂️\",\n \"🤾🏽\",\n \"🤾🏾♀️\",\n \"🤾🏾♂️\",\n \"🤾🏾\",\n \"🤾🏿♀️\",\n \"🤾🏿♂️\",\n \"🤾🏿\",\n \"🤾♀️\",\n \"🤾♂️\",\n \"🤾\",\n \"🤿\",\n \"🥀\",\n \"🥁\",\n \"🥂\",\n \"🥃\",\n \"🥄\",\n \"🥅\",\n \"🥇\",\n \"🥈\",\n \"🥉\",\n \"🥊\",\n \"🥋\",\n \"🥌\",\n \"🥍\",\n \"🥎\",\n \"🥏\",\n \"🥐\",\n \"🥑\",\n \"🥒\",\n \"🥓\",\n \"🥔\",\n \"🥕\",\n \"🥖\",\n \"🥗\",\n \"🥘\",\n \"🥙\",\n \"🥚\",\n \"🥛\",\n \"🥜\",\n \"🥝\",\n \"🥞\",\n \"🥟\",\n \"🥠\",\n \"🥡\",\n \"🥢\",\n \"🥣\",\n \"🥤\",\n \"🥥\",\n \"🥦\",\n \"🥧\",\n \"🥨\",\n \"🥩\",\n \"🥪\",\n \"🥫\",\n \"🥬\",\n \"🥭\",\n \"🥮\",\n \"🥯\",\n \"🥰\",\n \"🥱\",\n \"🥳\",\n \"🥴\",\n \"🥵\",\n \"🥶\",\n \"🥺\",\n \"🥻\",\n \"🥼\",\n \"🥽\",\n \"🥾\",\n \"🥿\",\n \"🦀\",\n \"🦁\",\n \"🦂\",\n \"🦃\",\n \"🦄\",\n \"🦅\",\n \"🦆\",\n \"🦇\",\n \"🦈\",\n \"🦉\",\n \"🦊\",\n \"🦋\",\n \"🦌\",\n \"🦍\",\n \"🦎\",\n \"🦏\",\n \"🦐\",\n \"🦑\",\n \"🦒\",\n \"🦓\",\n \"🦔\",\n \"🦕\",\n \"🦖\",\n \"🦗\",\n \"🦘\",\n \"🦙\",\n \"🦚\",\n \"🦛\",\n \"🦜\",\n \"🦝\",\n \"🦞\",\n \"🦟\",\n \"🦠\",\n \"🦡\",\n \"🦢\",\n \"🦥\",\n \"🦦\",\n \"🦧\",\n \"🦨\",\n \"🦩\",\n \"🦪\",\n \"🦮\",\n \"🦯\",\n \"🦰\",\n \"🦱\",\n \"🦲\",\n \"🦳\",\n \"🦴\",\n \"🦵🏻\",\n \"🦵🏼\",\n \"🦵🏽\",\n \"🦵🏾\",\n \"🦵🏿\",\n \"🦵\",\n \"🦶🏻\",\n \"🦶🏼\",\n \"🦶🏽\",\n \"🦶🏾\",\n \"🦶🏿\",\n \"🦶\",\n \"🦷\",\n \"🦸🏻♀️\",\n \"🦸🏻♂️\",\n \"🦸🏻\",\n \"🦸🏼♀️\",\n \"🦸🏼♂️\",\n \"🦸🏼\",\n \"🦸🏽♀️\",\n \"🦸🏽♂️\",\n \"🦸🏽\",\n \"🦸🏾♀️\",\n \"🦸🏾♂️\",\n \"🦸🏾\",\n \"🦸🏿♀️\",\n \"🦸🏿♂️\",\n \"🦸🏿\",\n \"🦸♀️\",\n \"🦸♂️\",\n \"🦸\",\n \"🦹🏻♀️\",\n \"🦹🏻♂️\",\n \"🦹🏻\",\n \"🦹🏼♀️\",\n \"🦹🏼♂️\",\n \"🦹🏼\",\n \"🦹🏽♀️\",\n \"🦹🏽♂️\",\n \"🦹🏽\",\n \"🦹🏾♀️\",\n \"🦹🏾♂️\",\n \"🦹🏾\",\n \"🦹🏿♀️\",\n \"🦹🏿♂️\",\n \"🦹🏿\",\n \"🦹♀️\",\n \"🦹♂️\",\n \"🦹\",\n \"🦺\",\n \"🦻🏻\",\n \"🦻🏼\",\n \"🦻🏽\",\n \"🦻🏾\",\n \"🦻🏿\",\n \"🦻\",\n \"🦼\",\n \"🦽\",\n \"🦾\",\n \"🦿\",\n \"🧀\",\n \"🧁\",\n \"🧂\",\n \"🧃\",\n \"🧄\",\n \"🧅\",\n \"🧆\",\n \"🧇\",\n \"🧈\",\n \"🧉\",\n \"🧊\",\n \"🧍🏻♀️\",\n \"🧍🏻♂️\",\n \"🧍🏻\",\n \"🧍🏼♀️\",\n \"🧍🏼♂️\",\n \"🧍🏼\",\n \"🧍🏽♀️\",\n \"🧍🏽♂️\",\n \"🧍🏽\",\n \"🧍🏾♀️\",\n \"🧍🏾♂️\",\n \"🧍🏾\",\n \"🧍🏿♀️\",\n \"🧍🏿♂️\",\n \"🧍🏿\",\n \"🧍♀️\",\n \"🧍♂️\",\n \"🧍\",\n \"🧎🏻♀️\",\n \"🧎🏻♂️\",\n \"🧎🏻\",\n \"🧎🏼♀️\",\n \"🧎🏼♂️\",\n \"🧎🏼\",\n \"🧎🏽♀️\",\n \"🧎🏽♂️\",\n \"🧎🏽\",\n \"🧎🏾♀️\",\n \"🧎🏾♂️\",\n \"🧎🏾\",\n \"🧎🏿♀️\",\n \"🧎🏿♂️\",\n \"🧎🏿\",\n \"🧎♀️\",\n \"🧎♂️\",\n \"🧎\",\n \"🧏🏻♀️\",\n \"🧏🏻♂️\",\n \"🧏🏻\",\n \"🧏🏼♀️\",\n \"🧏🏼♂️\",\n \"🧏🏼\",\n \"🧏🏽♀️\",\n \"🧏🏽♂️\",\n \"🧏🏽\",\n \"🧏🏾♀️\",\n \"🧏🏾♂️\",\n \"🧏🏾\",\n \"🧏🏿♀️\",\n \"🧏🏿♂️\",\n \"🧏🏿\",\n \"🧏♀️\",\n \"🧏♂️\",\n \"🧏\",\n \"🧐\",\n \"🧑🏻🤝🧑🏻\",\n \"🧑🏻\",\n \"🧑🏼🤝🧑🏻\",\n \"🧑🏼🤝🧑🏼\",\n \"🧑🏼\",\n \"🧑🏽🤝🧑🏻\",\n \"🧑🏽🤝🧑🏼\",\n \"🧑🏽🤝🧑🏽\",\n \"🧑🏽\",\n \"🧑🏾🤝🧑🏻\",\n \"🧑🏾🤝🧑🏼\",\n \"🧑🏾🤝🧑🏽\",\n \"🧑🏾🤝🧑🏾\",\n \"🧑🏾\",\n \"🧑🏿🤝🧑🏻\",\n \"🧑🏿🤝🧑🏼\",\n \"🧑🏿🤝🧑🏽\",\n \"🧑🏿🤝🧑🏾\",\n \"🧑🏿🤝🧑🏿\",\n \"🧑🏿\",\n \"🧑🤝🧑\",\n \"🧑\",\n \"🧒🏻\",\n \"🧒🏼\",\n \"🧒🏽\",\n \"🧒🏾\",\n \"🧒🏿\",\n \"🧒\",\n \"🧓🏻\",\n \"🧓🏼\",\n \"🧓🏽\",\n \"🧓🏾\",\n \"🧓🏿\",\n \"🧓\",\n \"🧔🏻\",\n \"🧔🏼\",\n \"🧔🏽\",\n \"🧔🏾\",\n \"🧔🏿\",\n \"🧔\",\n \"🧕🏻\",\n \"🧕🏼\",\n \"🧕🏽\",\n \"🧕🏾\",\n \"🧕🏿\",\n \"🧕\",\n \"🧖🏻♀️\",\n \"🧖🏻♂️\",\n \"🧖🏻\",\n \"🧖🏼♀️\",\n \"🧖🏼♂️\",\n \"🧖🏼\",\n \"🧖🏽♀️\",\n \"🧖🏽♂️\",\n \"🧖🏽\",\n \"🧖🏾♀️\",\n \"🧖🏾♂️\",\n \"🧖🏾\",\n \"🧖🏿♀️\",\n \"🧖🏿♂️\",\n \"🧖🏿\",\n \"🧖♀️\",\n \"🧖♂️\",\n \"🧖\",\n \"🧗🏻♀️\",\n \"🧗🏻♂️\",\n \"🧗🏻\",\n \"🧗🏼♀️\",\n \"🧗🏼♂️\",\n \"🧗🏼\",\n \"🧗🏽♀️\",\n \"🧗🏽♂️\",\n \"🧗🏽\",\n \"🧗🏾♀️\",\n \"🧗🏾♂️\",\n \"🧗🏾\",\n \"🧗🏿♀️\",\n \"🧗🏿♂️\",\n \"🧗🏿\",\n \"🧗♀️\",\n \"🧗♂️\",\n \"🧗\",\n \"🧘🏻♀️\",\n \"🧘🏻♂️\",\n \"🧘🏻\",\n \"🧘🏼♀️\",\n \"🧘🏼♂️\",\n \"🧘🏼\",\n \"🧘🏽♀️\",\n \"🧘🏽♂️\",\n \"🧘🏽\",\n \"🧘🏾♀️\",\n \"🧘🏾♂️\",\n \"🧘🏾\",\n \"🧘🏿♀️\",\n \"🧘🏿♂️\",\n \"🧘🏿\",\n \"🧘♀️\",\n \"🧘♂️\",\n \"🧘\",\n \"🧙🏻♀️\",\n \"🧙🏻♂️\",\n \"🧙🏻\",\n \"🧙🏼♀️\",\n \"🧙🏼♂️\",\n \"🧙🏼\",\n \"🧙🏽♀️\",\n \"🧙🏽♂️\",\n \"🧙🏽\",\n \"🧙🏾♀️\",\n \"🧙🏾♂️\",\n \"🧙🏾\",\n \"🧙🏿♀️\",\n \"🧙🏿♂️\",\n \"🧙🏿\",\n \"🧙♀️\",\n \"🧙♂️\",\n \"🧙\",\n \"🧚🏻♀️\",\n \"🧚🏻♂️\",\n \"🧚🏻\",\n \"🧚🏼♀️\",\n \"🧚🏼♂️\",\n \"🧚🏼\",\n \"🧚🏽♀️\",\n \"🧚🏽♂️\",\n \"🧚🏽\",\n \"🧚🏾♀️\",\n \"🧚🏾♂️\",\n \"🧚🏾\",\n \"🧚🏿♀️\",\n \"🧚🏿♂️\",\n \"🧚🏿\",\n \"🧚♀️\",\n \"🧚♂️\",\n \"🧚\",\n \"🧛🏻♀️\",\n \"🧛🏻♂️\",\n \"🧛🏻\",\n \"🧛🏼♀️\",\n \"🧛🏼♂️\",\n \"🧛🏼\",\n \"🧛🏽♀️\",\n \"🧛🏽♂️\",\n \"🧛🏽\",\n \"🧛🏾♀️\",\n \"🧛🏾♂️\",\n \"🧛🏾\",\n \"🧛🏿♀️\",\n \"🧛🏿♂️\",\n \"🧛🏿\",\n \"🧛♀️\",\n \"🧛♂️\",\n \"🧛\",\n \"🧜🏻♀️\",\n \"🧜🏻♂️\",\n \"🧜🏻\",\n \"🧜🏼♀️\",\n \"🧜🏼♂️\",\n \"🧜🏼\",\n \"🧜🏽♀️\",\n \"🧜🏽♂️\",\n \"🧜🏽\",\n \"🧜🏾♀️\",\n \"🧜🏾♂️\",\n \"🧜🏾\",\n \"🧜🏿♀️\",\n \"🧜🏿♂️\",\n \"🧜🏿\",\n \"🧜♀️\",\n \"🧜♂️\",\n \"🧜\",\n \"🧝🏻♀️\",\n \"🧝🏻♂️\",\n \"🧝🏻\",\n \"🧝🏼♀️\",\n \"🧝🏼♂️\",\n \"🧝🏼\",\n \"🧝🏽♀️\",\n \"🧝🏽♂️\",\n \"🧝🏽\",\n \"🧝🏾♀️\",\n \"🧝🏾♂️\",\n \"🧝🏾\",\n \"🧝🏿♀️\",\n \"🧝🏿♂️\",\n \"🧝🏿\",\n \"🧝♀️\",\n \"🧝♂️\",\n \"🧝\",\n \"🧞♀️\",\n \"🧞♂️\",\n \"🧞\",\n \"🧟♀️\",\n \"🧟♂️\",\n \"🧟\",\n \"🧠\",\n \"🧡\",\n \"🧢\",\n \"🧣\",\n \"🧤\",\n \"🧥\",\n \"🧦\",\n \"🧧\",\n \"🧨\",\n \"🧩\",\n \"🧪\",\n \"🧫\",\n \"🧬\",\n \"🧭\",\n \"🧮\",\n \"🧯\",\n \"🧰\",\n \"🧱\",\n \"🧲\",\n \"🧳\",\n \"🧴\",\n \"🧵\",\n \"🧶\",\n \"🧷\",\n \"🧸\",\n \"🧹\",\n \"🧺\",\n \"🧻\",\n \"🧼\",\n \"🧽\",\n \"🧾\",\n \"🧿\",\n \"🩰\",\n \"🩱\",\n \"🩲\",\n \"🩳\",\n \"🩸\",\n \"🩹\",\n \"🩺\",\n \"🪀\",\n \"🪁\",\n \"🪂\",\n \"🪐\",\n \"🪑\",\n \"🪒\",\n \"🪓\",\n \"🪔\",\n \"🪕\",\n \"‼️\",\n \"⁉️\",\n \"™️\",\n \"ℹ️\",\n \"↔️\",\n \"↕️\",\n \"↖️\",\n \"↗️\",\n \"↘️\",\n \"↙️\",\n \"↩️\",\n \"↪️\",\n \"#⃣\",\n \"⌚️\",\n \"⌛️\",\n \"⌨️\",\n \"⏏️\",\n \"⏩\",\n \"⏪\",\n \"⏫\",\n \"⏬\",\n \"⏭️\",\n \"⏮️\",\n \"⏯️\",\n \"⏰\",\n \"⏱️\",\n \"⏲️\",\n \"⏳\",\n \"⏸️\",\n \"⏹️\",\n \"⏺️\",\n \"Ⓜ️\",\n \"▪️\",\n \"▫️\",\n \"▶️\",\n \"◀️\",\n \"◻️\",\n \"◼️\",\n \"◽️\",\n \"◾️\",\n \"☀️\",\n \"☁️\",\n \"☂️\",\n \"☃️\",\n \"☄️\",\n \"☎️\",\n \"☑️\",\n \"☔️\",\n \"☕️\",\n \"☘️\",\n \"☝🏻\",\n \"☝🏼\",\n \"☝🏽\",\n \"☝🏾\",\n \"☝🏿\",\n \"☝️\",\n \"☠️\",\n \"☢️\",\n \"☣️\",\n \"☦️\",\n \"☪️\",\n \"☮️\",\n \"☯️\",\n \"☸️\",\n \"☹️\",\n \"☺️\",\n \"♀️\",\n \"♂️\",\n \"♈️\",\n \"♉️\",\n \"♊️\",\n \"♋️\",\n \"♌️\",\n \"♍️\",\n \"♎️\",\n \"♏️\",\n \"♐️\",\n \"♑️\",\n \"♒️\",\n \"♓️\",\n \"♟️\",\n \"♠️\",\n \"♣️\",\n \"♥️\",\n \"♦️\",\n \"♨️\",\n \"♻️\",\n \"♾\",\n \"♿️\",\n \"⚒️\",\n \"⚓️\",\n \"⚔️\",\n \"⚕️\",\n \"⚖️\",\n \"⚗️\",\n \"⚙️\",\n \"⚛️\",\n \"⚜️\",\n \"⚠️\",\n \"⚡️\",\n \"⚪️\",\n \"⚫️\",\n \"⚰️\",\n \"⚱️\",\n \"⚽️\",\n \"⚾️\",\n \"⛄️\",\n \"⛅️\",\n \"⛈️\",\n \"⛎\",\n \"⛏️\",\n \"⛑️\",\n \"⛓️\",\n \"⛔️\",\n \"⛩️\",\n \"⛪️\",\n \"⛰️\",\n \"⛱️\",\n \"⛲️\",\n \"⛳️\",\n \"⛴️\",\n \"⛵️\",\n \"⛷🏻\",\n \"⛷🏼\",\n \"⛷🏽\",\n \"⛷🏾\",\n \"⛷🏿\",\n \"⛷️\",\n \"⛸️\",\n \"⛹🏻♀️\",\n \"⛹🏻♂️\",\n \"⛹🏻\",\n \"⛹🏼♀️\",\n \"⛹🏼♂️\",\n \"⛹🏼\",\n \"⛹🏽♀️\",\n \"⛹🏽♂️\",\n \"⛹🏽\",\n \"⛹🏾♀️\",\n \"⛹🏾♂️\",\n \"⛹🏾\",\n \"⛹🏿♀️\",\n \"⛹🏿♂️\",\n \"⛹🏿\",\n \"⛹️♀️\",\n \"⛹️♂️\",\n \"⛹️\",\n \"⛺️\",\n \"⛽️\",\n \"✂️\",\n \"✅\",\n \"✈️\",\n \"✉️\",\n \"✊🏻\",\n \"✊🏼\",\n \"✊🏽\",\n \"✊🏾\",\n \"✊🏿\",\n \"✊\",\n \"✋🏻\",\n \"✋🏼\",\n \"✋🏽\",\n \"✋🏾\",\n \"✋🏿\",\n \"✋\",\n \"✌🏻\",\n \"✌🏼\",\n \"✌🏽\",\n \"✌🏾\",\n \"✌🏿\",\n \"✌️\",\n \"✍🏻\",\n \"✍🏼\",\n \"✍🏽\",\n \"✍🏾\",\n \"✍🏿\",\n \"✍️\",\n \"✏️\",\n \"✒️\",\n \"✔️\",\n \"✖️\",\n \"✝️\",\n \"✡️\",\n \"✨\",\n \"✳️\",\n \"✴️\",\n \"❄️\",\n \"❇️\",\n \"❌\",\n \"❎\",\n \"❓\",\n \"❔\",\n \"❕\",\n \"❗️\",\n \"❣️\",\n \"❤️\",\n \"➕\",\n \"➖\",\n \"➗\",\n \"➡️\",\n \"➰\",\n \"➿\",\n \"⤴️\",\n \"⤵️\",\n \"*⃣\",\n \"⬅️\",\n \"⬆️\",\n \"⬇️\",\n \"⬛️\",\n \"⬜️\",\n \"⭐️\",\n \"⭕️\",\n \"0⃣\",\n \"〰️\",\n \"〽️\",\n \"1⃣\",\n \"2⃣\",\n \"㊗️\",\n \"㊙️\",\n \"3⃣\",\n \"4⃣\",\n \"5⃣\",\n \"6⃣\",\n \"7⃣\",\n \"8⃣\",\n \"9⃣\",\n \"©️\",\n \"®️\",\n \"\"\n]","'use strict';\n\nconst path = require('path');\nconst emojisList = require('emojis-list');\nconst getHashDigest = require('./getHashDigest');\n\nconst emojiRegex = /[\\uD800-\\uDFFF]./;\nconst emojiList = emojisList.filter((emoji) => emojiRegex.test(emoji));\nconst emojiCache = {};\n\nfunction encodeStringToEmoji(content, length) {\n if (emojiCache[content]) {\n return emojiCache[content];\n }\n\n length = length || 1;\n\n const emojis = [];\n\n do {\n if (!emojiList.length) {\n throw new Error('Ran out of emoji');\n }\n\n const index = Math.floor(Math.random() * emojiList.length);\n\n emojis.push(emojiList[index]);\n emojiList.splice(index, 1);\n } while (--length > 0);\n\n const emojiEncoding = emojis.join('');\n\n emojiCache[content] = emojiEncoding;\n\n return emojiEncoding;\n}\n\nfunction interpolateName(loaderContext, name, options) {\n let filename;\n\n const hasQuery =\n loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1;\n\n if (typeof name === 'function') {\n filename = name(\n loaderContext.resourcePath,\n hasQuery ? loaderContext.resourceQuery : undefined\n );\n } else {\n filename = name || '[hash].[ext]';\n }\n\n const context = options.context;\n const content = options.content;\n const regExp = options.regExp;\n\n let ext = 'bin';\n let basename = 'file';\n let directory = '';\n let folder = '';\n let query = '';\n\n if (loaderContext.resourcePath) {\n const parsed = path.parse(loaderContext.resourcePath);\n let resourcePath = loaderContext.resourcePath;\n\n if (parsed.ext) {\n ext = parsed.ext.substr(1);\n }\n\n if (parsed.dir) {\n basename = parsed.name;\n resourcePath = parsed.dir + path.sep;\n }\n\n if (typeof context !== 'undefined') {\n directory = path\n .relative(context, resourcePath + '_')\n .replace(/\\\\/g, '/')\n .replace(/\\.\\.(\\/)?/g, '_$1');\n directory = directory.substr(0, directory.length - 1);\n } else {\n directory = resourcePath.replace(/\\\\/g, '/').replace(/\\.\\.(\\/)?/g, '_$1');\n }\n\n if (directory.length === 1) {\n directory = '';\n } else if (directory.length > 1) {\n folder = path.basename(directory);\n }\n }\n\n if (loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1) {\n query = loaderContext.resourceQuery;\n\n const hashIdx = query.indexOf('#');\n\n if (hashIdx >= 0) {\n query = query.substr(0, hashIdx);\n }\n }\n\n let url = filename;\n\n if (content) {\n // Match hash template\n url = url\n // `hash` and `contenthash` are same in `loader-utils` context\n // let's keep `hash` for backward compatibility\n .replace(\n /\\[(?:([^:\\]]+):)?(?:hash|contenthash)(?::([a-z]+\\d*))?(?::(\\d+))?\\]/gi,\n (all, hashType, digestType, maxLength) =>\n getHashDigest(content, hashType, digestType, parseInt(maxLength, 10))\n )\n .replace(/\\[emoji(?::(\\d+))?\\]/gi, (all, length) =>\n encodeStringToEmoji(content, parseInt(length, 10))\n );\n }\n\n url = url\n .replace(/\\[ext\\]/gi, () => ext)\n .replace(/\\[name\\]/gi, () => basename)\n .replace(/\\[path\\]/gi, () => directory)\n .replace(/\\[folder\\]/gi, () => folder)\n .replace(/\\[query\\]/gi, () => query);\n\n if (regExp && loaderContext.resourcePath) {\n const match = loaderContext.resourcePath.match(new RegExp(regExp));\n\n match &&\n match.forEach((matched, i) => {\n url = url.replace(new RegExp('\\\\[' + i + '\\\\]', 'ig'), matched);\n });\n }\n\n if (\n typeof loaderContext.options === 'object' &&\n typeof loaderContext.options.customInterpolateName === 'function'\n ) {\n url = loaderContext.options.customInterpolateName.call(\n loaderContext,\n url,\n name,\n options\n );\n }\n\n return url;\n}\n\nmodule.exports = interpolateName;\n","'use strict';\n\nconst getOptions = require('./getOptions');\nconst parseQuery = require('./parseQuery');\nconst stringifyRequest = require('./stringifyRequest');\nconst getRemainingRequest = require('./getRemainingRequest');\nconst getCurrentRequest = require('./getCurrentRequest');\nconst isUrlRequest = require('./isUrlRequest');\nconst urlToRequest = require('./urlToRequest');\nconst parseString = require('./parseString');\nconst getHashDigest = require('./getHashDigest');\nconst interpolateName = require('./interpolateName');\n\nexports.getOptions = getOptions;\nexports.parseQuery = parseQuery;\nexports.stringifyRequest = stringifyRequest;\nexports.getRemainingRequest = getRemainingRequest;\nexports.getCurrentRequest = getCurrentRequest;\nexports.isUrlRequest = isUrlRequest;\nexports.urlToRequest = urlToRequest;\nexports.parseString = parseString;\nexports.getHashDigest = getHashDigest;\nexports.interpolateName = interpolateName;\n","\"use strict\";\n\nvar interpolateName = require(\"loader-utils\").interpolateName;\nvar path = require(\"path\");\n\n/**\n * @param {string} pattern\n * @param {object} options\n * @param {string} options.context\n * @param {string} options.hashPrefix\n * @return {function}\n */\nmodule.exports = function createGenerator(pattern, options) {\n options = options || {};\n var context =\n options && typeof options.context === \"string\"\n ? options.context\n : process.cwd();\n var hashPrefix =\n options && typeof options.hashPrefix === \"string\" ? options.hashPrefix : \"\";\n\n /**\n * @param {string} localName Usually a class name\n * @param {string} filepath Absolute path\n * @return {string}\n */\n return function generate(localName, filepath) {\n var name = pattern.replace(/\\[local\\]/gi, localName);\n var loaderContext = {\n resourcePath: filepath\n };\n\n var loaderOptions = {\n content:\n hashPrefix +\n path.relative(context, filepath).replace(/\\\\/g, \"/\") +\n \"+\" +\n localName,\n context: context\n };\n\n var genericName = interpolateName(loaderContext, name, loaderOptions);\n return genericName\n .replace(new RegExp(\"[^a-zA-Z0-9\\\\-_\\u00A0-\\uFFFF]\", \"g\"), \"-\")\n .replace(/^((-?[0-9])|--)/, \"_$1\");\n };\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = unquote;\n// copied from https://github.com/lakenen/node-unquote\n\nvar reg = /['\"]/;\n\nfunction unquote(str) {\n if (!str) {\n return \"\";\n }\n if (reg.test(str.charAt(0))) {\n str = str.substr(1);\n }\n if (reg.test(str.charAt(str.length - 1))) {\n str = str.substr(0, str.length - 1);\n }\n return str;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.replaceAll = replaceAll;\nvar matchConstName = /[$#]?[\\w-\\.]+/g;\n\nfunction replaceAll(replacements, text) {\n var matches = void 0;\n while (matches = matchConstName.exec(text)) {\n var replacement = replacements[matches[0]];\n if (replacement) {\n text = text.slice(0, matches.index) + replacement + text.slice(matchConstName.lastIndex);\n matchConstName.lastIndex -= matches[0].length - replacement.length;\n }\n }\n return text;\n}\n\nexports.default = function (css, translations) {\n css.walkDecls(function (decl) {\n return decl.value = replaceAll(translations, decl.value);\n });\n css.walkAtRules('media', function (atRule) {\n return atRule.params = replaceAll(translations, atRule.params);\n });\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icssReplaceSymbols = require(\"icss-replace-symbols\");\n\nvar _icssReplaceSymbols2 = _interopRequireDefault(_icssReplaceSymbols);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copied from https://github.com/css-modules/css-modules-loader-core\n\nconst importRegexp = /^:import\\((.+)\\)$/;\nclass Parser {\n constructor(pathFetcher, trace) {\n this.pathFetcher = pathFetcher;\n this.plugin = this.plugin.bind(this);\n this.exportTokens = {};\n this.translations = {};\n this.trace = trace;\n }\n\n plugin() {\n const parser = this;\n return {\n postcssPlugin: \"css-modules-parser\",\n OnceExit(css) {\n return Promise.all(parser.fetchAllImports(css)).then(() => parser.linkImportedSymbols(css)).then(() => parser.extractExports(css));\n }\n };\n }\n\n fetchAllImports(css) {\n let imports = [];\n css.each(node => {\n if (node.type == \"rule\" && node.selector.match(importRegexp)) {\n imports.push(this.fetchImport(node, css.source.input.from, imports.length));\n }\n });\n return imports;\n }\n\n linkImportedSymbols(css) {\n (0, _icssReplaceSymbols2.default)(css, this.translations);\n }\n\n extractExports(css) {\n css.each(node => {\n if (node.type == \"rule\" && node.selector == \":export\") this.handleExport(node);\n });\n }\n\n handleExport(exportNode) {\n exportNode.each(decl => {\n if (decl.type == \"decl\") {\n Object.keys(this.translations).forEach(translation => {\n decl.value = decl.value.replace(translation, this.translations[translation]);\n });\n this.exportTokens[decl.prop] = decl.value;\n }\n });\n exportNode.remove();\n }\n\n fetchImport(importNode, relativeTo, depNr) {\n let file = importNode.selector.match(importRegexp)[1],\n depTrace = this.trace + String.fromCharCode(depNr);\n return this.pathFetcher(file, relativeTo, depTrace).then(exports => {\n importNode.each(decl => {\n if (decl.type == \"decl\") {\n this.translations[decl.prop] = exports[decl.value];\n }\n });\n importNode.remove();\n }, err => console.log(err));\n }\n}\nexports.default = Parser;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _postcss = require(\"postcss\");\n\nvar _postcss2 = _interopRequireDefault(_postcss);\n\nvar _fs = require(\"fs\");\n\nvar _fs2 = _interopRequireDefault(_fs);\n\nvar _path = require(\"path\");\n\nvar _path2 = _interopRequireDefault(_path);\n\nvar _parser = require(\"./parser\");\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copied from https://github.com/css-modules/css-modules-loader-core\n\nclass Core {\n constructor(plugins) {\n this.plugins = plugins || Core.defaultPlugins;\n }\n\n load(sourceString, sourcePath, trace, pathFetcher) {\n let parser = new _parser2.default(pathFetcher, trace);\n\n return (0, _postcss2.default)(this.plugins.concat([parser.plugin()])).process(sourceString, { from: \"/\" + sourcePath }).then(result => {\n return {\n injectableSource: result.css,\n exportTokens: parser.exportTokens\n };\n });\n }\n}\n\n// Sorts dependencies in the following way:\n// AAA comes before AA and A\n// AB comes after AA and before A\n// All Bs come after all As\n// This ensures that the files are always returned in the following order:\n// - In the order they were required, except\n// - After all their dependencies\nconst traceKeySorter = (a, b) => {\n if (a.length < b.length) {\n return a < b.substring(0, a.length) ? -1 : 1;\n } else if (a.length > b.length) {\n return a.substring(0, b.length) <= b ? -1 : 1;\n } else {\n return a < b ? -1 : 1;\n }\n};\n\nclass FileSystemLoader {\n constructor(root, plugins) {\n this.root = root;\n this.sources = {};\n this.traces = {};\n this.importNr = 0;\n this.core = new Core(plugins);\n this.tokensByFile = {};\n }\n\n fetch(_newPath, relativeTo, _trace) {\n let newPath = _newPath.replace(/^[\"']|[\"']$/g, \"\"),\n trace = _trace || String.fromCharCode(this.importNr++);\n return new Promise((resolve, reject) => {\n let relativeDir = _path2.default.dirname(relativeTo),\n rootRelativePath = _path2.default.resolve(relativeDir, newPath),\n fileRelativePath = _path2.default.resolve(_path2.default.join(this.root, relativeDir), newPath);\n\n // if the path is not relative or absolute, try to resolve it in node_modules\n if (newPath[0] !== \".\" && newPath[0] !== \"/\") {\n try {\n fileRelativePath = require.resolve(newPath);\n } catch (e) {\n // noop\n }\n }\n\n const tokens = this.tokensByFile[fileRelativePath];\n if (tokens) {\n return resolve(tokens);\n }\n\n _fs2.default.readFile(fileRelativePath, \"utf-8\", (err, source) => {\n if (err) reject(err);\n this.core.load(source, rootRelativePath, trace, this.fetch.bind(this)).then(({ injectableSource, exportTokens }) => {\n this.sources[fileRelativePath] = injectableSource;\n this.traces[trace] = fileRelativePath;\n this.tokensByFile[fileRelativePath] = exportTokens;\n resolve(exportTokens);\n }, reject);\n });\n });\n }\n\n get finalSource() {\n const traces = this.traces;\n const sources = this.sources;\n let written = new Set();\n\n return Object.keys(traces).sort(traceKeySorter).map(key => {\n const filename = traces[key];\n if (written.has(filename)) {\n return null;\n }\n written.add(filename);\n\n return sources[filename];\n }).join(\"\");\n }\n}\nexports.default = FileSystemLoader;","\"use strict\";\n\nfunction hash(str) {\n var hash = 5381,\n i = str.length;\n\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */\n return hash >>> 0;\n}\n\nmodule.exports = hash;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = generateScopedName;\n\nvar _stringHash = require(\"string-hash\");\n\nvar _stringHash2 = _interopRequireDefault(_stringHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction generateScopedName(name, filename, css) {\n const i = css.indexOf(`.${name}`);\n const lineNumber = css.substr(0, i).split(/[\\r\\n]/).length;\n const hash = (0, _stringHash2.default)(css).toString(36).substr(0, 5);\n\n return `_${name}_${hash}_${lineNumber}`;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = saveJSON;\n\nvar _fs = require(\"fs\");\n\nfunction saveJSON(cssFile, json) {\n return new Promise((resolve, reject) => {\n (0, _fs.writeFile)(`${cssFile}.json`, JSON.stringify(json), e => e ? reject(e) : resolve(json));\n });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = unesc;\n\n// Many thanks for this post which made this migration much easier.\n// https://mathiasbynens.be/notes/css-escapes\n\n/**\n * \n * @param {string} str \n * @returns {[string, number]|undefined}\n */\nfunction gobbleHex(str) {\n var lower = str.toLowerCase();\n var hex = '';\n var spaceTerminated = false;\n\n for (var i = 0; i < 6 && lower[i] !== undefined; i++) {\n var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]\n\n var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point\n\n spaceTerminated = code === 32;\n\n if (!valid) {\n break;\n }\n\n hex += lower[i];\n }\n\n if (hex.length === 0) {\n return undefined;\n }\n\n var codePoint = parseInt(hex, 16);\n var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for\n // \"If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point\"\n // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point\n\n if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {\n return [\"\\uFFFD\", hex.length + (spaceTerminated ? 1 : 0)];\n }\n\n return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];\n}\n\nvar CONTAINS_ESCAPE = /\\\\/;\n\nfunction unesc(str) {\n var needToProcess = CONTAINS_ESCAPE.test(str);\n\n if (!needToProcess) {\n return str;\n }\n\n var ret = \"\";\n\n for (var i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n var gobbled = gobbleHex(str.slice(i + 1, i + 7));\n\n if (gobbled !== undefined) {\n ret += gobbled[0];\n i += gobbled[1];\n continue;\n } // Retain a pair of \\\\ if double escaped `\\\\\\\\`\n // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e\n\n\n if (str[i + 1] === \"\\\\\") {\n ret += \"\\\\\";\n i++;\n continue;\n } // if \\\\ is at the end of the string retain it\n // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb\n\n\n if (str.length === i + 1) {\n ret += str[i];\n }\n\n continue;\n }\n\n ret += str[i];\n }\n\n return ret;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getProp;\n\nfunction getProp(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n return undefined;\n }\n\n obj = obj[prop];\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = ensureObject;\n\nfunction ensureObject(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n obj[prop] = {};\n }\n\n obj = obj[prop];\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stripComments;\n\nfunction stripComments(str) {\n var s = \"\";\n var commentStart = str.indexOf(\"/*\");\n var lastEnd = 0;\n\n while (commentStart >= 0) {\n s = s + str.slice(lastEnd, commentStart);\n var commentEnd = str.indexOf(\"*/\", commentStart + 2);\n\n if (commentEnd < 0) {\n return s;\n }\n\n lastEnd = commentEnd + 2;\n commentStart = str.indexOf(\"/*\", lastEnd);\n }\n\n s = s + str.slice(lastEnd);\n return s;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;\n\nvar _unesc = _interopRequireDefault(require(\"./unesc\"));\n\nexports.unesc = _unesc[\"default\"];\n\nvar _getProp = _interopRequireDefault(require(\"./getProp\"));\n\nexports.getProp = _getProp[\"default\"];\n\nvar _ensureObject = _interopRequireDefault(require(\"./ensureObject\"));\n\nexports.ensureObject = _ensureObject[\"default\"];\n\nvar _stripComments = _interopRequireDefault(require(\"./stripComments\"));\n\nexports.stripComments = _stripComments[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"../util\");\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar cloneNode = function cloneNode(obj, parent) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) {\n continue;\n }\n\n var value = obj[i];\n var type = typeof value;\n\n if (i === 'parent' && type === 'object') {\n if (parent) {\n cloned[i] = parent;\n }\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n cloned[i] = cloneNode(value, cloned);\n }\n }\n\n return cloned;\n};\n\nvar Node = /*#__PURE__*/function () {\n function Node(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n Object.assign(this, opts);\n this.spaces = this.spaces || {};\n this.spaces.before = this.spaces.before || '';\n this.spaces.after = this.spaces.after || '';\n }\n\n var _proto = Node.prototype;\n\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n };\n\n _proto.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var index in arguments) {\n this.parent.insertBefore(this, arguments[index]);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n _proto.next = function next() {\n return this.parent.at(this.parent.index(this) + 1);\n };\n\n _proto.prev = function prev() {\n return this.parent.at(this.parent.index(this) - 1);\n };\n\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows non standard syntax to be appended to an existing property\n * by specifying the escaped value. By specifying the escaped value,\n * illegal characters are allowed to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped optional. the escaped value of the property.\n */\n ;\n\n _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n var originalValue = this[name];\n var originalEscaped = this.raws[name];\n this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (originalEscaped || valueEscaped !== value) {\n this.raws[name] = (originalEscaped || originalValue) + valueEscaped;\n } else {\n delete this.raws[name]; // delete any escaped value that was created by the setter.\n }\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows the escaped value to be specified directly, allowing illegal\n * characters to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped the escaped value of the property.\n */\n ;\n\n _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n this.raws[name] = valueEscaped;\n }\n /**\n * When you want a value to passed through to CSS directly. This method\n * deletes the corresponding raw value causing the stringifier to fallback\n * to the unescaped value.\n * @param {string} name the property to set.\n * @param {any} value The value that is both escaped and unescaped.\n */\n ;\n\n _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (this.raws) {\n delete this.raws[name];\n }\n }\n /**\n *\n * @param {number} line The number (starting with 1)\n * @param {number} column The column number (starting with 1)\n */\n ;\n\n _proto.isAtPosition = function isAtPosition(line, column) {\n if (this.source && this.source.start && this.source.end) {\n if (this.source.start.line > line) {\n return false;\n }\n\n if (this.source.end.line < line) {\n return false;\n }\n\n if (this.source.start.line === line && this.source.start.column > column) {\n return false;\n }\n\n if (this.source.end.line === line && this.source.end.column < column) {\n return false;\n }\n\n return true;\n }\n\n return undefined;\n };\n\n _proto.stringifyProperty = function stringifyProperty(name) {\n return this.raws && this.raws[name] || this[name];\n };\n\n _proto.valueToString = function valueToString() {\n return String(this.stringifyProperty(\"value\"));\n };\n\n _proto.toString = function toString() {\n return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');\n };\n\n _createClass(Node, [{\n key: \"rawSpaceBefore\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces && this.spaces.before;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.before = raw;\n }\n }, {\n key: \"rawSpaceAfter\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces.after;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.after = raw;\n }\n }]);\n\n return Node;\n}();\n\nexports[\"default\"] = Node;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;\nvar TAG = 'tag';\nexports.TAG = TAG;\nvar STRING = 'string';\nexports.STRING = STRING;\nvar SELECTOR = 'selector';\nexports.SELECTOR = SELECTOR;\nvar ROOT = 'root';\nexports.ROOT = ROOT;\nvar PSEUDO = 'pseudo';\nexports.PSEUDO = PSEUDO;\nvar NESTING = 'nesting';\nexports.NESTING = NESTING;\nvar ID = 'id';\nexports.ID = ID;\nvar COMMENT = 'comment';\nexports.COMMENT = COMMENT;\nvar COMBINATOR = 'combinator';\nexports.COMBINATOR = COMBINATOR;\nvar CLASS = 'class';\nexports.CLASS = CLASS;\nvar ATTRIBUTE = 'attribute';\nexports.ATTRIBUTE = ATTRIBUTE;\nvar UNIVERSAL = 'universal';\nexports.UNIVERSAL = UNIVERSAL;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar types = _interopRequireWildcard(require(\"./types\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Container = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Container, _Node);\n\n function Container(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n\n if (!_this.nodes) {\n _this.nodes = [];\n }\n\n return _this;\n }\n\n var _proto = Container.prototype;\n\n _proto.append = function append(selector) {\n selector.parent = this;\n this.nodes.push(selector);\n return this;\n };\n\n _proto.prepend = function prepend(selector) {\n selector.parent = this;\n this.nodes.unshift(selector);\n return this;\n };\n\n _proto.at = function at(index) {\n return this.nodes[index];\n };\n\n _proto.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n }\n\n return this.nodes.indexOf(child);\n };\n\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.at(child).parent = undefined;\n this.nodes.splice(child, 1);\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n _proto.removeAll = function removeAll() {\n for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {\n var node = _step.value;\n node.parent = undefined;\n }\n\n this.nodes = [];\n return this;\n };\n\n _proto.empty = function empty() {\n return this.removeAll();\n };\n\n _proto.insertAfter = function insertAfter(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex + 1, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (oldIndex <= index) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto.insertBefore = function insertBefore(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index <= oldIndex) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto._findChildAtPosition = function _findChildAtPosition(line, col) {\n var found = undefined;\n this.each(function (node) {\n if (node.atPosition) {\n var foundChild = node.atPosition(line, col);\n\n if (foundChild) {\n found = foundChild;\n return false;\n }\n } else if (node.isAtPosition(line, col)) {\n found = node;\n return false;\n }\n });\n return found;\n }\n /**\n * Return the most specific node at the line and column number given.\n * The source location is based on the original parsed location, locations aren't\n * updated as selector nodes are mutated.\n * \n * Note that this location is relative to the location of the first character\n * of the selector, and not the location of the selector in the overall document\n * when used in conjunction with postcss.\n *\n * If not found, returns undefined.\n * @param {number} line The line number of the node to find. (1-based index)\n * @param {number} col The column number of the node to find. (1-based index)\n */\n ;\n\n _proto.atPosition = function atPosition(line, col) {\n if (this.isAtPosition(line, col)) {\n return this._findChildAtPosition(line, col) || this;\n } else {\n return undefined;\n }\n };\n\n _proto._inferEndPosition = function _inferEndPosition() {\n if (this.last && this.last.source && this.last.source.end) {\n this.source = this.source || {};\n this.source.end = this.source.end || {};\n Object.assign(this.source.end, this.last.source.end);\n }\n };\n\n _proto.each = function each(callback) {\n if (!this.lastEach) {\n this.lastEach = 0;\n }\n\n if (!this.indexes) {\n this.indexes = {};\n }\n\n this.lastEach++;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.length) {\n return undefined;\n }\n\n var index, result;\n\n while (this.indexes[id] < this.length) {\n index = this.indexes[id];\n result = callback(this.at(index), index);\n\n if (result === false) {\n break;\n }\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n if (result === false) {\n return false;\n }\n };\n\n _proto.walk = function walk(callback) {\n return this.each(function (node, i) {\n var result = callback(node, i);\n\n if (result !== false && node.length) {\n result = node.walk(callback);\n }\n\n if (result === false) {\n return false;\n }\n });\n };\n\n _proto.walkAttributes = function walkAttributes(callback) {\n var _this2 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ATTRIBUTE) {\n return callback.call(_this2, selector);\n }\n });\n };\n\n _proto.walkClasses = function walkClasses(callback) {\n var _this3 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.CLASS) {\n return callback.call(_this3, selector);\n }\n });\n };\n\n _proto.walkCombinators = function walkCombinators(callback) {\n var _this4 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMBINATOR) {\n return callback.call(_this4, selector);\n }\n });\n };\n\n _proto.walkComments = function walkComments(callback) {\n var _this5 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMMENT) {\n return callback.call(_this5, selector);\n }\n });\n };\n\n _proto.walkIds = function walkIds(callback) {\n var _this6 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ID) {\n return callback.call(_this6, selector);\n }\n });\n };\n\n _proto.walkNesting = function walkNesting(callback) {\n var _this7 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.NESTING) {\n return callback.call(_this7, selector);\n }\n });\n };\n\n _proto.walkPseudos = function walkPseudos(callback) {\n var _this8 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.PSEUDO) {\n return callback.call(_this8, selector);\n }\n });\n };\n\n _proto.walkTags = function walkTags(callback) {\n var _this9 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.TAG) {\n return callback.call(_this9, selector);\n }\n });\n };\n\n _proto.walkUniversals = function walkUniversals(callback) {\n var _this10 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.UNIVERSAL) {\n return callback.call(_this10, selector);\n }\n });\n };\n\n _proto.split = function split(callback) {\n var _this11 = this;\n\n var current = [];\n return this.reduce(function (memo, node, index) {\n var split = callback.call(_this11, node);\n current.push(node);\n\n if (split) {\n memo.push(current);\n current = [];\n } else if (index === _this11.length - 1) {\n memo.push(current);\n }\n\n return memo;\n }, []);\n };\n\n _proto.map = function map(callback) {\n return this.nodes.map(callback);\n };\n\n _proto.reduce = function reduce(callback, memo) {\n return this.nodes.reduce(callback, memo);\n };\n\n _proto.every = function every(callback) {\n return this.nodes.every(callback);\n };\n\n _proto.some = function some(callback) {\n return this.nodes.some(callback);\n };\n\n _proto.filter = function filter(callback) {\n return this.nodes.filter(callback);\n };\n\n _proto.sort = function sort(callback) {\n return this.nodes.sort(callback);\n };\n\n _proto.toString = function toString() {\n return this.map(String).join('');\n };\n\n _createClass(Container, [{\n key: \"first\",\n get: function get() {\n return this.at(0);\n }\n }, {\n key: \"last\",\n get: function get() {\n return this.at(this.length - 1);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this.nodes.length;\n }\n }]);\n\n return Container;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Container;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Root = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Root, _Container);\n\n function Root(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.ROOT;\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.toString = function toString() {\n var str = this.reduce(function (memo, selector) {\n memo.push(String(selector));\n return memo;\n }, []).join(',');\n return this.trailingComma ? str + ',' : str;\n };\n\n _proto.error = function error(message, options) {\n if (this._error) {\n return this._error(message, options);\n } else {\n return new Error(message);\n }\n };\n\n _createClass(Root, [{\n key: \"errorGenerator\",\n set: function set(handler) {\n this._error = handler;\n }\n }]);\n\n return Root;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Root;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Selector = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Selector, _Container);\n\n function Selector(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.SELECTOR;\n return _this;\n }\n\n return Selector;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Selector;\nmodule.exports = exports.default;","/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ClassName = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ClassName, _Node);\n\n function ClassName(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.CLASS;\n _this._constructed = true;\n return _this;\n }\n\n var _proto = ClassName.prototype;\n\n _proto.valueToString = function valueToString() {\n return '.' + _Node.prototype.valueToString.call(this);\n };\n\n _createClass(ClassName, [{\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(v) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped !== v) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.value = escaped;\n } else if (this.raws) {\n delete this.raws.value;\n }\n }\n\n this._value = v;\n }\n }]);\n\n return ClassName;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ClassName;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Comment = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Comment, _Node);\n\n function Comment(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMMENT;\n return _this;\n }\n\n return Comment;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Comment;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ID = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ID, _Node);\n\n function ID(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.ID;\n return _this;\n }\n\n var _proto = ID.prototype;\n\n _proto.valueToString = function valueToString() {\n return '#' + _Node.prototype.valueToString.call(this);\n };\n\n return ID;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ID;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Namespace = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Namespace, _Node);\n\n function Namespace() {\n return _Node.apply(this, arguments) || this;\n }\n\n var _proto = Namespace.prototype;\n\n _proto.qualifiedName = function qualifiedName(value) {\n if (this.namespace) {\n return this.namespaceString + \"|\" + value;\n } else {\n return value;\n }\n };\n\n _proto.valueToString = function valueToString() {\n return this.qualifiedName(_Node.prototype.valueToString.call(this));\n };\n\n _createClass(Namespace, [{\n key: \"namespace\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n if (namespace === true || namespace === \"*\" || namespace === \"&\") {\n this._namespace = namespace;\n\n if (this.raws) {\n delete this.raws.namespace;\n }\n\n return;\n }\n\n var escaped = (0, _cssesc[\"default\"])(namespace, {\n isIdentifier: true\n });\n this._namespace = namespace;\n\n if (escaped !== namespace) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.namespace = escaped;\n } else if (this.raws) {\n delete this.raws.namespace;\n }\n }\n }, {\n key: \"ns\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n this.namespace = namespace;\n }\n }, {\n key: \"namespaceString\",\n get: function get() {\n if (this.namespace) {\n var ns = this.stringifyProperty(\"namespace\");\n\n if (ns === true) {\n return '';\n } else {\n return ns;\n }\n } else {\n return '';\n }\n }\n }]);\n\n return Namespace;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Namespace;\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Tag = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Tag, _Namespace);\n\n function Tag(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.TAG;\n return _this;\n }\n\n return Tag;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Tag;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar String = /*#__PURE__*/function (_Node) {\n _inheritsLoose(String, _Node);\n\n function String(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.STRING;\n return _this;\n }\n\n return String;\n}(_node[\"default\"]);\n\nexports[\"default\"] = String;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Pseudo = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Pseudo, _Container);\n\n function Pseudo(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.PSEUDO;\n return _this;\n }\n\n var _proto = Pseudo.prototype;\n\n _proto.toString = function toString() {\n var params = this.length ? '(' + this.map(String).join(',') + ')' : '';\n return [this.rawSpaceBefore, this.stringifyProperty(\"value\"), params, this.rawSpaceAfter].join('');\n };\n\n return Pseudo;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Pseudo;\nmodule.exports = exports.default;","\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.unescapeValue = unescapeValue;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _unesc = _interopRequireDefault(require(\"../util/unesc\"));\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nvar _CSSESC_QUOTE_OPTIONS;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar deprecate = require(\"util-deprecate\");\n\nvar WRAPPED_IN_QUOTES = /^('|\")([^]*)\\1$/;\nvar warnOfDeprecatedValueAssignment = deprecate(function () {}, \"Assigning an attribute a value containing characters that might need to be escaped is deprecated. \" + \"Call attribute.setValue() instead.\");\nvar warnOfDeprecatedQuotedAssignment = deprecate(function () {}, \"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.\");\nvar warnOfDeprecatedConstructor = deprecate(function () {}, \"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.\");\n\nfunction unescapeValue(value) {\n var deprecatedUsage = false;\n var quoteMark = null;\n var unescaped = value;\n var m = unescaped.match(WRAPPED_IN_QUOTES);\n\n if (m) {\n quoteMark = m[1];\n unescaped = m[2];\n }\n\n unescaped = (0, _unesc[\"default\"])(unescaped);\n\n if (unescaped !== value) {\n deprecatedUsage = true;\n }\n\n return {\n deprecatedUsage: deprecatedUsage,\n unescaped: unescaped,\n quoteMark: quoteMark\n };\n}\n\nfunction handleDeprecatedContructorOpts(opts) {\n if (opts.quoteMark !== undefined) {\n return opts;\n }\n\n if (opts.value === undefined) {\n return opts;\n }\n\n warnOfDeprecatedConstructor();\n\n var _unescapeValue = unescapeValue(opts.value),\n quoteMark = _unescapeValue.quoteMark,\n unescaped = _unescapeValue.unescaped;\n\n if (!opts.raws) {\n opts.raws = {};\n }\n\n if (opts.raws.value === undefined) {\n opts.raws.value = opts.value;\n }\n\n opts.value = unescaped;\n opts.quoteMark = quoteMark;\n return opts;\n}\n\nvar Attribute = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Attribute, _Namespace);\n\n function Attribute(opts) {\n var _this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;\n _this.type = _types.ATTRIBUTE;\n _this.raws = _this.raws || {};\n Object.defineProperty(_this.raws, 'unquoted', {\n get: deprecate(function () {\n return _this.value;\n }, \"attr.raws.unquoted is deprecated. Call attr.value instead.\"),\n set: deprecate(function () {\n return _this.value;\n }, \"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.\")\n });\n _this._constructed = true;\n return _this;\n }\n /**\n * Returns the Attribute's value quoted such that it would be legal to use\n * in the value of a css file. The original value's quotation setting\n * used for stringification is left unchanged. See `setValue(value, options)`\n * if you want to control the quote settings of a new value for the attribute.\n *\n * You can also change the quotation used for the current value by setting quoteMark.\n *\n * Options:\n * * quoteMark {'\"' | \"'\" | null} - Use this value to quote the value. If this\n * option is not set, the original value for quoteMark will be used. If\n * indeterminate, a double quote is used. The legal values are:\n * * `null` - the value will be unquoted and characters will be escaped as necessary.\n * * `'` - the value will be quoted with a single quote and single quotes are escaped.\n * * `\"` - the value will be quoted with a double quote and double quotes are escaped.\n * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark\n * over the quoteMark option value.\n * * smart {boolean} - if true, will select a quote mark based on the value\n * and the other options specified here. See the `smartQuoteMark()`\n * method.\n **/\n\n\n var _proto = Attribute.prototype;\n\n _proto.getQuotedValue = function getQuotedValue(options) {\n if (options === void 0) {\n options = {};\n }\n\n var quoteMark = this._determineQuoteMark(options);\n\n var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];\n var escaped = (0, _cssesc[\"default\"])(this._value, cssescopts);\n return escaped;\n };\n\n _proto._determineQuoteMark = function _determineQuoteMark(options) {\n return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);\n }\n /**\n * Set the unescaped value with the specified quotation options. The value\n * provided must not include any wrapping quote marks -- those quotes will\n * be interpreted as part of the value and escaped accordingly.\n */\n ;\n\n _proto.setValue = function setValue(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n this._value = value;\n this._quoteMark = this._determineQuoteMark(options);\n\n this._syncRawValue();\n }\n /**\n * Intelligently select a quoteMark value based on the value's contents. If\n * the value is a legal CSS ident, it will not be quoted. Otherwise a quote\n * mark will be picked that minimizes the number of escapes.\n *\n * If there's no clear winner, the quote mark from these options is used,\n * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is\n * true). If the quoteMark is unspecified, a double quote is used.\n *\n * @param options This takes the quoteMark and preferCurrentQuoteMark options\n * from the quoteValue method.\n */\n ;\n\n _proto.smartQuoteMark = function smartQuoteMark(options) {\n var v = this.value;\n var numSingleQuotes = v.replace(/[^']/g, '').length;\n var numDoubleQuotes = v.replace(/[^\"]/g, '').length;\n\n if (numSingleQuotes + numDoubleQuotes === 0) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped === v) {\n return Attribute.NO_QUOTE;\n } else {\n var pref = this.preferredQuoteMark(options);\n\n if (pref === Attribute.NO_QUOTE) {\n // pick a quote mark that isn't none and see if it's smaller\n var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;\n var opts = CSSESC_QUOTE_OPTIONS[quote];\n var quoteValue = (0, _cssesc[\"default\"])(v, opts);\n\n if (quoteValue.length < escaped.length) {\n return quote;\n }\n }\n\n return pref;\n }\n } else if (numDoubleQuotes === numSingleQuotes) {\n return this.preferredQuoteMark(options);\n } else if (numDoubleQuotes < numSingleQuotes) {\n return Attribute.DOUBLE_QUOTE;\n } else {\n return Attribute.SINGLE_QUOTE;\n }\n }\n /**\n * Selects the preferred quote mark based on the options and the current quote mark value.\n * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`\n * instead.\n */\n ;\n\n _proto.preferredQuoteMark = function preferredQuoteMark(options) {\n var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;\n\n if (quoteMark === undefined) {\n quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;\n }\n\n if (quoteMark === undefined) {\n quoteMark = Attribute.DOUBLE_QUOTE;\n }\n\n return quoteMark;\n };\n\n _proto._syncRawValue = function _syncRawValue() {\n var rawValue = (0, _cssesc[\"default\"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);\n\n if (rawValue === this._value) {\n if (this.raws) {\n delete this.raws.value;\n }\n } else {\n this.raws.value = rawValue;\n }\n };\n\n _proto._handleEscapes = function _handleEscapes(prop, value) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(value, {\n isIdentifier: true\n });\n\n if (escaped !== value) {\n this.raws[prop] = escaped;\n } else {\n delete this.raws[prop];\n }\n }\n };\n\n _proto._spacesFor = function _spacesFor(name) {\n var attrSpaces = {\n before: '',\n after: ''\n };\n var spaces = this.spaces[name] || {};\n var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};\n return Object.assign(attrSpaces, spaces, rawSpaces);\n };\n\n _proto._stringFor = function _stringFor(name, spaceName, concat) {\n if (spaceName === void 0) {\n spaceName = name;\n }\n\n if (concat === void 0) {\n concat = defaultAttrConcat;\n }\n\n var attrSpaces = this._spacesFor(spaceName);\n\n return concat(this.stringifyProperty(name), attrSpaces);\n }\n /**\n * returns the offset of the attribute part specified relative to the\n * start of the node of the output string.\n *\n * * \"ns\" - alias for \"namespace\"\n * * \"namespace\" - the namespace if it exists.\n * * \"attribute\" - the attribute name\n * * \"attributeNS\" - the start of the attribute or its namespace\n * * \"operator\" - the match operator of the attribute\n * * \"value\" - The value (string or identifier)\n * * \"insensitive\" - the case insensitivity flag;\n * @param part One of the possible values inside an attribute.\n * @returns -1 if the name is invalid or the value doesn't exist in this attribute.\n */\n ;\n\n _proto.offsetOf = function offsetOf(name) {\n var count = 1;\n\n var attributeSpaces = this._spacesFor(\"attribute\");\n\n count += attributeSpaces.before.length;\n\n if (name === \"namespace\" || name === \"ns\") {\n return this.namespace ? count : -1;\n }\n\n if (name === \"attributeNS\") {\n return count;\n }\n\n count += this.namespaceString.length;\n\n if (this.namespace) {\n count += 1;\n }\n\n if (name === \"attribute\") {\n return count;\n }\n\n count += this.stringifyProperty(\"attribute\").length;\n count += attributeSpaces.after.length;\n\n var operatorSpaces = this._spacesFor(\"operator\");\n\n count += operatorSpaces.before.length;\n var operator = this.stringifyProperty(\"operator\");\n\n if (name === \"operator\") {\n return operator ? count : -1;\n }\n\n count += operator.length;\n count += operatorSpaces.after.length;\n\n var valueSpaces = this._spacesFor(\"value\");\n\n count += valueSpaces.before.length;\n var value = this.stringifyProperty(\"value\");\n\n if (name === \"value\") {\n return value ? count : -1;\n }\n\n count += value.length;\n count += valueSpaces.after.length;\n\n var insensitiveSpaces = this._spacesFor(\"insensitive\");\n\n count += insensitiveSpaces.before.length;\n\n if (name === \"insensitive\") {\n return this.insensitive ? count : -1;\n }\n\n return -1;\n };\n\n _proto.toString = function toString() {\n var _this2 = this;\n\n var selector = [this.rawSpaceBefore, '['];\n selector.push(this._stringFor('qualifiedAttribute', 'attribute'));\n\n if (this.operator && (this.value || this.value === '')) {\n selector.push(this._stringFor('operator'));\n selector.push(this._stringFor('value'));\n selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {\n if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {\n attrSpaces.before = \" \";\n }\n\n return defaultAttrConcat(attrValue, attrSpaces);\n }));\n }\n\n selector.push(']');\n selector.push(this.rawSpaceAfter);\n return selector.join('');\n };\n\n _createClass(Attribute, [{\n key: \"quoted\",\n get: function get() {\n var qm = this.quoteMark;\n return qm === \"'\" || qm === '\"';\n },\n set: function set(value) {\n warnOfDeprecatedQuotedAssignment();\n }\n /**\n * returns a single (`'`) or double (`\"`) quote character if the value is quoted.\n * returns `null` if the value is not quoted.\n * returns `undefined` if the quotation state is unknown (this can happen when\n * the attribute is constructed without specifying a quote mark.)\n */\n\n }, {\n key: \"quoteMark\",\n get: function get() {\n return this._quoteMark;\n }\n /**\n * Set the quote mark to be used by this attribute's value.\n * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute\n * value is updated accordingly.\n *\n * @param {\"'\" | '\"' | null} quoteMark The quote mark or `null` if the value should be unquoted.\n */\n ,\n set: function set(quoteMark) {\n if (!this._constructed) {\n this._quoteMark = quoteMark;\n return;\n }\n\n if (this._quoteMark !== quoteMark) {\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n }\n }\n }, {\n key: \"qualifiedAttribute\",\n get: function get() {\n return this.qualifiedName(this.raws.attribute || this.attribute);\n }\n }, {\n key: \"insensitiveFlag\",\n get: function get() {\n return this.insensitive ? 'i' : '';\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n }\n /**\n * Before 3.0, the value had to be set to an escaped value including any wrapped\n * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value\n * is unescaped during parsing and any quote marks are removed.\n *\n * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,\n * a deprecation warning is raised when the new value contains any characters that would\n * require escaping (including if it contains wrapped quotes).\n *\n * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe\n * how the new value is quoted.\n */\n ,\n set: function set(v) {\n if (this._constructed) {\n var _unescapeValue2 = unescapeValue(v),\n deprecatedUsage = _unescapeValue2.deprecatedUsage,\n unescaped = _unescapeValue2.unescaped,\n quoteMark = _unescapeValue2.quoteMark;\n\n if (deprecatedUsage) {\n warnOfDeprecatedValueAssignment();\n }\n\n if (unescaped === this._value && quoteMark === this._quoteMark) {\n return;\n }\n\n this._value = unescaped;\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n } else {\n this._value = v;\n }\n }\n }, {\n key: \"attribute\",\n get: function get() {\n return this._attribute;\n },\n set: function set(name) {\n this._handleEscapes(\"attribute\", name);\n\n this._attribute = name;\n }\n }]);\n\n return Attribute;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Attribute;\nAttribute.NO_QUOTE = null;\nAttribute.SINGLE_QUOTE = \"'\";\nAttribute.DOUBLE_QUOTE = '\"';\nvar CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {\n \"'\": {\n quotes: 'single',\n wrap: true\n },\n '\"': {\n quotes: 'double',\n wrap: true\n }\n}, _CSSESC_QUOTE_OPTIONS[null] = {\n isIdentifier: true\n}, _CSSESC_QUOTE_OPTIONS);\n\nfunction defaultAttrConcat(attrValue, attrSpaces) {\n return \"\" + attrSpaces.before + attrValue + attrSpaces.after;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Universal = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Universal, _Namespace);\n\n function Universal(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.UNIVERSAL;\n _this.value = '*';\n return _this;\n }\n\n return Universal;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Universal;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Combinator = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Combinator, _Node);\n\n function Combinator(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMBINATOR;\n return _this;\n }\n\n return Combinator;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Combinator;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Nesting = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Nesting, _Node);\n\n function Nesting(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.NESTING;\n _this.value = '&';\n return _this;\n }\n\n return Nesting;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Nesting;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = sortAscending;\n\nfunction sortAscending(list) {\n return list.sort(function (a, b) {\n return a - b;\n });\n}\n\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;\nvar ampersand = 38; // `&`.charCodeAt(0);\n\nexports.ampersand = ampersand;\nvar asterisk = 42; // `*`.charCodeAt(0);\n\nexports.asterisk = asterisk;\nvar at = 64; // `@`.charCodeAt(0);\n\nexports.at = at;\nvar comma = 44; // `,`.charCodeAt(0);\n\nexports.comma = comma;\nvar colon = 58; // `:`.charCodeAt(0);\n\nexports.colon = colon;\nvar semicolon = 59; // `;`.charCodeAt(0);\n\nexports.semicolon = semicolon;\nvar openParenthesis = 40; // `(`.charCodeAt(0);\n\nexports.openParenthesis = openParenthesis;\nvar closeParenthesis = 41; // `)`.charCodeAt(0);\n\nexports.closeParenthesis = closeParenthesis;\nvar openSquare = 91; // `[`.charCodeAt(0);\n\nexports.openSquare = openSquare;\nvar closeSquare = 93; // `]`.charCodeAt(0);\n\nexports.closeSquare = closeSquare;\nvar dollar = 36; // `$`.charCodeAt(0);\n\nexports.dollar = dollar;\nvar tilde = 126; // `~`.charCodeAt(0);\n\nexports.tilde = tilde;\nvar caret = 94; // `^`.charCodeAt(0);\n\nexports.caret = caret;\nvar plus = 43; // `+`.charCodeAt(0);\n\nexports.plus = plus;\nvar equals = 61; // `=`.charCodeAt(0);\n\nexports.equals = equals;\nvar pipe = 124; // `|`.charCodeAt(0);\n\nexports.pipe = pipe;\nvar greaterThan = 62; // `>`.charCodeAt(0);\n\nexports.greaterThan = greaterThan;\nvar space = 32; // ` `.charCodeAt(0);\n\nexports.space = space;\nvar singleQuote = 39; // `'`.charCodeAt(0);\n\nexports.singleQuote = singleQuote;\nvar doubleQuote = 34; // `\"`.charCodeAt(0);\n\nexports.doubleQuote = doubleQuote;\nvar slash = 47; // `/`.charCodeAt(0);\n\nexports.slash = slash;\nvar bang = 33; // `!`.charCodeAt(0);\n\nexports.bang = bang;\nvar backslash = 92; // '\\\\'.charCodeAt(0);\n\nexports.backslash = backslash;\nvar cr = 13; // '\\r'.charCodeAt(0);\n\nexports.cr = cr;\nvar feed = 12; // '\\f'.charCodeAt(0);\n\nexports.feed = feed;\nvar newline = 10; // '\\n'.charCodeAt(0);\n\nexports.newline = newline;\nvar tab = 9; // '\\t'.charCodeAt(0);\n// Expose aliases primarily for readability.\n\nexports.tab = tab;\nvar str = singleQuote; // No good single character representation!\n\nexports.str = str;\nvar comment = -1;\nexports.comment = comment;\nvar word = -2;\nexports.word = word;\nvar combinator = -3;\nexports.combinator = combinator;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = tokenize;\nexports.FIELDS = void 0;\n\nvar t = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar _unescapable, _wordDelimiters;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);\nvar wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);\nvar hex = {};\nvar hexChars = \"0123456789abcdefABCDEF\";\n\nfor (var i = 0; i < hexChars.length; i++) {\n hex[hexChars.charCodeAt(i)] = true;\n}\n/**\n * Returns the last index of the bar css word\n * @param {string} css The string in which the word begins\n * @param {number} start The index into the string where word's first letter occurs\n */\n\n\nfunction consumeWord(css, start) {\n var next = start;\n var code;\n\n do {\n code = css.charCodeAt(next);\n\n if (wordDelimiters[code]) {\n return next - 1;\n } else if (code === t.backslash) {\n next = consumeEscape(css, next) + 1;\n } else {\n // All other characters are part of the word\n next++;\n }\n } while (next < css.length);\n\n return next - 1;\n}\n/**\n * Returns the last index of the escape sequence\n * @param {string} css The string in which the sequence begins\n * @param {number} start The index into the string where escape character (`\\`) occurs.\n */\n\n\nfunction consumeEscape(css, start) {\n var next = start;\n var code = css.charCodeAt(next + 1);\n\n if (unescapable[code]) {// just consume the escape char\n } else if (hex[code]) {\n var hexDigits = 0; // consume up to 6 hex chars\n\n do {\n next++;\n hexDigits++;\n code = css.charCodeAt(next + 1);\n } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape\n\n\n if (hexDigits < 6 && code === t.space) {\n next++;\n }\n } else {\n // the next char is part of the current word\n next++;\n }\n\n return next;\n}\n\nvar FIELDS = {\n TYPE: 0,\n START_LINE: 1,\n START_COL: 2,\n END_LINE: 3,\n END_COL: 4,\n START_POS: 5,\n END_POS: 6\n};\nexports.FIELDS = FIELDS;\n\nfunction tokenize(input) {\n var tokens = [];\n var css = input.css.valueOf();\n var _css = css,\n length = _css.length;\n var offset = -1;\n var line = 1;\n var start = 0;\n var end = 0;\n var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;\n\n function unclosed(what, fix) {\n if (input.safe) {\n // fyi: this is never set to true.\n css += fix;\n next = css.length - 1;\n } else {\n throw input.error('Unclosed ' + what, line, start - offset, start);\n }\n }\n\n while (start < length) {\n code = css.charCodeAt(start);\n\n if (code === t.newline) {\n offset = start;\n line += 1;\n }\n\n switch (code) {\n case t.space:\n case t.tab:\n case t.newline:\n case t.cr:\n case t.feed:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n\n if (code === t.newline) {\n offset = next;\n line += 1;\n }\n } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);\n\n tokenType = t.space;\n endLine = line;\n endColumn = next - offset - 1;\n end = next;\n break;\n\n case t.plus:\n case t.greaterThan:\n case t.tilde:\n case t.pipe:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);\n\n tokenType = t.combinator;\n endLine = line;\n endColumn = start - offset;\n end = next;\n break;\n // Consume these characters as single tokens.\n\n case t.asterisk:\n case t.ampersand:\n case t.bang:\n case t.comma:\n case t.equals:\n case t.dollar:\n case t.caret:\n case t.openSquare:\n case t.closeSquare:\n case t.colon:\n case t.semicolon:\n case t.openParenthesis:\n case t.closeParenthesis:\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n case t.singleQuote:\n case t.doubleQuote:\n quote = code === t.singleQuote ? \"'\" : '\"';\n next = start;\n\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n\n if (next === -1) {\n unclosed('quote', quote);\n }\n\n escapePos = next;\n\n while (css.charCodeAt(escapePos - 1) === t.backslash) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n tokenType = t.str;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n default:\n if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {\n next = css.indexOf('*/', start + 2) + 1;\n\n if (next === 0) {\n unclosed('comment', '*/');\n }\n\n content = css.slice(start, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokenType = t.comment;\n line = nextLine;\n endLine = nextLine;\n endColumn = next - nextOffset;\n } else if (code === t.slash) {\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n } else {\n next = consumeWord(css, start);\n tokenType = t.word;\n endLine = line;\n endColumn = next - offset;\n }\n\n end = next + 1;\n break;\n } // Ensure that the token structure remains consistent\n\n\n tokens.push([tokenType, // [0] Token type\n line, // [1] Starting line\n start - offset, // [2] Starting column\n endLine, // [3] Ending line\n endColumn, // [4] Ending column\n start, // [5] Start position / Source index\n end // [6] End position\n ]); // Reset offset for the next token\n\n if (nextOffset) {\n offset = nextOffset;\n nextOffset = null;\n }\n\n start = end;\n }\n\n return tokens;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _root = _interopRequireDefault(require(\"./selectors/root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selectors/selector\"));\n\nvar _className = _interopRequireDefault(require(\"./selectors/className\"));\n\nvar _comment = _interopRequireDefault(require(\"./selectors/comment\"));\n\nvar _id = _interopRequireDefault(require(\"./selectors/id\"));\n\nvar _tag = _interopRequireDefault(require(\"./selectors/tag\"));\n\nvar _string = _interopRequireDefault(require(\"./selectors/string\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./selectors/pseudo\"));\n\nvar _attribute = _interopRequireWildcard(require(\"./selectors/attribute\"));\n\nvar _universal = _interopRequireDefault(require(\"./selectors/universal\"));\n\nvar _combinator = _interopRequireDefault(require(\"./selectors/combinator\"));\n\nvar _nesting = _interopRequireDefault(require(\"./selectors/nesting\"));\n\nvar _sortAscending = _interopRequireDefault(require(\"./sortAscending\"));\n\nvar _tokenize = _interopRequireWildcard(require(\"./tokenize\"));\n\nvar tokens = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar types = _interopRequireWildcard(require(\"./selectors/types\"));\n\nvar _util = require(\"./util\");\n\nvar _WHITESPACE_TOKENS, _Object$assign;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);\nvar WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));\n\nfunction tokenStart(token) {\n return {\n line: token[_tokenize.FIELDS.START_LINE],\n column: token[_tokenize.FIELDS.START_COL]\n };\n}\n\nfunction tokenEnd(token) {\n return {\n line: token[_tokenize.FIELDS.END_LINE],\n column: token[_tokenize.FIELDS.END_COL]\n };\n}\n\nfunction getSource(startLine, startColumn, endLine, endColumn) {\n return {\n start: {\n line: startLine,\n column: startColumn\n },\n end: {\n line: endLine,\n column: endColumn\n }\n };\n}\n\nfunction getTokenSource(token) {\n return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);\n}\n\nfunction getTokenSourceSpan(startToken, endToken) {\n if (!startToken) {\n return undefined;\n }\n\n return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);\n}\n\nfunction unescapeProp(node, prop) {\n var value = node[prop];\n\n if (typeof value !== \"string\") {\n return;\n }\n\n if (value.indexOf(\"\\\\\") !== -1) {\n (0, _util.ensureObject)(node, 'raws');\n node[prop] = (0, _util.unesc)(value);\n\n if (node.raws[prop] === undefined) {\n node.raws[prop] = value;\n }\n }\n\n return node;\n}\n\nfunction indexesOf(array, item) {\n var i = -1;\n var indexes = [];\n\n while ((i = array.indexOf(item, i + 1)) !== -1) {\n indexes.push(i);\n }\n\n return indexes;\n}\n\nfunction uniqs() {\n var list = Array.prototype.concat.apply([], arguments);\n return list.filter(function (item, i) {\n return i === list.indexOf(item);\n });\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.rule = rule;\n this.options = Object.assign({\n lossy: false,\n safe: false\n }, options);\n this.position = 0;\n this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;\n this.tokens = (0, _tokenize[\"default\"])({\n css: this.css,\n error: this._errorGenerator(),\n safe: this.options.safe\n });\n var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);\n this.root = new _root[\"default\"]({\n source: rootSource\n });\n this.root.errorGenerator = this._errorGenerator();\n var selector = new _selector[\"default\"]({\n source: {\n start: {\n line: 1,\n column: 1\n }\n }\n });\n this.root.append(selector);\n this.current = selector;\n this.loop();\n }\n\n var _proto = Parser.prototype;\n\n _proto._errorGenerator = function _errorGenerator() {\n var _this = this;\n\n return function (message, errorOptions) {\n if (typeof _this.rule === 'string') {\n return new Error(message);\n }\n\n return _this.rule.error(message, errorOptions);\n };\n };\n\n _proto.attribute = function attribute() {\n var attr = [];\n var startingToken = this.currToken;\n this.position++;\n\n while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n attr.push(this.currToken);\n this.position++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n\n var len = attr.length;\n var node = {\n source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n };\n\n if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {\n return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);\n }\n\n var pos = 0;\n var spaceBefore = '';\n var commentBefore = '';\n var lastAdded = null;\n var spaceAfterMeaningfulToken = false;\n\n while (pos < len) {\n var token = attr[pos];\n var content = this.content(token);\n var next = attr[pos + 1];\n\n switch (token[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n // if (\n // len === 1 ||\n // pos === 0 && this.content(next) === '|'\n // ) {\n // return this.expected('attribute', token[TOKEN.START_POS], content);\n // }\n spaceAfterMeaningfulToken = true;\n\n if (this.options.lossy) {\n break;\n }\n\n if (lastAdded) {\n (0, _util.ensureObject)(node, 'spaces', lastAdded);\n var prevContent = node.spaces[lastAdded].after || '';\n node.spaces[lastAdded].after = prevContent + content;\n var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;\n\n if (existingComment) {\n node.raws.spaces[lastAdded].after = existingComment + content;\n }\n } else {\n spaceBefore = spaceBefore + content;\n commentBefore = commentBefore + content;\n }\n\n break;\n\n case tokens.asterisk:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if ((!node.namespace || lastAdded === \"namespace\" && !spaceAfterMeaningfulToken) && next) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = spaceBefore;\n commentBefore = '';\n }\n\n node.namespace = (node.namespace || \"\") + content;\n var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;\n\n if (rawValue) {\n node.raws.namespace += content;\n }\n\n lastAdded = 'namespace';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.dollar:\n if (lastAdded === \"value\") {\n var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');\n node.value += \"$\";\n\n if (oldRawValue) {\n node.raws.value = oldRawValue + \"$\";\n }\n\n break;\n }\n\n // Falls through\n\n case tokens.caret:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.combinator:\n if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n if (content !== '|') {\n spaceAfterMeaningfulToken = false;\n break;\n }\n\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if (!node.namespace && !node.attribute) {\n node.namespace = true;\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.word:\n if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.\n !node.operator && !node.namespace) {\n node.namespace = content;\n lastAdded = 'namespace';\n } else if (!node.attribute || lastAdded === \"attribute\" && !spaceAfterMeaningfulToken) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = commentBefore;\n commentBefore = '';\n }\n\n node.attribute = (node.attribute || \"\") + content;\n\n var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;\n\n if (_rawValue) {\n node.raws.attribute += content;\n }\n\n lastAdded = 'attribute';\n } else if (!node.value && node.value !== \"\" || lastAdded === \"value\" && !spaceAfterMeaningfulToken) {\n var _unescaped = (0, _util.unesc)(content);\n\n var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';\n\n var oldValue = node.value || '';\n node.value = oldValue + _unescaped;\n node.quoteMark = null;\n\n if (_unescaped !== content || _oldRawValue) {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = (_oldRawValue || oldValue) + content;\n }\n\n lastAdded = 'value';\n } else {\n var insensitive = content === 'i' || content === \"I\";\n\n if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {\n node.insensitive = insensitive;\n\n if (!insensitive || content === \"I\") {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.insensitiveFlag = content;\n }\n\n lastAdded = 'insensitive';\n\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'insensitive');\n node.spaces.insensitive.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');\n node.raws.spaces.insensitive.before = commentBefore;\n commentBefore = '';\n }\n } else if (node.value || node.value === '') {\n lastAdded = 'value';\n node.value += content;\n\n if (node.raws.value) {\n node.raws.value += content;\n }\n }\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.str:\n if (!node.attribute || !node.operator) {\n return this.error(\"Expected an attribute followed by an operator preceding the string.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n var _unescapeValue = (0, _attribute.unescapeValue)(content),\n unescaped = _unescapeValue.unescaped,\n quoteMark = _unescapeValue.quoteMark;\n\n node.value = unescaped;\n node.quoteMark = quoteMark;\n lastAdded = 'value';\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = content;\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.equals:\n if (!node.attribute) {\n return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);\n }\n\n if (node.value) {\n return this.error('Unexpected \"=\" found; an operator was already defined.', {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n node.operator = node.operator ? node.operator + content : content;\n lastAdded = 'operator';\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.comment:\n if (lastAdded) {\n if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {\n var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';\n var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;\n (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);\n node.raws.spaces[lastAdded].after = rawLastComment + content;\n } else {\n var lastValue = node[lastAdded] || '';\n var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;\n (0, _util.ensureObject)(node, 'raws');\n node.raws[lastAdded] = rawLastValue + content;\n }\n } else {\n commentBefore = commentBefore + content;\n }\n\n break;\n\n default:\n return this.error(\"Unexpected \\\"\" + content + \"\\\" found.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n pos++;\n }\n\n unescapeProp(node, \"attribute\");\n unescapeProp(node, \"namespace\");\n this.newNode(new _attribute[\"default\"](node));\n this.position++;\n }\n /**\n * return a node containing meaningless garbage up to (but not including) the specified token position.\n * if the token position is negative, all remaining tokens are consumed.\n *\n * This returns an array containing a single string node if all whitespace,\n * otherwise an array of comment nodes with space before and after.\n *\n * These tokens are not added to the current selector, the caller can add them or use them to amend\n * a previous node's space metadata.\n *\n * In lossy mode, this returns only comments.\n */\n ;\n\n _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {\n if (stopPosition < 0) {\n stopPosition = this.tokens.length;\n }\n\n var startPosition = this.position;\n var nodes = [];\n var space = \"\";\n var lastComment = undefined;\n\n do {\n if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {\n if (!this.options.lossy) {\n space += this.content();\n }\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {\n var spaces = {};\n\n if (space) {\n spaces.before = space;\n space = \"\";\n }\n\n lastComment = new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n spaces: spaces\n });\n nodes.push(lastComment);\n }\n } while (++this.position < stopPosition);\n\n if (space) {\n if (lastComment) {\n lastComment.spaces.after = space;\n } else if (!this.options.lossy) {\n var firstToken = this.tokens[startPosition];\n var lastToken = this.tokens[this.position - 1];\n nodes.push(new _string[\"default\"]({\n value: '',\n source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: {\n before: space,\n after: ''\n }\n }));\n }\n }\n\n return nodes;\n }\n /**\n * \n * @param {*} nodes \n */\n ;\n\n _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {\n var _this2 = this;\n\n if (requiredSpace === void 0) {\n requiredSpace = false;\n }\n\n var space = \"\";\n var rawSpace = \"\";\n nodes.forEach(function (n) {\n var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);\n\n var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);\n\n space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);\n rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);\n });\n\n if (rawSpace === space) {\n rawSpace = undefined;\n }\n\n var result = {\n space: space,\n rawSpace: rawSpace\n };\n return result;\n };\n\n _proto.isNamedCombinator = function isNamedCombinator(position) {\n if (position === void 0) {\n position = this.position;\n }\n\n return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;\n };\n\n _proto.namedCombinator = function namedCombinator() {\n if (this.isNamedCombinator()) {\n var nameRaw = this.content(this.tokens[this.position + 1]);\n var name = (0, _util.unesc)(nameRaw).toLowerCase();\n var raws = {};\n\n if (name !== nameRaw) {\n raws.value = \"/\" + nameRaw + \"/\";\n }\n\n var node = new _combinator[\"default\"]({\n value: \"/\" + name + \"/\",\n source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n raws: raws\n });\n this.position = this.position + 3;\n return node;\n } else {\n this.unexpected();\n }\n };\n\n _proto.combinator = function combinator() {\n var _this3 = this;\n\n if (this.content() === '|') {\n return this.namespace();\n } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.\n\n\n var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);\n\n if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {\n var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n\n if (nodes.length > 0) {\n var last = this.current.last;\n\n if (last) {\n var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),\n space = _this$convertWhitespa.space,\n rawSpace = _this$convertWhitespa.rawSpace;\n\n if (rawSpace !== undefined) {\n last.rawSpaceAfter += rawSpace;\n }\n\n last.spaces.after += space;\n } else {\n nodes.forEach(function (n) {\n return _this3.newNode(n);\n });\n }\n }\n\n return;\n }\n\n var firstToken = this.currToken;\n var spaceOrDescendantSelectorNodes = undefined;\n\n if (nextSigTokenPos > this.position) {\n spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n }\n\n var node;\n\n if (this.isNamedCombinator()) {\n node = this.namedCombinator();\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {\n node = new _combinator[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]\n });\n this.position++;\n } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass\n } else if (!spaceOrDescendantSelectorNodes) {\n this.unexpected();\n }\n\n if (node) {\n if (spaceOrDescendantSelectorNodes) {\n var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),\n _space = _this$convertWhitespa2.space,\n _rawSpace = _this$convertWhitespa2.rawSpace;\n\n node.spaces.before = _space;\n node.rawSpaceBefore = _rawSpace;\n }\n } else {\n // descendant combinator\n var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),\n _space2 = _this$convertWhitespa3.space,\n _rawSpace2 = _this$convertWhitespa3.rawSpace;\n\n if (!_rawSpace2) {\n _rawSpace2 = _space2;\n }\n\n var spaces = {};\n var raws = {\n spaces: {}\n };\n\n if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {\n spaces.before = _space2.slice(0, _space2.length - 1);\n raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);\n } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {\n spaces.after = _space2.slice(1);\n raws.spaces.after = _rawSpace2.slice(1);\n } else {\n raws.value = _rawSpace2;\n }\n\n node = new _combinator[\"default\"]({\n value: ' ',\n source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: spaces,\n raws: raws\n });\n }\n\n if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {\n node.spaces.after = this.optionalSpace(this.content());\n this.position++;\n }\n\n return this.newNode(node);\n };\n\n _proto.comma = function comma() {\n if (this.position === this.tokens.length - 1) {\n this.root.trailingComma = true;\n this.position++;\n return;\n }\n\n this.current._inferEndPosition();\n\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position + 1])\n }\n });\n this.current.parent.append(selector);\n this.current = selector;\n this.position++;\n };\n\n _proto.comment = function comment() {\n var current = this.currToken;\n this.newNode(new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.error = function error(message, opts) {\n throw this.root.error(message, opts);\n };\n\n _proto.missingBackslash = function missingBackslash() {\n return this.error('Expected a backslash preceding the semicolon.', {\n index: this.currToken[_tokenize.FIELDS.START_POS]\n });\n };\n\n _proto.missingParenthesis = function missingParenthesis() {\n return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.missingSquareBracket = function missingSquareBracket() {\n return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.unexpected = function unexpected() {\n return this.error(\"Unexpected '\" + this.content() + \"'. Escaping special characters with \\\\ may help.\", this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.namespace = function namespace() {\n var before = this.prevToken && this.content(this.prevToken) || true;\n\n if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.position++;\n return this.word(before);\n } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {\n this.position++;\n return this.universal(before);\n }\n };\n\n _proto.nesting = function nesting() {\n if (this.nextToken) {\n var nextContent = this.content(this.nextToken);\n\n if (nextContent === \"|\") {\n this.position++;\n return;\n }\n }\n\n var current = this.currToken;\n this.newNode(new _nesting[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.parentheses = function parentheses() {\n var last = this.current.last;\n var unbalanced = 1;\n this.position++;\n\n if (last && last.type === types.PSEUDO) {\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position - 1])\n }\n });\n var cache = this.current;\n last.append(selector);\n this.current = selector;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n if (unbalanced) {\n this.parse();\n } else {\n this.current.source.end = tokenEnd(this.currToken);\n this.current.parent.source.end = tokenEnd(this.currToken);\n this.position++;\n }\n }\n\n this.current = cache;\n } else {\n // I think this case should be an error. It's used to implement a basic parse of media queries\n // but I don't think it's a good idea.\n var parenStart = this.currToken;\n var parenValue = \"(\";\n var parenEnd;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n parenEnd = this.currToken;\n parenValue += this.parseParenthesisToken(this.currToken);\n this.position++;\n }\n\n if (last) {\n last.appendToPropertyAndEscape(\"value\", parenValue, parenValue);\n } else {\n this.newNode(new _string[\"default\"]({\n value: parenValue,\n source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),\n sourceIndex: parenStart[_tokenize.FIELDS.START_POS]\n }));\n }\n }\n\n if (unbalanced) {\n return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.pseudo = function pseudo() {\n var _this4 = this;\n\n var pseudoStr = '';\n var startingToken = this.currToken;\n\n while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {\n pseudoStr += this.content();\n this.position++;\n }\n\n if (!this.currToken) {\n return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.splitWord(false, function (first, length) {\n pseudoStr += first;\n\n _this4.newNode(new _pseudo[\"default\"]({\n value: pseudoStr,\n source: getTokenSourceSpan(startingToken, _this4.currToken),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n }));\n\n if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n _this4.error('Misplaced parenthesis.', {\n index: _this4.nextToken[_tokenize.FIELDS.START_POS]\n });\n }\n });\n } else {\n return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.space = function space() {\n var content = this.content(); // Handle space before and after the selector\n\n if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {\n return node.type === 'comment';\n })) {\n this.spaces = this.optionalSpace(content);\n this.position++;\n } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n this.current.last.spaces.after = this.optionalSpace(content);\n this.position++;\n } else {\n this.combinator();\n }\n };\n\n _proto.string = function string() {\n var current = this.currToken;\n this.newNode(new _string[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.universal = function universal(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n var current = this.currToken;\n this.newNode(new _universal[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }), namespace);\n this.position++;\n };\n\n _proto.splitWord = function splitWord(namespace, firstCallback) {\n var _this5 = this;\n\n var nextToken = this.nextToken;\n var word = this.content();\n\n while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {\n this.position++;\n var current = this.content();\n word += current;\n\n if (current.lastIndexOf('\\\\') === current.length - 1) {\n var next = this.nextToken;\n\n if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {\n word += this.requiredSpace(this.content(next));\n this.position++;\n }\n }\n\n nextToken = this.nextToken;\n }\n\n var hasClass = indexesOf(word, '.').filter(function (i) {\n return word[i - 1] !== '\\\\';\n });\n var hasId = indexesOf(word, '#').filter(function (i) {\n return word[i - 1] !== '\\\\';\n }); // Eliminate Sass interpolations from the list of id indexes\n\n var interpolations = indexesOf(word, '#{');\n\n if (interpolations.length) {\n hasId = hasId.filter(function (hashIndex) {\n return !~interpolations.indexOf(hashIndex);\n });\n }\n\n var indices = (0, _sortAscending[\"default\"])(uniqs([0].concat(hasClass, hasId)));\n indices.forEach(function (ind, i) {\n var index = indices[i + 1] || word.length;\n var value = word.slice(ind, index);\n\n if (i === 0 && firstCallback) {\n return firstCallback.call(_this5, value, indices.length);\n }\n\n var node;\n var current = _this5.currToken;\n var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];\n var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));\n\n if (~hasClass.indexOf(ind)) {\n var classNameOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _className[\"default\"](unescapeProp(classNameOpts, \"value\"));\n } else if (~hasId.indexOf(ind)) {\n var idOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _id[\"default\"](unescapeProp(idOpts, \"value\"));\n } else {\n var tagOpts = {\n value: value,\n source: source,\n sourceIndex: sourceIndex\n };\n unescapeProp(tagOpts, \"value\");\n node = new _tag[\"default\"](tagOpts);\n }\n\n _this5.newNode(node, namespace); // Ensure that the namespace is used only once\n\n\n namespace = null;\n });\n this.position++;\n };\n\n _proto.word = function word(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n return this.splitWord(namespace);\n };\n\n _proto.loop = function loop() {\n while (this.position < this.tokens.length) {\n this.parse(true);\n }\n\n this.current._inferEndPosition();\n\n return this.root;\n };\n\n _proto.parse = function parse(throwOnParenthesis) {\n switch (this.currToken[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n this.space();\n break;\n\n case tokens.comment:\n this.comment();\n break;\n\n case tokens.openParenthesis:\n this.parentheses();\n break;\n\n case tokens.closeParenthesis:\n if (throwOnParenthesis) {\n this.missingParenthesis();\n }\n\n break;\n\n case tokens.openSquare:\n this.attribute();\n break;\n\n case tokens.dollar:\n case tokens.caret:\n case tokens.equals:\n case tokens.word:\n this.word();\n break;\n\n case tokens.colon:\n this.pseudo();\n break;\n\n case tokens.comma:\n this.comma();\n break;\n\n case tokens.asterisk:\n this.universal();\n break;\n\n case tokens.ampersand:\n this.nesting();\n break;\n\n case tokens.slash:\n case tokens.combinator:\n this.combinator();\n break;\n\n case tokens.str:\n this.string();\n break;\n // These cases throw; no break needed.\n\n case tokens.closeSquare:\n this.missingSquareBracket();\n\n case tokens.semicolon:\n this.missingBackslash();\n\n default:\n this.unexpected();\n }\n }\n /**\n * Helpers\n */\n ;\n\n _proto.expected = function expected(description, index, found) {\n if (Array.isArray(description)) {\n var last = description.pop();\n description = description.join(', ') + \" or \" + last;\n }\n\n var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';\n\n if (!found) {\n return this.error(\"Expected \" + an + \" \" + description + \".\", {\n index: index\n });\n }\n\n return this.error(\"Expected \" + an + \" \" + description + \", found \\\"\" + found + \"\\\" instead.\", {\n index: index\n });\n };\n\n _proto.requiredSpace = function requiredSpace(space) {\n return this.options.lossy ? ' ' : space;\n };\n\n _proto.optionalSpace = function optionalSpace(space) {\n return this.options.lossy ? '' : space;\n };\n\n _proto.lossySpace = function lossySpace(space, required) {\n if (this.options.lossy) {\n return required ? ' ' : '';\n } else {\n return space;\n }\n };\n\n _proto.parseParenthesisToken = function parseParenthesisToken(token) {\n var content = this.content(token);\n\n if (token[_tokenize.FIELDS.TYPE] === tokens.space) {\n return this.requiredSpace(content);\n } else {\n return content;\n }\n };\n\n _proto.newNode = function newNode(node, namespace) {\n if (namespace) {\n if (/^ +$/.test(namespace)) {\n if (!this.options.lossy) {\n this.spaces = (this.spaces || '') + namespace;\n }\n\n namespace = true;\n }\n\n node.namespace = namespace;\n unescapeProp(node, \"namespace\");\n }\n\n if (this.spaces) {\n node.spaces.before = this.spaces;\n this.spaces = '';\n }\n\n return this.current.append(node);\n };\n\n _proto.content = function content(token) {\n if (token === void 0) {\n token = this.currToken;\n }\n\n return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);\n };\n\n /**\n * returns the index of the next non-whitespace, non-comment token.\n * returns -1 if no meaningful token is found.\n */\n _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {\n if (startPosition === void 0) {\n startPosition = this.position + 1;\n }\n\n var searchPosition = startPosition;\n\n while (searchPosition < this.tokens.length) {\n if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {\n searchPosition++;\n continue;\n } else {\n return searchPosition;\n }\n }\n\n return -1;\n };\n\n _createClass(Parser, [{\n key: \"currToken\",\n get: function get() {\n return this.tokens[this.position];\n }\n }, {\n key: \"nextToken\",\n get: function get() {\n return this.tokens[this.position + 1];\n }\n }, {\n key: \"prevToken\",\n get: function get() {\n return this.tokens[this.position - 1];\n }\n }]);\n\n return Parser;\n}();\n\nexports[\"default\"] = Parser;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Processor = /*#__PURE__*/function () {\n function Processor(func, options) {\n this.func = func || function noop() {};\n\n this.funcRes = null;\n this.options = options;\n }\n\n var _proto = Processor.prototype;\n\n _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.updateSelector === false) {\n return false;\n } else {\n return typeof rule !== \"string\";\n }\n };\n\n _proto._isLossy = function _isLossy(options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.lossless === false) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto._root = function _root(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parser = new _parser[\"default\"](rule, this._parseOptions(options));\n return parser.root;\n };\n\n _proto._parseOptions = function _parseOptions(options) {\n return {\n lossy: this._isLossy(options)\n };\n };\n\n _proto._run = function _run(rule, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var root = _this._root(rule, options);\n\n Promise.resolve(_this.func(root)).then(function (transform) {\n var string = undefined;\n\n if (_this._shouldUpdateSelector(rule, options)) {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }).then(resolve, reject);\n } catch (e) {\n reject(e);\n return;\n }\n });\n };\n\n _proto._runSync = function _runSync(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var root = this._root(rule, options);\n\n var transform = this.func(root);\n\n if (transform && typeof transform.then === \"function\") {\n throw new Error(\"Selector processor returned a promise to a synchronous call.\");\n }\n\n var string = undefined;\n\n if (options.updateSelector && typeof rule !== \"string\") {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }\n /**\n * Process rule into a selector AST.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise} The AST of the selector after processing it.\n */\n ;\n\n _proto.ast = function ast(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.root;\n });\n }\n /**\n * Process rule into a selector AST synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {parser.Root} The AST of the selector after processing it.\n */\n ;\n\n _proto.astSync = function astSync(rule, options) {\n return this._runSync(rule, options).root;\n }\n /**\n * Process a selector into a transformed value asynchronously\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise} The value returned by the processor.\n */\n ;\n\n _proto.transform = function transform(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.transform;\n });\n }\n /**\n * Process a selector into a transformed value synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {any} The value returned by the processor.\n */\n ;\n\n _proto.transformSync = function transformSync(rule, options) {\n return this._runSync(rule, options).transform;\n }\n /**\n * Process a selector into a new selector string asynchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.process = function process(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.string || result.root.toString();\n });\n }\n /**\n * Process a selector into a new selector string synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.processSync = function processSync(rule, options) {\n var result = this._runSync(rule, options);\n\n return result.string || result.root.toString();\n };\n\n return Processor;\n}();\n\nexports[\"default\"] = Processor;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;\n\nvar _attribute = _interopRequireDefault(require(\"./attribute\"));\n\nvar _className = _interopRequireDefault(require(\"./className\"));\n\nvar _combinator = _interopRequireDefault(require(\"./combinator\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _nesting = _interopRequireDefault(require(\"./nesting\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./pseudo\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selector\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _tag = _interopRequireDefault(require(\"./tag\"));\n\nvar _universal = _interopRequireDefault(require(\"./universal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar attribute = function attribute(opts) {\n return new _attribute[\"default\"](opts);\n};\n\nexports.attribute = attribute;\n\nvar className = function className(opts) {\n return new _className[\"default\"](opts);\n};\n\nexports.className = className;\n\nvar combinator = function combinator(opts) {\n return new _combinator[\"default\"](opts);\n};\n\nexports.combinator = combinator;\n\nvar comment = function comment(opts) {\n return new _comment[\"default\"](opts);\n};\n\nexports.comment = comment;\n\nvar id = function id(opts) {\n return new _id[\"default\"](opts);\n};\n\nexports.id = id;\n\nvar nesting = function nesting(opts) {\n return new _nesting[\"default\"](opts);\n};\n\nexports.nesting = nesting;\n\nvar pseudo = function pseudo(opts) {\n return new _pseudo[\"default\"](opts);\n};\n\nexports.pseudo = pseudo;\n\nvar root = function root(opts) {\n return new _root[\"default\"](opts);\n};\n\nexports.root = root;\n\nvar selector = function selector(opts) {\n return new _selector[\"default\"](opts);\n};\n\nexports.selector = selector;\n\nvar string = function string(opts) {\n return new _string[\"default\"](opts);\n};\n\nexports.string = string;\n\nvar tag = function tag(opts) {\n return new _tag[\"default\"](opts);\n};\n\nexports.tag = tag;\n\nvar universal = function universal(opts) {\n return new _universal[\"default\"](opts);\n};\n\nexports.universal = universal;","\"use strict\";\n\nexports.__esModule = true;\nexports.isNode = isNode;\nexports.isPseudoElement = isPseudoElement;\nexports.isPseudoClass = isPseudoClass;\nexports.isContainer = isContainer;\nexports.isNamespace = isNamespace;\nexports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;\n\nvar _types = require(\"./types\");\n\nvar _IS_TYPE;\n\nvar IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);\n\nfunction isNode(node) {\n return typeof node === \"object\" && IS_TYPE[node.type];\n}\n\nfunction isNodeType(type, node) {\n return isNode(node) && node.type === type;\n}\n\nvar isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);\nexports.isAttribute = isAttribute;\nvar isClassName = isNodeType.bind(null, _types.CLASS);\nexports.isClassName = isClassName;\nvar isCombinator = isNodeType.bind(null, _types.COMBINATOR);\nexports.isCombinator = isCombinator;\nvar isComment = isNodeType.bind(null, _types.COMMENT);\nexports.isComment = isComment;\nvar isIdentifier = isNodeType.bind(null, _types.ID);\nexports.isIdentifier = isIdentifier;\nvar isNesting = isNodeType.bind(null, _types.NESTING);\nexports.isNesting = isNesting;\nvar isPseudo = isNodeType.bind(null, _types.PSEUDO);\nexports.isPseudo = isPseudo;\nvar isRoot = isNodeType.bind(null, _types.ROOT);\nexports.isRoot = isRoot;\nvar isSelector = isNodeType.bind(null, _types.SELECTOR);\nexports.isSelector = isSelector;\nvar isString = isNodeType.bind(null, _types.STRING);\nexports.isString = isString;\nvar isTag = isNodeType.bind(null, _types.TAG);\nexports.isTag = isTag;\nvar isUniversal = isNodeType.bind(null, _types.UNIVERSAL);\nexports.isUniversal = isUniversal;\n\nfunction isPseudoElement(node) {\n return isPseudo(node) && node.value && (node.value.startsWith(\"::\") || node.value.toLowerCase() === \":before\" || node.value.toLowerCase() === \":after\");\n}\n\nfunction isPseudoClass(node) {\n return isPseudo(node) && !isPseudoElement(node);\n}\n\nfunction isContainer(node) {\n return !!(isNode(node) && node.walk);\n}\n\nfunction isNamespace(node) {\n return isAttribute(node) || isTag(node);\n}","\"use strict\";\n\nexports.__esModule = true;\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _types[key]) return;\n exports[key] = _types[key];\n});\n\nvar _constructors = require(\"./constructors\");\n\nObject.keys(_constructors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _constructors[key]) return;\n exports[key] = _constructors[key];\n});\n\nvar _guards = require(\"./guards\");\n\nObject.keys(_guards).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _guards[key]) return;\n exports[key] = _guards[key];\n});","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar selectors = _interopRequireWildcard(require(\"./selectors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parser = function parser(processor) {\n return new _processor[\"default\"](processor);\n};\n\nObject.assign(parser, selectors);\ndelete parser.__esModule;\nvar _default = parser;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","const matchValueName = /[$]?[\\w-]+/g;\n\nconst replaceValueSymbols = (value, replacements) => {\n let matches;\n\n while ((matches = matchValueName.exec(value))) {\n const replacement = replacements[matches[0]];\n\n if (replacement) {\n value =\n value.slice(0, matches.index) +\n replacement +\n value.slice(matchValueName.lastIndex);\n\n matchValueName.lastIndex -= matches[0].length - replacement.length;\n }\n }\n\n return value;\n};\n\nmodule.exports = replaceValueSymbols;\n","const replaceValueSymbols = require(\"./replaceValueSymbols.js\");\n\nconst replaceSymbols = (css, replacements) => {\n css.walk((node) => {\n if (node.type === \"decl\" && node.value) {\n node.value = replaceValueSymbols(node.value.toString(), replacements);\n } else if (node.type === \"rule\" && node.selector) {\n node.selector = replaceValueSymbols(\n node.selector.toString(),\n replacements\n );\n } else if (node.type === \"atrule\" && node.params) {\n node.params = replaceValueSymbols(node.params.toString(), replacements);\n }\n });\n};\n\nmodule.exports = replaceSymbols;\n","const importPattern = /^:import\\((\"[^\"]*\"|'[^']*'|[^\"']+)\\)$/;\nconst balancedQuotes = /^(\"[^\"]*\"|'[^']*'|[^\"']+)$/;\n\nconst getDeclsObject = (rule) => {\n const object = {};\n\n rule.walkDecls((decl) => {\n const before = decl.raws.before ? decl.raws.before.trim() : \"\";\n\n object[before + decl.prop] = decl.value;\n });\n\n return object;\n};\n/**\n *\n * @param {string} css\n * @param {boolean} removeRules\n * @param {'auto' | 'rule' | 'at-rule'} mode\n */\nconst extractICSS = (css, removeRules = true, mode = \"auto\") => {\n const icssImports = {};\n const icssExports = {};\n\n function addImports(node, path) {\n const unquoted = path.replace(/'|\"/g, \"\");\n icssImports[unquoted] = Object.assign(\n icssImports[unquoted] || {},\n getDeclsObject(node)\n );\n\n if (removeRules) {\n node.remove();\n }\n }\n\n function addExports(node) {\n Object.assign(icssExports, getDeclsObject(node));\n if (removeRules) {\n node.remove();\n }\n }\n\n css.each((node) => {\n if (node.type === \"rule\" && mode !== \"at-rule\") {\n if (node.selector.slice(0, 7) === \":import\") {\n const matches = importPattern.exec(node.selector);\n\n if (matches) {\n addImports(node, matches[1]);\n }\n }\n\n if (node.selector === \":export\") {\n addExports(node);\n }\n }\n\n if (node.type === \"atrule\" && mode !== \"rule\") {\n if (node.name === \"icss-import\") {\n const matches = balancedQuotes.exec(node.params);\n\n if (matches) {\n addImports(node, matches[1]);\n }\n }\n if (node.name === \"icss-export\") {\n addExports(node);\n }\n }\n });\n\n return { icssImports, icssExports };\n};\n\nmodule.exports = extractICSS;\n","const createImports = (imports, postcss, mode = \"rule\") => {\n return Object.keys(imports).map((path) => {\n const aliases = imports[path];\n const declarations = Object.keys(aliases).map((key) =>\n postcss.decl({\n prop: key,\n value: aliases[key],\n raws: { before: \"\\n \" },\n })\n );\n\n const hasDeclarations = declarations.length > 0;\n\n const rule =\n mode === \"rule\"\n ? postcss.rule({\n selector: `:import('${path}')`,\n raws: { after: hasDeclarations ? \"\\n\" : \"\" },\n })\n : postcss.atRule({\n name: \"icss-import\",\n params: `'${path}'`,\n raws: { after: hasDeclarations ? \"\\n\" : \"\" },\n });\n\n if (hasDeclarations) {\n rule.append(declarations);\n }\n\n return rule;\n });\n};\n\nconst createExports = (exports, postcss, mode = \"rule\") => {\n const declarations = Object.keys(exports).map((key) =>\n postcss.decl({\n prop: key,\n value: exports[key],\n raws: { before: \"\\n \" },\n })\n );\n\n if (declarations.length === 0) {\n return [];\n }\n const rule =\n mode === \"rule\"\n ? postcss.rule({\n selector: `:export`,\n raws: { after: \"\\n\" },\n })\n : postcss.atRule({\n name: \"icss-export\",\n raws: { after: \"\\n\" },\n });\n\n rule.append(declarations);\n\n return [rule];\n};\n\nconst createICSSRules = (imports, exports, postcss, mode) => [\n ...createImports(imports, postcss, mode),\n ...createExports(exports, postcss, mode),\n];\n\nmodule.exports = createICSSRules;\n","const replaceValueSymbols = require(\"./replaceValueSymbols.js\");\nconst replaceSymbols = require(\"./replaceSymbols.js\");\nconst extractICSS = require(\"./extractICSS.js\");\nconst createICSSRules = require(\"./createICSSRules.js\");\n\nmodule.exports = {\n replaceValueSymbols,\n replaceSymbols,\n extractICSS,\n createICSSRules,\n};\n","\"use strict\";\n\nconst selectorParser = require(\"postcss-selector-parser\");\nconst valueParser = require(\"postcss-value-parser\");\nconst { extractICSS } = require(\"icss-utils\");\n\nconst isSpacing = (node) => node.type === \"combinator\" && node.value === \" \";\n\nfunction normalizeNodeArray(nodes) {\n const array = [];\n\n nodes.forEach((x) => {\n if (Array.isArray(x)) {\n normalizeNodeArray(x).forEach((item) => {\n array.push(item);\n });\n } else if (x) {\n array.push(x);\n }\n });\n\n if (array.length > 0 && isSpacing(array[array.length - 1])) {\n array.pop();\n }\n return array;\n}\n\nfunction localizeNode(rule, mode, localAliasMap) {\n const transform = (node, context) => {\n if (context.ignoreNextSpacing && !isSpacing(node)) {\n throw new Error(\"Missing whitespace after \" + context.ignoreNextSpacing);\n }\n\n if (context.enforceNoSpacing && isSpacing(node)) {\n throw new Error(\"Missing whitespace before \" + context.enforceNoSpacing);\n }\n\n let newNodes;\n\n switch (node.type) {\n case \"root\": {\n let resultingGlobal;\n\n context.hasPureGlobals = false;\n\n newNodes = node.nodes.map((n) => {\n const nContext = {\n global: context.global,\n lastWasSpacing: true,\n hasLocals: false,\n explicit: false,\n };\n\n n = transform(n, nContext);\n\n if (typeof resultingGlobal === \"undefined\") {\n resultingGlobal = nContext.global;\n } else if (resultingGlobal !== nContext.global) {\n throw new Error(\n 'Inconsistent rule global/local result in rule \"' +\n node +\n '\" (multiple selectors must result in the same mode for the rule)'\n );\n }\n\n if (!nContext.hasLocals) {\n context.hasPureGlobals = true;\n }\n\n return n;\n });\n\n context.global = resultingGlobal;\n\n node.nodes = normalizeNodeArray(newNodes);\n break;\n }\n case \"selector\": {\n newNodes = node.map((childNode) => transform(childNode, context));\n\n node = node.clone();\n node.nodes = normalizeNodeArray(newNodes);\n break;\n }\n case \"combinator\": {\n if (isSpacing(node)) {\n if (context.ignoreNextSpacing) {\n context.ignoreNextSpacing = false;\n context.lastWasSpacing = false;\n context.enforceNoSpacing = false;\n return null;\n }\n context.lastWasSpacing = true;\n return node;\n }\n break;\n }\n case \"pseudo\": {\n let childContext;\n const isNested = !!node.length;\n const isScoped = node.value === \":local\" || node.value === \":global\";\n const isImportExport =\n node.value === \":import\" || node.value === \":export\";\n\n if (isImportExport) {\n context.hasLocals = true;\n // :local(.foo)\n } else if (isNested) {\n if (isScoped) {\n if (node.nodes.length === 0) {\n throw new Error(`${node.value}() can't be empty`);\n }\n\n if (context.inside) {\n throw new Error(\n `A ${node.value} is not allowed inside of a ${context.inside}(...)`\n );\n }\n\n childContext = {\n global: node.value === \":global\",\n inside: node.value,\n hasLocals: false,\n explicit: true,\n };\n\n newNodes = node\n .map((childNode) => transform(childNode, childContext))\n .reduce((acc, next) => acc.concat(next.nodes), []);\n\n if (newNodes.length) {\n const { before, after } = node.spaces;\n\n const first = newNodes[0];\n const last = newNodes[newNodes.length - 1];\n\n first.spaces = { before, after: first.spaces.after };\n last.spaces = { before: last.spaces.before, after };\n }\n\n node = newNodes;\n\n break;\n } else {\n childContext = {\n global: context.global,\n inside: context.inside,\n lastWasSpacing: true,\n hasLocals: false,\n explicit: context.explicit,\n };\n newNodes = node.map((childNode) =>\n transform(childNode, childContext)\n );\n\n node = node.clone();\n node.nodes = normalizeNodeArray(newNodes);\n\n if (childContext.hasLocals) {\n context.hasLocals = true;\n }\n }\n break;\n\n //:local .foo .bar\n } else if (isScoped) {\n if (context.inside) {\n throw new Error(\n `A ${node.value} is not allowed inside of a ${context.inside}(...)`\n );\n }\n\n const addBackSpacing = !!node.spaces.before;\n\n context.ignoreNextSpacing = context.lastWasSpacing\n ? node.value\n : false;\n\n context.enforceNoSpacing = context.lastWasSpacing\n ? false\n : node.value;\n\n context.global = node.value === \":global\";\n context.explicit = true;\n\n // because this node has spacing that is lost when we remove it\n // we make up for it by adding an extra combinator in since adding\n // spacing on the parent selector doesn't work\n return addBackSpacing\n ? selectorParser.combinator({ value: \" \" })\n : null;\n }\n break;\n }\n case \"id\":\n case \"class\": {\n if (!node.value) {\n throw new Error(\"Invalid class or id selector syntax\");\n }\n\n if (context.global) {\n break;\n }\n\n const isImportedValue = localAliasMap.has(node.value);\n const isImportedWithExplicitScope = isImportedValue && context.explicit;\n\n if (!isImportedValue || isImportedWithExplicitScope) {\n const innerNode = node.clone();\n innerNode.spaces = { before: \"\", after: \"\" };\n\n node = selectorParser.pseudo({\n value: \":local\",\n nodes: [innerNode],\n spaces: node.spaces,\n });\n\n context.hasLocals = true;\n }\n\n break;\n }\n }\n\n context.lastWasSpacing = false;\n context.ignoreNextSpacing = false;\n context.enforceNoSpacing = false;\n\n return node;\n };\n\n const rootContext = {\n global: mode === \"global\",\n hasPureGlobals: false,\n };\n\n rootContext.selector = selectorParser((root) => {\n transform(root, rootContext);\n }).processSync(rule, { updateSelector: false, lossless: true });\n\n return rootContext;\n}\n\nfunction localizeDeclNode(node, context) {\n switch (node.type) {\n case \"word\":\n if (context.localizeNextItem) {\n if (!context.localAliasMap.has(node.value)) {\n node.value = \":local(\" + node.value + \")\";\n context.localizeNextItem = false;\n }\n }\n break;\n\n case \"function\":\n if (\n context.options &&\n context.options.rewriteUrl &&\n node.value.toLowerCase() === \"url\"\n ) {\n node.nodes.map((nestedNode) => {\n if (nestedNode.type !== \"string\" && nestedNode.type !== \"word\") {\n return;\n }\n\n let newUrl = context.options.rewriteUrl(\n context.global,\n nestedNode.value\n );\n\n switch (nestedNode.type) {\n case \"string\":\n if (nestedNode.quote === \"'\") {\n newUrl = newUrl.replace(/(\\\\)/g, \"\\\\$1\").replace(/'/g, \"\\\\'\");\n }\n\n if (nestedNode.quote === '\"') {\n newUrl = newUrl.replace(/(\\\\)/g, \"\\\\$1\").replace(/\"/g, '\\\\\"');\n }\n\n break;\n case \"word\":\n newUrl = newUrl.replace(/(\"|'|\\)|\\\\)/g, \"\\\\$1\");\n break;\n }\n\n nestedNode.value = newUrl;\n });\n }\n break;\n }\n return node;\n}\n\nfunction isWordAFunctionArgument(wordNode, functionNode) {\n return functionNode\n ? functionNode.nodes.some(\n (functionNodeChild) =>\n functionNodeChild.sourceIndex === wordNode.sourceIndex\n )\n : false;\n}\n\nfunction localizeDeclarationValues(localize, declaration, context) {\n const valueNodes = valueParser(declaration.value);\n\n valueNodes.walk((node, index, nodes) => {\n const subContext = {\n options: context.options,\n global: context.global,\n localizeNextItem: localize && !context.global,\n localAliasMap: context.localAliasMap,\n };\n nodes[index] = localizeDeclNode(node, subContext);\n });\n\n declaration.value = valueNodes.toString();\n}\n\nfunction localizeDeclaration(declaration, context) {\n const isAnimation = /animation$/i.test(declaration.prop);\n\n if (isAnimation) {\n const validIdent = /^-?[_a-z][_a-z0-9-]*$/i;\n\n /*\n The spec defines some keywords that you can use to describe properties such as the timing\n function. These are still valid animation names, so as long as there is a property that accepts\n a keyword, it is given priority. Only when all the properties that can take a keyword are\n exhausted can the animation name be set to the keyword. I.e.\n \n animation: infinite infinite;\n \n The animation will repeat an infinite number of times from the first argument, and will have an\n animation name of infinite from the second.\n */\n const animationKeywords = {\n $alternate: 1,\n \"$alternate-reverse\": 1,\n $backwards: 1,\n $both: 1,\n $ease: 1,\n \"$ease-in\": 1,\n \"$ease-in-out\": 1,\n \"$ease-out\": 1,\n $forwards: 1,\n $infinite: 1,\n $linear: 1,\n $none: Infinity, // No matter how many times you write none, it will never be an animation name\n $normal: 1,\n $paused: 1,\n $reverse: 1,\n $running: 1,\n \"$step-end\": 1,\n \"$step-start\": 1,\n $initial: Infinity,\n $inherit: Infinity,\n $unset: Infinity,\n };\n\n const didParseAnimationName = false;\n let parsedAnimationKeywords = {};\n let stepsFunctionNode = null;\n const valueNodes = valueParser(declaration.value).walk((node) => {\n /* If div-token appeared (represents as comma ','), a possibility of an animation-keywords should be reflesh. */\n if (node.type === \"div\") {\n parsedAnimationKeywords = {};\n }\n if (node.type === \"function\" && node.value.toLowerCase() === \"steps\") {\n stepsFunctionNode = node;\n }\n const value =\n node.type === \"word\" &&\n !isWordAFunctionArgument(node, stepsFunctionNode)\n ? node.value.toLowerCase()\n : null;\n\n let shouldParseAnimationName = false;\n\n if (!didParseAnimationName && value && validIdent.test(value)) {\n if (\"$\" + value in animationKeywords) {\n parsedAnimationKeywords[\"$\" + value] =\n \"$\" + value in parsedAnimationKeywords\n ? parsedAnimationKeywords[\"$\" + value] + 1\n : 0;\n\n shouldParseAnimationName =\n parsedAnimationKeywords[\"$\" + value] >=\n animationKeywords[\"$\" + value];\n } else {\n shouldParseAnimationName = true;\n }\n }\n\n const subContext = {\n options: context.options,\n global: context.global,\n localizeNextItem: shouldParseAnimationName && !context.global,\n localAliasMap: context.localAliasMap,\n };\n return localizeDeclNode(node, subContext);\n });\n\n declaration.value = valueNodes.toString();\n\n return;\n }\n\n const isAnimationName = /animation(-name)?$/i.test(declaration.prop);\n\n if (isAnimationName) {\n return localizeDeclarationValues(true, declaration, context);\n }\n\n const hasUrl = /url\\(/i.test(declaration.value);\n\n if (hasUrl) {\n return localizeDeclarationValues(false, declaration, context);\n }\n}\n\nmodule.exports = (options = {}) => {\n if (\n options &&\n options.mode &&\n options.mode !== \"global\" &&\n options.mode !== \"local\" &&\n options.mode !== \"pure\"\n ) {\n throw new Error(\n 'options.mode must be either \"global\", \"local\" or \"pure\" (default \"local\")'\n );\n }\n\n const pureMode = options && options.mode === \"pure\";\n const globalMode = options && options.mode === \"global\";\n\n return {\n postcssPlugin: \"postcss-modules-local-by-default\",\n prepare() {\n const localAliasMap = new Map();\n\n return {\n Once(root) {\n const { icssImports } = extractICSS(root, false);\n\n Object.keys(icssImports).forEach((key) => {\n Object.keys(icssImports[key]).forEach((prop) => {\n localAliasMap.set(prop, icssImports[key][prop]);\n });\n });\n\n root.walkAtRules((atRule) => {\n if (/keyframes$/i.test(atRule.name)) {\n const globalMatch = /^\\s*:global\\s*\\((.+)\\)\\s*$/.exec(\n atRule.params\n );\n const localMatch = /^\\s*:local\\s*\\((.+)\\)\\s*$/.exec(\n atRule.params\n );\n\n let globalKeyframes = globalMode;\n\n if (globalMatch) {\n if (pureMode) {\n throw atRule.error(\n \"@keyframes :global(...) is not allowed in pure mode\"\n );\n }\n atRule.params = globalMatch[1];\n globalKeyframes = true;\n } else if (localMatch) {\n atRule.params = localMatch[0];\n globalKeyframes = false;\n } else if (!globalMode) {\n if (atRule.params && !localAliasMap.has(atRule.params)) {\n atRule.params = \":local(\" + atRule.params + \")\";\n }\n }\n\n atRule.walkDecls((declaration) => {\n localizeDeclaration(declaration, {\n localAliasMap,\n options: options,\n global: globalKeyframes,\n });\n });\n } else if (atRule.nodes) {\n atRule.nodes.forEach((declaration) => {\n if (declaration.type === \"decl\") {\n localizeDeclaration(declaration, {\n localAliasMap,\n options: options,\n global: globalMode,\n });\n }\n });\n }\n });\n\n root.walkRules((rule) => {\n if (\n rule.parent &&\n rule.parent.type === \"atrule\" &&\n /keyframes$/i.test(rule.parent.name)\n ) {\n // ignore keyframe rules\n return;\n }\n\n const context = localizeNode(rule, options.mode, localAliasMap);\n\n context.options = options;\n context.localAliasMap = localAliasMap;\n\n if (pureMode && context.hasPureGlobals) {\n throw rule.error(\n 'Selector \"' +\n rule.selector +\n '\" is not pure ' +\n \"(pure selectors must contain at least one local class or id)\"\n );\n }\n\n rule.selector = context.selector;\n\n // Less-syntax mixins parse as rules with no nodes\n if (rule.nodes) {\n rule.nodes.forEach((declaration) =>\n localizeDeclaration(declaration, context)\n );\n }\n });\n },\n };\n },\n };\n};\nmodule.exports.postcss = true;\n","const PERMANENT_MARKER = 2;\nconst TEMPORARY_MARKER = 1;\n\nfunction createError(node, graph) {\n const er = new Error(\"Nondeterministic import's order\");\n\n const related = graph[node];\n const relatedNode = related.find(\n (relatedNode) => graph[relatedNode].indexOf(node) > -1\n );\n\n er.nodes = [node, relatedNode];\n\n return er;\n}\n\nfunction walkGraph(node, graph, state, result, strict) {\n if (state[node] === PERMANENT_MARKER) {\n return;\n }\n\n if (state[node] === TEMPORARY_MARKER) {\n if (strict) {\n return createError(node, graph);\n }\n\n return;\n }\n\n state[node] = TEMPORARY_MARKER;\n\n const children = graph[node];\n const length = children.length;\n\n for (let i = 0; i < length; ++i) {\n const error = walkGraph(children[i], graph, state, result, strict);\n\n if (error instanceof Error) {\n return error;\n }\n }\n\n state[node] = PERMANENT_MARKER;\n\n result.push(node);\n}\n\nfunction topologicalSort(graph, strict) {\n const result = [];\n const state = {};\n\n const nodes = Object.keys(graph);\n const length = nodes.length;\n\n for (let i = 0; i < length; ++i) {\n const er = walkGraph(nodes[i], graph, state, result, strict);\n\n if (er instanceof Error) {\n return er;\n }\n }\n\n return result;\n}\n\nmodule.exports = topologicalSort;\n","const topologicalSort = require(\"./topologicalSort\");\n\nconst matchImports = /^(.+?)\\s+from\\s+(?:\"([^\"]+)\"|'([^']+)'|(global))$/;\nconst icssImport = /^:import\\((?:\"([^\"]+)\"|'([^']+)')\\)/;\n\nconst VISITED_MARKER = 1;\n\n/**\n * :import('G') {}\n *\n * Rule\n * composes: ... from 'A'\n * composes: ... from 'B'\n\n * Rule\n * composes: ... from 'A'\n * composes: ... from 'A'\n * composes: ... from 'C'\n *\n * Results in:\n *\n * graph: {\n * G: [],\n * A: [],\n * B: ['A'],\n * C: ['A'],\n * }\n */\nfunction addImportToGraph(importId, parentId, graph, visited) {\n const siblingsId = parentId + \"_\" + \"siblings\";\n const visitedId = parentId + \"_\" + importId;\n\n if (visited[visitedId] !== VISITED_MARKER) {\n if (!Array.isArray(visited[siblingsId])) {\n visited[siblingsId] = [];\n }\n\n const siblings = visited[siblingsId];\n\n if (Array.isArray(graph[importId])) {\n graph[importId] = graph[importId].concat(siblings);\n } else {\n graph[importId] = siblings.slice();\n }\n\n visited[visitedId] = VISITED_MARKER;\n\n siblings.push(importId);\n }\n}\n\nmodule.exports = (options = {}) => {\n let importIndex = 0;\n const createImportedName =\n typeof options.createImportedName !== \"function\"\n ? (importName /*, path*/) =>\n `i__imported_${importName.replace(/\\W/g, \"_\")}_${importIndex++}`\n : options.createImportedName;\n const failOnWrongOrder = options.failOnWrongOrder;\n\n return {\n postcssPlugin: \"postcss-modules-extract-imports\",\n prepare() {\n const graph = {};\n const visited = {};\n const existingImports = {};\n const importDecls = {};\n const imports = {};\n\n return {\n Once(root, postcss) {\n // Check the existing imports order and save refs\n root.walkRules((rule) => {\n const matches = icssImport.exec(rule.selector);\n\n if (matches) {\n const [, /*match*/ doubleQuotePath, singleQuotePath] = matches;\n const importPath = doubleQuotePath || singleQuotePath;\n\n addImportToGraph(importPath, \"root\", graph, visited);\n\n existingImports[importPath] = rule;\n }\n });\n\n root.walkDecls(/^composes$/, (declaration) => {\n const matches = declaration.value.match(matchImports);\n\n if (!matches) {\n return;\n }\n\n let tmpSymbols;\n let [\n ,\n /*match*/ symbols,\n doubleQuotePath,\n singleQuotePath,\n global,\n ] = matches;\n\n if (global) {\n // Composing globals simply means changing these classes to wrap them in global(name)\n tmpSymbols = symbols.split(/\\s+/).map((s) => `global(${s})`);\n } else {\n const importPath = doubleQuotePath || singleQuotePath;\n\n let parent = declaration.parent;\n let parentIndexes = \"\";\n\n while (parent.type !== \"root\") {\n parentIndexes =\n parent.parent.index(parent) + \"_\" + parentIndexes;\n parent = parent.parent;\n }\n\n const { selector } = declaration.parent;\n const parentRule = `_${parentIndexes}${selector}`;\n\n addImportToGraph(importPath, parentRule, graph, visited);\n\n importDecls[importPath] = declaration;\n imports[importPath] = imports[importPath] || {};\n\n tmpSymbols = symbols.split(/\\s+/).map((s) => {\n if (!imports[importPath][s]) {\n imports[importPath][s] = createImportedName(s, importPath);\n }\n\n return imports[importPath][s];\n });\n }\n\n declaration.value = tmpSymbols.join(\" \");\n });\n\n const importsOrder = topologicalSort(graph, failOnWrongOrder);\n\n if (importsOrder instanceof Error) {\n const importPath = importsOrder.nodes.find((importPath) =>\n // eslint-disable-next-line no-prototype-builtins\n importDecls.hasOwnProperty(importPath)\n );\n const decl = importDecls[importPath];\n\n throw decl.error(\n \"Failed to resolve order of composed modules \" +\n importsOrder.nodes\n .map((importPath) => \"`\" + importPath + \"`\")\n .join(\", \") +\n \".\",\n {\n plugin: \"postcss-modules-extract-imports\",\n word: \"composes\",\n }\n );\n }\n\n let lastImportRule;\n\n importsOrder.forEach((path) => {\n const importedSymbols = imports[path];\n let rule = existingImports[path];\n\n if (!rule && importedSymbols) {\n rule = postcss.rule({\n selector: `:import(\"${path}\")`,\n raws: { after: \"\\n\" },\n });\n\n if (lastImportRule) {\n root.insertAfter(lastImportRule, rule);\n } else {\n root.prepend(rule);\n }\n }\n\n lastImportRule = rule;\n\n if (!importedSymbols) {\n return;\n }\n\n Object.keys(importedSymbols).forEach((importedSymbol) => {\n rule.append(\n postcss.decl({\n value: importedSymbol,\n prop: importedSymbols[importedSymbol],\n raws: { before: \"\\n \" },\n })\n );\n });\n });\n },\n };\n },\n };\n};\n\nmodule.exports.postcss = true;\n","\"use strict\";\n\nconst selectorParser = require(\"postcss-selector-parser\");\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction getSingleLocalNamesForComposes(root) {\n return root.nodes.map((node) => {\n if (node.type !== \"selector\" || node.nodes.length !== 1) {\n throw new Error(\n `composition is only allowed when selector is single :local class name not in \"${root}\"`\n );\n }\n\n node = node.nodes[0];\n\n if (\n node.type !== \"pseudo\" ||\n node.value !== \":local\" ||\n node.nodes.length !== 1\n ) {\n throw new Error(\n 'composition is only allowed when selector is single :local class name not in \"' +\n root +\n '\", \"' +\n node +\n '\" is weird'\n );\n }\n\n node = node.first;\n\n if (node.type !== \"selector\" || node.length !== 1) {\n throw new Error(\n 'composition is only allowed when selector is single :local class name not in \"' +\n root +\n '\", \"' +\n node +\n '\" is weird'\n );\n }\n\n node = node.first;\n\n if (node.type !== \"class\") {\n // 'id' is not possible, because you can't compose ids\n throw new Error(\n 'composition is only allowed when selector is single :local class name not in \"' +\n root +\n '\", \"' +\n node +\n '\" is weird'\n );\n }\n\n return node.value;\n });\n}\n\nconst whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\nconst unescapeRegExp = new RegExp(\n \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\",\n \"ig\"\n);\n\nfunction unescape(str) {\n return str.replace(unescapeRegExp, (_, escaped, escapedWhitespace) => {\n const high = \"0x\" + escaped - 0x10000;\n\n // NaN means non-codepoint\n // Workaround erroneous numeric interpretation of +\"0x\"\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n });\n}\n\nconst plugin = (options = {}) => {\n const generateScopedName =\n (options && options.generateScopedName) || plugin.generateScopedName;\n const generateExportEntry =\n (options && options.generateExportEntry) || plugin.generateExportEntry;\n const exportGlobals = options && options.exportGlobals;\n\n return {\n postcssPlugin: \"postcss-modules-scope\",\n Once(root, { rule }) {\n const exports = Object.create(null);\n\n function exportScopedName(name, rawName) {\n const scopedName = generateScopedName(\n rawName ? rawName : name,\n root.source.input.from,\n root.source.input.css\n );\n const exportEntry = generateExportEntry(\n rawName ? rawName : name,\n scopedName,\n root.source.input.from,\n root.source.input.css\n );\n const { key, value } = exportEntry;\n\n exports[key] = exports[key] || [];\n\n if (exports[key].indexOf(value) < 0) {\n exports[key].push(value);\n }\n\n return scopedName;\n }\n\n function localizeNode(node) {\n switch (node.type) {\n case \"selector\":\n node.nodes = node.map(localizeNode);\n return node;\n case \"class\":\n return selectorParser.className({\n value: exportScopedName(\n node.value,\n node.raws && node.raws.value ? node.raws.value : null\n ),\n });\n case \"id\": {\n return selectorParser.id({\n value: exportScopedName(\n node.value,\n node.raws && node.raws.value ? node.raws.value : null\n ),\n });\n }\n }\n\n throw new Error(\n `${node.type} (\"${node}\") is not allowed in a :local block`\n );\n }\n\n function traverseNode(node) {\n switch (node.type) {\n case \"pseudo\":\n if (node.value === \":local\") {\n if (node.nodes.length !== 1) {\n throw new Error('Unexpected comma (\",\") in :local block');\n }\n\n const selector = localizeNode(node.first, node.spaces);\n // move the spaces that were around the psuedo selector to the first\n // non-container node\n selector.first.spaces = node.spaces;\n\n const nextNode = node.next();\n\n if (\n nextNode &&\n nextNode.type === \"combinator\" &&\n nextNode.value === \" \" &&\n /\\\\[A-F0-9]{1,6}$/.test(selector.last.value)\n ) {\n selector.last.spaces.after = \" \";\n }\n\n node.replaceWith(selector);\n\n return;\n }\n /* falls through */\n case \"root\":\n case \"selector\": {\n node.each(traverseNode);\n break;\n }\n case \"id\":\n case \"class\":\n if (exportGlobals) {\n exports[node.value] = [node.value];\n }\n break;\n }\n return node;\n }\n\n // Find any :import and remember imported names\n const importedNames = {};\n\n root.walkRules(/^:import\\(.+\\)$/, (rule) => {\n rule.walkDecls((decl) => {\n importedNames[decl.prop] = true;\n });\n });\n\n // Find any :local selectors\n root.walkRules((rule) => {\n let parsedSelector = selectorParser().astSync(rule);\n\n rule.selector = traverseNode(parsedSelector.clone()).toString();\n\n rule.walkDecls(/composes|compose-with/i, (decl) => {\n const localNames = getSingleLocalNamesForComposes(parsedSelector);\n const classes = decl.value.split(/\\s+/);\n\n classes.forEach((className) => {\n const global = /^global\\(([^)]+)\\)$/.exec(className);\n\n if (global) {\n localNames.forEach((exportedName) => {\n exports[exportedName].push(global[1]);\n });\n } else if (hasOwnProperty.call(importedNames, className)) {\n localNames.forEach((exportedName) => {\n exports[exportedName].push(className);\n });\n } else if (hasOwnProperty.call(exports, className)) {\n localNames.forEach((exportedName) => {\n exports[className].forEach((item) => {\n exports[exportedName].push(item);\n });\n });\n } else {\n throw decl.error(\n `referenced class name \"${className}\" in ${decl.prop} not found`\n );\n }\n });\n\n decl.remove();\n });\n\n // Find any :local values\n rule.walkDecls((decl) => {\n if (!/:local\\s*\\((.+?)\\)/.test(decl.value)) {\n return;\n }\n\n let tokens = decl.value.split(/(,|'[^']*'|\"[^\"]*\")/);\n\n tokens = tokens.map((token, idx) => {\n if (idx === 0 || tokens[idx - 1] === \",\") {\n let result = token;\n\n const localMatch = /:local\\s*\\((.+?)\\)/.exec(token);\n\n if (localMatch) {\n const input = localMatch.input;\n const matchPattern = localMatch[0];\n const matchVal = localMatch[1];\n const newVal = exportScopedName(matchVal);\n\n result = input.replace(matchPattern, newVal);\n } else {\n return token;\n }\n\n return result;\n } else {\n return token;\n }\n });\n\n decl.value = tokens.join(\"\");\n });\n });\n\n // Find any :local keyframes\n root.walkAtRules(/keyframes$/i, (atRule) => {\n const localMatch = /^\\s*:local\\s*\\((.+?)\\)\\s*$/.exec(atRule.params);\n\n if (!localMatch) {\n return;\n }\n\n atRule.params = exportScopedName(localMatch[1]);\n });\n\n // If we found any :locals, insert an :export rule\n const exportedNames = Object.keys(exports);\n\n if (exportedNames.length > 0) {\n const exportRule = rule({ selector: \":export\" });\n\n exportedNames.forEach((exportedName) =>\n exportRule.append({\n prop: exportedName,\n value: exports[exportedName].join(\" \"),\n raws: { before: \"\\n \" },\n })\n );\n\n root.append(exportRule);\n }\n },\n };\n};\n\nplugin.postcss = true;\n\nplugin.generateScopedName = function (name, path) {\n const sanitisedPath = path\n .replace(/\\.[^./\\\\]+$/, \"\")\n .replace(/[\\W_]+/g, \"_\")\n .replace(/^_|_$/g, \"\");\n\n return `_${sanitisedPath}__${name}`.trim();\n};\n\nplugin.generateExportEntry = function (name, scopedName) {\n return {\n key: unescape(name),\n value: unescape(scopedName),\n };\n};\n\nmodule.exports = plugin;\n","\"use strict\";\n\nconst ICSSUtils = require(\"icss-utils\");\n\nconst matchImports = /^(.+?|\\([\\s\\S]+?\\))\\s+from\\s+(\"[^\"]*\"|'[^']*'|[\\w-]+)$/;\nconst matchValueDefinition = /(?:\\s+|^)([\\w-]+):?(.*?)$/;\nconst matchImport = /^([\\w-]+)(?:\\s+as\\s+([\\w-]+))?/;\n\nmodule.exports = (options) => {\n let importIndex = 0;\n const createImportedName =\n (options && options.createImportedName) ||\n ((importName /*, path*/) =>\n `i__const_${importName.replace(/\\W/g, \"_\")}_${importIndex++}`);\n\n return {\n postcssPlugin: \"postcss-modules-values\",\n prepare(result) {\n const importAliases = [];\n const definitions = {};\n\n return {\n Once(root, postcss) {\n root.walkAtRules(/value/i, (atRule) => {\n const matches = atRule.params.match(matchImports);\n\n if (matches) {\n let [, /*match*/ aliases, path] = matches;\n\n // We can use constants for path names\n if (definitions[path]) {\n path = definitions[path];\n }\n\n const imports = aliases\n .replace(/^\\(\\s*([\\s\\S]+)\\s*\\)$/, \"$1\")\n .split(/\\s*,\\s*/)\n .map((alias) => {\n const tokens = matchImport.exec(alias);\n\n if (tokens) {\n const [, /*match*/ theirName, myName = theirName] = tokens;\n const importedName = createImportedName(myName);\n definitions[myName] = importedName;\n return { theirName, importedName };\n } else {\n throw new Error(`@import statement \"${alias}\" is invalid!`);\n }\n });\n\n importAliases.push({ path, imports });\n\n atRule.remove();\n\n return;\n }\n\n if (atRule.params.indexOf(\"@value\") !== -1) {\n result.warn(\"Invalid value definition: \" + atRule.params);\n }\n\n let [, key, value] = `${atRule.params}${atRule.raws.between}`.match(\n matchValueDefinition\n );\n\n const normalizedValue = value.replace(/\\/\\*((?!\\*\\/).*?)\\*\\//g, \"\");\n\n if (normalizedValue.length === 0) {\n result.warn(\"Invalid value definition: \" + atRule.params);\n atRule.remove();\n\n return;\n }\n\n let isOnlySpace = /^\\s+$/.test(normalizedValue);\n\n if (!isOnlySpace) {\n value = value.trim();\n }\n\n // Add to the definitions, knowing that values can refer to each other\n definitions[key] = ICSSUtils.replaceValueSymbols(\n value,\n definitions\n );\n\n atRule.remove();\n });\n\n /* If we have no definitions, don't continue */\n if (!Object.keys(definitions).length) {\n return;\n }\n\n /* Perform replacements */\n ICSSUtils.replaceSymbols(root, definitions);\n\n /* We want to export anything defined by now, but don't add it to the CSS yet or it well get picked up by the replacement stuff */\n const exportDeclarations = Object.keys(definitions).map((key) =>\n postcss.decl({\n value: definitions[key],\n prop: key,\n raws: { before: \"\\n \" },\n })\n );\n\n /* Add export rules if any */\n if (exportDeclarations.length > 0) {\n const exportRule = postcss.rule({\n selector: \":export\",\n raws: { after: \"\\n\" },\n });\n\n exportRule.append(exportDeclarations);\n\n root.prepend(exportRule);\n }\n\n /* Add import rules */\n importAliases.reverse().forEach(({ path, imports }) => {\n const importRule = postcss.rule({\n selector: `:import(${path})`,\n raws: { after: \"\\n\" },\n });\n\n imports.forEach(({ theirName, importedName }) => {\n importRule.append({\n value: theirName,\n prop: importedName,\n raws: { before: \"\\n \" },\n });\n });\n\n root.prepend(importRule);\n });\n },\n };\n },\n };\n};\n\nmodule.exports.postcss = true;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.behaviours = undefined;\nexports.getDefaultPlugins = getDefaultPlugins;\nexports.isValidBehaviour = isValidBehaviour;\n\nvar _postcssModulesLocalByDefault = require(\"postcss-modules-local-by-default\");\n\nvar _postcssModulesLocalByDefault2 = _interopRequireDefault(_postcssModulesLocalByDefault);\n\nvar _postcssModulesExtractImports = require(\"postcss-modules-extract-imports\");\n\nvar _postcssModulesExtractImports2 = _interopRequireDefault(_postcssModulesExtractImports);\n\nvar _postcssModulesScope = require(\"postcss-modules-scope\");\n\nvar _postcssModulesScope2 = _interopRequireDefault(_postcssModulesScope);\n\nvar _postcssModulesValues = require(\"postcss-modules-values\");\n\nvar _postcssModulesValues2 = _interopRequireDefault(_postcssModulesValues);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst behaviours = exports.behaviours = {\n LOCAL: \"local\",\n GLOBAL: \"global\"\n};\n\nfunction getDefaultPlugins({\n behaviour,\n generateScopedName,\n exportGlobals\n}) {\n const scope = (0, _postcssModulesScope2.default)({ generateScopedName, exportGlobals });\n\n const plugins = {\n [behaviours.LOCAL]: [_postcssModulesValues2.default, _postcssModulesLocalByDefault2.default, _postcssModulesExtractImports2.default, scope],\n [behaviours.GLOBAL]: [_postcssModulesValues2.default, _postcssModulesExtractImports2.default, scope]\n };\n\n return plugins[behaviour];\n}\n\nfunction isValidBehaviour(behaviour) {\n return Object.keys(behaviours).map(key => behaviours[key]).indexOf(behaviour) > -1;\n}","\"use strict\";\n\nvar _postcss = require(\"postcss\");\n\nvar _postcss2 = _interopRequireDefault(_postcss);\n\nvar _lodash = require(\"lodash.camelcase\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _genericNames = require(\"generic-names\");\n\nvar _genericNames2 = _interopRequireDefault(_genericNames);\n\nvar _unquote = require(\"./unquote\");\n\nvar _unquote2 = _interopRequireDefault(_unquote);\n\nvar _parser = require(\"./css-loader-core/parser\");\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _loader = require(\"./css-loader-core/loader\");\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _generateScopedName = require(\"./generateScopedName\");\n\nvar _generateScopedName2 = _interopRequireDefault(_generateScopedName);\n\nvar _saveJSON = require(\"./saveJSON\");\n\nvar _saveJSON2 = _interopRequireDefault(_saveJSON);\n\nvar _behaviours = require(\"./behaviours\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nconst PLUGIN_NAME = \"postcss-modules\";\n\nfunction getDefaultScopeBehaviour(opts) {\n if (opts.scopeBehaviour && (0, _behaviours.isValidBehaviour)(opts.scopeBehaviour)) {\n return opts.scopeBehaviour;\n }\n\n return _behaviours.behaviours.LOCAL;\n}\n\nfunction getScopedNameGenerator(opts) {\n const scopedNameGenerator = opts.generateScopedName || _generateScopedName2.default;\n\n if (typeof scopedNameGenerator === \"function\") return scopedNameGenerator;\n return (0, _genericNames2.default)(scopedNameGenerator, {\n context: process.cwd(),\n hashPrefix: opts.hashPrefix\n });\n}\n\nfunction getLoader(opts, plugins) {\n const root = typeof opts.root === \"undefined\" ? \"/\" : opts.root;\n return typeof opts.Loader === \"function\" ? new opts.Loader(root, plugins) : new _loader2.default(root, plugins);\n}\n\nfunction isGlobalModule(globalModules, inputFile) {\n return globalModules.some(regex => inputFile.match(regex));\n}\n\nfunction getDefaultPluginsList(opts, inputFile) {\n const globalModulesList = opts.globalModulePaths || null;\n const exportGlobals = opts.exportGlobals || false;\n const defaultBehaviour = getDefaultScopeBehaviour(opts);\n const generateScopedName = getScopedNameGenerator(opts);\n\n if (globalModulesList && isGlobalModule(globalModulesList, inputFile)) {\n return (0, _behaviours.getDefaultPlugins)({\n behaviour: _behaviours.behaviours.GLOBAL,\n generateScopedName,\n exportGlobals\n });\n }\n\n return (0, _behaviours.getDefaultPlugins)({\n behaviour: defaultBehaviour,\n generateScopedName,\n exportGlobals\n });\n}\n\nfunction isOurPlugin(plugin) {\n return plugin.postcssPlugin === PLUGIN_NAME;\n}\n\nfunction dashesCamelCase(string) {\n return string.replace(/-+(\\w)/g, (_, firstLetter) => firstLetter.toUpperCase());\n}\n\nmodule.exports = (opts = {}) => {\n return {\n postcssPlugin: PLUGIN_NAME,\n OnceExit(css, { result }) {\n return _asyncToGenerator(function* () {\n const getJSON = opts.getJSON || _saveJSON2.default;\n const inputFile = css.source.input.file;\n const pluginList = getDefaultPluginsList(opts, inputFile);\n const resultPluginIndex = result.processor.plugins.findIndex(function (plugin) {\n return isOurPlugin(plugin);\n });\n if (resultPluginIndex === -1) {\n throw new Error('Plugin missing from options.');\n }\n const earlierPlugins = result.processor.plugins.slice(0, resultPluginIndex);\n const loaderPlugins = [...earlierPlugins, ...pluginList];\n const loader = getLoader(opts, loaderPlugins);\n const fetcher = function fetcher(file, relativeTo, depTrace) {\n const unquoteFile = (0, _unquote2.default)(file);\n const resolvedResult = typeof opts.resolve === 'function' && opts.resolve(unquoteFile);\n const resolvedFile = resolvedResult instanceof Promise ? resolvedResult : Promise.resolve(resolvedResult);\n\n return resolvedFile.then(function (f) {\n return loader.fetch.call(loader, `\"${f || unquoteFile}\"`, relativeTo, depTrace);\n });\n };\n const parser = new _parser2.default(fetcher);\n\n yield (0, _postcss2.default)([...pluginList, parser.plugin()]).process(css, {\n from: inputFile\n });\n\n const out = loader.finalSource;\n if (out) css.prepend(out);\n\n if (opts.localsConvention) {\n const isFunc = typeof opts.localsConvention === \"function\";\n\n parser.exportTokens = Object.entries(parser.exportTokens).reduce(function (tokens, [className, value]) {\n if (isFunc) {\n tokens[opts.localsConvention(className, value, inputFile)] = value;\n\n return tokens;\n }\n\n switch (opts.localsConvention) {\n case \"camelCase\":\n tokens[className] = value;\n tokens[(0, _lodash2.default)(className)] = value;\n\n break;\n case \"camelCaseOnly\":\n tokens[(0, _lodash2.default)(className)] = value;\n\n break;\n case \"dashes\":\n tokens[className] = value;\n tokens[dashesCamelCase(className)] = value;\n\n break;\n case \"dashesOnly\":\n tokens[dashesCamelCase(className)] = value;\n\n break;\n }\n\n return tokens;\n }, {});\n }\n\n result.messages.push({\n type: \"export\",\n plugin: \"postcss-modules\",\n exportTokens: parser.exportTokens\n });\n\n // getJSON may return a promise\n return getJSON(css.source.input.file, parser.exportTokens, result.opts.to);\n })();\n }\n };\n};\n\nmodule.exports.postcss = true;"],"names":["global","root","Symbol","require$$0","parseQuery","getOptions","path","stringifyRequest","getRemainingRequest","getCurrentRequest","isUrlRequest","urlToRequest","parseString","this","getHashDigest","require$$1","emojisList","require$$2","interpolateName","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","unquote_1","parser","_interopRequireDefault","_postcss","_postcss2","_fs","_parser","_parser2","generateScopedName_1","saveJSON_1","types","hasOwnProperty","comment","combinator","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","selectors","replaceValueSymbols","replaceSymbols","extractICSS","createICSSRules","src","selectorParser","srcModule","topologicalSort","matchImports","behaviours_1","buildModule"],"mappings":"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EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG;AAC/B,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC9C,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC5E,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC7D,EAAE,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG;AAC9C,EAAE,Q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E,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAA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SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,UAAU;AACZ,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,UAAU;AACZ,EAAE,UAAU;AACZ,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,OAAO;AACT,EAAE,OAAO;AACT,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,KAAK;AACP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"}
\ No newline at end of file
diff --git a/packages/astro/vendor/vite/dist/node/chunks/dep-e39b05d6.js b/packages/astro/vendor/vite/dist/node/chunks/dep-2d8e2cb1.js
old mode 100755
new mode 100644
similarity index 98%
rename from packages/astro/vendor/vite/dist/node/chunks/dep-e39b05d6.js
rename to packages/astro/vendor/vite/dist/node/chunks/dep-2d8e2cb1.js
index 5895a1083101..efd7fd680e66
--- a/packages/astro/vendor/vite/dist/node/chunks/dep-e39b05d6.js
+++ b/packages/astro/vendor/vite/dist/node/chunks/dep-2d8e2cb1.js
@@ -10,11 +10,11 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
function _mergeNamespaces(n, m) {
for (var i = 0; i < m.length; i++) {
var e = m[i];
- for (var k in e) {
+ if (typeof e !== 'string' && !Array.isArray(e)) { for (var k in e) {
if (k !== 'default' && !(k in n)) {
n[k] = e[k];
}
- }
+ } }
}
return n;
}
@@ -743,4 +743,4 @@ var index = /*#__PURE__*/_mergeNamespaces({
}, [postcssImport]);
exports.index = index;
-//# sourceMappingURL=dep-e39b05d6.js.map
+//# sourceMappingURL=dep-2d8e2cb1.js.map
diff --git a/packages/astro/vendor/vite/dist/node/chunks/dep-e39b05d6.js.map b/packages/astro/vendor/vite/dist/node/chunks/dep-2d8e2cb1.js.map
old mode 100755
new mode 100644
similarity index 98%
rename from packages/astro/vendor/vite/dist/node/chunks/dep-e39b05d6.js.map
rename to packages/astro/vendor/vite/dist/node/chunks/dep-2d8e2cb1.js.map
index 798e7f200072..b386e23e2570
--- a/packages/astro/vendor/vite/dist/node/chunks/dep-e39b05d6.js.map
+++ b/packages/astro/vendor/vite/dist/node/chunks/dep-2d8e2cb1.js.map
@@ -1 +1 @@
-{"version":3,"file":"dep-e39b05d6.js","sources":["../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.3.8/node_modules/postcss-import/lib/join-media.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.3.8/node_modules/postcss-import/lib/resolve-id.js","../../../../../node_modules/.pnpm/pify@2.3.0/node_modules/pify/index.js","../../../../../node_modules/.pnpm/read-cache@1.0.0/node_modules/read-cache/index.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.3.8/node_modules/postcss-import/lib/load-content.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.3.8/node_modules/postcss-import/lib/process-content.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.3.8/node_modules/postcss-import/lib/parse-statements.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.3.8/node_modules/postcss-import/index.js"],"sourcesContent":["\"use strict\"\n\nmodule.exports = function (parentMedia, childMedia) {\n if (!parentMedia.length && childMedia.length) return childMedia\n if (parentMedia.length && !childMedia.length) return parentMedia\n if (!parentMedia.length && !childMedia.length) return []\n\n const media = []\n\n parentMedia.forEach(parentItem => {\n childMedia.forEach(childItem => {\n if (parentItem !== childItem) media.push(`${parentItem} and ${childItem}`)\n })\n })\n\n return media\n}\n","\"use strict\"\n\n// external tooling\nconst resolve = require(\"resolve\")\n\nconst moduleDirectories = [\"web_modules\", \"node_modules\"]\n\nfunction resolveModule(id, opts) {\n return new Promise((res, rej) => {\n resolve(id, opts, (err, path) => (err ? rej(err) : res(path)))\n })\n}\n\nmodule.exports = function (id, base, options) {\n const paths = options.path\n\n const resolveOpts = {\n basedir: base,\n moduleDirectory: moduleDirectories.concat(options.addModulesDirectories),\n paths,\n extensions: [\".css\"],\n packageFilter: function processPackage(pkg) {\n if (pkg.style) pkg.main = pkg.style\n else if (!pkg.main || !/\\.css$/.test(pkg.main)) pkg.main = \"index.css\"\n return pkg\n },\n preserveSymlinks: false,\n }\n\n return resolveModule(`./${id}`, resolveOpts)\n .catch(() => resolveModule(id, resolveOpts))\n .catch(() => {\n if (paths.indexOf(base) === -1) paths.unshift(base)\n\n throw new Error(\n `Failed to find '${id}'\n in [\n ${paths.join(\",\\n \")}\n ]`\n )\n })\n}\n","'use strict';\n\nvar processFn = function (fn, P, opts) {\n\treturn function () {\n\t\tvar that = this;\n\t\tvar args = new Array(arguments.length);\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\treturn new P(function (resolve, reject) {\n\t\t\targs.push(function (err, result) {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else if (opts.multiArgs) {\n\t\t\t\t\tvar results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i - 1] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(results);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfn.apply(that, args);\n\t\t});\n\t};\n};\n\nvar pify = module.exports = function (obj, P, opts) {\n\tif (typeof P !== 'function') {\n\t\topts = P;\n\t\tP = Promise;\n\t}\n\n\topts = opts || {};\n\topts.exclude = opts.exclude || [/.+Sync$/];\n\n\tvar filter = function (key) {\n\t\tvar match = function (pattern) {\n\t\t\treturn typeof pattern === 'string' ? key === pattern : pattern.test(key);\n\t\t};\n\n\t\treturn opts.include ? opts.include.some(match) : !opts.exclude.some(match);\n\t};\n\n\tvar ret = typeof obj === 'function' ? function () {\n\t\tif (opts.excludeMain) {\n\t\t\treturn obj.apply(this, arguments);\n\t\t}\n\n\t\treturn processFn(obj, P, opts).apply(this, arguments);\n\t} : {};\n\n\treturn Object.keys(obj).reduce(function (ret, key) {\n\t\tvar x = obj[key];\n\n\t\tret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x;\n\n\t\treturn ret;\n\t}, ret);\n};\n\npify.all = pify;\n","var fs = require('fs');\r\nvar path = require('path');\r\nvar pify = require('pify');\r\n\r\nvar stat = pify(fs.stat);\r\nvar readFile = pify(fs.readFile);\r\nvar resolve = path.resolve;\r\n\r\nvar cache = Object.create(null);\r\n\r\nfunction convert(content, encoding) {\r\n\tif (Buffer.isEncoding(encoding)) {\r\n\t\treturn content.toString(encoding);\r\n\t}\r\n\treturn content;\r\n}\r\n\r\nmodule.exports = function (path, encoding) {\r\n\tpath = resolve(path);\r\n\r\n\treturn stat(path).then(function (stats) {\r\n\t\tvar item = cache[path];\r\n\r\n\t\tif (item && item.mtime.getTime() === stats.mtime.getTime()) {\r\n\t\t\treturn convert(item.content, encoding);\r\n\t\t}\r\n\r\n\t\treturn readFile(path).then(function (data) {\r\n\t\t\tcache[path] = {\r\n\t\t\t\tmtime: stats.mtime,\r\n\t\t\t\tcontent: data\r\n\t\t\t};\r\n\r\n\t\t\treturn convert(data, encoding);\r\n\t\t});\r\n\t}).catch(function (err) {\r\n\t\tcache[path] = null;\r\n\t\treturn Promise.reject(err);\r\n\t});\r\n};\r\n\r\nmodule.exports.sync = function (path, encoding) {\r\n\tpath = resolve(path);\r\n\r\n\ttry {\r\n\t\tvar stats = fs.statSync(path);\r\n\t\tvar item = cache[path];\r\n\r\n\t\tif (item && item.mtime.getTime() === stats.mtime.getTime()) {\r\n\t\t\treturn convert(item.content, encoding);\r\n\t\t}\r\n\r\n\t\tvar data = fs.readFileSync(path);\r\n\r\n\t\tcache[path] = {\r\n\t\t\tmtime: stats.mtime,\r\n\t\t\tcontent: data\r\n\t\t};\r\n\r\n\t\treturn convert(data, encoding);\r\n\t} catch (err) {\r\n\t\tcache[path] = null;\r\n\t\tthrow err;\r\n\t}\r\n\r\n};\r\n\r\nmodule.exports.get = function (path, encoding) {\r\n\tpath = resolve(path);\r\n\tif (cache[path]) {\r\n\t\treturn convert(cache[path].content, encoding);\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nmodule.exports.clear = function () {\r\n\tcache = Object.create(null);\r\n};\r\n","\"use strict\"\n\nconst readCache = require(\"read-cache\")\n\nmodule.exports = filename => readCache(filename, \"utf-8\")\n","\"use strict\"\n\n// builtin tooling\nconst path = require(\"path\")\n\n// placeholder tooling\nlet sugarss\n\nmodule.exports = function processContent(\n result,\n content,\n filename,\n options,\n postcss\n) {\n const { plugins } = options\n const ext = path.extname(filename)\n\n const parserList = []\n\n // SugarSS support:\n if (ext === \".sss\") {\n if (!sugarss) {\n try {\n sugarss = require(\"sugarss\")\n } catch {} // Ignore\n }\n if (sugarss)\n return runPostcss(postcss, content, filename, plugins, [sugarss])\n }\n\n // Syntax support:\n if (result.opts.syntax && result.opts.syntax.parse) {\n parserList.push(result.opts.syntax.parse)\n }\n\n // Parser support:\n if (result.opts.parser) parserList.push(result.opts.parser)\n // Try the default as a last resort:\n parserList.push(null)\n\n return runPostcss(postcss, content, filename, plugins, parserList)\n}\n\nfunction runPostcss(postcss, content, filename, plugins, parsers, index) {\n if (!index) index = 0\n return postcss(plugins)\n .process(content, {\n from: filename,\n parser: parsers[index],\n })\n .catch(err => {\n // If there's an error, try the next parser\n index++\n // If there are no parsers left, throw it\n if (index === parsers.length) throw err\n return runPostcss(postcss, content, filename, plugins, parsers, index)\n })\n}\n","\"use strict\"\n\n// external tooling\nconst valueParser = require(\"postcss-value-parser\")\n\n// extended tooling\nconst { stringify } = valueParser\n\nfunction split(params, start) {\n const list = []\n const last = params.reduce((item, node, index) => {\n if (index < start) return \"\"\n if (node.type === \"div\" && node.value === \",\") {\n list.push(item)\n return \"\"\n }\n return item + stringify(node)\n }, \"\")\n list.push(last)\n return list\n}\n\nmodule.exports = function (result, styles) {\n const statements = []\n let nodes = []\n\n styles.each(node => {\n let stmt\n if (node.type === \"atrule\") {\n if (node.name === \"import\") stmt = parseImport(result, node)\n else if (node.name === \"media\") stmt = parseMedia(result, node)\n else if (node.name === \"charset\") stmt = parseCharset(result, node)\n }\n\n if (stmt) {\n if (nodes.length) {\n statements.push({\n type: \"nodes\",\n nodes,\n media: [],\n })\n nodes = []\n }\n statements.push(stmt)\n } else nodes.push(node)\n })\n\n if (nodes.length) {\n statements.push({\n type: \"nodes\",\n nodes,\n media: [],\n })\n }\n\n return statements\n}\n\nfunction parseMedia(result, atRule) {\n const params = valueParser(atRule.params).nodes\n return {\n type: \"media\",\n node: atRule,\n media: split(params, 0),\n }\n}\n\nfunction parseCharset(result, atRule) {\n if (atRule.prev()) {\n return result.warn(\"@charset must precede all other statements\", {\n node: atRule,\n })\n }\n return {\n type: \"charset\",\n node: atRule,\n media: [],\n }\n}\n\nfunction parseImport(result, atRule) {\n let prev = atRule.prev()\n if (prev) {\n do {\n if (\n prev.type !== \"comment\" &&\n (prev.type !== \"atrule\" ||\n (prev.name !== \"import\" && prev.name !== \"charset\"))\n ) {\n return result.warn(\n \"@import must precede all other statements (besides @charset)\",\n { node: atRule }\n )\n }\n prev = prev.prev()\n } while (prev)\n }\n\n if (atRule.nodes) {\n return result.warn(\n \"It looks like you didn't end your @import statement correctly. \" +\n \"Child nodes are attached to it.\",\n { node: atRule }\n )\n }\n\n const params = valueParser(atRule.params).nodes\n const stmt = {\n type: \"import\",\n node: atRule,\n media: [],\n }\n\n // prettier-ignore\n if (\n !params.length ||\n (\n params[0].type !== \"string\" ||\n !params[0].value\n ) &&\n (\n params[0].type !== \"function\" ||\n params[0].value !== \"url\" ||\n !params[0].nodes.length ||\n !params[0].nodes[0].value\n )\n ) {\n return result.warn(`Unable to find uri in '${ atRule.toString() }'`, {\n node: atRule,\n })\n }\n\n if (params[0].type === \"string\") stmt.uri = params[0].value\n else stmt.uri = params[0].nodes[0].value\n stmt.fullUri = stringify(params[0])\n\n if (params.length > 2) {\n if (params[1].type !== \"space\") {\n return result.warn(\"Invalid import media statement\", { node: atRule })\n }\n stmt.media = split(params, 2)\n }\n\n return stmt\n}\n","\"use strict\"\n// builtin tooling\nconst path = require(\"path\")\n\n// internal tooling\nconst joinMedia = require(\"./lib/join-media\")\nconst resolveId = require(\"./lib/resolve-id\")\nconst loadContent = require(\"./lib/load-content\")\nconst processContent = require(\"./lib/process-content\")\nconst parseStatements = require(\"./lib/parse-statements\")\n\nfunction AtImport(options) {\n options = {\n root: process.cwd(),\n path: [],\n skipDuplicates: true,\n resolve: resolveId,\n load: loadContent,\n plugins: [],\n addModulesDirectories: [],\n ...options,\n }\n\n options.root = path.resolve(options.root)\n\n // convert string to an array of a single element\n if (typeof options.path === \"string\") options.path = [options.path]\n\n if (!Array.isArray(options.path)) options.path = []\n\n options.path = options.path.map(p => path.resolve(options.root, p))\n\n return {\n postcssPlugin: \"postcss-import\",\n Once(styles, { result, atRule, postcss }) {\n const state = {\n importedFiles: {},\n hashFiles: {},\n }\n\n if (styles.source && styles.source.input && styles.source.input.file) {\n state.importedFiles[styles.source.input.file] = {}\n }\n\n if (options.plugins && !Array.isArray(options.plugins)) {\n throw new Error(\"plugins option must be an array\")\n }\n\n return parseStyles(result, styles, options, state, []).then(bundle => {\n applyRaws(bundle)\n applyMedia(bundle)\n applyStyles(bundle, styles)\n })\n\n function applyRaws(bundle) {\n bundle.forEach((stmt, index) => {\n if (index === 0) return\n\n if (stmt.parent) {\n const { before } = stmt.parent.node.raws\n if (stmt.type === \"nodes\") stmt.nodes[0].raws.before = before\n else stmt.node.raws.before = before\n } else if (stmt.type === \"nodes\") {\n stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || \"\\n\"\n }\n })\n }\n\n function applyMedia(bundle) {\n bundle.forEach(stmt => {\n if (!stmt.media.length || stmt.type === \"charset\") return\n if (stmt.type === \"import\") {\n stmt.node.params = `${stmt.fullUri} ${stmt.media.join(\", \")}`\n } else if (stmt.type === \"media\")\n stmt.node.params = stmt.media.join(\", \")\n else {\n const { nodes } = stmt\n const { parent } = nodes[0]\n const mediaNode = atRule({\n name: \"media\",\n params: stmt.media.join(\", \"),\n source: parent.source,\n })\n\n parent.insertBefore(nodes[0], mediaNode)\n\n // remove nodes\n nodes.forEach(node => {\n node.parent = undefined\n })\n\n // better output\n nodes[0].raws.before = nodes[0].raws.before || \"\\n\"\n\n // wrap new rules with media query\n mediaNode.append(nodes)\n\n stmt.type = \"media\"\n stmt.node = mediaNode\n delete stmt.nodes\n }\n })\n }\n\n function applyStyles(bundle, styles) {\n styles.nodes = []\n\n // Strip additional statements.\n bundle.forEach(stmt => {\n if ([\"charset\", \"import\", \"media\"].includes(stmt.type)) {\n stmt.node.parent = undefined\n styles.append(stmt.node)\n } else if (stmt.type === \"nodes\") {\n stmt.nodes.forEach(node => {\n node.parent = undefined\n styles.append(node)\n })\n }\n })\n }\n\n function parseStyles(result, styles, options, state, media) {\n const statements = parseStatements(result, styles)\n\n return Promise.resolve(statements)\n .then(stmts => {\n // process each statement in series\n return stmts.reduce((promise, stmt) => {\n return promise.then(() => {\n stmt.media = joinMedia(media, stmt.media || [])\n\n // skip protocol base uri (protocol://url) or protocol-relative\n if (\n stmt.type !== \"import\" ||\n /^(?:[a-z]+:)?\\/\\//i.test(stmt.uri)\n ) {\n return\n }\n\n if (options.filter && !options.filter(stmt.uri)) {\n // rejected by filter\n return\n }\n\n return resolveImportId(result, stmt, options, state)\n })\n }, Promise.resolve())\n })\n .then(() => {\n let charset\n const imports = []\n const bundle = []\n\n function handleCharset(stmt) {\n if (!charset) charset = stmt\n // charsets aren't case-sensitive, so convert to lower case to compare\n else if (\n stmt.node.params.toLowerCase() !==\n charset.node.params.toLowerCase()\n ) {\n throw new Error(\n `Incompatable @charset statements:\n ${stmt.node.params} specified in ${stmt.node.source.input.file}\n ${charset.node.params} specified in ${charset.node.source.input.file}`\n )\n }\n }\n\n // squash statements and their children\n statements.forEach(stmt => {\n if (stmt.type === \"charset\") handleCharset(stmt)\n else if (stmt.type === \"import\") {\n if (stmt.children) {\n stmt.children.forEach((child, index) => {\n if (child.type === \"import\") imports.push(child)\n else if (child.type === \"charset\") handleCharset(child)\n else bundle.push(child)\n // For better output\n if (index === 0) child.parent = stmt\n })\n } else imports.push(stmt)\n } else if (stmt.type === \"media\" || stmt.type === \"nodes\") {\n bundle.push(stmt)\n }\n })\n\n return charset\n ? [charset, ...imports.concat(bundle)]\n : imports.concat(bundle)\n })\n }\n\n function resolveImportId(result, stmt, options, state) {\n const atRule = stmt.node\n let sourceFile\n if (atRule.source && atRule.source.input && atRule.source.input.file) {\n sourceFile = atRule.source.input.file\n }\n const base = sourceFile\n ? path.dirname(atRule.source.input.file)\n : options.root\n\n return Promise.resolve(options.resolve(stmt.uri, base, options))\n .then(paths => {\n if (!Array.isArray(paths)) paths = [paths]\n // Ensure that each path is absolute:\n return Promise.all(\n paths.map(file => {\n return !path.isAbsolute(file)\n ? resolveId(file, base, options)\n : file\n })\n )\n })\n .then(resolved => {\n // Add dependency messages:\n resolved.forEach(file => {\n result.messages.push({\n type: \"dependency\",\n plugin: \"postcss-import\",\n file,\n parent: sourceFile,\n })\n })\n\n return Promise.all(\n resolved.map(file => {\n return loadImportContent(result, stmt, file, options, state)\n })\n )\n })\n .then(result => {\n // Merge loaded statements\n stmt.children = result.reduce((result, statements) => {\n return statements ? result.concat(statements) : result\n }, [])\n })\n }\n\n function loadImportContent(result, stmt, filename, options, state) {\n const atRule = stmt.node\n const { media } = stmt\n if (options.skipDuplicates) {\n // skip files already imported at the same scope\n if (\n state.importedFiles[filename] &&\n state.importedFiles[filename][media]\n ) {\n return\n }\n\n // save imported files to skip them next time\n if (!state.importedFiles[filename]) state.importedFiles[filename] = {}\n state.importedFiles[filename][media] = true\n }\n\n return Promise.resolve(options.load(filename, options)).then(\n content => {\n if (content.trim() === \"\") {\n result.warn(`${filename} is empty`, { node: atRule })\n return\n }\n\n // skip previous imported files not containing @import rules\n if (state.hashFiles[content] && state.hashFiles[content][media])\n return\n\n return processContent(\n result,\n content,\n filename,\n options,\n postcss\n ).then(importedResult => {\n const styles = importedResult.root\n result.messages = result.messages.concat(importedResult.messages)\n\n if (options.skipDuplicates) {\n const hasImport = styles.some(child => {\n return child.type === \"atrule\" && child.name === \"import\"\n })\n if (!hasImport) {\n // save hash files to skip them next time\n if (!state.hashFiles[content]) state.hashFiles[content] = {}\n state.hashFiles[content][media] = true\n }\n }\n\n // recursion: import @import from imported file\n return parseStyles(result, styles, options, state, media)\n })\n }\n )\n }\n },\n }\n}\n\nAtImport.postcss = true\n\nmodule.exports = AtImport\n"],"names":["joinMedia","resolve","require$$0","resolveId","pify","pifyModule","path","require$$1","require$$2","readCacheModule","loadContent","processContent","parseStatements","require$$3","require$$4","require$$5"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"dep-2d8e2cb1.js","sources":["../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.4.5/node_modules/postcss-import/lib/join-media.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.4.5/node_modules/postcss-import/lib/resolve-id.js","../../../../../node_modules/.pnpm/pify@2.3.0/node_modules/pify/index.js","../../../../../node_modules/.pnpm/read-cache@1.0.0/node_modules/read-cache/index.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.4.5/node_modules/postcss-import/lib/load-content.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.4.5/node_modules/postcss-import/lib/process-content.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.4.5/node_modules/postcss-import/lib/parse-statements.js","../../../../../node_modules/.pnpm/postcss-import@14.0.2_postcss@8.4.5/node_modules/postcss-import/index.js"],"sourcesContent":["\"use strict\"\n\nmodule.exports = function (parentMedia, childMedia) {\n if (!parentMedia.length && childMedia.length) return childMedia\n if (parentMedia.length && !childMedia.length) return parentMedia\n if (!parentMedia.length && !childMedia.length) return []\n\n const media = []\n\n parentMedia.forEach(parentItem => {\n childMedia.forEach(childItem => {\n if (parentItem !== childItem) media.push(`${parentItem} and ${childItem}`)\n })\n })\n\n return media\n}\n","\"use strict\"\n\n// external tooling\nconst resolve = require(\"resolve\")\n\nconst moduleDirectories = [\"web_modules\", \"node_modules\"]\n\nfunction resolveModule(id, opts) {\n return new Promise((res, rej) => {\n resolve(id, opts, (err, path) => (err ? rej(err) : res(path)))\n })\n}\n\nmodule.exports = function (id, base, options) {\n const paths = options.path\n\n const resolveOpts = {\n basedir: base,\n moduleDirectory: moduleDirectories.concat(options.addModulesDirectories),\n paths,\n extensions: [\".css\"],\n packageFilter: function processPackage(pkg) {\n if (pkg.style) pkg.main = pkg.style\n else if (!pkg.main || !/\\.css$/.test(pkg.main)) pkg.main = \"index.css\"\n return pkg\n },\n preserveSymlinks: false,\n }\n\n return resolveModule(`./${id}`, resolveOpts)\n .catch(() => resolveModule(id, resolveOpts))\n .catch(() => {\n if (paths.indexOf(base) === -1) paths.unshift(base)\n\n throw new Error(\n `Failed to find '${id}'\n in [\n ${paths.join(\",\\n \")}\n ]`\n )\n })\n}\n","'use strict';\n\nvar processFn = function (fn, P, opts) {\n\treturn function () {\n\t\tvar that = this;\n\t\tvar args = new Array(arguments.length);\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\treturn new P(function (resolve, reject) {\n\t\t\targs.push(function (err, result) {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else if (opts.multiArgs) {\n\t\t\t\t\tvar results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i - 1] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(results);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfn.apply(that, args);\n\t\t});\n\t};\n};\n\nvar pify = module.exports = function (obj, P, opts) {\n\tif (typeof P !== 'function') {\n\t\topts = P;\n\t\tP = Promise;\n\t}\n\n\topts = opts || {};\n\topts.exclude = opts.exclude || [/.+Sync$/];\n\n\tvar filter = function (key) {\n\t\tvar match = function (pattern) {\n\t\t\treturn typeof pattern === 'string' ? key === pattern : pattern.test(key);\n\t\t};\n\n\t\treturn opts.include ? opts.include.some(match) : !opts.exclude.some(match);\n\t};\n\n\tvar ret = typeof obj === 'function' ? function () {\n\t\tif (opts.excludeMain) {\n\t\t\treturn obj.apply(this, arguments);\n\t\t}\n\n\t\treturn processFn(obj, P, opts).apply(this, arguments);\n\t} : {};\n\n\treturn Object.keys(obj).reduce(function (ret, key) {\n\t\tvar x = obj[key];\n\n\t\tret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x;\n\n\t\treturn ret;\n\t}, ret);\n};\n\npify.all = pify;\n","var fs = require('fs');\r\nvar path = require('path');\r\nvar pify = require('pify');\r\n\r\nvar stat = pify(fs.stat);\r\nvar readFile = pify(fs.readFile);\r\nvar resolve = path.resolve;\r\n\r\nvar cache = Object.create(null);\r\n\r\nfunction convert(content, encoding) {\r\n\tif (Buffer.isEncoding(encoding)) {\r\n\t\treturn content.toString(encoding);\r\n\t}\r\n\treturn content;\r\n}\r\n\r\nmodule.exports = function (path, encoding) {\r\n\tpath = resolve(path);\r\n\r\n\treturn stat(path).then(function (stats) {\r\n\t\tvar item = cache[path];\r\n\r\n\t\tif (item && item.mtime.getTime() === stats.mtime.getTime()) {\r\n\t\t\treturn convert(item.content, encoding);\r\n\t\t}\r\n\r\n\t\treturn readFile(path).then(function (data) {\r\n\t\t\tcache[path] = {\r\n\t\t\t\tmtime: stats.mtime,\r\n\t\t\t\tcontent: data\r\n\t\t\t};\r\n\r\n\t\t\treturn convert(data, encoding);\r\n\t\t});\r\n\t}).catch(function (err) {\r\n\t\tcache[path] = null;\r\n\t\treturn Promise.reject(err);\r\n\t});\r\n};\r\n\r\nmodule.exports.sync = function (path, encoding) {\r\n\tpath = resolve(path);\r\n\r\n\ttry {\r\n\t\tvar stats = fs.statSync(path);\r\n\t\tvar item = cache[path];\r\n\r\n\t\tif (item && item.mtime.getTime() === stats.mtime.getTime()) {\r\n\t\t\treturn convert(item.content, encoding);\r\n\t\t}\r\n\r\n\t\tvar data = fs.readFileSync(path);\r\n\r\n\t\tcache[path] = {\r\n\t\t\tmtime: stats.mtime,\r\n\t\t\tcontent: data\r\n\t\t};\r\n\r\n\t\treturn convert(data, encoding);\r\n\t} catch (err) {\r\n\t\tcache[path] = null;\r\n\t\tthrow err;\r\n\t}\r\n\r\n};\r\n\r\nmodule.exports.get = function (path, encoding) {\r\n\tpath = resolve(path);\r\n\tif (cache[path]) {\r\n\t\treturn convert(cache[path].content, encoding);\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nmodule.exports.clear = function () {\r\n\tcache = Object.create(null);\r\n};\r\n","\"use strict\"\n\nconst readCache = require(\"read-cache\")\n\nmodule.exports = filename => readCache(filename, \"utf-8\")\n","\"use strict\"\n\n// builtin tooling\nconst path = require(\"path\")\n\n// placeholder tooling\nlet sugarss\n\nmodule.exports = function processContent(\n result,\n content,\n filename,\n options,\n postcss\n) {\n const { plugins } = options\n const ext = path.extname(filename)\n\n const parserList = []\n\n // SugarSS support:\n if (ext === \".sss\") {\n if (!sugarss) {\n try {\n sugarss = require(\"sugarss\")\n } catch {} // Ignore\n }\n if (sugarss)\n return runPostcss(postcss, content, filename, plugins, [sugarss])\n }\n\n // Syntax support:\n if (result.opts.syntax && result.opts.syntax.parse) {\n parserList.push(result.opts.syntax.parse)\n }\n\n // Parser support:\n if (result.opts.parser) parserList.push(result.opts.parser)\n // Try the default as a last resort:\n parserList.push(null)\n\n return runPostcss(postcss, content, filename, plugins, parserList)\n}\n\nfunction runPostcss(postcss, content, filename, plugins, parsers, index) {\n if (!index) index = 0\n return postcss(plugins)\n .process(content, {\n from: filename,\n parser: parsers[index],\n })\n .catch(err => {\n // If there's an error, try the next parser\n index++\n // If there are no parsers left, throw it\n if (index === parsers.length) throw err\n return runPostcss(postcss, content, filename, plugins, parsers, index)\n })\n}\n","\"use strict\"\n\n// external tooling\nconst valueParser = require(\"postcss-value-parser\")\n\n// extended tooling\nconst { stringify } = valueParser\n\nfunction split(params, start) {\n const list = []\n const last = params.reduce((item, node, index) => {\n if (index < start) return \"\"\n if (node.type === \"div\" && node.value === \",\") {\n list.push(item)\n return \"\"\n }\n return item + stringify(node)\n }, \"\")\n list.push(last)\n return list\n}\n\nmodule.exports = function (result, styles) {\n const statements = []\n let nodes = []\n\n styles.each(node => {\n let stmt\n if (node.type === \"atrule\") {\n if (node.name === \"import\") stmt = parseImport(result, node)\n else if (node.name === \"media\") stmt = parseMedia(result, node)\n else if (node.name === \"charset\") stmt = parseCharset(result, node)\n }\n\n if (stmt) {\n if (nodes.length) {\n statements.push({\n type: \"nodes\",\n nodes,\n media: [],\n })\n nodes = []\n }\n statements.push(stmt)\n } else nodes.push(node)\n })\n\n if (nodes.length) {\n statements.push({\n type: \"nodes\",\n nodes,\n media: [],\n })\n }\n\n return statements\n}\n\nfunction parseMedia(result, atRule) {\n const params = valueParser(atRule.params).nodes\n return {\n type: \"media\",\n node: atRule,\n media: split(params, 0),\n }\n}\n\nfunction parseCharset(result, atRule) {\n if (atRule.prev()) {\n return result.warn(\"@charset must precede all other statements\", {\n node: atRule,\n })\n }\n return {\n type: \"charset\",\n node: atRule,\n media: [],\n }\n}\n\nfunction parseImport(result, atRule) {\n let prev = atRule.prev()\n if (prev) {\n do {\n if (\n prev.type !== \"comment\" &&\n (prev.type !== \"atrule\" ||\n (prev.name !== \"import\" && prev.name !== \"charset\"))\n ) {\n return result.warn(\n \"@import must precede all other statements (besides @charset)\",\n { node: atRule }\n )\n }\n prev = prev.prev()\n } while (prev)\n }\n\n if (atRule.nodes) {\n return result.warn(\n \"It looks like you didn't end your @import statement correctly. \" +\n \"Child nodes are attached to it.\",\n { node: atRule }\n )\n }\n\n const params = valueParser(atRule.params).nodes\n const stmt = {\n type: \"import\",\n node: atRule,\n media: [],\n }\n\n // prettier-ignore\n if (\n !params.length ||\n (\n params[0].type !== \"string\" ||\n !params[0].value\n ) &&\n (\n params[0].type !== \"function\" ||\n params[0].value !== \"url\" ||\n !params[0].nodes.length ||\n !params[0].nodes[0].value\n )\n ) {\n return result.warn(`Unable to find uri in '${ atRule.toString() }'`, {\n node: atRule,\n })\n }\n\n if (params[0].type === \"string\") stmt.uri = params[0].value\n else stmt.uri = params[0].nodes[0].value\n stmt.fullUri = stringify(params[0])\n\n if (params.length > 2) {\n if (params[1].type !== \"space\") {\n return result.warn(\"Invalid import media statement\", { node: atRule })\n }\n stmt.media = split(params, 2)\n }\n\n return stmt\n}\n","\"use strict\"\n// builtin tooling\nconst path = require(\"path\")\n\n// internal tooling\nconst joinMedia = require(\"./lib/join-media\")\nconst resolveId = require(\"./lib/resolve-id\")\nconst loadContent = require(\"./lib/load-content\")\nconst processContent = require(\"./lib/process-content\")\nconst parseStatements = require(\"./lib/parse-statements\")\n\nfunction AtImport(options) {\n options = {\n root: process.cwd(),\n path: [],\n skipDuplicates: true,\n resolve: resolveId,\n load: loadContent,\n plugins: [],\n addModulesDirectories: [],\n ...options,\n }\n\n options.root = path.resolve(options.root)\n\n // convert string to an array of a single element\n if (typeof options.path === \"string\") options.path = [options.path]\n\n if (!Array.isArray(options.path)) options.path = []\n\n options.path = options.path.map(p => path.resolve(options.root, p))\n\n return {\n postcssPlugin: \"postcss-import\",\n Once(styles, { result, atRule, postcss }) {\n const state = {\n importedFiles: {},\n hashFiles: {},\n }\n\n if (styles.source && styles.source.input && styles.source.input.file) {\n state.importedFiles[styles.source.input.file] = {}\n }\n\n if (options.plugins && !Array.isArray(options.plugins)) {\n throw new Error(\"plugins option must be an array\")\n }\n\n return parseStyles(result, styles, options, state, []).then(bundle => {\n applyRaws(bundle)\n applyMedia(bundle)\n applyStyles(bundle, styles)\n })\n\n function applyRaws(bundle) {\n bundle.forEach((stmt, index) => {\n if (index === 0) return\n\n if (stmt.parent) {\n const { before } = stmt.parent.node.raws\n if (stmt.type === \"nodes\") stmt.nodes[0].raws.before = before\n else stmt.node.raws.before = before\n } else if (stmt.type === \"nodes\") {\n stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || \"\\n\"\n }\n })\n }\n\n function applyMedia(bundle) {\n bundle.forEach(stmt => {\n if (!stmt.media.length || stmt.type === \"charset\") return\n if (stmt.type === \"import\") {\n stmt.node.params = `${stmt.fullUri} ${stmt.media.join(\", \")}`\n } else if (stmt.type === \"media\")\n stmt.node.params = stmt.media.join(\", \")\n else {\n const { nodes } = stmt\n const { parent } = nodes[0]\n const mediaNode = atRule({\n name: \"media\",\n params: stmt.media.join(\", \"),\n source: parent.source,\n })\n\n parent.insertBefore(nodes[0], mediaNode)\n\n // remove nodes\n nodes.forEach(node => {\n node.parent = undefined\n })\n\n // better output\n nodes[0].raws.before = nodes[0].raws.before || \"\\n\"\n\n // wrap new rules with media query\n mediaNode.append(nodes)\n\n stmt.type = \"media\"\n stmt.node = mediaNode\n delete stmt.nodes\n }\n })\n }\n\n function applyStyles(bundle, styles) {\n styles.nodes = []\n\n // Strip additional statements.\n bundle.forEach(stmt => {\n if ([\"charset\", \"import\", \"media\"].includes(stmt.type)) {\n stmt.node.parent = undefined\n styles.append(stmt.node)\n } else if (stmt.type === \"nodes\") {\n stmt.nodes.forEach(node => {\n node.parent = undefined\n styles.append(node)\n })\n }\n })\n }\n\n function parseStyles(result, styles, options, state, media) {\n const statements = parseStatements(result, styles)\n\n return Promise.resolve(statements)\n .then(stmts => {\n // process each statement in series\n return stmts.reduce((promise, stmt) => {\n return promise.then(() => {\n stmt.media = joinMedia(media, stmt.media || [])\n\n // skip protocol base uri (protocol://url) or protocol-relative\n if (\n stmt.type !== \"import\" ||\n /^(?:[a-z]+:)?\\/\\//i.test(stmt.uri)\n ) {\n return\n }\n\n if (options.filter && !options.filter(stmt.uri)) {\n // rejected by filter\n return\n }\n\n return resolveImportId(result, stmt, options, state)\n })\n }, Promise.resolve())\n })\n .then(() => {\n let charset\n const imports = []\n const bundle = []\n\n function handleCharset(stmt) {\n if (!charset) charset = stmt\n // charsets aren't case-sensitive, so convert to lower case to compare\n else if (\n stmt.node.params.toLowerCase() !==\n charset.node.params.toLowerCase()\n ) {\n throw new Error(\n `Incompatable @charset statements:\n ${stmt.node.params} specified in ${stmt.node.source.input.file}\n ${charset.node.params} specified in ${charset.node.source.input.file}`\n )\n }\n }\n\n // squash statements and their children\n statements.forEach(stmt => {\n if (stmt.type === \"charset\") handleCharset(stmt)\n else if (stmt.type === \"import\") {\n if (stmt.children) {\n stmt.children.forEach((child, index) => {\n if (child.type === \"import\") imports.push(child)\n else if (child.type === \"charset\") handleCharset(child)\n else bundle.push(child)\n // For better output\n if (index === 0) child.parent = stmt\n })\n } else imports.push(stmt)\n } else if (stmt.type === \"media\" || stmt.type === \"nodes\") {\n bundle.push(stmt)\n }\n })\n\n return charset\n ? [charset, ...imports.concat(bundle)]\n : imports.concat(bundle)\n })\n }\n\n function resolveImportId(result, stmt, options, state) {\n const atRule = stmt.node\n let sourceFile\n if (atRule.source && atRule.source.input && atRule.source.input.file) {\n sourceFile = atRule.source.input.file\n }\n const base = sourceFile\n ? path.dirname(atRule.source.input.file)\n : options.root\n\n return Promise.resolve(options.resolve(stmt.uri, base, options))\n .then(paths => {\n if (!Array.isArray(paths)) paths = [paths]\n // Ensure that each path is absolute:\n return Promise.all(\n paths.map(file => {\n return !path.isAbsolute(file)\n ? resolveId(file, base, options)\n : file\n })\n )\n })\n .then(resolved => {\n // Add dependency messages:\n resolved.forEach(file => {\n result.messages.push({\n type: \"dependency\",\n plugin: \"postcss-import\",\n file,\n parent: sourceFile,\n })\n })\n\n return Promise.all(\n resolved.map(file => {\n return loadImportContent(result, stmt, file, options, state)\n })\n )\n })\n .then(result => {\n // Merge loaded statements\n stmt.children = result.reduce((result, statements) => {\n return statements ? result.concat(statements) : result\n }, [])\n })\n }\n\n function loadImportContent(result, stmt, filename, options, state) {\n const atRule = stmt.node\n const { media } = stmt\n if (options.skipDuplicates) {\n // skip files already imported at the same scope\n if (\n state.importedFiles[filename] &&\n state.importedFiles[filename][media]\n ) {\n return\n }\n\n // save imported files to skip them next time\n if (!state.importedFiles[filename]) state.importedFiles[filename] = {}\n state.importedFiles[filename][media] = true\n }\n\n return Promise.resolve(options.load(filename, options)).then(\n content => {\n if (content.trim() === \"\") {\n result.warn(`${filename} is empty`, { node: atRule })\n return\n }\n\n // skip previous imported files not containing @import rules\n if (state.hashFiles[content] && state.hashFiles[content][media])\n return\n\n return processContent(\n result,\n content,\n filename,\n options,\n postcss\n ).then(importedResult => {\n const styles = importedResult.root\n result.messages = result.messages.concat(importedResult.messages)\n\n if (options.skipDuplicates) {\n const hasImport = styles.some(child => {\n return child.type === \"atrule\" && child.name === \"import\"\n })\n if (!hasImport) {\n // save hash files to skip them next time\n if (!state.hashFiles[content]) state.hashFiles[content] = {}\n state.hashFiles[content][media] = true\n }\n }\n\n // recursion: import @import from imported file\n return parseStyles(result, styles, options, state, media)\n })\n }\n )\n }\n },\n }\n}\n\nAtImport.postcss = true\n\nmodule.exports = AtImport\n"],"names":["joinMedia","resolve","require$$0","resolveId","pify","pifyModule","path","require$$1","require$$2","readCacheModule","loadContent","processContent","parseStatements","require$$3","require$$4","require$$5"],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/astro/vendor/vite/dist/node/chunks/dep-35df7f96.js.map b/packages/astro/vendor/vite/dist/node/chunks/dep-35df7f96.js.map
deleted file mode 100755
index f49f5ff3c8e9..000000000000
--- a/packages/astro/vendor/vite/dist/node/chunks/dep-35df7f96.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dep-35df7f96.js","sources":["../../../../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../../../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js","../../../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js","../../../../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js","../../../../../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js","../../../../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js","../../../../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js","../../../../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/util.js","../../../../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/templates.js","../../../../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js","../../../../../node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js","../../../../../node_modules/.pnpm/debug@4.3.2/node_modules/debug/src/common.js","../../../../../node_modules/.pnpm/debug@4.3.2/node_modules/debug/src/browser.js","../../../../../node_modules/.pnpm/debug@4.3.2/node_modules/debug/src/node.js","../../../../../node_modules/.pnpm/debug@4.3.2/node_modules/debug/src/index.js","../../../src/node/constants.ts","../../../../../node_modules/.pnpm/builtin-modules@3.2.0/node_modules/builtin-modules/index.js","../../../../../node_modules/.pnpm/@ampproject+remapping@1.0.1/node_modules/@ampproject/remapping/dist/remapping.mjs","../../../src/node/utils.ts","../../../src/node/logger.ts","../../../src/node/plugins/reporter.ts","../../../../../node_modules/.pnpm/sourcemap-codec@1.4.8/node_modules/sourcemap-codec/dist/sourcemap-codec.es.js","../../../../../node_modules/.pnpm/magic-string@0.25.7/node_modules/magic-string/dist/magic-string.es.js","../../../../../node_modules/.pnpm/mime@2.5.2/node_modules/mime/Mime.js","../../../../../node_modules/.pnpm/mime@2.5.2/node_modules/mime/types/standard.js","../../../../../node_modules/.pnpm/mime@2.5.2/node_modules/mime/lite.js","../../../src/node/plugins/asset.ts","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/array.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/errno.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/fs.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/path.js","../../../../../node_modules/.pnpm/is-extglob@2.1.1/node_modules/is-extglob/index.js","../../../../../node_modules/.pnpm/is-glob@4.0.1/node_modules/is-glob/index.js","../../../../../node_modules/.pnpm/glob-parent@5.1.2/node_modules/glob-parent/index.js","../../../../../node_modules/.pnpm/braces@3.0.2/node_modules/braces/lib/utils.js","../../../../../node_modules/.pnpm/braces@3.0.2/node_modules/braces/lib/stringify.js","../../../../../node_modules/.pnpm/is-number@7.0.0/node_modules/is-number/index.js","../../../../../node_modules/.pnpm/to-regex-range@5.0.1/node_modules/to-regex-range/index.js","../../../../../node_modules/.pnpm/fill-range@7.0.1/node_modules/fill-range/index.js","../../../../../node_modules/.pnpm/braces@3.0.2/node_modules/braces/lib/compile.js","../../../../../node_modules/.pnpm/braces@3.0.2/node_modules/braces/lib/expand.js","../../../../../node_modules/.pnpm/braces@3.0.2/node_modules/braces/lib/constants.js","../../../../../node_modules/.pnpm/braces@3.0.2/node_modules/braces/lib/parse.js","../../../../../node_modules/.pnpm/braces@3.0.2/node_modules/braces/index.js","../../../../../node_modules/.pnpm/picomatch@2.3.0/node_modules/picomatch/lib/constants.js","../../../../../node_modules/.pnpm/picomatch@2.3.0/node_modules/picomatch/lib/utils.js","../../../../../node_modules/.pnpm/picomatch@2.3.0/node_modules/picomatch/lib/scan.js","../../../../../node_modules/.pnpm/picomatch@2.3.0/node_modules/picomatch/lib/parse.js","../../../../../node_modules/.pnpm/picomatch@2.3.0/node_modules/picomatch/lib/picomatch.js","../../../../../node_modules/.pnpm/picomatch@2.3.0/node_modules/picomatch/index.js","../../../../../node_modules/.pnpm/micromatch@4.0.4/node_modules/micromatch/index.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/pattern.js","../../../../../node_modules/.pnpm/merge2@1.4.1/node_modules/merge2/index.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/stream.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/string.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/utils/index.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/managers/tasks.js","../../../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/async.js","../../../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/providers/sync.js","../../../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/adapters/fs.js","../../../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/settings.js","../../../../../node_modules/.pnpm/@nodelib+fs.stat@2.0.5/node_modules/@nodelib/fs.stat/out/index.js","../../../../../node_modules/.pnpm/queue-microtask@1.2.3/node_modules/queue-microtask/index.js","../../../../../node_modules/.pnpm/run-parallel@1.2.0/node_modules/run-parallel/index.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/constants.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/fs.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/utils/index.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/common.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/async.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/providers/sync.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/adapters/fs.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/settings.js","../../../../../node_modules/.pnpm/@nodelib+fs.scandir@2.1.5/node_modules/@nodelib/fs.scandir/out/index.js","../../../../../node_modules/.pnpm/reusify@1.0.4/node_modules/reusify/reusify.js","../../../../../node_modules/.pnpm/fastq@1.13.0/node_modules/fastq/queue.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/common.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/reader.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/async.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/async.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/stream.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/readers/sync.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/providers/sync.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/settings.js","../../../../../node_modules/.pnpm/@nodelib+fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/index.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/readers/reader.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/readers/stream.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/matchers/matcher.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/matchers/partial.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/filters/deep.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/filters/entry.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/filters/error.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/transformers/entry.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/provider.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/async.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/stream.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/readers/sync.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/providers/sync.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/settings.js","../../../../../node_modules/.pnpm/fast-glob@3.2.7/node_modules/fast-glob/out/index.js","../../../../../node_modules/.pnpm/lilconfig@2.0.3/node_modules/lilconfig/dist/index.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/dist/PlainValue-ec8e588e.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/dist/parse-cst.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/dist/resolveSeq-d03cb037.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/dist/warnings-1000a372.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/dist/Schema-88e323a7.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/dist/Document-9b4560a1.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/dist/index.js","../../../../../node_modules/.pnpm/yaml@1.10.2/node_modules/yaml/index.js","../../../../../node_modules/.pnpm/resolve-from@5.0.0/node_modules/resolve-from/index.js","../../../../../node_modules/.pnpm/import-from@3.0.0/node_modules/import-from/index.js","../../../../../node_modules/.pnpm/import-cwd@3.0.0/node_modules/import-cwd/index.js","../../../../../node_modules/.pnpm/postcss-load-config@3.1.0_ts-node@10.2.1/node_modules/postcss-load-config/src/options.js","../../../../../node_modules/.pnpm/postcss-load-config@3.1.0_ts-node@10.2.1/node_modules/postcss-load-config/src/plugins.js","../../../../../node_modules/.pnpm/postcss-load-config@3.1.0_ts-node@10.2.1/node_modules/postcss-load-config/src/index.js","../../../../../node_modules/.pnpm/@rollup+pluginutils@4.1.1/node_modules/@rollup/pluginutils/dist/es/index.js","../../../src/node/plugins/css.ts","../../../../../node_modules/.pnpm/es-module-lexer@0.9.2/node_modules/es-module-lexer/dist/lexer.js","../../../src/node/importGlob.ts","../../../src/node/plugins/importAnalysisBuild.ts","../../../src/node/plugins/modulePreloadPolyfill.ts","../../../src/node/plugins/html.ts","../../../../../node_modules/.pnpm/tsconfck@1.0.0_typescript@4.4.3/node_modules/tsconfck/dist/index.js","../../../src/node/plugins/esbuild.ts","../../../../../node_modules/.pnpm/okie@1.0.1/node_modules/okie/dist/index.js","../../../src/node/plugins/terser.ts","../../../src/node/plugins/manifest.ts","../../../../../node_modules/.pnpm/@rollup+pluginutils@3.1.0_rollup@2.57.0/node_modules/@rollup/pluginutils/dist/es/index.js","../../../../../node_modules/.pnpm/commondir@1.0.1/node_modules/commondir/index.js","../../../../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/old.js","../../../../../node_modules/.pnpm/fs.realpath@1.0.0/node_modules/fs.realpath/index.js","../../../../../node_modules/.pnpm/concat-map@0.0.1/node_modules/concat-map/index.js","../../../../../node_modules/.pnpm/balanced-match@1.0.2/node_modules/balanced-match/index.js","../../../../../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js","../../../../../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js","../../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js","../../../../../node_modules/.pnpm/path-is-absolute@1.0.1/node_modules/path-is-absolute/index.js","../../../../../node_modules/.pnpm/glob@7.2.0/node_modules/glob/common.js","../../../../../node_modules/.pnpm/glob@7.2.0/node_modules/glob/sync.js","../../../../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js","../../../../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js","../../../../../node_modules/.pnpm/inflight@1.0.6/node_modules/inflight/inflight.js","../../../../../node_modules/.pnpm/glob@7.2.0/node_modules/glob/glob.js","../../../../../node_modules/.pnpm/estree-walker@2.0.2/node_modules/estree-walker/dist/esm/estree-walker.js","../../../../../node_modules/.pnpm/is-reference@1.2.1/node_modules/is-reference/dist/is-reference.es.js","../../../../../node_modules/.pnpm/@rollup+plugin-commonjs@21.0.0_rollup@2.57.0/node_modules/@rollup/plugin-commonjs/dist/index.es.js","../../../../../node_modules/.pnpm/array-union@2.1.0/node_modules/array-union/index.js","../../../../../node_modules/.pnpm/path-type@4.0.0/node_modules/path-type/index.js","../../../../../node_modules/.pnpm/dir-glob@3.0.1/node_modules/dir-glob/index.js","../../../../../node_modules/.pnpm/ignore@5.1.8/node_modules/ignore/index.js","../../../../../node_modules/.pnpm/slash@3.0.0/node_modules/slash/index.js","../../../../../node_modules/.pnpm/globby@11.0.4/node_modules/globby/gitignore.js","../../../../../node_modules/.pnpm/globby@11.0.4/node_modules/globby/stream-utils.js","../../../../../node_modules/.pnpm/globby@11.0.4/node_modules/globby/index.js","../../../../../node_modules/.pnpm/@rollup+plugin-dynamic-import-vars@1.4.0_rollup@2.57.0/node_modules/@rollup/plugin-dynamic-import-vars/dist/index.es.js","../../../src/node/plugins/dataUri.ts","../../../../../node_modules/.pnpm/resolve.exports@1.0.2/node_modules/resolve.exports/dist/index.mjs","../../../src/node/plugins/resolve.ts","../../../src/node/ssr/ssrExternal.ts","../../../src/node/ssr/ssrManifestPlugin.ts","../../../../../node_modules/.pnpm/acorn@8.5.0/node_modules/acorn/dist/acorn.mjs","../../../../../node_modules/.pnpm/acorn@8.5.0/node_modules/acorn/dist/acorn.js","../../../../../node_modules/.pnpm/acorn-private-class-elements@1.0.0_acorn@8.5.0/node_modules/acorn-private-class-elements/index.js","../../../../../node_modules/.pnpm/acorn-class-fields@1.0.0_acorn@8.5.0/node_modules/acorn-class-fields/index.js","../../../../../node_modules/.pnpm/acorn-static-class-features@1.0.0_acorn@8.5.0/node_modules/acorn-static-class-features/index.js","../../../../../node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js","../../../../../node_modules/.pnpm/strip-ansi@6.0.0/node_modules/strip-ansi/index.js","../../../src/node/server/middlewares/error.ts","../../../src/node/server/pluginContainer.ts","../../../src/node/optimizer/scan.ts","../../../src/node/plugins/assetImportMetaUrl.ts","../../../src/node/plugins/loadFallback.ts","../../../src/node/build.ts","../../../../../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js","../../../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/debug.js","../../../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/browser.js","../../../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/node.js","../../../../../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/index.js","../../../../../node_modules/.pnpm/encodeurl@1.0.2/node_modules/encodeurl/index.js","../../../../../node_modules/.pnpm/escape-html@1.0.3/node_modules/escape-html/index.js","../../../../../node_modules/.pnpm/ee-first@1.1.1/node_modules/ee-first/index.js","../../../../../node_modules/.pnpm/on-finished@2.3.0/node_modules/on-finished/index.js","../../../../../node_modules/.pnpm/parseurl@1.3.3/node_modules/parseurl/index.js","../../../../../node_modules/.pnpm/statuses@1.5.0/node_modules/statuses/index.js","../../../../../node_modules/.pnpm/unpipe@1.0.0/node_modules/unpipe/index.js","../../../../../node_modules/.pnpm/finalhandler@1.1.2/node_modules/finalhandler/index.js","../../../../../node_modules/.pnpm/utils-merge@1.0.1/node_modules/utils-merge/index.js","../../../../../node_modules/.pnpm/connect@3.7.0/node_modules/connect/index.js","../../../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../../../node_modules/.pnpm/vary@1.1.2/node_modules/vary/index.js","../../../../../node_modules/.pnpm/cors@2.8.5/node_modules/cors/lib/index.js","../../../../../node_modules/.pnpm/readdirp@3.6.0/node_modules/readdirp/index.js","../../../../../node_modules/.pnpm/normalize-path@3.0.0/node_modules/normalize-path/index.js","../../../../../node_modules/.pnpm/anymatch@3.1.2/node_modules/anymatch/index.js","../../../../../node_modules/.pnpm/binary-extensions@2.2.0/node_modules/binary-extensions/index.js","../../../../../node_modules/.pnpm/is-binary-path@2.1.0/node_modules/is-binary-path/index.js","../../../../../node_modules/.pnpm/chokidar@3.5.2/node_modules/chokidar/lib/constants.js","../../../../../node_modules/.pnpm/chokidar@3.5.2/node_modules/chokidar/lib/nodefs-handler.js","../../../../../node_modules/.pnpm/chokidar@3.5.2/node_modules/chokidar/lib/fsevents-handler.js","../../../../../node_modules/.pnpm/chokidar@3.5.2/node_modules/chokidar/index.js","../../../src/node/server/http.ts","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/constants.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/buffer-util.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/limiter.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/permessage-deflate.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/validation.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/receiver.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/sender.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/event-target.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/extension.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/websocket.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/stream.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/lib/websocket-server.js","../../../../../node_modules/.pnpm/ws@7.5.5/node_modules/ws/index.js","../../../src/node/server/ws.ts","../../../src/node/server/middlewares/base.ts","../../../../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js","../../../../../node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.js","../../../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.3.2/node_modules/http-proxy/lib/http-proxy/common.js","../../../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.3.2/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js","../../../../../node_modules/.pnpm/follow-redirects@1.14.4/node_modules/follow-redirects/debug.js","../../../../../node_modules/.pnpm/follow-redirects@1.14.4/node_modules/follow-redirects/index.js","../../../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.3.2/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js","../../../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.3.2/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js","../../../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.3.2/node_modules/http-proxy/lib/http-proxy/index.js","../../../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.3.2/node_modules/http-proxy/lib/http-proxy.js","../../../../../node_modules/.pnpm/http-proxy@1.18.1_debug@4.3.2/node_modules/http-proxy/index.js","../../../src/node/server/middlewares/proxy.ts","../../../../../node_modules/.pnpm/connect-history-api-fallback@1.6.0/node_modules/connect-history-api-fallback/lib/index.js","../../../src/node/server/middlewares/spaFallback.ts","../../../../../node_modules/.pnpm/etag@1.8.1/node_modules/etag/index.js","../../../src/node/server/send.ts","../../../../../node_modules/.pnpm/safe-buffer@5.1.2/node_modules/safe-buffer/index.js","../../../../../node_modules/.pnpm/convert-source-map@1.8.0/node_modules/convert-source-map/index.js","../../../../../node_modules/.pnpm/periscopic@2.0.3/node_modules/periscopic/dist/periscopic.mjs","../../../src/node/ssr/ssrTransform.ts","../../../src/node/server/sourcemap.ts","../../../../../node_modules/.pnpm/@polka+url@1.0.0-next.20/node_modules/@polka/url/build.mjs","../../../../../node_modules/.pnpm/totalist@1.1.0/node_modules/totalist/sync/index.mjs","../../../../../node_modules/.pnpm/sirv@1.0.17/node_modules/sirv/build.mjs","../../../src/node/server/middlewares/static.ts","../../../src/node/server/transformRequest.ts","../../../src/node/server/middlewares/transform.ts","../../../src/node/server/middlewares/indexHtml.ts","../../../src/node/server/middlewares/time.ts","../../../src/node/server/moduleGraph.ts","../../../src/node/server/hmr.ts","../../../../../node_modules/.pnpm/is-docker@2.2.1/node_modules/is-docker/index.js","../../../../../node_modules/.pnpm/is-wsl@2.2.0/node_modules/is-wsl/index.js","../../../../../node_modules/.pnpm/define-lazy-prop@2.0.0/node_modules/define-lazy-prop/index.js","../../../../../node_modules/.pnpm/open@8.2.1/node_modules/open/index.js","../../../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../../../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../../../../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../../../../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../../../../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../../../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js","../../../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js","../../../../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../../../../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../../../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js","../../../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","../../../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","../../../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","../../../../../node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js","../../../../../node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js","../../../../../node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js","../../../../../node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js","../../../../../node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js","../../../../../node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js","../../../../../node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js","../../../../../node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js","../../../../../node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js","../../../../../node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js","../../../../../node_modules/.pnpm/signal-exit@3.0.4/node_modules/signal-exit/signals.js","../../../../../node_modules/.pnpm/signal-exit@3.0.4/node_modules/signal-exit/index.js","../../../../../node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js","../../../../../node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js","../../../../../node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js","../../../../../node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js","../../../../../node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js","../../../../../node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js","../../../../../node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js","../../../../../node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js","../../../../../node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js","../../../src/node/server/openBrowser.ts","../../../../../node_modules/.pnpm/escape-string-regexp@1.0.5/node_modules/escape-string-regexp/index.js","../../../../../node_modules/.pnpm/color-name@1.1.3/node_modules/color-name/index.js","../../../../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/conversions.js","../../../../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/route.js","../../../../../node_modules/.pnpm/color-convert@1.9.3/node_modules/color-convert/index.js","../../../../../node_modules/.pnpm/ansi-styles@3.2.1/node_modules/ansi-styles/index.js","../../../../../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js","../../../../../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js","../../../../../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/templates.js","../../../../../node_modules/.pnpm/chalk@2.4.2/node_modules/chalk/index.js","../../../../../node_modules/.pnpm/shell-quote@1.7.2/node_modules/shell-quote/index.js","../../../../../node_modules/.pnpm/launch-editor@2.2.1/node_modules/launch-editor/editor-info/osx.js","../../../../../node_modules/.pnpm/launch-editor@2.2.1/node_modules/launch-editor/editor-info/linux.js","../../../../../node_modules/.pnpm/launch-editor@2.2.1/node_modules/launch-editor/editor-info/windows.js","../../../../../node_modules/.pnpm/launch-editor@2.2.1/node_modules/launch-editor/guess.js","../../../../../node_modules/.pnpm/launch-editor@2.2.1/node_modules/launch-editor/get-args.js","../../../../../node_modules/.pnpm/launch-editor@2.2.1/node_modules/launch-editor/index.js","../../../../../node_modules/.pnpm/launch-editor-middleware@2.2.1/node_modules/launch-editor-middleware/index.js","../../../src/node/optimizer/esbuildDepPlugin.ts","../../../src/node/optimizer/index.ts","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/util.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/array-set.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/binary-search.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-node.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.js","../../../src/node/ssr/ssrStacktrace.ts","../../../src/node/ssr/ssrModuleLoader.ts","../../../src/node/optimizer/registerMissing.ts","../../../src/node/server/searchRoot.ts","../../../src/node/server/index.ts","../../../../../node_modules/.pnpm/@rollup+plugin-alias@3.1.5_rollup@2.57.0/node_modules/@rollup/plugin-alias/dist/index.es.js","../../../src/node/plugins/json.ts","../../../src/node/plugins/importAnalysis.ts","../../../src/node/plugins/clientInjections.ts","../../../src/node/plugins/wasm.ts","../../../src/node/plugins/worker.ts","../../../src/node/plugins/preAlias.ts","../../../src/node/plugins/define.ts","../../../src/node/plugins/index.ts","../../../../../node_modules/.pnpm/dotenv@10.0.0/node_modules/dotenv/lib/main.js","../../../../../node_modules/.pnpm/dotenv-expand@5.1.0/node_modules/dotenv-expand/lib/main.js","../../../src/node/config.ts","../../../../../node_modules/.pnpm/negotiator@0.6.2/node_modules/negotiator/lib/charset.js","../../../../../node_modules/.pnpm/negotiator@0.6.2/node_modules/negotiator/lib/encoding.js","../../../../../node_modules/.pnpm/negotiator@0.6.2/node_modules/negotiator/lib/language.js","../../../../../node_modules/.pnpm/negotiator@0.6.2/node_modules/negotiator/lib/mediaType.js","../../../../../node_modules/.pnpm/negotiator@0.6.2/node_modules/negotiator/index.js","../../../../../node_modules/.pnpm/mime-db@1.49.0/node_modules/mime-db/index.js","../../../../../node_modules/.pnpm/mime-types@2.1.32/node_modules/mime-types/index.js","../../../../../node_modules/.pnpm/accepts@1.3.7/node_modules/accepts/index.js","../../../../../node_modules/.pnpm/bytes@3.0.0/node_modules/bytes/index.js","../../../../../node_modules/.pnpm/mime-db@1.50.0/node_modules/mime-db/index.js","../../../../../node_modules/.pnpm/compressible@2.0.18/node_modules/compressible/index.js","../../../../../node_modules/.pnpm/on-headers@1.0.2/node_modules/on-headers/index.js","../../../../../node_modules/.pnpm/compression@1.7.4/node_modules/compression/index.js","../../../src/node/preview.ts"],"sourcesContent":["'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","import path from 'path'\n\nexport const DEFAULT_MAIN_FIELDS = [\n 'module',\n 'jsnext:main', // moment still uses this...\n 'jsnext'\n]\n\nexport const DEFAULT_EXTENSIONS = [\n '.mjs',\n '.js',\n '.ts',\n '.jsx',\n '.tsx',\n '.json'\n]\n\nexport const JS_TYPES_RE = /\\.(?:j|t)sx?$|\\.mjs$/\n\nexport const OPTIMIZABLE_ENTRY_RE = /\\.(?:m?js|ts)$/\n\nexport const SPECIAL_QUERY_RE = /[\\?&](?:worker|sharedworker|raw|url)\\b/\n\n/**\n * Prefix for resolved fs paths, since windows paths may not be valid as URLs.\n */\nexport const FS_PREFIX = `/@fs/`\n\n/**\n * Prefix for resolved Ids that are not valid browser import specifiers\n */\nexport const VALID_ID_PREFIX = `/@id/`\n\n/**\n * Some Rollup plugins use ids that starts with the null byte \\0 to avoid\n * collisions, but it is not permitted in import URLs so we have to replace\n * them.\n */\nexport const NULL_BYTE_PLACEHOLDER = `__x00__`\n\nexport const CLIENT_PUBLIC_PATH = `/@vite/client`\nexport const ENV_PUBLIC_PATH = `/@vite/env`\n// eslint-disable-next-line node/no-missing-require\nexport const CLIENT_ENTRY = require.resolve('vite/dist/client/client.mjs')\n// eslint-disable-next-line node/no-missing-require\nexport const ENV_ENTRY = require.resolve('vite/dist/client/env.mjs')\nexport const CLIENT_DIR = path.dirname(CLIENT_ENTRY)\n\n// ** READ THIS ** before editing `KNOWN_ASSET_TYPES`.\n// If you add an asset to `KNOWN_ASSET_TYPES`, make sure to also add it\n// to the TypeScript declaration file `packages/vite/client.d.ts`.\nexport const KNOWN_ASSET_TYPES = [\n // images\n 'png',\n 'jpe?g',\n 'gif',\n 'svg',\n 'ico',\n 'webp',\n 'avif',\n\n // media\n 'mp4',\n 'webm',\n 'ogg',\n 'mp3',\n 'wav',\n 'flac',\n 'aac',\n\n // fonts\n 'woff2?',\n 'eot',\n 'ttf',\n 'otf',\n\n // other\n 'wasm',\n 'webmanifest',\n 'pdf'\n]\n\nexport const DEFAULT_ASSETS_RE = new RegExp(\n `\\\\.(` + KNOWN_ASSET_TYPES.join('|') + `)(\\\\?.*)?$`\n)\n\nexport const DEP_VERSION_RE = /[\\?&](v=[\\w\\.-]+)\\b/\n","'use strict';\nconst {builtinModules} = require('module');\n\nconst ignoreList = [\n\t'sys'\n];\n\n// eslint-disable-next-line node/no-deprecated-api\nmodule.exports = (builtinModules || Object.keys(process.binding('natives')))\n\t.filter(x => !/^_|^(internal|v8|node-inspect)\\/|\\//.test(x) && !ignoreList.includes(x))\n\t.sort();\n","var charToInteger = {};\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nfor (var i = 0; i < chars.length; i++) {\n charToInteger[chars.charCodeAt(i)] = i;\n}\nfunction decode(mappings) {\n var decoded = [];\n var line = [];\n var segment = [\n 0,\n 0,\n 0,\n 0,\n 0,\n ];\n var j = 0;\n for (var i = 0, shift = 0, value = 0; i < mappings.length; i++) {\n var c = mappings.charCodeAt(i);\n if (c === 44) { // \",\"\n segmentify(line, segment, j);\n j = 0;\n }\n else if (c === 59) { // \";\"\n segmentify(line, segment, j);\n j = 0;\n decoded.push(line);\n line = [];\n segment[0] = 0;\n }\n else {\n var integer = charToInteger[c];\n if (integer === undefined) {\n throw new Error('Invalid character (' + String.fromCharCode(c) + ')');\n }\n var hasContinuationBit = integer & 32;\n integer &= 31;\n value += integer << shift;\n if (hasContinuationBit) {\n shift += 5;\n }\n else {\n var shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = value === 0 ? -0x80000000 : -value;\n }\n segment[j] += value;\n j++;\n value = shift = 0; // reset\n }\n }\n }\n segmentify(line, segment, j);\n decoded.push(line);\n return decoded;\n}\nfunction segmentify(line, segment, j) {\n // This looks ugly, but we're creating specialized arrays with a specific\n // length. This is much faster than creating a new array (which v8 expands to\n // a capacity of 17 after pushing the first item), or slicing out a subarray\n // (which is slow). Length 4 is assumed to be the most frequent, followed by\n // length 5 (since not everything will have an associated name), followed by\n // length 1 (it's probably rare for a source substring to not have an\n // associated segment data).\n if (j === 4)\n line.push([segment[0], segment[1], segment[2], segment[3]]);\n else if (j === 5)\n line.push([segment[0], segment[1], segment[2], segment[3], segment[4]]);\n else if (j === 1)\n line.push([segment[0]]);\n}\nfunction encode(decoded) {\n var sourceFileIndex = 0; // second field\n var sourceCodeLine = 0; // third field\n var sourceCodeColumn = 0; // fourth field\n var nameIndex = 0; // fifth field\n var mappings = '';\n for (var i = 0; i < decoded.length; i++) {\n var line = decoded[i];\n if (i > 0)\n mappings += ';';\n if (line.length === 0)\n continue;\n var generatedCodeColumn = 0; // first field\n var lineMappings = [];\n for (var _i = 0, line_1 = line; _i < line_1.length; _i++) {\n var segment = line_1[_i];\n var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);\n generatedCodeColumn = segment[0];\n if (segment.length > 1) {\n segmentMappings +=\n encodeInteger(segment[1] - sourceFileIndex) +\n encodeInteger(segment[2] - sourceCodeLine) +\n encodeInteger(segment[3] - sourceCodeColumn);\n sourceFileIndex = segment[1];\n sourceCodeLine = segment[2];\n sourceCodeColumn = segment[3];\n }\n if (segment.length === 5) {\n segmentMappings += encodeInteger(segment[4] - nameIndex);\n nameIndex = segment[4];\n }\n lineMappings.push(segmentMappings);\n }\n mappings += lineMappings.join(',');\n }\n return mappings;\n}\nfunction encodeInteger(num) {\n var result = '';\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n var clamped = num & 31;\n num >>>= 5;\n if (num > 0) {\n clamped |= 32;\n }\n result += chars[clamped];\n } while (num > 0);\n return result;\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Creates a brand new (prototype-less) object with the enumerable-own\n * properties of `target`. Any enumerable-own properties from `source` which\n * are not present on `target` will be copied as well.\n */\nfunction defaults(target, source) {\n return Object.assign(Object.create(null), source, target);\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Decodes an input sourcemap into a `DecodedSourceMap` sourcemap object.\n *\n * Valid input maps include a `DecodedSourceMap`, a `RawSourceMap`, or JSON\n * representations of either type.\n */\nfunction decodeSourceMap(map) {\n if (typeof map === 'string') {\n map = JSON.parse(map);\n }\n let { mappings } = map;\n if (typeof mappings === 'string') {\n mappings = sortMappings(decode(mappings), true);\n }\n else {\n // Clone the Line so that we can sort it. We don't want to mutate an array\n // that we don't own directly.\n mappings = sortMappings(mappings, false);\n }\n return defaults({ mappings }, map);\n}\nfunction firstUnsortedSegmentLine(mappings) {\n for (let i = 0; i < mappings.length; i++) {\n const segments = mappings[i];\n for (let j = 1; j < segments.length; j++) {\n if (segments[j][0] < segments[j - 1][0]) {\n return i;\n }\n }\n }\n return mappings.length;\n}\nfunction sortMappings(mappings, owned) {\n const unosrtedIndex = firstUnsortedSegmentLine(mappings);\n if (unosrtedIndex === mappings.length)\n return mappings;\n if (!owned)\n mappings = mappings.slice();\n for (let i = unosrtedIndex; i < mappings.length; i++) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\nfunction sortSegments(segments, owned) {\n if (!owned)\n segments = segments.slice();\n return segments.sort(segmentComparator);\n}\nfunction segmentComparator(a, b) {\n return a[0] - b[0];\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A \"leaf\" node in the sourcemap tree, representing an original, unmodified\n * source file. Recursive segment tracing ends at the `OriginalSource`.\n */\nclass OriginalSource {\n constructor(filename, content) {\n this.filename = filename;\n this.content = content;\n }\n /**\n * Tracing a `SourceMapSegment` ends when we get to an `OriginalSource`,\n * meaning this line/column location originated from this source file.\n */\n traceSegment(line, column, name) {\n return { column, line, name, source: this };\n }\n}\n\n/* istanbul ignore next */\nconst Url = (typeof URL !== 'undefined' ? URL : require('url').URL);\n// Matches \"..\", which must be preceeded by \"/\" or the start of the string, and\n// must be followed by a \"/\". We do not eat the following \"/\", so that the next\n// iteration can match on it.\nconst parentRegex = /(^|\\/)\\.\\.(?=\\/|$)/g;\nfunction isAbsoluteUrl(url) {\n try {\n return !!new Url(url);\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Creates a directory name that is guaranteed to not be in `str`.\n */\nfunction uniqInStr(str) {\n let uniq = String(Math.random()).slice(2);\n while (str.indexOf(uniq) > -1) {\n /* istanbul ignore next */\n uniq += uniq;\n }\n return uniq;\n}\n/**\n * Removes the filename from the path (everything trailing the last \"/\"). This\n * is only safe to call on a path, never call with an absolute or protocol\n * relative URL.\n */\nfunction stripPathFilename(path) {\n path = normalizePath(path);\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n/**\n * Normalizes a protocol-relative URL, but keeps it protocol relative by\n * stripping out the protocl before returning it.\n */\nfunction normalizeProtocolRelative(input, absoluteBase) {\n const { href, protocol } = new Url(input, absoluteBase);\n return href.slice(protocol.length);\n}\n/**\n * Normalizes a simple path (one that has no \"..\"s, or is absolute so \"..\"s can\n * be normalized absolutely).\n */\nfunction normalizeSimplePath(input) {\n const { href } = new Url(input, 'https://foo.com/');\n return href.slice('https://foo.com/'.length);\n}\n/**\n * Normalizes a path, ensuring that excess \"..\"s are preserved for relative\n * paths in the output.\n *\n * If the input is absolute, this will return an absolutey normalized path, but\n * it will not have a leading \"/\".\n *\n * If the input has a leading \"..\", the output will have a leading \"..\".\n *\n * If the input has a leading \".\", the output will not have a leading \".\"\n * unless there are too many \"..\"s, in which case there will be a leading \"..\".\n */\nfunction normalizePath(input) {\n // If there are no \"..\"s, we can treat this as if it were an absolute path.\n // The return won't be an absolute path, so it's easy.\n if (!parentRegex.test(input))\n return normalizeSimplePath(input);\n // We already found one \"..\". Let's see how many there are.\n let total = 1;\n while (parentRegex.test(input))\n total++;\n // If there are \"..\"s, we need to prefix the the path with the same number of\n // unique directories. This is to ensure that we \"remember\" how many parent\n // directories we are accessing. Eg, \"../../..\" must keep 3, and \"foo/../..\"\n // must keep 1.\n const uniqDirectory = `z${uniqInStr(input)}/`;\n // uniqDirectory is just a \"z\", followed by numbers, followed by a \"/\". So\n // generating a runtime regex from it is safe. We'll use this search regex to\n // strip out our uniq directory names and insert any needed \"..\"s.\n const search = new RegExp(`^(?:${uniqDirectory})*`);\n // Now we can resolve the total path. If there are excess \"..\"s, they will\n // eliminate one or more of the unique directories we prefix with.\n const relative = normalizeSimplePath(uniqDirectory.repeat(total) + input);\n // We can now count the number of unique directories that were eliminated. If\n // there were 3, and 1 was eliminated, we know we only need to add 1 \"..\". If\n // 2 were eliminated, we need to insert 2 \"..\"s. If all 3 were eliminated,\n // then we need 3, etc. This replace is guranteed to match (it may match 0 or\n // more times), and we can count the total match to see how many were eliminated.\n return relative.replace(search, (all) => {\n const leftover = all.length / uniqDirectory.length;\n return '../'.repeat(total - leftover);\n });\n}\n/**\n * Attempts to resolve `input` URL relative to `base`.\n */\nfunction resolve(input, base) {\n if (!base)\n base = '';\n // Absolute URLs are very easy to resolve right.\n if (isAbsoluteUrl(input))\n return new Url(input).href;\n if (base) {\n // Absolute URLs are easy...\n if (isAbsoluteUrl(base))\n return new Url(input, base).href;\n // If base is protocol relative, we'll resolve with it but keep the result\n // protocol relative.\n if (base.startsWith('//'))\n return normalizeProtocolRelative(input, `https:${base}`);\n }\n // Normalize input, but keep it protocol relative. We know base doesn't supply\n // a protocol, because that would have been handled above.\n if (input.startsWith('//'))\n return normalizeProtocolRelative(input, 'https://foo.com/');\n // We now know that base (if there is one) and input are paths. We've handled\n // both absolute and protocol-relative variations above.\n // Absolute paths don't need any special handling, because they cannot have\n // extra \".\" or \"..\"s. That'll all be stripped away. Input takes priority here,\n // because if input is an absolute path, base path won't affect it in any way.\n if (input.startsWith('/'))\n return '/' + normalizeSimplePath(input);\n // Since input and base are paths, we need to join them to do any further\n // processing. Paths are joined at the directory level, so we need to remove\n // the base's filename before joining. We also know that input does not have a\n // leading slash, and that the stripped base will have a trailing slash if\n // there are any directories (or it'll be empty).\n const joined = stripPathFilename(base) + input;\n // If base is an absolute path, then input will be relative to it.\n if (base.startsWith('/'))\n return '/' + normalizeSimplePath(joined);\n // We now know both base (if there is one) and input are relative paths.\n const relative = normalizePath(joined);\n // If base started with a leading \".\", or there is no base and input started\n // with a \".\", then we need to ensure that the relative path starts with a\n // \".\". We don't know if relative starts with a \"..\", though, so check before\n // prepending.\n if ((base || input).startsWith('.') && !relative.startsWith('.')) {\n return './' + relative;\n }\n return relative;\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction resolve$1(input, base) {\n // The base is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n if (base && !base.endsWith('/'))\n base += '/';\n return resolve(input, base);\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A binary search implementation that returns the index if a match is found,\n * or the negated index of where the `needle` should be inserted.\n *\n * The `comparator` callback receives both the `item` under comparison and the\n * needle we are searching for. It must return `0` if the `item` is a match,\n * any negative number if `item` is too small (and we must search after it), or\n * any positive number if the `item` is too large (and we must search before\n * it).\n *\n * If no match is found, a negated index of where to insert the `needle` is\n * returned. This negated index is guaranteed to be less than 0. To insert an\n * item, negate it (again) and splice:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, -2);\n * assert.equal(~index, 1);\n * array.splice(~index, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nfunction binarySearch(haystack, needle, comparator, low, high) {\n low = Math.max(low, 0);\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = comparator(haystack[mid], needle);\n if (cmp === 0) {\n return mid;\n }\n if (cmp < 0) {\n low = mid + 1;\n }\n else {\n high = mid - 1;\n }\n }\n return ~low;\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * FastStringArray acts like a `Set` (allowing only one occurrence of a string\n * `key`), but provides the index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of\n * the backing array, like how `sourcesContent[i]` is the source content\n * associated with `source[i]`, and there are never duplicates.\n */\nclass FastStringArray {\n constructor() {\n this.indexes = Object.create(null);\n this.array = [];\n }\n /**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\n put(key) {\n const { array, indexes } = this;\n // The key may or may not be present. If it is present, it's a number.\n let index = indexes[key];\n // If it's not yet present, we need to insert it and track the index in the\n // indexes.\n if (index === undefined) {\n index = indexes[key] = array.length;\n array.push(key);\n }\n return index;\n }\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * SourceMapTree represents a single sourcemap, with the ability to trace\n * mappings into its child nodes (which may themselves be SourceMapTrees).\n */\nclass SourceMapTree {\n constructor(map, sources) {\n this.map = map;\n this.sources = sources;\n this.lastLine = 0;\n this.lastColumn = 0;\n this.lastIndex = 0;\n }\n /**\n * traceMappings is only called on the root level SourceMapTree, and begins\n * the process of resolving each mapping in terms of the original source\n * files.\n */\n traceMappings() {\n const mappings = [];\n const names = new FastStringArray();\n const sources = new FastStringArray();\n const sourcesContent = [];\n const { mappings: rootMappings, names: rootNames } = this.map;\n for (let i = 0; i < rootMappings.length; i++) {\n const segments = rootMappings[i];\n const tracedSegments = [];\n let lastTraced = undefined;\n for (let j = 0; j < segments.length; j++) {\n const segment = segments[j];\n // 1-length segments only move the current generated column, there's no\n // source information to gather from it.\n if (segment.length === 1)\n continue;\n const source = this.sources[segment[1]];\n const traced = source.traceSegment(segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');\n if (!traced)\n continue;\n // So we traced a segment down into its original source file. Now push a\n // new segment pointing to this location.\n const { column, line, name } = traced;\n const { content, filename } = traced.source;\n // Store the source location, and ensure we keep sourcesContent up to\n // date with the sources array.\n const sourceIndex = sources.put(filename);\n sourcesContent[sourceIndex] = content;\n if (lastTraced &&\n lastTraced[1] === sourceIndex &&\n lastTraced[2] === line &&\n lastTraced[3] === column) {\n // This is a duplicate mapping pointing at the exact same starting point in the source file.\n // It doesn't provide any new information, and only bloats the sourcemap.\n continue;\n }\n // This looks like unnecessary duplication, but it noticeably increases\n // performance. If we were to push the nameIndex onto length-4 array, v8\n // would internally allocate 22 slots! That's 68 wasted bytes! Array\n // literals have the same capacity as their length, saving memory.\n if (name) {\n lastTraced = [segment[0], sourceIndex, line, column, names.put(name)];\n }\n else {\n lastTraced = [segment[0], sourceIndex, line, column];\n }\n tracedSegments.push(lastTraced);\n }\n mappings.push(tracedSegments);\n }\n // TODO: Make all sources relative to the sourceRoot.\n return defaults({\n mappings,\n names: names.array,\n sources: sources.array,\n sourcesContent,\n }, this.map);\n }\n /**\n * traceSegment is only called on children SourceMapTrees. It recurses down\n * into its own child SourceMapTrees, until we find the original source map.\n */\n traceSegment(line, column, name) {\n const { mappings, names } = this.map;\n // It's common for parent sourcemaps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= mappings.length)\n return null;\n const segments = mappings[line];\n if (segments.length === 0)\n return null;\n let low = 0;\n let high = segments.length - 1;\n if (line === this.lastLine) {\n if (column >= this.lastColumn) {\n low = this.lastIndex;\n }\n else {\n high = this.lastIndex;\n }\n }\n let index = binarySearch(segments, column, segmentComparator$1, low, high);\n this.lastLine = line;\n this.lastColumn = column;\n if (index === -1) {\n this.lastIndex = index;\n return null; // we come before any mapped segment\n }\n // If we can't find a segment that lines up to this column, we use the\n // segment before.\n if (index < 0) {\n index = ~index - 1;\n }\n this.lastIndex = index;\n const segment = segments[index];\n // 1-length segments only move the current generated column, there's no\n // source information to gather from it.\n if (segment.length === 1)\n return null;\n const source = this.sources[segment[1]];\n // So now we can recurse down, until we hit the original source file.\n return source.traceSegment(segment[2], segment[3], \n // A child map's recorded name for this segment takes precedence over the\n // parent's mapped name. Imagine a mangler changing the name over, etc.\n segment.length === 5 ? names[segment[4]] : name);\n }\n}\nfunction segmentComparator$1(segment, column) {\n return segment[0] - column;\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Removes the filename from a path.\n */\nfunction stripFilename(path) {\n if (!path)\n return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction asArray(value) {\n if (Array.isArray(value))\n return value;\n return [value];\n}\n/**\n * Recursively builds a tree structure out of sourcemap files, with each node\n * being either an `OriginalSource` \"leaf\" or a `SourceMapTree` composed of\n * `OriginalSource`s and `SourceMapTree`s.\n *\n * Every sourcemap is composed of a collection of source files and mappings\n * into locations of those source files. When we generate a `SourceMapTree` for\n * the sourcemap, we attempt to load each source file's own sourcemap. If it\n * does not have an associated sourcemap, it is considered an original,\n * unmodified source file.\n */\nfunction buildSourceMapTree(input, loader, relativeRoot) {\n const maps = asArray(input).map(decodeSourceMap);\n const map = maps.pop();\n for (let i = 0; i < maps.length; i++) {\n if (maps[i].sources.length !== 1) {\n throw new Error(`Transformation map ${i} must have exactly one source file.\\n` +\n 'Did you specify these with the most recent transformation maps first?');\n }\n }\n const { sourceRoot, sources, sourcesContent } = map;\n const children = sources.map((sourceFile, i) => {\n // Each source file is loaded relative to the sourcemap's own sourceRoot,\n // which is itself relative to the sourcemap's parent.\n const uri = resolve$1(sourceFile || '', resolve$1(sourceRoot || '', stripFilename(relativeRoot)));\n // Use the provided loader callback to retrieve the file's sourcemap.\n // TODO: We should eventually support async loading of sourcemap files.\n const sourceMap = loader(uri);\n // If there is no sourcemap, then it is an unmodified source file.\n if (!sourceMap) {\n // The source file's actual contents must be included in the sourcemap\n // (done when generating the sourcemap) for it to be included as a\n // sourceContent in the output sourcemap.\n const sourceContent = sourcesContent ? sourcesContent[i] : null;\n return new OriginalSource(uri, sourceContent);\n }\n // Else, it's a real sourcemap, and we need to recurse into it to load its\n // source files.\n return buildSourceMapTree(decodeSourceMap(sourceMap), loader, uri);\n });\n let tree = new SourceMapTree(map, children);\n for (let i = maps.length - 1; i >= 0; i--) {\n tree = new SourceMapTree(maps[i], [tree]);\n }\n return tree;\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A SourceMap v3 compatible sourcemap, which only includes fields that were\n * provided to it.\n */\nclass SourceMap {\n constructor(map, options) {\n this.version = 3; // SourceMap spec says this should be first.\n if ('file' in map)\n this.file = map.file;\n this.mappings = options.decodedMappings ? map.mappings : encode(map.mappings);\n this.names = map.names;\n // TODO: We first need to make all source URIs relative to the sourceRoot\n // before we can support a sourceRoot.\n // if ('sourceRoot' in map) this.sourceRoot = map.sourceRoot;\n this.sources = map.sources;\n if (!options.excludeContent && 'sourcesContent' in map) {\n this.sourcesContent = map.sourcesContent;\n }\n }\n toString() {\n return JSON.stringify(this);\n }\n}\n\n/**\n * Copyright 2019 The AMP HTML Authors. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Traces through all the mappings in the root sourcemap, through the sources\n * (and their sourcemaps), all the way back to the original source location.\n *\n * `loader` will be called every time we encounter a source file. If it returns\n * a sourcemap, we will recurse into that sourcemap to continue the trace. If\n * it returns a falsey value, that source file is treated as an original,\n * unmodified source file.\n *\n * Pass `excludeContent` to exclude any self-containing source file content\n * from the output sourcemap.\n *\n * Pass `decodedMappings` to receive a SourceMap with decoded (instead of\n * VLQ encoded) mappings.\n */\nfunction remapping(input, loader, options) {\n const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };\n const graph = buildSourceMapTree(input, loader);\n return new SourceMap(graph.traceMappings(), opts);\n}\n\nexport default remapping;\n//# sourceMappingURL=remapping.mjs.map\n","import debug from 'debug'\nimport chalk from 'chalk'\nimport fs from 'fs'\nimport os from 'os'\nimport path from 'path'\nimport { pathToFileURL, URL } from 'url'\nimport {\n FS_PREFIX,\n DEFAULT_EXTENSIONS,\n VALID_ID_PREFIX,\n CLIENT_PUBLIC_PATH,\n ENV_PUBLIC_PATH\n} from './constants'\nimport resolve from 'resolve'\nimport builtins from 'builtin-modules'\nimport { FSWatcher } from 'chokidar'\nimport remapping from '@ampproject/remapping'\nimport {\n DecodedSourceMap,\n RawSourceMap\n} from '@ampproject/remapping/dist/types/types'\nimport { performance } from 'perf_hooks'\n\nexport function slash(p: string): string {\n return p.replace(/\\\\/g, '/')\n}\n\n// Strip valid id prefix. This is prepended to resolved Ids that are\n// not valid browser import specifiers by the importAnalysis plugin.\nexport function unwrapId(id: string): string {\n return id.startsWith(VALID_ID_PREFIX) ? id.slice(VALID_ID_PREFIX.length) : id\n}\n\nexport const flattenId = (id: string): string =>\n id.replace(/(\\s*>\\s*)/g, '__').replace(/[\\/\\.]/g, '_')\n\nexport const normalizeId = (id: string): string =>\n id.replace(/(\\s*>\\s*)/g, ' > ')\n\nexport function isBuiltin(id: string): boolean {\n return builtins.includes(id)\n}\n\nexport const bareImportRE = /^[\\w@](?!.*:\\/\\/)/\nexport const deepImportRE = /^([^@][^/]*)\\/|^(@[^/]+\\/[^/]+)\\//\n\nexport let isRunningWithYarnPnp: boolean\ntry {\n isRunningWithYarnPnp = Boolean(require('pnpapi'))\n} catch {}\n\nconst ssrExtensions = ['.js', '.cjs', '.json', '.node']\n\nexport function resolveFrom(\n id: string,\n basedir: string,\n preserveSymlinks = false,\n ssr = false\n): string {\n return resolve.sync(id, {\n basedir,\n extensions: ssr ? ssrExtensions : DEFAULT_EXTENSIONS,\n // necessary to work with pnpm\n preserveSymlinks: preserveSymlinks || isRunningWithYarnPnp || false\n })\n}\n\n/**\n * like `resolveFrom` but supports resolving `>` path in `id`,\n * for example: `foo > bar > baz`\n */\nexport function nestedResolveFrom(\n id: string,\n basedir: string,\n preserveSymlinks = false\n): string {\n const pkgs = id.split('>').map((pkg) => pkg.trim())\n try {\n for (const pkg of pkgs) {\n basedir = resolveFrom(pkg, basedir, preserveSymlinks)\n }\n } catch {}\n return basedir\n}\n\n// set in bin/vite.js\nconst filter = process.env.VITE_DEBUG_FILTER\n\nconst DEBUG = process.env.DEBUG\n\ninterface DebuggerOptions {\n onlyWhenFocused?: boolean | string\n}\n\nexport type ViteDebugScope = `vite:${string}`\n\nexport function createDebugger(\n namespace: ViteDebugScope,\n options: DebuggerOptions = {}\n): debug.Debugger['log'] {\n const log = debug(namespace)\n const { onlyWhenFocused } = options\n const focus =\n typeof onlyWhenFocused === 'string' ? onlyWhenFocused : namespace\n return (msg: string, ...args: any[]) => {\n if (filter && !msg.includes(filter)) {\n return\n }\n if (onlyWhenFocused && !DEBUG?.includes(focus)) {\n return\n }\n log(msg, ...args)\n }\n}\n\nexport const isWindows = os.platform() === 'win32'\nconst VOLUME_RE = /^[A-Z]:/i\n\nexport function normalizePath(id: string): string {\n return path.posix.normalize(isWindows ? slash(id) : id)\n}\n\nexport function fsPathFromId(id: string): string {\n const fsPath = normalizePath(id.slice(FS_PREFIX.length))\n return fsPath.startsWith('/') || fsPath.match(VOLUME_RE)\n ? fsPath\n : `/${fsPath}`\n}\n\nexport function ensureVolumeInPath(file: string): string {\n return isWindows ? path.resolve(file) : file\n}\n\nexport const queryRE = /\\?.*$/s\nexport const hashRE = /#.*$/s\n\nexport const cleanUrl = (url: string): string =>\n url.replace(hashRE, '').replace(queryRE, '')\n\nexport const externalRE = /^(https?:)?\\/\\//\nexport const isExternalUrl = (url: string): boolean => externalRE.test(url)\n\nexport const dataUrlRE = /^\\s*data:/i\nexport const isDataUrl = (url: string): boolean => dataUrlRE.test(url)\n\nconst knownJsSrcRE = /\\.((j|t)sx?|mjs|vue|marko|svelte|astro)($|\\?)/\nexport const isJSRequest = (url: string): boolean => {\n url = cleanUrl(url)\n if (knownJsSrcRE.test(url)) {\n return true\n }\n if (!path.extname(url) && !url.endsWith('/')) {\n return true\n }\n return false\n}\n\nconst importQueryRE = /(\\?|&)import=?(?:&|$)/\nconst internalPrefixes = [\n FS_PREFIX,\n VALID_ID_PREFIX,\n CLIENT_PUBLIC_PATH,\n ENV_PUBLIC_PATH\n]\nconst InternalPrefixRE = new RegExp(`^(?:${internalPrefixes.join('|')})`)\nconst trailingSeparatorRE = /[\\?&]$/\nexport const isImportRequest = (url: string): boolean => importQueryRE.test(url)\nexport const isInternalRequest = (url: string): boolean =>\n InternalPrefixRE.test(url)\n\nexport function removeImportQuery(url: string): string {\n return url.replace(importQueryRE, '$1').replace(trailingSeparatorRE, '')\n}\n\nexport function injectQuery(url: string, queryToInject: string): string {\n // encode percents for consistent behavior with pathToFileURL\n // see #2614 for details\n let resolvedUrl = new URL(url.replace(/%/g, '%25'), 'relative:///')\n if (resolvedUrl.protocol !== 'relative:') {\n resolvedUrl = pathToFileURL(url)\n }\n let { protocol, pathname, search, hash } = resolvedUrl\n if (protocol === 'file:') {\n pathname = pathname.slice(1)\n }\n pathname = decodeURIComponent(pathname)\n return `${pathname}?${queryToInject}${search ? `&` + search.slice(1) : ''}${\n hash || ''\n }`\n}\n\nconst timestampRE = /\\bt=\\d{13}&?\\b/\nexport function removeTimestampQuery(url: string): string {\n return url.replace(timestampRE, '').replace(trailingSeparatorRE, '')\n}\n\nexport async function asyncReplace(\n input: string,\n re: RegExp,\n replacer: (match: RegExpExecArray) => string | Promise\n): Promise {\n let match: RegExpExecArray | null\n let remaining = input\n let rewritten = ''\n while ((match = re.exec(remaining))) {\n rewritten += remaining.slice(0, match.index)\n rewritten += await replacer(match)\n remaining = remaining.slice(match.index + match[0].length)\n }\n rewritten += remaining\n return rewritten\n}\n\nexport function timeFrom(start: number, subtract = 0): string {\n const time: number | string = performance.now() - start - subtract\n const timeString = (time.toFixed(2) + `ms`).padEnd(5, ' ')\n if (time < 10) {\n return chalk.green(timeString)\n } else if (time < 50) {\n return chalk.yellow(timeString)\n } else {\n return chalk.red(timeString)\n }\n}\n\n/**\n * pretty url for logging.\n */\nexport function prettifyUrl(url: string, root: string): string {\n url = removeTimestampQuery(url)\n const isAbsoluteFile = url.startsWith(root)\n if (isAbsoluteFile || url.startsWith(FS_PREFIX)) {\n let file = path.relative(root, isAbsoluteFile ? url : fsPathFromId(url))\n const seg = file.split('/')\n const npmIndex = seg.indexOf(`node_modules`)\n const isSourceMap = file.endsWith('.map')\n if (npmIndex > 0) {\n file = seg[npmIndex + 1]\n if (file.startsWith('@')) {\n file = `${file}/${seg[npmIndex + 2]}`\n }\n file = `npm: ${chalk.dim(file)}${isSourceMap ? ` (source map)` : ``}`\n }\n return chalk.dim(file)\n } else {\n return chalk.dim(url)\n }\n}\n\nexport function isObject(value: unknown): value is Record {\n return Object.prototype.toString.call(value) === '[object Object]'\n}\n\nexport function isDefined(value: T | undefined | null): value is T {\n return value != null\n}\n\nexport function lookupFile(\n dir: string,\n formats: string[],\n pathOnly = false\n): string | undefined {\n for (const format of formats) {\n const fullPath = path.join(dir, format)\n if (fs.existsSync(fullPath) && fs.statSync(fullPath).isFile()) {\n return pathOnly ? fullPath : fs.readFileSync(fullPath, 'utf-8')\n }\n }\n const parentDir = path.dirname(dir)\n if (parentDir !== dir) {\n return lookupFile(parentDir, formats, pathOnly)\n }\n}\n\nconst splitRE = /\\r?\\n/\n\nconst range: number = 2\n\nexport function pad(source: string, n = 2): string {\n const lines = source.split(splitRE)\n return lines.map((l) => ` `.repeat(n) + l).join(`\\n`)\n}\n\nexport function posToNumber(\n source: string,\n pos: number | { line: number; column: number }\n): number {\n if (typeof pos === 'number') return pos\n const lines = source.split(splitRE)\n const { line, column } = pos\n let start = 0\n for (let i = 0; i < line - 1; i++) {\n start += lines[i].length + 1\n }\n return start + column\n}\n\nexport function numberToPos(\n source: string,\n offset: number | { line: number; column: number }\n): { line: number; column: number } {\n if (typeof offset !== 'number') return offset\n if (offset > source.length) {\n throw new Error(\n `offset is longer than source length! offset ${offset} > length ${source.length}`\n )\n }\n const lines = source.split(splitRE)\n let counted = 0\n let line = 0\n let column = 0\n for (; line < lines.length; line++) {\n const lineLength = lines[line].length + 1\n if (counted + lineLength >= offset) {\n column = offset - counted + 1\n break\n }\n counted += lineLength\n }\n return { line: line + 1, column }\n}\n\nexport function generateCodeFrame(\n source: string,\n start: number | { line: number; column: number } = 0,\n end?: number\n): string {\n start = posToNumber(source, start)\n end = end || start\n const lines = source.split(splitRE)\n let count = 0\n const res: string[] = []\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + 1\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue\n const line = j + 1\n res.push(\n `${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${\n lines[j]\n }`\n )\n const lineLength = lines[j].length\n if (j === i) {\n // push underline\n const pad = start - (count - lineLength) + 1\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n )\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length))\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1)\n res.push(` | ` + '^'.repeat(length))\n }\n count += lineLength + 1\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nexport function writeFile(\n filename: string,\n content: string | Uint8Array\n): void {\n const dir = path.dirname(filename)\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true })\n }\n fs.writeFileSync(filename, content)\n}\n\n/**\n * Delete every file and subdirectory. **The given directory must exist.**\n * Pass an optional `skip` array to preserve files in the root directory.\n */\nexport function emptyDir(dir: string, skip?: string[]): void {\n for (const file of fs.readdirSync(dir)) {\n if (skip?.includes(file)) {\n continue\n }\n const abs = path.resolve(dir, file)\n // baseline is Node 12 so can't use rmSync :(\n if (fs.lstatSync(abs).isDirectory()) {\n emptyDir(abs)\n fs.rmdirSync(abs)\n } else {\n fs.unlinkSync(abs)\n }\n }\n}\n\nexport function copyDir(srcDir: string, destDir: string): void {\n fs.mkdirSync(destDir, { recursive: true })\n for (const file of fs.readdirSync(srcDir)) {\n const srcFile = path.resolve(srcDir, file)\n if (srcFile === destDir) {\n continue\n }\n const destFile = path.resolve(destDir, file)\n const stat = fs.statSync(srcFile)\n if (stat.isDirectory()) {\n copyDir(srcFile, destFile)\n } else {\n fs.copyFileSync(srcFile, destFile)\n }\n }\n}\n\nexport function ensureLeadingSlash(path: string): string {\n return !path.startsWith('/') ? '/' + path : path\n}\n\nexport function ensureWatchedFile(\n watcher: FSWatcher,\n file: string | null,\n root: string\n): void {\n if (\n file &&\n // only need to watch if out of root\n !file.startsWith(root + '/') &&\n // some rollup plugins use null bytes for private resolved Ids\n !file.includes('\\0') &&\n fs.existsSync(file)\n ) {\n // resolve file to normalized system path\n watcher.add(path.resolve(file))\n }\n}\n\ninterface ImageCandidate {\n url: string\n descriptor: string\n}\nconst escapedSpaceCharacters = /( |\\\\t|\\\\n|\\\\f|\\\\r)+/g\nexport async function processSrcSet(\n srcs: string,\n replacer: (arg: ImageCandidate) => Promise\n): Promise {\n const imageCandidates: ImageCandidate[] = srcs\n .split(',')\n .map((s) => {\n const [url, descriptor] = s\n .replace(escapedSpaceCharacters, ' ')\n .trim()\n .split(' ', 2)\n return { url, descriptor }\n })\n .filter(({ url }) => !!url)\n\n const ret = await Promise.all(\n imageCandidates.map(async ({ url, descriptor }) => {\n return {\n url: await replacer({ url, descriptor }),\n descriptor\n }\n })\n )\n\n const url = ret.reduce((prev, { url, descriptor }, index) => {\n descriptor = descriptor || ''\n return (prev +=\n url + ` ${descriptor}${index === ret.length - 1 ? '' : ', '}`)\n }, '')\n\n return url\n}\n\n// based on https://github.com/sveltejs/svelte/blob/abf11bb02b2afbd3e4cac509a0f70e318c306364/src/compiler/utils/mapped_code.ts#L221\nconst nullSourceMap: RawSourceMap = {\n names: [],\n sources: [],\n mappings: '',\n version: 3\n}\nexport function combineSourcemaps(\n filename: string,\n sourcemapList: Array\n): RawSourceMap {\n if (\n sourcemapList.length === 0 ||\n sourcemapList.every((m) => m.sources.length === 0)\n ) {\n return { ...nullSourceMap }\n }\n\n // We don't declare type here so we can convert/fake/map as RawSourceMap\n let map //: SourceMap\n let mapIndex = 1\n const useArrayInterface =\n sourcemapList.slice(0, -1).find((m) => m.sources.length !== 1) === undefined\n if (useArrayInterface) {\n map = remapping(sourcemapList, () => null, true)\n } else {\n map = remapping(\n sourcemapList[0],\n function loader(sourcefile) {\n if (sourcefile === filename && sourcemapList[mapIndex]) {\n return sourcemapList[mapIndex++]\n } else {\n return { ...nullSourceMap }\n }\n },\n true\n )\n }\n if (!map.file) {\n delete map.file\n }\n\n return map as RawSourceMap\n}\n\nexport function unique(arr: T[]): T[] {\n return Array.from(new Set(arr))\n}\n\nexport interface Hostname {\n // undefined sets the default behaviour of server.listen\n host: string | undefined\n // resolve to localhost when possible\n name: string\n}\n\nexport function resolveHostname(\n optionsHost: string | boolean | undefined\n): Hostname {\n let host: string | undefined\n if (\n optionsHost === undefined ||\n optionsHost === false ||\n optionsHost === 'localhost'\n ) {\n // Use a secure default\n host = '127.0.0.1'\n } else if (optionsHost === true) {\n // If passed --host in the CLI without arguments\n host = undefined // undefined typically means 0.0.0.0 or :: (listen on all IPs)\n } else {\n host = optionsHost\n }\n\n // Set host name to localhost when possible, unless the user explicitly asked for '127.0.0.1'\n const name =\n (optionsHost !== '127.0.0.1' && host === '127.0.0.1') ||\n host === '0.0.0.0' ||\n host === '::' ||\n host === undefined\n ? 'localhost'\n : host\n\n return { host, name }\n}\n\nexport function arraify(target: T | T[]): T[] {\n return Array.isArray(target) ? target : [target]\n}\n\nexport function toUpperCaseDriveLetter(pathName: string): string {\n return pathName.replace(/^\\w:/, (letter) => letter.toUpperCase())\n}\n\nexport const multilineCommentsRE = /\\/\\*(.|[\\r\\n])*?\\*\\//gm\nexport const singlelineCommentsRE = /\\/\\/.*/g\n\nexport const usingDynamicImport = typeof jest === 'undefined';\n/**\n * Dynamically import files. It will make sure it's not being compiled away by TS/Rollup.\n *\n * As a temporary workaround for Jest's lack of stable ESM support, we fallback to require\n * if we're in a Jest environment.\n * See https://github.com/vitejs/vite/pull/5197#issuecomment-938054077\n *\n * @param file File path to import.\n */\nexport const dynamicImport = usingDynamicImport ? new Function('file', 'return import(file)') : require;\n","/* eslint no-console: 0 */\n\nimport chalk from 'chalk'\nimport { AddressInfo, Server } from 'net'\nimport os from 'os'\nimport readline from 'readline'\nimport { RollupError } from 'rollup'\nimport { ResolvedConfig } from '.'\nimport { Hostname, resolveHostname } from './utils'\n\nexport type LogType = 'error' | 'warn' | 'info'\nexport type LogLevel = LogType | 'silent'\nexport interface Logger {\n info(msg: string, options?: LogOptions): void\n warn(msg: string, options?: LogOptions): void\n warnOnce(msg: string, options?: LogOptions): void\n error(msg: string, options?: LogErrorOptions): void\n clearScreen(type: LogType): void\n hasErrorLogged(error: Error | RollupError): boolean\n hasWarned: boolean\n}\n\nexport interface LogOptions {\n clear?: boolean\n timestamp?: boolean\n}\n\nexport interface LogErrorOptions extends LogOptions {\n error?: Error | RollupError | null\n}\n\nexport const LogLevels: Record = {\n silent: 0,\n error: 1,\n warn: 2,\n info: 3\n}\n\nlet lastType: LogType | undefined\nlet lastMsg: string | undefined\nlet sameCount = 0\n\nfunction clearScreen() {\n const repeatCount = process.stdout.rows - 2\n const blank = repeatCount > 0 ? '\\n'.repeat(repeatCount) : ''\n console.log(blank)\n readline.cursorTo(process.stdout, 0, 0)\n readline.clearScreenDown(process.stdout)\n}\n\nexport interface LoggerOptions {\n prefix?: string\n allowClearScreen?: boolean\n customLogger?: Logger\n}\n\nexport function createLogger(\n level: LogLevel = 'info',\n options: LoggerOptions = {}\n): Logger {\n if (options.customLogger) {\n return options.customLogger\n }\n\n const loggedErrors = new WeakSet()\n const { prefix = '[vite]', allowClearScreen = true } = options\n const thresh = LogLevels[level]\n const clear =\n allowClearScreen && process.stdout.isTTY && !process.env.CI\n ? clearScreen\n : () => {}\n\n function output(type: LogType, msg: string, options: LogErrorOptions = {}) {\n if (thresh >= LogLevels[type]) {\n const method = type === 'info' ? 'log' : type\n const format = () => {\n if (options.timestamp) {\n const tag =\n type === 'info'\n ? chalk.cyan.bold(prefix)\n : type === 'warn'\n ? chalk.yellow.bold(prefix)\n : chalk.red.bold(prefix)\n return `${chalk.dim(new Date().toLocaleTimeString())} ${tag} ${msg}`\n } else {\n return msg\n }\n }\n if (options.error) {\n loggedErrors.add(options.error)\n }\n if (type === lastType && msg === lastMsg) {\n sameCount++\n clear()\n console[method](format(), chalk.yellow(`(x${sameCount + 1})`))\n } else {\n sameCount = 0\n lastMsg = msg\n lastType = type\n if (options.clear) {\n clear()\n }\n console[method](format())\n }\n }\n }\n\n const warnedMessages = new Set()\n\n const logger: Logger = {\n hasWarned: false,\n info(msg, opts) {\n output('info', msg, opts)\n },\n warn(msg, opts) {\n logger.hasWarned = true\n output('warn', msg, opts)\n },\n warnOnce(msg, opts) {\n if (warnedMessages.has(msg)) return\n logger.hasWarned = true\n output('warn', msg, opts)\n warnedMessages.add(msg)\n },\n error(msg, opts) {\n logger.hasWarned = true\n output('error', msg, opts)\n },\n clearScreen(type) {\n if (thresh >= LogLevels[type]) {\n clear()\n }\n },\n hasErrorLogged(error) {\n return loggedErrors.has(error)\n }\n }\n\n return logger\n}\n\nexport function printHttpServerUrls(\n server: Server,\n config: ResolvedConfig\n): void {\n const address = server.address()\n const isAddressInfo = (x: any): x is AddressInfo => x?.address\n if (isAddressInfo(address)) {\n const hostname = resolveHostname(config.server.host)\n const protocol = config.server.https ? 'https' : 'http'\n printServerUrls(\n hostname,\n protocol,\n address.port,\n config.base,\n config.logger.info\n )\n }\n}\n\nfunction printServerUrls(\n hostname: Hostname,\n protocol: string,\n port: number,\n base: string,\n info: Logger['info']\n): void {\n if (hostname.host === '127.0.0.1') {\n const url = `${protocol}://${hostname.name}:${chalk.bold(port)}${base}`\n info(` > Local: ${chalk.cyan(url)}`)\n if (hostname.name !== '127.0.0.1') {\n info(` > Network: ${chalk.dim('use `--host` to expose')}`)\n }\n } else {\n Object.values(os.networkInterfaces())\n .flatMap((nInterface) => nInterface ?? [])\n .filter((detail) => detail && detail.address && detail.family === 'IPv4')\n .map((detail) => {\n const type = detail.address.includes('127.0.0.1')\n ? 'Local: '\n : 'Network: '\n const host = detail.address.replace('127.0.0.1', hostname.name)\n const url = `${protocol}://${host}:${chalk.bold(port)}${base}`\n return ` > ${type} ${chalk.cyan(url)}`\n })\n .forEach((msg) => info(msg))\n }\n}\n","import path from 'path'\nimport chalk from 'chalk'\nimport { gzip } from 'zlib'\nimport { promisify } from 'util'\nimport { Plugin } from 'rollup'\nimport { ResolvedConfig } from '../config'\nimport { normalizePath } from '../utils'\nimport { LogLevels } from '../logger'\n\nconst enum WriteType {\n JS,\n CSS,\n ASSET,\n HTML,\n SOURCE_MAP\n}\n\nconst writeColors = {\n [WriteType.JS]: chalk.cyan,\n [WriteType.CSS]: chalk.magenta,\n [WriteType.ASSET]: chalk.green,\n [WriteType.HTML]: chalk.blue,\n [WriteType.SOURCE_MAP]: chalk.gray\n}\n\nexport function buildReporterPlugin(config: ResolvedConfig): Plugin {\n const compress = promisify(gzip)\n const chunkLimit = config.build.chunkSizeWarningLimit\n\n function isLarge(code: string | Uint8Array): boolean {\n // bail out on particularly large chunks\n return code.length / 1024 > chunkLimit\n }\n\n async function getCompressedSize(code: string | Uint8Array): Promise {\n if (\n config.build.ssr ||\n !config.build.reportCompressedSize ||\n config.build.brotliSize === false\n ) {\n return ''\n }\n return ` / gzip: ${(\n (await compress(typeof code === 'string' ? code : Buffer.from(code)))\n .length / 1024\n ).toFixed(2)} KiB`\n }\n\n function printFileInfo(\n filePath: string,\n content: string | Uint8Array,\n type: WriteType,\n maxLength: number,\n compressedSize = ''\n ) {\n const outDir =\n normalizePath(\n path.relative(\n config.root,\n path.resolve(config.root, config.build.outDir)\n )\n ) + '/'\n const kibs = content.length / 1024\n const sizeColor = kibs > chunkLimit ? chalk.yellow : chalk.dim\n config.logger.info(\n `${chalk.gray(chalk.white.dim(outDir))}${writeColors[type](\n filePath.padEnd(maxLength + 2)\n )} ${sizeColor(`${kibs.toFixed(2)} KiB${compressedSize}`)}`\n )\n }\n\n const tty = process.stdout.isTTY && !process.env.CI\n const shouldLogInfo = LogLevels[config.logLevel || 'info'] >= LogLevels.info\n let hasTransformed = false\n let hasRenderedChunk = false\n let transformedCount = 0\n let chunkCount = 0\n\n const logTransform = throttle((id: string) => {\n writeLine(\n `transforming (${transformedCount}) ${chalk.dim(\n path.relative(config.root, id)\n )}`\n )\n })\n\n return {\n name: 'vite:reporter',\n\n transform(_, id) {\n transformedCount++\n if (shouldLogInfo) {\n if (!tty) {\n if (!hasTransformed) {\n config.logger.info(`transforming...`)\n }\n } else {\n if (id.includes(`?`)) return\n logTransform(id)\n }\n hasTransformed = true\n }\n return null\n },\n\n buildEnd() {\n if (shouldLogInfo) {\n if (tty) {\n process.stdout.clearLine(0)\n process.stdout.cursorTo(0)\n }\n config.logger.info(\n `${chalk.green(`✓`)} ${transformedCount} modules transformed.`\n )\n }\n },\n\n renderStart() {\n chunkCount = 0\n },\n\n renderChunk() {\n chunkCount++\n if (shouldLogInfo) {\n if (!tty) {\n if (!hasRenderedChunk) {\n config.logger.info('rendering chunks...')\n }\n } else {\n writeLine(`rendering chunks (${chunkCount})...`)\n }\n hasRenderedChunk = true\n }\n return null\n },\n\n generateBundle() {\n if (shouldLogInfo && tty) {\n process.stdout.clearLine(0)\n process.stdout.cursorTo(0)\n }\n },\n\n async writeBundle(_, output) {\n let hasLargeChunks = false\n\n if (shouldLogInfo) {\n let longest = 0\n for (const file in output) {\n const l = output[file].fileName.length\n if (l > longest) longest = l\n }\n\n // large chunks are deferred to be logged at the end so they are more\n // visible.\n const deferredLogs: (() => void)[] = []\n\n await Promise.all(\n Object.keys(output).map(async (file) => {\n const chunk = output[file]\n if (chunk.type === 'chunk') {\n const log = async () => {\n printFileInfo(\n chunk.fileName,\n chunk.code,\n WriteType.JS,\n longest,\n await getCompressedSize(chunk.code)\n )\n if (chunk.map) {\n printFileInfo(\n chunk.fileName + '.map',\n chunk.map.toString(),\n WriteType.SOURCE_MAP,\n longest\n )\n }\n }\n if (isLarge(chunk.code)) {\n hasLargeChunks = true\n deferredLogs.push(log)\n } else {\n await log()\n }\n } else if (chunk.source) {\n const isCSS = chunk.fileName.endsWith('.css')\n printFileInfo(\n chunk.fileName,\n chunk.source,\n isCSS ? WriteType.CSS : WriteType.ASSET,\n longest,\n isCSS ? await getCompressedSize(chunk.source) : undefined\n )\n }\n })\n )\n\n await Promise.all(deferredLogs.map((l) => l()))\n } else {\n hasLargeChunks = Object.keys(output).some((file) => {\n const chunk = output[file]\n return chunk.type === 'chunk' && chunk.code.length / 1024 > chunkLimit\n })\n }\n\n if (\n hasLargeChunks &&\n config.build.minify &&\n !config.build.lib &&\n !config.build.ssr\n ) {\n config.logger.warn(\n chalk.yellow(\n `\\n(!) Some chunks are larger than ${chunkLimit} KiB after minification. Consider:\\n` +\n `- Using dynamic import() to code-split the application\\n` +\n `- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/guide/en/#outputmanualchunks\\n` +\n `- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.`\n )\n )\n }\n }\n }\n}\n\nfunction writeLine(output: string) {\n process.stdout.clearLine(0)\n process.stdout.cursorTo(0)\n if (output.length < process.stdout.columns) {\n process.stdout.write(output)\n } else {\n process.stdout.write(output.substring(0, process.stdout.columns - 1))\n }\n}\n\nfunction throttle(fn: Function) {\n let timerHandle: NodeJS.Timeout | null = null\n return (...args: any[]) => {\n if (timerHandle) return\n fn(...args)\n timerHandle = setTimeout(() => {\n timerHandle = null\n }, 100)\n }\n}\n","var charToInteger = {};\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nfor (var i = 0; i < chars.length; i++) {\n charToInteger[chars.charCodeAt(i)] = i;\n}\nfunction decode(mappings) {\n var decoded = [];\n var line = [];\n var segment = [\n 0,\n 0,\n 0,\n 0,\n 0,\n ];\n var j = 0;\n for (var i = 0, shift = 0, value = 0; i < mappings.length; i++) {\n var c = mappings.charCodeAt(i);\n if (c === 44) { // \",\"\n segmentify(line, segment, j);\n j = 0;\n }\n else if (c === 59) { // \";\"\n segmentify(line, segment, j);\n j = 0;\n decoded.push(line);\n line = [];\n segment[0] = 0;\n }\n else {\n var integer = charToInteger[c];\n if (integer === undefined) {\n throw new Error('Invalid character (' + String.fromCharCode(c) + ')');\n }\n var hasContinuationBit = integer & 32;\n integer &= 31;\n value += integer << shift;\n if (hasContinuationBit) {\n shift += 5;\n }\n else {\n var shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = value === 0 ? -0x80000000 : -value;\n }\n segment[j] += value;\n j++;\n value = shift = 0; // reset\n }\n }\n }\n segmentify(line, segment, j);\n decoded.push(line);\n return decoded;\n}\nfunction segmentify(line, segment, j) {\n // This looks ugly, but we're creating specialized arrays with a specific\n // length. This is much faster than creating a new array (which v8 expands to\n // a capacity of 17 after pushing the first item), or slicing out a subarray\n // (which is slow). Length 4 is assumed to be the most frequent, followed by\n // length 5 (since not everything will have an associated name), followed by\n // length 1 (it's probably rare for a source substring to not have an\n // associated segment data).\n if (j === 4)\n line.push([segment[0], segment[1], segment[2], segment[3]]);\n else if (j === 5)\n line.push([segment[0], segment[1], segment[2], segment[3], segment[4]]);\n else if (j === 1)\n line.push([segment[0]]);\n}\nfunction encode(decoded) {\n var sourceFileIndex = 0; // second field\n var sourceCodeLine = 0; // third field\n var sourceCodeColumn = 0; // fourth field\n var nameIndex = 0; // fifth field\n var mappings = '';\n for (var i = 0; i < decoded.length; i++) {\n var line = decoded[i];\n if (i > 0)\n mappings += ';';\n if (line.length === 0)\n continue;\n var generatedCodeColumn = 0; // first field\n var lineMappings = [];\n for (var _i = 0, line_1 = line; _i < line_1.length; _i++) {\n var segment = line_1[_i];\n var segmentMappings = encodeInteger(segment[0] - generatedCodeColumn);\n generatedCodeColumn = segment[0];\n if (segment.length > 1) {\n segmentMappings +=\n encodeInteger(segment[1] - sourceFileIndex) +\n encodeInteger(segment[2] - sourceCodeLine) +\n encodeInteger(segment[3] - sourceCodeColumn);\n sourceFileIndex = segment[1];\n sourceCodeLine = segment[2];\n sourceCodeColumn = segment[3];\n }\n if (segment.length === 5) {\n segmentMappings += encodeInteger(segment[4] - nameIndex);\n nameIndex = segment[4];\n }\n lineMappings.push(segmentMappings);\n }\n mappings += lineMappings.join(',');\n }\n return mappings;\n}\nfunction encodeInteger(num) {\n var result = '';\n num = num < 0 ? (-num << 1) | 1 : num << 1;\n do {\n var clamped = num & 31;\n num >>>= 5;\n if (num > 0) {\n clamped |= 32;\n }\n result += chars[clamped];\n } while (num > 0);\n return result;\n}\n\nexport { decode, encode };\n//# sourceMappingURL=sourcemap-codec.es.js.map\n","import { encode } from 'sourcemap-codec';\n\nvar BitSet = function BitSet(arg) {\n\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n};\n\nBitSet.prototype.add = function add (n) {\n\tthis.bits[n >> 5] |= 1 << (n & 31);\n};\n\nBitSet.prototype.has = function has (n) {\n\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n};\n\nvar Chunk = function Chunk(start, end, content) {\n\tthis.start = start;\n\tthis.end = end;\n\tthis.original = content;\n\n\tthis.intro = '';\n\tthis.outro = '';\n\n\tthis.content = content;\n\tthis.storeName = false;\n\tthis.edited = false;\n\n\t// we make these non-enumerable, for sanity while debugging\n\tObject.defineProperties(this, {\n\t\tprevious: { writable: true, value: null },\n\t\tnext: { writable: true, value: null }\n\t});\n};\n\nChunk.prototype.appendLeft = function appendLeft (content) {\n\tthis.outro += content;\n};\n\nChunk.prototype.appendRight = function appendRight (content) {\n\tthis.intro = this.intro + content;\n};\n\nChunk.prototype.clone = function clone () {\n\tvar chunk = new Chunk(this.start, this.end, this.original);\n\n\tchunk.intro = this.intro;\n\tchunk.outro = this.outro;\n\tchunk.content = this.content;\n\tchunk.storeName = this.storeName;\n\tchunk.edited = this.edited;\n\n\treturn chunk;\n};\n\nChunk.prototype.contains = function contains (index) {\n\treturn this.start < index && index < this.end;\n};\n\nChunk.prototype.eachNext = function eachNext (fn) {\n\tvar chunk = this;\n\twhile (chunk) {\n\t\tfn(chunk);\n\t\tchunk = chunk.next;\n\t}\n};\n\nChunk.prototype.eachPrevious = function eachPrevious (fn) {\n\tvar chunk = this;\n\twhile (chunk) {\n\t\tfn(chunk);\n\t\tchunk = chunk.previous;\n\t}\n};\n\nChunk.prototype.edit = function edit (content, storeName, contentOnly) {\n\tthis.content = content;\n\tif (!contentOnly) {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t}\n\tthis.storeName = storeName;\n\n\tthis.edited = true;\n\n\treturn this;\n};\n\nChunk.prototype.prependLeft = function prependLeft (content) {\n\tthis.outro = content + this.outro;\n};\n\nChunk.prototype.prependRight = function prependRight (content) {\n\tthis.intro = content + this.intro;\n};\n\nChunk.prototype.split = function split (index) {\n\tvar sliceIndex = index - this.start;\n\n\tvar originalBefore = this.original.slice(0, sliceIndex);\n\tvar originalAfter = this.original.slice(sliceIndex);\n\n\tthis.original = originalBefore;\n\n\tvar newChunk = new Chunk(index, this.end, originalAfter);\n\tnewChunk.outro = this.outro;\n\tthis.outro = '';\n\n\tthis.end = index;\n\n\tif (this.edited) {\n\t\t// TODO is this block necessary?...\n\t\tnewChunk.edit('', false);\n\t\tthis.content = '';\n\t} else {\n\t\tthis.content = originalBefore;\n\t}\n\n\tnewChunk.next = this.next;\n\tif (newChunk.next) { newChunk.next.previous = newChunk; }\n\tnewChunk.previous = this;\n\tthis.next = newChunk;\n\n\treturn newChunk;\n};\n\nChunk.prototype.toString = function toString () {\n\treturn this.intro + this.content + this.outro;\n};\n\nChunk.prototype.trimEnd = function trimEnd (rx) {\n\tthis.outro = this.outro.replace(rx, '');\n\tif (this.outro.length) { return true; }\n\n\tvar trimmed = this.content.replace(rx, '');\n\n\tif (trimmed.length) {\n\t\tif (trimmed !== this.content) {\n\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t}\n\t\treturn true;\n\n\t} else {\n\t\tthis.edit('', undefined, true);\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) { return true; }\n\t}\n};\n\nChunk.prototype.trimStart = function trimStart (rx) {\n\tthis.intro = this.intro.replace(rx, '');\n\tif (this.intro.length) { return true; }\n\n\tvar trimmed = this.content.replace(rx, '');\n\n\tif (trimmed.length) {\n\t\tif (trimmed !== this.content) {\n\t\t\tthis.split(this.end - trimmed.length);\n\t\t\tthis.edit('', undefined, true);\n\t\t}\n\t\treturn true;\n\n\t} else {\n\t\tthis.edit('', undefined, true);\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) { return true; }\n\t}\n};\n\nvar btoa = function () {\n\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n};\nif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n\tbtoa = function (str) { return window.btoa(unescape(encodeURIComponent(str))); };\n} else if (typeof Buffer === 'function') {\n\tbtoa = function (str) { return Buffer.from(str, 'utf-8').toString('base64'); };\n}\n\nvar SourceMap = function SourceMap(properties) {\n\tthis.version = 3;\n\tthis.file = properties.file;\n\tthis.sources = properties.sources;\n\tthis.sourcesContent = properties.sourcesContent;\n\tthis.names = properties.names;\n\tthis.mappings = encode(properties.mappings);\n};\n\nSourceMap.prototype.toString = function toString () {\n\treturn JSON.stringify(this);\n};\n\nSourceMap.prototype.toUrl = function toUrl () {\n\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n};\n\nfunction guessIndent(code) {\n\tvar lines = code.split('\\n');\n\n\tvar tabbed = lines.filter(function (line) { return /^\\t+/.test(line); });\n\tvar spaced = lines.filter(function (line) { return /^ {2,}/.test(line); });\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tvar min = spaced.reduce(function (previous, current) {\n\t\tvar numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n\tvar fromParts = from.split(/[/\\\\]/);\n\tvar toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tvar i = fromParts.length;\n\t\twhile (i--) { fromParts[i] = '..'; }\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n\tvar originalLines = source.split('\\n');\n\tvar lineOffsets = [];\n\n\tfor (var i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tvar i = 0;\n\t\tvar j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tvar m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tvar line = i - 1;\n\t\tvar column = index - lineOffsets[line];\n\t\treturn { line: line, column: column };\n\t};\n}\n\nvar Mappings = function Mappings(hires) {\n\tthis.hires = hires;\n\tthis.generatedCodeLine = 0;\n\tthis.generatedCodeColumn = 0;\n\tthis.raw = [];\n\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\tthis.pending = null;\n};\n\nMappings.prototype.addEdit = function addEdit (sourceIndex, content, loc, nameIndex) {\n\tif (content.length) {\n\t\tvar segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\tif (nameIndex >= 0) {\n\t\t\tsegment.push(nameIndex);\n\t\t}\n\t\tthis.rawSegments.push(segment);\n\t} else if (this.pending) {\n\t\tthis.rawSegments.push(this.pending);\n\t}\n\n\tthis.advance(content);\n\tthis.pending = null;\n};\n\nMappings.prototype.addUneditedChunk = function addUneditedChunk (sourceIndex, chunk, original, loc, sourcemapLocations) {\n\tvar originalCharIndex = chunk.start;\n\tvar first = true;\n\n\twhile (originalCharIndex < chunk.end) {\n\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\tthis.rawSegments.push([this.generatedCodeColumn, sourceIndex, loc.line, loc.column]);\n\t\t}\n\n\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\tloc.line += 1;\n\t\t\tloc.column = 0;\n\t\t\tthis.generatedCodeLine += 1;\n\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t\tfirst = true;\n\t\t} else {\n\t\t\tloc.column += 1;\n\t\t\tthis.generatedCodeColumn += 1;\n\t\t\tfirst = false;\n\t\t}\n\n\t\toriginalCharIndex += 1;\n\t}\n\n\tthis.pending = null;\n};\n\nMappings.prototype.advance = function advance (str) {\n\tif (!str) { return; }\n\n\tvar lines = str.split('\\n');\n\n\tif (lines.length > 1) {\n\t\tfor (var i = 0; i < lines.length - 1; i++) {\n\t\t\tthis.generatedCodeLine++;\n\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t}\n\t\tthis.generatedCodeColumn = 0;\n\t}\n\n\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n};\n\nvar n = '\\n';\n\nvar warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false\n};\n\nvar MagicString = function MagicString(string, options) {\n\tif ( options === void 0 ) options = {};\n\n\tvar chunk = new Chunk(0, string.length, string);\n\n\tObject.defineProperties(this, {\n\t\toriginal: { writable: true, value: string },\n\t\toutro: { writable: true, value: '' },\n\t\tintro: { writable: true, value: '' },\n\t\tfirstChunk: { writable: true, value: chunk },\n\t\tlastChunk: { writable: true, value: chunk },\n\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\tbyStart: { writable: true, value: {} },\n\t\tbyEnd: { writable: true, value: {} },\n\t\tfilename: { writable: true, value: options.filename },\n\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\tstoredNames: { writable: true, value: {} },\n\t\tindentStr: { writable: true, value: guessIndent(string) }\n\t});\n\n\tthis.byStart[0] = chunk;\n\tthis.byEnd[string.length] = chunk;\n};\n\nMagicString.prototype.addSourcemapLocation = function addSourcemapLocation (char) {\n\tthis.sourcemapLocations.add(char);\n};\n\nMagicString.prototype.append = function append (content) {\n\tif (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }\n\n\tthis.outro += content;\n\treturn this;\n};\n\nMagicString.prototype.appendLeft = function appendLeft (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byEnd[index];\n\n\tif (chunk) {\n\t\tchunk.appendLeft(content);\n\t} else {\n\t\tthis.intro += content;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.appendRight = function appendRight (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byStart[index];\n\n\tif (chunk) {\n\t\tchunk.appendRight(content);\n\t} else {\n\t\tthis.outro += content;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.clone = function clone () {\n\tvar cloned = new MagicString(this.original, { filename: this.filename });\n\n\tvar originalChunk = this.firstChunk;\n\tvar clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\twhile (originalChunk) {\n\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\tvar nextOriginalChunk = originalChunk.next;\n\t\tvar nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\tif (nextClonedChunk) {\n\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\tclonedChunk = nextClonedChunk;\n\t\t}\n\n\t\toriginalChunk = nextOriginalChunk;\n\t}\n\n\tcloned.lastChunk = clonedChunk;\n\n\tif (this.indentExclusionRanges) {\n\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t}\n\n\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\tcloned.intro = this.intro;\n\tcloned.outro = this.outro;\n\n\treturn cloned;\n};\n\nMagicString.prototype.generateDecodedMap = function generateDecodedMap (options) {\n\t\tvar this$1 = this;\n\n\toptions = options || {};\n\n\tvar sourceIndex = 0;\n\tvar names = Object.keys(this.storedNames);\n\tvar mappings = new Mappings(options.hires);\n\n\tvar locate = getLocator(this.original);\n\n\tif (this.intro) {\n\t\tmappings.advance(this.intro);\n\t}\n\n\tthis.firstChunk.eachNext(function (chunk) {\n\t\tvar loc = locate(chunk.start);\n\n\t\tif (chunk.intro.length) { mappings.advance(chunk.intro); }\n\n\t\tif (chunk.edited) {\n\t\t\tmappings.addEdit(\n\t\t\t\tsourceIndex,\n\t\t\t\tchunk.content,\n\t\t\t\tloc,\n\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1\n\t\t\t);\n\t\t} else {\n\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this$1.original, loc, this$1.sourcemapLocations);\n\t\t}\n\n\t\tif (chunk.outro.length) { mappings.advance(chunk.outro); }\n\t});\n\n\treturn {\n\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n\t\tsources: [options.source ? getRelativePath(options.file || '', options.source) : null],\n\t\tsourcesContent: options.includeContent ? [this.original] : [null],\n\t\tnames: names,\n\t\tmappings: mappings.raw\n\t};\n};\n\nMagicString.prototype.generateMap = function generateMap (options) {\n\treturn new SourceMap(this.generateDecodedMap(options));\n};\n\nMagicString.prototype.getIndentString = function getIndentString () {\n\treturn this.indentStr === null ? '\\t' : this.indentStr;\n};\n\nMagicString.prototype.indent = function indent (indentStr, options) {\n\tvar pattern = /^[^\\r\\n]/gm;\n\n\tif (isObject(indentStr)) {\n\t\toptions = indentStr;\n\t\tindentStr = undefined;\n\t}\n\n\tindentStr = indentStr !== undefined ? indentStr : this.indentStr || '\\t';\n\n\tif (indentStr === '') { return this; } // noop\n\n\toptions = options || {};\n\n\t// Process exclusion ranges\n\tvar isExcluded = {};\n\n\tif (options.exclude) {\n\t\tvar exclusions =\n\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\texclusions.forEach(function (exclusion) {\n\t\t\tfor (var i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\tisExcluded[i] = true;\n\t\t\t}\n\t\t});\n\t}\n\n\tvar shouldIndentNextCharacter = options.indentStart !== false;\n\tvar replacer = function (match) {\n\t\tif (shouldIndentNextCharacter) { return (\"\" + indentStr + match); }\n\t\tshouldIndentNextCharacter = true;\n\t\treturn match;\n\t};\n\n\tthis.intro = this.intro.replace(pattern, replacer);\n\n\tvar charIndex = 0;\n\tvar chunk = this.firstChunk;\n\n\twhile (chunk) {\n\t\tvar end = chunk.end;\n\n\t\tif (chunk.edited) {\n\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tcharIndex = chunk.start;\n\n\t\t\twhile (charIndex < end) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tvar char = this.original[charIndex];\n\n\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcharIndex += 1;\n\t\t\t}\n\t\t}\n\n\t\tcharIndex = chunk.end;\n\t\tchunk = chunk.next;\n\t}\n\n\tthis.outro = this.outro.replace(pattern, replacer);\n\n\treturn this;\n};\n\nMagicString.prototype.insert = function insert () {\n\tthrow new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)');\n};\n\nMagicString.prototype.insertLeft = function insertLeft (index, content) {\n\tif (!warned.insertLeft) {\n\t\tconsole.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'); // eslint-disable-line no-console\n\t\twarned.insertLeft = true;\n\t}\n\n\treturn this.appendLeft(index, content);\n};\n\nMagicString.prototype.insertRight = function insertRight (index, content) {\n\tif (!warned.insertRight) {\n\t\tconsole.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'); // eslint-disable-line no-console\n\t\twarned.insertRight = true;\n\t}\n\n\treturn this.prependRight(index, content);\n};\n\nMagicString.prototype.move = function move (start, end, index) {\n\tif (index >= start && index <= end) { throw new Error('Cannot move a selection inside itself'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\tthis._split(index);\n\n\tvar first = this.byStart[start];\n\tvar last = this.byEnd[end];\n\n\tvar oldLeft = first.previous;\n\tvar oldRight = last.next;\n\n\tvar newRight = this.byStart[index];\n\tif (!newRight && last === this.lastChunk) { return this; }\n\tvar newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\tif (oldLeft) { oldLeft.next = oldRight; }\n\tif (oldRight) { oldRight.previous = oldLeft; }\n\n\tif (newLeft) { newLeft.next = first; }\n\tif (newRight) { newRight.previous = last; }\n\n\tif (!first.previous) { this.firstChunk = last.next; }\n\tif (!last.next) {\n\t\tthis.lastChunk = first.previous;\n\t\tthis.lastChunk.next = null;\n\t}\n\n\tfirst.previous = newLeft;\n\tlast.next = newRight || null;\n\n\tif (!newLeft) { this.firstChunk = first; }\n\tif (!newRight) { this.lastChunk = last; }\n\treturn this;\n};\n\nMagicString.prototype.overwrite = function overwrite (start, end, content, options) {\n\tif (typeof content !== 'string') { throw new TypeError('replacement content must be a string'); }\n\n\twhile (start < 0) { start += this.original.length; }\n\twhile (end < 0) { end += this.original.length; }\n\n\tif (end > this.original.length) { throw new Error('end is out of bounds'); }\n\tif (start === end)\n\t\t{ throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\n\tif (options === true) {\n\t\tif (!warned.storeName) {\n\t\t\tconsole.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'); // eslint-disable-line no-console\n\t\t\twarned.storeName = true;\n\t\t}\n\n\t\toptions = { storeName: true };\n\t}\n\tvar storeName = options !== undefined ? options.storeName : false;\n\tvar contentOnly = options !== undefined ? options.contentOnly : false;\n\n\tif (storeName) {\n\t\tvar original = this.original.slice(start, end);\n\t\tthis.storedNames[original] = true;\n\t}\n\n\tvar first = this.byStart[start];\n\tvar last = this.byEnd[end];\n\n\tif (first) {\n\t\tif (end > first.end && first.next !== this.byStart[first.end]) {\n\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t}\n\n\t\tfirst.edit(content, storeName, contentOnly);\n\n\t\tif (first !== last) {\n\t\t\tvar chunk = first.next;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tchunk.edit('', false);\n\t\t\t\tchunk = chunk.next;\n\t\t\t}\n\n\t\t\tchunk.edit('', false);\n\t\t}\n\t} else {\n\t\t// must be inserting at the end\n\t\tvar newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\tlast.next = newChunk;\n\t\tnewChunk.previous = last;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.prepend = function prepend (content) {\n\tif (typeof content !== 'string') { throw new TypeError('outro content must be a string'); }\n\n\tthis.intro = content + this.intro;\n\treturn this;\n};\n\nMagicString.prototype.prependLeft = function prependLeft (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byEnd[index];\n\n\tif (chunk) {\n\t\tchunk.prependLeft(content);\n\t} else {\n\t\tthis.intro = content + this.intro;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.prependRight = function prependRight (index, content) {\n\tif (typeof content !== 'string') { throw new TypeError('inserted content must be a string'); }\n\n\tthis._split(index);\n\n\tvar chunk = this.byStart[index];\n\n\tif (chunk) {\n\t\tchunk.prependRight(content);\n\t} else {\n\t\tthis.outro = content + this.outro;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.remove = function remove (start, end) {\n\twhile (start < 0) { start += this.original.length; }\n\twhile (end < 0) { end += this.original.length; }\n\n\tif (start === end) { return this; }\n\n\tif (start < 0 || end > this.original.length) { throw new Error('Character is out of bounds'); }\n\tif (start > end) { throw new Error('end must be greater than start'); }\n\n\tthis._split(start);\n\tthis._split(end);\n\n\tvar chunk = this.byStart[start];\n\n\twhile (chunk) {\n\t\tchunk.intro = '';\n\t\tchunk.outro = '';\n\t\tchunk.edit('');\n\n\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t}\n\treturn this;\n};\n\nMagicString.prototype.lastChar = function lastChar () {\n\tif (this.outro.length)\n\t\t{ return this.outro[this.outro.length - 1]; }\n\tvar chunk = this.lastChunk;\n\tdo {\n\t\tif (chunk.outro.length)\n\t\t\t{ return chunk.outro[chunk.outro.length - 1]; }\n\t\tif (chunk.content.length)\n\t\t\t{ return chunk.content[chunk.content.length - 1]; }\n\t\tif (chunk.intro.length)\n\t\t\t{ return chunk.intro[chunk.intro.length - 1]; }\n\t} while (chunk = chunk.previous);\n\tif (this.intro.length)\n\t\t{ return this.intro[this.intro.length - 1]; }\n\treturn '';\n};\n\nMagicString.prototype.lastLine = function lastLine () {\n\tvar lineIndex = this.outro.lastIndexOf(n);\n\tif (lineIndex !== -1)\n\t\t{ return this.outro.substr(lineIndex + 1); }\n\tvar lineStr = this.outro;\n\tvar chunk = this.lastChunk;\n\tdo {\n\t\tif (chunk.outro.length > 0) {\n\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\tif (lineIndex !== -1)\n\t\t\t\t{ return chunk.outro.substr(lineIndex + 1) + lineStr; }\n\t\t\tlineStr = chunk.outro + lineStr;\n\t\t}\n\n\t\tif (chunk.content.length > 0) {\n\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\tif (lineIndex !== -1)\n\t\t\t\t{ return chunk.content.substr(lineIndex + 1) + lineStr; }\n\t\t\tlineStr = chunk.content + lineStr;\n\t\t}\n\n\t\tif (chunk.intro.length > 0) {\n\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\tif (lineIndex !== -1)\n\t\t\t\t{ return chunk.intro.substr(lineIndex + 1) + lineStr; }\n\t\t\tlineStr = chunk.intro + lineStr;\n\t\t}\n\t} while (chunk = chunk.previous);\n\tlineIndex = this.intro.lastIndexOf(n);\n\tif (lineIndex !== -1)\n\t\t{ return this.intro.substr(lineIndex + 1) + lineStr; }\n\treturn this.intro + lineStr;\n};\n\nMagicString.prototype.slice = function slice (start, end) {\n\t\tif ( start === void 0 ) start = 0;\n\t\tif ( end === void 0 ) end = this.original.length;\n\n\twhile (start < 0) { start += this.original.length; }\n\twhile (end < 0) { end += this.original.length; }\n\n\tvar result = '';\n\n\t// find start chunk\n\tvar chunk = this.firstChunk;\n\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t// found end chunk before start\n\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\treturn result;\n\t\t}\n\n\t\tchunk = chunk.next;\n\t}\n\n\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t{ throw new Error((\"Cannot use replaced character \" + start + \" as slice start anchor.\")); }\n\n\tvar startChunk = chunk;\n\twhile (chunk) {\n\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\tresult += chunk.intro;\n\t\t}\n\n\t\tvar containsEnd = chunk.start < end && chunk.end >= end;\n\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t{ throw new Error((\"Cannot use replaced character \" + end + \" as slice end anchor.\")); }\n\n\t\tvar sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\tvar sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\tresult += chunk.outro;\n\t\t}\n\n\t\tif (containsEnd) {\n\t\t\tbreak;\n\t\t}\n\n\t\tchunk = chunk.next;\n\t}\n\n\treturn result;\n};\n\n// TODO deprecate this? not really very useful\nMagicString.prototype.snip = function snip (start, end) {\n\tvar clone = this.clone();\n\tclone.remove(0, start);\n\tclone.remove(end, clone.original.length);\n\n\treturn clone;\n};\n\nMagicString.prototype._split = function _split (index) {\n\tif (this.byStart[index] || this.byEnd[index]) { return; }\n\n\tvar chunk = this.lastSearchedChunk;\n\tvar searchForward = index > chunk.end;\n\n\twhile (chunk) {\n\t\tif (chunk.contains(index)) { return this._splitChunk(chunk, index); }\n\n\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t}\n};\n\nMagicString.prototype._splitChunk = function _splitChunk (chunk, index) {\n\tif (chunk.edited && chunk.content.length) {\n\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\tvar loc = getLocator(this.original)(index);\n\t\tthrow new Error(\n\t\t\t(\"Cannot split a chunk that has already been edited (\" + (loc.line) + \":\" + (loc.column) + \" – \\\"\" + (chunk.original) + \"\\\")\")\n\t\t);\n\t}\n\n\tvar newChunk = chunk.split(index);\n\n\tthis.byEnd[index] = chunk;\n\tthis.byStart[index] = newChunk;\n\tthis.byEnd[newChunk.end] = newChunk;\n\n\tif (chunk === this.lastChunk) { this.lastChunk = newChunk; }\n\n\tthis.lastSearchedChunk = chunk;\n\treturn true;\n};\n\nMagicString.prototype.toString = function toString () {\n\tvar str = this.intro;\n\n\tvar chunk = this.firstChunk;\n\twhile (chunk) {\n\t\tstr += chunk.toString();\n\t\tchunk = chunk.next;\n\t}\n\n\treturn str + this.outro;\n};\n\nMagicString.prototype.isEmpty = function isEmpty () {\n\tvar chunk = this.firstChunk;\n\tdo {\n\t\tif (chunk.intro.length && chunk.intro.trim() ||\n\t\t\t\tchunk.content.length && chunk.content.trim() ||\n\t\t\t\tchunk.outro.length && chunk.outro.trim())\n\t\t\t{ return false; }\n\t} while (chunk = chunk.next);\n\treturn true;\n};\n\nMagicString.prototype.length = function length () {\n\tvar chunk = this.firstChunk;\n\tvar length = 0;\n\tdo {\n\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t} while (chunk = chunk.next);\n\treturn length;\n};\n\nMagicString.prototype.trimLines = function trimLines () {\n\treturn this.trim('[\\\\r\\\\n]');\n};\n\nMagicString.prototype.trim = function trim (charType) {\n\treturn this.trimStart(charType).trimEnd(charType);\n};\n\nMagicString.prototype.trimEndAborted = function trimEndAborted (charType) {\n\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\n\tthis.outro = this.outro.replace(rx, '');\n\tif (this.outro.length) { return true; }\n\n\tvar chunk = this.lastChunk;\n\n\tdo {\n\t\tvar end = chunk.end;\n\t\tvar aborted = chunk.trimEnd(rx);\n\n\t\t// if chunk was trimmed, we have a new lastChunk\n\t\tif (chunk.end !== end) {\n\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t}\n\n\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t}\n\n\t\tif (aborted) { return true; }\n\t\tchunk = chunk.previous;\n\t} while (chunk);\n\n\treturn false;\n};\n\nMagicString.prototype.trimEnd = function trimEnd (charType) {\n\tthis.trimEndAborted(charType);\n\treturn this;\n};\nMagicString.prototype.trimStartAborted = function trimStartAborted (charType) {\n\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\tthis.intro = this.intro.replace(rx, '');\n\tif (this.intro.length) { return true; }\n\n\tvar chunk = this.firstChunk;\n\n\tdo {\n\t\tvar end = chunk.end;\n\t\tvar aborted = chunk.trimStart(rx);\n\n\t\tif (chunk.end !== end) {\n\t\t\t// special case...\n\t\t\tif (chunk === this.lastChunk) { this.lastChunk = chunk.next; }\n\n\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t}\n\n\t\tif (aborted) { return true; }\n\t\tchunk = chunk.next;\n\t} while (chunk);\n\n\treturn false;\n};\n\nMagicString.prototype.trimStart = function trimStart (charType) {\n\tthis.trimStartAborted(charType);\n\treturn this;\n};\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nvar Bundle = function Bundle(options) {\n\tif ( options === void 0 ) options = {};\n\n\tthis.intro = options.intro || '';\n\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\tthis.sources = [];\n\tthis.uniqueSources = [];\n\tthis.uniqueSourceIndexByFilename = {};\n};\n\nBundle.prototype.addSource = function addSource (source) {\n\tif (source instanceof MagicString) {\n\t\treturn this.addSource({\n\t\t\tcontent: source,\n\t\t\tfilename: source.filename,\n\t\t\tseparator: this.separator\n\t\t});\n\t}\n\n\tif (!isObject(source) || !source.content) {\n\t\tthrow new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`');\n\t}\n\n\t['filename', 'indentExclusionRanges', 'separator'].forEach(function (option) {\n\t\tif (!hasOwnProp.call(source, option)) { source[option] = source.content[option]; }\n\t});\n\n\tif (source.separator === undefined) {\n\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\tsource.separator = this.separator;\n\t}\n\n\tif (source.filename) {\n\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t} else {\n\t\t\tvar uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\tthrow new Error((\"Illegal source: same filename (\" + (source.filename) + \"), different contents\"));\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.sources.push(source);\n\treturn this;\n};\n\nBundle.prototype.append = function append (str, options) {\n\tthis.addSource({\n\t\tcontent: new MagicString(str),\n\t\tseparator: (options && options.separator) || ''\n\t});\n\n\treturn this;\n};\n\nBundle.prototype.clone = function clone () {\n\tvar bundle = new Bundle({\n\t\tintro: this.intro,\n\t\tseparator: this.separator\n\t});\n\n\tthis.sources.forEach(function (source) {\n\t\tbundle.addSource({\n\t\t\tfilename: source.filename,\n\t\t\tcontent: source.content.clone(),\n\t\t\tseparator: source.separator\n\t\t});\n\t});\n\n\treturn bundle;\n};\n\nBundle.prototype.generateDecodedMap = function generateDecodedMap (options) {\n\t\tvar this$1 = this;\n\t\tif ( options === void 0 ) options = {};\n\n\tvar names = [];\n\tthis.sources.forEach(function (source) {\n\t\tObject.keys(source.content.storedNames).forEach(function (name) {\n\t\t\tif (!~names.indexOf(name)) { names.push(name); }\n\t\t});\n\t});\n\n\tvar mappings = new Mappings(options.hires);\n\n\tif (this.intro) {\n\t\tmappings.advance(this.intro);\n\t}\n\n\tthis.sources.forEach(function (source, i) {\n\t\tif (i > 0) {\n\t\t\tmappings.advance(this$1.separator);\n\t\t}\n\n\t\tvar sourceIndex = source.filename ? this$1.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\tvar magicString = source.content;\n\t\tvar locate = getLocator(magicString.original);\n\n\t\tif (magicString.intro) {\n\t\t\tmappings.advance(magicString.intro);\n\t\t}\n\n\t\tmagicString.firstChunk.eachNext(function (chunk) {\n\t\t\tvar loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) { mappings.advance(chunk.intro); }\n\n\t\t\tif (source.filename) {\n\t\t\t\tif (chunk.edited) {\n\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tchunk,\n\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\tloc,\n\t\t\t\t\t\tmagicString.sourcemapLocations\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmappings.advance(chunk.content);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) { mappings.advance(chunk.outro); }\n\t\t});\n\n\t\tif (magicString.outro) {\n\t\t\tmappings.advance(magicString.outro);\n\t\t}\n\t});\n\n\treturn {\n\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n\t\tsources: this.uniqueSources.map(function (source) {\n\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t}),\n\t\tsourcesContent: this.uniqueSources.map(function (source) {\n\t\t\treturn options.includeContent ? source.content : null;\n\t\t}),\n\t\tnames: names,\n\t\tmappings: mappings.raw\n\t};\n};\n\nBundle.prototype.generateMap = function generateMap (options) {\n\treturn new SourceMap(this.generateDecodedMap(options));\n};\n\nBundle.prototype.getIndentString = function getIndentString () {\n\tvar indentStringCounts = {};\n\n\tthis.sources.forEach(function (source) {\n\t\tvar indentStr = source.content.indentStr;\n\n\t\tif (indentStr === null) { return; }\n\n\t\tif (!indentStringCounts[indentStr]) { indentStringCounts[indentStr] = 0; }\n\t\tindentStringCounts[indentStr] += 1;\n\t});\n\n\treturn (\n\t\tObject.keys(indentStringCounts).sort(function (a, b) {\n\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t})[0] || '\\t'\n\t);\n};\n\nBundle.prototype.indent = function indent (indentStr) {\n\t\tvar this$1 = this;\n\n\tif (!arguments.length) {\n\t\tindentStr = this.getIndentString();\n\t}\n\n\tif (indentStr === '') { return this; } // noop\n\n\tvar trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\tthis.sources.forEach(function (source, i) {\n\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\tvar indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\tsource.content.indent(indentStr, {\n\t\t\texclude: source.indentExclusionRanges,\n\t\t\tindentStart: indentStart //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t});\n\n\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t});\n\n\tif (this.intro) {\n\t\tthis.intro =\n\t\t\tindentStr +\n\t\t\tthis.intro.replace(/^[^\\n]/gm, function (match, index) {\n\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t});\n\t}\n\n\treturn this;\n};\n\nBundle.prototype.prepend = function prepend (str) {\n\tthis.intro = str + this.intro;\n\treturn this;\n};\n\nBundle.prototype.toString = function toString () {\n\t\tvar this$1 = this;\n\n\tvar body = this.sources\n\t\t.map(function (source, i) {\n\t\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\t\tvar str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\treturn str;\n\t\t})\n\t\t.join('');\n\n\treturn this.intro + body;\n};\n\nBundle.prototype.isEmpty = function isEmpty () {\n\tif (this.intro.length && this.intro.trim())\n\t\t{ return false; }\n\tif (this.sources.some(function (source) { return !source.content.isEmpty(); }))\n\t\t{ return false; }\n\treturn true;\n};\n\nBundle.prototype.length = function length () {\n\treturn this.sources.reduce(function (length, source) { return length + source.content.length(); }, this.intro.length);\n};\n\nBundle.prototype.trimLines = function trimLines () {\n\treturn this.trim('[\\\\r\\\\n]');\n};\n\nBundle.prototype.trim = function trim (charType) {\n\treturn this.trimStart(charType).trimEnd(charType);\n};\n\nBundle.prototype.trimStart = function trimStart (charType) {\n\tvar rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\tthis.intro = this.intro.replace(rx, '');\n\n\tif (!this.intro) {\n\t\tvar source;\n\t\tvar i = 0;\n\n\t\tdo {\n\t\t\tsource = this.sources[i++];\n\t\t\tif (!source) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimStartAborted(charType));\n\t}\n\n\treturn this;\n};\n\nBundle.prototype.trimEnd = function trimEnd (charType) {\n\tvar rx = new RegExp((charType || '\\\\s') + '+$');\n\n\tvar source;\n\tvar i = this.sources.length - 1;\n\n\tdo {\n\t\tsource = this.sources[i--];\n\t\tif (!source) {\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tbreak;\n\t\t}\n\t} while (!source.content.trimEndAborted(charType));\n\n\treturn this;\n};\n\nexport default MagicString;\nexport { Bundle, SourceMap };\n//# sourceMappingURL=magic-string.es.js.map\n","'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n","module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"ecma\",\"es\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/mrb-consumer+xml\":[\"*xdf\"],\"application/mrb-publish+xml\":[\"*xdf\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"*xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-error+xml\":[\"xer\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'));\n","import path from 'path'\nimport { parse as parseUrl } from 'url'\nimport fs, { promises as fsp } from 'fs'\nimport mime from 'mime/lite'\nimport { Plugin } from '../plugin'\nimport { ResolvedConfig } from '../config'\nimport { cleanUrl } from '../utils'\nimport { FS_PREFIX } from '../constants'\nimport { OutputOptions, PluginContext, RenderedChunk } from 'rollup'\nimport MagicString from 'magic-string'\nimport { createHash } from 'crypto'\nimport { normalizePath } from '../utils'\n\nexport const assetUrlRE = /__VITE_ASSET__([a-z\\d]{8})__(?:\\$_(.*?)__)?/g\n\n// urls in JS must be quoted as strings, so when replacing them we need\n// a different regex\nconst assetUrlQuotedRE = /\"__VITE_ASSET__([a-z\\d]{8})__(?:\\$_(.*?)__)?\"/g\n\nconst rawRE = /(\\?|&)raw(?:&|$)/\nconst urlRE = /(\\?|&)url(?:&|$)/\n\nexport const chunkToEmittedAssetsMap = new WeakMap>()\n\nconst assetCache = new WeakMap>()\n\nconst assetHashToFilenameMap = new WeakMap<\n ResolvedConfig,\n Map\n>()\n// save hashes of the files that has been emitted in build watch\nconst emittedHashMap = new WeakMap>()\n\n/**\n * Also supports loading plain strings with import text from './foo.txt?raw'\n */\nexport function assetPlugin(config: ResolvedConfig): Plugin {\n // assetHashToFilenameMap initialization in buildStart causes getAssetFilename to return undefined\n assetHashToFilenameMap.set(config, new Map())\n return {\n name: 'vite:asset',\n\n buildStart() {\n assetCache.set(config, new Map())\n emittedHashMap.set(config, new Set())\n },\n\n resolveId(id) {\n if (!config.assetsInclude(cleanUrl(id))) {\n return\n }\n // imports to absolute urls pointing to files in /public\n // will fail to resolve in the main resolver. handle them here.\n const publicFile = checkPublicFile(id, config)\n if (publicFile) {\n return id\n }\n },\n\n async load(id) {\n if (id.startsWith('\\0')) {\n // Rollup convention, this id should be handled by the\n // plugin that marked it with \\0\n return\n }\n\n // raw requests, read from disk\n if (rawRE.test(id)) {\n const file = checkPublicFile(id, config) || cleanUrl(id)\n // raw query, read file and return as string\n return `export default ${JSON.stringify(\n await fsp.readFile(file, 'utf-8')\n )}`\n }\n\n if (!config.assetsInclude(cleanUrl(id)) && !urlRE.test(id)) {\n return\n }\n\n id = id.replace(urlRE, '$1').replace(/[\\?&]$/, '')\n const url = await fileToUrl(id, config, this)\n return `export default ${JSON.stringify(url)}`\n },\n\n renderChunk(code, chunk) {\n let match: RegExpExecArray | null\n let s: MagicString | undefined\n while ((match = assetUrlQuotedRE.exec(code))) {\n s = s || (s = new MagicString(code))\n const [full, hash, postfix = ''] = match\n // some internal plugins may still need to emit chunks (e.g. worker) so\n // fallback to this.getFileName for that.\n const file = getAssetFilename(hash, config) || this.getFileName(hash)\n registerAssetToChunk(chunk, file)\n const outputFilepath = config.base + file + postfix\n s.overwrite(\n match.index,\n match.index + full.length,\n JSON.stringify(outputFilepath)\n )\n }\n if (s) {\n return {\n code: s.toString(),\n map: config.build.sourcemap ? s.generateMap({ hires: true }) : null\n }\n } else {\n return null\n }\n },\n\n generateBundle(_, bundle) {\n // do not emit assets for SSR build\n if (config.command === 'build' && config.build.ssr) {\n for (const file in bundle) {\n if (\n bundle[file].type === 'asset' &&\n !file.includes('ssr-manifest.json')\n ) {\n delete bundle[file]\n }\n }\n }\n }\n }\n}\n\nexport function registerAssetToChunk(chunk: RenderedChunk, file: string): void {\n let emitted = chunkToEmittedAssetsMap.get(chunk)\n if (!emitted) {\n emitted = new Set()\n chunkToEmittedAssetsMap.set(chunk, emitted)\n }\n emitted.add(cleanUrl(file))\n}\n\nexport function checkPublicFile(\n url: string,\n { publicDir }: ResolvedConfig\n): string | undefined {\n // note if the file is in /public, the resolver would have returned it\n // as-is so it's not going to be a fully resolved path.\n if (!publicDir || !url.startsWith('/')) {\n return\n }\n const publicFile = path.join(publicDir, cleanUrl(url))\n if (fs.existsSync(publicFile)) {\n return publicFile\n } else {\n return\n }\n}\n\nexport function fileToUrl(\n id: string,\n config: ResolvedConfig,\n ctx: PluginContext\n): string | Promise {\n if (config.command === 'serve') {\n return fileToDevUrl(id, config)\n } else {\n return fileToBuiltUrl(id, config, ctx)\n }\n}\n\nfunction fileToDevUrl(id: string, config: ResolvedConfig) {\n let rtn: string\n if (checkPublicFile(id, config)) {\n // in public dir, keep the url as-is\n rtn = id\n } else if (id.startsWith(config.root)) {\n // in project root, infer short public path\n rtn = '/' + path.posix.relative(config.root, id)\n } else {\n // outside of project root, use absolute fs path\n // (this is special handled by the serve static middleware\n rtn = path.posix.join(FS_PREFIX + id)\n }\n const origin = config.server?.origin ?? ''\n return origin + config.base + rtn.replace(/^\\//, '')\n}\n\nexport function getAssetFilename(\n hash: string,\n config: ResolvedConfig\n): string | undefined {\n return assetHashToFilenameMap.get(config)?.get(hash)\n}\n\n/**\n * converts the source filepath of the asset to the output filename based on the assetFileNames option. \\\n * this function imitates the behavior of rollup.js. \\\n * https://rollupjs.org/guide/en/#outputassetfilenames\n *\n * @example\n * ```ts\n * const content = Buffer.from('text');\n * const fileName = assetFileNamesToFileName(\n * 'assets/[name].[hash][extname]',\n * '/path/to/file.txt',\n * getAssetHash(content),\n * content\n * )\n * // fileName: 'assets/file.982d9e3e.txt'\n * ```\n *\n * @param assetFileNames filename pattern. e.g. `'assets/[name].[hash][extname]'`\n * @param file filepath of the asset\n * @param contentHash hash of the asset. used for `'[hash]'` placeholder\n * @param content content of the asset. passed to `assetFileNames` if `assetFileNames` is a function\n * @returns output filename\n */\nexport function assetFileNamesToFileName(\n assetFileNames: Exclude,\n file: string,\n contentHash: string,\n content: string | Buffer\n): string {\n const basename = path.basename(file)\n\n // placeholders for `assetFileNames`\n // `hash` is slightly different from the rollup's one\n const extname = path.extname(basename)\n const ext = extname.substr(1)\n const name = basename.slice(0, -extname.length)\n const hash = contentHash\n\n if (typeof assetFileNames === 'function') {\n assetFileNames = assetFileNames({\n name: file,\n source: content,\n type: 'asset'\n })\n if (typeof assetFileNames !== 'string') {\n throw new TypeError('assetFileNames must return a string')\n }\n } else if (typeof assetFileNames !== 'string') {\n throw new TypeError('assetFileNames must be a string or a function')\n }\n\n const fileName = assetFileNames.replace(\n /\\[\\w+\\]/g,\n (placeholder: string): string => {\n switch (placeholder) {\n case '[ext]':\n return ext\n\n case '[extname]':\n return extname\n\n case '[hash]':\n return hash\n\n case '[name]':\n return name\n }\n throw new Error(\n `invalid placeholder ${placeholder} in assetFileNames \"${assetFileNames}\"`\n )\n }\n )\n\n return fileName\n}\n\n/**\n * Register an asset to be emitted as part of the bundle (if necessary)\n * and returns the resolved public URL\n */\nasync function fileToBuiltUrl(\n id: string,\n config: ResolvedConfig,\n pluginContext: PluginContext,\n skipPublicCheck = false\n): Promise {\n if (!skipPublicCheck && checkPublicFile(id, config)) {\n return config.base + id.slice(1)\n }\n\n const cache = assetCache.get(config)!\n const cached = cache.get(id)\n if (cached) {\n return cached\n }\n\n const file = cleanUrl(id)\n const content = await fsp.readFile(file)\n\n let url: string\n if (\n config.build.lib ||\n (!file.endsWith('.svg') &&\n content.length < Number(config.build.assetsInlineLimit))\n ) {\n // base64 inlined as a string\n url = `data:${mime.getType(file)};base64,${content.toString('base64')}`\n } else {\n // emit as asset\n // rollup supports `import.meta.ROLLUP_FILE_URL_*`, but it generates code\n // that uses runtime url sniffing and it can be verbose when targeting\n // non-module format. It also fails to cascade the asset content change\n // into the chunk's hash, so we have to do our own content hashing here.\n // https://bundlers.tooling.report/hashing/asset-cascade/\n // https://github.com/rollup/rollup/issues/3415\n const map = assetHashToFilenameMap.get(config)!\n const contentHash = getAssetHash(content)\n const { search, hash } = parseUrl(id)\n const postfix = (search || '') + (hash || '')\n const output = config.build?.rollupOptions?.output\n const assetFileNames =\n (output && !Array.isArray(output) ? output.assetFileNames : undefined) ??\n // defaults to '/[name].[hash][extname]'\n // slightly different from rollup's one ('assets/[name]-[hash][extname]')\n path.posix.join(config.build.assetsDir, '[name].[hash][extname]')\n const fileName = assetFileNamesToFileName(\n assetFileNames,\n file,\n contentHash,\n content\n )\n if (!map.has(contentHash)) {\n map.set(contentHash, fileName)\n }\n const emittedSet = emittedHashMap.get(config)!\n if (!emittedSet.has(contentHash)) {\n const name = normalizePath(path.relative(config.root, file))\n pluginContext.emitFile({\n name,\n fileName,\n type: 'asset',\n source: content\n })\n emittedSet.add(contentHash)\n }\n\n url = `__VITE_ASSET__${contentHash}__${postfix ? `$_${postfix}__` : ``}`\n }\n\n cache.set(id, url)\n return url\n}\n\nexport function getAssetHash(content: Buffer): string {\n return createHash('sha256').update(content).digest('hex').slice(0, 8)\n}\n\nexport async function urlToBuiltUrl(\n url: string,\n importer: string,\n config: ResolvedConfig,\n pluginContext: PluginContext\n): Promise {\n if (checkPublicFile(url, config)) {\n return config.base + url.slice(1)\n }\n const file = url.startsWith('/')\n ? path.join(config.root, url)\n : path.join(path.dirname(importer), url)\n return fileToBuiltUrl(\n file,\n config,\n pluginContext,\n // skip public check since we just did it above\n true\n )\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitWhen = exports.flatten = void 0;\nfunction flatten(items) {\n return items.reduce((collection, item) => [].concat(collection, item), []);\n}\nexports.flatten = flatten;\nfunction splitWhen(items, predicate) {\n const result = [[]];\n let groupIndex = 0;\n for (const item of items) {\n if (predicate(item)) {\n groupIndex++;\n result[groupIndex] = [];\n }\n else {\n result[groupIndex].push(item);\n }\n }\n return result;\n}\nexports.splitWhen = splitWhen;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEnoentCodeError = void 0;\nfunction isEnoentCodeError(error) {\n return error.code === 'ENOENT';\n}\nexports.isEnoentCodeError = isEnoentCodeError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0;\nconst path = require(\"path\");\nconst LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\\\\nconst UNESCAPED_GLOB_SYMBOLS_RE = /(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;\n/**\n * Designed to work only with simple paths: `dir\\\\file`.\n */\nfunction unixify(filepath) {\n return filepath.replace(/\\\\/g, '/');\n}\nexports.unixify = unixify;\nfunction makeAbsolute(cwd, filepath) {\n return path.resolve(cwd, filepath);\n}\nexports.makeAbsolute = makeAbsolute;\nfunction escape(pattern) {\n return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\\\$2');\n}\nexports.escape = escape;\nfunction removeLeadingDotSegment(entry) {\n // We do not use `startsWith` because this is 10x slower than current implementation for some cases.\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n if (entry.charAt(0) === '.') {\n const secondCharactery = entry.charAt(1);\n if (secondCharactery === '/' || secondCharactery === '\\\\') {\n return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT);\n }\n }\n return entry;\n}\nexports.removeLeadingDotSegment = removeLeadingDotSegment;\n","/*!\n * is-extglob \n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictRegex = /\\\\(.)|(^!|\\*|[\\].+)]\\?|\\[[^\\\\\\]]+\\]|\\{[^\\\\}]+\\}|\\(\\?[:!=][^\\\\)]+\\)|\\([^|]+\\|[^\\\\)]+\\))/;\nvar relaxedRegex = /\\\\(.)|(^!|[*?{}()[\\]]|\\(\\?)/;\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var regex = strictRegex;\n var match;\n\n // optionally relax regex\n if (options && options.strict === false) {\n regex = relaxedRegex;\n }\n\n while ((match = regex.exec(str))) {\n if (match[2]) return true;\n var idx = match.index + match[0].length;\n\n // if an open bracket/brace/paren is escaped,\n // set the index to the next closing character\n var open = match[1];\n var close = open ? chars[open] : null;\n if (open && close) {\n var n = str.indexOf(close, idx);\n if (n !== -1) {\n idx = n + 1;\n }\n }\n\n str = str.slice(idx);\n }\n return false;\n};\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n let node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n let ele = arr[i];\n Array.isArray(ele) ? flat(ele, result) : ele !== void 0 && result.push(ele);\n }\n return result;\n };\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n let stringify = (node, parent = {}) => {\n let invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * is-number \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range \n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","/*!\n * fill-range \n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n let walk = (node, parent = {}) => {\n let invalidBlock = utils.isInvalidBrace(parent);\n let invalidNode = node.invalid === true && options.escapeInvalid === true;\n let invalid = invalidBlock === true || invalidNode === true;\n let prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n if (node.isClose === true) {\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? (prefix + node.value) : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? (prefix + node.value) : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|');\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n let range = fill(...args, { ...options, wrap: false, toRegex: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (let child of node.nodes) {\n output += walk(child, node);\n }\n }\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n let result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (let item of queue) {\n if (Array.isArray(item)) {\n for (let value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele));\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit;\n\n let walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n let args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n let enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n let opts = options || {};\n let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n let ast = { type: 'root', input, nodes: [] };\n let stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n let length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n let memo = {};\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let closed = true;\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n let open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n let brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n let type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n let open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n let siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n let before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n let parent = stack[stack.length - 1];\n let index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (let pattern of input) {\n let result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n output = token.close = `)${rest})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\nconst isEmptyString = val => val === '' || val === './';\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array} `list` List of strings to match.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n patterns = [].concat(patterns);\n list = [].concat(list);\n\n let omit = new Set();\n let keep = new Set();\n let items = new Set();\n let negatives = 0;\n\n let onResult = state => {\n items.add(state.output);\n if (options && options.onResult) {\n options.onResult(state);\n }\n };\n\n for (let i = 0; i < patterns.length; i++) {\n let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n if (negated) negatives++;\n\n for (let item of list) {\n let matched = isMatch(item, true);\n\n let match = negated ? !matched.isMatch : matched.isMatch;\n if (!match) continue;\n\n if (negated) {\n omit.add(matched.output);\n } else {\n omit.delete(matched.output);\n keep.add(matched.output);\n }\n }\n }\n\n let result = negatives === patterns.length ? [...items] : [...keep];\n let matches = result.filter(item => !omit.has(item));\n\n if (options && matches.length === 0) {\n if (options.failglob === true) {\n throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n }\n\n if (options.nonull === true || options.nullglob === true) {\n return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n }\n }\n\n return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n patterns = [].concat(patterns).map(String);\n let result = new Set();\n let items = [];\n\n let onResult = state => {\n if (options.onResult) options.onResult(state);\n items.push(state.output);\n };\n\n let matches = micromatch(list, patterns, { ...options, onResult });\n\n for (let item of items) {\n if (!matches.includes(item)) {\n result.add(item);\n }\n }\n return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n if (Array.isArray(pattern)) {\n return pattern.some(p => micromatch.contains(str, p, options));\n }\n\n if (typeof pattern === 'string') {\n if (isEmptyString(str) || isEmptyString(pattern)) {\n return false;\n }\n\n if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n return true;\n }\n }\n\n return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n if (!utils.isObject(obj)) {\n throw new TypeError('Expected the first argument to be an object');\n }\n let keys = micromatch(Object.keys(obj), patterns, options);\n let res = {};\n for (let key of keys) res[key] = obj[key];\n return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (items.some(item => isMatch(item))) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n let items = [].concat(list);\n\n for (let pattern of [].concat(patterns)) {\n let isMatch = picomatch(String(pattern), options);\n if (!items.every(item => isMatch(item))) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n if (typeof str !== 'string') {\n throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n }\n\n return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n let posix = utils.isWindows(options);\n let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n if (match) {\n return match.slice(1).map(v => v === void 0 ? '' : v);\n }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n let res = [];\n for (let pattern of [].concat(patterns || [])) {\n for (let str of braces(String(pattern), options)) {\n res.push(picomatch.parse(str, options));\n }\n }\n return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n if ((options && options.nobrace === true) || !/\\{.*\\}/.test(pattern)) {\n return [pattern];\n }\n return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\nmodule.exports = micromatch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0;\nconst path = require(\"path\");\nconst globParent = require(\"glob-parent\");\nconst micromatch = require(\"micromatch\");\nconst GLOBSTAR = '**';\nconst ESCAPE_SYMBOL = '\\\\';\nconst COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/;\nconst REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\\[.*]/;\nconst REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\\(.*\\|.*\\)/;\nconst GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\\(.*\\)/;\nconst BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\\.\\.).*}/;\nfunction isStaticPattern(pattern, options = {}) {\n return !isDynamicPattern(pattern, options);\n}\nexports.isStaticPattern = isStaticPattern;\nfunction isDynamicPattern(pattern, options = {}) {\n /**\n * A special case with an empty string is necessary for matching patterns that start with a forward slash.\n * An empty string cannot be a dynamic pattern.\n * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'.\n */\n if (pattern === '') {\n return false;\n }\n /**\n * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check\n * filepath directly (without read directory).\n */\n if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) {\n return true;\n }\n if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) {\n return true;\n }\n return false;\n}\nexports.isDynamicPattern = isDynamicPattern;\nfunction convertToPositivePattern(pattern) {\n return isNegativePattern(pattern) ? pattern.slice(1) : pattern;\n}\nexports.convertToPositivePattern = convertToPositivePattern;\nfunction convertToNegativePattern(pattern) {\n return '!' + pattern;\n}\nexports.convertToNegativePattern = convertToNegativePattern;\nfunction isNegativePattern(pattern) {\n return pattern.startsWith('!') && pattern[1] !== '(';\n}\nexports.isNegativePattern = isNegativePattern;\nfunction isPositivePattern(pattern) {\n return !isNegativePattern(pattern);\n}\nexports.isPositivePattern = isPositivePattern;\nfunction getNegativePatterns(patterns) {\n return patterns.filter(isNegativePattern);\n}\nexports.getNegativePatterns = getNegativePatterns;\nfunction getPositivePatterns(patterns) {\n return patterns.filter(isPositivePattern);\n}\nexports.getPositivePatterns = getPositivePatterns;\n/**\n * Returns patterns that can be applied inside the current directory.\n *\n * @example\n * // ['./*', '*', 'a/*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsInsideCurrentDirectory(patterns) {\n return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern));\n}\nexports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory;\n/**\n * Returns patterns to be expanded relative to (outside) the current directory.\n *\n * @example\n * // ['../*', './../*']\n * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*'])\n */\nfunction getPatternsOutsideCurrentDirectory(patterns) {\n return patterns.filter(isPatternRelatedToParentDirectory);\n}\nexports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory;\nfunction isPatternRelatedToParentDirectory(pattern) {\n return pattern.startsWith('..') || pattern.startsWith('./..');\n}\nexports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory;\nfunction getBaseDirectory(pattern) {\n return globParent(pattern, { flipBackslashes: false });\n}\nexports.getBaseDirectory = getBaseDirectory;\nfunction hasGlobStar(pattern) {\n return pattern.includes(GLOBSTAR);\n}\nexports.hasGlobStar = hasGlobStar;\nfunction endsWithSlashGlobStar(pattern) {\n return pattern.endsWith('/' + GLOBSTAR);\n}\nexports.endsWithSlashGlobStar = endsWithSlashGlobStar;\nfunction isAffectDepthOfReadingPattern(pattern) {\n const basename = path.basename(pattern);\n return endsWithSlashGlobStar(pattern) || isStaticPattern(basename);\n}\nexports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;\nfunction expandPatternsWithBraceExpansion(patterns) {\n return patterns.reduce((collection, pattern) => {\n return collection.concat(expandBraceExpansion(pattern));\n }, []);\n}\nexports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion;\nfunction expandBraceExpansion(pattern) {\n return micromatch.braces(pattern, {\n expand: true,\n nodupes: true\n });\n}\nexports.expandBraceExpansion = expandBraceExpansion;\nfunction getPatternParts(pattern, options) {\n let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true }));\n /**\n * The scan method returns an empty array in some cases.\n * See micromatch/picomatch#58 for more details.\n */\n if (parts.length === 0) {\n parts = [pattern];\n }\n /**\n * The scan method does not return an empty part for the pattern with a forward slash.\n * This is another part of micromatch/picomatch#58.\n */\n if (parts[0].startsWith('/')) {\n parts[0] = parts[0].slice(1);\n parts.unshift('');\n }\n return parts;\n}\nexports.getPatternParts = getPatternParts;\nfunction makeRe(pattern, options) {\n return micromatch.makeRe(pattern, options);\n}\nexports.makeRe = makeRe;\nfunction convertPatternsToRe(patterns, options) {\n return patterns.map((pattern) => makeRe(pattern, options));\n}\nexports.convertPatternsToRe = convertPatternsToRe;\nfunction matchAny(entry, patternsRe) {\n return patternsRe.some((patternRe) => patternRe.test(entry));\n}\nexports.matchAny = matchAny;\n","'use strict'\n/*\n * merge2\n * https://github.com/teambition/merge2\n *\n * Copyright (c) 2014-2020 Teambition\n * Licensed under the MIT license.\n */\nconst Stream = require('stream')\nconst PassThrough = Stream.PassThrough\nconst slice = Array.prototype.slice\n\nmodule.exports = merge2\n\nfunction merge2 () {\n const streamsQueue = []\n const args = slice.call(arguments)\n let merging = false\n let options = args[args.length - 1]\n\n if (options && !Array.isArray(options) && options.pipe == null) {\n args.pop()\n } else {\n options = {}\n }\n\n const doEnd = options.end !== false\n const doPipeError = options.pipeError === true\n if (options.objectMode == null) {\n options.objectMode = true\n }\n if (options.highWaterMark == null) {\n options.highWaterMark = 64 * 1024\n }\n const mergedStream = PassThrough(options)\n\n function addStream () {\n for (let i = 0, len = arguments.length; i < len; i++) {\n streamsQueue.push(pauseStreams(arguments[i], options))\n }\n mergeStream()\n return this\n }\n\n function mergeStream () {\n if (merging) {\n return\n }\n merging = true\n\n let streams = streamsQueue.shift()\n if (!streams) {\n process.nextTick(endStream)\n return\n }\n if (!Array.isArray(streams)) {\n streams = [streams]\n }\n\n let pipesCount = streams.length + 1\n\n function next () {\n if (--pipesCount > 0) {\n return\n }\n merging = false\n mergeStream()\n }\n\n function pipe (stream) {\n function onend () {\n stream.removeListener('merge2UnpipeEnd', onend)\n stream.removeListener('end', onend)\n if (doPipeError) {\n stream.removeListener('error', onerror)\n }\n next()\n }\n function onerror (err) {\n mergedStream.emit('error', err)\n }\n // skip ended stream\n if (stream._readableState.endEmitted) {\n return next()\n }\n\n stream.on('merge2UnpipeEnd', onend)\n stream.on('end', onend)\n\n if (doPipeError) {\n stream.on('error', onerror)\n }\n\n stream.pipe(mergedStream, { end: false })\n // compatible for old stream\n stream.resume()\n }\n\n for (let i = 0; i < streams.length; i++) {\n pipe(streams[i])\n }\n\n next()\n }\n\n function endStream () {\n merging = false\n // emit 'queueDrain' when all streams merged.\n mergedStream.emit('queueDrain')\n if (doEnd) {\n mergedStream.end()\n }\n }\n\n mergedStream.setMaxListeners(0)\n mergedStream.add = addStream\n mergedStream.on('unpipe', function (stream) {\n stream.emit('merge2UnpipeEnd')\n })\n\n if (args.length) {\n addStream.apply(null, args)\n }\n return mergedStream\n}\n\n// check and pause streams for pipe.\nfunction pauseStreams (streams, options) {\n if (!Array.isArray(streams)) {\n // Backwards-compat with old-style streams\n if (!streams._readableState && streams.pipe) {\n streams = streams.pipe(PassThrough(options))\n }\n if (!streams._readableState || !streams.pause || !streams.pipe) {\n throw new Error('Only readable stream can be merged.')\n }\n streams.pause()\n } else {\n for (let i = 0, len = streams.length; i < len; i++) {\n streams[i] = pauseStreams(streams[i], options)\n }\n }\n return streams\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nconst merge2 = require(\"merge2\");\nfunction merge(streams) {\n const mergedStream = merge2(streams);\n streams.forEach((stream) => {\n stream.once('error', (error) => mergedStream.emit('error', error));\n });\n mergedStream.once('close', () => propagateCloseEventToSources(streams));\n mergedStream.once('end', () => propagateCloseEventToSources(streams));\n return mergedStream;\n}\nexports.merge = merge;\nfunction propagateCloseEventToSources(streams) {\n streams.forEach((stream) => stream.emit('close'));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = exports.isString = void 0;\nfunction isString(input) {\n return typeof input === 'string';\n}\nexports.isString = isString;\nfunction isEmpty(input) {\n return input === '';\n}\nexports.isEmpty = isEmpty;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0;\nconst array = require(\"./array\");\nexports.array = array;\nconst errno = require(\"./errno\");\nexports.errno = errno;\nconst fs = require(\"./fs\");\nexports.fs = fs;\nconst path = require(\"./path\");\nexports.path = path;\nconst pattern = require(\"./pattern\");\nexports.pattern = pattern;\nconst stream = require(\"./stream\");\nexports.stream = stream;\nconst string = require(\"./string\");\nexports.string = string;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0;\nconst utils = require(\"../utils\");\nfunction generate(patterns, settings) {\n const positivePatterns = getPositivePatterns(patterns);\n const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore);\n const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings));\n const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings));\n const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false);\n const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true);\n return staticTasks.concat(dynamicTasks);\n}\nexports.generate = generate;\n/**\n * Returns tasks grouped by basic pattern directories.\n *\n * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately.\n * This is necessary because directory traversal starts at the base directory and goes deeper.\n */\nfunction convertPatternsToTasks(positive, negative, dynamic) {\n const tasks = [];\n const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive);\n const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive);\n const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory);\n const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory);\n tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic));\n /*\n * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory\n * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest.\n */\n if ('.' in insideCurrentDirectoryGroup) {\n tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic));\n }\n else {\n tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic));\n }\n return tasks;\n}\nexports.convertPatternsToTasks = convertPatternsToTasks;\nfunction getPositivePatterns(patterns) {\n return utils.pattern.getPositivePatterns(patterns);\n}\nexports.getPositivePatterns = getPositivePatterns;\nfunction getNegativePatternsAsPositive(patterns, ignore) {\n const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore);\n const positive = negative.map(utils.pattern.convertToPositivePattern);\n return positive;\n}\nexports.getNegativePatternsAsPositive = getNegativePatternsAsPositive;\nfunction groupPatternsByBaseDirectory(patterns) {\n const group = {};\n return patterns.reduce((collection, pattern) => {\n const base = utils.pattern.getBaseDirectory(pattern);\n if (base in collection) {\n collection[base].push(pattern);\n }\n else {\n collection[base] = [pattern];\n }\n return collection;\n }, group);\n}\nexports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory;\nfunction convertPatternGroupsToTasks(positive, negative, dynamic) {\n return Object.keys(positive).map((base) => {\n return convertPatternGroupToTask(base, positive[base], negative, dynamic);\n });\n}\nexports.convertPatternGroupsToTasks = convertPatternGroupsToTasks;\nfunction convertPatternGroupToTask(base, positive, negative, dynamic) {\n return {\n dynamic,\n positive,\n negative,\n base,\n patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern))\n };\n}\nexports.convertPatternGroupToTask = convertPatternGroupToTask;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings, callback) {\n settings.fs.lstat(path, (lstatError, lstat) => {\n if (lstatError !== null) {\n callFailureCallback(callback, lstatError);\n return;\n }\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n callSuccessCallback(callback, lstat);\n return;\n }\n settings.fs.stat(path, (statError, stat) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n callFailureCallback(callback, statError);\n return;\n }\n callSuccessCallback(callback, lstat);\n return;\n }\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n callSuccessCallback(callback, stat);\n });\n });\n}\nexports.read = read;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.read = void 0;\nfunction read(path, settings) {\n const lstat = settings.fs.lstatSync(path);\n if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) {\n return lstat;\n }\n try {\n const stat = settings.fs.statSync(path);\n if (settings.markSymbolicLink) {\n stat.isSymbolicLink = () => true;\n }\n return stat;\n }\n catch (error) {\n if (!settings.throwErrorOnBrokenSymbolicLink) {\n return lstat;\n }\n throw error;\n }\n}\nexports.read = read;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.statSync = exports.stat = exports.Settings = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction stat(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.stat = stat;\nfunction statSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.statSync = statSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","/*! queue-microtask. MIT License. Feross Aboukhadijeh */\nlet promise\n\nmodule.exports = typeof queueMicrotask === 'function'\n ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global)\n // reuse resolved promise, and allocate it lazily\n : cb => (promise || (promise = Promise.resolve()))\n .then(cb)\n .catch(err => setTimeout(() => { throw err }, 0))\n","/*! run-parallel. MIT License. Feross Aboukhadijeh */\nmodule.exports = runParallel\n\nconst queueMicrotask = require('queue-microtask')\n\nfunction runParallel (tasks, cb) {\n let results, pending, keys\n let isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) queueMicrotask(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = void 0;\nconst NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.');\nif (NODE_PROCESS_VERSION_PARTS[0] === undefined || NODE_PROCESS_VERSION_PARTS[1] === undefined) {\n throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);\n}\nconst MAJOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[0], 10);\nconst MINOR_VERSION = Number.parseInt(NODE_PROCESS_VERSION_PARTS[1], 10);\nconst SUPPORTED_MAJOR_VERSION = 10;\nconst SUPPORTED_MINOR_VERSION = 10;\nconst IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION;\nconst IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION;\n/**\n * IS `true` for Node.js 10.10 and greater.\n */\nexports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDirentFromStats = void 0;\nclass DirentFromStats {\n constructor(name, stats) {\n this.name = name;\n this.isBlockDevice = stats.isBlockDevice.bind(stats);\n this.isCharacterDevice = stats.isCharacterDevice.bind(stats);\n this.isDirectory = stats.isDirectory.bind(stats);\n this.isFIFO = stats.isFIFO.bind(stats);\n this.isFile = stats.isFile.bind(stats);\n this.isSocket = stats.isSocket.bind(stats);\n this.isSymbolicLink = stats.isSymbolicLink.bind(stats);\n }\n}\nfunction createDirentFromStats(name, stats) {\n return new DirentFromStats(name, stats);\n}\nexports.createDirentFromStats = createDirentFromStats;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fs = void 0;\nconst fs = require(\"./fs\");\nexports.fs = fs;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = void 0;\nfunction joinPathSegments(a, b, separator) {\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst rpl = require(\"run-parallel\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings, callback) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n readdirWithFileTypes(directory, settings, callback);\n return;\n }\n readdir(directory, settings, callback);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings, callback) {\n settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const entries = dirents.map((dirent) => ({\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n }));\n if (!settings.followSymbolicLinks) {\n callSuccessCallback(callback, entries);\n return;\n }\n const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings));\n rpl(tasks, (rplError, rplEntries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, rplEntries);\n });\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction makeRplTaskEntry(entry, settings) {\n return (done) => {\n if (!entry.dirent.isSymbolicLink()) {\n done(null, entry);\n return;\n }\n settings.fs.stat(entry.path, (statError, stats) => {\n if (statError !== null) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n done(statError);\n return;\n }\n done(null, entry);\n return;\n }\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n done(null, entry);\n });\n };\n}\nfunction readdir(directory, settings, callback) {\n settings.fs.readdir(directory, (readdirError, names) => {\n if (readdirError !== null) {\n callFailureCallback(callback, readdirError);\n return;\n }\n const tasks = names.map((name) => {\n const path = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n return (done) => {\n fsStat.stat(path, settings.fsStatSettings, (error, stats) => {\n if (error !== null) {\n done(error);\n return;\n }\n const entry = {\n name,\n path,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n done(null, entry);\n });\n };\n });\n rpl(tasks, (rplError, entries) => {\n if (rplError !== null) {\n callFailureCallback(callback, rplError);\n return;\n }\n callSuccessCallback(callback, entries);\n });\n });\n}\nexports.readdir = readdir;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, result) {\n callback(null, result);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readdir = exports.readdirWithFileTypes = exports.read = void 0;\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst constants_1 = require(\"../constants\");\nconst utils = require(\"../utils\");\nconst common = require(\"./common\");\nfunction read(directory, settings) {\n if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {\n return readdirWithFileTypes(directory, settings);\n }\n return readdir(directory, settings);\n}\nexports.read = read;\nfunction readdirWithFileTypes(directory, settings) {\n const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });\n return dirents.map((dirent) => {\n const entry = {\n dirent,\n name: dirent.name,\n path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)\n };\n if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {\n try {\n const stats = settings.fs.statSync(entry.path);\n entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);\n }\n catch (error) {\n if (settings.throwErrorOnBrokenSymbolicLink) {\n throw error;\n }\n }\n }\n return entry;\n });\n}\nexports.readdirWithFileTypes = readdirWithFileTypes;\nfunction readdir(directory, settings) {\n const names = settings.fs.readdirSync(directory);\n return names.map((name) => {\n const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);\n const stats = fsStat.statSync(entryPath, settings.fsStatSettings);\n const entry = {\n name,\n path: entryPath,\n dirent: utils.fs.createDirentFromStats(name, stats)\n };\n if (settings.stats) {\n entry.stats = stats;\n }\n return entry;\n });\n}\nexports.readdir = readdir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nexports.FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n stat: fs.stat,\n lstatSync: fs.lstatSync,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nfunction createFileSystemAdapter(fsMethods) {\n if (fsMethods === undefined) {\n return exports.FILE_SYSTEM_ADAPTER;\n }\n return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);\n}\nexports.createFileSystemAdapter = createFileSystemAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fs = require(\"./adapters/fs\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false);\n this.fs = fs.createFileSystemAdapter(this._options.fs);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.stats = this._getValue(this._options.stats, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true);\n this.fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this.followSymbolicLinks,\n fs: this.fs,\n throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.scandirSync = exports.scandir = void 0;\nconst async = require(\"./providers/async\");\nconst sync = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction scandir(path, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n async.read(path, getSettings(), optionsOrSettingsOrCallback);\n return;\n }\n async.read(path, getSettings(optionsOrSettingsOrCallback), callback);\n}\nexports.scandir = scandir;\nfunction scandirSync(path, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n return sync.read(path, settings);\n}\nexports.scandirSync = scandirSync;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","'use strict'\n\nfunction reusify (Constructor) {\n var head = new Constructor()\n var tail = head\n\n function get () {\n var current = head\n\n if (current.next) {\n head = current.next\n } else {\n head = new Constructor()\n tail = head\n }\n\n current.next = null\n\n return current\n }\n\n function release (obj) {\n tail.next = obj\n tail = obj\n }\n\n return {\n get: get,\n release: release\n }\n}\n\nmodule.exports = reusify\n","'use strict'\n\n/* eslint-disable no-var */\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n if (concurrency < 1) {\n throw new Error('fastqueue concurrency must be greater than 1')\n }\n\n var cache = reusify(Task)\n var queueHead = null\n var queueTail = null\n var _running = 0\n var errorHandler = null\n\n var self = {\n push: push,\n drain: noop,\n saturated: noop,\n pause: pause,\n paused: false,\n concurrency: concurrency,\n running: running,\n resume: resume,\n idle: idle,\n length: length,\n getQueue: getQueue,\n unshift: unshift,\n empty: noop,\n kill: kill,\n killAndDrain: killAndDrain,\n error: error\n }\n\n return self\n\n function running () {\n return _running\n }\n\n function pause () {\n self.paused = true\n }\n\n function length () {\n var current = queueHead\n var counter = 0\n\n while (current) {\n current = current.next\n counter++\n }\n\n return counter\n }\n\n function getQueue () {\n var current = queueHead\n var tasks = []\n\n while (current) {\n tasks.push(current.value)\n current = current.next\n }\n\n return tasks\n }\n\n function resume () {\n if (!self.paused) return\n self.paused = false\n for (var i = 0; i < self.concurrency; i++) {\n _running++\n release()\n }\n }\n\n function idle () {\n return _running === 0 && self.length() === 0\n }\n\n function push (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n current.errorHandler = errorHandler\n\n if (_running === self.concurrency || self.paused) {\n if (queueTail) {\n queueTail.next = current\n queueTail = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function unshift (value, done) {\n var current = cache.get()\n\n current.context = context\n current.release = release\n current.value = value\n current.callback = done || noop\n\n if (_running === self.concurrency || self.paused) {\n if (queueHead) {\n current.next = queueHead\n queueHead = current\n } else {\n queueHead = current\n queueTail = current\n self.saturated()\n }\n } else {\n _running++\n worker.call(context, current.value, current.worked)\n }\n }\n\n function release (holder) {\n if (holder) {\n cache.release(holder)\n }\n var next = queueHead\n if (next) {\n if (!self.paused) {\n if (queueTail === queueHead) {\n queueTail = null\n }\n queueHead = next.next\n next.next = null\n worker.call(context, next.value, next.worked)\n if (queueTail === null) {\n self.empty()\n }\n } else {\n _running--\n }\n } else if (--_running === 0) {\n self.drain()\n }\n }\n\n function kill () {\n queueHead = null\n queueTail = null\n self.drain = noop\n }\n\n function killAndDrain () {\n queueHead = null\n queueTail = null\n self.drain()\n self.drain = noop\n }\n\n function error (handler) {\n errorHandler = handler\n }\n}\n\nfunction noop () {}\n\nfunction Task () {\n this.value = null\n this.callback = noop\n this.next = null\n this.release = noop\n this.context = null\n this.errorHandler = null\n\n var self = this\n\n this.worked = function worked (err, result) {\n var callback = self.callback\n var errorHandler = self.errorHandler\n var val = self.value\n self.value = null\n self.callback = noop\n if (self.errorHandler) {\n errorHandler(err, val)\n }\n callback.call(self.context, err, result)\n self.release(self)\n }\n}\n\nfunction queueAsPromised (context, worker, concurrency) {\n if (typeof context === 'function') {\n concurrency = worker\n worker = context\n context = null\n }\n\n function asyncWrapper (arg, cb) {\n worker.call(this, arg)\n .then(function (res) {\n cb(null, res)\n }, cb)\n }\n\n var queue = fastqueue(context, asyncWrapper, concurrency)\n\n var pushCb = queue.push\n var unshiftCb = queue.unshift\n\n queue.push = push\n queue.unshift = unshift\n queue.drained = drained\n\n return queue\n\n function push (value) {\n var p = new Promise(function (resolve, reject) {\n pushCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function unshift (value) {\n var p = new Promise(function (resolve, reject) {\n unshiftCb(value, function (err, result) {\n if (err) {\n reject(err)\n return\n }\n resolve(result)\n })\n })\n\n // Let's fork the promise chain to\n // make the error bubble up to the user but\n // not lead to a unhandledRejection\n p.catch(noop)\n\n return p\n }\n\n function drained () {\n var previousDrain = queue.drain\n\n var p = new Promise(function (resolve) {\n queue.drain = function () {\n previousDrain()\n resolve()\n }\n })\n\n return p\n }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinPathSegments = exports.replacePathSegmentSeparator = exports.isAppliedFilter = exports.isFatalError = void 0;\nfunction isFatalError(settings, error) {\n if (settings.errorFilter === null) {\n return true;\n }\n return !settings.errorFilter(error);\n}\nexports.isFatalError = isFatalError;\nfunction isAppliedFilter(filter, value) {\n return filter === null || filter(value);\n}\nexports.isAppliedFilter = isAppliedFilter;\nfunction replacePathSegmentSeparator(filepath, separator) {\n return filepath.split(/[/\\\\]/).join(separator);\n}\nexports.replacePathSegmentSeparator = replacePathSegmentSeparator;\nfunction joinPathSegments(a, b, separator) {\n if (a === '') {\n return b;\n }\n /**\n * The correct handling of cases when the first segment is a root (`/`, `C:/`) or UNC path (`//?/C:/`).\n */\n if (a.endsWith(separator)) {\n return a + b;\n }\n return a + separator + b;\n}\nexports.joinPathSegments = joinPathSegments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst common = require(\"./common\");\nclass Reader {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator);\n }\n}\nexports.default = Reader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst fastq = require(\"fastq\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass AsyncReader extends reader_1.default {\n constructor(_root, _settings) {\n super(_root, _settings);\n this._settings = _settings;\n this._scandir = fsScandir.scandir;\n this._emitter = new events_1.EventEmitter();\n this._queue = fastq(this._worker.bind(this), this._settings.concurrency);\n this._isFatalError = false;\n this._isDestroyed = false;\n this._queue.drain = () => {\n if (!this._isFatalError) {\n this._emitter.emit('end');\n }\n };\n }\n read() {\n this._isFatalError = false;\n this._isDestroyed = false;\n setImmediate(() => {\n this._pushToQueue(this._root, this._settings.basePath);\n });\n return this._emitter;\n }\n get isDestroyed() {\n return this._isDestroyed;\n }\n destroy() {\n if (this._isDestroyed) {\n throw new Error('The reader is already destroyed');\n }\n this._isDestroyed = true;\n this._queue.killAndDrain();\n }\n onEntry(callback) {\n this._emitter.on('entry', callback);\n }\n onError(callback) {\n this._emitter.once('error', callback);\n }\n onEnd(callback) {\n this._emitter.once('end', callback);\n }\n _pushToQueue(directory, base) {\n const queueItem = { directory, base };\n this._queue.push(queueItem, (error) => {\n if (error !== null) {\n this._handleError(error);\n }\n });\n }\n _worker(item, done) {\n this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => {\n if (error !== null) {\n done(error, undefined);\n return;\n }\n for (const entry of entries) {\n this._handleEntry(entry, item.base);\n }\n done(null, undefined);\n });\n }\n _handleError(error) {\n if (this._isDestroyed || !common.isFatalError(this._settings, error)) {\n return;\n }\n this._isFatalError = true;\n this._isDestroyed = true;\n this._emitter.emit('error', error);\n }\n _handleEntry(entry, base) {\n if (this._isDestroyed || this._isFatalError) {\n return;\n }\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._emitEntry(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _emitEntry(entry) {\n this._emitter.emit('entry', entry);\n }\n}\nexports.default = AsyncReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_1 = require(\"../readers/async\");\nclass AsyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._storage = [];\n }\n read(callback) {\n this._reader.onError((error) => {\n callFailureCallback(callback, error);\n });\n this._reader.onEntry((entry) => {\n this._storage.push(entry);\n });\n this._reader.onEnd(() => {\n callSuccessCallback(callback, this._storage);\n });\n this._reader.read();\n }\n}\nexports.default = AsyncProvider;\nfunction callFailureCallback(callback, error) {\n callback(error);\n}\nfunction callSuccessCallback(callback, entries) {\n callback(null, entries);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst async_1 = require(\"../readers/async\");\nclass StreamProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new async_1.default(this._root, this._settings);\n this._stream = new stream_1.Readable({\n objectMode: true,\n read: () => { },\n destroy: () => {\n if (!this._reader.isDestroyed) {\n this._reader.destroy();\n }\n }\n });\n }\n read() {\n this._reader.onError((error) => {\n this._stream.emit('error', error);\n });\n this._reader.onEntry((entry) => {\n this._stream.push(entry);\n });\n this._reader.onEnd(() => {\n this._stream.push(null);\n });\n this._reader.read();\n return this._stream;\n }\n}\nexports.default = StreamProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nconst common = require(\"./common\");\nconst reader_1 = require(\"./reader\");\nclass SyncReader extends reader_1.default {\n constructor() {\n super(...arguments);\n this._scandir = fsScandir.scandirSync;\n this._storage = [];\n this._queue = new Set();\n }\n read() {\n this._pushToQueue(this._root, this._settings.basePath);\n this._handleQueue();\n return this._storage;\n }\n _pushToQueue(directory, base) {\n this._queue.add({ directory, base });\n }\n _handleQueue() {\n for (const item of this._queue.values()) {\n this._handleDirectory(item.directory, item.base);\n }\n }\n _handleDirectory(directory, base) {\n try {\n const entries = this._scandir(directory, this._settings.fsScandirSettings);\n for (const entry of entries) {\n this._handleEntry(entry, base);\n }\n }\n catch (error) {\n this._handleError(error);\n }\n }\n _handleError(error) {\n if (!common.isFatalError(this._settings, error)) {\n return;\n }\n throw error;\n }\n _handleEntry(entry, base) {\n const fullpath = entry.path;\n if (base !== undefined) {\n entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator);\n }\n if (common.isAppliedFilter(this._settings.entryFilter, entry)) {\n this._pushToStorage(entry);\n }\n if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) {\n this._pushToQueue(fullpath, base === undefined ? undefined : entry.path);\n }\n }\n _pushToStorage(entry) {\n this._storage.push(entry);\n }\n}\nexports.default = SyncReader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nclass SyncProvider {\n constructor(_root, _settings) {\n this._root = _root;\n this._settings = _settings;\n this._reader = new sync_1.default(this._root, this._settings);\n }\n read() {\n return this._reader.read();\n }\n}\nexports.default = SyncProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsScandir = require(\"@nodelib/fs.scandir\");\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.basePath = this._getValue(this._options.basePath, undefined);\n this.concurrency = this._getValue(this._options.concurrency, Number.POSITIVE_INFINITY);\n this.deepFilter = this._getValue(this._options.deepFilter, null);\n this.entryFilter = this._getValue(this._options.entryFilter, null);\n this.errorFilter = this._getValue(this._options.errorFilter, null);\n this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep);\n this.fsScandirSettings = new fsScandir.Settings({\n followSymbolicLinks: this._options.followSymbolicLinks,\n fs: this._options.fs,\n pathSegmentSeparator: this._options.pathSegmentSeparator,\n stats: this._options.stats,\n throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink\n });\n }\n _getValue(option, value) {\n return option !== null && option !== void 0 ? option : value;\n }\n}\nexports.default = Settings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Settings = exports.walkStream = exports.walkSync = exports.walk = void 0;\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nexports.Settings = settings_1.default;\nfunction walk(directory, optionsOrSettingsOrCallback, callback) {\n if (typeof optionsOrSettingsOrCallback === 'function') {\n new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback);\n return;\n }\n new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback);\n}\nexports.walk = walk;\nfunction walkSync(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new sync_1.default(directory, settings);\n return provider.read();\n}\nexports.walkSync = walkSync;\nfunction walkStream(directory, optionsOrSettings) {\n const settings = getSettings(optionsOrSettings);\n const provider = new stream_1.default(directory, settings);\n return provider.read();\n}\nexports.walkStream = walkStream;\nfunction getSettings(settingsOrOptions = {}) {\n if (settingsOrOptions instanceof settings_1.default) {\n return settingsOrOptions;\n }\n return new settings_1.default(settingsOrOptions);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst utils = require(\"../utils\");\nclass Reader {\n constructor(_settings) {\n this._settings = _settings;\n this._fsStatSettings = new fsStat.Settings({\n followSymbolicLink: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks\n });\n }\n _getFullEntryPath(filepath) {\n return path.resolve(this._settings.cwd, filepath);\n }\n _makeEntry(stats, pattern) {\n const entry = {\n name: pattern,\n path: pattern,\n dirent: utils.fs.createDirentFromStats(pattern, stats)\n };\n if (this._settings.stats) {\n entry.stats = stats;\n }\n return entry;\n }\n _isFatalError(error) {\n return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;\n }\n}\nexports.default = Reader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderStream extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkStream = fsWalk.walkStream;\n this._stat = fsStat.stat;\n }\n dynamic(root, options) {\n return this._walkStream(root, options);\n }\n static(patterns, options) {\n const filepaths = patterns.map(this._getFullEntryPath, this);\n const stream = new stream_1.PassThrough({ objectMode: true });\n stream._write = (index, _enc, done) => {\n return this._getEntry(filepaths[index], patterns[index], options)\n .then((entry) => {\n if (entry !== null && options.entryFilter(entry)) {\n stream.push(entry);\n }\n if (index === filepaths.length - 1) {\n stream.end();\n }\n done();\n })\n .catch(done);\n };\n for (let i = 0; i < filepaths.length; i++) {\n stream.write(i);\n }\n return stream;\n }\n _getEntry(filepath, pattern, options) {\n return this._getStat(filepath)\n .then((stats) => this._makeEntry(stats, pattern))\n .catch((error) => {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n });\n }\n _getStat(filepath) {\n return new Promise((resolve, reject) => {\n this._stat(filepath, this._fsStatSettings, (error, stats) => {\n return error === null ? resolve(stats) : reject(error);\n });\n });\n }\n}\nexports.default = ReaderStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass Matcher {\n constructor(_patterns, _settings, _micromatchOptions) {\n this._patterns = _patterns;\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this._storage = [];\n this._fillStorage();\n }\n _fillStorage() {\n /**\n * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level).\n * So, before expand patterns with brace expansion into separated patterns.\n */\n const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns);\n for (const pattern of patterns) {\n const segments = this._getPatternSegments(pattern);\n const sections = this._splitSegmentsIntoSections(segments);\n this._storage.push({\n complete: sections.length <= 1,\n pattern,\n segments,\n sections\n });\n }\n }\n _getPatternSegments(pattern) {\n const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);\n return parts.map((part) => {\n const dynamic = utils.pattern.isDynamicPattern(part, this._settings);\n if (!dynamic) {\n return {\n dynamic: false,\n pattern: part\n };\n }\n return {\n dynamic: true,\n pattern: part,\n patternRe: utils.pattern.makeRe(part, this._micromatchOptions)\n };\n });\n }\n _splitSegmentsIntoSections(segments) {\n return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));\n }\n}\nexports.default = Matcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst matcher_1 = require(\"./matcher\");\nclass PartialMatcher extends matcher_1.default {\n match(filepath) {\n const parts = filepath.split('/');\n const levels = parts.length;\n const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels);\n for (const pattern of patterns) {\n const section = pattern.sections[0];\n /**\n * In this case, the pattern has a globstar and we must read all directories unconditionally,\n * but only if the level has reached the end of the first group.\n *\n * fixtures/{a,b}/**\n * ^ true/false ^ always true\n */\n if (!pattern.complete && levels > section.length) {\n return true;\n }\n const match = parts.every((part, index) => {\n const segment = pattern.segments[index];\n if (segment.dynamic && segment.patternRe.test(part)) {\n return true;\n }\n if (!segment.dynamic && segment.pattern === part) {\n return true;\n }\n return false;\n });\n if (match) {\n return true;\n }\n }\n return false;\n }\n}\nexports.default = PartialMatcher;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nconst partial_1 = require(\"../matchers/partial\");\nclass DeepFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n }\n getFilter(basePath, positive, negative) {\n const matcher = this._getMatcher(positive);\n const negativeRe = this._getNegativePatternsRe(negative);\n return (entry) => this._filter(basePath, entry, matcher, negativeRe);\n }\n _getMatcher(patterns) {\n return new partial_1.default(patterns, this._settings, this._micromatchOptions);\n }\n _getNegativePatternsRe(patterns) {\n const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern);\n return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions);\n }\n _filter(basePath, entry, matcher, negativeRe) {\n if (this._isSkippedByDeep(basePath, entry.path)) {\n return false;\n }\n if (this._isSkippedSymbolicLink(entry)) {\n return false;\n }\n const filepath = utils.path.removeLeadingDotSegment(entry.path);\n if (this._isSkippedByPositivePatterns(filepath, matcher)) {\n return false;\n }\n return this._isSkippedByNegativePatterns(filepath, negativeRe);\n }\n _isSkippedByDeep(basePath, entryPath) {\n /**\n * Avoid unnecessary depth calculations when it doesn't matter.\n */\n if (this._settings.deep === Infinity) {\n return false;\n }\n return this._getEntryLevel(basePath, entryPath) >= this._settings.deep;\n }\n _getEntryLevel(basePath, entryPath) {\n const entryPathDepth = entryPath.split('/').length;\n if (basePath === '') {\n return entryPathDepth;\n }\n const basePathDepth = basePath.split('/').length;\n return entryPathDepth - basePathDepth;\n }\n _isSkippedSymbolicLink(entry) {\n return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink();\n }\n _isSkippedByPositivePatterns(entryPath, matcher) {\n return !this._settings.baseNameMatch && !matcher.match(entryPath);\n }\n _isSkippedByNegativePatterns(entryPath, patternsRe) {\n return !utils.pattern.matchAny(entryPath, patternsRe);\n }\n}\nexports.default = DeepFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryFilter {\n constructor(_settings, _micromatchOptions) {\n this._settings = _settings;\n this._micromatchOptions = _micromatchOptions;\n this.index = new Map();\n }\n getFilter(positive, negative) {\n const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions);\n const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions);\n return (entry) => this._filter(entry, positiveRe, negativeRe);\n }\n _filter(entry, positiveRe, negativeRe) {\n if (this._settings.unique && this._isDuplicateEntry(entry)) {\n return false;\n }\n if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) {\n return false;\n }\n if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) {\n return false;\n }\n const filepath = this._settings.baseNameMatch ? entry.name : entry.path;\n const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe);\n if (this._settings.unique && isMatched) {\n this._createIndexRecord(entry);\n }\n return isMatched;\n }\n _isDuplicateEntry(entry) {\n return this.index.has(entry.path);\n }\n _createIndexRecord(entry) {\n this.index.set(entry.path, undefined);\n }\n _onlyFileFilter(entry) {\n return this._settings.onlyFiles && !entry.dirent.isFile();\n }\n _onlyDirectoryFilter(entry) {\n return this._settings.onlyDirectories && !entry.dirent.isDirectory();\n }\n _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) {\n if (!this._settings.absolute) {\n return false;\n }\n const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath);\n return utils.pattern.matchAny(fullpath, patternsRe);\n }\n _isMatchToPatterns(entryPath, patternsRe) {\n const filepath = utils.path.removeLeadingDotSegment(entryPath);\n return utils.pattern.matchAny(filepath, patternsRe);\n }\n}\nexports.default = EntryFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass ErrorFilter {\n constructor(_settings) {\n this._settings = _settings;\n }\n getFilter() {\n return (error) => this._isNonFatalError(error);\n }\n _isNonFatalError(error) {\n return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors;\n }\n}\nexports.default = ErrorFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = require(\"../../utils\");\nclass EntryTransformer {\n constructor(_settings) {\n this._settings = _settings;\n }\n getTransformer() {\n return (entry) => this._transform(entry);\n }\n _transform(entry) {\n let filepath = entry.path;\n if (this._settings.absolute) {\n filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);\n filepath = utils.path.unixify(filepath);\n }\n if (this._settings.markDirectories && entry.dirent.isDirectory()) {\n filepath += '/';\n }\n if (!this._settings.objectMode) {\n return filepath;\n }\n return Object.assign(Object.assign({}, entry), { path: filepath });\n }\n}\nexports.default = EntryTransformer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst path = require(\"path\");\nconst deep_1 = require(\"./filters/deep\");\nconst entry_1 = require(\"./filters/entry\");\nconst error_1 = require(\"./filters/error\");\nconst entry_2 = require(\"./transformers/entry\");\nclass Provider {\n constructor(_settings) {\n this._settings = _settings;\n this.errorFilter = new error_1.default(this._settings);\n this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());\n this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());\n this.entryTransformer = new entry_2.default(this._settings);\n }\n _getRootDirectory(task) {\n return path.resolve(this._settings.cwd, task.base);\n }\n _getReaderOptions(task) {\n const basePath = task.base === '.' ? '' : task.base;\n return {\n basePath,\n pathSegmentSeparator: '/',\n concurrency: this._settings.concurrency,\n deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),\n entryFilter: this.entryFilter.getFilter(task.positive, task.negative),\n errorFilter: this.errorFilter.getFilter(),\n followSymbolicLinks: this._settings.followSymbolicLinks,\n fs: this._settings.fs,\n stats: this._settings.stats,\n throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,\n transform: this.entryTransformer.getTransformer()\n };\n }\n _getMicromatchOptions() {\n return {\n dot: this._settings.dot,\n matchBase: this._settings.baseNameMatch,\n nobrace: !this._settings.braceExpansion,\n nocase: !this._settings.caseSensitiveMatch,\n noext: !this._settings.extglob,\n noglobstar: !this._settings.globstar,\n posix: true,\n strictSlashes: false\n };\n }\n}\nexports.default = Provider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"../readers/stream\");\nconst provider_1 = require(\"./provider\");\nclass ProviderAsync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new stream_1.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = [];\n return new Promise((resolve, reject) => {\n const stream = this.api(root, task, options);\n stream.once('error', reject);\n stream.on('data', (entry) => entries.push(options.transform(entry)));\n stream.once('end', () => resolve(entries));\n });\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderAsync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\nconst stream_2 = require(\"../readers/stream\");\nconst provider_1 = require(\"./provider\");\nclass ProviderStream extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new stream_2.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const source = this.api(root, task, options);\n const destination = new stream_1.Readable({ objectMode: true, read: () => { } });\n source\n .once('error', (error) => destination.emit('error', error))\n .on('data', (entry) => destination.emit('data', options.transform(entry)))\n .once('end', () => destination.emit('end'));\n destination\n .once('close', () => source.destroy());\n return destination;\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderStream;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fsStat = require(\"@nodelib/fs.stat\");\nconst fsWalk = require(\"@nodelib/fs.walk\");\nconst reader_1 = require(\"./reader\");\nclass ReaderSync extends reader_1.default {\n constructor() {\n super(...arguments);\n this._walkSync = fsWalk.walkSync;\n this._statSync = fsStat.statSync;\n }\n dynamic(root, options) {\n return this._walkSync(root, options);\n }\n static(patterns, options) {\n const entries = [];\n for (const pattern of patterns) {\n const filepath = this._getFullEntryPath(pattern);\n const entry = this._getEntry(filepath, pattern, options);\n if (entry === null || !options.entryFilter(entry)) {\n continue;\n }\n entries.push(entry);\n }\n return entries;\n }\n _getEntry(filepath, pattern, options) {\n try {\n const stats = this._getStat(filepath);\n return this._makeEntry(stats, pattern);\n }\n catch (error) {\n if (options.errorFilter(error)) {\n return null;\n }\n throw error;\n }\n }\n _getStat(filepath) {\n return this._statSync(filepath, this._fsStatSettings);\n }\n}\nexports.default = ReaderSync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sync_1 = require(\"../readers/sync\");\nconst provider_1 = require(\"./provider\");\nclass ProviderSync extends provider_1.default {\n constructor() {\n super(...arguments);\n this._reader = new sync_1.default(this._settings);\n }\n read(task) {\n const root = this._getRootDirectory(task);\n const options = this._getReaderOptions(task);\n const entries = this.api(root, task, options);\n return entries.map(options.transform);\n }\n api(root, task, options) {\n if (task.dynamic) {\n return this._reader.dynamic(root, options);\n }\n return this._reader.static(task.patterns, options);\n }\n}\nexports.default = ProviderSync;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;\nconst fs = require(\"fs\");\nconst os = require(\"os\");\n/**\n * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.\n * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107\n */\nconst CPU_COUNT = Math.max(os.cpus().length, 1);\nexports.DEFAULT_FILE_SYSTEM_ADAPTER = {\n lstat: fs.lstat,\n lstatSync: fs.lstatSync,\n stat: fs.stat,\n statSync: fs.statSync,\n readdir: fs.readdir,\n readdirSync: fs.readdirSync\n};\nclass Settings {\n constructor(_options = {}) {\n this._options = _options;\n this.absolute = this._getValue(this._options.absolute, false);\n this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);\n this.braceExpansion = this._getValue(this._options.braceExpansion, true);\n this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);\n this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);\n this.cwd = this._getValue(this._options.cwd, process.cwd());\n this.deep = this._getValue(this._options.deep, Infinity);\n this.dot = this._getValue(this._options.dot, false);\n this.extglob = this._getValue(this._options.extglob, true);\n this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);\n this.fs = this._getFileSystemMethods(this._options.fs);\n this.globstar = this._getValue(this._options.globstar, true);\n this.ignore = this._getValue(this._options.ignore, []);\n this.markDirectories = this._getValue(this._options.markDirectories, false);\n this.objectMode = this._getValue(this._options.objectMode, false);\n this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);\n this.onlyFiles = this._getValue(this._options.onlyFiles, true);\n this.stats = this._getValue(this._options.stats, false);\n this.suppressErrors = this._getValue(this._options.suppressErrors, false);\n this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);\n this.unique = this._getValue(this._options.unique, true);\n if (this.onlyDirectories) {\n this.onlyFiles = false;\n }\n if (this.stats) {\n this.objectMode = true;\n }\n }\n _getValue(option, value) {\n return option === undefined ? value : option;\n }\n _getFileSystemMethods(methods = {}) {\n return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);\n }\n}\nexports.default = Settings;\n","\"use strict\";\nconst taskManager = require(\"./managers/tasks\");\nconst async_1 = require(\"./providers/async\");\nconst stream_1 = require(\"./providers/stream\");\nconst sync_1 = require(\"./providers/sync\");\nconst settings_1 = require(\"./settings\");\nconst utils = require(\"./utils\");\nasync function FastGlob(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, async_1.default, options);\n const result = await Promise.all(works);\n return utils.array.flatten(result);\n}\n// https://github.com/typescript-eslint/typescript-eslint/issues/60\n// eslint-disable-next-line no-redeclare\n(function (FastGlob) {\n function sync(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, sync_1.default, options);\n return utils.array.flatten(works);\n }\n FastGlob.sync = sync;\n function stream(source, options) {\n assertPatternsInput(source);\n const works = getWorks(source, stream_1.default, options);\n /**\n * The stream returned by the provider cannot work with an asynchronous iterator.\n * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams.\n * This affects performance (+25%). I don't see best solution right now.\n */\n return utils.stream.merge(works);\n }\n FastGlob.stream = stream;\n function generateTasks(source, options) {\n assertPatternsInput(source);\n const patterns = [].concat(source);\n const settings = new settings_1.default(options);\n return taskManager.generate(patterns, settings);\n }\n FastGlob.generateTasks = generateTasks;\n function isDynamicPattern(source, options) {\n assertPatternsInput(source);\n const settings = new settings_1.default(options);\n return utils.pattern.isDynamicPattern(source, settings);\n }\n FastGlob.isDynamicPattern = isDynamicPattern;\n function escapePath(source) {\n assertPatternsInput(source);\n return utils.path.escape(source);\n }\n FastGlob.escapePath = escapePath;\n})(FastGlob || (FastGlob = {}));\nfunction getWorks(source, _Provider, options) {\n const patterns = [].concat(source);\n const settings = new settings_1.default(options);\n const tasks = taskManager.generate(patterns, settings);\n const provider = new _Provider(settings);\n return tasks.map(provider.read, provider);\n}\nfunction assertPatternsInput(input) {\n const source = [].concat(input);\n const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item));\n if (!isValidSource) {\n throw new TypeError('Patterns must be a string (non empty) or an array of strings');\n }\n}\nmodule.exports = FastGlob;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lilconfigSync = exports.lilconfig = exports.defaultLoaders = void 0;\nconst path = require(\"path\");\nconst fs = require(\"fs\");\nconst os = require(\"os\");\nconst fsReadFileAsync = fs.promises.readFile;\nfunction getDefaultSearchPlaces(name) {\n return [\n 'package.json',\n `.${name}rc.json`,\n `.${name}rc.js`,\n `${name}.config.js`,\n `.${name}rc.cjs`,\n `${name}.config.cjs`,\n ];\n}\nfunction getSearchPaths(startDir, stopDir) {\n return startDir\n .split(path.sep)\n .reduceRight((acc, _, ind, arr) => {\n const currentPath = arr.slice(0, ind + 1).join(path.sep);\n if (!acc.passedStopDir)\n acc.searchPlaces.push(currentPath || path.sep);\n if (currentPath === stopDir)\n acc.passedStopDir = true;\n return acc;\n }, { searchPlaces: [], passedStopDir: false }).searchPlaces;\n}\nexports.defaultLoaders = Object.freeze({\n '.js': require,\n '.json': require,\n '.cjs': require,\n noExt(_, content) {\n return JSON.parse(content);\n },\n});\nfunction getExtDesc(ext) {\n return ext === 'noExt' ? 'files without extensions' : `extension \"${ext}\"`;\n}\nfunction getOptions(name, options = {}) {\n const conf = {\n stopDir: os.homedir(),\n searchPlaces: getDefaultSearchPlaces(name),\n ignoreEmptySearchPlaces: true,\n transform: (x) => x,\n packageProp: [name],\n ...options,\n loaders: { ...exports.defaultLoaders, ...options.loaders },\n };\n conf.searchPlaces.forEach(place => {\n const key = path.extname(place) || 'noExt';\n const loader = conf.loaders[key];\n if (!loader) {\n throw new Error(`No loader specified for ${getExtDesc(key)}, so searchPlaces item \"${place}\" is invalid`);\n }\n if (typeof loader !== 'function') {\n throw new Error(`loader for ${getExtDesc(key)} is not a function (type provided: \"${typeof loader}\"), so searchPlaces item \"${place}\" is invalid`);\n }\n });\n return conf;\n}\nfunction getPackageProp(props, obj) {\n if (typeof props === 'string' && props in obj)\n return obj[props];\n return ((Array.isArray(props) ? props : props.split('.')).reduce((acc, prop) => (acc === undefined ? acc : acc[prop]), obj) || null);\n}\nfunction getSearchItems(searchPlaces, searchPaths) {\n return searchPaths.reduce((acc, searchPath) => {\n searchPlaces.forEach(fileName => acc.push({\n fileName,\n filepath: path.join(searchPath, fileName),\n loaderKey: path.extname(fileName) || 'noExt',\n }));\n return acc;\n }, []);\n}\nfunction validateFilePath(filepath) {\n if (!filepath)\n throw new Error('load must pass a non-empty string');\n}\nfunction validateLoader(loader, ext) {\n if (!loader)\n throw new Error(`No loader specified for extension \"${ext}\"`);\n if (typeof loader !== 'function')\n throw new Error('loader is not a function');\n}\nfunction lilconfig(name, options) {\n const { ignoreEmptySearchPlaces, loaders, packageProp, searchPlaces, stopDir, transform, } = getOptions(name, options);\n return {\n async search(searchFrom = process.cwd()) {\n const searchPaths = getSearchPaths(searchFrom, stopDir);\n const result = {\n config: null,\n filepath: '',\n };\n const searchItems = getSearchItems(searchPlaces, searchPaths);\n for (const { fileName, filepath, loaderKey } of searchItems) {\n try {\n await fs.promises.access(filepath);\n }\n catch (_a) {\n continue;\n }\n const content = String(await fsReadFileAsync(filepath));\n const loader = loaders[loaderKey];\n if (fileName === 'package.json') {\n const pkg = loader(filepath, content);\n const maybeConfig = getPackageProp(packageProp, pkg);\n if (maybeConfig != null) {\n result.config = maybeConfig;\n result.filepath = filepath;\n break;\n }\n continue;\n }\n const isEmpty = content.trim() === '';\n if (isEmpty && ignoreEmptySearchPlaces)\n continue;\n if (isEmpty) {\n result.isEmpty = true;\n result.config = undefined;\n }\n else {\n validateLoader(loader, loaderKey);\n result.config = loader(filepath, content);\n }\n result.filepath = filepath;\n break;\n }\n if (result.filepath === '' && result.config === null)\n return transform(null);\n return transform(result);\n },\n async load(filepath) {\n validateFilePath(filepath);\n const { base, ext } = path.parse(filepath);\n const loaderKey = ext || 'noExt';\n const loader = loaders[loaderKey];\n validateLoader(loader, loaderKey);\n const content = String(await fsReadFileAsync(filepath));\n if (base === 'package.json') {\n const pkg = await loader(filepath, content);\n return transform({\n config: getPackageProp(packageProp, pkg),\n filepath,\n });\n }\n const result = {\n config: null,\n filepath,\n };\n const isEmpty = content.trim() === '';\n if (isEmpty && ignoreEmptySearchPlaces)\n return transform({\n config: undefined,\n filepath,\n isEmpty: true,\n });\n result.config = isEmpty\n ? undefined\n : await loader(filepath, content);\n return transform(isEmpty ? { ...result, isEmpty, config: undefined } : result);\n },\n };\n}\nexports.lilconfig = lilconfig;\nfunction lilconfigSync(name, options) {\n const { ignoreEmptySearchPlaces, loaders, packageProp, searchPlaces, stopDir, transform, } = getOptions(name, options);\n return {\n search(searchFrom = process.cwd()) {\n const searchPaths = getSearchPaths(searchFrom, stopDir);\n const result = {\n config: null,\n filepath: '',\n };\n const searchItems = getSearchItems(searchPlaces, searchPaths);\n for (const { fileName, filepath, loaderKey } of searchItems) {\n try {\n fs.accessSync(filepath);\n }\n catch (_a) {\n continue;\n }\n const loader = loaders[loaderKey];\n const content = String(fs.readFileSync(filepath));\n if (fileName === 'package.json') {\n const pkg = loader(filepath, content);\n const maybeConfig = getPackageProp(packageProp, pkg);\n if (maybeConfig != null) {\n result.config = maybeConfig;\n result.filepath = filepath;\n break;\n }\n continue;\n }\n const isEmpty = content.trim() === '';\n if (isEmpty && ignoreEmptySearchPlaces)\n continue;\n if (isEmpty) {\n result.isEmpty = true;\n result.config = undefined;\n }\n else {\n validateLoader(loader, loaderKey);\n result.config = loader(filepath, content);\n }\n result.filepath = filepath;\n break;\n }\n if (result.filepath === '' && result.config === null)\n return transform(null);\n return transform(result);\n },\n load(filepath) {\n validateFilePath(filepath);\n const { base, ext } = path.parse(filepath);\n const loaderKey = ext || 'noExt';\n const loader = loaders[loaderKey];\n validateLoader(loader, loaderKey);\n const content = String(fs.readFileSync(filepath));\n if (base === 'package.json') {\n const pkg = loader(filepath, content);\n return transform({\n config: getPackageProp(packageProp, pkg),\n filepath,\n });\n }\n const result = {\n config: null,\n filepath,\n };\n const isEmpty = content.trim() === '';\n if (isEmpty && ignoreEmptySearchPlaces)\n return transform({\n filepath,\n config: undefined,\n isEmpty: true,\n });\n result.config = isEmpty ? undefined : loader(filepath, content);\n return transform(isEmpty ? { ...result, isEmpty, config: undefined } : result);\n },\n };\n}\nexports.lilconfigSync = lilconfigSync;\n","'use strict';\n\nconst Char = {\n ANCHOR: '&',\n COMMENT: '#',\n TAG: '!',\n DIRECTIVES_END: '-',\n DOCUMENT_END: '.'\n};\nconst Type = {\n ALIAS: 'ALIAS',\n BLANK_LINE: 'BLANK_LINE',\n BLOCK_FOLDED: 'BLOCK_FOLDED',\n BLOCK_LITERAL: 'BLOCK_LITERAL',\n COMMENT: 'COMMENT',\n DIRECTIVE: 'DIRECTIVE',\n DOCUMENT: 'DOCUMENT',\n FLOW_MAP: 'FLOW_MAP',\n FLOW_SEQ: 'FLOW_SEQ',\n MAP: 'MAP',\n MAP_KEY: 'MAP_KEY',\n MAP_VALUE: 'MAP_VALUE',\n PLAIN: 'PLAIN',\n QUOTE_DOUBLE: 'QUOTE_DOUBLE',\n QUOTE_SINGLE: 'QUOTE_SINGLE',\n SEQ: 'SEQ',\n SEQ_ITEM: 'SEQ_ITEM'\n};\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nconst defaultTags = {\n MAP: 'tag:yaml.org,2002:map',\n SEQ: 'tag:yaml.org,2002:seq',\n STR: 'tag:yaml.org,2002:str'\n};\n\nfunction findLineStarts(src) {\n const ls = [0];\n let offset = src.indexOf('\\n');\n\n while (offset !== -1) {\n offset += 1;\n ls.push(offset);\n offset = src.indexOf('\\n', offset);\n }\n\n return ls;\n}\n\nfunction getSrcInfo(cst) {\n let lineStarts, src;\n\n if (typeof cst === 'string') {\n lineStarts = findLineStarts(cst);\n src = cst;\n } else {\n if (Array.isArray(cst)) cst = cst[0];\n\n if (cst && cst.context) {\n if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);\n lineStarts = cst.lineStarts;\n src = cst.context.src;\n }\n }\n\n return {\n lineStarts,\n src\n };\n}\n/**\n * @typedef {Object} LinePos - One-indexed position in the source\n * @property {number} line\n * @property {number} col\n */\n\n/**\n * Determine the line/col position matching a character offset.\n *\n * Accepts a source string or a CST document as the second parameter. With\n * the latter, starting indices for lines are cached in the document as\n * `lineStarts: number[]`.\n *\n * Returns a one-indexed `{ line, col }` location if found, or\n * `undefined` otherwise.\n *\n * @param {number} offset\n * @param {string|Document|Document[]} cst\n * @returns {?LinePos}\n */\n\n\nfunction getLinePos(offset, cst) {\n if (typeof offset !== 'number' || offset < 0) return null;\n const {\n lineStarts,\n src\n } = getSrcInfo(cst);\n if (!lineStarts || !src || offset > src.length) return null;\n\n for (let i = 0; i < lineStarts.length; ++i) {\n const start = lineStarts[i];\n\n if (offset < start) {\n return {\n line: i,\n col: offset - lineStarts[i - 1] + 1\n };\n }\n\n if (offset === start) return {\n line: i + 1,\n col: 1\n };\n }\n\n const line = lineStarts.length;\n return {\n line,\n col: offset - lineStarts[line - 1] + 1\n };\n}\n/**\n * Get a specified line from the source.\n *\n * Accepts a source string or a CST document as the second parameter. With\n * the latter, starting indices for lines are cached in the document as\n * `lineStarts: number[]`.\n *\n * Returns the line as a string if found, or `null` otherwise.\n *\n * @param {number} line One-indexed line number\n * @param {string|Document|Document[]} cst\n * @returns {?string}\n */\n\nfunction getLine(line, cst) {\n const {\n lineStarts,\n src\n } = getSrcInfo(cst);\n if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;\n const start = lineStarts[line - 1];\n let end = lineStarts[line]; // undefined for last line; that's ok for slice()\n\n while (end && end > start && src[end - 1] === '\\n') --end;\n\n return src.slice(start, end);\n}\n/**\n * Pretty-print the starting line from the source indicated by the range `pos`\n *\n * Trims output to `maxWidth` chars while keeping the starting column visible,\n * using `…` at either end to indicate dropped characters.\n *\n * Returns a two-line string (or `null`) with `\\n` as separator; the second line\n * will hold appropriately indented `^` marks indicating the column range.\n *\n * @param {Object} pos\n * @param {LinePos} pos.start\n * @param {LinePos} [pos.end]\n * @param {string|Document|Document[]*} cst\n * @param {number} [maxWidth=80]\n * @returns {?string}\n */\n\nfunction getPrettyContext({\n start,\n end\n}, cst, maxWidth = 80) {\n let src = getLine(start.line, cst);\n if (!src) return null;\n let {\n col\n } = start;\n\n if (src.length > maxWidth) {\n if (col <= maxWidth - 10) {\n src = src.substr(0, maxWidth - 1) + '…';\n } else {\n const halfWidth = Math.round(maxWidth / 2);\n if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';\n col -= src.length - maxWidth;\n src = '…' + src.substr(1 - maxWidth);\n }\n }\n\n let errLen = 1;\n let errEnd = '';\n\n if (end) {\n if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {\n errLen = end.col - start.col;\n } else {\n errLen = Math.min(src.length + 1, maxWidth) - col;\n errEnd = '…';\n }\n }\n\n const offset = col > 1 ? ' '.repeat(col - 1) : '';\n const err = '^'.repeat(errLen);\n return `${src}\\n${offset}${err}${errEnd}`;\n}\n\nclass Range {\n static copy(orig) {\n return new Range(orig.start, orig.end);\n }\n\n constructor(start, end) {\n this.start = start;\n this.end = end || start;\n }\n\n isEmpty() {\n return typeof this.start !== 'number' || !this.end || this.end <= this.start;\n }\n /**\n * Set `origStart` and `origEnd` to point to the original source range for\n * this node, which may differ due to dropped CR characters.\n *\n * @param {number[]} cr - Positions of dropped CR characters\n * @param {number} offset - Starting index of `cr` from the last call\n * @returns {number} - The next offset, matching the one found for `origStart`\n */\n\n\n setOrigRange(cr, offset) {\n const {\n start,\n end\n } = this;\n\n if (cr.length === 0 || end <= cr[0]) {\n this.origStart = start;\n this.origEnd = end;\n return offset;\n }\n\n let i = offset;\n\n while (i < cr.length) {\n if (cr[i] > start) break;else ++i;\n }\n\n this.origStart = start + i;\n const nextOffset = i;\n\n while (i < cr.length) {\n // if end was at \\n, it should now be at \\r\n if (cr[i] >= end) break;else ++i;\n }\n\n this.origEnd = end + i;\n return nextOffset;\n }\n\n}\n\n/** Root class of all nodes */\n\nclass Node {\n static addStringTerminator(src, offset, str) {\n if (str[str.length - 1] === '\\n') return str;\n const next = Node.endOfWhiteSpace(src, offset);\n return next >= src.length || src[next] === '\\n' ? str + '\\n' : str;\n } // ^(---|...)\n\n\n static atDocumentBoundary(src, offset, sep) {\n const ch0 = src[offset];\n if (!ch0) return true;\n const prev = src[offset - 1];\n if (prev && prev !== '\\n') return false;\n\n if (sep) {\n if (ch0 !== sep) return false;\n } else {\n if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) return false;\n }\n\n const ch1 = src[offset + 1];\n const ch2 = src[offset + 2];\n if (ch1 !== ch0 || ch2 !== ch0) return false;\n const ch3 = src[offset + 3];\n return !ch3 || ch3 === '\\n' || ch3 === '\\t' || ch3 === ' ';\n }\n\n static endOfIdentifier(src, offset) {\n let ch = src[offset];\n const isVerbatim = ch === '<';\n const notOk = isVerbatim ? ['\\n', '\\t', ' ', '>'] : ['\\n', '\\t', ' ', '[', ']', '{', '}', ','];\n\n while (ch && notOk.indexOf(ch) === -1) ch = src[offset += 1];\n\n if (isVerbatim && ch === '>') offset += 1;\n return offset;\n }\n\n static endOfIndent(src, offset) {\n let ch = src[offset];\n\n while (ch === ' ') ch = src[offset += 1];\n\n return offset;\n }\n\n static endOfLine(src, offset) {\n let ch = src[offset];\n\n while (ch && ch !== '\\n') ch = src[offset += 1];\n\n return offset;\n }\n\n static endOfWhiteSpace(src, offset) {\n let ch = src[offset];\n\n while (ch === '\\t' || ch === ' ') ch = src[offset += 1];\n\n return offset;\n }\n\n static startOfLine(src, offset) {\n let ch = src[offset - 1];\n if (ch === '\\n') return offset;\n\n while (ch && ch !== '\\n') ch = src[offset -= 1];\n\n return offset + 1;\n }\n /**\n * End of indentation, or null if the line's indent level is not more\n * than `indent`\n *\n * @param {string} src\n * @param {number} indent\n * @param {number} lineStart\n * @returns {?number}\n */\n\n\n static endOfBlockIndent(src, indent, lineStart) {\n const inEnd = Node.endOfIndent(src, lineStart);\n\n if (inEnd > lineStart + indent) {\n return inEnd;\n } else {\n const wsEnd = Node.endOfWhiteSpace(src, inEnd);\n const ch = src[wsEnd];\n if (!ch || ch === '\\n') return wsEnd;\n }\n\n return null;\n }\n\n static atBlank(src, offset, endAsBlank) {\n const ch = src[offset];\n return ch === '\\n' || ch === '\\t' || ch === ' ' || endAsBlank && !ch;\n }\n\n static nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) {\n if (!ch || indentDiff < 0) return false;\n if (indentDiff > 0) return true;\n return indicatorAsIndent && ch === '-';\n } // should be at line or string end, or at next non-whitespace char\n\n\n static normalizeOffset(src, offset) {\n const ch = src[offset];\n return !ch ? offset : ch !== '\\n' && src[offset - 1] === '\\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset);\n } // fold single newline into space, multiple newlines to N - 1 newlines\n // presumes src[offset] === '\\n'\n\n\n static foldNewline(src, offset, indent) {\n let inCount = 0;\n let error = false;\n let fold = '';\n let ch = src[offset + 1];\n\n while (ch === ' ' || ch === '\\t' || ch === '\\n') {\n switch (ch) {\n case '\\n':\n inCount = 0;\n offset += 1;\n fold += '\\n';\n break;\n\n case '\\t':\n if (inCount <= indent) error = true;\n offset = Node.endOfWhiteSpace(src, offset + 2) - 1;\n break;\n\n case ' ':\n inCount += 1;\n offset += 1;\n break;\n }\n\n ch = src[offset + 1];\n }\n\n if (!fold) fold = ' ';\n if (ch && inCount <= indent) error = true;\n return {\n fold,\n offset,\n error\n };\n }\n\n constructor(type, props, context) {\n Object.defineProperty(this, 'context', {\n value: context || null,\n writable: true\n });\n this.error = null;\n this.range = null;\n this.valueRange = null;\n this.props = props || [];\n this.type = type;\n this.value = null;\n }\n\n getPropValue(idx, key, skipKey) {\n if (!this.context) return null;\n const {\n src\n } = this.context;\n const prop = this.props[idx];\n return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null;\n }\n\n get anchor() {\n for (let i = 0; i < this.props.length; ++i) {\n const anchor = this.getPropValue(i, Char.ANCHOR, true);\n if (anchor != null) return anchor;\n }\n\n return null;\n }\n\n get comment() {\n const comments = [];\n\n for (let i = 0; i < this.props.length; ++i) {\n const comment = this.getPropValue(i, Char.COMMENT, true);\n if (comment != null) comments.push(comment);\n }\n\n return comments.length > 0 ? comments.join('\\n') : null;\n }\n\n commentHasRequiredWhitespace(start) {\n const {\n src\n } = this.context;\n if (this.header && start === this.header.end) return false;\n if (!this.valueRange) return false;\n const {\n end\n } = this.valueRange;\n return start !== end || Node.atBlank(src, end - 1);\n }\n\n get hasComment() {\n if (this.context) {\n const {\n src\n } = this.context;\n\n for (let i = 0; i < this.props.length; ++i) {\n if (src[this.props[i].start] === Char.COMMENT) return true;\n }\n }\n\n return false;\n }\n\n get hasProps() {\n if (this.context) {\n const {\n src\n } = this.context;\n\n for (let i = 0; i < this.props.length; ++i) {\n if (src[this.props[i].start] !== Char.COMMENT) return true;\n }\n }\n\n return false;\n }\n\n get includesTrailingLines() {\n return false;\n }\n\n get jsonLike() {\n const jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE];\n return jsonLikeTypes.indexOf(this.type) !== -1;\n }\n\n get rangeAsLinePos() {\n if (!this.range || !this.context) return undefined;\n const start = getLinePos(this.range.start, this.context.root);\n if (!start) return undefined;\n const end = getLinePos(this.range.end, this.context.root);\n return {\n start,\n end\n };\n }\n\n get rawValue() {\n if (!this.valueRange || !this.context) return null;\n const {\n start,\n end\n } = this.valueRange;\n return this.context.src.slice(start, end);\n }\n\n get tag() {\n for (let i = 0; i < this.props.length; ++i) {\n const tag = this.getPropValue(i, Char.TAG, false);\n\n if (tag != null) {\n if (tag[1] === '<') {\n return {\n verbatim: tag.slice(2, -1)\n };\n } else {\n // eslint-disable-next-line no-unused-vars\n const [_, handle, suffix] = tag.match(/^(.*!)([^!]*)$/);\n return {\n handle,\n suffix\n };\n }\n }\n }\n\n return null;\n }\n\n get valueRangeContainsNewline() {\n if (!this.valueRange || !this.context) return false;\n const {\n start,\n end\n } = this.valueRange;\n const {\n src\n } = this.context;\n\n for (let i = start; i < end; ++i) {\n if (src[i] === '\\n') return true;\n }\n\n return false;\n }\n\n parseComment(start) {\n const {\n src\n } = this.context;\n\n if (src[start] === Char.COMMENT) {\n const end = Node.endOfLine(src, start + 1);\n const commentRange = new Range(start, end);\n this.props.push(commentRange);\n return end;\n }\n\n return start;\n }\n /**\n * Populates the `origStart` and `origEnd` values of all ranges for this\n * node. Extended by child classes to handle descendant nodes.\n *\n * @param {number[]} cr - Positions of dropped CR characters\n * @param {number} offset - Starting index of `cr` from the last call\n * @returns {number} - The next offset, matching the one found for `origStart`\n */\n\n\n setOrigRanges(cr, offset) {\n if (this.range) offset = this.range.setOrigRange(cr, offset);\n if (this.valueRange) this.valueRange.setOrigRange(cr, offset);\n this.props.forEach(prop => prop.setOrigRange(cr, offset));\n return offset;\n }\n\n toString() {\n const {\n context: {\n src\n },\n range,\n value\n } = this;\n if (value != null) return value;\n const str = src.slice(range.start, range.end);\n return Node.addStringTerminator(src, range.end, str);\n }\n\n}\n\nclass YAMLError extends Error {\n constructor(name, source, message) {\n if (!message || !(source instanceof Node)) throw new Error(`Invalid arguments for new ${name}`);\n super();\n this.name = name;\n this.message = message;\n this.source = source;\n }\n\n makePretty() {\n if (!this.source) return;\n this.nodeType = this.source.type;\n const cst = this.source.context && this.source.context.root;\n\n if (typeof this.offset === 'number') {\n this.range = new Range(this.offset, this.offset + 1);\n const start = cst && getLinePos(this.offset, cst);\n\n if (start) {\n const end = {\n line: start.line,\n col: start.col + 1\n };\n this.linePos = {\n start,\n end\n };\n }\n\n delete this.offset;\n } else {\n this.range = this.source.range;\n this.linePos = this.source.rangeAsLinePos;\n }\n\n if (this.linePos) {\n const {\n line,\n col\n } = this.linePos.start;\n this.message += ` at line ${line}, column ${col}`;\n const ctx = cst && getPrettyContext(this.linePos, cst);\n if (ctx) this.message += `:\\n\\n${ctx}\\n`;\n }\n\n delete this.source;\n }\n\n}\nclass YAMLReferenceError extends YAMLError {\n constructor(source, message) {\n super('YAMLReferenceError', source, message);\n }\n\n}\nclass YAMLSemanticError extends YAMLError {\n constructor(source, message) {\n super('YAMLSemanticError', source, message);\n }\n\n}\nclass YAMLSyntaxError extends YAMLError {\n constructor(source, message) {\n super('YAMLSyntaxError', source, message);\n }\n\n}\nclass YAMLWarning extends YAMLError {\n constructor(source, message) {\n super('YAMLWarning', source, message);\n }\n\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nclass PlainValue extends Node {\n static endOfLine(src, start, inFlow) {\n let ch = src[start];\n let offset = start;\n\n while (ch && ch !== '\\n') {\n if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break;\n const next = src[offset + 1];\n if (ch === ':' && (!next || next === '\\n' || next === '\\t' || next === ' ' || inFlow && next === ',')) break;\n if ((ch === ' ' || ch === '\\t') && next === '#') break;\n offset += 1;\n ch = next;\n }\n\n return offset;\n }\n\n get strValue() {\n if (!this.valueRange || !this.context) return null;\n let {\n start,\n end\n } = this.valueRange;\n const {\n src\n } = this.context;\n let ch = src[end - 1];\n\n while (start < end && (ch === '\\n' || ch === '\\t' || ch === ' ')) ch = src[--end - 1];\n\n let str = '';\n\n for (let i = start; i < end; ++i) {\n const ch = src[i];\n\n if (ch === '\\n') {\n const {\n fold,\n offset\n } = Node.foldNewline(src, i, -1);\n str += fold;\n i = offset;\n } else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = src[i + 1];\n\n while (i < end && (next === ' ' || next === '\\t')) {\n i += 1;\n next = src[i + 1];\n }\n\n if (next !== '\\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;\n } else {\n str += ch;\n }\n }\n\n const ch0 = src[start];\n\n switch (ch0) {\n case '\\t':\n {\n const msg = 'Plain value cannot start with a tab character';\n const errors = [new YAMLSemanticError(this, msg)];\n return {\n errors,\n str\n };\n }\n\n case '@':\n case '`':\n {\n const msg = `Plain value cannot start with reserved character ${ch0}`;\n const errors = [new YAMLSemanticError(this, msg)];\n return {\n errors,\n str\n };\n }\n\n default:\n return str;\n }\n }\n\n parseBlockValue(start) {\n const {\n indent,\n inFlow,\n src\n } = this.context;\n let offset = start;\n let valueEnd = start;\n\n for (let ch = src[offset]; ch === '\\n'; ch = src[offset]) {\n if (Node.atDocumentBoundary(src, offset + 1)) break;\n const end = Node.endOfBlockIndent(src, indent, offset + 1);\n if (end === null || src[end] === '#') break;\n\n if (src[end] === '\\n') {\n offset = end;\n } else {\n valueEnd = PlainValue.endOfLine(src, end, inFlow);\n offset = valueEnd;\n }\n }\n\n if (this.valueRange.isEmpty()) this.valueRange.start = start;\n this.valueRange.end = valueEnd;\n return valueEnd;\n }\n /**\n * Parses a plain value from the source\n *\n * Accepted forms are:\n * ```\n * #comment\n *\n * first line\n *\n * first line #comment\n *\n * first line\n * block\n * lines\n *\n * #comment\n * block\n * lines\n * ```\n * where block lines are empty or have an indent level greater than `indent`.\n *\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this scalar, may be `\\n`\n */\n\n\n parse(context, start) {\n this.context = context;\n const {\n inFlow,\n src\n } = context;\n let offset = start;\n const ch = src[offset];\n\n if (ch && ch !== '#' && ch !== '\\n') {\n offset = PlainValue.endOfLine(src, start, inFlow);\n }\n\n this.valueRange = new Range(start, offset);\n offset = Node.endOfWhiteSpace(src, offset);\n offset = this.parseComment(offset);\n\n if (!this.hasComment || this.valueRange.isEmpty()) {\n offset = this.parseBlockValue(offset);\n }\n\n return offset;\n }\n\n}\n\nexports.Char = Char;\nexports.Node = Node;\nexports.PlainValue = PlainValue;\nexports.Range = Range;\nexports.Type = Type;\nexports.YAMLError = YAMLError;\nexports.YAMLReferenceError = YAMLReferenceError;\nexports.YAMLSemanticError = YAMLSemanticError;\nexports.YAMLSyntaxError = YAMLSyntaxError;\nexports.YAMLWarning = YAMLWarning;\nexports._defineProperty = _defineProperty;\nexports.defaultTagPrefix = defaultTagPrefix;\nexports.defaultTags = defaultTags;\n","'use strict';\n\nvar PlainValue = require('./PlainValue-ec8e588e.js');\n\nclass BlankLine extends PlainValue.Node {\n constructor() {\n super(PlainValue.Type.BLANK_LINE);\n }\n /* istanbul ignore next */\n\n\n get includesTrailingLines() {\n // This is never called from anywhere, but if it were,\n // this is the value it should return.\n return true;\n }\n /**\n * Parses a blank line from the source\n *\n * @param {ParseContext} context\n * @param {number} start - Index of first \\n character\n * @returns {number} - Index of the character after this\n */\n\n\n parse(context, start) {\n this.context = context;\n this.range = new PlainValue.Range(start, start + 1);\n return start + 1;\n }\n\n}\n\nclass CollectionItem extends PlainValue.Node {\n constructor(type, props) {\n super(type, props);\n this.node = null;\n }\n\n get includesTrailingLines() {\n return !!this.node && this.node.includesTrailingLines;\n }\n /**\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this\n */\n\n\n parse(context, start) {\n this.context = context;\n const {\n parseNode,\n src\n } = context;\n let {\n atLineStart,\n lineStart\n } = context;\n if (!atLineStart && this.type === PlainValue.Type.SEQ_ITEM) this.error = new PlainValue.YAMLSemanticError(this, 'Sequence items must not have preceding content on the same line');\n const indent = atLineStart ? start - lineStart : context.indent;\n let offset = PlainValue.Node.endOfWhiteSpace(src, start + 1);\n let ch = src[offset];\n const inlineComment = ch === '#';\n const comments = [];\n let blankLine = null;\n\n while (ch === '\\n' || ch === '#') {\n if (ch === '#') {\n const end = PlainValue.Node.endOfLine(src, offset + 1);\n comments.push(new PlainValue.Range(offset, end));\n offset = end;\n } else {\n atLineStart = true;\n lineStart = offset + 1;\n const wsEnd = PlainValue.Node.endOfWhiteSpace(src, lineStart);\n\n if (src[wsEnd] === '\\n' && comments.length === 0) {\n blankLine = new BlankLine();\n lineStart = blankLine.parse({\n src\n }, lineStart);\n }\n\n offset = PlainValue.Node.endOfIndent(src, lineStart);\n }\n\n ch = src[offset];\n }\n\n if (PlainValue.Node.nextNodeIsIndented(ch, offset - (lineStart + indent), this.type !== PlainValue.Type.SEQ_ITEM)) {\n this.node = parseNode({\n atLineStart,\n inCollection: false,\n indent,\n lineStart,\n parent: this\n }, offset);\n } else if (ch && lineStart > start + 1) {\n offset = lineStart - 1;\n }\n\n if (this.node) {\n if (blankLine) {\n // Only blank lines preceding non-empty nodes are captured. Note that\n // this means that collection item range start indices do not always\n // increase monotonically. -- eemeli/yaml#126\n const items = context.parent.items || context.parent.contents;\n if (items) items.push(blankLine);\n }\n\n if (comments.length) Array.prototype.push.apply(this.props, comments);\n offset = this.node.range.end;\n } else {\n if (inlineComment) {\n const c = comments[0];\n this.props.push(c);\n offset = c.end;\n } else {\n offset = PlainValue.Node.endOfLine(src, start + 1);\n }\n }\n\n const end = this.node ? this.node.valueRange.end : offset;\n this.valueRange = new PlainValue.Range(start, end);\n return offset;\n }\n\n setOrigRanges(cr, offset) {\n offset = super.setOrigRanges(cr, offset);\n return this.node ? this.node.setOrigRanges(cr, offset) : offset;\n }\n\n toString() {\n const {\n context: {\n src\n },\n node,\n range,\n value\n } = this;\n if (value != null) return value;\n const str = node ? src.slice(range.start, node.range.start) + String(node) : src.slice(range.start, range.end);\n return PlainValue.Node.addStringTerminator(src, range.end, str);\n }\n\n}\n\nclass Comment extends PlainValue.Node {\n constructor() {\n super(PlainValue.Type.COMMENT);\n }\n /**\n * Parses a comment line from the source\n *\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this scalar\n */\n\n\n parse(context, start) {\n this.context = context;\n const offset = this.parseComment(start);\n this.range = new PlainValue.Range(start, offset);\n return offset;\n }\n\n}\n\nfunction grabCollectionEndComments(node) {\n let cnode = node;\n\n while (cnode instanceof CollectionItem) cnode = cnode.node;\n\n if (!(cnode instanceof Collection)) return null;\n const len = cnode.items.length;\n let ci = -1;\n\n for (let i = len - 1; i >= 0; --i) {\n const n = cnode.items[i];\n\n if (n.type === PlainValue.Type.COMMENT) {\n // Keep sufficiently indented comments with preceding node\n const {\n indent,\n lineStart\n } = n.context;\n if (indent > 0 && n.range.start >= lineStart + indent) break;\n ci = i;\n } else if (n.type === PlainValue.Type.BLANK_LINE) ci = i;else break;\n }\n\n if (ci === -1) return null;\n const ca = cnode.items.splice(ci, len - ci);\n const prevEnd = ca[0].range.start;\n\n while (true) {\n cnode.range.end = prevEnd;\n if (cnode.valueRange && cnode.valueRange.end > prevEnd) cnode.valueRange.end = prevEnd;\n if (cnode === node) break;\n cnode = cnode.context.parent;\n }\n\n return ca;\n}\nclass Collection extends PlainValue.Node {\n static nextContentHasIndent(src, offset, indent) {\n const lineStart = PlainValue.Node.endOfLine(src, offset) + 1;\n offset = PlainValue.Node.endOfWhiteSpace(src, lineStart);\n const ch = src[offset];\n if (!ch) return false;\n if (offset >= lineStart + indent) return true;\n if (ch !== '#' && ch !== '\\n') return false;\n return Collection.nextContentHasIndent(src, offset, indent);\n }\n\n constructor(firstItem) {\n super(firstItem.type === PlainValue.Type.SEQ_ITEM ? PlainValue.Type.SEQ : PlainValue.Type.MAP);\n\n for (let i = firstItem.props.length - 1; i >= 0; --i) {\n if (firstItem.props[i].start < firstItem.context.lineStart) {\n // props on previous line are assumed by the collection\n this.props = firstItem.props.slice(0, i + 1);\n firstItem.props = firstItem.props.slice(i + 1);\n const itemRange = firstItem.props[0] || firstItem.valueRange;\n firstItem.range.start = itemRange.start;\n break;\n }\n }\n\n this.items = [firstItem];\n const ec = grabCollectionEndComments(firstItem);\n if (ec) Array.prototype.push.apply(this.items, ec);\n }\n\n get includesTrailingLines() {\n return this.items.length > 0;\n }\n /**\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this\n */\n\n\n parse(context, start) {\n this.context = context;\n const {\n parseNode,\n src\n } = context; // It's easier to recalculate lineStart here rather than tracking down the\n // last context from which to read it -- eemeli/yaml#2\n\n let lineStart = PlainValue.Node.startOfLine(src, start);\n const firstItem = this.items[0]; // First-item context needs to be correct for later comment handling\n // -- eemeli/yaml#17\n\n firstItem.context.parent = this;\n this.valueRange = PlainValue.Range.copy(firstItem.valueRange);\n const indent = firstItem.range.start - firstItem.context.lineStart;\n let offset = start;\n offset = PlainValue.Node.normalizeOffset(src, offset);\n let ch = src[offset];\n let atLineStart = PlainValue.Node.endOfWhiteSpace(src, lineStart) === offset;\n let prevIncludesTrailingLines = false;\n\n while (ch) {\n while (ch === '\\n' || ch === '#') {\n if (atLineStart && ch === '\\n' && !prevIncludesTrailingLines) {\n const blankLine = new BlankLine();\n offset = blankLine.parse({\n src\n }, offset);\n this.valueRange.end = offset;\n\n if (offset >= src.length) {\n ch = null;\n break;\n }\n\n this.items.push(blankLine);\n offset -= 1; // blankLine.parse() consumes terminal newline\n } else if (ch === '#') {\n if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) {\n return offset;\n }\n\n const comment = new Comment();\n offset = comment.parse({\n indent,\n lineStart,\n src\n }, offset);\n this.items.push(comment);\n this.valueRange.end = offset;\n\n if (offset >= src.length) {\n ch = null;\n break;\n }\n }\n\n lineStart = offset + 1;\n offset = PlainValue.Node.endOfIndent(src, lineStart);\n\n if (PlainValue.Node.atBlank(src, offset)) {\n const wsEnd = PlainValue.Node.endOfWhiteSpace(src, offset);\n const next = src[wsEnd];\n\n if (!next || next === '\\n' || next === '#') {\n offset = wsEnd;\n }\n }\n\n ch = src[offset];\n atLineStart = true;\n }\n\n if (!ch) {\n break;\n }\n\n if (offset !== lineStart + indent && (atLineStart || ch !== ':')) {\n if (offset < lineStart + indent) {\n if (lineStart > start) offset = lineStart;\n break;\n } else if (!this.error) {\n const msg = 'All collection items must start at the same column';\n this.error = new PlainValue.YAMLSyntaxError(this, msg);\n }\n }\n\n if (firstItem.type === PlainValue.Type.SEQ_ITEM) {\n if (ch !== '-') {\n if (lineStart > start) offset = lineStart;\n break;\n }\n } else if (ch === '-' && !this.error) {\n // map key may start with -, as long as it's followed by a non-whitespace char\n const next = src[offset + 1];\n\n if (!next || next === '\\n' || next === '\\t' || next === ' ') {\n const msg = 'A collection cannot be both a mapping and a sequence';\n this.error = new PlainValue.YAMLSyntaxError(this, msg);\n }\n }\n\n const node = parseNode({\n atLineStart,\n inCollection: true,\n indent,\n lineStart,\n parent: this\n }, offset);\n if (!node) return offset; // at next document start\n\n this.items.push(node);\n this.valueRange.end = node.valueRange.end;\n offset = PlainValue.Node.normalizeOffset(src, node.range.end);\n ch = src[offset];\n atLineStart = false;\n prevIncludesTrailingLines = node.includesTrailingLines; // Need to reset lineStart and atLineStart here if preceding node's range\n // has advanced to check the current line's indentation level\n // -- eemeli/yaml#10 & eemeli/yaml#38\n\n if (ch) {\n let ls = offset - 1;\n let prev = src[ls];\n\n while (prev === ' ' || prev === '\\t') prev = src[--ls];\n\n if (prev === '\\n') {\n lineStart = ls + 1;\n atLineStart = true;\n }\n }\n\n const ec = grabCollectionEndComments(node);\n if (ec) Array.prototype.push.apply(this.items, ec);\n }\n\n return offset;\n }\n\n setOrigRanges(cr, offset) {\n offset = super.setOrigRanges(cr, offset);\n this.items.forEach(node => {\n offset = node.setOrigRanges(cr, offset);\n });\n return offset;\n }\n\n toString() {\n const {\n context: {\n src\n },\n items,\n range,\n value\n } = this;\n if (value != null) return value;\n let str = src.slice(range.start, items[0].range.start) + String(items[0]);\n\n for (let i = 1; i < items.length; ++i) {\n const item = items[i];\n const {\n atLineStart,\n indent\n } = item.context;\n if (atLineStart) for (let i = 0; i < indent; ++i) str += ' ';\n str += String(item);\n }\n\n return PlainValue.Node.addStringTerminator(src, range.end, str);\n }\n\n}\n\nclass Directive extends PlainValue.Node {\n constructor() {\n super(PlainValue.Type.DIRECTIVE);\n this.name = null;\n }\n\n get parameters() {\n const raw = this.rawValue;\n return raw ? raw.trim().split(/[ \\t]+/) : [];\n }\n\n parseName(start) {\n const {\n src\n } = this.context;\n let offset = start;\n let ch = src[offset];\n\n while (ch && ch !== '\\n' && ch !== '\\t' && ch !== ' ') ch = src[offset += 1];\n\n this.name = src.slice(start, offset);\n return offset;\n }\n\n parseParameters(start) {\n const {\n src\n } = this.context;\n let offset = start;\n let ch = src[offset];\n\n while (ch && ch !== '\\n' && ch !== '#') ch = src[offset += 1];\n\n this.valueRange = new PlainValue.Range(start, offset);\n return offset;\n }\n\n parse(context, start) {\n this.context = context;\n let offset = this.parseName(start + 1);\n offset = this.parseParameters(offset);\n offset = this.parseComment(offset);\n this.range = new PlainValue.Range(start, offset);\n return offset;\n }\n\n}\n\nclass Document extends PlainValue.Node {\n static startCommentOrEndBlankLine(src, start) {\n const offset = PlainValue.Node.endOfWhiteSpace(src, start);\n const ch = src[offset];\n return ch === '#' || ch === '\\n' ? offset : start;\n }\n\n constructor() {\n super(PlainValue.Type.DOCUMENT);\n this.directives = null;\n this.contents = null;\n this.directivesEndMarker = null;\n this.documentEndMarker = null;\n }\n\n parseDirectives(start) {\n const {\n src\n } = this.context;\n this.directives = [];\n let atLineStart = true;\n let hasDirectives = false;\n let offset = start;\n\n while (!PlainValue.Node.atDocumentBoundary(src, offset, PlainValue.Char.DIRECTIVES_END)) {\n offset = Document.startCommentOrEndBlankLine(src, offset);\n\n switch (src[offset]) {\n case '\\n':\n if (atLineStart) {\n const blankLine = new BlankLine();\n offset = blankLine.parse({\n src\n }, offset);\n\n if (offset < src.length) {\n this.directives.push(blankLine);\n }\n } else {\n offset += 1;\n atLineStart = true;\n }\n\n break;\n\n case '#':\n {\n const comment = new Comment();\n offset = comment.parse({\n src\n }, offset);\n this.directives.push(comment);\n atLineStart = false;\n }\n break;\n\n case '%':\n {\n const directive = new Directive();\n offset = directive.parse({\n parent: this,\n src\n }, offset);\n this.directives.push(directive);\n hasDirectives = true;\n atLineStart = false;\n }\n break;\n\n default:\n if (hasDirectives) {\n this.error = new PlainValue.YAMLSemanticError(this, 'Missing directives-end indicator line');\n } else if (this.directives.length > 0) {\n this.contents = this.directives;\n this.directives = [];\n }\n\n return offset;\n }\n }\n\n if (src[offset]) {\n this.directivesEndMarker = new PlainValue.Range(offset, offset + 3);\n return offset + 3;\n }\n\n if (hasDirectives) {\n this.error = new PlainValue.YAMLSemanticError(this, 'Missing directives-end indicator line');\n } else if (this.directives.length > 0) {\n this.contents = this.directives;\n this.directives = [];\n }\n\n return offset;\n }\n\n parseContents(start) {\n const {\n parseNode,\n src\n } = this.context;\n if (!this.contents) this.contents = [];\n let lineStart = start;\n\n while (src[lineStart - 1] === '-') lineStart -= 1;\n\n let offset = PlainValue.Node.endOfWhiteSpace(src, start);\n let atLineStart = lineStart === start;\n this.valueRange = new PlainValue.Range(offset);\n\n while (!PlainValue.Node.atDocumentBoundary(src, offset, PlainValue.Char.DOCUMENT_END)) {\n switch (src[offset]) {\n case '\\n':\n if (atLineStart) {\n const blankLine = new BlankLine();\n offset = blankLine.parse({\n src\n }, offset);\n\n if (offset < src.length) {\n this.contents.push(blankLine);\n }\n } else {\n offset += 1;\n atLineStart = true;\n }\n\n lineStart = offset;\n break;\n\n case '#':\n {\n const comment = new Comment();\n offset = comment.parse({\n src\n }, offset);\n this.contents.push(comment);\n atLineStart = false;\n }\n break;\n\n default:\n {\n const iEnd = PlainValue.Node.endOfIndent(src, offset);\n const context = {\n atLineStart,\n indent: -1,\n inFlow: false,\n inCollection: false,\n lineStart,\n parent: this\n };\n const node = parseNode(context, iEnd);\n if (!node) return this.valueRange.end = iEnd; // at next document start\n\n this.contents.push(node);\n offset = node.range.end;\n atLineStart = false;\n const ec = grabCollectionEndComments(node);\n if (ec) Array.prototype.push.apply(this.contents, ec);\n }\n }\n\n offset = Document.startCommentOrEndBlankLine(src, offset);\n }\n\n this.valueRange.end = offset;\n\n if (src[offset]) {\n this.documentEndMarker = new PlainValue.Range(offset, offset + 3);\n offset += 3;\n\n if (src[offset]) {\n offset = PlainValue.Node.endOfWhiteSpace(src, offset);\n\n if (src[offset] === '#') {\n const comment = new Comment();\n offset = comment.parse({\n src\n }, offset);\n this.contents.push(comment);\n }\n\n switch (src[offset]) {\n case '\\n':\n offset += 1;\n break;\n\n case undefined:\n break;\n\n default:\n this.error = new PlainValue.YAMLSyntaxError(this, 'Document end marker line cannot have a non-comment suffix');\n }\n }\n }\n\n return offset;\n }\n /**\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this\n */\n\n\n parse(context, start) {\n context.root = this;\n this.context = context;\n const {\n src\n } = context;\n let offset = src.charCodeAt(start) === 0xfeff ? start + 1 : start; // skip BOM\n\n offset = this.parseDirectives(offset);\n offset = this.parseContents(offset);\n return offset;\n }\n\n setOrigRanges(cr, offset) {\n offset = super.setOrigRanges(cr, offset);\n this.directives.forEach(node => {\n offset = node.setOrigRanges(cr, offset);\n });\n if (this.directivesEndMarker) offset = this.directivesEndMarker.setOrigRange(cr, offset);\n this.contents.forEach(node => {\n offset = node.setOrigRanges(cr, offset);\n });\n if (this.documentEndMarker) offset = this.documentEndMarker.setOrigRange(cr, offset);\n return offset;\n }\n\n toString() {\n const {\n contents,\n directives,\n value\n } = this;\n if (value != null) return value;\n let str = directives.join('');\n\n if (contents.length > 0) {\n if (directives.length > 0 || contents[0].type === PlainValue.Type.COMMENT) str += '---\\n';\n str += contents.join('');\n }\n\n if (str[str.length - 1] !== '\\n') str += '\\n';\n return str;\n }\n\n}\n\nclass Alias extends PlainValue.Node {\n /**\n * Parses an *alias from the source\n *\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this scalar\n */\n parse(context, start) {\n this.context = context;\n const {\n src\n } = context;\n let offset = PlainValue.Node.endOfIdentifier(src, start + 1);\n this.valueRange = new PlainValue.Range(start + 1, offset);\n offset = PlainValue.Node.endOfWhiteSpace(src, offset);\n offset = this.parseComment(offset);\n return offset;\n }\n\n}\n\nconst Chomp = {\n CLIP: 'CLIP',\n KEEP: 'KEEP',\n STRIP: 'STRIP'\n};\nclass BlockValue extends PlainValue.Node {\n constructor(type, props) {\n super(type, props);\n this.blockIndent = null;\n this.chomping = Chomp.CLIP;\n this.header = null;\n }\n\n get includesTrailingLines() {\n return this.chomping === Chomp.KEEP;\n }\n\n get strValue() {\n if (!this.valueRange || !this.context) return null;\n let {\n start,\n end\n } = this.valueRange;\n const {\n indent,\n src\n } = this.context;\n if (this.valueRange.isEmpty()) return '';\n let lastNewLine = null;\n let ch = src[end - 1];\n\n while (ch === '\\n' || ch === '\\t' || ch === ' ') {\n end -= 1;\n\n if (end <= start) {\n if (this.chomping === Chomp.KEEP) break;else return ''; // probably never happens\n }\n\n if (ch === '\\n') lastNewLine = end;\n ch = src[end - 1];\n }\n\n let keepStart = end + 1;\n\n if (lastNewLine) {\n if (this.chomping === Chomp.KEEP) {\n keepStart = lastNewLine;\n end = this.valueRange.end;\n } else {\n end = lastNewLine;\n }\n }\n\n const bi = indent + this.blockIndent;\n const folded = this.type === PlainValue.Type.BLOCK_FOLDED;\n let atStart = true;\n let str = '';\n let sep = '';\n let prevMoreIndented = false;\n\n for (let i = start; i < end; ++i) {\n for (let j = 0; j < bi; ++j) {\n if (src[i] !== ' ') break;\n i += 1;\n }\n\n const ch = src[i];\n\n if (ch === '\\n') {\n if (sep === '\\n') str += '\\n';else sep = '\\n';\n } else {\n const lineEnd = PlainValue.Node.endOfLine(src, i);\n const line = src.slice(i, lineEnd);\n i = lineEnd;\n\n if (folded && (ch === ' ' || ch === '\\t') && i < keepStart) {\n if (sep === ' ') sep = '\\n';else if (!prevMoreIndented && !atStart && sep === '\\n') sep = '\\n\\n';\n str += sep + line; //+ ((lineEnd < end && src[lineEnd]) || '')\n\n sep = lineEnd < end && src[lineEnd] || '';\n prevMoreIndented = true;\n } else {\n str += sep + line;\n sep = folded && i < keepStart ? ' ' : '\\n';\n prevMoreIndented = false;\n }\n\n if (atStart && line !== '') atStart = false;\n }\n }\n\n return this.chomping === Chomp.STRIP ? str : str + '\\n';\n }\n\n parseBlockHeader(start) {\n const {\n src\n } = this.context;\n let offset = start + 1;\n let bi = '';\n\n while (true) {\n const ch = src[offset];\n\n switch (ch) {\n case '-':\n this.chomping = Chomp.STRIP;\n break;\n\n case '+':\n this.chomping = Chomp.KEEP;\n break;\n\n case '0':\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 bi += ch;\n break;\n\n default:\n this.blockIndent = Number(bi) || null;\n this.header = new PlainValue.Range(start, offset);\n return offset;\n }\n\n offset += 1;\n }\n }\n\n parseBlockValue(start) {\n const {\n indent,\n src\n } = this.context;\n const explicit = !!this.blockIndent;\n let offset = start;\n let valueEnd = start;\n let minBlockIndent = 1;\n\n for (let ch = src[offset]; ch === '\\n'; ch = src[offset]) {\n offset += 1;\n if (PlainValue.Node.atDocumentBoundary(src, offset)) break;\n const end = PlainValue.Node.endOfBlockIndent(src, indent, offset); // should not include tab?\n\n if (end === null) break;\n const ch = src[end];\n const lineIndent = end - (offset + indent);\n\n if (!this.blockIndent) {\n // no explicit block indent, none yet detected\n if (src[end] !== '\\n') {\n // first line with non-whitespace content\n if (lineIndent < minBlockIndent) {\n const msg = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n this.error = new PlainValue.YAMLSemanticError(this, msg);\n }\n\n this.blockIndent = lineIndent;\n } else if (lineIndent > minBlockIndent) {\n // empty line with more whitespace\n minBlockIndent = lineIndent;\n }\n } else if (ch && ch !== '\\n' && lineIndent < this.blockIndent) {\n if (src[end] === '#') break;\n\n if (!this.error) {\n const src = explicit ? 'explicit indentation indicator' : 'first line';\n const msg = `Block scalars must not be less indented than their ${src}`;\n this.error = new PlainValue.YAMLSemanticError(this, msg);\n }\n }\n\n if (src[end] === '\\n') {\n offset = end;\n } else {\n offset = valueEnd = PlainValue.Node.endOfLine(src, end);\n }\n }\n\n if (this.chomping !== Chomp.KEEP) {\n offset = src[valueEnd] ? valueEnd + 1 : valueEnd;\n }\n\n this.valueRange = new PlainValue.Range(start + 1, offset);\n return offset;\n }\n /**\n * Parses a block value from the source\n *\n * Accepted forms are:\n * ```\n * BS\n * block\n * lines\n *\n * BS #comment\n * block\n * lines\n * ```\n * where the block style BS matches the regexp `[|>][-+1-9]*` and block lines\n * are empty or have an indent level greater than `indent`.\n *\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this block\n */\n\n\n parse(context, start) {\n this.context = context;\n const {\n src\n } = context;\n let offset = this.parseBlockHeader(start);\n offset = PlainValue.Node.endOfWhiteSpace(src, offset);\n offset = this.parseComment(offset);\n offset = this.parseBlockValue(offset);\n return offset;\n }\n\n setOrigRanges(cr, offset) {\n offset = super.setOrigRanges(cr, offset);\n return this.header ? this.header.setOrigRange(cr, offset) : offset;\n }\n\n}\n\nclass FlowCollection extends PlainValue.Node {\n constructor(type, props) {\n super(type, props);\n this.items = null;\n }\n\n prevNodeIsJsonLike(idx = this.items.length) {\n const node = this.items[idx - 1];\n return !!node && (node.jsonLike || node.type === PlainValue.Type.COMMENT && this.prevNodeIsJsonLike(idx - 1));\n }\n /**\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this\n */\n\n\n parse(context, start) {\n this.context = context;\n const {\n parseNode,\n src\n } = context;\n let {\n indent,\n lineStart\n } = context;\n let char = src[start]; // { or [\n\n this.items = [{\n char,\n offset: start\n }];\n let offset = PlainValue.Node.endOfWhiteSpace(src, start + 1);\n char = src[offset];\n\n while (char && char !== ']' && char !== '}') {\n switch (char) {\n case '\\n':\n {\n lineStart = offset + 1;\n const wsEnd = PlainValue.Node.endOfWhiteSpace(src, lineStart);\n\n if (src[wsEnd] === '\\n') {\n const blankLine = new BlankLine();\n lineStart = blankLine.parse({\n src\n }, lineStart);\n this.items.push(blankLine);\n }\n\n offset = PlainValue.Node.endOfIndent(src, lineStart);\n\n if (offset <= lineStart + indent) {\n char = src[offset];\n\n if (offset < lineStart + indent || char !== ']' && char !== '}') {\n const msg = 'Insufficient indentation in flow collection';\n this.error = new PlainValue.YAMLSemanticError(this, msg);\n }\n }\n }\n break;\n\n case ',':\n {\n this.items.push({\n char,\n offset\n });\n offset += 1;\n }\n break;\n\n case '#':\n {\n const comment = new Comment();\n offset = comment.parse({\n src\n }, offset);\n this.items.push(comment);\n }\n break;\n\n case '?':\n case ':':\n {\n const next = src[offset + 1];\n\n if (next === '\\n' || next === '\\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace\n char === ':' && this.prevNodeIsJsonLike()) {\n this.items.push({\n char,\n offset\n });\n offset += 1;\n break;\n }\n }\n // fallthrough\n\n default:\n {\n const node = parseNode({\n atLineStart: false,\n inCollection: false,\n inFlow: true,\n indent: -1,\n lineStart,\n parent: this\n }, offset);\n\n if (!node) {\n // at next document start\n this.valueRange = new PlainValue.Range(start, offset);\n return offset;\n }\n\n this.items.push(node);\n offset = PlainValue.Node.normalizeOffset(src, node.range.end);\n }\n }\n\n offset = PlainValue.Node.endOfWhiteSpace(src, offset);\n char = src[offset];\n }\n\n this.valueRange = new PlainValue.Range(start, offset + 1);\n\n if (char) {\n this.items.push({\n char,\n offset\n });\n offset = PlainValue.Node.endOfWhiteSpace(src, offset + 1);\n offset = this.parseComment(offset);\n }\n\n return offset;\n }\n\n setOrigRanges(cr, offset) {\n offset = super.setOrigRanges(cr, offset);\n this.items.forEach(node => {\n if (node instanceof PlainValue.Node) {\n offset = node.setOrigRanges(cr, offset);\n } else if (cr.length === 0) {\n node.origOffset = node.offset;\n } else {\n let i = offset;\n\n while (i < cr.length) {\n if (cr[i] > node.offset) break;else ++i;\n }\n\n node.origOffset = node.offset + i;\n offset = i;\n }\n });\n return offset;\n }\n\n toString() {\n const {\n context: {\n src\n },\n items,\n range,\n value\n } = this;\n if (value != null) return value;\n const nodes = items.filter(item => item instanceof PlainValue.Node);\n let str = '';\n let prevEnd = range.start;\n nodes.forEach(node => {\n const prefix = src.slice(prevEnd, node.range.start);\n prevEnd = node.range.end;\n str += prefix + String(node);\n\n if (str[str.length - 1] === '\\n' && src[prevEnd - 1] !== '\\n' && src[prevEnd] === '\\n') {\n // Comment range does not include the terminal newline, but its\n // stringified value does. Without this fix, newlines at comment ends\n // get duplicated.\n prevEnd += 1;\n }\n });\n str += src.slice(prevEnd, range.end);\n return PlainValue.Node.addStringTerminator(src, range.end, str);\n }\n\n}\n\nclass QuoteDouble extends PlainValue.Node {\n static endOfQuote(src, offset) {\n let ch = src[offset];\n\n while (ch && ch !== '\"') {\n offset += ch === '\\\\' ? 2 : 1;\n ch = src[offset];\n }\n\n return offset + 1;\n }\n /**\n * @returns {string | { str: string, errors: YAMLSyntaxError[] }}\n */\n\n\n get strValue() {\n if (!this.valueRange || !this.context) return null;\n const errors = [];\n const {\n start,\n end\n } = this.valueRange;\n const {\n indent,\n src\n } = this.context;\n if (src[end - 1] !== '\"') errors.push(new PlainValue.YAMLSyntaxError(this, 'Missing closing \"quote')); // Using String#replace is too painful with escaped newlines preceded by\n // escaped backslashes; also, this should be faster.\n\n let str = '';\n\n for (let i = start + 1; i < end - 1; ++i) {\n const ch = src[i];\n\n if (ch === '\\n') {\n if (PlainValue.Node.atDocumentBoundary(src, i + 1)) errors.push(new PlainValue.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));\n const {\n fold,\n offset,\n error\n } = PlainValue.Node.foldNewline(src, i, indent);\n str += fold;\n i = offset;\n if (error) errors.push(new PlainValue.YAMLSemanticError(this, 'Multi-line double-quoted string needs to be sufficiently indented'));\n } else if (ch === '\\\\') {\n i += 1;\n\n switch (src[i]) {\n case '0':\n str += '\\0';\n break;\n // null character\n\n case 'a':\n str += '\\x07';\n break;\n // bell character\n\n case 'b':\n str += '\\b';\n break;\n // backspace\n\n case 'e':\n str += '\\x1b';\n break;\n // escape character\n\n case 'f':\n str += '\\f';\n break;\n // form feed\n\n case 'n':\n str += '\\n';\n break;\n // line feed\n\n case 'r':\n str += '\\r';\n break;\n // carriage return\n\n case 't':\n str += '\\t';\n break;\n // horizontal tab\n\n case 'v':\n str += '\\v';\n break;\n // vertical tab\n\n case 'N':\n str += '\\u0085';\n break;\n // Unicode next line\n\n case '_':\n str += '\\u00a0';\n break;\n // Unicode non-breaking space\n\n case 'L':\n str += '\\u2028';\n break;\n // Unicode line separator\n\n case 'P':\n str += '\\u2029';\n break;\n // Unicode paragraph separator\n\n case ' ':\n str += ' ';\n break;\n\n case '\"':\n str += '\"';\n break;\n\n case '/':\n str += '/';\n break;\n\n case '\\\\':\n str += '\\\\';\n break;\n\n case '\\t':\n str += '\\t';\n break;\n\n case 'x':\n str += this.parseCharCode(i + 1, 2, errors);\n i += 2;\n break;\n\n case 'u':\n str += this.parseCharCode(i + 1, 4, errors);\n i += 4;\n break;\n\n case 'U':\n str += this.parseCharCode(i + 1, 8, errors);\n i += 8;\n break;\n\n case '\\n':\n // skip escaped newlines, but still trim the following line\n while (src[i + 1] === ' ' || src[i + 1] === '\\t') i += 1;\n\n break;\n\n default:\n errors.push(new PlainValue.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(i - 1, 2)}`));\n str += '\\\\' + src[i];\n }\n } else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = src[i + 1];\n\n while (next === ' ' || next === '\\t') {\n i += 1;\n next = src[i + 1];\n }\n\n if (next !== '\\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;\n } else {\n str += ch;\n }\n }\n\n return errors.length > 0 ? {\n errors,\n str\n } : str;\n }\n\n parseCharCode(offset, length, errors) {\n const {\n src\n } = this.context;\n const cc = src.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n\n if (isNaN(code)) {\n errors.push(new PlainValue.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(offset - 2, length + 2)}`));\n return src.substr(offset - 2, length + 2);\n }\n\n return String.fromCodePoint(code);\n }\n /**\n * Parses a \"double quoted\" value from the source\n *\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this scalar\n */\n\n\n parse(context, start) {\n this.context = context;\n const {\n src\n } = context;\n let offset = QuoteDouble.endOfQuote(src, start + 1);\n this.valueRange = new PlainValue.Range(start, offset);\n offset = PlainValue.Node.endOfWhiteSpace(src, offset);\n offset = this.parseComment(offset);\n return offset;\n }\n\n}\n\nclass QuoteSingle extends PlainValue.Node {\n static endOfQuote(src, offset) {\n let ch = src[offset];\n\n while (ch) {\n if (ch === \"'\") {\n if (src[offset + 1] !== \"'\") break;\n ch = src[offset += 2];\n } else {\n ch = src[offset += 1];\n }\n }\n\n return offset + 1;\n }\n /**\n * @returns {string | { str: string, errors: YAMLSyntaxError[] }}\n */\n\n\n get strValue() {\n if (!this.valueRange || !this.context) return null;\n const errors = [];\n const {\n start,\n end\n } = this.valueRange;\n const {\n indent,\n src\n } = this.context;\n if (src[end - 1] !== \"'\") errors.push(new PlainValue.YAMLSyntaxError(this, \"Missing closing 'quote\"));\n let str = '';\n\n for (let i = start + 1; i < end - 1; ++i) {\n const ch = src[i];\n\n if (ch === '\\n') {\n if (PlainValue.Node.atDocumentBoundary(src, i + 1)) errors.push(new PlainValue.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));\n const {\n fold,\n offset,\n error\n } = PlainValue.Node.foldNewline(src, i, indent);\n str += fold;\n i = offset;\n if (error) errors.push(new PlainValue.YAMLSemanticError(this, 'Multi-line single-quoted string needs to be sufficiently indented'));\n } else if (ch === \"'\") {\n str += ch;\n i += 1;\n if (src[i] !== \"'\") errors.push(new PlainValue.YAMLSyntaxError(this, 'Unescaped single quote? This should not happen.'));\n } else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = src[i + 1];\n\n while (next === ' ' || next === '\\t') {\n i += 1;\n next = src[i + 1];\n }\n\n if (next !== '\\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;\n } else {\n str += ch;\n }\n }\n\n return errors.length > 0 ? {\n errors,\n str\n } : str;\n }\n /**\n * Parses a 'single quoted' value from the source\n *\n * @param {ParseContext} context\n * @param {number} start - Index of first character\n * @returns {number} - Index of the character after this scalar\n */\n\n\n parse(context, start) {\n this.context = context;\n const {\n src\n } = context;\n let offset = QuoteSingle.endOfQuote(src, start + 1);\n this.valueRange = new PlainValue.Range(start, offset);\n offset = PlainValue.Node.endOfWhiteSpace(src, offset);\n offset = this.parseComment(offset);\n return offset;\n }\n\n}\n\nfunction createNewNode(type, props) {\n switch (type) {\n case PlainValue.Type.ALIAS:\n return new Alias(type, props);\n\n case PlainValue.Type.BLOCK_FOLDED:\n case PlainValue.Type.BLOCK_LITERAL:\n return new BlockValue(type, props);\n\n case PlainValue.Type.FLOW_MAP:\n case PlainValue.Type.FLOW_SEQ:\n return new FlowCollection(type, props);\n\n case PlainValue.Type.MAP_KEY:\n case PlainValue.Type.MAP_VALUE:\n case PlainValue.Type.SEQ_ITEM:\n return new CollectionItem(type, props);\n\n case PlainValue.Type.COMMENT:\n case PlainValue.Type.PLAIN:\n return new PlainValue.PlainValue(type, props);\n\n case PlainValue.Type.QUOTE_DOUBLE:\n return new QuoteDouble(type, props);\n\n case PlainValue.Type.QUOTE_SINGLE:\n return new QuoteSingle(type, props);\n\n /* istanbul ignore next */\n\n default:\n return null;\n // should never happen\n }\n}\n/**\n * @param {boolean} atLineStart - Node starts at beginning of line\n * @param {boolean} inFlow - true if currently in a flow context\n * @param {boolean} inCollection - true if currently in a collection context\n * @param {number} indent - Current level of indentation\n * @param {number} lineStart - Start of the current line\n * @param {Node} parent - The parent of the node\n * @param {string} src - Source of the YAML document\n */\n\n\nclass ParseContext {\n static parseType(src, offset, inFlow) {\n switch (src[offset]) {\n case '*':\n return PlainValue.Type.ALIAS;\n\n case '>':\n return PlainValue.Type.BLOCK_FOLDED;\n\n case '|':\n return PlainValue.Type.BLOCK_LITERAL;\n\n case '{':\n return PlainValue.Type.FLOW_MAP;\n\n case '[':\n return PlainValue.Type.FLOW_SEQ;\n\n case '?':\n return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.MAP_KEY : PlainValue.Type.PLAIN;\n\n case ':':\n return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.MAP_VALUE : PlainValue.Type.PLAIN;\n\n case '-':\n return !inFlow && PlainValue.Node.atBlank(src, offset + 1, true) ? PlainValue.Type.SEQ_ITEM : PlainValue.Type.PLAIN;\n\n case '\"':\n return PlainValue.Type.QUOTE_DOUBLE;\n\n case \"'\":\n return PlainValue.Type.QUOTE_SINGLE;\n\n default:\n return PlainValue.Type.PLAIN;\n }\n }\n\n constructor(orig = {}, {\n atLineStart,\n inCollection,\n inFlow,\n indent,\n lineStart,\n parent\n } = {}) {\n PlainValue._defineProperty(this, \"parseNode\", (overlay, start) => {\n if (PlainValue.Node.atDocumentBoundary(this.src, start)) return null;\n const context = new ParseContext(this, overlay);\n const {\n props,\n type,\n valueStart\n } = context.parseProps(start);\n const node = createNewNode(type, props);\n let offset = node.parse(context, valueStart);\n node.range = new PlainValue.Range(start, offset);\n /* istanbul ignore if */\n\n if (offset <= start) {\n // This should never happen, but if it does, let's make sure to at least\n // step one character forward to avoid a busy loop.\n node.error = new Error(`Node#parse consumed no characters`);\n node.error.parseEnd = offset;\n node.error.source = node;\n node.range.end = start + 1;\n }\n\n if (context.nodeStartsCollection(node)) {\n if (!node.error && !context.atLineStart && context.parent.type === PlainValue.Type.DOCUMENT) {\n node.error = new PlainValue.YAMLSyntaxError(node, 'Block collection must not have preceding content here (e.g. directives-end indicator)');\n }\n\n const collection = new Collection(node);\n offset = collection.parse(new ParseContext(context), offset);\n collection.range = new PlainValue.Range(start, offset);\n return collection;\n }\n\n return node;\n });\n\n this.atLineStart = atLineStart != null ? atLineStart : orig.atLineStart || false;\n this.inCollection = inCollection != null ? inCollection : orig.inCollection || false;\n this.inFlow = inFlow != null ? inFlow : orig.inFlow || false;\n this.indent = indent != null ? indent : orig.indent;\n this.lineStart = lineStart != null ? lineStart : orig.lineStart;\n this.parent = parent != null ? parent : orig.parent || {};\n this.root = orig.root;\n this.src = orig.src;\n }\n\n nodeStartsCollection(node) {\n const {\n inCollection,\n inFlow,\n src\n } = this;\n if (inCollection || inFlow) return false;\n if (node instanceof CollectionItem) return true; // check for implicit key\n\n let offset = node.range.end;\n if (src[offset] === '\\n' || src[offset - 1] === '\\n') return false;\n offset = PlainValue.Node.endOfWhiteSpace(src, offset);\n return src[offset] === ':';\n } // Anchor and tag are before type, which determines the node implementation\n // class; hence this intermediate step.\n\n\n parseProps(offset) {\n const {\n inFlow,\n parent,\n src\n } = this;\n const props = [];\n let lineHasProps = false;\n offset = this.atLineStart ? PlainValue.Node.endOfIndent(src, offset) : PlainValue.Node.endOfWhiteSpace(src, offset);\n let ch = src[offset];\n\n while (ch === PlainValue.Char.ANCHOR || ch === PlainValue.Char.COMMENT || ch === PlainValue.Char.TAG || ch === '\\n') {\n if (ch === '\\n') {\n let inEnd = offset;\n let lineStart;\n\n do {\n lineStart = inEnd + 1;\n inEnd = PlainValue.Node.endOfIndent(src, lineStart);\n } while (src[inEnd] === '\\n');\n\n const indentDiff = inEnd - (lineStart + this.indent);\n const noIndicatorAsIndent = parent.type === PlainValue.Type.SEQ_ITEM && parent.context.atLineStart;\n if (src[inEnd] !== '#' && !PlainValue.Node.nextNodeIsIndented(src[inEnd], indentDiff, !noIndicatorAsIndent)) break;\n this.atLineStart = true;\n this.lineStart = lineStart;\n lineHasProps = false;\n offset = inEnd;\n } else if (ch === PlainValue.Char.COMMENT) {\n const end = PlainValue.Node.endOfLine(src, offset + 1);\n props.push(new PlainValue.Range(offset, end));\n offset = end;\n } else {\n let end = PlainValue.Node.endOfIdentifier(src, offset + 1);\n\n if (ch === PlainValue.Char.TAG && src[end] === ',' && /^[a-zA-Z0-9-]+\\.[a-zA-Z0-9-]+,\\d\\d\\d\\d(-\\d\\d){0,2}\\/\\S/.test(src.slice(offset + 1, end + 13))) {\n // Let's presume we're dealing with a YAML 1.0 domain tag here, rather\n // than an empty but 'foo.bar' private-tagged node in a flow collection\n // followed without whitespace by a plain string starting with a year\n // or date divided by something.\n end = PlainValue.Node.endOfIdentifier(src, end + 5);\n }\n\n props.push(new PlainValue.Range(offset, end));\n lineHasProps = true;\n offset = PlainValue.Node.endOfWhiteSpace(src, end);\n }\n\n ch = src[offset];\n } // '- &a : b' has an anchor on an empty node\n\n\n if (lineHasProps && ch === ':' && PlainValue.Node.atBlank(src, offset + 1, true)) offset -= 1;\n const type = ParseContext.parseType(src, offset, inFlow);\n return {\n props,\n type,\n valueStart: offset\n };\n }\n /**\n * Parses a node from the source\n * @param {ParseContext} overlay\n * @param {number} start - Index of first non-whitespace character for the node\n * @returns {?Node} - null if at a document boundary\n */\n\n\n}\n\n// Published as 'yaml/parse-cst'\nfunction parse(src) {\n const cr = [];\n\n if (src.indexOf('\\r') !== -1) {\n src = src.replace(/\\r\\n?/g, (match, offset) => {\n if (match.length > 1) cr.push(offset);\n return '\\n';\n });\n }\n\n const documents = [];\n let offset = 0;\n\n do {\n const doc = new Document();\n const context = new ParseContext({\n src\n });\n offset = doc.parse(context, offset);\n documents.push(doc);\n } while (offset < src.length);\n\n documents.setOrigRanges = () => {\n if (cr.length === 0) return false;\n\n for (let i = 1; i < cr.length; ++i) cr[i] -= i;\n\n let crOffset = 0;\n\n for (let i = 0; i < documents.length; ++i) {\n crOffset = documents[i].setOrigRanges(cr, crOffset);\n }\n\n cr.splice(0, cr.length);\n return true;\n };\n\n documents.toString = () => documents.join('...\\n');\n\n return documents;\n}\n\nexports.parse = parse;\n","'use strict';\n\nvar PlainValue = require('./PlainValue-ec8e588e.js');\n\nfunction addCommentBefore(str, indent, comment) {\n if (!comment) return str;\n const cc = comment.replace(/[\\s\\S]^/gm, `$&${indent}#`);\n return `#${cc}\\n${indent}${str}`;\n}\nfunction addComment(str, indent, comment) {\n return !comment ? str : comment.indexOf('\\n') === -1 ? `${str} #${comment}` : `${str}\\n` + comment.replace(/^/gm, `${indent || ''}#`);\n}\n\nclass Node {}\n\nfunction toJSON(value, arg, ctx) {\n if (Array.isArray(value)) return value.map((v, i) => toJSON(v, String(i), ctx));\n\n if (value && typeof value.toJSON === 'function') {\n const anchor = ctx && ctx.anchors && ctx.anchors.get(value);\n if (anchor) ctx.onCreate = res => {\n anchor.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (anchor && ctx.onCreate) ctx.onCreate(res);\n return res;\n }\n\n if ((!ctx || !ctx.keep) && typeof value === 'bigint') return Number(value);\n return value;\n}\n\nclass Scalar extends Node {\n constructor(value) {\n super();\n this.value = value;\n }\n\n toJSON(arg, ctx) {\n return ctx && ctx.keep ? this.value : toJSON(this.value, arg, ctx);\n }\n\n toString() {\n return String(this.value);\n }\n\n}\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n\n if (Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n } else {\n const o = {};\n Object.defineProperty(o, k, {\n value: v,\n writable: true,\n enumerable: true,\n configurable: true\n });\n v = o;\n }\n }\n\n return schema.createNode(v, false);\n} // null, undefined, or an empty non-string iterable (e.g. [])\n\n\nconst isEmptyPath = path => path == null || typeof path === 'object' && path[Symbol.iterator]().next().done;\nclass Collection extends Node {\n constructor(schema) {\n super();\n\n PlainValue._defineProperty(this, \"items\", []);\n\n this.schema = schema;\n }\n\n addIn(path, value) {\n if (isEmptyPath(path)) this.add(value);else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (node instanceof Collection) node.addIn(rest, value);else if (node === undefined && this.schema) this.set(key, collectionFromPath(this.schema, rest, value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n\n deleteIn([key, ...rest]) {\n if (rest.length === 0) return this.delete(key);\n const node = this.get(key, true);\n if (node instanceof Collection) return node.deleteIn(rest);else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n\n getIn([key, ...rest], keepScalar) {\n const node = this.get(key, true);\n if (rest.length === 0) return !keepScalar && node instanceof Scalar ? node.value : node;else return node instanceof Collection ? node.getIn(rest, keepScalar) : undefined;\n }\n\n hasAllNullValues() {\n return this.items.every(node => {\n if (!node || node.type !== 'PAIR') return false;\n const n = node.value;\n return n == null || n instanceof Scalar && n.value == null && !n.commentBefore && !n.comment && !n.tag;\n });\n }\n\n hasIn([key, ...rest]) {\n if (rest.length === 0) return this.has(key);\n const node = this.get(key, true);\n return node instanceof Collection ? node.hasIn(rest) : false;\n }\n\n setIn([key, ...rest], value) {\n if (rest.length === 0) {\n this.set(key, value);\n } else {\n const node = this.get(key, true);\n if (node instanceof Collection) node.setIn(rest, value);else if (node === undefined && this.schema) this.set(key, collectionFromPath(this.schema, rest, value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n } // overridden in implementations\n\n /* istanbul ignore next */\n\n\n toJSON() {\n return null;\n }\n\n toString(ctx, {\n blockItem,\n flowChars,\n isMap,\n itemIndent\n }, onComment, onChompKeep) {\n const {\n indent,\n indentStep,\n stringify\n } = ctx;\n const inFlow = this.type === PlainValue.Type.FLOW_MAP || this.type === PlainValue.Type.FLOW_SEQ || ctx.inFlow;\n if (inFlow) itemIndent += indentStep;\n const allNullValues = isMap && this.hasAllNullValues();\n ctx = Object.assign({}, ctx, {\n allNullValues,\n indent: itemIndent,\n inFlow,\n type: null\n });\n let chompKeep = false;\n let hasItemWithNewLine = false;\n const nodes = this.items.reduce((nodes, item, i) => {\n let comment;\n\n if (item) {\n if (!chompKeep && item.spaceBefore) nodes.push({\n type: 'comment',\n str: ''\n });\n if (item.commentBefore) item.commentBefore.match(/^.*$/gm).forEach(line => {\n nodes.push({\n type: 'comment',\n str: `#${line}`\n });\n });\n if (item.comment) comment = item.comment;\n if (inFlow && (!chompKeep && item.spaceBefore || item.commentBefore || item.comment || item.key && (item.key.commentBefore || item.key.comment) || item.value && (item.value.commentBefore || item.value.comment))) hasItemWithNewLine = true;\n }\n\n chompKeep = false;\n let str = stringify(item, ctx, () => comment = null, () => chompKeep = true);\n if (inFlow && !hasItemWithNewLine && str.includes('\\n')) hasItemWithNewLine = true;\n if (inFlow && i < this.items.length - 1) str += ',';\n str = addComment(str, itemIndent, comment);\n if (chompKeep && (comment || inFlow)) chompKeep = false;\n nodes.push({\n type: 'item',\n str\n });\n return nodes;\n }, []);\n let str;\n\n if (nodes.length === 0) {\n str = flowChars.start + flowChars.end;\n } else if (inFlow) {\n const {\n start,\n end\n } = flowChars;\n const strings = nodes.map(n => n.str);\n\n if (hasItemWithNewLine || strings.reduce((sum, str) => sum + str.length + 2, 2) > Collection.maxFlowStringSingleLineLength) {\n str = start;\n\n for (const s of strings) {\n str += s ? `\\n${indentStep}${indent}${s}` : '\\n';\n }\n\n str += `\\n${indent}${end}`;\n } else {\n str = `${start} ${strings.join(' ')} ${end}`;\n }\n } else {\n const strings = nodes.map(blockItem);\n str = strings.shift();\n\n for (const s of strings) str += s ? `\\n${indent}${s}` : '\\n';\n }\n\n if (this.comment) {\n str += '\\n' + this.comment.replace(/^/gm, `${indent}#`);\n if (onComment) onComment();\n } else if (chompKeep && onChompKeep) onChompKeep();\n\n return str;\n }\n\n}\n\nPlainValue._defineProperty(Collection, \"maxFlowStringSingleLineLength\", 60);\n\nfunction asItemIndex(key) {\n let idx = key instanceof Scalar ? key.value : key;\n if (idx && typeof idx === 'string') idx = Number(idx);\n return Number.isInteger(idx) && idx >= 0 ? idx : null;\n}\n\nclass YAMLSeq extends Collection {\n add(value) {\n this.items.push(value);\n }\n\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number') return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number') return undefined;\n const it = this.items[idx];\n return !keepScalar && it instanceof Scalar ? it.value : it;\n }\n\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number') throw new Error(`Expected a valid index, not ${key}.`);\n this.items[idx] = value;\n }\n\n toJSON(_, ctx) {\n const seq = [];\n if (ctx && ctx.onCreate) ctx.onCreate(seq);\n let i = 0;\n\n for (const item of this.items) seq.push(toJSON(item, String(i++), ctx));\n\n return seq;\n }\n\n toString(ctx, onComment, onChompKeep) {\n if (!ctx) return JSON.stringify(this);\n return super.toString(ctx, {\n blockItem: n => n.type === 'comment' ? n.str : `- ${n.str}`,\n flowChars: {\n start: '[',\n end: ']'\n },\n isMap: false,\n itemIndent: (ctx.indent || '') + ' '\n }, onComment, onChompKeep);\n }\n\n}\n\nconst stringifyKey = (key, jsKey, ctx) => {\n if (jsKey === null) return '';\n if (typeof jsKey !== 'object') return String(jsKey);\n if (key instanceof Node && ctx && ctx.doc) return key.toString({\n anchors: Object.create(null),\n doc: ctx.doc,\n indent: '',\n indentStep: ctx.indentStep,\n inFlow: true,\n inStringifyKey: true,\n stringify: ctx.stringify\n });\n return JSON.stringify(jsKey);\n};\n\nclass Pair extends Node {\n constructor(key, value = null) {\n super();\n this.key = key;\n this.value = value;\n this.type = Pair.Type.PAIR;\n }\n\n get commentBefore() {\n return this.key instanceof Node ? this.key.commentBefore : undefined;\n }\n\n set commentBefore(cb) {\n if (this.key == null) this.key = new Scalar(null);\n if (this.key instanceof Node) this.key.commentBefore = cb;else {\n const msg = 'Pair.commentBefore is an alias for Pair.key.commentBefore. To set it, the key must be a Node.';\n throw new Error(msg);\n }\n }\n\n addToJSMap(ctx, map) {\n const key = toJSON(this.key, '', ctx);\n\n if (map instanceof Map) {\n const value = toJSON(this.value, key, ctx);\n map.set(key, value);\n } else if (map instanceof Set) {\n map.add(key);\n } else {\n const stringKey = stringifyKey(this.key, key, ctx);\n const value = toJSON(this.value, stringKey, ctx);\n if (stringKey in map) Object.defineProperty(map, stringKey, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });else map[stringKey] = value;\n }\n\n return map;\n }\n\n toJSON(_, ctx) {\n const pair = ctx && ctx.mapAsMap ? new Map() : {};\n return this.addToJSMap(ctx, pair);\n }\n\n toString(ctx, onComment, onChompKeep) {\n if (!ctx || !ctx.doc) return JSON.stringify(this);\n const {\n indent: indentSize,\n indentSeq,\n simpleKeys\n } = ctx.doc.options;\n let {\n key,\n value\n } = this;\n let keyComment = key instanceof Node && key.comment;\n\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n\n if (key instanceof Collection) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n\n let explicitKey = !simpleKeys && (!key || keyComment || (key instanceof Node ? key instanceof Collection || key.type === PlainValue.Type.BLOCK_FOLDED || key.type === PlainValue.Type.BLOCK_LITERAL : typeof key === 'object'));\n const {\n doc,\n indent,\n indentStep,\n stringify\n } = ctx;\n ctx = Object.assign({}, ctx, {\n implicitKey: !explicitKey,\n indent: indent + indentStep\n });\n let chompKeep = false;\n let str = stringify(key, ctx, () => keyComment = null, () => chompKeep = true);\n str = addComment(str, ctx.indent, keyComment);\n\n if (!explicitKey && str.length > 1024) {\n if (simpleKeys) throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n\n if (ctx.allNullValues && !simpleKeys) {\n if (this.comment) {\n str = addComment(str, ctx.indent, this.comment);\n if (onComment) onComment();\n } else if (chompKeep && !keyComment && onChompKeep) onChompKeep();\n\n return ctx.inFlow && !explicitKey ? str : `? ${str}`;\n }\n\n str = explicitKey ? `? ${str}\\n${indent}:` : `${str}:`;\n\n if (this.comment) {\n // expected (but not strictly required) to be a single-line comment\n str = addComment(str, ctx.indent, this.comment);\n if (onComment) onComment();\n }\n\n let vcb = '';\n let valueComment = null;\n\n if (value instanceof Node) {\n if (value.spaceBefore) vcb = '\\n';\n\n if (value.commentBefore) {\n const cs = value.commentBefore.replace(/^/gm, `${ctx.indent}#`);\n vcb += `\\n${cs}`;\n }\n\n valueComment = value.comment;\n } else if (value && typeof value === 'object') {\n value = doc.schema.createNode(value, true);\n }\n\n ctx.implicitKey = false;\n if (!explicitKey && !this.comment && value instanceof Scalar) ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n\n if (!indentSeq && indentSize >= 2 && !ctx.inFlow && !explicitKey && value instanceof YAMLSeq && value.type !== PlainValue.Type.FLOW_SEQ && !value.tag && !doc.anchors.getName(value)) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substr(2);\n }\n\n const valueStr = stringify(value, ctx, () => valueComment = null, () => chompKeep = true);\n let ws = ' ';\n\n if (vcb || this.comment) {\n ws = `${vcb}\\n${ctx.indent}`;\n } else if (!explicitKey && value instanceof Collection) {\n const flow = valueStr[0] === '[' || valueStr[0] === '{';\n if (!flow || valueStr.includes('\\n')) ws = `\\n${ctx.indent}`;\n } else if (valueStr[0] === '\\n') ws = '';\n\n if (chompKeep && !valueComment && onChompKeep) onChompKeep();\n return addComment(str + ws + valueStr, ctx.indent, valueComment);\n }\n\n}\n\nPlainValue._defineProperty(Pair, \"Type\", {\n PAIR: 'PAIR',\n MERGE_PAIR: 'MERGE_PAIR'\n});\n\nconst getAliasCount = (node, anchors) => {\n if (node instanceof Alias) {\n const anchor = anchors.get(node.source);\n return anchor.count * anchor.aliasCount;\n } else if (node instanceof Collection) {\n let count = 0;\n\n for (const item of node.items) {\n const c = getAliasCount(item, anchors);\n if (c > count) count = c;\n }\n\n return count;\n } else if (node instanceof Pair) {\n const kc = getAliasCount(node.key, anchors);\n const vc = getAliasCount(node.value, anchors);\n return Math.max(kc, vc);\n }\n\n return 1;\n};\n\nclass Alias extends Node {\n static stringify({\n range,\n source\n }, {\n anchors,\n doc,\n implicitKey,\n inStringifyKey\n }) {\n let anchor = Object.keys(anchors).find(a => anchors[a] === source);\n if (!anchor && inStringifyKey) anchor = doc.anchors.getName(source) || doc.anchors.newName();\n if (anchor) return `*${anchor}${implicitKey ? ' ' : ''}`;\n const msg = doc.anchors.getName(source) ? 'Alias node must be after source node' : 'Source node not found for alias node';\n throw new Error(`${msg} [${range}]`);\n }\n\n constructor(source) {\n super();\n this.source = source;\n this.type = PlainValue.Type.ALIAS;\n }\n\n set tag(t) {\n throw new Error('Alias nodes cannot have tags');\n }\n\n toJSON(arg, ctx) {\n if (!ctx) return toJSON(this.source, arg, ctx);\n const {\n anchors,\n maxAliasCount\n } = ctx;\n const anchor = anchors.get(this.source);\n /* istanbul ignore if */\n\n if (!anchor || anchor.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n if (this.cstNode) throw new PlainValue.YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg);\n }\n\n if (maxAliasCount >= 0) {\n anchor.count += 1;\n if (anchor.aliasCount === 0) anchor.aliasCount = getAliasCount(this.source, anchors);\n\n if (anchor.count * anchor.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n if (this.cstNode) throw new PlainValue.YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg);\n }\n }\n\n return anchor.res;\n } // Only called when stringifying an alias mapping key while constructing\n // Object output.\n\n\n toString(ctx) {\n return Alias.stringify(this, ctx);\n }\n\n}\n\nPlainValue._defineProperty(Alias, \"default\", true);\n\nfunction findPair(items, key) {\n const k = key instanceof Scalar ? key.value : key;\n\n for (const it of items) {\n if (it instanceof Pair) {\n if (it.key === key || it.key === k) return it;\n if (it.key && it.key.value === k) return it;\n }\n }\n\n return undefined;\n}\nclass YAMLMap extends Collection {\n add(pair, overwrite) {\n if (!pair) pair = new Pair(pair);else if (!(pair instanceof Pair)) pair = new Pair(pair.key || pair, pair.value);\n const prev = findPair(this.items, pair.key);\n const sortEntries = this.schema && this.schema.sortMapEntries;\n\n if (prev) {\n if (overwrite) prev.value = pair.value;else throw new Error(`Key ${pair.key} already set`);\n } else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(pair, item) < 0);\n if (i === -1) this.items.push(pair);else this.items.splice(i, 0, pair);\n } else {\n this.items.push(pair);\n }\n }\n\n delete(key) {\n const it = findPair(this.items, key);\n if (!it) return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it && it.value;\n return !keepScalar && node instanceof Scalar ? node.value : node;\n }\n\n has(key) {\n return !!findPair(this.items, key);\n }\n\n set(key, value) {\n this.add(new Pair(key, value), true);\n }\n /**\n * @param {*} arg ignored\n * @param {*} ctx Conversion context, originally set in Document#toJSON()\n * @param {Class} Type If set, forces the returned collection type\n * @returns {*} Instance of Type, Map, or Object\n */\n\n\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx && ctx.mapAsMap ? new Map() : {};\n if (ctx && ctx.onCreate) ctx.onCreate(map);\n\n for (const item of this.items) item.addToJSMap(ctx, map);\n\n return map;\n }\n\n toString(ctx, onComment, onChompKeep) {\n if (!ctx) return JSON.stringify(this);\n\n for (const item of this.items) {\n if (!(item instanceof Pair)) throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n\n return super.toString(ctx, {\n blockItem: n => n.str,\n flowChars: {\n start: '{',\n end: '}'\n },\n isMap: true,\n itemIndent: ctx.indent || ''\n }, onComment, onChompKeep);\n }\n\n}\n\nconst MERGE_KEY = '<<';\nclass Merge extends Pair {\n constructor(pair) {\n if (pair instanceof Pair) {\n let seq = pair.value;\n\n if (!(seq instanceof YAMLSeq)) {\n seq = new YAMLSeq();\n seq.items.push(pair.value);\n seq.range = pair.value.range;\n }\n\n super(pair.key, seq);\n this.range = pair.range;\n } else {\n super(new Scalar(MERGE_KEY), new YAMLSeq());\n }\n\n this.type = Pair.Type.MERGE_PAIR;\n } // If the value associated with a merge key is a single mapping node, each of\n // its key/value pairs is inserted into the current mapping, unless the key\n // already exists in it. If the value associated with the merge key is a\n // sequence, then this sequence is expected to contain mapping nodes and each\n // of these nodes is merged in turn according to its order in the sequence.\n // Keys in mapping nodes earlier in the sequence override keys specified in\n // later mapping nodes. -- http://yaml.org/type/merge.html\n\n\n addToJSMap(ctx, map) {\n for (const {\n source\n } of this.value.items) {\n if (!(source instanceof YAMLMap)) throw new Error('Merge sources must be maps');\n const srcMap = source.toJSON(null, ctx, Map);\n\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key)) map.set(key, value);\n } else if (map instanceof Set) {\n map.add(key);\n } else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n }\n\n return map;\n }\n\n toString(ctx, onComment) {\n const seq = this.value;\n if (seq.items.length > 1) return super.toString(ctx, onComment);\n this.value = seq.items[0];\n const str = super.toString(ctx, onComment);\n this.value = seq;\n return str;\n }\n\n}\n\nconst binaryOptions = {\n defaultType: PlainValue.Type.BLOCK_LITERAL,\n lineWidth: 76\n};\nconst boolOptions = {\n trueStr: 'true',\n falseStr: 'false'\n};\nconst intOptions = {\n asBigInt: false\n};\nconst nullOptions = {\n nullStr: 'null'\n};\nconst strOptions = {\n defaultType: PlainValue.Type.PLAIN,\n doubleQuoted: {\n jsonEncoding: false,\n minMultiLineLength: 40\n },\n fold: {\n lineWidth: 80,\n minContentWidth: 20\n }\n};\n\nfunction resolveScalar(str, tags, scalarFallback) {\n for (const {\n format,\n test,\n resolve\n } of tags) {\n if (test) {\n const match = str.match(test);\n\n if (match) {\n let res = resolve.apply(null, match);\n if (!(res instanceof Scalar)) res = new Scalar(res);\n if (format) res.format = format;\n return res;\n }\n }\n }\n\n if (scalarFallback) str = scalarFallback(str);\n return new Scalar(str);\n}\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted'; // presumes i+1 is at the start of a line\n// returns index of last newline in more-indented block\n\nconst consumeMoreIndentedLines = (text, i) => {\n let ch = text[i + 1];\n\n while (ch === ' ' || ch === '\\t') {\n do {\n ch = text[i += 1];\n } while (ch && ch !== '\\n');\n\n ch = text[i + 1];\n }\n\n return i;\n};\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n *\n * @param {string} text\n * @param {string} indent\n * @param {string} [mode='flow'] `'block'` prevents more-indented lines\n * from being folded; `'quoted'` allows for `\\` escapes, including escaped\n * newlines\n * @param {Object} options\n * @param {number} [options.indentAtStart] Accounts for leading contents on\n * the first line, defaulting to `indent.length`\n * @param {number} [options.lineWidth=80]\n * @param {number} [options.minContentWidth=20] Allow highly indented lines to\n * stretch the line width or indent content from the start\n * @param {function} options.onFold Called once if the text is folded\n * @param {function} options.onFold Called once if any line of text exceeds\n * lineWidth characters\n */\n\n\nfunction foldFlowLines(text, indent, mode, {\n indentAtStart,\n lineWidth = 80,\n minContentWidth = 20,\n onFold,\n onOverflow\n}) {\n if (!lineWidth || lineWidth < 0) return text;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep) return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth)) folds.push(0);else end = lineWidth - indentAtStart;\n }\n\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i);\n if (i !== -1) end = i + endStep;\n }\n\n for (let ch; ch = text[i += 1];) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n\n case 'u':\n i += 5;\n break;\n\n case 'U':\n i += 9;\n break;\n\n default:\n i += 1;\n }\n\n escEnd = i;\n }\n\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK) i = consumeMoreIndentedLines(text, i);\n end = i + endStep;\n split = undefined;\n } else {\n if (ch === ' ' && prev && prev !== ' ' && prev !== '\\n' && prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t') split = i;\n }\n\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n } else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[i += 1];\n overflow = true;\n } // Account for newline escape, but don't break preceding escape\n\n\n const j = i > escEnd + 1 ? i - 2 : escStart - 1; // Bail out if lineWidth & minContentWidth are shorter than an escape string\n\n if (escapedFolds[j]) return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n } else {\n overflow = true;\n }\n }\n }\n\n prev = ch;\n }\n\n if (overflow && onOverflow) onOverflow();\n if (folds.length === 0) return text;\n if (onFold) onFold();\n let res = text.slice(0, folds[0]);\n\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0) res = `\\n${indent}${text.slice(0, end)}`;else {\n if (mode === FOLD_QUOTED && escapedFolds[fold]) res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n\n return res;\n}\n\nconst getFoldOptions = ({\n indentAtStart\n}) => indentAtStart ? Object.assign({\n indentAtStart\n}, strOptions.fold) : strOptions.fold; // Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\n\n\nconst containsDocumentMarker = str => /^(%|---|\\.\\.\\.)/m.test(str);\n\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0) return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit) return false;\n\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit) return true;\n start = i + 1;\n if (strLen - start <= limit) return false;\n }\n }\n\n return true;\n}\n\nfunction doubleQuotedString(value, ctx) {\n const {\n implicitKey\n } = ctx;\n const {\n jsonEncoding,\n minMultiLineLength\n } = strOptions.doubleQuoted;\n const json = JSON.stringify(value);\n if (jsonEncoding) return json;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n\n if (ch === '\\\\') switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n\n case '0007':\n str += '\\\\a';\n break;\n\n case '000b':\n str += '\\\\v';\n break;\n\n case '001b':\n str += '\\\\e';\n break;\n\n case '0085':\n str += '\\\\N';\n break;\n\n case '00a0':\n str += '\\\\_';\n break;\n\n case '2028':\n str += '\\\\L';\n break;\n\n case '2029':\n str += '\\\\P';\n break;\n\n default:\n if (code.substr(0, 2) === '00') str += '\\\\x' + code.substr(2);else str += json.substr(i, 6);\n }\n\n i += 5;\n start = i + 1;\n }\n break;\n\n case 'n':\n if (implicitKey || json[i + 2] === '\"' || json.length < minMultiLineLength) {\n i += 1;\n } else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n\n while (json[i + 2] === '\\\\' && json[i + 3] === 'n' && json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n\n str += indent; // space after newline needs to be escaped to not be folded\n\n if (json[i + 2] === ' ') str += '\\\\';\n i += 1;\n start = i + 1;\n }\n\n break;\n\n default:\n i += 1;\n }\n }\n\n str = start ? str + json.slice(start) : json;\n return implicitKey ? str : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx));\n}\n\nfunction singleQuotedString(value, ctx) {\n if (ctx.implicitKey) {\n if (/\\n/.test(value)) return doubleQuotedString(value, ctx);\n } else {\n // single quoted string can't have leading or trailing whitespace around newline\n if (/[ \\t]\\n|\\n[ \\t]/.test(value)) return doubleQuotedString(value, ctx);\n }\n\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey ? res : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx));\n}\n\nfunction blockString({\n comment,\n type,\n value\n}, ctx, onComment, onChompKeep) {\n // 1. Block can't end in whitespace unless the last line is non-empty.\n // 2. Strings consisting of only whitespace are best rendered explicitly.\n if (/\\n[\\t ]+$/.test(value) || /^\\s*$/.test(value)) {\n return doubleQuotedString(value, ctx);\n }\n\n const indent = ctx.indent || (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : '');\n const indentSize = indent ? '2' : '1'; // root is at -1\n\n const literal = type === PlainValue.Type.BLOCK_FOLDED ? false : type === PlainValue.Type.BLOCK_LITERAL ? true : !lineLengthOverLimit(value, strOptions.fold.lineWidth, indent.length);\n let header = literal ? '|' : '>';\n if (!value) return header + '\\n';\n let wsStart = '';\n let wsEnd = '';\n value = value.replace(/[\\n\\t ]*$/, ws => {\n const n = ws.indexOf('\\n');\n\n if (n === -1) {\n header += '-'; // strip\n } else if (value === ws || n !== ws.length - 1) {\n header += '+'; // keep\n\n if (onChompKeep) onChompKeep();\n }\n\n wsEnd = ws.replace(/\\n$/, '');\n return '';\n }).replace(/^[\\n ]*/, ws => {\n if (ws.indexOf(' ') !== -1) header += indentSize;\n const m = ws.match(/ +$/);\n\n if (m) {\n wsStart = ws.slice(0, -m[0].length);\n return m[0];\n } else {\n wsStart = ws;\n return '';\n }\n });\n if (wsEnd) wsEnd = wsEnd.replace(/\\n+(?!\\n|$)/g, `$&${indent}`);\n if (wsStart) wsStart = wsStart.replace(/\\n+/g, `$&${indent}`);\n\n if (comment) {\n header += ' #' + comment.replace(/ ?[\\r\\n]+/g, ' ');\n if (onComment) onComment();\n }\n\n if (!value) return `${header}${indentSize}\\n${indent}${wsEnd}`;\n\n if (literal) {\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `${header}\\n${indent}${wsStart}${value}${wsEnd}`;\n }\n\n value = value.replace(/\\n+/g, '\\n$&').replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ ind.line ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n const body = foldFlowLines(`${wsStart}${value}${wsEnd}`, indent, FOLD_BLOCK, strOptions.fold);\n return `${header}\\n${indent}${body}`;\n}\n\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const {\n comment,\n type,\n value\n } = item;\n const {\n actualString,\n implicitKey,\n indent,\n inFlow\n } = ctx;\n\n if (implicitKey && /[\\n[\\]{},]/.test(value) || inFlow && /[[\\]{},]/.test(value)) {\n return doubleQuotedString(value, ctx);\n }\n\n if (!value || /^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - empty string, '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || value.indexOf('\\n') === -1 ? value.indexOf('\"') !== -1 && value.indexOf(\"'\") === -1 ? singleQuotedString(value, ctx) : doubleQuotedString(value, ctx) : blockString(item, ctx, onComment, onChompKeep);\n }\n\n if (!implicitKey && !inFlow && type !== PlainValue.Type.PLAIN && value.indexOf('\\n') !== -1) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n\n if (indent === '' && containsDocumentMarker(value)) {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n\n const str = value.replace(/\\n+/g, `$&\\n${indent}`); // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n\n if (actualString) {\n const {\n tags\n } = ctx.doc.schema;\n const resolved = resolveScalar(str, tags, tags.scalarFallback).value;\n if (typeof resolved !== 'string') return doubleQuotedString(value, ctx);\n }\n\n const body = implicitKey ? str : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx));\n\n if (comment && !inFlow && (body.indexOf('\\n') !== -1 || comment.indexOf('\\n') !== -1)) {\n if (onComment) onComment();\n return addCommentBefore(body, indent, comment);\n }\n\n return body;\n}\n\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const {\n defaultType\n } = strOptions;\n const {\n implicitKey,\n inFlow\n } = ctx;\n let {\n type,\n value\n } = item;\n\n if (typeof value !== 'string') {\n value = String(value);\n item = Object.assign({}, item, {\n value\n });\n }\n\n const _stringify = _type => {\n switch (_type) {\n case PlainValue.Type.BLOCK_FOLDED:\n case PlainValue.Type.BLOCK_LITERAL:\n return blockString(item, ctx, onComment, onChompKeep);\n\n case PlainValue.Type.QUOTE_DOUBLE:\n return doubleQuotedString(value, ctx);\n\n case PlainValue.Type.QUOTE_SINGLE:\n return singleQuotedString(value, ctx);\n\n case PlainValue.Type.PLAIN:\n return plainString(item, ctx, onComment, onChompKeep);\n\n default:\n return null;\n }\n };\n\n if (type !== PlainValue.Type.QUOTE_DOUBLE && /[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f]/.test(value)) {\n // force double quotes on control characters\n type = PlainValue.Type.QUOTE_DOUBLE;\n } else if ((implicitKey || inFlow) && (type === PlainValue.Type.BLOCK_FOLDED || type === PlainValue.Type.BLOCK_LITERAL)) {\n // should not happen; blocks are not valid inside flow containers\n type = PlainValue.Type.QUOTE_DOUBLE;\n }\n\n let res = _stringify(type);\n\n if (res === null) {\n res = _stringify(defaultType);\n if (res === null) throw new Error(`Unsupported default string type ${defaultType}`);\n }\n\n return res;\n}\n\nfunction stringifyNumber({\n format,\n minFractionDigits,\n tag,\n value\n}) {\n if (typeof value === 'bigint') return String(value);\n if (!isFinite(value)) return isNaN(value) ? '.nan' : value < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n\n if (!format && minFractionDigits && (!tag || tag === 'tag:yaml.org,2002:float') && /^\\d/.test(n)) {\n let i = n.indexOf('.');\n\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n\n let d = minFractionDigits - (n.length - i - 1);\n\n while (d-- > 0) n += '0';\n }\n\n return n;\n}\n\nfunction checkFlowCollectionEnd(errors, cst) {\n let char, name;\n\n switch (cst.type) {\n case PlainValue.Type.FLOW_MAP:\n char = '}';\n name = 'flow map';\n break;\n\n case PlainValue.Type.FLOW_SEQ:\n char = ']';\n name = 'flow sequence';\n break;\n\n default:\n errors.push(new PlainValue.YAMLSemanticError(cst, 'Not a flow collection!?'));\n return;\n }\n\n let lastItem;\n\n for (let i = cst.items.length - 1; i >= 0; --i) {\n const item = cst.items[i];\n\n if (!item || item.type !== PlainValue.Type.COMMENT) {\n lastItem = item;\n break;\n }\n }\n\n if (lastItem && lastItem.char !== char) {\n const msg = `Expected ${name} to end with ${char}`;\n let err;\n\n if (typeof lastItem.offset === 'number') {\n err = new PlainValue.YAMLSemanticError(cst, msg);\n err.offset = lastItem.offset + 1;\n } else {\n err = new PlainValue.YAMLSemanticError(lastItem, msg);\n if (lastItem.range && lastItem.range.end) err.offset = lastItem.range.end - lastItem.range.start;\n }\n\n errors.push(err);\n }\n}\nfunction checkFlowCommentSpace(errors, comment) {\n const prev = comment.context.src[comment.range.start - 1];\n\n if (prev !== '\\n' && prev !== '\\t' && prev !== ' ') {\n const msg = 'Comments must be separated from other tokens by white space characters';\n errors.push(new PlainValue.YAMLSemanticError(comment, msg));\n }\n}\nfunction getLongKeyError(source, key) {\n const sk = String(key);\n const k = sk.substr(0, 8) + '...' + sk.substr(-8);\n return new PlainValue.YAMLSemanticError(source, `The \"${k}\" key is too long`);\n}\nfunction resolveComments(collection, comments) {\n for (const {\n afterKey,\n before,\n comment\n } of comments) {\n let item = collection.items[before];\n\n if (!item) {\n if (comment !== undefined) {\n if (collection.comment) collection.comment += '\\n' + comment;else collection.comment = comment;\n }\n } else {\n if (afterKey && item.value) item = item.value;\n\n if (comment === undefined) {\n if (afterKey || !item.commentBefore) item.spaceBefore = true;\n } else {\n if (item.commentBefore) item.commentBefore += '\\n' + comment;else item.commentBefore = comment;\n }\n }\n }\n}\n\n// on error, will return { str: string, errors: Error[] }\nfunction resolveString(doc, node) {\n const res = node.strValue;\n if (!res) return '';\n if (typeof res === 'string') return res;\n res.errors.forEach(error => {\n if (!error.source) error.source = node;\n doc.errors.push(error);\n });\n return res.str;\n}\n\nfunction resolveTagHandle(doc, node) {\n const {\n handle,\n suffix\n } = node.tag;\n let prefix = doc.tagPrefixes.find(p => p.handle === handle);\n\n if (!prefix) {\n const dtp = doc.getDefaults().tagPrefixes;\n if (dtp) prefix = dtp.find(p => p.handle === handle);\n if (!prefix) throw new PlainValue.YAMLSemanticError(node, `The ${handle} tag handle is non-default and was not declared.`);\n }\n\n if (!suffix) throw new PlainValue.YAMLSemanticError(node, `The ${handle} tag has no suffix.`);\n\n if (handle === '!' && (doc.version || doc.options.version) === '1.0') {\n if (suffix[0] === '^') {\n doc.warnings.push(new PlainValue.YAMLWarning(node, 'YAML 1.0 ^ tag expansion is not supported'));\n return suffix;\n }\n\n if (/[:/]/.test(suffix)) {\n // word/foo -> tag:word.yaml.org,2002:foo\n const vocab = suffix.match(/^([a-z0-9-]+)\\/(.*)/i);\n return vocab ? `tag:${vocab[1]}.yaml.org,2002:${vocab[2]}` : `tag:${suffix}`;\n }\n }\n\n return prefix.prefix + decodeURIComponent(suffix);\n}\n\nfunction resolveTagName(doc, node) {\n const {\n tag,\n type\n } = node;\n let nonSpecific = false;\n\n if (tag) {\n const {\n handle,\n suffix,\n verbatim\n } = tag;\n\n if (verbatim) {\n if (verbatim !== '!' && verbatim !== '!!') return verbatim;\n const msg = `Verbatim tags aren't resolved, so ${verbatim} is invalid.`;\n doc.errors.push(new PlainValue.YAMLSemanticError(node, msg));\n } else if (handle === '!' && !suffix) {\n nonSpecific = true;\n } else {\n try {\n return resolveTagHandle(doc, node);\n } catch (error) {\n doc.errors.push(error);\n }\n }\n }\n\n switch (type) {\n case PlainValue.Type.BLOCK_FOLDED:\n case PlainValue.Type.BLOCK_LITERAL:\n case PlainValue.Type.QUOTE_DOUBLE:\n case PlainValue.Type.QUOTE_SINGLE:\n return PlainValue.defaultTags.STR;\n\n case PlainValue.Type.FLOW_MAP:\n case PlainValue.Type.MAP:\n return PlainValue.defaultTags.MAP;\n\n case PlainValue.Type.FLOW_SEQ:\n case PlainValue.Type.SEQ:\n return PlainValue.defaultTags.SEQ;\n\n case PlainValue.Type.PLAIN:\n return nonSpecific ? PlainValue.defaultTags.STR : null;\n\n default:\n return null;\n }\n}\n\nfunction resolveByTagName(doc, node, tagName) {\n const {\n tags\n } = doc.schema;\n const matchWithTest = [];\n\n for (const tag of tags) {\n if (tag.tag === tagName) {\n if (tag.test) matchWithTest.push(tag);else {\n const res = tag.resolve(doc, node);\n return res instanceof Collection ? res : new Scalar(res);\n }\n }\n }\n\n const str = resolveString(doc, node);\n if (typeof str === 'string' && matchWithTest.length > 0) return resolveScalar(str, matchWithTest, tags.scalarFallback);\n return null;\n}\n\nfunction getFallbackTagName({\n type\n}) {\n switch (type) {\n case PlainValue.Type.FLOW_MAP:\n case PlainValue.Type.MAP:\n return PlainValue.defaultTags.MAP;\n\n case PlainValue.Type.FLOW_SEQ:\n case PlainValue.Type.SEQ:\n return PlainValue.defaultTags.SEQ;\n\n default:\n return PlainValue.defaultTags.STR;\n }\n}\n\nfunction resolveTag(doc, node, tagName) {\n try {\n const res = resolveByTagName(doc, node, tagName);\n\n if (res) {\n if (tagName && node.tag) res.tag = tagName;\n return res;\n }\n } catch (error) {\n /* istanbul ignore if */\n if (!error.source) error.source = node;\n doc.errors.push(error);\n return null;\n }\n\n try {\n const fallback = getFallbackTagName(node);\n if (!fallback) throw new Error(`The tag ${tagName} is unavailable`);\n const msg = `The tag ${tagName} is unavailable, falling back to ${fallback}`;\n doc.warnings.push(new PlainValue.YAMLWarning(node, msg));\n const res = resolveByTagName(doc, node, fallback);\n res.tag = tagName;\n return res;\n } catch (error) {\n const refError = new PlainValue.YAMLReferenceError(node, error.message);\n refError.stack = error.stack;\n doc.errors.push(refError);\n return null;\n }\n}\n\nconst isCollectionItem = node => {\n if (!node) return false;\n const {\n type\n } = node;\n return type === PlainValue.Type.MAP_KEY || type === PlainValue.Type.MAP_VALUE || type === PlainValue.Type.SEQ_ITEM;\n};\n\nfunction resolveNodeProps(errors, node) {\n const comments = {\n before: [],\n after: []\n };\n let hasAnchor = false;\n let hasTag = false;\n const props = isCollectionItem(node.context.parent) ? node.context.parent.props.concat(node.props) : node.props;\n\n for (const {\n start,\n end\n } of props) {\n switch (node.context.src[start]) {\n case PlainValue.Char.COMMENT:\n {\n if (!node.commentHasRequiredWhitespace(start)) {\n const msg = 'Comments must be separated from other tokens by white space characters';\n errors.push(new PlainValue.YAMLSemanticError(node, msg));\n }\n\n const {\n header,\n valueRange\n } = node;\n const cc = valueRange && (start > valueRange.start || header && start > header.start) ? comments.after : comments.before;\n cc.push(node.context.src.slice(start + 1, end));\n break;\n }\n // Actual anchor & tag resolution is handled by schema, here we just complain\n\n case PlainValue.Char.ANCHOR:\n if (hasAnchor) {\n const msg = 'A node can have at most one anchor';\n errors.push(new PlainValue.YAMLSemanticError(node, msg));\n }\n\n hasAnchor = true;\n break;\n\n case PlainValue.Char.TAG:\n if (hasTag) {\n const msg = 'A node can have at most one tag';\n errors.push(new PlainValue.YAMLSemanticError(node, msg));\n }\n\n hasTag = true;\n break;\n }\n }\n\n return {\n comments,\n hasAnchor,\n hasTag\n };\n}\n\nfunction resolveNodeValue(doc, node) {\n const {\n anchors,\n errors,\n schema\n } = doc;\n\n if (node.type === PlainValue.Type.ALIAS) {\n const name = node.rawValue;\n const src = anchors.getNode(name);\n\n if (!src) {\n const msg = `Aliased anchor not found: ${name}`;\n errors.push(new PlainValue.YAMLReferenceError(node, msg));\n return null;\n } // Lazy resolution for circular references\n\n\n const res = new Alias(src);\n\n anchors._cstAliases.push(res);\n\n return res;\n }\n\n const tagName = resolveTagName(doc, node);\n if (tagName) return resolveTag(doc, node, tagName);\n\n if (node.type !== PlainValue.Type.PLAIN) {\n const msg = `Failed to resolve ${node.type} node here`;\n errors.push(new PlainValue.YAMLSyntaxError(node, msg));\n return null;\n }\n\n try {\n const str = resolveString(doc, node);\n return resolveScalar(str, schema.tags, schema.tags.scalarFallback);\n } catch (error) {\n if (!error.source) error.source = node;\n errors.push(error);\n return null;\n }\n} // sets node.resolved on success\n\n\nfunction resolveNode(doc, node) {\n if (!node) return null;\n if (node.error) doc.errors.push(node.error);\n const {\n comments,\n hasAnchor,\n hasTag\n } = resolveNodeProps(doc.errors, node);\n\n if (hasAnchor) {\n const {\n anchors\n } = doc;\n const name = node.anchor;\n const prev = anchors.getNode(name); // At this point, aliases for any preceding node with the same anchor\n // name have already been resolved, so it may safely be renamed.\n\n if (prev) anchors.map[anchors.newName(name)] = prev; // During parsing, we need to store the CST node in anchors.map as\n // anchors need to be available during resolution to allow for\n // circular references.\n\n anchors.map[name] = node;\n }\n\n if (node.type === PlainValue.Type.ALIAS && (hasAnchor || hasTag)) {\n const msg = 'An alias node must not specify any properties';\n doc.errors.push(new PlainValue.YAMLSemanticError(node, msg));\n }\n\n const res = resolveNodeValue(doc, node);\n\n if (res) {\n res.range = [node.range.start, node.range.end];\n if (doc.options.keepCstNodes) res.cstNode = node;\n if (doc.options.keepNodeTypes) res.type = node.type;\n const cb = comments.before.join('\\n');\n\n if (cb) {\n res.commentBefore = res.commentBefore ? `${res.commentBefore}\\n${cb}` : cb;\n }\n\n const ca = comments.after.join('\\n');\n if (ca) res.comment = res.comment ? `${res.comment}\\n${ca}` : ca;\n }\n\n return node.resolved = res;\n}\n\nfunction resolveMap(doc, cst) {\n if (cst.type !== PlainValue.Type.MAP && cst.type !== PlainValue.Type.FLOW_MAP) {\n const msg = `A ${cst.type} node cannot be resolved as a mapping`;\n doc.errors.push(new PlainValue.YAMLSyntaxError(cst, msg));\n return null;\n }\n\n const {\n comments,\n items\n } = cst.type === PlainValue.Type.FLOW_MAP ? resolveFlowMapItems(doc, cst) : resolveBlockMapItems(doc, cst);\n const map = new YAMLMap();\n map.items = items;\n resolveComments(map, comments);\n let hasCollectionKey = false;\n\n for (let i = 0; i < items.length; ++i) {\n const {\n key: iKey\n } = items[i];\n if (iKey instanceof Collection) hasCollectionKey = true;\n\n if (doc.schema.merge && iKey && iKey.value === MERGE_KEY) {\n items[i] = new Merge(items[i]);\n const sources = items[i].value.items;\n let error = null;\n sources.some(node => {\n if (node instanceof Alias) {\n // During parsing, alias sources are CST nodes; to account for\n // circular references their resolved values can't be used here.\n const {\n type\n } = node.source;\n if (type === PlainValue.Type.MAP || type === PlainValue.Type.FLOW_MAP) return false;\n return error = 'Merge nodes aliases can only point to maps';\n }\n\n return error = 'Merge nodes can only have Alias nodes as values';\n });\n if (error) doc.errors.push(new PlainValue.YAMLSemanticError(cst, error));\n } else {\n for (let j = i + 1; j < items.length; ++j) {\n const {\n key: jKey\n } = items[j];\n\n if (iKey === jKey || iKey && jKey && Object.prototype.hasOwnProperty.call(iKey, 'value') && iKey.value === jKey.value) {\n const msg = `Map keys must be unique; \"${iKey}\" is repeated`;\n doc.errors.push(new PlainValue.YAMLSemanticError(cst, msg));\n break;\n }\n }\n }\n }\n\n if (hasCollectionKey && !doc.options.mapAsMap) {\n const warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.';\n doc.warnings.push(new PlainValue.YAMLWarning(cst, warn));\n }\n\n cst.resolved = map;\n return map;\n}\n\nconst valueHasPairComment = ({\n context: {\n lineStart,\n node,\n src\n },\n props\n}) => {\n if (props.length === 0) return false;\n const {\n start\n } = props[0];\n if (node && start > node.valueRange.start) return false;\n if (src[start] !== PlainValue.Char.COMMENT) return false;\n\n for (let i = lineStart; i < start; ++i) if (src[i] === '\\n') return false;\n\n return true;\n};\n\nfunction resolvePairComment(item, pair) {\n if (!valueHasPairComment(item)) return;\n const comment = item.getPropValue(0, PlainValue.Char.COMMENT, true);\n let found = false;\n const cb = pair.value.commentBefore;\n\n if (cb && cb.startsWith(comment)) {\n pair.value.commentBefore = cb.substr(comment.length + 1);\n found = true;\n } else {\n const cc = pair.value.comment;\n\n if (!item.node && cc && cc.startsWith(comment)) {\n pair.value.comment = cc.substr(comment.length + 1);\n found = true;\n }\n }\n\n if (found) pair.comment = comment;\n}\n\nfunction resolveBlockMapItems(doc, cst) {\n const comments = [];\n const items = [];\n let key = undefined;\n let keyStart = null;\n\n for (let i = 0; i < cst.items.length; ++i) {\n const item = cst.items[i];\n\n switch (item.type) {\n case PlainValue.Type.BLANK_LINE:\n comments.push({\n afterKey: !!key,\n before: items.length\n });\n break;\n\n case PlainValue.Type.COMMENT:\n comments.push({\n afterKey: !!key,\n before: items.length,\n comment: item.comment\n });\n break;\n\n case PlainValue.Type.MAP_KEY:\n if (key !== undefined) items.push(new Pair(key));\n if (item.error) doc.errors.push(item.error);\n key = resolveNode(doc, item.node);\n keyStart = null;\n break;\n\n case PlainValue.Type.MAP_VALUE:\n {\n if (key === undefined) key = null;\n if (item.error) doc.errors.push(item.error);\n\n if (!item.context.atLineStart && item.node && item.node.type === PlainValue.Type.MAP && !item.node.context.atLineStart) {\n const msg = 'Nested mappings are not allowed in compact mappings';\n doc.errors.push(new PlainValue.YAMLSemanticError(item.node, msg));\n }\n\n let valueNode = item.node;\n\n if (!valueNode && item.props.length > 0) {\n // Comments on an empty mapping value need to be preserved, so we\n // need to construct a minimal empty node here to use instead of the\n // missing `item.node`. -- eemeli/yaml#19\n valueNode = new PlainValue.PlainValue(PlainValue.Type.PLAIN, []);\n valueNode.context = {\n parent: item,\n src: item.context.src\n };\n const pos = item.range.start + 1;\n valueNode.range = {\n start: pos,\n end: pos\n };\n valueNode.valueRange = {\n start: pos,\n end: pos\n };\n\n if (typeof item.range.origStart === 'number') {\n const origPos = item.range.origStart + 1;\n valueNode.range.origStart = valueNode.range.origEnd = origPos;\n valueNode.valueRange.origStart = valueNode.valueRange.origEnd = origPos;\n }\n }\n\n const pair = new Pair(key, resolveNode(doc, valueNode));\n resolvePairComment(item, pair);\n items.push(pair);\n\n if (key && typeof keyStart === 'number') {\n if (item.range.start > keyStart + 1024) doc.errors.push(getLongKeyError(cst, key));\n }\n\n key = undefined;\n keyStart = null;\n }\n break;\n\n default:\n if (key !== undefined) items.push(new Pair(key));\n key = resolveNode(doc, item);\n keyStart = item.range.start;\n if (item.error) doc.errors.push(item.error);\n\n next: for (let j = i + 1;; ++j) {\n const nextItem = cst.items[j];\n\n switch (nextItem && nextItem.type) {\n case PlainValue.Type.BLANK_LINE:\n case PlainValue.Type.COMMENT:\n continue next;\n\n case PlainValue.Type.MAP_VALUE:\n break next;\n\n default:\n {\n const msg = 'Implicit map keys need to be followed by map values';\n doc.errors.push(new PlainValue.YAMLSemanticError(item, msg));\n break next;\n }\n }\n }\n\n if (item.valueRangeContainsNewline) {\n const msg = 'Implicit map keys need to be on a single line';\n doc.errors.push(new PlainValue.YAMLSemanticError(item, msg));\n }\n\n }\n }\n\n if (key !== undefined) items.push(new Pair(key));\n return {\n comments,\n items\n };\n}\n\nfunction resolveFlowMapItems(doc, cst) {\n const comments = [];\n const items = [];\n let key = undefined;\n let explicitKey = false;\n let next = '{';\n\n for (let i = 0; i < cst.items.length; ++i) {\n const item = cst.items[i];\n\n if (typeof item.char === 'string') {\n const {\n char,\n offset\n } = item;\n\n if (char === '?' && key === undefined && !explicitKey) {\n explicitKey = true;\n next = ':';\n continue;\n }\n\n if (char === ':') {\n if (key === undefined) key = null;\n\n if (next === ':') {\n next = ',';\n continue;\n }\n } else {\n if (explicitKey) {\n if (key === undefined && char !== ',') key = null;\n explicitKey = false;\n }\n\n if (key !== undefined) {\n items.push(new Pair(key));\n key = undefined;\n\n if (char === ',') {\n next = ':';\n continue;\n }\n }\n }\n\n if (char === '}') {\n if (i === cst.items.length - 1) continue;\n } else if (char === next) {\n next = ':';\n continue;\n }\n\n const msg = `Flow map contains an unexpected ${char}`;\n const err = new PlainValue.YAMLSyntaxError(cst, msg);\n err.offset = offset;\n doc.errors.push(err);\n } else if (item.type === PlainValue.Type.BLANK_LINE) {\n comments.push({\n afterKey: !!key,\n before: items.length\n });\n } else if (item.type === PlainValue.Type.COMMENT) {\n checkFlowCommentSpace(doc.errors, item);\n comments.push({\n afterKey: !!key,\n before: items.length,\n comment: item.comment\n });\n } else if (key === undefined) {\n if (next === ',') doc.errors.push(new PlainValue.YAMLSemanticError(item, 'Separator , missing in flow map'));\n key = resolveNode(doc, item);\n } else {\n if (next !== ',') doc.errors.push(new PlainValue.YAMLSemanticError(item, 'Indicator : missing in flow map entry'));\n items.push(new Pair(key, resolveNode(doc, item)));\n key = undefined;\n explicitKey = false;\n }\n }\n\n checkFlowCollectionEnd(doc.errors, cst);\n if (key !== undefined) items.push(new Pair(key));\n return {\n comments,\n items\n };\n}\n\nfunction resolveSeq(doc, cst) {\n if (cst.type !== PlainValue.Type.SEQ && cst.type !== PlainValue.Type.FLOW_SEQ) {\n const msg = `A ${cst.type} node cannot be resolved as a sequence`;\n doc.errors.push(new PlainValue.YAMLSyntaxError(cst, msg));\n return null;\n }\n\n const {\n comments,\n items\n } = cst.type === PlainValue.Type.FLOW_SEQ ? resolveFlowSeqItems(doc, cst) : resolveBlockSeqItems(doc, cst);\n const seq = new YAMLSeq();\n seq.items = items;\n resolveComments(seq, comments);\n\n if (!doc.options.mapAsMap && items.some(it => it instanceof Pair && it.key instanceof Collection)) {\n const warn = 'Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this.';\n doc.warnings.push(new PlainValue.YAMLWarning(cst, warn));\n }\n\n cst.resolved = seq;\n return seq;\n}\n\nfunction resolveBlockSeqItems(doc, cst) {\n const comments = [];\n const items = [];\n\n for (let i = 0; i < cst.items.length; ++i) {\n const item = cst.items[i];\n\n switch (item.type) {\n case PlainValue.Type.BLANK_LINE:\n comments.push({\n before: items.length\n });\n break;\n\n case PlainValue.Type.COMMENT:\n comments.push({\n comment: item.comment,\n before: items.length\n });\n break;\n\n case PlainValue.Type.SEQ_ITEM:\n if (item.error) doc.errors.push(item.error);\n items.push(resolveNode(doc, item.node));\n\n if (item.hasProps) {\n const msg = 'Sequence items cannot have tags or anchors before the - indicator';\n doc.errors.push(new PlainValue.YAMLSemanticError(item, msg));\n }\n\n break;\n\n default:\n if (item.error) doc.errors.push(item.error);\n doc.errors.push(new PlainValue.YAMLSyntaxError(item, `Unexpected ${item.type} node in sequence`));\n }\n }\n\n return {\n comments,\n items\n };\n}\n\nfunction resolveFlowSeqItems(doc, cst) {\n const comments = [];\n const items = [];\n let explicitKey = false;\n let key = undefined;\n let keyStart = null;\n let next = '[';\n let prevItem = null;\n\n for (let i = 0; i < cst.items.length; ++i) {\n const item = cst.items[i];\n\n if (typeof item.char === 'string') {\n const {\n char,\n offset\n } = item;\n\n if (char !== ':' && (explicitKey || key !== undefined)) {\n if (explicitKey && key === undefined) key = next ? items.pop() : null;\n items.push(new Pair(key));\n explicitKey = false;\n key = undefined;\n keyStart = null;\n }\n\n if (char === next) {\n next = null;\n } else if (!next && char === '?') {\n explicitKey = true;\n } else if (next !== '[' && char === ':' && key === undefined) {\n if (next === ',') {\n key = items.pop();\n\n if (key instanceof Pair) {\n const msg = 'Chaining flow sequence pairs is invalid';\n const err = new PlainValue.YAMLSemanticError(cst, msg);\n err.offset = offset;\n doc.errors.push(err);\n }\n\n if (!explicitKey && typeof keyStart === 'number') {\n const keyEnd = item.range ? item.range.start : item.offset;\n if (keyEnd > keyStart + 1024) doc.errors.push(getLongKeyError(cst, key));\n const {\n src\n } = prevItem.context;\n\n for (let i = keyStart; i < keyEnd; ++i) if (src[i] === '\\n') {\n const msg = 'Implicit keys of flow sequence pairs need to be on a single line';\n doc.errors.push(new PlainValue.YAMLSemanticError(prevItem, msg));\n break;\n }\n }\n } else {\n key = null;\n }\n\n keyStart = null;\n explicitKey = false;\n next = null;\n } else if (next === '[' || char !== ']' || i < cst.items.length - 1) {\n const msg = `Flow sequence contains an unexpected ${char}`;\n const err = new PlainValue.YAMLSyntaxError(cst, msg);\n err.offset = offset;\n doc.errors.push(err);\n }\n } else if (item.type === PlainValue.Type.BLANK_LINE) {\n comments.push({\n before: items.length\n });\n } else if (item.type === PlainValue.Type.COMMENT) {\n checkFlowCommentSpace(doc.errors, item);\n comments.push({\n comment: item.comment,\n before: items.length\n });\n } else {\n if (next) {\n const msg = `Expected a ${next} in flow sequence`;\n doc.errors.push(new PlainValue.YAMLSemanticError(item, msg));\n }\n\n const value = resolveNode(doc, item);\n\n if (key === undefined) {\n items.push(value);\n prevItem = item;\n } else {\n items.push(new Pair(key, value));\n key = undefined;\n }\n\n keyStart = item.range.start;\n next = ',';\n }\n }\n\n checkFlowCollectionEnd(doc.errors, cst);\n if (key !== undefined) items.push(new Pair(key));\n return {\n comments,\n items\n };\n}\n\nexports.Alias = Alias;\nexports.Collection = Collection;\nexports.Merge = Merge;\nexports.Node = Node;\nexports.Pair = Pair;\nexports.Scalar = Scalar;\nexports.YAMLMap = YAMLMap;\nexports.YAMLSeq = YAMLSeq;\nexports.addComment = addComment;\nexports.binaryOptions = binaryOptions;\nexports.boolOptions = boolOptions;\nexports.findPair = findPair;\nexports.intOptions = intOptions;\nexports.isEmptyPath = isEmptyPath;\nexports.nullOptions = nullOptions;\nexports.resolveMap = resolveMap;\nexports.resolveNode = resolveNode;\nexports.resolveSeq = resolveSeq;\nexports.resolveString = resolveString;\nexports.strOptions = strOptions;\nexports.stringifyNumber = stringifyNumber;\nexports.stringifyString = stringifyString;\nexports.toJSON = toJSON;\n","'use strict';\n\nvar PlainValue = require('./PlainValue-ec8e588e.js');\nvar resolveSeq = require('./resolveSeq-d03cb037.js');\n\n/* global atob, btoa, Buffer */\nconst binary = {\n identify: value => value instanceof Uint8Array,\n // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve: (doc, node) => {\n const src = resolveSeq.resolveString(doc, node);\n\n if (typeof Buffer === 'function') {\n return Buffer.from(src, 'base64');\n } else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) buffer[i] = str.charCodeAt(i);\n\n return buffer;\n } else {\n const msg = 'This environment does not support reading binary tags; either Buffer or atob is required';\n doc.errors.push(new PlainValue.YAMLReferenceError(node, msg));\n return null;\n }\n },\n options: resolveSeq.binaryOptions,\n stringify: ({\n comment,\n type,\n value\n }, ctx, onComment, onChompKeep) => {\n let src;\n\n if (typeof Buffer === 'function') {\n src = value instanceof Buffer ? value.toString('base64') : Buffer.from(value.buffer).toString('base64');\n } else if (typeof btoa === 'function') {\n let s = '';\n\n for (let i = 0; i < value.length; ++i) s += String.fromCharCode(value[i]);\n\n src = btoa(s);\n } else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n\n if (!type) type = resolveSeq.binaryOptions.defaultType;\n\n if (type === PlainValue.Type.QUOTE_DOUBLE) {\n value = src;\n } else {\n const {\n lineWidth\n } = resolveSeq.binaryOptions;\n const n = Math.ceil(src.length / lineWidth);\n const lines = new Array(n);\n\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = src.substr(o, lineWidth);\n }\n\n value = lines.join(type === PlainValue.Type.BLOCK_LITERAL ? '\\n' : ' ');\n }\n\n return resolveSeq.stringifyString({\n comment,\n type,\n value\n }, ctx, onComment, onChompKeep);\n }\n};\n\nfunction parsePairs(doc, cst) {\n const seq = resolveSeq.resolveSeq(doc, cst);\n\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (item instanceof resolveSeq.Pair) continue;else if (item instanceof resolveSeq.YAMLMap) {\n if (item.items.length > 1) {\n const msg = 'Each pair must have its own sequence indicator';\n throw new PlainValue.YAMLSemanticError(cst, msg);\n }\n\n const pair = item.items[0] || new resolveSeq.Pair();\n if (item.commentBefore) pair.commentBefore = pair.commentBefore ? `${item.commentBefore}\\n${pair.commentBefore}` : item.commentBefore;\n if (item.comment) pair.comment = pair.comment ? `${item.comment}\\n${pair.comment}` : item.comment;\n item = pair;\n }\n seq.items[i] = item instanceof resolveSeq.Pair ? item : new resolveSeq.Pair(item);\n }\n\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const pairs = new resolveSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n\n for (const it of iterable) {\n let key, value;\n\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n } else throw new TypeError(`Expected [key, value] tuple: ${it}`);\n } else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n } else throw new TypeError(`Expected { key: value } tuple: ${it}`);\n } else {\n key = it;\n }\n\n const pair = schema.createPair(key, value, ctx);\n pairs.items.push(pair);\n }\n\n return pairs;\n}\nconst pairs = {\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: parsePairs,\n createNode: createPairs\n};\n\nclass YAMLOMap extends resolveSeq.YAMLSeq {\n constructor() {\n super();\n\n PlainValue._defineProperty(this, \"add\", resolveSeq.YAMLMap.prototype.add.bind(this));\n\n PlainValue._defineProperty(this, \"delete\", resolveSeq.YAMLMap.prototype.delete.bind(this));\n\n PlainValue._defineProperty(this, \"get\", resolveSeq.YAMLMap.prototype.get.bind(this));\n\n PlainValue._defineProperty(this, \"has\", resolveSeq.YAMLMap.prototype.has.bind(this));\n\n PlainValue._defineProperty(this, \"set\", resolveSeq.YAMLMap.prototype.set.bind(this));\n\n this.tag = YAMLOMap.tag;\n }\n\n toJSON(_, ctx) {\n const map = new Map();\n if (ctx && ctx.onCreate) ctx.onCreate(map);\n\n for (const pair of this.items) {\n let key, value;\n\n if (pair instanceof resolveSeq.Pair) {\n key = resolveSeq.toJSON(pair.key, '', ctx);\n value = resolveSeq.toJSON(pair.value, key, ctx);\n } else {\n key = resolveSeq.toJSON(pair, '', ctx);\n }\n\n if (map.has(key)) throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n\n return map;\n }\n\n}\n\nPlainValue._defineProperty(YAMLOMap, \"tag\", 'tag:yaml.org,2002:omap');\n\nfunction parseOMap(doc, cst) {\n const pairs = parsePairs(doc, cst);\n const seenKeys = [];\n\n for (const {\n key\n } of pairs.items) {\n if (key instanceof resolveSeq.Scalar) {\n if (seenKeys.includes(key.value)) {\n const msg = 'Ordered maps must not include duplicate keys';\n throw new PlainValue.YAMLSemanticError(cst, msg);\n } else {\n seenKeys.push(key.value);\n }\n }\n }\n\n return Object.assign(new YAMLOMap(), pairs);\n}\n\nfunction createOMap(schema, iterable, ctx) {\n const pairs = createPairs(schema, iterable, ctx);\n const omap = new YAMLOMap();\n omap.items = pairs.items;\n return omap;\n}\n\nconst omap = {\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve: parseOMap,\n createNode: createOMap\n};\n\nclass YAMLSet extends resolveSeq.YAMLMap {\n constructor() {\n super();\n this.tag = YAMLSet.tag;\n }\n\n add(key) {\n const pair = key instanceof resolveSeq.Pair ? key : new resolveSeq.Pair(key);\n const prev = resolveSeq.findPair(this.items, pair.key);\n if (!prev) this.items.push(pair);\n }\n\n get(key, keepPair) {\n const pair = resolveSeq.findPair(this.items, key);\n return !keepPair && pair instanceof resolveSeq.Pair ? pair.key instanceof resolveSeq.Scalar ? pair.key.value : pair.key : pair;\n }\n\n set(key, value) {\n if (typeof value !== 'boolean') throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = resolveSeq.findPair(this.items, key);\n\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n } else if (!prev && value) {\n this.items.push(new resolveSeq.Pair(key));\n }\n }\n\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n\n toString(ctx, onComment, onChompKeep) {\n if (!ctx) return JSON.stringify(this);\n if (this.hasAllNullValues()) return super.toString(ctx, onComment, onChompKeep);else throw new Error('Set items must all have null values');\n }\n\n}\n\nPlainValue._defineProperty(YAMLSet, \"tag\", 'tag:yaml.org,2002:set');\n\nfunction parseSet(doc, cst) {\n const map = resolveSeq.resolveMap(doc, cst);\n if (!map.hasAllNullValues()) throw new PlainValue.YAMLSemanticError(cst, 'Set items must all have null values');\n return Object.assign(new YAMLSet(), map);\n}\n\nfunction createSet(schema, iterable, ctx) {\n const set = new YAMLSet();\n\n for (const value of iterable) set.items.push(schema.createPair(value, null, ctx));\n\n return set;\n}\n\nconst set = {\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n resolve: parseSet,\n createNode: createSet\n};\n\nconst parseSexagesimal = (sign, parts) => {\n const n = parts.split(':').reduce((n, p) => n * 60 + Number(p), 0);\n return sign === '-' ? -n : n;\n}; // hhhh:mm:ss.sss\n\n\nconst stringifySexagesimal = ({\n value\n}) => {\n if (isNaN(value) || !isFinite(value)) return resolveSeq.stringifyNumber(value);\n let sign = '';\n\n if (value < 0) {\n sign = '-';\n value = Math.abs(value);\n }\n\n const parts = [value % 60]; // seconds, including ms\n\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n } else {\n value = Math.round((value - parts[0]) / 60);\n parts.unshift(value % 60); // minutes\n\n if (value >= 60) {\n value = Math.round((value - parts[0]) / 60);\n parts.unshift(value); // hours\n }\n }\n\n return sign + parts.map(n => n < 10 ? '0' + String(n) : String(n)).join(':').replace(/000000\\d*$/, '') // % 60 may introduce error\n ;\n};\n\nconst intTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/,\n resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, '')),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*)$/,\n resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, '')),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^(?:' + '([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?' + ')$'),\n resolve: (str, year, month, day, hour, minute, second, millisec, tz) => {\n if (millisec) millisec = (millisec + '00').substr(1, 3);\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec || 0);\n\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz[0], tz.slice(1));\n if (Math.abs(d) < 30) d *= 60;\n date -= 60000 * d;\n }\n\n return new Date(date);\n },\n stringify: ({\n value\n }) => value.toISOString().replace(/((T00:00)?:00)?\\.000Z$/, '')\n};\n\n/* global console, process, YAML_SILENCE_DEPRECATION_WARNINGS, YAML_SILENCE_WARNINGS */\nfunction shouldWarn(deprecation) {\n const env = typeof process !== 'undefined' && process.env || {};\n\n if (deprecation) {\n if (typeof YAML_SILENCE_DEPRECATION_WARNINGS !== 'undefined') return !YAML_SILENCE_DEPRECATION_WARNINGS;\n return !env.YAML_SILENCE_DEPRECATION_WARNINGS;\n }\n\n if (typeof YAML_SILENCE_WARNINGS !== 'undefined') return !YAML_SILENCE_WARNINGS;\n return !env.YAML_SILENCE_WARNINGS;\n}\n\nfunction warn(warning, type) {\n if (shouldWarn(false)) {\n const emit = typeof process !== 'undefined' && process.emitWarning; // This will throw in Jest if `warning` is an Error instance due to\n // https://github.com/facebook/jest/issues/2549\n\n if (emit) emit(warning, type);else {\n // eslint-disable-next-line no-console\n console.warn(type ? `${type}: ${warning}` : warning);\n }\n }\n}\nfunction warnFileDeprecation(filename) {\n if (shouldWarn(true)) {\n const path = filename.replace(/.*yaml[/\\\\]/i, '').replace(/\\.js$/, '').replace(/\\\\/g, '/');\n warn(`The endpoint 'yaml/${path}' will be removed in a future release.`, 'DeprecationWarning');\n }\n}\nconst warned = {};\nfunction warnOptionDeprecation(name, alternative) {\n if (!warned[name] && shouldWarn(true)) {\n warned[name] = true;\n let msg = `The option '${name}' will be removed in a future release`;\n msg += alternative ? `, use '${alternative}' instead.` : '.';\n warn(msg, 'DeprecationWarning');\n }\n}\n\nexports.binary = binary;\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.omap = omap;\nexports.pairs = pairs;\nexports.set = set;\nexports.timestamp = timestamp;\nexports.warn = warn;\nexports.warnFileDeprecation = warnFileDeprecation;\nexports.warnOptionDeprecation = warnOptionDeprecation;\n","'use strict';\n\nvar PlainValue = require('./PlainValue-ec8e588e.js');\nvar resolveSeq = require('./resolveSeq-d03cb037.js');\nvar warnings = require('./warnings-1000a372.js');\n\nfunction createMap(schema, obj, ctx) {\n const map = new resolveSeq.YAMLMap(schema);\n\n if (obj instanceof Map) {\n for (const [key, value] of obj) map.items.push(schema.createPair(key, value, ctx));\n } else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj)) map.items.push(schema.createPair(key, obj[key], ctx));\n }\n\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n\n return map;\n}\n\nconst map = {\n createNode: createMap,\n default: true,\n nodeClass: resolveSeq.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve: resolveSeq.resolveMap\n};\n\nfunction createSeq(schema, obj, ctx) {\n const seq = new resolveSeq.YAMLSeq(schema);\n\n if (obj && obj[Symbol.iterator]) {\n for (const it of obj) {\n const v = schema.createNode(it, ctx.wrapScalars, null, ctx);\n seq.items.push(v);\n }\n }\n\n return seq;\n}\n\nconst seq = {\n createNode: createSeq,\n default: true,\n nodeClass: resolveSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve: resolveSeq.resolveSeq\n};\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: resolveSeq.resolveString,\n\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({\n actualString: true\n }, ctx);\n return resolveSeq.stringifyString(item, ctx, onComment, onChompKeep);\n },\n\n options: resolveSeq.strOptions\n};\n\nconst failsafe = [map, seq, string];\n\n/* global BigInt */\n\nconst intIdentify$2 = value => typeof value === 'bigint' || Number.isInteger(value);\n\nconst intResolve$1 = (src, part, radix) => resolveSeq.intOptions.asBigInt ? BigInt(src) : parseInt(part, radix);\n\nfunction intStringify$1(node, radix, prefix) {\n const {\n value\n } = node;\n if (intIdentify$2(value) && value >= 0) return prefix + value.toString(radix);\n return resolveSeq.stringifyNumber(node);\n}\n\nconst nullObj = {\n identify: value => value == null,\n createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null,\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => null,\n options: resolveSeq.nullOptions,\n stringify: () => resolveSeq.nullOptions.nullStr\n};\nconst boolObj = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => str[0] === 't' || str[0] === 'T',\n options: resolveSeq.boolOptions,\n stringify: ({\n value\n }) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr\n};\nconst octObj = {\n identify: value => intIdentify$2(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o([0-7]+)$/,\n resolve: (str, oct) => intResolve$1(str, oct, 8),\n options: resolveSeq.intOptions,\n stringify: node => intStringify$1(node, 8, '0o')\n};\nconst intObj = {\n identify: intIdentify$2,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: str => intResolve$1(str, str, 10),\n options: resolveSeq.intOptions,\n stringify: resolveSeq.stringifyNumber\n};\nconst hexObj = {\n identify: value => intIdentify$2(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x([0-9a-fA-F]+)$/,\n resolve: (str, hex) => intResolve$1(str, hex, 16),\n options: resolveSeq.intOptions,\n stringify: node => intStringify$1(node, 16, '0x')\n};\nconst nanObj = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.inf|(\\.nan))$/i,\n resolve: (str, nan) => nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n stringify: resolveSeq.stringifyNumber\n};\nconst expObj = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify: ({\n value\n }) => Number(value).toExponential()\n};\nconst floatObj = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.([0-9]+)|[0-9]+\\.([0-9]*))$/,\n\n resolve(str, frac1, frac2) {\n const frac = frac1 || frac2;\n const node = new resolveSeq.Scalar(parseFloat(str));\n if (frac && frac[frac.length - 1] === '0') node.minFractionDigits = frac.length;\n return node;\n },\n\n stringify: resolveSeq.stringifyNumber\n};\nconst core = failsafe.concat([nullObj, boolObj, octObj, intObj, hexObj, nanObj, expObj, floatObj]);\n\n/* global BigInt */\n\nconst intIdentify$1 = value => typeof value === 'bigint' || Number.isInteger(value);\n\nconst stringifyJSON = ({\n value\n}) => JSON.stringify(value);\n\nconst json = [map, seq, {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: resolveSeq.resolveString,\n stringify: stringifyJSON\n}, {\n identify: value => value == null,\n createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null,\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n}, {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true|false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n}, {\n identify: intIdentify$1,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: str => resolveSeq.intOptions.asBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({\n value\n }) => intIdentify$1(value) ? value.toString() : JSON.stringify(value)\n}, {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n}];\n\njson.scalarFallback = str => {\n throw new SyntaxError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n};\n\n/* global BigInt */\n\nconst boolStringify = ({\n value\n}) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr;\n\nconst intIdentify = value => typeof value === 'bigint' || Number.isInteger(value);\n\nfunction intResolve(sign, src, radix) {\n let str = src.replace(/_/g, '');\n\n if (resolveSeq.intOptions.asBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n\n case 8:\n str = `0o${str}`;\n break;\n\n case 16:\n str = `0x${str}`;\n break;\n }\n\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\n\nfunction intStringify(node, radix, prefix) {\n const {\n value\n } = node;\n\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n\n return resolveSeq.stringifyNumber(node);\n}\n\nconst yaml11 = failsafe.concat([{\n identify: value => value == null,\n createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null,\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => null,\n options: resolveSeq.nullOptions,\n stringify: () => resolveSeq.nullOptions.nullStr\n}, {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => true,\n options: resolveSeq.boolOptions,\n stringify: boolStringify\n}, {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,\n resolve: () => false,\n options: resolveSeq.boolOptions,\n stringify: boolStringify\n}, {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^([-+]?)0b([0-1_]+)$/,\n resolve: (str, sign, bin) => intResolve(sign, bin, 2),\n stringify: node => intStringify(node, 2, '0b')\n}, {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^([-+]?)0([0-7_]+)$/,\n resolve: (str, sign, oct) => intResolve(sign, oct, 8),\n stringify: node => intStringify(node, 8, '0')\n}, {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^([-+]?)([0-9][0-9_]*)$/,\n resolve: (str, sign, abs) => intResolve(sign, abs, 10),\n stringify: resolveSeq.stringifyNumber\n}, {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^([-+]?)0x([0-9a-fA-F_]+)$/,\n resolve: (str, sign, hex) => intResolve(sign, hex, 16),\n stringify: node => intStringify(node, 16, '0x')\n}, {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.inf|(\\.nan))$/i,\n resolve: (str, nan) => nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n stringify: resolveSeq.stringifyNumber\n}, {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?([0-9][0-9_]*)?(\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str.replace(/_/g, '')),\n stringify: ({\n value\n }) => Number(value).toExponential()\n}, {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.([0-9_]*)$/,\n\n resolve(str, frac) {\n const node = new resolveSeq.Scalar(parseFloat(str.replace(/_/g, '')));\n\n if (frac) {\n const f = frac.replace(/_/g, '');\n if (f[f.length - 1] === '0') node.minFractionDigits = f.length;\n }\n\n return node;\n },\n\n stringify: resolveSeq.stringifyNumber\n}], warnings.binary, warnings.omap, warnings.pairs, warnings.set, warnings.intTime, warnings.floatTime, warnings.timestamp);\n\nconst schemas = {\n core,\n failsafe,\n json,\n yaml11\n};\nconst tags = {\n binary: warnings.binary,\n bool: boolObj,\n float: floatObj,\n floatExp: expObj,\n floatNaN: nanObj,\n floatTime: warnings.floatTime,\n int: intObj,\n intHex: hexObj,\n intOct: octObj,\n intTime: warnings.intTime,\n map,\n null: nullObj,\n omap: warnings.omap,\n pairs: warnings.pairs,\n seq,\n set: warnings.set,\n timestamp: warnings.timestamp\n};\n\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) || match[0];\n if (!tagObj) throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n } // TODO: deprecate/remove class check\n\n\n return tags.find(t => (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format);\n}\n\nfunction createNode(value, tagName, ctx) {\n if (value instanceof resolveSeq.Node) return value;\n const {\n defaultPrefix,\n onTagObj,\n prevObjects,\n schema,\n wrapScalars\n } = ctx;\n if (tagName && tagName.startsWith('!!')) tagName = defaultPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n\n if (!tagObj) {\n if (typeof value.toJSON === 'function') value = value.toJSON();\n if (!value || typeof value !== 'object') return wrapScalars ? new resolveSeq.Scalar(value) : value;\n tagObj = value instanceof Map ? map : value[Symbol.iterator] ? seq : map;\n }\n\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n } // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `obj` wrapper allows for circular references to resolve.\n\n\n const obj = {\n value: undefined,\n node: undefined\n };\n\n if (value && typeof value === 'object' && prevObjects) {\n const prev = prevObjects.get(value);\n\n if (prev) {\n const alias = new resolveSeq.Alias(prev); // leaves source dirty; must be cleaned by caller\n\n ctx.aliasNodes.push(alias); // defined along with prevObjects\n\n return alias;\n }\n\n obj.value = value;\n prevObjects.set(value, obj);\n }\n\n obj.node = tagObj.createNode ? tagObj.createNode(ctx.schema, value, ctx) : wrapScalars ? new resolveSeq.Scalar(value) : value;\n if (tagName && obj.node instanceof resolveSeq.Node) obj.node.tag = tagName;\n return obj.node;\n}\n\nfunction getSchemaTags(schemas, knownTags, customTags, schemaId) {\n let tags = schemas[schemaId.replace(/\\W/g, '')]; // 'yaml-1.1' -> 'yaml11'\n\n if (!tags) {\n const keys = Object.keys(schemas).map(key => JSON.stringify(key)).join(', ');\n throw new Error(`Unknown schema \"${schemaId}\"; use one of ${keys}`);\n }\n\n if (Array.isArray(customTags)) {\n for (const tag of customTags) tags = tags.concat(tag);\n } else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n\n for (let i = 0; i < tags.length; ++i) {\n const tag = tags[i];\n\n if (typeof tag === 'string') {\n const tagObj = knownTags[tag];\n\n if (!tagObj) {\n const keys = Object.keys(knownTags).map(key => JSON.stringify(key)).join(', ');\n throw new Error(`Unknown custom tag \"${tag}\"; use one of ${keys}`);\n }\n\n tags[i] = tagObj;\n }\n }\n\n return tags;\n}\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\n\nclass Schema {\n // TODO: remove in v2\n // TODO: remove in v2\n constructor({\n customTags,\n merge,\n schema,\n sortMapEntries,\n tags: deprecatedCustomTags\n }) {\n this.merge = !!merge;\n this.name = schema;\n this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null;\n if (!customTags && deprecatedCustomTags) warnings.warnOptionDeprecation('tags', 'customTags');\n this.tags = getSchemaTags(schemas, tags, customTags || deprecatedCustomTags, schema);\n }\n\n createNode(value, wrapScalars, tagName, ctx) {\n const baseCtx = {\n defaultPrefix: Schema.defaultPrefix,\n schema: this,\n wrapScalars\n };\n const createCtx = ctx ? Object.assign(ctx, baseCtx) : baseCtx;\n return createNode(value, tagName, createCtx);\n }\n\n createPair(key, value, ctx) {\n if (!ctx) ctx = {\n wrapScalars: true\n };\n const k = this.createNode(key, ctx.wrapScalars, null, ctx);\n const v = this.createNode(value, ctx.wrapScalars, null, ctx);\n return new resolveSeq.Pair(k, v);\n }\n\n}\n\nPlainValue._defineProperty(Schema, \"defaultPrefix\", PlainValue.defaultTagPrefix);\n\nPlainValue._defineProperty(Schema, \"defaultTags\", PlainValue.defaultTags);\n\nexports.Schema = Schema;\n","'use strict';\n\nvar PlainValue = require('./PlainValue-ec8e588e.js');\nvar resolveSeq = require('./resolveSeq-d03cb037.js');\nvar Schema = require('./Schema-88e323a7.js');\n\nconst defaultOptions = {\n anchorPrefix: 'a',\n customTags: null,\n indent: 2,\n indentSeq: true,\n keepCstNodes: false,\n keepNodeTypes: true,\n keepBlobsInJSON: true,\n mapAsMap: false,\n maxAliasCount: 100,\n prettyErrors: false,\n // TODO Set true in v2\n simpleKeys: false,\n version: '1.2'\n};\nconst scalarOptions = {\n get binary() {\n return resolveSeq.binaryOptions;\n },\n\n set binary(opt) {\n Object.assign(resolveSeq.binaryOptions, opt);\n },\n\n get bool() {\n return resolveSeq.boolOptions;\n },\n\n set bool(opt) {\n Object.assign(resolveSeq.boolOptions, opt);\n },\n\n get int() {\n return resolveSeq.intOptions;\n },\n\n set int(opt) {\n Object.assign(resolveSeq.intOptions, opt);\n },\n\n get null() {\n return resolveSeq.nullOptions;\n },\n\n set null(opt) {\n Object.assign(resolveSeq.nullOptions, opt);\n },\n\n get str() {\n return resolveSeq.strOptions;\n },\n\n set str(opt) {\n Object.assign(resolveSeq.strOptions, opt);\n }\n\n};\nconst documentOptions = {\n '1.0': {\n schema: 'yaml-1.1',\n merge: true,\n tagPrefixes: [{\n handle: '!',\n prefix: PlainValue.defaultTagPrefix\n }, {\n handle: '!!',\n prefix: 'tag:private.yaml.org,2002:'\n }]\n },\n 1.1: {\n schema: 'yaml-1.1',\n merge: true,\n tagPrefixes: [{\n handle: '!',\n prefix: '!'\n }, {\n handle: '!!',\n prefix: PlainValue.defaultTagPrefix\n }]\n },\n 1.2: {\n schema: 'core',\n merge: false,\n tagPrefixes: [{\n handle: '!',\n prefix: '!'\n }, {\n handle: '!!',\n prefix: PlainValue.defaultTagPrefix\n }]\n }\n};\n\nfunction stringifyTag(doc, tag) {\n if ((doc.version || doc.options.version) === '1.0') {\n const priv = tag.match(/^tag:private\\.yaml\\.org,2002:([^:/]+)$/);\n if (priv) return '!' + priv[1];\n const vocab = tag.match(/^tag:([a-zA-Z0-9-]+)\\.yaml\\.org,2002:(.*)/);\n return vocab ? `!${vocab[1]}/${vocab[2]}` : `!${tag.replace(/^tag:/, '')}`;\n }\n\n let p = doc.tagPrefixes.find(p => tag.indexOf(p.prefix) === 0);\n\n if (!p) {\n const dtp = doc.getDefaults().tagPrefixes;\n p = dtp && dtp.find(p => tag.indexOf(p.prefix) === 0);\n }\n\n if (!p) return tag[0] === '!' ? tag : `!<${tag}>`;\n const suffix = tag.substr(p.prefix.length).replace(/[!,[\\]{}]/g, ch => ({\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n })[ch]);\n return p.handle + suffix;\n}\n\nfunction getTagObject(tags, item) {\n if (item instanceof resolveSeq.Alias) return resolveSeq.Alias;\n\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0) return match.find(t => t.format === item.format) || match[0];\n }\n\n let tagObj, obj;\n\n if (item instanceof resolveSeq.Scalar) {\n obj = item.value; // TODO: deprecate/remove class check\n\n const match = tags.filter(t => t.identify && t.identify(obj) || t.class && obj instanceof t.class);\n tagObj = match.find(t => t.format === item.format) || match.find(t => !t.format);\n } else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n\n if (!tagObj) {\n const name = obj && obj.constructor ? obj.constructor.name : typeof obj;\n throw new Error(`Tag not resolved for ${name} value`);\n }\n\n return tagObj;\n} // needs to be called before value stringifier to allow for circular anchor refs\n\n\nfunction stringifyProps(node, tagObj, {\n anchors,\n doc\n}) {\n const props = [];\n const anchor = doc.anchors.getName(node);\n\n if (anchor) {\n anchors[anchor] = node;\n props.push(`&${anchor}`);\n }\n\n if (node.tag) {\n props.push(stringifyTag(doc, node.tag));\n } else if (!tagObj.default) {\n props.push(stringifyTag(doc, tagObj.tag));\n }\n\n return props.join(' ');\n}\n\nfunction stringify(item, ctx, onComment, onChompKeep) {\n const {\n anchors,\n schema\n } = ctx.doc;\n let tagObj;\n\n if (!(item instanceof resolveSeq.Node)) {\n const createCtx = {\n aliasNodes: [],\n onTagObj: o => tagObj = o,\n prevObjects: new Map()\n };\n item = schema.createNode(item, true, null, createCtx);\n\n for (const alias of createCtx.aliasNodes) {\n alias.source = alias.source.node;\n let name = anchors.getName(alias.source);\n\n if (!name) {\n name = anchors.newName();\n anchors.map[name] = alias.source;\n }\n }\n }\n\n if (item instanceof resolveSeq.Pair) return item.toString(ctx, onComment, onChompKeep);\n if (!tagObj) tagObj = getTagObject(schema.tags, item);\n const props = stringifyProps(item, tagObj, ctx);\n if (props.length > 0) ctx.indentAtStart = (ctx.indentAtStart || 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function' ? tagObj.stringify(item, ctx, onComment, onChompKeep) : item instanceof resolveSeq.Scalar ? resolveSeq.stringifyString(item, ctx, onComment, onChompKeep) : item.toString(ctx, onComment, onChompKeep);\n if (!props) return str;\n return item instanceof resolveSeq.Scalar || str[0] === '{' || str[0] === '[' ? `${props} ${str}` : `${props}\\n${ctx.indent}${str}`;\n}\n\nclass Anchors {\n static validAnchorNode(node) {\n return node instanceof resolveSeq.Scalar || node instanceof resolveSeq.YAMLSeq || node instanceof resolveSeq.YAMLMap;\n }\n\n constructor(prefix) {\n PlainValue._defineProperty(this, \"map\", Object.create(null));\n\n this.prefix = prefix;\n }\n\n createAlias(node, name) {\n this.setAnchor(node, name);\n return new resolveSeq.Alias(node);\n }\n\n createMergePair(...sources) {\n const merge = new resolveSeq.Merge();\n merge.value.items = sources.map(s => {\n if (s instanceof resolveSeq.Alias) {\n if (s.source instanceof resolveSeq.YAMLMap) return s;\n } else if (s instanceof resolveSeq.YAMLMap) {\n return this.createAlias(s);\n }\n\n throw new Error('Merge sources must be Map nodes or their Aliases');\n });\n return merge;\n }\n\n getName(node) {\n const {\n map\n } = this;\n return Object.keys(map).find(a => map[a] === node);\n }\n\n getNames() {\n return Object.keys(this.map);\n }\n\n getNode(name) {\n return this.map[name];\n }\n\n newName(prefix) {\n if (!prefix) prefix = this.prefix;\n const names = Object.keys(this.map);\n\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!names.includes(name)) return name;\n }\n } // During parsing, map & aliases contain CST nodes\n\n\n resolveNodes() {\n const {\n map,\n _cstAliases\n } = this;\n Object.keys(map).forEach(a => {\n map[a] = map[a].resolved;\n });\n\n _cstAliases.forEach(a => {\n a.source = a.source.resolved;\n });\n\n delete this._cstAliases;\n }\n\n setAnchor(node, name) {\n if (node != null && !Anchors.validAnchorNode(node)) {\n throw new Error('Anchors may only be set for Scalar, Seq and Map nodes');\n }\n\n if (name && /[\\x00-\\x19\\s,[\\]{}]/.test(name)) {\n throw new Error('Anchor names must not contain whitespace or control characters');\n }\n\n const {\n map\n } = this;\n const prev = node && Object.keys(map).find(a => map[a] === node);\n\n if (prev) {\n if (!name) {\n return prev;\n } else if (prev !== name) {\n delete map[prev];\n map[name] = node;\n }\n } else {\n if (!name) {\n if (!node) return null;\n name = this.newName();\n }\n\n map[name] = node;\n }\n\n return name;\n }\n\n}\n\nconst visit = (node, tags) => {\n if (node && typeof node === 'object') {\n const {\n tag\n } = node;\n\n if (node instanceof resolveSeq.Collection) {\n if (tag) tags[tag] = true;\n node.items.forEach(n => visit(n, tags));\n } else if (node instanceof resolveSeq.Pair) {\n visit(node.key, tags);\n visit(node.value, tags);\n } else if (node instanceof resolveSeq.Scalar) {\n if (tag) tags[tag] = true;\n }\n }\n\n return tags;\n};\n\nconst listTagNames = node => Object.keys(visit(node, {}));\n\nfunction parseContents(doc, contents) {\n const comments = {\n before: [],\n after: []\n };\n let body = undefined;\n let spaceBefore = false;\n\n for (const node of contents) {\n if (node.valueRange) {\n if (body !== undefined) {\n const msg = 'Document contains trailing content not separated by a ... or --- line';\n doc.errors.push(new PlainValue.YAMLSyntaxError(node, msg));\n break;\n }\n\n const res = resolveSeq.resolveNode(doc, node);\n\n if (spaceBefore) {\n res.spaceBefore = true;\n spaceBefore = false;\n }\n\n body = res;\n } else if (node.comment !== null) {\n const cc = body === undefined ? comments.before : comments.after;\n cc.push(node.comment);\n } else if (node.type === PlainValue.Type.BLANK_LINE) {\n spaceBefore = true;\n\n if (body === undefined && comments.before.length > 0 && !doc.commentBefore) {\n // space-separated comments at start are parsed as document comments\n doc.commentBefore = comments.before.join('\\n');\n comments.before = [];\n }\n }\n }\n\n doc.contents = body || null;\n\n if (!body) {\n doc.comment = comments.before.concat(comments.after).join('\\n') || null;\n } else {\n const cb = comments.before.join('\\n');\n\n if (cb) {\n const cbNode = body instanceof resolveSeq.Collection && body.items[0] ? body.items[0] : body;\n cbNode.commentBefore = cbNode.commentBefore ? `${cb}\\n${cbNode.commentBefore}` : cb;\n }\n\n doc.comment = comments.after.join('\\n') || null;\n }\n}\n\nfunction resolveTagDirective({\n tagPrefixes\n}, directive) {\n const [handle, prefix] = directive.parameters;\n\n if (!handle || !prefix) {\n const msg = 'Insufficient parameters given for %TAG directive';\n throw new PlainValue.YAMLSemanticError(directive, msg);\n }\n\n if (tagPrefixes.some(p => p.handle === handle)) {\n const msg = 'The %TAG directive must only be given at most once per handle in the same document.';\n throw new PlainValue.YAMLSemanticError(directive, msg);\n }\n\n return {\n handle,\n prefix\n };\n}\n\nfunction resolveYamlDirective(doc, directive) {\n let [version] = directive.parameters;\n if (directive.name === 'YAML:1.0') version = '1.0';\n\n if (!version) {\n const msg = 'Insufficient parameters given for %YAML directive';\n throw new PlainValue.YAMLSemanticError(directive, msg);\n }\n\n if (!documentOptions[version]) {\n const v0 = doc.version || doc.options.version;\n const msg = `Document will be parsed as YAML ${v0} rather than YAML ${version}`;\n doc.warnings.push(new PlainValue.YAMLWarning(directive, msg));\n }\n\n return version;\n}\n\nfunction parseDirectives(doc, directives, prevDoc) {\n const directiveComments = [];\n let hasDirectives = false;\n\n for (const directive of directives) {\n const {\n comment,\n name\n } = directive;\n\n switch (name) {\n case 'TAG':\n try {\n doc.tagPrefixes.push(resolveTagDirective(doc, directive));\n } catch (error) {\n doc.errors.push(error);\n }\n\n hasDirectives = true;\n break;\n\n case 'YAML':\n case 'YAML:1.0':\n if (doc.version) {\n const msg = 'The %YAML directive must only be given at most once per document.';\n doc.errors.push(new PlainValue.YAMLSemanticError(directive, msg));\n }\n\n try {\n doc.version = resolveYamlDirective(doc, directive);\n } catch (error) {\n doc.errors.push(error);\n }\n\n hasDirectives = true;\n break;\n\n default:\n if (name) {\n const msg = `YAML only supports %TAG and %YAML directives, and not %${name}`;\n doc.warnings.push(new PlainValue.YAMLWarning(directive, msg));\n }\n\n }\n\n if (comment) directiveComments.push(comment);\n }\n\n if (prevDoc && !hasDirectives && '1.1' === (doc.version || prevDoc.version || doc.options.version)) {\n const copyTagPrefix = ({\n handle,\n prefix\n }) => ({\n handle,\n prefix\n });\n\n doc.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix);\n doc.version = prevDoc.version;\n }\n\n doc.commentBefore = directiveComments.join('\\n') || null;\n}\n\nfunction assertCollection(contents) {\n if (contents instanceof resolveSeq.Collection) return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nclass Document {\n constructor(options) {\n this.anchors = new Anchors(options.anchorPrefix);\n this.commentBefore = null;\n this.comment = null;\n this.contents = null;\n this.directivesEndMarker = null;\n this.errors = [];\n this.options = options;\n this.schema = null;\n this.tagPrefixes = [];\n this.version = null;\n this.warnings = [];\n }\n\n add(value) {\n assertCollection(this.contents);\n return this.contents.add(value);\n }\n\n addIn(path, value) {\n assertCollection(this.contents);\n this.contents.addIn(path, value);\n }\n\n delete(key) {\n assertCollection(this.contents);\n return this.contents.delete(key);\n }\n\n deleteIn(path) {\n if (resolveSeq.isEmptyPath(path)) {\n if (this.contents == null) return false;\n this.contents = null;\n return true;\n }\n\n assertCollection(this.contents);\n return this.contents.deleteIn(path);\n }\n\n getDefaults() {\n return Document.defaults[this.version] || Document.defaults[this.options.version] || {};\n }\n\n get(key, keepScalar) {\n return this.contents instanceof resolveSeq.Collection ? this.contents.get(key, keepScalar) : undefined;\n }\n\n getIn(path, keepScalar) {\n if (resolveSeq.isEmptyPath(path)) return !keepScalar && this.contents instanceof resolveSeq.Scalar ? this.contents.value : this.contents;\n return this.contents instanceof resolveSeq.Collection ? this.contents.getIn(path, keepScalar) : undefined;\n }\n\n has(key) {\n return this.contents instanceof resolveSeq.Collection ? this.contents.has(key) : false;\n }\n\n hasIn(path) {\n if (resolveSeq.isEmptyPath(path)) return this.contents !== undefined;\n return this.contents instanceof resolveSeq.Collection ? this.contents.hasIn(path) : false;\n }\n\n set(key, value) {\n assertCollection(this.contents);\n this.contents.set(key, value);\n }\n\n setIn(path, value) {\n if (resolveSeq.isEmptyPath(path)) this.contents = value;else {\n assertCollection(this.contents);\n this.contents.setIn(path, value);\n }\n }\n\n setSchema(id, customTags) {\n if (!id && !customTags && this.schema) return;\n if (typeof id === 'number') id = id.toFixed(1);\n\n if (id === '1.0' || id === '1.1' || id === '1.2') {\n if (this.version) this.version = id;else this.options.version = id;\n delete this.options.schema;\n } else if (id && typeof id === 'string') {\n this.options.schema = id;\n }\n\n if (Array.isArray(customTags)) this.options.customTags = customTags;\n const opt = Object.assign({}, this.getDefaults(), this.options);\n this.schema = new Schema.Schema(opt);\n }\n\n parse(node, prevDoc) {\n if (this.options.keepCstNodes) this.cstNode = node;\n if (this.options.keepNodeTypes) this.type = 'DOCUMENT';\n const {\n directives = [],\n contents = [],\n directivesEndMarker,\n error,\n valueRange\n } = node;\n\n if (error) {\n if (!error.source) error.source = this;\n this.errors.push(error);\n }\n\n parseDirectives(this, directives, prevDoc);\n if (directivesEndMarker) this.directivesEndMarker = true;\n this.range = valueRange ? [valueRange.start, valueRange.end] : null;\n this.setSchema();\n this.anchors._cstAliases = [];\n parseContents(this, contents);\n this.anchors.resolveNodes();\n\n if (this.options.prettyErrors) {\n for (const error of this.errors) if (error instanceof PlainValue.YAMLError) error.makePretty();\n\n for (const warn of this.warnings) if (warn instanceof PlainValue.YAMLError) warn.makePretty();\n }\n\n return this;\n }\n\n listNonDefaultTags() {\n return listTagNames(this.contents).filter(t => t.indexOf(Schema.Schema.defaultPrefix) !== 0);\n }\n\n setTagPrefix(handle, prefix) {\n if (handle[0] !== '!' || handle[handle.length - 1] !== '!') throw new Error('Handle must start and end with !');\n\n if (prefix) {\n const prev = this.tagPrefixes.find(p => p.handle === handle);\n if (prev) prev.prefix = prefix;else this.tagPrefixes.push({\n handle,\n prefix\n });\n } else {\n this.tagPrefixes = this.tagPrefixes.filter(p => p.handle !== handle);\n }\n }\n\n toJSON(arg, onAnchor) {\n const {\n keepBlobsInJSON,\n mapAsMap,\n maxAliasCount\n } = this.options;\n const keep = keepBlobsInJSON && (typeof arg !== 'string' || !(this.contents instanceof resolveSeq.Scalar));\n const ctx = {\n doc: this,\n indentStep: ' ',\n keep,\n mapAsMap: keep && !!mapAsMap,\n maxAliasCount,\n stringify // Requiring directly in Pair would create circular dependencies\n\n };\n const anchorNames = Object.keys(this.anchors.map);\n if (anchorNames.length > 0) ctx.anchors = new Map(anchorNames.map(name => [this.anchors.map[name], {\n alias: [],\n aliasCount: 0,\n count: 1\n }]));\n const res = resolveSeq.toJSON(this.contents, arg, ctx);\n if (typeof onAnchor === 'function' && ctx.anchors) for (const {\n count,\n res\n } of ctx.anchors.values()) onAnchor(res, count);\n return res;\n }\n\n toString() {\n if (this.errors.length > 0) throw new Error('Document with errors cannot be stringified');\n const indentSize = this.options.indent;\n\n if (!Number.isInteger(indentSize) || indentSize <= 0) {\n const s = JSON.stringify(indentSize);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n\n this.setSchema();\n const lines = [];\n let hasDirectives = false;\n\n if (this.version) {\n let vd = '%YAML 1.2';\n\n if (this.schema.name === 'yaml-1.1') {\n if (this.version === '1.0') vd = '%YAML:1.0';else if (this.version === '1.1') vd = '%YAML 1.1';\n }\n\n lines.push(vd);\n hasDirectives = true;\n }\n\n const tagNames = this.listNonDefaultTags();\n this.tagPrefixes.forEach(({\n handle,\n prefix\n }) => {\n if (tagNames.some(t => t.indexOf(prefix) === 0)) {\n lines.push(`%TAG ${handle} ${prefix}`);\n hasDirectives = true;\n }\n });\n if (hasDirectives || this.directivesEndMarker) lines.push('---');\n\n if (this.commentBefore) {\n if (hasDirectives || !this.directivesEndMarker) lines.unshift('');\n lines.unshift(this.commentBefore.replace(/^/gm, '#'));\n }\n\n const ctx = {\n anchors: Object.create(null),\n doc: this,\n indent: '',\n indentStep: ' '.repeat(indentSize),\n stringify // Requiring directly in nodes would create circular dependencies\n\n };\n let chompKeep = false;\n let contentComment = null;\n\n if (this.contents) {\n if (this.contents instanceof resolveSeq.Node) {\n if (this.contents.spaceBefore && (hasDirectives || this.directivesEndMarker)) lines.push('');\n if (this.contents.commentBefore) lines.push(this.contents.commentBefore.replace(/^/gm, '#')); // top-level block scalars need to be indented if followed by a comment\n\n ctx.forceBlockIndent = !!this.comment;\n contentComment = this.contents.comment;\n }\n\n const onChompKeep = contentComment ? null : () => chompKeep = true;\n const body = stringify(this.contents, ctx, () => contentComment = null, onChompKeep);\n lines.push(resolveSeq.addComment(body, '', contentComment));\n } else if (this.contents !== undefined) {\n lines.push(stringify(this.contents, ctx));\n }\n\n if (this.comment) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '') lines.push('');\n lines.push(this.comment.replace(/^/gm, '#'));\n }\n\n return lines.join('\\n') + '\\n';\n }\n\n}\n\nPlainValue._defineProperty(Document, \"defaults\", documentOptions);\n\nexports.Document = Document;\nexports.defaultOptions = defaultOptions;\nexports.scalarOptions = scalarOptions;\n","'use strict';\n\nvar parseCst = require('./parse-cst.js');\nvar Document$1 = require('./Document-9b4560a1.js');\nvar Schema = require('./Schema-88e323a7.js');\nvar PlainValue = require('./PlainValue-ec8e588e.js');\nvar warnings = require('./warnings-1000a372.js');\nrequire('./resolveSeq-d03cb037.js');\n\nfunction createNode(value, wrapScalars = true, tag) {\n if (tag === undefined && typeof wrapScalars === 'string') {\n tag = wrapScalars;\n wrapScalars = true;\n }\n\n const options = Object.assign({}, Document$1.Document.defaults[Document$1.defaultOptions.version], Document$1.defaultOptions);\n const schema = new Schema.Schema(options);\n return schema.createNode(value, wrapScalars, tag);\n}\n\nclass Document extends Document$1.Document {\n constructor(options) {\n super(Object.assign({}, Document$1.defaultOptions, options));\n }\n\n}\n\nfunction parseAllDocuments(src, options) {\n const stream = [];\n let prev;\n\n for (const cstDoc of parseCst.parse(src)) {\n const doc = new Document(options);\n doc.parse(cstDoc, prev);\n stream.push(doc);\n prev = doc;\n }\n\n return stream;\n}\n\nfunction parseDocument(src, options) {\n const cst = parseCst.parse(src);\n const doc = new Document(options).parse(cst[0]);\n\n if (cst.length > 1) {\n const errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()';\n doc.errors.unshift(new PlainValue.YAMLSemanticError(cst[1], errMsg));\n }\n\n return doc;\n}\n\nfunction parse(src, options) {\n const doc = parseDocument(src, options);\n doc.warnings.forEach(warning => warnings.warn(warning));\n if (doc.errors.length > 0) throw doc.errors[0];\n return doc.toJSON();\n}\n\nfunction stringify(value, options) {\n const doc = new Document(options);\n doc.contents = value;\n return String(doc);\n}\n\nconst YAML = {\n createNode,\n defaultOptions: Document$1.defaultOptions,\n Document,\n parse,\n parseAllDocuments,\n parseCST: parseCst.parse,\n parseDocument,\n scalarOptions: Document$1.scalarOptions,\n stringify\n};\n\nexports.YAML = YAML;\n","module.exports = require('./dist').YAML\n","'use strict';\nconst path = require('path');\nconst Module = require('module');\nconst fs = require('fs');\n\nconst resolveFrom = (fromDirectory, moduleId, silent) => {\n\tif (typeof fromDirectory !== 'string') {\n\t\tthrow new TypeError(`Expected \\`fromDir\\` to be of type \\`string\\`, got \\`${typeof fromDirectory}\\``);\n\t}\n\n\tif (typeof moduleId !== 'string') {\n\t\tthrow new TypeError(`Expected \\`moduleId\\` to be of type \\`string\\`, got \\`${typeof moduleId}\\``);\n\t}\n\n\ttry {\n\t\tfromDirectory = fs.realpathSync(fromDirectory);\n\t} catch (error) {\n\t\tif (error.code === 'ENOENT') {\n\t\t\tfromDirectory = path.resolve(fromDirectory);\n\t\t} else if (silent) {\n\t\t\treturn;\n\t\t} else {\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tconst fromFile = path.join(fromDirectory, 'noop.js');\n\n\tconst resolveFileName = () => Module._resolveFilename(moduleId, {\n\t\tid: fromFile,\n\t\tfilename: fromFile,\n\t\tpaths: Module._nodeModulePaths(fromDirectory)\n\t});\n\n\tif (silent) {\n\t\ttry {\n\t\t\treturn resolveFileName();\n\t\t} catch (error) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn resolveFileName();\n};\n\nmodule.exports = (fromDirectory, moduleId) => resolveFrom(fromDirectory, moduleId);\nmodule.exports.silent = (fromDirectory, moduleId) => resolveFrom(fromDirectory, moduleId, true);\n","'use strict';\nconst resolveFrom = require('resolve-from');\n\nmodule.exports = (fromDirectory, moduleId) => require(resolveFrom(fromDirectory, moduleId));\n\nmodule.exports.silent = (fromDirectory, moduleId) => {\n\ttry {\n\t\treturn require(resolveFrom(fromDirectory, moduleId));\n\t} catch (_) {}\n};\n","'use strict';\nconst importFrom = require('import-from');\n\nmodule.exports = moduleId => importFrom(process.cwd(), moduleId);\nmodule.exports.silent = moduleId => importFrom.silent(process.cwd(), moduleId);\n","'use strict'\n\nconst req = require('import-cwd')\n\n/**\n * Load Options\n *\n * @private\n * @method options\n *\n * @param {Object} config PostCSS Config\n *\n * @return {Object} options PostCSS Options\n */\nconst options = (config, file) => {\n if (config.parser && typeof config.parser === 'string') {\n try {\n config.parser = req(config.parser)\n } catch (err) {\n throw new Error(`Loading PostCSS Parser failed: ${err.message}\\n\\n(@${file})`)\n }\n }\n\n if (config.syntax && typeof config.syntax === 'string') {\n try {\n config.syntax = req(config.syntax)\n } catch (err) {\n throw new Error(`Loading PostCSS Syntax failed: ${err.message}\\n\\n(@${file})`)\n }\n }\n\n if (config.stringifier && typeof config.stringifier === 'string') {\n try {\n config.stringifier = req(config.stringifier)\n } catch (err) {\n throw new Error(`Loading PostCSS Stringifier failed: ${err.message}\\n\\n(@${file})`)\n }\n }\n\n if (config.plugins) {\n delete config.plugins\n }\n\n return config\n}\n\nmodule.exports = options\n","'use strict'\n\nconst req = require('import-cwd')\n\n/**\n * Plugin Loader\n *\n * @private\n * @method load\n *\n * @param {String} plugin PostCSS Plugin Name\n * @param {Object} options PostCSS Plugin Options\n *\n * @return {Function} PostCSS Plugin\n */\nconst load = (plugin, options, file) => {\n try {\n if (\n options === null ||\n options === undefined ||\n Object.keys(options).length === 0\n ) {\n return req(plugin)\n } else {\n return req(plugin)(options)\n }\n } catch (err) {\n throw new Error(`Loading PostCSS Plugin failed: ${err.message}\\n\\n(@${file})`)\n }\n}\n\n/**\n * Load Plugins\n *\n * @private\n * @method plugins\n *\n * @param {Object} config PostCSS Config Plugins\n *\n * @return {Array} plugins PostCSS Plugins\n */\nconst plugins = (config, file) => {\n let plugins = []\n\n if (Array.isArray(config.plugins)) {\n plugins = config.plugins.filter(Boolean)\n } else {\n plugins = Object.keys(config.plugins)\n .filter((plugin) => {\n return config.plugins[plugin] !== false ? plugin : ''\n })\n .map((plugin) => {\n return load(plugin, config.plugins[plugin], file)\n })\n }\n\n if (plugins.length && plugins.length > 0) {\n plugins.forEach((plugin, i) => {\n if (plugin.default) {\n plugin = plugin.default\n }\n\n if (plugin.postcss === true) {\n plugin = plugin()\n } else if (plugin.postcss) {\n plugin = plugin.postcss\n }\n\n if (\n // eslint-disable-next-line\n !(\n (typeof plugin === 'object' && Array.isArray(plugin.plugins)) ||\n (typeof plugin === 'object' && plugin.postcssPlugin) ||\n (typeof plugin === 'function')\n )\n ) {\n throw new TypeError(`Invalid PostCSS Plugin found at: plugins[${i}]\\n\\n(@${file})`)\n }\n })\n }\n\n return plugins\n}\n\nmodule.exports = plugins\n","'use strict'\n\nconst resolve = require('path').resolve\n\nconst config = require('lilconfig')\nconst yaml = require('yaml')\n\nconst loadOptions = require('./options.js')\nconst loadPlugins = require('./plugins.js')\n\n/* istanbul ignore next */\nconst interopRequireDefault = (obj) => obj && obj.__esModule ? obj : { default: obj }\n\n/**\n * Process the result from cosmiconfig\n *\n * @param {Object} ctx Config Context\n * @param {Object} result Cosmiconfig result\n *\n * @return {Object} PostCSS Config\n */\nconst processResult = (ctx, result) => {\n const file = result.filepath || ''\n let config = interopRequireDefault(result.config).default || {}\n\n if (typeof config === 'function') {\n config = config(ctx)\n } else {\n config = Object.assign({}, config, ctx)\n }\n\n if (!config.plugins) {\n config.plugins = []\n }\n\n return {\n plugins: loadPlugins(config, file),\n options: loadOptions(config, file),\n file: file\n }\n}\n\n/**\n * Builds the Config Context\n *\n * @param {Object} ctx Config Context\n *\n * @return {Object} Config Context\n */\nconst createContext = (ctx) => {\n /**\n * @type {Object}\n *\n * @prop {String} cwd=process.cwd() Config search start location\n * @prop {String} env=process.env.NODE_ENV Config Enviroment, will be set to `development` by `postcss-load-config` if `process.env.NODE_ENV` is `undefined`\n */\n ctx = Object.assign({\n cwd: process.cwd(),\n env: process.env.NODE_ENV\n }, ctx)\n\n if (!ctx.env) {\n process.env.NODE_ENV = 'development'\n }\n\n return ctx\n}\n\nconst addTypeScriptLoader = (options = {}, loader) => {\n const moduleName = 'postcss'\n\n return {\n ...options,\n searchPlaces: [\n ...(options.searchPlaces || []),\n 'package.json',\n `.${moduleName}rc`,\n `.${moduleName}rc.json`,\n `.${moduleName}rc.yaml`,\n `.${moduleName}rc.yml`,\n `.${moduleName}rc.ts`,\n `.${moduleName}rc.js`,\n `.${moduleName}rc.cjs`,\n `${moduleName}.config.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.cjs`\n ],\n loaders: {\n ...options.loaders,\n '.yaml': (filepath, content) => yaml.parse(content),\n '.yml': (filepath, content) => yaml.parse(content),\n '.ts': loader\n }\n }\n}\n\nconst withTypeScriptLoader = (rcFunc) => {\n return (ctx, path, options) => {\n return rcFunc(ctx, path, addTypeScriptLoader(options, (configFile) => {\n let registerer = { enabled () {} }\n\n try {\n // Register TypeScript compiler instance\n registerer = require('ts-node').register()\n\n return require(configFile)\n } catch (err) {\n if (err.code === 'MODULE_NOT_FOUND') {\n throw new Error(\n `'ts-node' is required for the TypeScript configuration files. Make sure it is installed\\nError: ${err.message}`\n )\n }\n\n throw err\n } finally {\n registerer.enabled(false)\n }\n }))\n }\n}\n\n/**\n * Load Config\n *\n * @method rc\n *\n * @param {Object} ctx Config Context\n * @param {String} path Config Path\n * @param {Object} options Config Options\n *\n * @return {Promise} config PostCSS Config\n */\nconst rc = withTypeScriptLoader((ctx, path, options) => {\n /**\n * @type {Object} The full Config Context\n */\n ctx = createContext(ctx)\n\n /**\n * @type {String} `process.cwd()`\n */\n path = path ? resolve(path) : process.cwd()\n\n return config.lilconfig('postcss', options)\n .search(path)\n .then((result) => {\n if (!result) {\n throw new Error(`No PostCSS Config found in: ${path}`)\n }\n\n return processResult(ctx, result)\n })\n})\n\nrc.sync = withTypeScriptLoader((ctx, path, options) => {\n /**\n * @type {Object} The full Config Context\n */\n ctx = createContext(ctx)\n\n /**\n * @type {String} `process.cwd()`\n */\n path = path ? resolve(path) : process.cwd()\n\n const result = config.lilconfigSync('postcss', options).search(path)\n\n if (!result) {\n throw new Error(`No PostCSS Config found in: ${path}`)\n }\n\n return processResult(ctx, result)\n})\n\n/**\n * Autoload Config for PostCSS\n *\n * @author Michael Ciniawsky @michael-ciniawsky \n * @license MIT\n *\n * @module postcss-load-config\n * @version 2.1.0\n *\n * @requires comsiconfig\n * @requires ./options\n * @requires ./plugins\n */\nmodule.exports = rc\n","import { extname, win32, posix, isAbsolute, resolve } from 'path';\nimport pm from 'picomatch';\n\nconst addExtension = function addExtension(filename, ext = '.js') {\n let result = `${filename}`;\n if (!extname(filename))\n result += ext;\n return result;\n};\n\nclass WalkerBase {constructor() { WalkerBase.prototype.__init.call(this);WalkerBase.prototype.__init2.call(this);WalkerBase.prototype.__init3.call(this);WalkerBase.prototype.__init4.call(this); }\n\t __init() {this.should_skip = false;}\n\t __init2() {this.should_remove = false;}\n\t __init3() {this.replacement = null;}\n\n\t __init4() {this.context = {\n\t\tskip: () => (this.should_skip = true),\n\t\tremove: () => (this.should_remove = true),\n\t\treplace: (node) => (this.replacement = node)\n\t};}\n\n\t replace(parent, prop, index, node) {\n\t\tif (parent) {\n\t\t\tif (index !== null) {\n\t\t\t\tparent[prop][index] = node;\n\t\t\t} else {\n\t\t\t\tparent[prop] = node;\n\t\t\t}\n\t\t}\n\t}\n\n\t remove(parent, prop, index) {\n\t\tif (parent) {\n\t\t\tif (index !== null) {\n\t\t\t\tparent[prop].splice(index, 1);\n\t\t\t} else {\n\t\t\t\tdelete parent[prop];\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass SyncWalkerClass extends WalkerBase {\n\t\n\t\n\n\tconstructor(walker) {\n\t\tsuper();\n\t\tthis.enter = walker.enter;\n\t\tthis.leave = walker.leave;\n\t}\n\n\t visit(\n\t\tnode,\n\t\tparent,\n\t\tenter,\n\t\tleave,\n\t\tprop,\n\t\tindex\n\t) {\n\t\tif (node) {\n\t\t\tif (enter) {\n\t\t\t\tconst _should_skip = this.should_skip;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tthis.should_skip = false;\n\t\t\t\tthis.should_remove = false;\n\t\t\t\tthis.replacement = null;\n\n\t\t\t\tenter.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst skipped = this.should_skip;\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.should_skip = _should_skip;\n\t\t\t\tthis.should_remove = _should_remove;\n\t\t\t\tthis.replacement = _replacement;\n\n\t\t\t\tif (skipped) return node;\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\n\t\t\tfor (const key in node) {\n\t\t\t\tconst value = (node )[key];\n\n\t\t\t\tif (typeof value !== \"object\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\t\tfor (let i = 0; i < value.length; i += 1) {\n\t\t\t\t\t\tif (value[i] !== null && typeof value[i].type === 'string') {\n\t\t\t\t\t\t\tif (!this.visit(value[i], node, enter, leave, key, i)) {\n\t\t\t\t\t\t\t\t// removed\n\t\t\t\t\t\t\t\ti--;\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} else if (value !== null && typeof value.type === \"string\") {\n\t\t\t\t\tthis.visit(value, node, enter, leave, key, null);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (leave) {\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tthis.replacement = null;\n\t\t\t\tthis.should_remove = false;\n\n\t\t\t\tleave.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.replacement = _replacement;\n\t\t\t\tthis.should_remove = _should_remove;\n\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n}\n\nfunction walk(ast, walker) {\n\tconst instance = new SyncWalkerClass(walker);\n\treturn instance.visit(ast, null, walker.enter, walker.leave);\n}\n\nconst extractors = {\n ArrayPattern(names, param) {\n for (const element of param.elements) {\n if (element)\n extractors[element.type](names, element);\n }\n },\n AssignmentPattern(names, param) {\n extractors[param.left.type](names, param.left);\n },\n Identifier(names, param) {\n names.push(param.name);\n },\n MemberExpression() { },\n ObjectPattern(names, param) {\n for (const prop of param.properties) {\n // @ts-ignore Typescript reports that this is not a valid type\n if (prop.type === 'RestElement') {\n extractors.RestElement(names, prop);\n }\n else {\n extractors[prop.value.type](names, prop.value);\n }\n }\n },\n RestElement(names, param) {\n extractors[param.argument.type](names, param.argument);\n }\n};\nconst extractAssignedNames = function extractAssignedNames(param) {\n const names = [];\n extractors[param.type](names, param);\n return names;\n};\n\nconst blockDeclarations = {\n const: true,\n let: true\n};\nclass Scope {\n constructor(options = {}) {\n this.parent = options.parent;\n this.isBlockScope = !!options.block;\n this.declarations = Object.create(null);\n if (options.params) {\n options.params.forEach((param) => {\n extractAssignedNames(param).forEach((name) => {\n this.declarations[name] = true;\n });\n });\n }\n }\n addDeclaration(node, isBlockDeclaration, isVar) {\n if (!isBlockDeclaration && this.isBlockScope) {\n // it's a `var` or function node, and this\n // is a block scope, so we need to go up\n this.parent.addDeclaration(node, isBlockDeclaration, isVar);\n }\n else if (node.id) {\n extractAssignedNames(node.id).forEach((name) => {\n this.declarations[name] = true;\n });\n }\n }\n contains(name) {\n return this.declarations[name] || (this.parent ? this.parent.contains(name) : false);\n }\n}\nconst attachScopes = function attachScopes(ast, propertyName = 'scope') {\n let scope = new Scope();\n walk(ast, {\n enter(n, parent) {\n const node = n;\n // function foo () {...}\n // class Foo {...}\n if (/(Function|Class)Declaration/.test(node.type)) {\n scope.addDeclaration(node, false, false);\n }\n // var foo = 1\n if (node.type === 'VariableDeclaration') {\n const { kind } = node;\n const isBlockDeclaration = blockDeclarations[kind];\n node.declarations.forEach((declaration) => {\n scope.addDeclaration(declaration, isBlockDeclaration, true);\n });\n }\n let newScope;\n // create new function scope\n if (/Function/.test(node.type)) {\n const func = node;\n newScope = new Scope({\n parent: scope,\n block: false,\n params: func.params\n });\n // named function expressions - the name is considered\n // part of the function's scope\n if (func.type === 'FunctionExpression' && func.id) {\n newScope.addDeclaration(func, false, false);\n }\n }\n // create new for scope\n if (/For(In|Of)?Statement/.test(node.type)) {\n newScope = new Scope({\n parent: scope,\n block: true\n });\n }\n // create new block scope\n if (node.type === 'BlockStatement' && !/Function/.test(parent.type)) {\n newScope = new Scope({\n parent: scope,\n block: true\n });\n }\n // catch clause has its own block scope\n if (node.type === 'CatchClause') {\n newScope = new Scope({\n parent: scope,\n params: node.param ? [node.param] : [],\n block: true\n });\n }\n if (newScope) {\n Object.defineProperty(node, propertyName, {\n value: newScope,\n configurable: true\n });\n scope = newScope;\n }\n },\n leave(n) {\n const node = n;\n if (node[propertyName])\n scope = scope.parent;\n }\n });\n return scope;\n};\n\n// Helper since Typescript can't detect readonly arrays with Array.isArray\nfunction isArray(arg) {\n return Array.isArray(arg);\n}\nfunction ensureArray(thing) {\n if (isArray(thing))\n return thing;\n if (thing == null)\n return [];\n return [thing];\n}\n\nconst normalizePath = function normalizePath(filename) {\n return filename.split(win32.sep).join(posix.sep);\n};\n\nfunction getMatcherString(id, resolutionBase) {\n if (resolutionBase === false || isAbsolute(id) || id.startsWith('*')) {\n return id;\n }\n // resolve('') is valid and will default to process.cwd()\n const basePath = normalizePath(resolve(resolutionBase || ''))\n // escape all possible (posix + win) path characters that might interfere with regex\n .replace(/[-^$*+?.()|[\\]{}]/g, '\\\\$&');\n // Note that we use posix.join because:\n // 1. the basePath has been normalized to use /\n // 2. the incoming glob (id) matcher, also uses /\n // otherwise Node will force backslash (\\) on windows\n return posix.join(basePath, id);\n}\nconst createFilter = function createFilter(include, exclude, options) {\n const resolutionBase = options && options.resolve;\n const getMatcher = (id) => id instanceof RegExp\n ? id\n : {\n test: (what) => {\n // this refactor is a tad overly verbose but makes for easy debugging\n const pattern = getMatcherString(id, resolutionBase);\n const fn = pm(pattern, { dot: true });\n const result = fn(what);\n return result;\n }\n };\n const includeMatchers = ensureArray(include).map(getMatcher);\n const excludeMatchers = ensureArray(exclude).map(getMatcher);\n return function result(id) {\n if (typeof id !== 'string')\n return false;\n if (/\\0/.test(id))\n return false;\n const pathId = normalizePath(id);\n for (let i = 0; i < excludeMatchers.length; ++i) {\n const matcher = excludeMatchers[i];\n if (matcher.test(pathId))\n return false;\n }\n for (let i = 0; i < includeMatchers.length; ++i) {\n const matcher = includeMatchers[i];\n if (matcher.test(pathId))\n return true;\n }\n return !includeMatchers.length;\n };\n};\n\nconst reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public';\nconst builtins = 'arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl';\nconst forbiddenIdentifiers = new Set(`${reservedWords} ${builtins}`.split(' '));\nforbiddenIdentifiers.add('');\nconst makeLegalIdentifier = function makeLegalIdentifier(str) {\n let identifier = str\n .replace(/-(\\w)/g, (_, letter) => letter.toUpperCase())\n .replace(/[^$_a-zA-Z0-9]/g, '_');\n if (/\\d/.test(identifier[0]) || forbiddenIdentifiers.has(identifier)) {\n identifier = `_${identifier}`;\n }\n return identifier || '_';\n};\n\nfunction stringify(obj) {\n return (JSON.stringify(obj) || 'undefined').replace(/[\\u2028\\u2029]/g, (char) => `\\\\u${`000${char.charCodeAt(0).toString(16)}`.slice(-4)}`);\n}\nfunction serializeArray(arr, indent, baseIndent) {\n let output = '[';\n const separator = indent ? `\\n${baseIndent}${indent}` : '';\n for (let i = 0; i < arr.length; i++) {\n const key = arr[i];\n output += `${i > 0 ? ',' : ''}${separator}${serialize(key, indent, baseIndent + indent)}`;\n }\n return `${output}${indent ? `\\n${baseIndent}` : ''}]`;\n}\nfunction serializeObject(obj, indent, baseIndent) {\n let output = '{';\n const separator = indent ? `\\n${baseIndent}${indent}` : '';\n const entries = Object.entries(obj);\n for (let i = 0; i < entries.length; i++) {\n const [key, value] = entries[i];\n const stringKey = makeLegalIdentifier(key) === key ? key : stringify(key);\n output += `${i > 0 ? ',' : ''}${separator}${stringKey}:${indent ? ' ' : ''}${serialize(value, indent, baseIndent + indent)}`;\n }\n return `${output}${indent ? `\\n${baseIndent}` : ''}}`;\n}\nfunction serialize(obj, indent, baseIndent) {\n if (obj === Infinity)\n return 'Infinity';\n if (obj === -Infinity)\n return '-Infinity';\n if (obj === 0 && 1 / obj === -Infinity)\n return '-0';\n if (obj instanceof Date)\n return `new Date(${obj.getTime()})`;\n if (obj instanceof RegExp)\n return obj.toString();\n if (obj !== obj)\n return 'NaN'; // eslint-disable-line no-self-compare\n if (Array.isArray(obj))\n return serializeArray(obj, indent, baseIndent);\n if (obj === null)\n return 'null';\n if (typeof obj === 'object')\n return serializeObject(obj, indent, baseIndent);\n return stringify(obj);\n}\nconst dataToEsm = function dataToEsm(data, options = {}) {\n const t = options.compact ? '' : 'indent' in options ? options.indent : '\\t';\n const _ = options.compact ? '' : ' ';\n const n = options.compact ? '' : '\\n';\n const declarationType = options.preferConst ? 'const' : 'var';\n if (options.namedExports === false ||\n typeof data !== 'object' ||\n Array.isArray(data) ||\n data instanceof Date ||\n data instanceof RegExp ||\n data === null) {\n const code = serialize(data, options.compact ? null : t, '');\n const magic = _ || (/^[{[\\-\\/]/.test(code) ? '' : ' '); // eslint-disable-line no-useless-escape\n return `export default${magic}${code};`;\n }\n let namedExportCode = '';\n const defaultExportRows = [];\n for (const [key, value] of Object.entries(data)) {\n if (key === makeLegalIdentifier(key)) {\n if (options.objectShorthand)\n defaultExportRows.push(key);\n else\n defaultExportRows.push(`${key}:${_}${key}`);\n namedExportCode += `export ${declarationType} ${key}${_}=${_}${serialize(value, options.compact ? null : t, '')};${n}`;\n }\n else {\n defaultExportRows.push(`${stringify(key)}:${_}${serialize(value, options.compact ? null : t, '')}`);\n }\n }\n return `${namedExportCode}export default${_}{${n}${t}${defaultExportRows.join(`,${n}${t}`)}${n}};${n}`;\n};\n\n// TODO: remove this in next major\nvar index = {\n addExtension,\n attachScopes,\n createFilter,\n dataToEsm,\n extractAssignedNames,\n makeLegalIdentifier,\n normalizePath\n};\n\nexport default index;\nexport { addExtension, attachScopes, createFilter, dataToEsm, extractAssignedNames, makeLegalIdentifier, normalizePath };\n","import fs from 'fs'\nimport path from 'path'\nimport glob from 'fast-glob'\nimport {\n // createDebugger,\n isExternalUrl,\n asyncReplace,\n cleanUrl,\n generateCodeFrame,\n isDataUrl,\n isObject,\n normalizePath,\n processSrcSet\n} from '../utils'\nimport { Plugin } from '../plugin'\nimport { ResolvedConfig } from '../config'\nimport postcssrc from 'postcss-load-config'\nimport {\n NormalizedOutputOptions,\n OutputChunk,\n RenderedChunk,\n RollupError,\n SourceMap\n} from 'rollup'\nimport { dataToEsm } from '@rollup/pluginutils'\nimport chalk from 'chalk'\nimport { CLIENT_PUBLIC_PATH } from '../constants'\nimport { ResolveFn, ViteDevServer } from '../'\nimport {\n getAssetFilename,\n assetUrlRE,\n registerAssetToChunk,\n fileToUrl,\n checkPublicFile\n} from './asset'\nimport MagicString from 'magic-string'\nimport * as Postcss from 'postcss'\nimport type Sass from 'sass'\n// We need to disable check of extraneous import which is buggy for stylus,\n// and causes the CI tests fail, see: https://github.com/vitejs/vite/pull/2860\nimport type Stylus from 'stylus' // eslint-disable-line node/no-extraneous-import\nimport type Less from 'less'\nimport { Alias } from 'types/alias'\nimport type { ModuleNode } from '../server/moduleGraph'\nimport { transform, formatMessages } from 'esbuild'\n\n// const debug = createDebugger('vite:css')\n\nexport interface CSSOptions {\n /**\n * https://github.com/css-modules/postcss-modules\n */\n modules?: CSSModulesOptions | false\n preprocessorOptions?: Record\n postcss?:\n | string\n | (Postcss.ProcessOptions & {\n plugins?: Postcss.Plugin[]\n })\n}\n\nexport interface CSSModulesOptions {\n getJSON?: (\n cssFileName: string,\n json: Record,\n outputFileName: string\n ) => void\n scopeBehaviour?: 'global' | 'local'\n globalModulePaths?: RegExp[]\n generateScopedName?:\n | string\n | ((name: string, filename: string, css: string) => string)\n hashPrefix?: string\n /**\n * default: null\n */\n localsConvention?:\n | 'camelCase'\n | 'camelCaseOnly'\n | 'dashes'\n | 'dashesOnly'\n | null\n}\n\nconst cssLangs = `\\\\.(css|less|sass|scss|styl|stylus|pcss|postcss)($|\\\\?)`\nconst cssLangRE = new RegExp(cssLangs)\nconst cssModuleRE = new RegExp(`\\\\.module${cssLangs}`)\nconst directRequestRE = /(\\?|&)direct\\b/\nconst commonjsProxyRE = /\\?commonjs-proxy/\nconst inlineRE = /(\\?|&)inline\\b/\nconst usedRE = /(\\?|&)used\\b/\n\nconst enum PreprocessLang {\n less = 'less',\n sass = 'sass',\n scss = 'scss',\n styl = 'styl',\n stylus = 'stylus'\n}\nconst enum PureCssLang {\n css = 'css'\n}\ntype CssLang = keyof typeof PureCssLang | keyof typeof PreprocessLang\n\nexport const isCSSRequest = (request: string): boolean =>\n cssLangRE.test(request)\n\nexport const isDirectCSSRequest = (request: string): boolean =>\n cssLangRE.test(request) && directRequestRE.test(request)\n\nexport const isDirectRequest = (request: string): boolean =>\n directRequestRE.test(request)\n\nconst cssModulesCache = new WeakMap<\n ResolvedConfig,\n Map>\n>()\n\nexport const chunkToEmittedCssFileMap = new WeakMap<\n RenderedChunk,\n Set\n>()\n\nexport const removedPureCssFilesCache = new WeakMap<\n ResolvedConfig,\n Map\n>()\n\nconst postcssConfigCache = new WeakMap<\n ResolvedConfig,\n PostCSSConfigResult | null\n>()\n\n/**\n * Plugin applied before user plugins\n */\nexport function cssPlugin(config: ResolvedConfig): Plugin {\n let server: ViteDevServer\n let moduleCache: Map>\n\n const resolveUrl = config.createResolver({\n preferRelative: true,\n tryIndex: false,\n extensions: []\n })\n const atImportResolvers = createCSSResolvers(config)\n\n return {\n name: 'vite:css',\n\n configureServer(_server) {\n server = _server\n },\n\n buildStart() {\n // Ensure a new cache for every build (i.e. rebuilding in watch mode)\n moduleCache = new Map>()\n cssModulesCache.set(config, moduleCache)\n\n removedPureCssFilesCache.set(config, new Map())\n },\n\n async transform(raw, id) {\n if (!isCSSRequest(id) || commonjsProxyRE.test(id)) {\n return\n }\n\n const urlReplacer: CssUrlReplacer = async (url, importer) => {\n if (checkPublicFile(url, config)) {\n return config.base + url.slice(1)\n }\n const resolved = await resolveUrl(url, importer)\n if (resolved) {\n return fileToUrl(resolved, config, this)\n }\n return url\n }\n\n const {\n code: css,\n modules,\n deps\n } = await compileCSS(\n id,\n raw,\n config,\n urlReplacer,\n atImportResolvers,\n server\n )\n if (modules) {\n moduleCache.set(id, modules)\n }\n\n // track deps for build watch mode\n if (config.command === 'build' && config.build.watch && deps) {\n for (const file of deps) {\n this.addWatchFile(file)\n }\n }\n\n // dev\n if (server) {\n // server only logic for handling CSS @import dependency hmr\n const { moduleGraph } = server\n const thisModule = moduleGraph.getModuleById(id)\n if (thisModule) {\n // CSS modules cannot self-accept since it exports values\n const isSelfAccepting = !modules\n if (deps) {\n // record deps in the module graph so edits to @import css can trigger\n // main import to hot update\n const depModules = new Set()\n for (const file of deps) {\n depModules.add(\n isCSSRequest(file)\n ? moduleGraph.createFileOnlyEntry(file)\n : await moduleGraph.ensureEntryFromUrl(\n (\n await fileToUrl(file, config, this)\n ).replace(config.base, '/')\n )\n )\n }\n moduleGraph.updateModuleInfo(\n thisModule,\n depModules,\n // The root CSS proxy module is self-accepting and should not\n // have an explicit accept list\n new Set(),\n isSelfAccepting\n )\n for (const file of deps) {\n this.addWatchFile(file)\n }\n } else {\n thisModule.isSelfAccepting = isSelfAccepting\n }\n }\n }\n\n return {\n code: css,\n // TODO CSS source map\n map: { mappings: '' }\n }\n }\n }\n}\n\n/**\n * Plugin applied after user plugins\n */\nexport function cssPostPlugin(config: ResolvedConfig): Plugin {\n // styles initialization in buildStart causes a styling loss in watch\n const styles: Map = new Map()\n let pureCssChunks: Set\n\n // when there are multiple rollup outputs and extracting CSS, only emit once,\n // since output formats have no effect on the generated CSS.\n let outputToExtractedCSSMap: Map\n let hasEmitted = false\n\n return {\n name: 'vite:css-post',\n\n buildStart() {\n // Ensure new caches for every build (i.e. rebuilding in watch mode)\n pureCssChunks = new Set()\n outputToExtractedCSSMap = new Map()\n hasEmitted = false\n },\n\n async transform(css, id, ssr) {\n if (!isCSSRequest(id) || commonjsProxyRE.test(id)) {\n return\n }\n\n const inlined = inlineRE.test(id)\n const modules = cssModulesCache.get(config)!.get(id)\n const modulesCode =\n modules && dataToEsm(modules, { namedExports: true, preferConst: true })\n\n if (config.command === 'serve') {\n if (isDirectCSSRequest(id)) {\n return css\n } else {\n // server only\n if (ssr) {\n return modulesCode || `export default ${JSON.stringify(css)}`\n }\n if (inlined) {\n return `export default ${JSON.stringify(css)}`\n }\n return [\n `import { updateStyle, removeStyle } from ${JSON.stringify(\n path.posix.join(config.base, CLIENT_PUBLIC_PATH)\n )}`,\n `const id = ${JSON.stringify(id)}`,\n `const css = ${JSON.stringify(css)}`,\n `updateStyle(id, css)`,\n // css modules exports change on edit so it can't self accept\n `${modulesCode || `import.meta.hot.accept()\\nexport default css`}`,\n `import.meta.hot.prune(() => removeStyle(id))`\n ].join('\\n')\n }\n }\n\n // build CSS handling ----------------------------------------------------\n\n // record css\n if (!inlined) {\n styles.set(id, css)\n } else {\n css = await minifyCSS(css, config)\n }\n\n return {\n code:\n modulesCode ||\n (usedRE.test(id)\n ? `export default ${JSON.stringify(css)}`\n : `export default ''`),\n map: { mappings: '' },\n // avoid the css module from being tree-shaken so that we can retrieve\n // it in renderChunk()\n moduleSideEffects: inlined ? false : 'no-treeshake'\n }\n },\n\n async renderChunk(code, chunk, opts) {\n let chunkCSS = ''\n let isPureCssChunk = true\n const ids = Object.keys(chunk.modules)\n for (const id of ids) {\n if (\n !isCSSRequest(id) ||\n cssModuleRE.test(id) ||\n commonjsProxyRE.test(id)\n ) {\n isPureCssChunk = false\n }\n if (styles.has(id)) {\n chunkCSS += styles.get(id)\n }\n }\n\n if (!chunkCSS) {\n return null\n }\n\n // resolve asset URL placeholders to their built file URLs and perform\n // minification if necessary\n const processChunkCSS = async (\n css: string,\n {\n inlined,\n minify\n }: {\n inlined: boolean\n minify: boolean\n }\n ) => {\n // replace asset url references with resolved url.\n const isRelativeBase = config.base === '' || config.base.startsWith('.')\n css = css.replace(assetUrlRE, (_, fileHash, postfix = '') => {\n const filename = getAssetFilename(fileHash, config) + postfix\n registerAssetToChunk(chunk, filename)\n if (!isRelativeBase || inlined) {\n // absolute base or relative base but inlined (injected as style tag into\n // index.html) use the base as-is\n return config.base + filename\n } else {\n // relative base + extracted CSS - asset file will be in the same dir\n return `./${path.posix.basename(filename)}`\n }\n })\n // only external @imports should exist at this point - and they need to\n // be hoisted to the top of the CSS chunk per spec (#1845)\n if (css.includes('@import')) {\n css = await hoistAtImports(css)\n }\n if (minify && config.build.minify) {\n css = await minifyCSS(css, config)\n }\n return css\n }\n\n if (config.build.cssCodeSplit) {\n if (isPureCssChunk) {\n // this is a shared CSS-only chunk that is empty.\n pureCssChunks.add(chunk.fileName)\n }\n if (opts.format === 'es' || opts.format === 'cjs') {\n chunkCSS = await processChunkCSS(chunkCSS, {\n inlined: false,\n minify: true\n })\n // emit corresponding css file\n const fileHandle = this.emitFile({\n name: chunk.name + '.css',\n type: 'asset',\n source: chunkCSS\n })\n chunkToEmittedCssFileMap.set(\n chunk,\n new Set([this.getFileName(fileHandle)])\n )\n } else if (!config.build.ssr) {\n // legacy build, inline css\n chunkCSS = await processChunkCSS(chunkCSS, {\n inlined: true,\n minify: true\n })\n const style = `__vite_style__`\n const injectCode =\n `var ${style} = document.createElement('style');` +\n `${style}.innerHTML = ${JSON.stringify(chunkCSS)};` +\n `document.head.appendChild(${style});`\n if (config.build.sourcemap) {\n const s = new MagicString(code)\n s.prepend(injectCode)\n return {\n code: s.toString(),\n map: s.generateMap({ hires: true })\n }\n } else {\n return { code: injectCode + code }\n }\n }\n } else {\n // non-split extracted CSS will be minified together\n chunkCSS = await processChunkCSS(chunkCSS, {\n inlined: false,\n minify: false\n })\n outputToExtractedCSSMap.set(\n opts,\n (outputToExtractedCSSMap.get(opts) || '') + chunkCSS\n )\n }\n return null\n },\n\n async generateBundle(opts, bundle) {\n // remove empty css chunks and their imports\n if (pureCssChunks.size) {\n const emptyChunkFiles = [...pureCssChunks]\n .map((file) => path.basename(file))\n .join('|')\n .replace(/\\./g, '\\\\.')\n const emptyChunkRE = new RegExp(\n opts.format === 'es'\n ? `\\\\bimport\\\\s*\"[^\"]*(?:${emptyChunkFiles})\";\\n?`\n : `\\\\brequire\\\\(\\\\s*\"[^\"]*(?:${emptyChunkFiles})\"\\\\);\\n?`,\n 'g'\n )\n for (const file in bundle) {\n const chunk = bundle[file]\n if (chunk.type === 'chunk') {\n // remove pure css chunk from other chunk's imports,\n // and also register the emitted CSS files under the importer\n // chunks instead.\n chunk.imports = chunk.imports.filter((file) => {\n if (pureCssChunks.has(file)) {\n const css = chunkToEmittedCssFileMap.get(\n bundle[file] as OutputChunk\n )\n if (css) {\n let existing = chunkToEmittedCssFileMap.get(chunk)\n if (!existing) {\n existing = new Set()\n }\n css.forEach((file) => existing!.add(file))\n chunkToEmittedCssFileMap.set(chunk, existing)\n }\n return false\n }\n return true\n })\n chunk.code = chunk.code.replace(\n emptyChunkRE,\n // remove css import while preserving source map location\n (m) => `/* empty css ${''.padEnd(m.length - 15)}*/`\n )\n }\n }\n const removedPureCssFiles = removedPureCssFilesCache.get(config)!\n pureCssChunks.forEach((fileName) => {\n removedPureCssFiles.set(fileName, bundle[fileName] as RenderedChunk)\n delete bundle[fileName]\n })\n }\n\n let extractedCss = outputToExtractedCSSMap.get(opts)\n if (extractedCss && !hasEmitted) {\n hasEmitted = true\n // minify css\n if (config.build.minify) {\n extractedCss = await minifyCSS(extractedCss, config)\n }\n this.emitFile({\n name: 'style.css',\n type: 'asset',\n source: extractedCss\n })\n }\n }\n }\n}\n\ninterface CSSAtImportResolvers {\n css: ResolveFn\n sass: ResolveFn\n less: ResolveFn\n}\n\nfunction createCSSResolvers(config: ResolvedConfig): CSSAtImportResolvers {\n let cssResolve: ResolveFn | undefined\n let sassResolve: ResolveFn | undefined\n let lessResolve: ResolveFn | undefined\n return {\n get css() {\n return (\n cssResolve ||\n (cssResolve = config.createResolver({\n extensions: ['.css'],\n mainFields: ['style'],\n tryIndex: false,\n preferRelative: true\n }))\n )\n },\n\n get sass() {\n return (\n sassResolve ||\n (sassResolve = config.createResolver({\n extensions: ['.scss', '.sass', '.css'],\n mainFields: ['sass', 'style'],\n tryIndex: true,\n tryPrefix: '_',\n preferRelative: true\n }))\n )\n },\n\n get less() {\n return (\n lessResolve ||\n (lessResolve = config.createResolver({\n extensions: ['.less', '.css'],\n mainFields: ['less', 'style'],\n tryIndex: false,\n preferRelative: true\n }))\n )\n }\n }\n}\n\nfunction getCssResolversKeys(\n resolvers: CSSAtImportResolvers\n): Array {\n return Object.keys(resolvers) as unknown as Array\n}\n\nasync function compileCSS(\n id: string,\n code: string,\n config: ResolvedConfig,\n urlReplacer: CssUrlReplacer,\n atImportResolvers: CSSAtImportResolvers,\n server?: ViteDevServer\n): Promise<{\n code: string\n map?: SourceMap\n ast?: Postcss.Result\n modules?: Record\n deps?: Set\n}> {\n const { modules: modulesOptions, preprocessorOptions } = config.css || {}\n const isModule = modulesOptions !== false && cssModuleRE.test(id)\n // although at serve time it can work without processing, we do need to\n // crawl them in order to register watch dependencies.\n const needInlineImport = code.includes('@import')\n const hasUrl = cssUrlRE.test(code) || cssImageSetRE.test(code)\n const postcssConfig = await resolvePostcssConfig(config)\n const lang = id.match(cssLangRE)?.[1] as CssLang | undefined\n\n // 1. plain css that needs no processing\n if (\n lang === 'css' &&\n !postcssConfig &&\n !isModule &&\n !needInlineImport &&\n !hasUrl\n ) {\n return { code }\n }\n\n let map: SourceMap | undefined\n let modules: Record | undefined\n const deps = new Set()\n\n // 2. pre-processors: sass etc.\n if (isPreProcessor(lang)) {\n const preProcessor = preProcessors[lang]\n let opts = (preprocessorOptions && preprocessorOptions[lang]) || {}\n // support @import from node dependencies by default\n switch (lang) {\n case PreprocessLang.scss:\n case PreprocessLang.sass:\n opts = {\n includePaths: ['node_modules'],\n alias: config.resolve.alias,\n ...opts\n }\n break\n case PreprocessLang.less:\n case PreprocessLang.styl:\n case PreprocessLang.stylus:\n opts = {\n paths: ['node_modules'],\n alias: config.resolve.alias,\n ...opts\n }\n }\n // important: set this for relative import resolving\n opts.filename = cleanUrl(id)\n const preprocessResult = await preProcessor(\n code,\n config.root,\n opts,\n atImportResolvers\n )\n if (preprocessResult.errors.length) {\n throw preprocessResult.errors[0]\n }\n\n code = preprocessResult.code\n map = preprocessResult.map as SourceMap\n if (preprocessResult.deps) {\n preprocessResult.deps.forEach((dep) => {\n // sometimes sass registers the file itself as a dep\n if (normalizePath(dep) !== normalizePath(opts.filename)) {\n deps.add(dep)\n }\n })\n }\n }\n\n // 3. postcss\n const postcssOptions = (postcssConfig && postcssConfig.options) || {}\n const postcssPlugins =\n postcssConfig && postcssConfig.plugins ? postcssConfig.plugins.slice() : []\n\n if (needInlineImport) {\n postcssPlugins.unshift(\n (await import('postcss-import')).default({\n async resolve(id, basedir) {\n const resolved = await atImportResolvers.css(\n id,\n path.join(basedir, '*')\n )\n if (resolved) {\n return path.resolve(resolved)\n }\n return id\n }\n })\n )\n }\n postcssPlugins.push(\n UrlRewritePostcssPlugin({\n replacer: urlReplacer\n }) as Postcss.Plugin\n )\n\n if (isModule) {\n postcssPlugins.unshift(\n (await import('postcss-modules')).default({\n ...modulesOptions,\n getJSON(\n cssFileName: string,\n _modules: Record,\n outputFileName: string\n ) {\n modules = _modules\n if (modulesOptions && typeof modulesOptions.getJSON === 'function') {\n modulesOptions.getJSON(cssFileName, _modules, outputFileName)\n }\n },\n async resolve(id: string) {\n for (const key of getCssResolversKeys(atImportResolvers)) {\n const resolved = await atImportResolvers[key](id)\n if (resolved) {\n return path.resolve(resolved)\n }\n }\n\n return id\n }\n })\n )\n }\n\n if (!postcssPlugins.length) {\n return {\n code,\n map\n }\n }\n\n // postcss is an unbundled dep and should be lazy imported\n const postcssResult = await (await import('postcss'))\n .default(postcssPlugins)\n .process(code, {\n ...postcssOptions,\n to: id,\n from: id,\n map: {\n inline: false,\n annotation: false,\n prev: map\n }\n })\n\n // record CSS dependencies from @imports\n for (const message of postcssResult.messages) {\n if (message.type === 'dependency') {\n deps.add(message.file as string)\n } else if (message.type === 'dir-dependency') {\n // https://github.com/postcss/postcss/blob/main/docs/guidelines/plugin.md#3-dependencies\n const { dir, glob: globPattern = '**' } = message\n const pattern =\n normalizePath(path.resolve(path.dirname(id), dir)) + `/` + globPattern\n const files = glob.sync(pattern, {\n ignore: ['**/node_modules/**']\n })\n for (let i = 0; i < files.length; i++) {\n deps.add(files[i])\n }\n if (server) {\n // register glob importers so we can trigger updates on file add/remove\n if (!(id in server._globImporters)) {\n server._globImporters[id] = {\n module: server.moduleGraph.getModuleById(id)!,\n importGlobs: []\n }\n }\n server._globImporters[id].importGlobs.push({\n base: config.root,\n pattern\n })\n }\n } else if (message.type === 'warning') {\n let msg = `[vite:css] ${message.text}`\n if (message.line && message.column) {\n msg += `\\n${generateCodeFrame(code, {\n line: message.line,\n column: message.column\n })}`\n }\n config.logger.warn(chalk.yellow(msg))\n }\n }\n\n return {\n ast: postcssResult,\n code: postcssResult.css,\n map: postcssResult.map as any,\n modules,\n deps\n }\n}\n\ninterface PostCSSConfigResult {\n options: Postcss.ProcessOptions\n plugins: Postcss.Plugin[]\n}\n\nasync function resolvePostcssConfig(\n config: ResolvedConfig\n): Promise {\n let result = postcssConfigCache.get(config)\n if (result !== undefined) {\n return result\n }\n\n // inline postcss config via vite config\n const inlineOptions = config.css?.postcss\n if (isObject(inlineOptions)) {\n const options = { ...inlineOptions }\n\n delete options.plugins\n result = {\n options,\n plugins: inlineOptions.plugins || []\n }\n } else {\n try {\n const searchPath =\n typeof inlineOptions === 'string' ? inlineOptions : config.root\n // @ts-ignore\n result = await postcssrc({}, searchPath)\n } catch (e) {\n if (!/No PostCSS Config found/.test(e.message)) {\n throw e\n }\n result = null\n }\n }\n\n postcssConfigCache.set(config, result)\n return result\n}\n\ntype CssUrlReplacer = (\n url: string,\n importer?: string\n) => string | Promise\n// https://drafts.csswg.org/css-syntax-3/#identifier-code-point\nexport const cssUrlRE =\n /(?<=^|[^\\w\\-\\u0080-\\uffff])url\\(\\s*('[^']+'|\"[^\"]+\"|[^'\")]+)\\s*\\)/\nconst cssImageSetRE = /image-set\\(([^)]+)\\)/\n\nconst UrlRewritePostcssPlugin: Postcss.PluginCreator<{\n replacer: CssUrlReplacer\n}> = (opts) => {\n if (!opts) {\n throw new Error('base or replace is required')\n }\n\n return {\n postcssPlugin: 'vite-url-rewrite',\n Once(root) {\n const promises: Promise[] = []\n root.walkDecls((declaration) => {\n const isCssUrl = cssUrlRE.test(declaration.value)\n const isCssImageSet = cssImageSetRE.test(declaration.value)\n if (isCssUrl || isCssImageSet) {\n const replacerForDeclaration = (rawUrl: string) => {\n const importer = declaration.source?.input.file\n return opts.replacer(rawUrl, importer)\n }\n const rewriterToUse = isCssUrl ? rewriteCssUrls : rewriteCssImageSet\n promises.push(\n rewriterToUse(declaration.value, replacerForDeclaration).then(\n (url) => {\n declaration.value = url\n }\n )\n )\n }\n })\n if (promises.length) {\n return Promise.all(promises) as any\n }\n }\n }\n}\nUrlRewritePostcssPlugin.postcss = true\n\nfunction rewriteCssUrls(\n css: string,\n replacer: CssUrlReplacer\n): Promise {\n return asyncReplace(css, cssUrlRE, async (match) => {\n const [matched, rawUrl] = match\n return await doUrlReplace(rawUrl, matched, replacer)\n })\n}\n\nfunction rewriteCssImageSet(\n css: string,\n replacer: CssUrlReplacer\n): Promise {\n return asyncReplace(css, cssImageSetRE, async (match) => {\n const [matched, rawUrl] = match\n const url = await processSrcSet(rawUrl, ({ url }) =>\n doUrlReplace(url, matched, replacer)\n )\n return `image-set(${url})`\n })\n}\nasync function doUrlReplace(\n rawUrl: string,\n matched: string,\n replacer: CssUrlReplacer\n) {\n let wrap = ''\n const first = rawUrl[0]\n if (first === `\"` || first === `'`) {\n wrap = first\n rawUrl = rawUrl.slice(1, -1)\n }\n if (isExternalUrl(rawUrl) || isDataUrl(rawUrl) || rawUrl.startsWith('#')) {\n return matched\n }\n\n return `url(${wrap}${await replacer(rawUrl)}${wrap})`\n}\n\nasync function minifyCSS(css: string, config: ResolvedConfig) {\n const { code, warnings } = await transform(css, {\n loader: 'css',\n minify: true,\n target: config.build.cssTarget || undefined\n })\n if (warnings.length) {\n const msgs = await formatMessages(warnings, { kind: 'warning' })\n config.logger.warn(\n chalk.yellow(`warnings when minifying css:\\n${msgs.join('\\n')}`)\n )\n }\n return code\n}\n\n// #1845\n// CSS @import can only appear at top of the file. We need to hoist all @import\n// to top when multiple files are concatenated.\nasync function hoistAtImports(css: string) {\n const postcss = await import('postcss')\n return (await postcss.default([AtImportHoistPlugin]).process(css)).css\n}\n\nconst AtImportHoistPlugin: Postcss.PluginCreator = () => {\n return {\n postcssPlugin: 'vite-hoist-at-imports',\n Once(root) {\n const imports: Postcss.AtRule[] = []\n root.walkAtRules((rule) => {\n if (rule.name === 'import') {\n // record in reverse so that can simply prepend to preserve order\n imports.unshift(rule)\n }\n })\n imports.forEach((i) => root.prepend(i))\n }\n }\n}\nAtImportHoistPlugin.postcss = true\n\n// Preprocessor support. This logic is largely replicated from @vue/compiler-sfc\n\ntype PreprocessorAdditionalData =\n | string\n | ((source: string, filename: string) => string | Promise)\n\ntype StylePreprocessorOptions = {\n [key: string]: any\n additionalData?: PreprocessorAdditionalData\n filename: string\n alias: Alias[]\n}\n\ntype SassStylePreprocessorOptions = StylePreprocessorOptions & Sass.Options\n\ntype StylePreprocessor = (\n source: string,\n root: string,\n options: StylePreprocessorOptions,\n resolvers: CSSAtImportResolvers\n) => StylePreprocessorResults | Promise\n\ntype SassStylePreprocessor = (\n source: string,\n root: string,\n options: SassStylePreprocessorOptions,\n resolvers: CSSAtImportResolvers\n) => StylePreprocessorResults | Promise\n\nexport interface StylePreprocessorResults {\n code: string\n map?: object\n errors: RollupError[]\n deps: string[]\n}\n\nconst loadedPreprocessors: Partial> = {}\n\nfunction loadPreprocessor(lang: PreprocessLang.scss, root: string): typeof Sass\nfunction loadPreprocessor(lang: PreprocessLang.sass, root: string): typeof Sass\nfunction loadPreprocessor(lang: PreprocessLang.less, root: string): typeof Less\nfunction loadPreprocessor(\n lang: PreprocessLang.stylus,\n root: string\n): typeof Stylus\nfunction loadPreprocessor(lang: PreprocessLang, root: string): any {\n if (lang in loadedPreprocessors) {\n return loadedPreprocessors[lang]\n }\n try {\n // Search for the preprocessor in the root directory first, and fall back\n // to the default require paths.\n const fallbackPaths = require.resolve.paths?.(lang) || []\n const resolved = require.resolve(lang, { paths: [root, ...fallbackPaths] })\n return (loadedPreprocessors[lang] = require(resolved))\n } catch (e) {\n throw new Error(\n `Preprocessor dependency \"${lang}\" not found. Did you install it?`\n )\n }\n}\n\n// .scss/.sass processor\nconst scss: SassStylePreprocessor = async (\n source,\n root,\n options,\n resolvers\n) => {\n const render = loadPreprocessor(PreprocessLang.sass, root).render\n const internalImporter: Sass.Importer = (url, importer, done) => {\n resolvers.sass(url, importer).then((resolved) => {\n if (resolved) {\n rebaseUrls(resolved, options.filename, options.alias)\n .then(done)\n .catch(done)\n } else {\n done(null)\n }\n })\n }\n const importer = [internalImporter]\n if (options.importer) {\n Array.isArray(options.importer)\n ? importer.push(...options.importer)\n : importer.push(options.importer)\n }\n\n const finalOptions: Sass.Options = {\n ...options,\n data: await getSource(source, options.filename, options.additionalData),\n file: options.filename,\n outFile: options.filename,\n importer\n }\n\n try {\n const result = await new Promise((resolve, reject) => {\n render(finalOptions, (err, res) => {\n if (err) {\n reject(err)\n } else {\n resolve(res)\n }\n })\n })\n const deps = result.stats.includedFiles\n\n return {\n code: result.css.toString(),\n errors: [],\n deps\n }\n } catch (e) {\n // normalize SASS error\n e.id = e.file\n e.frame = e.formatted\n return { code: '', errors: [e], deps: [] }\n }\n}\n\nconst sass: SassStylePreprocessor = (source, root, options, aliasResolver) =>\n scss(\n source,\n root,\n {\n ...options,\n indentedSyntax: true\n },\n aliasResolver\n )\n\n/**\n * relative url() inside \\@imported sass and less files must be rebased to use\n * root file as base.\n */\nasync function rebaseUrls(\n file: string,\n rootFile: string,\n alias: Alias[]\n): Promise {\n file = path.resolve(file) // ensure os-specific flashes\n // in the same dir, no need to rebase\n const fileDir = path.dirname(file)\n const rootDir = path.dirname(rootFile)\n if (fileDir === rootDir) {\n return { file }\n }\n // no url()\n const content = fs.readFileSync(file, 'utf-8')\n if (!cssUrlRE.test(content)) {\n return { file }\n }\n const rebased = await rewriteCssUrls(content, (url) => {\n if (url.startsWith('/')) return url\n // match alias, no need to rewrite\n for (const { find } of alias) {\n const matches =\n typeof find === 'string' ? url.startsWith(find) : find.test(url)\n if (matches) {\n return url\n }\n }\n const absolute = path.resolve(fileDir, url)\n const relative = path.relative(rootDir, absolute)\n return normalizePath(relative)\n })\n return {\n file,\n contents: rebased\n }\n}\n\n// .less\nconst less: StylePreprocessor = async (source, root, options, resolvers) => {\n const nodeLess = loadPreprocessor(PreprocessLang.less, root)\n const viteResolverPlugin = createViteLessPlugin(\n nodeLess,\n options.filename,\n options.alias,\n resolvers\n )\n source = await getSource(source, options.filename, options.additionalData)\n\n let result: Less.RenderOutput | undefined\n try {\n result = await nodeLess.render(source, {\n ...options,\n plugins: [viteResolverPlugin, ...(options.plugins || [])]\n })\n } catch (e) {\n const error = e as Less.RenderError\n // normalize error info\n const normalizedError: RollupError = new Error(error.message || error.type)\n normalizedError.loc = {\n file: error.filename || options.filename,\n line: error.line,\n column: error.column\n }\n return { code: '', errors: [normalizedError], deps: [] }\n }\n return {\n code: result.css.toString(),\n deps: result.imports,\n errors: []\n }\n}\n\n/**\n * Less manager, lazy initialized\n */\nlet ViteLessManager: any\n\nfunction createViteLessPlugin(\n less: typeof Less,\n rootFile: string,\n alias: Alias[],\n resolvers: CSSAtImportResolvers\n): Less.Plugin {\n if (!ViteLessManager) {\n ViteLessManager = class ViteManager extends less.FileManager {\n resolvers\n rootFile\n alias\n constructor(\n rootFile: string,\n resolvers: CSSAtImportResolvers,\n alias: Alias[]\n ) {\n super()\n this.rootFile = rootFile\n this.resolvers = resolvers\n this.alias = alias\n }\n override supports() {\n return true\n }\n override supportsSync() {\n return false\n }\n override async loadFile(\n filename: string,\n dir: string,\n opts: any,\n env: any\n ): Promise {\n const resolved = await this.resolvers.less(\n filename,\n path.join(dir, '*')\n )\n if (resolved) {\n const result = await rebaseUrls(resolved, this.rootFile, this.alias)\n let contents: string\n if (result && 'contents' in result) {\n contents = result.contents\n } else {\n contents = fs.readFileSync(resolved, 'utf-8')\n }\n return {\n filename: path.resolve(resolved),\n contents\n }\n } else {\n return super.loadFile(filename, dir, opts, env)\n }\n }\n }\n }\n\n return {\n install(_, pluginManager) {\n pluginManager.addFileManager(\n new ViteLessManager(rootFile, resolvers, alias)\n )\n },\n minVersion: [3, 0, 0]\n }\n}\n\n// .styl\nconst styl: StylePreprocessor = async (source, root, options) => {\n const nodeStylus = loadPreprocessor(PreprocessLang.stylus, root)\n // Get source with preprocessor options.additionalData. Make sure a new line separator\n // is added to avoid any render error, as added stylus content may not have semi-colon separators\n source = await getSource(\n source,\n options.filename,\n options.additionalData,\n '\\n'\n )\n // Get preprocessor options.imports dependencies as stylus\n // does not return them with its builtin `.deps()` method\n const importsDeps = (options.imports ?? []).map((dep: string) =>\n path.resolve(dep)\n )\n try {\n const ref = nodeStylus(source, options)\n\n // if (map) ref.set('sourcemap', { inline: false, comment: false })\n\n const result = ref.render()\n\n // Concat imports deps with computed deps\n const deps = [...ref.deps(), ...importsDeps]\n\n return { code: result, errors: [], deps }\n } catch (e) {\n return { code: '', errors: [e], deps: [] }\n }\n}\n\nfunction getSource(\n source: string,\n filename: string,\n additionalData?: PreprocessorAdditionalData,\n sep: string = ''\n): string | Promise {\n if (!additionalData) return source\n if (typeof additionalData === 'function') {\n return additionalData(source, filename)\n }\n return additionalData + sep + source\n}\n\nconst preProcessors = Object.freeze({\n [PreprocessLang.less]: less,\n [PreprocessLang.sass]: sass,\n [PreprocessLang.scss]: scss,\n [PreprocessLang.styl]: styl,\n [PreprocessLang.stylus]: styl\n})\n\nfunction isPreProcessor(lang: any): lang is PreprocessLang {\n return lang && lang in preProcessors\n}\n","/* es-module-lexer 0.9.2 */\nconst A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];export function parse(E,g=\"@\"){if(!B)return init.then(()=>parse(E));const I=E.length+1,w=(B.__heap_base.value||B.__heap_base)+4*I-B.memory.buffer.byteLength;w>0&&B.memory.grow(Math.ceil(w/65536));const D=B.sa(I-1);if((A?C:Q)(E,new Uint16Array(B.memory.buffer,D,I)),!B.parse())throw Object.assign(new Error(`Parse error ${g}:${E.slice(0,B.e()).split(\"\\n\").length}:${B.e()-E.lastIndexOf(\"\\n\",B.e()-1)}`),{idx:B.e()});const k=[],L=[];for(;B.ri();){const A=B.is(),Q=B.ie(),C=B.ai(),g=B.id(),I=B.ss(),w=B.se();let D;B.ip()&&(D=o(E.slice(-1===g?A-1:A,-1===g?Q+1:Q))),k.push({n:D,s:A,e:Q,ss:I,se:w,d:g,a:C})}for(;B.re();){const A=E.slice(B.es(),B.ee()),Q=A[0];L.push('\"'===Q||\"'\"===Q?o(A):A)}function o(A){try{return(0,eval)(A)}catch(A){}}return[k,L,!!B.f()]}function Q(A,Q){const C=A.length;let B=0;for(;B>>8}}function C(A,Q){const C=A.length;let B=0;for(;BA.charCodeAt(0)))).then(WebAssembly.instantiate).then(({exports:A})=>{B=A});var E;","import path from 'path'\nimport glob from 'fast-glob'\nimport {\n isModernFlag,\n preloadMethod,\n preloadMarker\n} from './plugins/importAnalysisBuild'\nimport { cleanUrl } from './utils'\nimport { RollupError } from 'rollup'\n\nexport async function transformImportGlob(\n source: string,\n pos: number,\n importer: string,\n importIndex: number,\n root: string,\n normalizeUrl?: (url: string, pos: number) => Promise<[string, string]>,\n preload = true\n): Promise<{\n importsString: string\n imports: string[]\n exp: string\n endIndex: number\n isEager: boolean\n pattern: string\n base: string\n}> {\n const isEager = source.slice(pos, pos + 21) === 'import.meta.globEager'\n const isEagerDefault =\n isEager && source.slice(pos + 21, pos + 28) === 'Default'\n\n const err = (msg: string) => {\n const e = new Error(`Invalid glob import syntax: ${msg}`)\n ;(e as any).pos = pos\n return e\n }\n\n importer = cleanUrl(importer)\n const importerBasename = path.basename(importer)\n\n let [pattern, endIndex] = lexGlobPattern(source, pos)\n if (!pattern.startsWith('.') && !pattern.startsWith('/')) {\n throw err(`pattern must start with \".\" or \"/\" (relative to project root)`)\n }\n let base: string\n let parentDepth = 0\n const isAbsolute = pattern.startsWith('/')\n if (isAbsolute) {\n base = path.resolve(root)\n pattern = pattern.slice(1)\n } else {\n base = path.dirname(importer)\n while (pattern.startsWith('../')) {\n pattern = pattern.slice(3)\n base = path.resolve(base, '../')\n parentDepth++\n }\n if (pattern.startsWith('./')) {\n pattern = pattern.slice(2)\n }\n }\n const files = glob.sync(pattern, {\n cwd: base,\n ignore: ['**/node_modules/**']\n })\n const imports: string[] = []\n let importsString = ``\n let entries = ``\n for (let i = 0; i < files.length; i++) {\n // skip importer itself\n if (files[i] === importerBasename) continue\n const file = isAbsolute\n ? `/${files[i]}`\n : parentDepth\n ? `${'../'.repeat(parentDepth)}${files[i]}`\n : `./${files[i]}`\n let importee = file\n if (normalizeUrl) {\n ;[importee] = await normalizeUrl(file, pos)\n }\n imports.push(importee)\n const identifier = `__glob_${importIndex}_${i}`\n if (isEager) {\n importsString += `import ${\n isEagerDefault ? `` : `* as `\n }${identifier} from ${JSON.stringify(importee)};`\n entries += ` ${JSON.stringify(file)}: ${identifier},`\n } else {\n let imp = `import(${JSON.stringify(importee)})`\n if (!normalizeUrl && preload) {\n imp =\n `(${isModernFlag}` +\n `? ${preloadMethod}(()=>${imp},\"${preloadMarker}\")` +\n `: ${imp})`\n }\n entries += ` ${JSON.stringify(file)}: () => ${imp},`\n }\n }\n\n return {\n imports,\n importsString,\n exp: `{${entries}}`,\n endIndex,\n isEager,\n pattern,\n base\n }\n}\n\nconst enum LexerState {\n inCall,\n inSingleQuoteString,\n inDoubleQuoteString,\n inTemplateString\n}\n\nfunction lexGlobPattern(code: string, pos: number): [string, number] {\n let state = LexerState.inCall\n let pattern = ''\n\n let i = code.indexOf(`(`, pos) + 1\n outer: for (; i < code.length; i++) {\n const char = code.charAt(i)\n switch (state) {\n case LexerState.inCall:\n if (char === `'`) {\n state = LexerState.inSingleQuoteString\n } else if (char === `\"`) {\n state = LexerState.inDoubleQuoteString\n } else if (char === '`') {\n state = LexerState.inTemplateString\n } else if (/\\s/.test(char)) {\n continue\n } else {\n error(i)\n }\n break\n case LexerState.inSingleQuoteString:\n if (char === `'`) {\n break outer\n } else {\n pattern += char\n }\n break\n case LexerState.inDoubleQuoteString:\n if (char === `\"`) {\n break outer\n } else {\n pattern += char\n }\n break\n case LexerState.inTemplateString:\n if (char === '`') {\n break outer\n } else {\n pattern += char\n }\n break\n default:\n throw new Error('unknown import.meta.glob lexer state')\n }\n }\n return [pattern, code.indexOf(`)`, i) + 1]\n}\n\nfunction error(pos: number) {\n const err = new Error(\n `import.meta.glob() can only accept string literals.`\n ) as RollupError\n err.pos = pos\n throw err\n}\n","import path from 'path'\nimport { ResolvedConfig } from '../config'\nimport { Plugin } from '../plugin'\nimport MagicString from 'magic-string'\nimport { ImportSpecifier, init, parse as parseImports } from 'es-module-lexer'\nimport { OutputChunk } from 'rollup'\nimport {\n chunkToEmittedCssFileMap,\n isCSSRequest,\n removedPureCssFilesCache\n} from './css'\nimport { transformImportGlob } from '../importGlob'\nimport { bareImportRE } from '../utils'\n\n/**\n * A flag for injected helpers. This flag will be set to `false` if the output\n * target is not native es - so that injected helper logic can be conditionally\n * dropped.\n */\nexport const isModernFlag = `__VITE_IS_MODERN__`\nexport const preloadMethod = `__vitePreload`\nexport const preloadMarker = `__VITE_PRELOAD__`\nexport const preloadBaseMarker = `__VITE_PRELOAD_BASE__`\n\nconst preloadHelperId = 'vite/preload-helper'\nconst preloadMarkerRE = new RegExp(`\"${preloadMarker}\"`, 'g')\n\n/**\n * Helper for preloading CSS and direct imports of async chunks in parallel to\n * the async chunk itself.\n */\n\nfunction detectScriptRel() {\n // @ts-ignore\n const relList = document.createElement('link').relList\n // @ts-ignore\n return relList && relList.supports && relList.supports('modulepreload')\n ? 'modulepreload'\n : 'preload'\n}\n\ndeclare const scriptRel: string\nfunction preload(baseModule: () => Promise<{}>, deps?: string[]) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) {\n return baseModule()\n }\n\n return Promise.all(\n deps.map((dep) => {\n // @ts-ignore\n dep = `${base}${dep}`\n // @ts-ignore\n if (dep in seen) return\n // @ts-ignore\n seen[dep] = true\n const isCss = dep.endsWith('.css')\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : ''\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return\n }\n // @ts-ignore\n const link = document.createElement('link')\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel\n if (!isCss) {\n link.as = 'script'\n link.crossOrigin = ''\n }\n link.href = dep\n // @ts-ignore\n document.head.appendChild(link)\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res)\n link.addEventListener('error', rej)\n })\n }\n })\n ).then(() => baseModule())\n}\n\n/**\n * Build only. During serve this is performed as part of ./importAnalysis.\n */\nexport function buildImportAnalysisPlugin(config: ResolvedConfig): Plugin {\n const ssr = !!config.build.ssr\n const insertPreload = !(ssr || !!config.build.lib)\n\n const scriptRel = config.build.polyfillModulePreload\n ? `'modulepreload'`\n : `(${detectScriptRel.toString()})()`\n const preloadCode = `const scriptRel = ${scriptRel};const seen = {};const base = '${preloadBaseMarker}';export const ${preloadMethod} = ${preload.toString()}`\n\n return {\n name: 'vite:build-import-analysis',\n\n resolveId(id) {\n if (id === preloadHelperId) {\n return id\n }\n },\n\n load(id) {\n if (id === preloadHelperId) {\n return preloadCode.replace(preloadBaseMarker, config.base)\n }\n },\n\n async transform(source, importer) {\n if (\n importer.includes('node_modules') &&\n !source.includes('import.meta.glob')\n ) {\n return\n }\n\n await init\n\n let imports: readonly ImportSpecifier[] = []\n try {\n imports = parseImports(source)[0]\n } catch (e: any) {\n this.error(e, e.idx)\n }\n\n if (!imports.length) {\n return null\n }\n\n let s: MagicString | undefined\n const str = () => s || (s = new MagicString(source))\n let needPreloadHelper = false\n\n for (let index = 0; index < imports.length; index++) {\n const {\n s: start,\n e: end,\n ss: expStart,\n n: specifier,\n d: dynamicIndex\n } = imports[index]\n\n // import.meta.glob\n if (\n source.slice(start, end) === 'import.meta' &&\n source.slice(end, end + 5) === '.glob'\n ) {\n const { importsString, exp, endIndex, isEager } =\n await transformImportGlob(\n source,\n start,\n importer,\n index,\n config.root,\n undefined,\n insertPreload\n )\n str().prepend(importsString)\n str().overwrite(expStart, endIndex, exp)\n if (!isEager) {\n needPreloadHelper = true\n }\n continue\n }\n\n if (dynamicIndex > -1 && insertPreload) {\n needPreloadHelper = true\n const dynamicEnd = source.indexOf(`)`, end) + 1\n const original = source.slice(dynamicIndex, dynamicEnd)\n const replacement = `${preloadMethod}(() => ${original},${isModernFlag}?\"${preloadMarker}\":void 0)`\n str().overwrite(dynamicIndex, dynamicEnd, replacement)\n }\n\n // Differentiate CSS imports that use the default export from those that\n // do not by injecting a ?used query - this allows us to avoid including\n // the CSS string when unnecessary (esbuild has trouble treeshaking\n // them)\n if (\n specifier &&\n isCSSRequest(specifier) &&\n source.slice(expStart, start).includes('from') &&\n // edge case for package names ending with .css (e.g normalize.css)\n !(bareImportRE.test(specifier) && !specifier.includes('/'))\n ) {\n const url = specifier.replace(/\\?|$/, (m) => `?used${m ? '&' : ''}`)\n str().overwrite(start, end, dynamicIndex > -1 ? `'${url}'` : url)\n }\n }\n\n if (\n needPreloadHelper &&\n insertPreload &&\n !source.includes(`const ${preloadMethod} =`)\n ) {\n str().prepend(`import { ${preloadMethod} } from \"${preloadHelperId}\";`)\n }\n\n if (s) {\n return {\n code: s.toString(),\n map: config.build.sourcemap ? s.generateMap({ hires: true }) : null\n }\n }\n },\n\n renderChunk(code, _, { format }) {\n // make sure we only perform the preload logic in modern builds.\n if (code.indexOf(isModernFlag) > -1) {\n const re = new RegExp(isModernFlag, 'g')\n const isModern = String(format === 'es')\n if (config.build.sourcemap) {\n const s = new MagicString(code)\n let match: RegExpExecArray | null\n while ((match = re.exec(code))) {\n s.overwrite(\n match.index,\n match.index + isModernFlag.length,\n isModern\n )\n }\n return {\n code: s.toString(),\n map: s.generateMap({ hires: true })\n }\n } else {\n return code.replace(re, isModern)\n }\n }\n return null\n },\n\n generateBundle({ format }, bundle) {\n if (format !== 'es' || ssr) {\n return\n }\n\n for (const file in bundle) {\n const chunk = bundle[file]\n // can't use chunk.dynamicImports.length here since some modules e.g.\n // dynamic import to constant json may get inlined.\n if (chunk.type === 'chunk' && chunk.code.indexOf(preloadMarker) > -1) {\n const code = chunk.code\n let imports: ImportSpecifier[]\n try {\n imports = parseImports(code)[0].filter((i) => i.d > -1)\n } catch (e: any) {\n this.error(e, e.idx)\n }\n\n if (imports.length) {\n const s = new MagicString(code)\n for (let index = 0; index < imports.length; index++) {\n const { s: start, e: end, d: dynamicIndex } = imports[index]\n // check the chunk being imported\n const url = code.slice(start, end)\n const deps: Set = new Set()\n let hasRemovedPureCssChunk = false\n\n if (url[0] === `\"` && url[url.length - 1] === `\"`) {\n const ownerFilename = chunk.fileName\n // literal import - trace direct imports and add to deps\n const analyzed: Set = new Set()\n const addDeps = (filename: string) => {\n if (filename === ownerFilename) return\n if (analyzed.has(filename)) return\n analyzed.add(filename)\n const chunk = bundle[filename] as OutputChunk | undefined\n if (chunk) {\n deps.add(chunk.fileName)\n const cssFiles = chunkToEmittedCssFileMap.get(chunk)\n if (cssFiles) {\n cssFiles.forEach((file) => {\n deps.add(file)\n })\n }\n chunk.imports.forEach(addDeps)\n } else {\n const removedPureCssFiles =\n removedPureCssFilesCache.get(config)!\n const chunk = removedPureCssFiles.get(filename)\n if (chunk) {\n const cssFiles = chunkToEmittedCssFileMap.get(chunk)\n if (cssFiles && cssFiles.size > 0) {\n cssFiles.forEach((file) => {\n deps.add(file)\n })\n hasRemovedPureCssChunk = true\n }\n\n s.overwrite(dynamicIndex, end + 1, 'Promise.resolve({})')\n }\n }\n }\n const normalizedFile = path.posix.join(\n path.posix.dirname(chunk.fileName),\n url.slice(1, -1)\n )\n addDeps(normalizedFile)\n }\n\n let markPos = code.indexOf(preloadMarker, end)\n // fix issue #3051\n if (markPos === -1 && imports.length === 1) {\n markPos = code.indexOf(preloadMarker)\n }\n\n if (markPos > 0) {\n s.overwrite(\n markPos - 1,\n markPos + preloadMarker.length + 1,\n // the dep list includes the main chunk, so only need to\n // preload when there are actual other deps.\n deps.size > 1 ||\n // main chunk is removed\n (hasRemovedPureCssChunk && deps.size > 0)\n ? `[${[...deps].map((d) => JSON.stringify(d)).join(',')}]`\n : `[]`\n )\n }\n }\n chunk.code = s.toString()\n // TODO source map\n }\n\n // there may still be markers due to inlined dynamic imports, remove\n // all the markers regardless\n chunk.code = chunk.code.replace(preloadMarkerRE, 'void 0')\n }\n }\n }\n }\n}\n","import { ResolvedConfig } from '..'\nimport { Plugin } from '../plugin'\nimport { isModernFlag } from './importAnalysisBuild'\n\nexport const modulePreloadPolyfillId = 'vite/modulepreload-polyfill'\n\nexport function modulePreloadPolyfillPlugin(config: ResolvedConfig): Plugin {\n const skip = config.build.ssr\n let polyfillString: string | undefined\n\n return {\n name: 'vite:modulepreload-polyfill',\n resolveId(id) {\n if (id === modulePreloadPolyfillId) {\n return id\n }\n },\n load(id) {\n if (id === modulePreloadPolyfillId) {\n if (skip) {\n return ''\n }\n if (!polyfillString) {\n polyfillString =\n `const p = ${polyfill.toString()};` + `${isModernFlag}&&p();`\n }\n return polyfillString\n }\n }\n }\n}\n\n/**\nThe following polyfill function is meant to run in the browser and adapted from\nhttps://github.com/guybedford/es-module-shims\nMIT License\nCopyright (C) 2018-2021 Guy Bedford\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n*/\n\ndeclare const document: any\ndeclare const MutationObserver: any\ndeclare const fetch: any\n\nfunction polyfill() {\n const relList = document.createElement('link').relList\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return\n }\n\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link)\n }\n\n new MutationObserver((mutations: any) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node)\n }\n }\n }).observe(document, { childList: true, subtree: true })\n\n function getFetchOpts(script: any) {\n const fetchOpts = {} as any\n if (script.integrity) fetchOpts.integrity = script.integrity\n if (script.referrerpolicy) fetchOpts.referrerPolicy = script.referrerpolicy\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include'\n else if (script.crossorigin === 'anonymous') fetchOpts.credentials = 'omit'\n else fetchOpts.credentials = 'same-origin'\n return fetchOpts\n }\n\n function processPreload(link: any) {\n if (link.ep)\n // ep marker = processed\n return\n link.ep = true\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link)\n fetch(link.href, fetchOpts)\n }\n}\n","import path from 'path'\nimport { Plugin } from '../plugin'\nimport { ViteDevServer } from '../server'\nimport { OutputAsset, OutputBundle, OutputChunk } from 'rollup'\nimport {\n cleanUrl,\n generateCodeFrame,\n isDataUrl,\n isExternalUrl,\n processSrcSet,\n slash\n} from '../utils'\nimport { ResolvedConfig } from '../config'\nimport MagicString from 'magic-string'\nimport {\n checkPublicFile,\n assetUrlRE,\n urlToBuiltUrl,\n getAssetFilename\n} from './asset'\nimport { isCSSRequest, chunkToEmittedCssFileMap } from './css'\nimport { modulePreloadPolyfillId } from './modulePreloadPolyfill'\nimport {\n AttributeNode,\n NodeTransform,\n NodeTypes,\n ElementNode\n} from '@vue/compiler-dom'\n\nconst htmlProxyRE = /\\?html-proxy&index=(\\d+)\\.js$/\nexport const isHTMLProxy = (id: string): boolean => htmlProxyRE.test(id)\n\n// HTML Proxy Caches are stored by config -> filePath -> index\nexport const htmlProxyMap = new WeakMap<\n ResolvedConfig,\n Map>\n>()\n\nexport function htmlInlineScriptProxyPlugin(config: ResolvedConfig): Plugin {\n return {\n name: 'vite:html-inline-script-proxy',\n\n resolveId(id) {\n if (htmlProxyRE.test(id)) {\n return id\n }\n },\n\n buildStart() {\n htmlProxyMap.set(config, new Map())\n },\n\n load(id) {\n const proxyMatch = id.match(htmlProxyRE)\n if (proxyMatch) {\n const index = Number(proxyMatch[1])\n const file = cleanUrl(id)\n const url = file.replace(config.root, '')\n const result = htmlProxyMap.get(config)!.get(url)![index]\n if (result) {\n return result\n } else {\n throw new Error(`No matching HTML proxy module found from ${id}`)\n }\n }\n }\n }\n}\n\n/** Add script to cache */\nexport function addToHTMLProxyCache(\n config: ResolvedConfig,\n filePath: string,\n index: number,\n code: string\n): void {\n if (!htmlProxyMap.get(config)) {\n htmlProxyMap.set(config, new Map())\n }\n if (!htmlProxyMap.get(config)!.get(filePath)) {\n htmlProxyMap.get(config)!.set(filePath, [])\n }\n htmlProxyMap.get(config)!.get(filePath)![index] = code\n}\n\n// this extends the config in @vue/compiler-sfc with \nexport const assetAttrsConfig: Record = {\n link: ['href'],\n video: ['src', 'poster'],\n source: ['src', 'srcset'],\n img: ['src', 'srcset'],\n image: ['xlink:href', 'href'],\n use: ['xlink:href', 'href']\n}\n\nexport const isAsyncScriptMap = new WeakMap<\n ResolvedConfig,\n Map\n>()\n\nexport async function traverseHtml(\n html: string,\n filePath: string,\n visitor: NodeTransform\n): Promise {\n // lazy load compiler\n const { parse, transform } = await import('@vue/compiler-dom')\n // @vue/compiler-core doesn't like lowercase doctypes\n html = html.replace(/()\n const isExcludedUrl = (url: string) =>\n url.startsWith('#') ||\n isExternalUrl(url) ||\n isDataUrl(url) ||\n checkPublicFile(url, config)\n\n return {\n name: 'vite:build-html',\n\n buildStart() {\n isAsyncScriptMap.set(config, new Map())\n },\n\n async transform(html, id) {\n if (id.endsWith('.html')) {\n const publicPath = `/${slash(path.relative(config.root, id))}`\n // pre-transform\n html = await applyHtmlTransforms(html, preHooks, {\n path: publicPath,\n filename: id\n })\n\n let js = ''\n const s = new MagicString(html)\n const assetUrls: AttributeNode[] = []\n let inlineModuleIndex = -1\n\n let everyScriptIsAsync = true\n let someScriptsAreAsync = false\n let someScriptsAreDefer = false\n\n await traverseHtml(html, id, (node) => {\n if (node.type !== NodeTypes.ELEMENT) {\n return\n }\n\n let shouldRemove = false\n\n // script tags\n if (node.tag === 'script') {\n const { src, isModule, isAsync } = getScriptInfo(node)\n\n const url = src && src.value && src.value.content\n if (url && checkPublicFile(url, config)) {\n // referencing public dir url, prefix with base\n s.overwrite(\n src!.value!.loc.start.offset,\n src!.value!.loc.end.offset,\n `\"${config.base + url.slice(1)}\"`\n )\n }\n\n if (isModule) {\n inlineModuleIndex++\n if (url && !isExcludedUrl(url)) {\n // \n const filePath = id.replace(config.root, '')\n addToHTMLProxyCache(\n config,\n filePath,\n inlineModuleIndex,\n contents\n )\n js += `\\nimport \"${id}?html-proxy&index=${inlineModuleIndex}.js\"`\n shouldRemove = true\n }\n\n everyScriptIsAsync &&= isAsync\n someScriptsAreAsync ||= isAsync\n someScriptsAreDefer ||= !isAsync\n }\n }\n\n // For asset references in index.html, also generate an import\n // statement for each - this will be handled by the asset plugin\n const assetAttrs = assetAttrsConfig[node.tag]\n if (assetAttrs) {\n for (const p of node.props) {\n if (\n p.type === NodeTypes.ATTRIBUTE &&\n p.value &&\n assetAttrs.includes(p.name)\n ) {\n const url = p.value.content\n if (!isExcludedUrl(url)) {\n if (node.tag === 'link' && isCSSRequest(url)) {\n // CSS references, convert to import\n js += `\\nimport ${JSON.stringify(url)}`\n shouldRemove = true\n } else {\n assetUrls.push(p)\n }\n } else if (checkPublicFile(url, config)) {\n s.overwrite(\n p.value.loc.start.offset,\n p.value.loc.end.offset,\n `\"${config.base + url.slice(1)}\"`\n )\n }\n }\n }\n }\n\n if (shouldRemove) {\n // remove the script tag from the html. we are going to inject new\n // ones in the end.\n s.remove(node.loc.start.offset, node.loc.end.offset)\n }\n })\n\n isAsyncScriptMap.get(config)!.set(id, everyScriptIsAsync)\n\n if (someScriptsAreAsync && someScriptsAreDefer) {\n config.logger.warn(\n `\\nMixed async and defer script modules in ${id}, output script will fallback to defer. Every script, including inline ones, need to be marked as async for your output script to be async.`\n )\n }\n\n // for each encountered asset url, rewrite original html so that it\n // references the post-build location.\n for (const attr of assetUrls) {\n const value = attr.value!\n try {\n const url =\n attr.name === 'srcset'\n ? await processSrcSet(value.content, ({ url }) =>\n urlToBuiltUrl(url, id, config, this)\n )\n : await urlToBuiltUrl(value.content, id, config, this)\n\n s.overwrite(\n value.loc.start.offset,\n value.loc.end.offset,\n `\"${url}\"`\n )\n } catch (e) {\n // #1885 preload may be pointing to urls that do not exist\n // locally on disk\n if (e.code !== 'ENOENT') {\n throw e\n }\n }\n }\n\n processedHtml.set(id, s.toString())\n\n // inject module preload polyfill only when configured and needed\n if (\n config.build.polyfillModulePreload &&\n (someScriptsAreAsync || someScriptsAreDefer)\n ) {\n js = `import \"${modulePreloadPolyfillId}\";\\n${js}`\n }\n\n return js\n }\n },\n\n async generateBundle(options, bundle) {\n const analyzedChunk: Map = new Map()\n const getImportedChunks = (\n chunk: OutputChunk,\n seen: Set = new Set()\n ): OutputChunk[] => {\n const chunks: OutputChunk[] = []\n chunk.imports.forEach((file) => {\n const importee = bundle[file]\n if (importee?.type === 'chunk' && !seen.has(file)) {\n seen.add(file)\n\n // post-order traversal\n chunks.push(...getImportedChunks(importee, seen))\n chunks.push(importee)\n }\n })\n return chunks\n }\n\n const toScriptTag = (\n chunk: OutputChunk,\n isAsync: boolean\n ): HtmlTagDescriptor => ({\n tag: 'script',\n attrs: {\n ...(isAsync ? { async: true } : {}),\n type: 'module',\n crossorigin: true,\n src: toPublicPath(chunk.fileName, config)\n }\n })\n\n const toPreloadTag = (chunk: OutputChunk): HtmlTagDescriptor => ({\n tag: 'link',\n attrs: {\n rel: 'modulepreload',\n href: toPublicPath(chunk.fileName, config)\n }\n })\n\n const getCssTagsForChunk = (\n chunk: OutputChunk,\n seen: Set = new Set()\n ): HtmlTagDescriptor[] => {\n const tags: HtmlTagDescriptor[] = []\n if (!analyzedChunk.has(chunk)) {\n analyzedChunk.set(chunk, 1)\n chunk.imports.forEach((file) => {\n const importee = bundle[file]\n if (importee?.type === 'chunk') {\n tags.push(...getCssTagsForChunk(importee, seen))\n }\n })\n }\n\n const cssFiles = chunkToEmittedCssFileMap.get(chunk)\n if (cssFiles) {\n cssFiles.forEach((file) => {\n if (!seen.has(file)) {\n seen.add(file)\n tags.push({\n tag: 'link',\n attrs: {\n rel: 'stylesheet',\n href: toPublicPath(file, config)\n }\n })\n }\n })\n }\n return tags\n }\n\n for (const [id, html] of processedHtml) {\n const isAsync = isAsyncScriptMap.get(config)!.get(id)!\n\n // resolve asset url references\n let result = html.replace(assetUrlRE, (_, fileHash, postfix = '') => {\n return config.base + getAssetFilename(fileHash, config) + postfix\n })\n\n // find corresponding entry chunk\n const chunk = Object.values(bundle).find(\n (chunk) =>\n chunk.type === 'chunk' &&\n chunk.isEntry &&\n chunk.facadeModuleId === id\n ) as OutputChunk | undefined\n\n let canInlineEntry = false\n\n // inject chunk asset links\n if (chunk) {\n // an entry chunk can be inlined if\n // - it's an ES module (e.g. not generated by the legacy plugin)\n // - it contains no meaningful code other than import statements\n if (options.format === 'es' && isEntirelyImport(chunk.code)) {\n canInlineEntry = true\n }\n\n // when not inlined, inject `\n )\n }\n }\n\n // elements with [href/src] attrs\n const assetAttrs = assetAttrsConfig[node.tag]\n if (assetAttrs) {\n for (const p of node.props) {\n if (\n p.type === NodeTypes.ATTRIBUTE &&\n p.value &&\n assetAttrs.includes(p.name)\n ) {\n processNodeUrl(p, s, config, htmlPath, originalUrl)\n }\n }\n }\n })\n\n html = s.toString()\n\n return {\n html,\n tags: [\n {\n tag: 'script',\n attrs: {\n type: 'module',\n src: path.posix.join(base, CLIENT_PUBLIC_PATH)\n },\n injectTo: 'head-prepend'\n }\n ]\n }\n}\n\nexport function indexHtmlMiddleware(\n server: ViteDevServer\n): Connect.NextHandleFunction {\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n return async function viteIndexHtmlMiddleware(req, res, next) {\n if (res.writableEnded) {\n return next()\n }\n\n const url = req.url && cleanUrl(req.url)\n // spa-fallback always redirects to /index.html\n if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') {\n const filename = getHtmlFilename(url, server)\n if (fs.existsSync(filename)) {\n try {\n let html = fs.readFileSync(filename, 'utf-8')\n html = await server.transformIndexHtml(url, html, req.originalUrl)\n return send(req, res, html, 'html')\n } catch (e) {\n return next(e)\n }\n }\n }\n next()\n }\n}\n","import { performance } from 'perf_hooks'\nimport { Connect } from 'types/connect'\nimport { createDebugger, prettifyUrl, timeFrom } from '../../utils'\n\nconst logTime = createDebugger('vite:time')\n\nexport function timeMiddleware(root: string): Connect.NextHandleFunction {\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n return function viteTimeMiddleware(req, res, next) {\n const start = performance.now()\n const end = res.end\n res.end = (...args: any[]) => {\n logTime(`${timeFrom(start)} ${prettifyUrl(req.url!, root)}`)\n // @ts-ignore\n return end.call(res, ...args)\n }\n next()\n }\n}\n","import { extname } from 'path'\nimport { isDirectCSSRequest } from '../plugins/css'\nimport {\n cleanUrl,\n normalizePath,\n removeImportQuery,\n removeTimestampQuery\n} from '../utils'\nimport { FS_PREFIX } from '../constants'\nimport { TransformResult } from './transformRequest'\nimport { PluginContainer } from './pluginContainer'\nimport { parse as parseUrl } from 'url'\n\nexport class ModuleNode {\n /**\n * Public served url path, starts with /\n */\n url: string\n /**\n * Resolved file system path + query\n */\n id: string | null = null\n file: string | null = null\n type: 'js' | 'css'\n importers = new Set()\n importedModules = new Set()\n acceptedHmrDeps = new Set()\n isSelfAccepting = false\n transformResult: TransformResult | null = null\n ssrTransformResult: TransformResult | null = null\n ssrModule: Record | null = null\n lastHMRTimestamp = 0\n\n constructor(url: string) {\n this.url = url\n this.type = isDirectCSSRequest(url) ? 'css' : 'js'\n }\n}\n\nfunction invalidateSSRModule(mod: ModuleNode, seen: Set) {\n if (seen.has(mod)) {\n return\n }\n seen.add(mod)\n mod.ssrModule = null\n mod.importers.forEach((importer) => invalidateSSRModule(importer, seen))\n}\nexport class ModuleGraph {\n urlToModuleMap = new Map()\n idToModuleMap = new Map()\n // a single file may corresponds to multiple modules with different queries\n fileToModulesMap = new Map>()\n safeModulesPath = new Set()\n container: PluginContainer\n\n constructor(container: PluginContainer) {\n this.container = container\n }\n\n async getModuleByUrl(rawUrl: string): Promise {\n const [url] = await this.resolveUrl(rawUrl)\n return this.urlToModuleMap.get(url)\n }\n\n getModuleById(id: string): ModuleNode | undefined {\n return this.idToModuleMap.get(removeTimestampQuery(id))\n }\n\n getModulesByFile(file: string): Set | undefined {\n return this.fileToModulesMap.get(file)\n }\n\n onFileChange(file: string): void {\n const mods = this.getModulesByFile(file)\n if (mods) {\n const seen = new Set()\n mods.forEach((mod) => {\n this.invalidateModule(mod, seen)\n })\n }\n }\n\n invalidateModule(mod: ModuleNode, seen: Set = new Set()): void {\n mod.transformResult = null\n mod.ssrTransformResult = null\n invalidateSSRModule(mod, seen)\n }\n\n invalidateAll(): void {\n const seen = new Set()\n this.idToModuleMap.forEach((mod) => {\n this.invalidateModule(mod, seen)\n })\n }\n\n /**\n * Update the module graph based on a module's updated imports information\n * If there are dependencies that no longer have any importers, they are\n * returned as a Set.\n */\n async updateModuleInfo(\n mod: ModuleNode,\n importedModules: Set,\n acceptedModules: Set,\n isSelfAccepting: boolean\n ): Promise | undefined> {\n mod.isSelfAccepting = isSelfAccepting\n const prevImports = mod.importedModules\n const nextImports = (mod.importedModules = new Set())\n let noLongerImported: Set | undefined\n // update import graph\n for (const imported of importedModules) {\n const dep =\n typeof imported === 'string'\n ? await this.ensureEntryFromUrl(imported)\n : imported\n dep.importers.add(mod)\n nextImports.add(dep)\n }\n // remove the importer from deps that were imported but no longer are.\n prevImports.forEach((dep) => {\n if (!nextImports.has(dep)) {\n dep.importers.delete(mod)\n if (!dep.importers.size) {\n // dependency no longer imported\n ;(noLongerImported || (noLongerImported = new Set())).add(dep)\n }\n }\n })\n // update accepted hmr deps\n const deps = (mod.acceptedHmrDeps = new Set())\n for (const accepted of acceptedModules) {\n const dep =\n typeof accepted === 'string'\n ? await this.ensureEntryFromUrl(accepted)\n : accepted\n deps.add(dep)\n }\n return noLongerImported\n }\n\n async ensureEntryFromUrl(rawUrl: string): Promise {\n const [url, resolvedId] = await this.resolveUrl(rawUrl)\n let mod = this.urlToModuleMap.get(url)\n if (!mod) {\n mod = new ModuleNode(url)\n this.urlToModuleMap.set(url, mod)\n mod.id = resolvedId\n this.idToModuleMap.set(resolvedId, mod)\n const file = (mod.file = cleanUrl(resolvedId))\n let fileMappedModules = this.fileToModulesMap.get(file)\n if (!fileMappedModules) {\n fileMappedModules = new Set()\n this.fileToModulesMap.set(file, fileMappedModules)\n }\n fileMappedModules.add(mod)\n }\n return mod\n }\n\n // some deps, like a css file referenced via @import, don't have its own\n // url because they are inlined into the main css import. But they still\n // need to be represented in the module graph so that they can trigger\n // hmr in the importing css file.\n createFileOnlyEntry(file: string): ModuleNode {\n file = normalizePath(file)\n let fileMappedModules = this.fileToModulesMap.get(file)\n if (!fileMappedModules) {\n fileMappedModules = new Set()\n this.fileToModulesMap.set(file, fileMappedModules)\n }\n\n const url = `${FS_PREFIX}${file}`\n for (const m of fileMappedModules) {\n if (m.url === url || m.id === file) {\n return m\n }\n }\n\n const mod = new ModuleNode(url)\n mod.file = file\n fileMappedModules.add(mod)\n return mod\n }\n\n // for incoming urls, it is important to:\n // 1. remove the HMR timestamp query (?t=xxxx)\n // 2. resolve its extension so that urls with or without extension all map to\n // the same module\n async resolveUrl(url: string): Promise<[string, string]> {\n url = removeImportQuery(removeTimestampQuery(url))\n const resolvedId = (await this.container.resolveId(url))?.id || url\n const ext = extname(cleanUrl(resolvedId))\n const { pathname, search, hash } = parseUrl(url)\n if (ext && !pathname!.endsWith(ext)) {\n url = pathname + ext + (search || '') + (hash || '')\n }\n return [url, resolvedId]\n }\n}\n","import fs from 'fs'\nimport path from 'path'\nimport chalk from 'chalk'\nimport { createServer, ViteDevServer } from '..'\nimport { createDebugger, normalizePath } from '../utils'\nimport { ModuleNode } from './moduleGraph'\nimport { Update } from 'types/hmrPayload'\nimport { CLIENT_DIR } from '../constants'\nimport { RollupError } from 'rollup'\nimport match from 'minimatch'\nimport { Server } from 'http'\nimport { isCSSRequest } from '../plugins/css'\nimport { performance } from 'perf_hooks'\n\nexport const debugHmr = createDebugger('vite:hmr')\n\nconst normalizedClientDir = normalizePath(CLIENT_DIR)\n\nexport interface HmrOptions {\n protocol?: string\n host?: string\n port?: number\n clientPort?: number\n path?: string\n timeout?: number\n overlay?: boolean\n server?: Server\n}\n\nexport interface HmrContext {\n file: string\n timestamp: number\n modules: Array\n read: () => string | Promise\n server: ViteDevServer\n}\n\nfunction getShortName(file: string, root: string) {\n return file.startsWith(root + '/') ? path.posix.relative(root, file) : file\n}\n\nexport async function handleHMRUpdate(\n file: string,\n server: ViteDevServer\n): Promise {\n const { ws, config, moduleGraph } = server\n const shortFile = getShortName(file, config.root)\n\n const isConfig = file === config.configFile\n const isConfigDependency = config.configFileDependencies.some(\n (name) => file === path.resolve(name)\n )\n const isEnv = config.inlineConfig.envFile !== false && file.endsWith('.env')\n if (isConfig || isConfigDependency || isEnv) {\n // auto restart server\n debugHmr(`[config change] ${chalk.dim(shortFile)}`)\n config.logger.info(\n chalk.green(\n `${path.relative(process.cwd(), file)} changed, restarting server...`\n ),\n { clear: true, timestamp: true }\n )\n await restartServer(server)\n return\n }\n\n debugHmr(`[file change] ${chalk.dim(shortFile)}`)\n\n // (dev only) the client itself cannot be hot updated.\n if (file.startsWith(normalizedClientDir)) {\n ws.send({\n type: 'full-reload',\n path: '*'\n })\n return\n }\n\n const mods = moduleGraph.getModulesByFile(file)\n\n // check if any plugin wants to perform custom HMR handling\n const timestamp = Date.now()\n const hmrContext: HmrContext = {\n file,\n timestamp,\n modules: mods ? [...mods] : [],\n read: () => readModifiedFile(file),\n server\n }\n\n for (const plugin of config.plugins) {\n if (plugin.handleHotUpdate) {\n const filteredModules = await plugin.handleHotUpdate(hmrContext)\n if (filteredModules) {\n hmrContext.modules = filteredModules\n break\n }\n }\n }\n\n if (!hmrContext.modules.length) {\n // html file cannot be hot updated\n if (file.endsWith('.html')) {\n config.logger.info(chalk.green(`page reload `) + chalk.dim(shortFile), {\n clear: true,\n timestamp: true\n })\n ws.send({\n type: 'full-reload',\n path: config.server.middlewareMode\n ? '*'\n : '/' + normalizePath(path.relative(config.root, file))\n })\n } else {\n // loaded but not in the module graph, probably not js\n debugHmr(`[no modules matched] ${chalk.dim(shortFile)}`)\n }\n return\n }\n\n updateModules(shortFile, hmrContext.modules, timestamp, server)\n}\n\nfunction updateModules(\n file: string,\n modules: ModuleNode[],\n timestamp: number,\n { config, ws }: ViteDevServer\n) {\n const updates: Update[] = []\n const invalidatedModules = new Set()\n let needFullReload = false\n\n for (const mod of modules) {\n invalidate(mod, timestamp, invalidatedModules)\n if (needFullReload) {\n continue\n }\n\n const boundaries = new Set<{\n boundary: ModuleNode\n acceptedVia: ModuleNode\n }>()\n const hasDeadEnd = propagateUpdate(mod, boundaries)\n if (hasDeadEnd) {\n needFullReload = true\n continue\n }\n\n updates.push(\n ...[...boundaries].map(({ boundary, acceptedVia }) => ({\n type: `${boundary.type}-update` as Update['type'],\n timestamp,\n path: boundary.url,\n acceptedPath: acceptedVia.url\n }))\n )\n }\n\n if (needFullReload) {\n config.logger.info(chalk.green(`page reload `) + chalk.dim(file), {\n clear: true,\n timestamp: true\n })\n ws.send({\n type: 'full-reload'\n })\n } else {\n config.logger.info(\n updates\n .map(({ path }) => chalk.green(`hmr update `) + chalk.dim(path))\n .join('\\n'),\n { clear: true, timestamp: true }\n )\n ws.send({\n type: 'update',\n updates\n })\n }\n}\n\nexport async function handleFileAddUnlink(\n file: string,\n server: ViteDevServer,\n isUnlink = false\n): Promise {\n const modules = [...(server.moduleGraph.getModulesByFile(file) ?? [])]\n if (isUnlink && file in server._globImporters) {\n delete server._globImporters[file]\n } else {\n for (const i in server._globImporters) {\n const { module, importGlobs } = server._globImporters[i]\n for (const { base, pattern } of importGlobs) {\n if (match(file, pattern) || match(path.relative(base, file), pattern)) {\n modules.push(module)\n // We use `onFileChange` to invalidate `module.file` so that subsequent `ssrLoadModule()`\n // calls get fresh glob import results with(out) the newly added(/removed) `file`.\n server.moduleGraph.onFileChange(module.file!)\n break\n }\n }\n }\n }\n if (modules.length > 0) {\n updateModules(\n getShortName(file, server.config.root),\n modules,\n Date.now(),\n server\n )\n }\n}\n\nfunction propagateUpdate(\n node: ModuleNode,\n boundaries: Set<{\n boundary: ModuleNode\n acceptedVia: ModuleNode\n }>,\n currentChain: ModuleNode[] = [node]\n): boolean /* hasDeadEnd */ {\n if (node.isSelfAccepting) {\n boundaries.add({\n boundary: node,\n acceptedVia: node\n })\n\n // additionally check for CSS importers, since a PostCSS plugin like\n // Tailwind JIT may register any file as a dependency to a CSS file.\n for (const importer of node.importers) {\n if (isCSSRequest(importer.url) && !currentChain.includes(importer)) {\n propagateUpdate(importer, boundaries, currentChain.concat(importer))\n }\n }\n\n return false\n }\n\n if (!node.importers.size) {\n return true\n }\n\n // #3716, #3913\n // For a non-CSS file, if all of its importers are CSS files (registered via\n // PostCSS plugins) it should be considered a dead end and force full reload.\n if (\n !isCSSRequest(node.url) &&\n [...node.importers].every((i) => isCSSRequest(i.url))\n ) {\n return true\n }\n\n for (const importer of node.importers) {\n const subChain = currentChain.concat(importer)\n if (importer.acceptedHmrDeps.has(node)) {\n boundaries.add({\n boundary: importer,\n acceptedVia: node\n })\n continue\n }\n\n if (currentChain.includes(importer)) {\n // circular deps is considered dead end\n return true\n }\n\n if (propagateUpdate(importer, boundaries, subChain)) {\n return true\n }\n }\n return false\n}\n\nfunction invalidate(mod: ModuleNode, timestamp: number, seen: Set) {\n if (seen.has(mod)) {\n return\n }\n seen.add(mod)\n mod.lastHMRTimestamp = timestamp\n mod.transformResult = null\n mod.ssrModule = null\n mod.ssrTransformResult = null\n mod.importers.forEach((importer) => {\n if (!importer.acceptedHmrDeps.has(mod)) {\n invalidate(importer, timestamp, seen)\n }\n })\n}\n\nexport function handlePrunedModules(\n mods: Set,\n { ws }: ViteDevServer\n): void {\n // update the disposed modules' hmr timestamp\n // since if it's re-imported, it should re-apply side effects\n // and without the timestamp the browser will not re-import it!\n const t = Date.now()\n mods.forEach((mod) => {\n mod.lastHMRTimestamp = t\n debugHmr(`[dispose] ${chalk.dim(mod.file)}`)\n })\n ws.send({\n type: 'prune',\n paths: [...mods].map((m) => m.url)\n })\n}\n\nconst enum LexerState {\n inCall,\n inSingleQuoteString,\n inDoubleQuoteString,\n inTemplateString,\n inArray\n}\n\n/**\n * Lex import.meta.hot.accept() for accepted deps.\n * Since hot.accept() can only accept string literals or array of string\n * literals, we don't really need a heavy @babel/parse call on the entire source.\n *\n * @returns selfAccepts\n */\nexport function lexAcceptedHmrDeps(\n code: string,\n start: number,\n urls: Set<{ url: string; start: number; end: number }>\n): boolean {\n let state: LexerState = LexerState.inCall\n // the state can only be 2 levels deep so no need for a stack\n let prevState: LexerState = LexerState.inCall\n let currentDep: string = ''\n\n function addDep(index: number) {\n urls.add({\n url: currentDep,\n start: index - currentDep.length - 1,\n end: index + 1\n })\n currentDep = ''\n }\n\n for (let i = start; i < code.length; i++) {\n const char = code.charAt(i)\n switch (state) {\n case LexerState.inCall:\n case LexerState.inArray:\n if (char === `'`) {\n prevState = state\n state = LexerState.inSingleQuoteString\n } else if (char === `\"`) {\n prevState = state\n state = LexerState.inDoubleQuoteString\n } else if (char === '`') {\n prevState = state\n state = LexerState.inTemplateString\n } else if (/\\s/.test(char)) {\n continue\n } else {\n if (state === LexerState.inCall) {\n if (char === `[`) {\n state = LexerState.inArray\n } else {\n // reaching here means the first arg is neither a string literal\n // nor an Array literal (direct callback) or there is no arg\n // in both case this indicates a self-accepting module\n return true // done\n }\n } else if (state === LexerState.inArray) {\n if (char === `]`) {\n return false // done\n } else if (char === ',') {\n continue\n } else {\n error(i)\n }\n }\n }\n break\n case LexerState.inSingleQuoteString:\n if (char === `'`) {\n addDep(i)\n if (prevState === LexerState.inCall) {\n // accept('foo', ...)\n return false\n } else {\n state = prevState\n }\n } else {\n currentDep += char\n }\n break\n case LexerState.inDoubleQuoteString:\n if (char === `\"`) {\n addDep(i)\n if (prevState === LexerState.inCall) {\n // accept('foo', ...)\n return false\n } else {\n state = prevState\n }\n } else {\n currentDep += char\n }\n break\n case LexerState.inTemplateString:\n if (char === '`') {\n addDep(i)\n if (prevState === LexerState.inCall) {\n // accept('foo', ...)\n return false\n } else {\n state = prevState\n }\n } else if (char === '$' && code.charAt(i + 1) === '{') {\n error(i)\n } else {\n currentDep += char\n }\n break\n default:\n throw new Error('unknown import.meta.hot lexer state')\n }\n }\n return false\n}\n\nfunction error(pos: number) {\n const err = new Error(\n `import.meta.accept() can only accept string literals or an ` +\n `Array of string literals.`\n ) as RollupError\n err.pos = pos\n throw err\n}\n\n// vitejs/vite#610 when hot-reloading Vue files, we read immediately on file\n// change event and sometimes this can be too early and get an empty buffer.\n// Poll until the file's modified time has changed before reading again.\nasync function readModifiedFile(file: string): Promise {\n const content = fs.readFileSync(file, 'utf-8')\n if (!content) {\n const mtime = fs.statSync(file).mtimeMs\n await new Promise((r) => {\n let n = 0\n const poll = async () => {\n n++\n const newMtime = fs.statSync(file).mtimeMs\n if (newMtime !== mtime || n > 10) {\n r(0)\n } else {\n setTimeout(poll, 10)\n }\n }\n setTimeout(poll, 10)\n })\n return fs.readFileSync(file, 'utf-8')\n } else {\n return content\n }\n}\n\nasync function restartServer(server: ViteDevServer) {\n // @ts-ignore\n global.__vite_start_time = performance.now()\n const { port } = server.config.server\n\n await server.close()\n\n let newServer = null\n try {\n newServer = await createServer(server.config.inlineConfig)\n } catch (err: any) {\n server.config.logger.error(err.message, {\n timestamp: true\n })\n return\n }\n\n for (const key in newServer) {\n if (key !== 'app') {\n // @ts-ignore\n server[key] = newServer[key]\n }\n }\n if (!server.config.server.middlewareMode) {\n await server.listen(port, true)\n } else {\n server.config.logger.info('server restarted.', { timestamp: true })\n }\n}\n","'use strict';\nconst fs = require('fs');\n\nlet isDocker;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nmodule.exports = () => {\n\tif (isDocker === undefined) {\n\t\tisDocker = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDocker;\n};\n","'use strict';\nconst os = require('os');\nconst fs = require('fs');\nconst isDocker = require('is-docker');\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isDocker()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft') ?\n\t\t\t!isDocker() : false;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nif (process.env.__IS_WSL_TEST__) {\n\tmodule.exports = isWsl;\n} else {\n\tmodule.exports = isWsl();\n}\n","'use strict';\nmodule.exports = (object, propertyName, fn) => {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = fn();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n};\n","const path = require('path');\nconst childProcess = require('child_process');\nconst {promises: fs, constants: fsConstants} = require('fs');\nconst isWsl = require('is-wsl');\nconst isDocker = require('is-docker');\nconst defineLazyProperty = require('define-lazy-prop');\n\n// Path to included `xdg-open`.\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst open = async (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => open(target, {\n\t\t\t...options,\n\t\t\tapp: singleApp\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app || {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => open(target, {\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments\n\t\t\t}\n\t\t}));\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isDocker())) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl ?\n\t\t\t`${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` :\n\t\t\t`${process.env.SYSTEMROOT}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'–ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand'\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`, '-ArgumentList');\n\t\t\tappArguments.unshift(target);\n\t\t} else {\n\t\t\tencodedArguments.push(`\"${target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(arg => `\"\\`\"${arg}\\`\"\"`);\n\t\t\tencodedArguments.push(appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\ttarget = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron ||\n\t\t\t\tplatform === 'android' || isBundled || !exeLocalXdgOpen;\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tcliArguments.push(target);\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nconst apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable']\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe']\n\t}\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox'\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe'\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: 'microsoft-edge'\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'\n}));\n\nopen.apps = apps;\n\nmodule.exports = open;\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nmodule.exports = input => {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\treturn input;\n};\n","'use strict';\nconst path = require('path');\nconst pathKey = require('path-key');\n\nconst npmRunPath = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tpath: process.env[pathKey()],\n\t\texecPath: process.execPath,\n\t\t...options\n\t};\n\n\tlet previous;\n\tlet cwdPath = path.resolve(options.cwd);\n\tconst result = [];\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n\n\t// Ensure the running `node` binary is used\n\tconst execPathDir = path.resolve(options.cwd, options.execPath, '..');\n\tresult.push(execPathDir);\n\n\treturn result.concat(options.path).join(path.delimiter);\n};\n\nmodule.exports = npmRunPath;\n// TODO: Remove this for the next major release\nmodule.exports.default = npmRunPath;\n\nmodule.exports.env = options => {\n\toptions = {\n\t\tenv: process.env,\n\t\t...options\n\t};\n\n\tconst env = {...options.env};\n\tconst path = pathKey({env});\n\n\toptions.path = env[path];\n\tenv[path] = module.exports(options);\n\n\treturn env;\n};\n","'use strict';\n\nconst mimicFn = (to, from) => {\n\tfor (const prop of Reflect.ownKeys(from)) {\n\t\tObject.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));\n\t}\n\n\treturn to;\n};\n\nmodule.exports = mimicFn;\n// TODO: Remove this for the next major release\nmodule.exports.default = mimicFn;\n","'use strict';\nconst mimicFn = require('mimic-fn');\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFn(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nmodule.exports = onetime;\n// TODO: Remove this for the next major release\nmodule.exports.default = onetime;\n\nmodule.exports.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.SIGNALS=void 0;\n\nconst SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"},\n\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"},\n\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"},\n\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"},\n\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"},\n\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"},\n\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"},\n\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"},\n\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"},\n\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"},\n\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"},\n\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"},\n\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"},\n\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"},\n\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"},\n\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"},\n\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"},\n\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"},\n\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"},\n\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"},\n\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"}];exports.SIGNALS=SIGNALS;\n//# sourceMappingURL=core.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.SIGRTMAX=exports.getRealtimeSignals=void 0;\nconst getRealtimeSignals=function(){\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal);\n};exports.getRealtimeSignals=getRealtimeSignals;\n\nconst getRealtimeSignal=function(value,index){\nreturn{\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"};\n\n};\n\nconst SIGRTMIN=34;\nconst SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX;\n//# sourceMappingURL=realtime.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.getSignals=void 0;var _os=require(\"os\");\n\nvar _core=require(\"./core.js\");\nvar _realtime=require(\"./realtime.js\");\n\n\n\nconst getSignals=function(){\nconst realtimeSignals=(0,_realtime.getRealtimeSignals)();\nconst signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals;\n};exports.getSignals=getSignals;\n\n\n\n\n\n\n\nconst normalizeSignal=function({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard})\n{\nconst{\nsignals:{[name]:constantSignal}}=\n_os.constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard};\n};\n//# sourceMappingURL=signals.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=require(\"os\");\n\nvar _signals=require(\"./signals.js\");\nvar _realtime=require(\"./realtime.js\");\n\n\n\nconst getSignalsByName=function(){\nconst signals=(0,_signals.getSignals)();\nreturn signals.reduce(getSignalByName,{});\n};\n\nconst getSignalByName=function(\nsignalByNameMemo,\n{name,number,description,supported,action,forced,standard})\n{\nreturn{\n...signalByNameMemo,\n[name]:{name,number,description,supported,action,forced,standard}};\n\n};\n\nconst signalsByName=getSignalsByName();exports.signalsByName=signalsByName;\n\n\n\n\nconst getSignalsByNumber=function(){\nconst signals=(0,_signals.getSignals)();\nconst length=_realtime.SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals));\n\nreturn Object.assign({},...signalsA);\n};\n\nconst getSignalByNumber=function(number,signals){\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{};\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard}};\n\n\n};\n\n\n\nconst findSignalByNumber=function(number,signals){\nconst signal=signals.find(({name})=>_os.constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal;\n}\n\nreturn signals.find(signalA=>signalA.number===number);\n};\n\nconst signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber;\n//# sourceMappingURL=main.js.map","'use strict';\nconst {signalsByName} = require('human-signals');\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nconst makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout}}\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n\nmodule.exports = makeError;\n","'use strict';\nconst aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nconst normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\nmodule.exports = normalizeStdio;\n\n// `ipc` is pushed unless it is already present\nmodule.exports.node = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n","// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems. Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL. It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n 'SIGABRT',\n 'SIGALRM',\n 'SIGHUP',\n 'SIGINT',\n 'SIGTERM'\n]\n\nif (process.platform !== 'win32') {\n module.exports.push(\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n module.exports.push(\n 'SIGIO',\n 'SIGPOLL',\n 'SIGPWR',\n 'SIGSTKFLT',\n 'SIGUNUSED'\n )\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nvar process = global.process\n// some kind of non-node environment, just no-op\nif (typeof process !== 'object' || !process) {\n module.exports = () => {}\n} else {\n var assert = require('assert')\n var signals = require('./signals.js')\n var isWin = /^win/i.test(process.platform)\n\n var EE = require('events')\n /* istanbul ignore if */\n if (typeof EE !== 'function') {\n EE = EE.EventEmitter\n }\n\n var emitter\n if (process.__signal_exit_emitter__) {\n emitter = process.__signal_exit_emitter__\n } else {\n emitter = process.__signal_exit_emitter__ = new EE()\n emitter.count = 0\n emitter.emitted = {}\n }\n\n // Because this emitter is a global, we have to check to see if a\n // previous version of this library failed to enable infinite listeners.\n // I know what you're about to say. But literally everything about\n // signal-exit is a compromise with evil. Get used to it.\n if (!emitter.infinite) {\n emitter.setMaxListeners(Infinity)\n emitter.infinite = true\n }\n\n module.exports = function (cb, opts) {\n if (global.process !== process) {\n return\n }\n assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')\n\n if (loaded === false) {\n load()\n }\n\n var ev = 'exit'\n if (opts && opts.alwaysLast) {\n ev = 'afterexit'\n }\n\n var remove = function () {\n emitter.removeListener(ev, cb)\n if (emitter.listeners('exit').length === 0 &&\n emitter.listeners('afterexit').length === 0) {\n unload()\n }\n }\n emitter.on(ev, cb)\n\n return remove\n }\n\n var unload = function unload () {\n if (!loaded || global.process !== process) {\n return\n }\n loaded = false\n\n signals.forEach(function (sig) {\n try {\n process.removeListener(sig, sigListeners[sig])\n } catch (er) {}\n })\n process.emit = originalProcessEmit\n process.reallyExit = originalProcessReallyExit\n emitter.count -= 1\n }\n module.exports.unload = unload\n\n var emit = function emit (event, code, signal) {\n if (emitter.emitted[event]) {\n return\n }\n emitter.emitted[event] = true\n emitter.emit(event, code, signal)\n }\n\n // { : , ... }\n var sigListeners = {}\n signals.forEach(function (sig) {\n sigListeners[sig] = function listener () {\n if (process !== global.process) {\n return\n }\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n var listeners = process.listeners(sig)\n if (listeners.length === emitter.count) {\n unload()\n emit('exit', null, sig)\n /* istanbul ignore next */\n emit('afterexit', null, sig)\n /* istanbul ignore next */\n if (isWin && sig === 'SIGHUP') {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n sig = 'SIGINT'\n }\n process.kill(process.pid, sig)\n }\n }\n })\n\n module.exports.signals = function () {\n return signals\n }\n\n var loaded = false\n\n var load = function load () {\n if (loaded || process !== global.process) {\n return\n }\n loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n emitter.count += 1\n\n signals = signals.filter(function (sig) {\n try {\n process.on(sig, sigListeners[sig])\n return true\n } catch (er) {\n return false\n }\n })\n\n process.emit = processEmit\n process.reallyExit = processReallyExit\n }\n module.exports.load = load\n\n var originalProcessReallyExit = process.reallyExit\n var processReallyExit = function processReallyExit (code) {\n if (process !== global.process) {\n return\n }\n process.exitCode = code || 0\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n originalProcessReallyExit.call(process, process.exitCode)\n }\n\n var originalProcessEmit = process.emit\n var processEmit = function processEmit (ev, arg) {\n if (ev === 'exit' && process === global.process) {\n if (arg !== undefined) {\n process.exitCode = arg\n }\n var ret = originalProcessEmit.apply(this, arguments)\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n return ret\n } else {\n return originalProcessEmit.apply(this, arguments)\n }\n }\n}\n","'use strict';\nconst os = require('os');\nconst onExit = require('signal-exit');\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nconst spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {\n\treturn isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n};\n\nconst isSigterm = signal => {\n\treturn signal === os.constants.signals.SIGTERM ||\n\t\t(typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n};\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nconst spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nconst setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nconst validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nconst setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n\nmodule.exports = {\n\tspawnedKill,\n\tspawnedCancel,\n\tsetupTimeout,\n\tvalidateTimeout,\n\tsetExitHandler\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst stream = require('stream');\nconst {promisify} = require('util');\nconst bufferStream = require('./buffer-stream');\n\nconst streamPipelinePromisified = promisify(stream.pipeline);\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\tthrow new Error('Expected a stream');\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\tconst stream = bufferStream(options);\n\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait streamPipelinePromisified(inputStream, stream);\n\t\t\t\tresolve();\n\t\t\t} catch (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t}\n\t\t})();\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n","'use strict';\nconst isStream = require('is-stream');\nconst getStream = require('get-stream');\nconst mergeStream = require('merge-stream');\n\n// `input` option\nconst handleInput = (spawned, input) => {\n\t// Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852\n\t// @todo remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0\n\tif (input === undefined || spawned.stdin === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nconst makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\tif (!stream) {\n\t\treturn;\n\t}\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\tif (encoding) {\n\t\treturn getStream(stream, {encoding, maxBuffer});\n\t}\n\n\treturn getStream.buffer(stream, {maxBuffer});\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nconst getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise)\n\t\t]);\n\t}\n};\n\nconst validateInputSync = ({input}) => {\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n};\n\nmodule.exports = {\n\thandleInput,\n\tmakeAllStream,\n\tgetSpawnedResult,\n\tvalidateInputSync\n};\n\n","'use strict';\n\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property)\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nconst mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function' ?\n\t\t\t(...args) => Reflect.apply(descriptor.value, promise(), args) :\n\t\t\tdescriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n\n\treturn spawned;\n};\n\n// Use promises instead of `child_process` events\nconst getSpawnedPromise = spawned => {\n\treturn new Promise((resolve, reject) => {\n\t\tspawned.on('exit', (exitCode, signal) => {\n\t\t\tresolve({exitCode, signal});\n\t\t});\n\n\t\tspawned.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\n\t\tif (spawned.stdin) {\n\t\t\tspawned.stdin.on('error', error => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t}\n\t});\n};\n\nmodule.exports = {\n\tmergePromise,\n\tgetSpawnedPromise\n};\n\n","'use strict';\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\nconst DOUBLE_QUOTES_REGEXP = /\"/g;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replace(DOUBLE_QUOTES_REGEXP, '\\\\\"')}\"`;\n};\n\nconst joinCommand = (file, args) => {\n\treturn normalizeArgs(file, args).join(' ');\n};\n\nconst getEscapedCommand = (file, args) => {\n\treturn normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n};\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execa.command()`\nconst parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens[tokens.length - 1];\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nmodule.exports = {\n\tjoinCommand,\n\tgetEscapedCommand,\n\tparseCommand\n};\n","'use strict';\nconst path = require('path');\nconst childProcess = require('child_process');\nconst crossSpawn = require('cross-spawn');\nconst stripFinalNewline = require('strip-final-newline');\nconst npmRunPath = require('npm-run-path');\nconst onetime = require('onetime');\nconst makeError = require('./lib/error');\nconst normalizeStdio = require('./lib/stdio');\nconst {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} = require('./lib/kill');\nconst {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = require('./lib/stream');\nconst {mergePromise, getSpawnedPromise} = require('./lib/promise');\nconst {joinCommand, parseCommand, getEscapedCommand} = require('./lib/command');\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPath.env({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\t...options\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execa.sync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nconst execa = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t}));\n\t\treturn mergePromise(dummySpawned, errorPromise);\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled,\n\t\t\t\tkilled: spawned.killed\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options.input);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\treturn mergePromise(spawned, handlePromiseOnce);\n};\n\nmodule.exports = execa;\n\nmodule.exports.sync = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false\n\t};\n};\n\nmodule.exports.command = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n};\n\nmodule.exports.commandSync = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa.sync(file, args, options);\n};\n\nmodule.exports.node = (scriptPath, args, options = {}) => {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdio.node(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : [])\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false\n\t\t}\n\t);\n};\n","/**\n * The following is modified based on source found in\n * https://github.com/facebook/create-react-app\n *\n * MIT Licensed\n * Copyright (c) 2015-present, Facebook, Inc.\n * https://github.com/facebook/create-react-app/blob/master/LICENSE\n *\n */\n\nimport path from 'path'\nimport open from 'open'\nimport execa from 'execa'\nimport chalk from 'chalk'\nimport { execSync } from 'child_process'\nimport { Logger } from '../logger'\n\n// https://github.com/sindresorhus/open#app\nconst OSX_CHROME = 'google chrome'\n\n/**\n * Reads the BROWSER environment variable and decides what to do with it.\n * Returns true if it opened a browser or ran a node.js script, otherwise false.\n */\nexport function openBrowser(\n url: string,\n opt: string | true,\n logger: Logger\n): boolean {\n // The browser executable to open.\n // See https://github.com/sindresorhus/open#app for documentation.\n const browser = typeof opt === 'string' ? opt : process.env.BROWSER || ''\n if (browser.toLowerCase().endsWith('.js')) {\n return executeNodeScript(browser, url, logger)\n } else if (browser.toLowerCase() !== 'none') {\n return startBrowserProcess(browser, url)\n }\n return false\n}\n\nfunction executeNodeScript(scriptPath: string, url: string, logger: Logger) {\n const extraArgs = process.argv.slice(2)\n const child = execa('node', [scriptPath, ...extraArgs, url], {\n stdio: 'inherit'\n })\n child.on('close', (code) => {\n if (code !== 0) {\n logger.error(\n chalk.red(\n `\\nThe script specified as BROWSER environment variable failed.\\n\\n${chalk.cyan(\n scriptPath\n )} exited with code ${code}.`\n ),\n { error: null }\n )\n }\n })\n return true\n}\n\nfunction startBrowserProcess(browser: string | undefined, url: string) {\n // If we're on OS X, the user hasn't specifically\n // requested a different browser, we can try opening\n // Chrome with AppleScript. This lets us reuse an\n // existing tab when possible instead of creating a new one.\n const shouldTryOpenChromeWithAppleScript =\n process.platform === 'darwin' && (browser === '' || browser === OSX_CHROME)\n\n if (shouldTryOpenChromeWithAppleScript) {\n try {\n // Try our best to reuse existing tab\n // on OS X Google Chrome with AppleScript\n execSync('ps cax | grep \"Google Chrome\"')\n execSync('osascript openChrome.applescript \"' + encodeURI(url) + '\"', {\n cwd: path.dirname(require.resolve('vite/bin/openChrome.applescript')),\n stdio: 'ignore'\n })\n return true\n } catch (err) {\n // Ignore errors\n }\n }\n\n // Another special case: on OS X, check if BROWSER has been set to \"open\".\n // In this case, instead of passing the string `open` to `open` function (which won't work),\n // just ignore it (thus ensuring the intended behavior, i.e. opening the system browser):\n // https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768\n if (process.platform === 'darwin' && browser === 'open') {\n browser = undefined\n }\n\n // Fallback to open\n // (It will always open new tab)\n try {\n const options: open.Options = browser ? { app: { name: browser } } : {}\n open(url, options).catch(() => {}) // Prevent `unhandledRejection` error.\n return true\n } catch (err) {\n return false\n }\n}\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","exports.quote = function (xs) {\n return xs.map(function (s) {\n if (s && typeof s === 'object') {\n return s.op.replace(/(.)/g, '\\\\$1');\n }\n else if (/[\"\\s]/.test(s) && !/'/.test(s)) {\n return \"'\" + s.replace(/(['\\\\])/g, '\\\\$1') + \"'\";\n }\n else if (/[\"'\\s]/.test(s)) {\n return '\"' + s.replace(/([\"\\\\$`!])/g, '\\\\$1') + '\"';\n }\n else {\n return String(s).replace(/([A-z]:)?([#!\"$&'()*,:;<=>?@\\[\\\\\\]^`{|}])/g, '$1\\\\$2');\n }\n }).join(' ');\n};\n\n// '<(' is process substitution operator and\n// can be parsed the same as control operator\nvar CONTROL = '(?:' + [\n '\\\\|\\\\|', '\\\\&\\\\&', ';;', '\\\\|\\\\&', '\\\\<\\\\(', '>>', '>\\\\&', '[&;()|<>]'\n].join('|') + ')';\nvar META = '|&;()<> \\\\t';\nvar BAREWORD = '(\\\\\\\\[\\'\"' + META + ']|[^\\\\s\\'\"' + META + '])+';\nvar SINGLE_QUOTE = '\"((\\\\\\\\\"|[^\"])*?)\"';\nvar DOUBLE_QUOTE = '\\'((\\\\\\\\\\'|[^\\'])*?)\\'';\n\nvar TOKEN = '';\nfor (var i = 0; i < 4; i++) {\n TOKEN += (Math.pow(16,8)*Math.random()).toString(16);\n}\n\nexports.parse = function (s, env, opts) {\n var mapped = parse(s, env, opts);\n if (typeof env !== 'function') return mapped;\n return mapped.reduce(function (acc, s) {\n if (typeof s === 'object') return acc.concat(s);\n var xs = s.split(RegExp('(' + TOKEN + '.*?' + TOKEN + ')', 'g'));\n if (xs.length === 1) return acc.concat(xs[0]);\n return acc.concat(xs.filter(Boolean).map(function (x) {\n if (RegExp('^' + TOKEN).test(x)) {\n return JSON.parse(x.split(TOKEN)[1]);\n }\n else return x;\n }));\n }, []);\n};\n\nfunction parse (s, env, opts) {\n var chunker = new RegExp([\n '(' + CONTROL + ')', // control chars\n '(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')*'\n ].join('|'), 'g');\n var match = s.match(chunker).filter(Boolean);\n var commented = false;\n\n if (!match) return [];\n if (!env) env = {};\n if (!opts) opts = {};\n return match.map(function (s, j) {\n if (commented) {\n return;\n }\n if (RegExp('^' + CONTROL + '$').test(s)) {\n return { op: s };\n }\n\n // Hand-written scanner/parser for Bash quoting rules:\n //\n // 1. inside single quotes, all characters are printed literally.\n // 2. inside double quotes, all characters are printed literally\n // except variables prefixed by '$' and backslashes followed by\n // either a double quote or another backslash.\n // 3. outside of any quotes, backslashes are treated as escape\n // characters and not printed (unless they are themselves escaped)\n // 4. quote context can switch mid-token if there is no whitespace\n // between the two quote contexts (e.g. all'one'\"token\" parses as\n // \"allonetoken\")\n var SQ = \"'\";\n var DQ = '\"';\n var DS = '$';\n var BS = opts.escape || '\\\\';\n var quote = false;\n var esc = false;\n var out = '';\n var isGlob = false;\n\n for (var i = 0, len = s.length; i < len; i++) {\n var c = s.charAt(i);\n isGlob = isGlob || (!quote && (c === '*' || c === '?'));\n if (esc) {\n out += c;\n esc = false;\n }\n else if (quote) {\n if (c === quote) {\n quote = false;\n }\n else if (quote == SQ) {\n out += c;\n }\n else { // Double quote\n if (c === BS) {\n i += 1;\n c = s.charAt(i);\n if (c === DQ || c === BS || c === DS) {\n out += c;\n } else {\n out += BS + c;\n }\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else {\n out += c;\n }\n }\n }\n else if (c === DQ || c === SQ) {\n quote = c;\n }\n else if (RegExp('^' + CONTROL + '$').test(c)) {\n return { op: s };\n }\n else if (RegExp('^#$').test(c)) {\n commented = true;\n if (out.length){\n return [out, { comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n return [{ comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n else if (c === BS) {\n esc = true;\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else out += c;\n }\n\n if (isGlob) return {op: 'glob', pattern: out};\n\n return out;\n\n function parseEnvVar() {\n i += 1;\n var varend, varname;\n //debugger\n if (s.charAt(i) === '{') {\n i += 1;\n if (s.charAt(i) === '}') {\n throw new Error(\"Bad substitution: \" + s.substr(i - 2, 3));\n }\n varend = s.indexOf('}', i);\n if (varend < 0) {\n throw new Error(\"Bad substitution: \" + s.substr(i));\n }\n varname = s.substr(i, varend - i);\n i = varend;\n }\n else if (/[*@#?$!_\\-]/.test(s.charAt(i))) {\n varname = s.charAt(i);\n i += 1;\n }\n else {\n varend = s.substr(i).match(/[^\\w\\d_]/);\n if (!varend) {\n varname = s.substr(i);\n i = s.length;\n } else {\n varname = s.substr(i, varend.index);\n i += varend.index - 1;\n }\n }\n return getVar(null, '', varname);\n }\n })\n // finalize parsed aruments\n .reduce(function(prev, arg){\n if (arg === undefined){\n return prev;\n }\n return prev.concat(arg);\n },[]);\n\n function getVar (_, pre, key) {\n var r = typeof env === 'function' ? env(key) : env[key];\n if (r === undefined && key != '')\n r = '';\n else if (r === undefined)\n r = '$';\n\n if (typeof r === 'object') {\n return pre + TOKEN + JSON.stringify(r) + TOKEN;\n }\n else return pre + r;\n }\n}\n","module.exports = {\n '/Applications/Atom.app/Contents/MacOS/Atom': 'atom',\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta':\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta',\n '/Applications/Brackets.app/Contents/MacOS/Brackets': 'brackets',\n '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text':\n '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text 2.app/Contents/MacOS/Sublime Text 2':\n '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text Dev.app/Contents/MacOS/Sublime Text':\n '/Applications/Sublime Text Dev.app/Contents/SharedSupport/bin/subl',\n '/Applications/Visual Studio Code.app/Contents/MacOS/Electron': 'code',\n '/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Electron':\n 'code-insiders',\n '/Applications/AppCode.app/Contents/MacOS/appcode':\n '/Applications/AppCode.app/Contents/MacOS/appcode',\n '/Applications/CLion.app/Contents/MacOS/clion':\n '/Applications/CLion.app/Contents/MacOS/clion',\n '/Applications/IntelliJ IDEA.app/Contents/MacOS/idea':\n '/Applications/IntelliJ IDEA.app/Contents/MacOS/idea',\n '/Applications/PhpStorm.app/Contents/MacOS/phpstorm':\n '/Applications/PhpStorm.app/Contents/MacOS/phpstorm',\n '/Applications/PyCharm.app/Contents/MacOS/pycharm':\n '/Applications/PyCharm.app/Contents/MacOS/pycharm',\n '/Applications/PyCharm CE.app/Contents/MacOS/pycharm':\n '/Applications/PyCharm CE.app/Contents/MacOS/pycharm',\n '/Applications/RubyMine.app/Contents/MacOS/rubymine':\n '/Applications/RubyMine.app/Contents/MacOS/rubymine',\n '/Applications/WebStorm.app/Contents/MacOS/webstorm':\n '/Applications/WebStorm.app/Contents/MacOS/webstorm'\n}\n","module.exports = {\n atom: 'atom',\n Brackets: 'brackets',\n code: 'code',\n emacs: 'emacs',\n 'idea.sh': 'idea',\n 'phpstorm.sh': 'phpstorm',\n 'pycharm.sh': 'pycharm',\n 'rubymine.sh': 'rubymine',\n sublime_text: 'subl',\n vim: 'vim',\n 'webstorm.sh': 'webstorm'\n}\n","module.exports = [\n 'Brackets.exe',\n 'Code.exe',\n 'atom.exe',\n 'sublime_text.exe',\n 'notepad++.exe',\n 'clion.exe',\n 'clion64.exe',\n 'idea.exe',\n 'idea64.exe',\n 'phpstorm.exe',\n 'phpstorm64.exe',\n 'pycharm.exe',\n 'pycharm64.exe',\n 'rubymine.exe',\n 'rubymine64.exe',\n 'webstorm.exe',\n 'webstorm64.exe'\n]\n","const path = require('path')\nconst shellQuote = require('shell-quote')\nconst childProcess = require('child_process')\n\n// Map from full process name to binary that starts the process\n// We can't just re-use full process name, because it will spawn a new instance\n// of the app every time\nconst COMMON_EDITORS_OSX = require('./editor-info/osx')\nconst COMMON_EDITORS_LINUX = require('./editor-info/linux')\nconst COMMON_EDITORS_WIN = require('./editor-info/windows')\n\nmodule.exports = function guessEditor (specifiedEditor) {\n if (specifiedEditor) {\n return shellQuote.parse(specifiedEditor)\n }\n // We can find out which editor is currently running by:\n // `ps x` on macOS and Linux\n // `Get-Process` on Windows\n try {\n if (process.platform === 'darwin') {\n const output = childProcess.execSync('ps x').toString()\n const processNames = Object.keys(COMMON_EDITORS_OSX)\n for (let i = 0; i < processNames.length; i++) {\n const processName = processNames[i]\n if (output.indexOf(processName) !== -1) {\n return [COMMON_EDITORS_OSX[processName]]\n }\n }\n } else if (process.platform === 'win32') {\n const output = childProcess\n .execSync('powershell -Command \"Get-Process | Select-Object Path\"', {\n stdio: ['pipe', 'pipe', 'ignore']\n })\n .toString()\n const runningProcesses = output.split('\\r\\n')\n for (let i = 0; i < runningProcesses.length; i++) {\n // `Get-Process` sometimes returns empty lines\n if (!runningProcesses[i]) {\n continue\n }\n\n const fullProcessPath = runningProcesses[i].trim()\n const shortProcessName = path.basename(fullProcessPath)\n\n if (COMMON_EDITORS_WIN.indexOf(shortProcessName) !== -1) {\n return [fullProcessPath]\n }\n }\n } else if (process.platform === 'linux') {\n // --no-heading No header line\n // x List all processes owned by you\n // -o comm Need only names column\n const output = childProcess\n .execSync('ps x --no-heading -o comm --sort=comm')\n .toString()\n const processNames = Object.keys(COMMON_EDITORS_LINUX)\n for (let i = 0; i < processNames.length; i++) {\n const processName = processNames[i]\n if (output.indexOf(processName) !== -1) {\n return [COMMON_EDITORS_LINUX[processName]]\n }\n }\n }\n } catch (error) {\n // Ignore...\n }\n\n // Last resort, use old skool env vars\n if (process.env.VISUAL) {\n return [process.env.VISUAL]\n } else if (process.env.EDITOR) {\n return [process.env.EDITOR]\n }\n\n return [null]\n}\n","const path = require('path')\n\n// normalize file/line numbers into command line args for specific editors\nmodule.exports = function getArgumentsForPosition (\n editor,\n fileName,\n lineNumber,\n columnNumber = 1\n) {\n const editorBasename = path.basename(editor).replace(/\\.(exe|cmd|bat)$/i, '')\n switch (editorBasename) {\n case 'atom':\n case 'Atom':\n case 'Atom Beta':\n case 'subl':\n case 'sublime':\n case 'sublime_text':\n case 'wstorm':\n case 'charm':\n return [`${fileName}:${lineNumber}:${columnNumber}`]\n case 'notepad++':\n return ['-n' + lineNumber, fileName]\n case 'vim':\n case 'mvim':\n return [`+call cursor(${lineNumber}, ${columnNumber})`, fileName]\n case 'joe':\n return ['+' + `${lineNumber}`, fileName]\n case 'emacs':\n case 'emacsclient':\n return [`+${lineNumber}:${columnNumber}`, fileName]\n case 'rmate':\n case 'mate':\n case 'mine':\n return ['--line', lineNumber, fileName]\n case 'code':\n case 'code-insiders':\n case 'Code':\n return ['-r', '-g', `${fileName}:${lineNumber}:${columnNumber}`]\n case 'appcode':\n case 'clion':\n case 'clion64':\n case 'idea':\n case 'idea64':\n case 'phpstorm':\n case 'phpstorm64':\n case 'pycharm':\n case 'pycharm64':\n case 'rubymine':\n case 'rubymine64':\n case 'webstorm':\n case 'webstorm64':\n return ['--line', lineNumber, fileName]\n }\n\n // For all others, drop the lineNumber until we have\n // a mapping above, since providing the lineNumber incorrectly\n // can result in errors or confusing behavior.\n return [fileName]\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file at\n * https://github.com/facebookincubator/create-react-app/blob/master/LICENSE\n *\n * Modified by Yuxi Evan You\n */\n\nconst fs = require('fs')\nconst os = require('os')\nconst path = require('path')\nconst chalk = require('chalk')\nconst childProcess = require('child_process')\n\nconst guessEditor = require('./guess')\nconst getArgumentsForPosition = require('./get-args')\n\nfunction wrapErrorCallback (cb) {\n return (fileName, errorMessage) => {\n console.log()\n console.log(\n chalk.red('Could not open ' + path.basename(fileName) + ' in the editor.')\n )\n if (errorMessage) {\n if (errorMessage[errorMessage.length - 1] !== '.') {\n errorMessage += '.'\n }\n console.log(\n chalk.red('The editor process exited with an error: ' + errorMessage)\n )\n }\n console.log()\n if (cb) cb(fileName, errorMessage)\n }\n}\n\nfunction isTerminalEditor (editor) {\n switch (editor) {\n case 'vim':\n case 'emacs':\n case 'nano':\n return true\n }\n return false\n}\n\nconst positionRE = /:(\\d+)(:(\\d+))?$/\nfunction parseFile (file) {\n const fileName = file.replace(positionRE, '')\n const match = file.match(positionRE)\n const lineNumber = match && match[1]\n const columnNumber = match && match[3]\n return {\n fileName,\n lineNumber,\n columnNumber\n }\n}\n\nlet _childProcess = null\n\nfunction launchEditor (file, specifiedEditor, onErrorCallback) {\n const parsed = parseFile(file)\n let { fileName } = parsed\n const { lineNumber, columnNumber } = parsed\n\n if (!fs.existsSync(fileName)) {\n return\n }\n\n if (typeof specifiedEditor === 'function') {\n onErrorCallback = specifiedEditor\n specifiedEditor = undefined\n }\n\n onErrorCallback = wrapErrorCallback(onErrorCallback)\n\n const [editor, ...args] = guessEditor(specifiedEditor)\n if (!editor) {\n onErrorCallback(fileName, null)\n return\n }\n\n if (\n process.platform === 'linux' &&\n fileName.startsWith('/mnt/') &&\n /Microsoft/i.test(os.release())\n ) {\n // Assume WSL / \"Bash on Ubuntu on Windows\" is being used, and\n // that the file exists on the Windows file system.\n // `os.release()` is \"4.4.0-43-Microsoft\" in the current release\n // build of WSL, see: https://github.com/Microsoft/BashOnWindows/issues/423#issuecomment-221627364\n // When a Windows editor is specified, interop functionality can\n // handle the path translation, but only if a relative path is used.\n fileName = path.relative('', fileName)\n }\n\n if (lineNumber) {\n const extraArgs = getArgumentsForPosition(editor, fileName, lineNumber, columnNumber)\n args.push.apply(args, extraArgs)\n } else {\n args.push(fileName)\n }\n\n if (_childProcess && isTerminalEditor(editor)) {\n // There's an existing editor process already and it's attached\n // to the terminal, so go kill it. Otherwise two separate editor\n // instances attach to the stdin/stdout which gets confusing.\n _childProcess.kill('SIGKILL')\n }\n\n if (process.platform === 'win32') {\n // On Windows, launch the editor in a shell because spawn can only\n // launch .exe files.\n _childProcess = childProcess.spawn(\n 'cmd.exe',\n ['/C', editor].concat(args),\n { stdio: 'inherit' }\n )\n } else {\n _childProcess = childProcess.spawn(editor, args, { stdio: 'inherit' })\n }\n _childProcess.on('exit', function (errorCode) {\n _childProcess = null\n\n if (errorCode) {\n onErrorCallback(fileName, '(code ' + errorCode + ')')\n }\n })\n\n _childProcess.on('error', function (error) {\n onErrorCallback(fileName, error.message)\n })\n}\n\nmodule.exports = launchEditor\n","const url = require('url')\nconst path = require('path')\nconst launch = require('launch-editor')\n\nmodule.exports = (specifiedEditor, srcRoot, onErrorCallback) => {\n if (typeof specifiedEditor === 'function') {\n onErrorCallback = specifiedEditor\n specifiedEditor = undefined\n }\n\n if (typeof srcRoot === 'function') {\n onErrorCallback = srcRoot\n srcRoot = undefined\n }\n\n srcRoot = srcRoot || process.cwd()\n\n return function launchEditorMiddleware (req, res, next) {\n const { file } = url.parse(req.url, true).query || {}\n if (!file) {\n res.statusCode = 500\n res.end(`launch-editor-middleware: required query param \"file\" is missing.`)\n } else {\n launch(path.resolve(srcRoot, file), specifiedEditor, onErrorCallback)\n res.end()\n }\n }\n}\n","import path from 'path'\nimport { Loader, Plugin, ImportKind } from 'esbuild'\nimport { KNOWN_ASSET_TYPES } from '../constants'\nimport { ResolvedConfig } from '..'\nimport {\n isRunningWithYarnPnp,\n flattenId,\n normalizePath,\n isExternalUrl\n} from '../utils'\nimport { browserExternalId } from '../plugins/resolve'\nimport { ExportsData } from '.'\n\nconst externalTypes = [\n 'css',\n // supported pre-processor types\n 'less',\n 'sass',\n 'scss',\n 'styl',\n 'stylus',\n 'pcss',\n 'postcss',\n // known SFC types\n 'vue',\n 'svelte',\n 'marko',\n 'astro',\n // JSX/TSX may be configured to be compiled differently from how esbuild\n // handles it by default, so exclude them as well\n 'jsx',\n 'tsx',\n ...KNOWN_ASSET_TYPES\n]\n\nexport function esbuildDepPlugin(\n qualified: Record,\n exportsData: Record,\n config: ResolvedConfig,\n ssr?: boolean\n): Plugin {\n // default resolver which prefers ESM\n const _resolve = config.createResolver({ asSrc: false })\n\n // cjs resolver that prefers Node\n const _resolveRequire = config.createResolver({\n asSrc: false,\n isRequire: true\n })\n\n const resolve = (\n id: string,\n importer: string,\n kind: ImportKind,\n resolveDir?: string\n ): Promise => {\n let _importer: string\n // explicit resolveDir - this is passed only during yarn pnp resolve for\n // entries\n if (resolveDir) {\n _importer = normalizePath(path.join(resolveDir, '*'))\n } else {\n // map importer ids to file paths for correct resolution\n _importer = importer in qualified ? qualified[importer] : importer\n }\n const resolver = kind.startsWith('require') ? _resolveRequire : _resolve\n return resolver(id, _importer, undefined, ssr)\n }\n\n return {\n name: 'vite:dep-pre-bundle',\n setup(build) {\n // externalize assets and commonly known non-js file types\n build.onResolve(\n {\n filter: new RegExp(`\\\\.(` + externalTypes.join('|') + `)(\\\\?.*)?$`)\n },\n async ({ path: id, importer, kind }) => {\n const resolved = await resolve(id, importer, kind)\n if (resolved) {\n return {\n path: resolved,\n external: true\n }\n }\n }\n )\n\n function resolveEntry(id: string) {\n const flatId = flattenId(id)\n if (flatId in qualified) {\n return {\n path: flatId,\n namespace: 'dep'\n }\n }\n }\n\n build.onResolve(\n { filter: /^[\\w@][^:]/ },\n async ({ path: id, importer, kind }) => {\n // ensure esbuild uses our resolved entries\n let entry: { path: string; namespace: string } | undefined\n // if this is an entry, return entry namespace resolve result\n if (!importer) {\n if ((entry = resolveEntry(id))) return entry\n // check if this is aliased to an entry - also return entry namespace\n const aliased = await _resolve(id, undefined, true)\n if (aliased && (entry = resolveEntry(aliased))) {\n return entry\n }\n }\n\n // use vite's own resolver\n const resolved = await resolve(id, importer, kind)\n if (resolved) {\n if (resolved.startsWith(browserExternalId)) {\n return {\n path: id,\n namespace: 'browser-external'\n }\n }\n if (isExternalUrl(resolved)) {\n return {\n path: resolved,\n external: true\n }\n }\n return {\n path: path.resolve(resolved)\n }\n }\n }\n )\n\n // For entry files, we'll read it ourselves and construct a proxy module\n // to retain the entry's raw id instead of file path so that esbuild\n // outputs desired output file structure.\n // It is necessary to do the re-exporting to separate the virtual proxy\n // module from the actual module since the actual module may get\n // referenced via relative imports - if we don't separate the proxy and\n // the actual module, esbuild will create duplicated copies of the same\n // module!\n const root = path.resolve(config.root)\n build.onLoad({ filter: /.*/, namespace: 'dep' }, ({ path: id }) => {\n const entryFile = qualified[id]\n\n let relativePath = normalizePath(path.relative(root, entryFile))\n if (\n !relativePath.startsWith('./') &&\n !relativePath.startsWith('../') &&\n relativePath !== '.'\n ) {\n relativePath = `./${relativePath}`\n }\n\n let contents = ''\n const data = exportsData[id]\n const [imports, exports] = data\n if (!imports.length && !exports.length) {\n // cjs\n contents += `export default require(\"${relativePath}\");`\n } else {\n if (exports.includes('default')) {\n contents += `import d from \"${relativePath}\";export default d;`\n }\n if (\n data.hasReExports ||\n exports.length > 1 ||\n exports[0] !== 'default'\n ) {\n contents += `\\nexport * from \"${relativePath}\"`\n }\n }\n\n let ext = path.extname(entryFile).slice(1)\n if (ext === 'mjs') ext = 'js'\n return {\n loader: ext as Loader,\n contents,\n resolveDir: root\n }\n })\n\n build.onLoad(\n { filter: /.*/, namespace: 'browser-external' },\n ({ path: id }) => {\n return {\n contents:\n `export default new Proxy({}, {\n get() {\n throw new Error('Module \"${id}\" has been externalized for ` +\n `browser compatibility and cannot be accessed in client code.')\n }\n})`\n }\n }\n )\n\n // yarn 2 pnp compat\n if (isRunningWithYarnPnp) {\n build.onResolve(\n { filter: /.*/ },\n async ({ path, importer, kind, resolveDir }) => ({\n // pass along resolveDir for entries\n path: await resolve(path, importer, kind, resolveDir)\n })\n )\n build.onLoad({ filter: /.*/ }, async (args) => ({\n contents: await require('fs').promises.readFile(args.path),\n loader: 'default'\n }))\n }\n }\n }\n}\n","import fs from 'fs'\nimport path from 'path'\nimport chalk from 'chalk'\nimport { createHash } from 'crypto'\nimport { build, BuildOptions as EsbuildBuildOptions } from 'esbuild'\nimport { ResolvedConfig } from '../config'\nimport {\n createDebugger,\n emptyDir,\n lookupFile,\n normalizePath,\n writeFile,\n flattenId,\n normalizeId\n} from '../utils'\nimport { esbuildDepPlugin } from './esbuildDepPlugin'\nimport { init, parse } from 'es-module-lexer'\nimport { scanImports } from './scan'\nimport { transformWithEsbuild } from '../plugins/esbuild'\nimport { performance } from 'perf_hooks'\n\nconst debug = createDebugger('vite:deps')\n\nexport type ExportsData = ReturnType & {\n // es-module-lexer has a facade detection but isn't always accurate for our\n // use case when the module has default export\n hasReExports?: true\n}\n\nexport interface DepOptimizationOptions {\n /**\n * By default, Vite will crawl your index.html to detect dependencies that\n * need to be pre-bundled. If build.rollupOptions.input is specified, Vite\n * will crawl those entry points instead.\n *\n * If neither of these fit your needs, you can specify custom entries using\n * this option - the value should be a fast-glob pattern or array of patterns\n * (https://github.com/mrmlnc/fast-glob#basic-syntax) that are relative from\n * vite project root. This will overwrite default entries inference.\n */\n entries?: string | string[]\n /**\n * Force optimize listed dependencies (must be resolvable import paths,\n * cannot be globs).\n */\n include?: string[]\n /**\n * Do not optimize these dependencies (must be resolvable import paths,\n * cannot be globs).\n */\n exclude?: string[]\n /**\n * Options to pass to esbuild during the dep scanning and optimization\n *\n * Certain options are omitted since changing them would not be compatible\n * with Vite's dep optimization.\n *\n * - `external` is also omitted, use Vite's `optimizeDeps.exclude` option\n * - `plugins` are merged with Vite's dep plugin\n * - `keepNames` takes precedence over the deprecated `optimizeDeps.keepNames`\n *\n * https://esbuild.github.io/api\n */\n esbuildOptions?: Omit<\n EsbuildBuildOptions,\n | 'bundle'\n | 'entryPoints'\n | 'external'\n | 'write'\n | 'watch'\n | 'outdir'\n | 'outfile'\n | 'outbase'\n | 'outExtension'\n | 'metafile'\n >\n /**\n * @deprecated use `esbuildOptions.keepNames`\n */\n keepNames?: boolean\n}\n\nexport interface DepOptimizationMetadata {\n /**\n * The main hash is determined by user config and dependency lockfiles.\n * This is checked on server startup to avoid unnecessary re-bundles.\n */\n hash: string\n /**\n * The browser hash is determined by the main hash plus additional dependencies\n * discovered at runtime. This is used to invalidate browser requests to\n * optimized deps.\n */\n browserHash: string\n optimized: Record<\n string,\n {\n file: string\n src: string\n needsInterop: boolean\n }\n >\n}\n\nexport async function optimizeDeps(\n config: ResolvedConfig,\n force = config.server.force,\n asCommand = false,\n newDeps?: Record, // missing imports encountered after server has started\n ssr?: boolean\n): Promise {\n config = {\n ...config,\n command: 'build'\n }\n\n const { root, logger, cacheDir } = config\n const log = asCommand ? logger.info : debug\n\n if (!cacheDir) {\n log(`No cache directory. Skipping.`)\n return null\n }\n\n const dataPath = path.join(cacheDir, '_metadata.json')\n const mainHash = getDepHash(root, config)\n const data: DepOptimizationMetadata = {\n hash: mainHash,\n browserHash: mainHash,\n optimized: {}\n }\n\n if (!force) {\n let prevData: DepOptimizationMetadata | undefined\n try {\n prevData = JSON.parse(fs.readFileSync(dataPath, 'utf-8'))\n } catch (e) {}\n // hash is consistent, no need to re-bundle\n if (prevData && prevData.hash === data.hash) {\n log('Hash is consistent. Skipping. Use --force to override.')\n return prevData\n }\n }\n\n if (fs.existsSync(cacheDir)) {\n emptyDir(cacheDir)\n } else {\n fs.mkdirSync(cacheDir, { recursive: true })\n }\n // a hint for Node.js\n // all files in the cache directory should be recognized as ES modules\n writeFile(\n path.resolve(cacheDir, 'package.json'),\n JSON.stringify({ type: 'module' })\n )\n\n let deps: Record, missing: Record\n if (!newDeps) {\n ;({ deps, missing } = await scanImports(config))\n } else {\n deps = newDeps\n missing = {}\n }\n\n // update browser hash\n data.browserHash = createHash('sha256')\n .update(data.hash + JSON.stringify(deps))\n .digest('hex')\n .substr(0, 8)\n\n const missingIds = Object.keys(missing)\n if (missingIds.length) {\n throw new Error(\n `The following dependencies are imported but could not be resolved:\\n\\n ${missingIds\n .map(\n (id) =>\n `${chalk.cyan(id)} ${chalk.white.dim(\n `(imported by ${missing[id]})`\n )}`\n )\n .join(`\\n `)}\\n\\nAre they installed?`\n )\n }\n\n const include = config.optimizeDeps?.include\n if (include) {\n const resolve = config.createResolver({ asSrc: false })\n for (const id of include) {\n // normalize 'foo >bar` as 'foo > bar' to prevent same id being added\n // and for pretty printing\n const normalizedId = normalizeId(id)\n if (!deps[normalizedId]) {\n const entry = await resolve(id)\n if (entry) {\n deps[normalizedId] = entry\n } else {\n throw new Error(\n `Failed to resolve force included dependency: ${chalk.cyan(id)}`\n )\n }\n }\n }\n }\n\n const qualifiedIds = Object.keys(deps)\n\n if (!qualifiedIds.length) {\n writeFile(dataPath, JSON.stringify(data, null, 2))\n log(`No dependencies to bundle. Skipping.\\n\\n\\n`)\n return data\n }\n\n const total = qualifiedIds.length\n const maxListed = 5\n const listed = Math.min(total, maxListed)\n const extra = Math.max(0, total - maxListed)\n const depsString = chalk.yellow(\n qualifiedIds.slice(0, listed).join(`\\n `) +\n (extra > 0 ? `\\n (...and ${extra} more)` : ``)\n )\n if (!asCommand) {\n if (!newDeps) {\n // This is auto run on server start - let the user know that we are\n // pre-optimizing deps\n logger.info(\n chalk.greenBright(`Pre-bundling dependencies:\\n ${depsString}`)\n )\n logger.info(\n `(this will be run only when your dependencies or config have changed)`\n )\n }\n } else {\n logger.info(chalk.greenBright(`Optimizing dependencies:\\n ${depsString}`))\n }\n\n // esbuild generates nested directory output with lowest common ancestor base\n // this is unpredictable and makes it difficult to analyze entry / output\n // mapping. So what we do here is:\n // 1. flatten all ids to eliminate slash\n // 2. in the plugin, read the entry ourselves as virtual files to retain the\n // path.\n const flatIdDeps: Record = {}\n const idToExports: Record = {}\n const flatIdToExports: Record = {}\n\n const { plugins = [], ...esbuildOptions } =\n config.optimizeDeps?.esbuildOptions ?? {}\n\n await init\n for (const id in deps) {\n const flatId = flattenId(id)\n const filePath = (flatIdDeps[flatId] = deps[id])\n const entryContent = fs.readFileSync(filePath, 'utf-8')\n let exportsData: ExportsData\n try {\n exportsData = parse(entryContent) as ExportsData\n } catch {\n debug(\n `Unable to parse dependency: ${id}. Trying again with a JSX transform.`\n )\n const transformed = await transformWithEsbuild(entryContent, filePath, {\n loader: 'jsx'\n })\n // Ensure that optimization won't fail by defaulting '.js' to the JSX parser.\n // This is useful for packages such as Gatsby.\n esbuildOptions.loader = {\n '.js': 'jsx',\n ...esbuildOptions.loader\n }\n exportsData = parse(transformed.code) as ExportsData\n }\n for (const { ss, se } of exportsData[0]) {\n const exp = entryContent.slice(ss, se)\n if (/export\\s+\\*\\s+from/.test(exp)) {\n exportsData.hasReExports = true\n }\n }\n idToExports[id] = exportsData\n flatIdToExports[flatId] = exportsData\n }\n\n const define: Record = {\n 'process.env.NODE_ENV': JSON.stringify(config.mode)\n }\n for (const key in config.define) {\n const value = config.define[key]\n define[key] = typeof value === 'string' ? value : JSON.stringify(value)\n }\n\n const start = performance.now()\n\n const result = await build({\n absWorkingDir: process.cwd(),\n entryPoints: Object.keys(flatIdDeps),\n bundle: true,\n format: 'esm',\n target: config.build.target || undefined,\n external: config.optimizeDeps?.exclude,\n logLevel: 'error',\n splitting: true,\n sourcemap: true,\n outdir: cacheDir,\n ignoreAnnotations: true,\n metafile: true,\n define,\n plugins: [\n ...plugins,\n esbuildDepPlugin(flatIdDeps, flatIdToExports, config, ssr)\n ],\n ...esbuildOptions\n })\n\n const meta = result.metafile!\n\n // the paths in `meta.outputs` are relative to `process.cwd()`\n const cacheDirOutputPath = path.relative(process.cwd(), cacheDir)\n\n for (const id in deps) {\n const entry = deps[id]\n data.optimized[id] = {\n file: normalizePath(path.resolve(cacheDir, flattenId(id) + '.js')),\n src: entry,\n needsInterop: needsInterop(\n id,\n idToExports[id],\n meta.outputs,\n cacheDirOutputPath\n )\n }\n }\n\n writeFile(dataPath, JSON.stringify(data, null, 2))\n\n debug(`deps bundled in ${(performance.now() - start).toFixed(2)}ms`)\n return data\n}\n\n// https://github.com/vitejs/vite/issues/1724#issuecomment-767619642\n// a list of modules that pretends to be ESM but still uses `require`.\n// this causes esbuild to wrap them as CJS even when its entry appears to be ESM.\nconst KNOWN_INTEROP_IDS = new Set(['moment'])\n\nfunction needsInterop(\n id: string,\n exportsData: ExportsData,\n outputs: Record,\n cacheDirOutputPath: string\n): boolean {\n if (KNOWN_INTEROP_IDS.has(id)) {\n return true\n }\n const [imports, exports] = exportsData\n // entry has no ESM syntax - likely CJS or UMD\n if (!exports.length && !imports.length) {\n return true\n }\n\n // if a peer dependency used require() on a ESM dependency, esbuild turns the\n // ESM dependency's entry chunk into a single default export... detect\n // such cases by checking exports mismatch, and force interop.\n const flatId = flattenId(id) + '.js'\n let generatedExports: string[] | undefined\n for (const output in outputs) {\n if (\n normalizePath(output) ===\n normalizePath(path.join(cacheDirOutputPath, flatId))\n ) {\n generatedExports = outputs[output].exports\n break\n }\n }\n\n if (\n !generatedExports ||\n (isSingleDefaultExport(generatedExports) && !isSingleDefaultExport(exports))\n ) {\n return true\n }\n return false\n}\n\nfunction isSingleDefaultExport(exports: readonly string[]) {\n return exports.length === 1 && exports[0] === 'default'\n}\n\nconst lockfileFormats = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml']\n\nfunction getDepHash(root: string, config: ResolvedConfig): string {\n let content = lookupFile(root, lockfileFormats) || ''\n // also take config into account\n // only a subset of config options that can affect dep optimization\n content += JSON.stringify(\n {\n mode: config.mode,\n root: config.root,\n resolve: config.resolve,\n assetsInclude: config.assetsInclude,\n plugins: config.plugins.map((p) => p.name),\n optimizeDeps: {\n include: config.optimizeDeps?.include,\n exclude: config.optimizeDeps?.exclude\n }\n },\n (_, value) => {\n if (typeof value === 'function' || value instanceof RegExp) {\n return value.toString()\n }\n return value\n }\n )\n return createHash('sha256').update(content).digest('hex').substr(0, 8)\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","import { SourceMapConsumer, RawSourceMap } from 'source-map'\nimport { ModuleGraph } from '../server/moduleGraph'\n\nlet offset: number\ntry {\n new Function('throw new Error(1)')()\n} catch (e) {\n // in Node 12, stack traces account for the function wrapper.\n // in Node 13 and later, the function wrapper adds two lines,\n // which must be subtracted to generate a valid mapping\n const match = /:(\\d+):\\d+\\)$/.exec(e.stack.split('\\n')[1])\n offset = match ? +match[1] - 1 : 0\n}\n\nexport function ssrRewriteStacktrace(\n stack: string,\n moduleGraph: ModuleGraph\n): string {\n return stack\n .split('\\n')\n .map((line) => {\n return line.replace(\n /^ {4}at (?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?)\\)?/,\n (input, varName, url, line, column) => {\n if (!url) return input\n\n const mod = moduleGraph.urlToModuleMap.get(url)\n const rawSourceMap = mod?.ssrTransformResult?.map\n\n if (!rawSourceMap) {\n return input\n }\n\n const consumer = new SourceMapConsumer(\n rawSourceMap as unknown as RawSourceMap\n )\n\n const pos = consumer.originalPositionFor({\n line: Number(line) - offset,\n column: Number(column),\n bias: SourceMapConsumer.LEAST_UPPER_BOUND\n })\n\n if (!pos.source) {\n return input\n }\n\n const source = `${pos.source}:${pos.line || 0}:${pos.column || 0}`\n if (!varName || varName === 'eval') {\n return ` at ${source}`\n } else {\n return ` at ${varName} (${source})`\n }\n }\n )\n })\n .join('\\n')\n}\n\nexport function rebindErrorStacktrace(e: Error, stacktrace: string): void {\n const { configurable, writable } = Object.getOwnPropertyDescriptor(\n e,\n 'stack'\n )!\n if (configurable) {\n Object.defineProperty(e, 'stack', {\n value: stacktrace,\n enumerable: true,\n configurable: true,\n writable: true\n })\n } else if (writable) {\n e.stack = stacktrace\n }\n}\n","import fs from 'fs'\nimport path from 'path'\nimport { pathToFileURL } from 'url'\nimport { ViteDevServer } from '..'\nimport {\n dynamicImport,\n cleanUrl,\n isBuiltin,\n resolveFrom,\n unwrapId,\n usingDynamicImport\n} from '../utils'\nimport { rebindErrorStacktrace, ssrRewriteStacktrace } from './ssrStacktrace'\nimport {\n ssrExportAllKey,\n ssrModuleExportsKey,\n ssrImportKey,\n ssrImportMetaKey,\n ssrDynamicImportKey\n} from './ssrTransform'\nimport { transformRequest } from '../server/transformRequest'\n\ninterface SSRContext {\n global: NodeJS.Global\n}\n\ntype SSRModule = Record\n\nconst pendingModules = new Map>()\nconst pendingImports = new Map()\n\nexport async function ssrLoadModule(\n url: string,\n server: ViteDevServer,\n context: SSRContext = { global },\n urlStack: string[] = []\n): Promise {\n url = unwrapId(url)\n\n // when we instantiate multiple dependency modules in parallel, they may\n // point to shared modules. We need to avoid duplicate instantiation attempts\n // by register every module as pending synchronously so that all subsequent\n // request to that module are simply waiting on the same promise.\n const pending = pendingModules.get(url)\n if (pending) {\n return pending\n }\n\n const modulePromise = instantiateModule(url, server, context, urlStack)\n pendingModules.set(url, modulePromise)\n modulePromise\n .catch(() => {\n pendingImports.delete(url)\n })\n .finally(() => {\n pendingModules.delete(url)\n })\n return modulePromise\n}\n\nasync function instantiateModule(\n url: string,\n server: ViteDevServer,\n context: SSRContext = { global },\n urlStack: string[] = []\n): Promise {\n const { moduleGraph } = server\n const mod = await moduleGraph.ensureEntryFromUrl(url)\n\n if (mod.ssrModule) {\n return mod.ssrModule\n }\n\n const result =\n mod.ssrTransformResult ||\n (await transformRequest(url, server, { ssr: true }))\n if (!result) {\n // TODO more info? is this even necessary?\n throw new Error(`failed to load module for ssr: ${url}`)\n }\n\n const ssrModule = {\n [Symbol.toStringTag]: 'Module'\n }\n Object.defineProperty(ssrModule, '__esModule', { value: true })\n\n // Tolerate circular imports by ensuring the module can be\n // referenced before it's been instantiated.\n mod.ssrModule = ssrModule\n\n const ssrImportMeta = {\n // The filesystem URL, matching native Node.js modules\n url: pathToFileURL(mod.file!).toString()\n }\n\n urlStack = urlStack.concat(url)\n const isCircular = (url: string) => urlStack.includes(url)\n\n // Since dynamic imports can happen in parallel, we need to\n // account for multiple pending deps and duplicate imports.\n const pendingDeps: string[] = []\n\n const ssrImport = async (dep: string) => {\n if (dep[0] !== '.' && dep[0] !== '/') {\n return nodeImport(dep, mod.file, server.config)\n }\n dep = unwrapId(dep)\n if (!isCircular(dep) && !pendingImports.get(dep)?.some(isCircular)) {\n pendingDeps.push(dep)\n if (pendingDeps.length === 1) {\n pendingImports.set(url, pendingDeps)\n }\n await ssrLoadModule(dep, server, context, urlStack)\n if (pendingDeps.length === 1) {\n pendingImports.delete(url)\n } else {\n pendingDeps.splice(pendingDeps.indexOf(dep), 1)\n }\n }\n return moduleGraph.urlToModuleMap.get(dep)?.ssrModule\n }\n\n const ssrDynamicImport = (dep: string) => {\n // #3087 dynamic import vars is ignored at rewrite import path,\n // so here need process relative path\n if (dep[0] === '.') {\n dep = path.posix.resolve(path.dirname(url), dep)\n }\n return ssrImport(dep)\n }\n\n function ssrExportAll(sourceModule: any) {\n for (const key in sourceModule) {\n if (key !== 'default') {\n Object.defineProperty(ssrModule, key, {\n enumerable: true,\n configurable: true,\n get() {\n return sourceModule[key]\n }\n })\n }\n }\n }\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const AsyncFunction = async function () {}.constructor as typeof Function\n const initModule = new AsyncFunction(\n `global`,\n ssrModuleExportsKey,\n ssrImportMetaKey,\n ssrImportKey,\n ssrDynamicImportKey,\n ssrExportAllKey,\n result.code + `\\n//# sourceURL=${mod.url}`\n )\n await initModule(\n context.global,\n ssrModule,\n ssrImportMeta,\n ssrImport,\n ssrDynamicImport,\n ssrExportAll\n )\n } catch (e) {\n const stacktrace = ssrRewriteStacktrace(e.stack, moduleGraph)\n rebindErrorStacktrace(e, stacktrace)\n server.config.logger.error(\n `Error when evaluating SSR module ${url}:\\n${stacktrace}`,\n {\n timestamp: true,\n clear: server.config.clearScreen,\n error: e\n }\n )\n throw e\n }\n\n return Object.freeze(ssrModule)\n}\n\n// In node@12+ we can use dynamic import to load CJS and ESM\nasync function nodeImport(\n id: string,\n importer: string | null,\n config: ViteDevServer['config']\n) {\n let url: string\n // `resolve` doesn't handle `node:` builtins, so handle them directly\n if (id.startsWith('node:') || isBuiltin(id)) {\n url = id\n } else {\n url = resolve(id, importer, config.root, !!config.resolve.preserveSymlinks)\n if (usingDynamicImport) {\n url = pathToFileURL(url).toString()\n }\n }\n const mod = await dynamicImport(url)\n return proxyESM(id, mod)\n}\n\n// rollup-style default import interop for cjs\nfunction proxyESM(id: string, mod: any) {\n const defaultExport = mod.__esModule\n ? mod.default\n : mod.default\n ? mod.default\n : mod\n return new Proxy(mod, {\n get(mod, prop) {\n if (prop === 'default') return defaultExport\n return mod[prop]\n }\n })\n}\n\nconst resolveCache = new Map()\n\nfunction resolve(\n id: string,\n importer: string | null,\n root: string,\n preserveSymlinks: boolean\n) {\n const key = id + importer + root\n const cached = resolveCache.get(key)\n if (cached) {\n return cached\n }\n const resolveDir =\n importer && fs.existsSync(cleanUrl(importer))\n ? path.dirname(importer)\n : root\n const resolved = resolveFrom(id, resolveDir, preserveSymlinks, true)\n resolveCache.set(key, resolved)\n return resolved\n}\n","import chalk from 'chalk'\nimport { optimizeDeps } from '.'\nimport { ViteDevServer } from '..'\nimport { resolveSSRExternal } from '../ssr/ssrExternal'\n\n/**\n * The amount to wait for requests to register newly found dependencies before triggering\n * a re-bundle + page reload\n */\nconst debounceMs = 100\n\nexport function createMissingImporterRegisterFn(\n server: ViteDevServer\n): (id: string, resolved: string, ssr?: boolean) => void {\n const { logger } = server.config\n let knownOptimized = server._optimizeDepsMetadata!.optimized\n let currentMissing: Record = {}\n let handle: NodeJS.Timeout\n\n let pendingResolve: (() => void) | null = null\n\n async function rerun(ssr: boolean | undefined) {\n const newDeps = currentMissing\n currentMissing = {}\n\n logger.info(\n chalk.yellow(\n `new dependencies found: ${Object.keys(newDeps).join(\n ', '\n )}, updating...`\n ),\n {\n timestamp: true\n }\n )\n\n for (const id in knownOptimized) {\n newDeps[id] = knownOptimized[id].src\n }\n\n try {\n // Nullify previous metadata so that the resolver won't\n // resolve to optimized files during the optimizer re-run\n server._isRunningOptimizer = true\n server._optimizeDepsMetadata = null\n\n const newData = (server._optimizeDepsMetadata = await optimizeDeps(\n server.config,\n true,\n false,\n newDeps,\n ssr\n ))\n knownOptimized = newData!.optimized\n\n // update ssr externals\n server._ssrExternals = resolveSSRExternal(\n server.config,\n Object.keys(knownOptimized)\n )\n\n logger.info(\n chalk.greenBright(`✨ dependencies updated, reloading page...`),\n { timestamp: true }\n )\n } catch (e) {\n logger.error(\n chalk.red(`error while updating dependencies:\\n${e.stack}`),\n { timestamp: true, error: e }\n )\n } finally {\n server._isRunningOptimizer = false\n pendingResolve && pendingResolve()\n server._pendingReload = pendingResolve = null\n }\n\n // Cached transform results have stale imports (resolved to\n // old locations) so they need to be invalidated before the page is\n // reloaded.\n server.moduleGraph.invalidateAll()\n\n server.ws.send({\n type: 'full-reload',\n path: '*'\n })\n }\n\n return function registerMissingImport(\n id: string,\n resolved: string,\n ssr?: boolean\n ) {\n if (!knownOptimized[id]) {\n currentMissing[id] = resolved\n if (handle) clearTimeout(handle)\n handle = setTimeout(() => rerun(ssr), debounceMs)\n server._pendingReload = new Promise((r) => {\n pendingResolve = r\n })\n }\n }\n}\n","import fs from 'fs'\nimport { dirname } from 'path'\nimport { join } from 'path'\n\n// https://github.com/vitejs/vite/issues/2820#issuecomment-812495079\nconst ROOT_FILES = [\n // '.git',\n\n // https://pnpm.js.org/workspaces/\n 'pnpm-workspace.yaml'\n\n // https://rushjs.io/pages/advanced/config_files/\n // 'rush.json',\n\n // https://nx.dev/latest/react/getting-started/nx-setup\n // 'workspace.json',\n // 'nx.json'\n]\n\n// npm: https://docs.npmjs.com/cli/v7/using-npm/workspaces#installing-workspaces\n// yarn: https://classic.yarnpkg.com/en/docs/workspaces/#toc-how-to-use-it\nfunction hasWorkspacePackageJSON(root: string): boolean {\n const path = join(root, 'package.json')\n try {\n fs.accessSync(path, fs.constants.R_OK)\n } catch {\n return false\n }\n const content = JSON.parse(fs.readFileSync(path, 'utf-8')) || {}\n return !!content.workspaces\n}\n\nfunction hasRootFile(root: string): boolean {\n return ROOT_FILES.some((file) => fs.existsSync(join(root, file)))\n}\n\nfunction hasPackageJSON(root: string) {\n const path = join(root, 'package.json')\n return fs.existsSync(path)\n}\n\n/**\n * Search up for the nearest `package.json`\n */\nexport function searchForPackageRoot(current: string, root = current): string {\n if (hasPackageJSON(current)) return current\n\n const dir = dirname(current)\n // reach the fs root\n if (!dir || dir === current) return root\n\n return searchForPackageRoot(dir, root)\n}\n\n/**\n * Search up for the nearest workspace root\n */\nexport function searchForWorkspaceRoot(\n current: string,\n root = searchForPackageRoot(current)\n): string {\n if (hasRootFile(current)) return current\n if (hasWorkspacePackageJSON(current)) return current\n\n const dir = dirname(current)\n // reach the fs root\n if (!dir || dir === current) return root\n\n return searchForWorkspaceRoot(dir, root)\n}\n","import fs from 'fs'\nimport path from 'path'\nimport * as net from 'net'\nimport * as http from 'http'\nimport * as https from 'https'\nimport connect from 'connect'\nimport corsMiddleware from 'cors'\nimport chalk from 'chalk'\nimport { AddressInfo } from 'net'\nimport chokidar from 'chokidar'\nimport { resolveHttpsConfig, resolveHttpServer, httpServerStart } from './http'\nimport { resolveConfig, InlineConfig, ResolvedConfig } from '../config'\nimport { createPluginContainer, PluginContainer } from './pluginContainer'\nimport { FSWatcher, WatchOptions } from 'types/chokidar'\nimport { createWebSocketServer, WebSocketServer } from './ws'\nimport { baseMiddleware } from './middlewares/base'\nimport { proxyMiddleware, ProxyOptions } from './middlewares/proxy'\nimport { spaFallbackMiddleware } from './middlewares/spaFallback'\nimport { transformMiddleware } from './middlewares/transform'\nimport {\n createDevHtmlTransformFn,\n indexHtmlMiddleware\n} from './middlewares/indexHtml'\nimport {\n serveRawFsMiddleware,\n servePublicMiddleware,\n serveStaticMiddleware\n} from './middlewares/static'\nimport { timeMiddleware } from './middlewares/time'\nimport { ModuleGraph, ModuleNode } from './moduleGraph'\nimport { Connect } from 'types/connect'\nimport { ensureLeadingSlash, normalizePath } from '../utils'\nimport { errorMiddleware, prepareError } from './middlewares/error'\nimport { handleHMRUpdate, HmrOptions, handleFileAddUnlink } from './hmr'\nimport { openBrowser } from './openBrowser'\nimport launchEditorMiddleware from 'launch-editor-middleware'\nimport {\n TransformOptions,\n TransformResult,\n transformRequest\n} from './transformRequest'\nimport {\n transformWithEsbuild,\n ESBuildTransformResult\n} from '../plugins/esbuild'\nimport { TransformOptions as EsbuildTransformOptions } from 'esbuild'\nimport { DepOptimizationMetadata, optimizeDeps } from '../optimizer'\nimport { ssrLoadModule } from '../ssr/ssrModuleLoader'\nimport { resolveSSRExternal } from '../ssr/ssrExternal'\nimport {\n rebindErrorStacktrace,\n ssrRewriteStacktrace\n} from '../ssr/ssrStacktrace'\nimport { createMissingImporterRegisterFn } from '../optimizer/registerMissing'\nimport { resolveHostname } from '../utils'\nimport { searchForWorkspaceRoot } from './searchRoot'\nimport { CLIENT_DIR } from '../constants'\nimport { printHttpServerUrls } from '../logger'\n\nexport { searchForWorkspaceRoot } from './searchRoot'\n\nexport interface ServerOptions {\n host?: string | boolean\n port?: number\n /**\n * Enable TLS + HTTP/2.\n * Note: this downgrades to TLS only when the proxy option is also used.\n */\n https?: boolean | https.ServerOptions\n /**\n * Open browser window on startup\n */\n open?: boolean | string\n /**\n * Force dep pre-optimization regardless of whether deps have changed.\n */\n force?: boolean\n /**\n * Configure HMR-specific options (port, host, path & protocol)\n */\n hmr?: HmrOptions | boolean\n /**\n * chokidar watch options\n * https://github.com/paulmillr/chokidar#api\n */\n watch?: WatchOptions\n /**\n * Configure custom proxy rules for the dev server. Expects an object\n * of `{ key: options }` pairs.\n * Uses [`http-proxy`](https://github.com/http-party/node-http-proxy).\n * Full options [here](https://github.com/http-party/node-http-proxy#options).\n *\n * Example `vite.config.js`:\n * ``` js\n * module.exports = {\n * proxy: {\n * // string shorthand\n * '/foo': 'http://localhost:4567/foo',\n * // with options\n * '/api': {\n * target: 'http://jsonplaceholder.typicode.com',\n * changeOrigin: true,\n * rewrite: path => path.replace(/^\\/api/, '')\n * }\n * }\n * }\n * ```\n */\n proxy?: Record\n /**\n * Configure CORS for the dev server.\n * Uses https://github.com/expressjs/cors.\n * Set to `true` to allow all methods from any origin, or configure separately\n * using an object.\n */\n cors?: CorsOptions | boolean\n /**\n * If enabled, vite will exit if specified port is already in use\n */\n strictPort?: boolean\n /**\n * Create Vite dev server to be used as a middleware in an existing server\n */\n middlewareMode?: boolean | 'html' | 'ssr'\n /**\n * Prepend this folder to http requests, for use when proxying vite as a subfolder\n * Should start and end with the `/` character\n */\n base?: string\n /**\n * Options for files served via '/\\@fs/'.\n */\n fs?: FileSystemServeOptions\n /**\n * Origin for the generated asset URLs.\n */\n origin?: string\n}\n\nexport interface ResolvedServerOptions extends ServerOptions {\n fs: Required\n}\n\nexport interface FileSystemServeOptions {\n /**\n * Strictly restrict file accessing outside of allowing paths.\n *\n * Set to `false` to disable the warning\n * Default to false at this moment, will enabled by default in the future versions.\n *\n * @experimental\n * @default undefined\n */\n strict?: boolean | undefined\n\n /**\n * Restrict accessing files outside the allowed directories.\n *\n * Accepts absolute path or a path relative to project root.\n * Will try to search up for workspace root by default.\n *\n * @experimental\n */\n allow?: string[]\n}\n\n/**\n * https://github.com/expressjs/cors#configuration-options\n */\nexport interface CorsOptions {\n origin?:\n | CorsOrigin\n | ((origin: string, cb: (err: Error, origins: CorsOrigin) => void) => void)\n methods?: string | string[]\n allowedHeaders?: string | string[]\n exposedHeaders?: string | string[]\n credentials?: boolean\n maxAge?: number\n preflightContinue?: boolean\n optionsSuccessStatus?: number\n}\n\nexport type CorsOrigin = boolean | string | RegExp | (string | RegExp)[]\n\nexport type ServerHook = (\n server: ViteDevServer\n) => (() => void) | void | Promise<(() => void) | void>\n\nexport interface ViteDevServer {\n /**\n * The resolved vite config object\n */\n config: ResolvedConfig\n /**\n * A connect app instance.\n * - Can be used to attach custom middlewares to the dev server.\n * - Can also be used as the handler function of a custom http server\n * or as a middleware in any connect-style Node.js frameworks\n *\n * https://github.com/senchalabs/connect#use-middleware\n */\n middlewares: Connect.Server\n /**\n * @deprecated use `server.middlewares` instead\n */\n app: Connect.Server\n /**\n * native Node http server instance\n * will be null in middleware mode\n */\n httpServer: http.Server | null\n /**\n * chokidar watcher instance\n * https://github.com/paulmillr/chokidar#api\n */\n watcher: FSWatcher\n /**\n * web socket server with `send(payload)` method\n */\n ws: WebSocketServer\n /**\n * Rollup plugin container that can run plugin hooks on a given file\n */\n pluginContainer: PluginContainer\n /**\n * Module graph that tracks the import relationships, url to file mapping\n * and hmr state.\n */\n moduleGraph: ModuleGraph\n /**\n * Programmatically resolve, load and transform a URL and get the result\n * without going through the http request pipeline.\n */\n transformRequest(\n url: string,\n options?: TransformOptions\n ): Promise\n /**\n * Apply vite built-in HTML transforms and any plugin HTML transforms.\n */\n transformIndexHtml(\n url: string,\n html: string,\n originalUrl?: string\n ): Promise\n /**\n * Util for transforming a file with esbuild.\n * Can be useful for certain plugins.\n *\n * @deprecated import `transformWithEsbuild` from `vite` instead\n */\n transformWithEsbuild(\n code: string,\n filename: string,\n options?: EsbuildTransformOptions,\n inMap?: object\n ): Promise\n /**\n * Load a given URL as an instantiated module for SSR.\n */\n ssrLoadModule(url: string): Promise>\n /**\n * Fix ssr error stacktrace\n */\n ssrFixStacktrace(e: Error): void\n /**\n * Start the server.\n */\n listen(port?: number, isRestart?: boolean): Promise\n /**\n * Stop the server.\n */\n close(): Promise\n /**\n * Print server urls\n */\n printUrls(): void\n /**\n * @internal\n */\n _optimizeDepsMetadata: DepOptimizationMetadata | null\n /**\n * Deps that are externalized\n * @internal\n */\n _ssrExternals: string[] | null\n /**\n * @internal\n */\n _globImporters: Record<\n string,\n {\n module: ModuleNode\n importGlobs: {\n base: string\n pattern: string\n }[]\n }\n >\n /**\n * @internal\n */\n _isRunningOptimizer: boolean\n /**\n * @internal\n */\n _registerMissingImport:\n | ((id: string, resolved: string, ssr: boolean | undefined) => void)\n | null\n /**\n * @internal\n */\n _pendingReload: Promise | null\n /**\n * @internal\n */\n _pendingRequests: Record | null>\n}\n\nexport async function createServer(\n inlineConfig: InlineConfig = {}\n): Promise {\n const config = await resolveConfig(inlineConfig, 'serve', 'development')\n const root = config.root\n const serverConfig = config.server\n const httpsOptions = await resolveHttpsConfig(config)\n let { middlewareMode } = serverConfig\n if (middlewareMode === true) {\n middlewareMode = 'ssr'\n }\n\n const middlewares = connect() as Connect.Server\n const httpServer = middlewareMode\n ? null\n : await resolveHttpServer(serverConfig, middlewares, httpsOptions)\n const ws = createWebSocketServer(httpServer, config, httpsOptions)\n\n const { ignored = [], ...watchOptions } = serverConfig.watch || {}\n const watcher = chokidar.watch(path.resolve(root), {\n ignored: [\n '**/node_modules/**',\n '**/.git/**',\n ...(Array.isArray(ignored) ? ignored : [ignored])\n ],\n ignoreInitial: true,\n ignorePermissionErrors: true,\n disableGlobbing: true,\n ...watchOptions\n }) as FSWatcher\n\n const plugins = config.plugins\n const container = await createPluginContainer(config, watcher)\n const moduleGraph = new ModuleGraph(container)\n const closeHttpServer = createServerCloseFn(httpServer)\n\n // eslint-disable-next-line prefer-const\n let exitProcess: () => void\n\n const server: ViteDevServer = {\n config,\n middlewares,\n get app() {\n config.logger.warn(\n `ViteDevServer.app is deprecated. Use ViteDevServer.middlewares instead.`\n )\n return middlewares\n },\n httpServer,\n watcher,\n pluginContainer: container,\n ws,\n moduleGraph,\n transformWithEsbuild,\n transformRequest(url, options) {\n return transformRequest(url, server, options)\n },\n transformIndexHtml: null!, // to be immediately set\n ssrLoadModule(url) {\n if (!server._ssrExternals) {\n server._ssrExternals = resolveSSRExternal(\n config,\n server._optimizeDepsMetadata\n ? Object.keys(server._optimizeDepsMetadata.optimized)\n : []\n )\n }\n return ssrLoadModule(url, server)\n },\n ssrFixStacktrace(e) {\n if (e.stack) {\n const stacktrace = ssrRewriteStacktrace(e.stack, moduleGraph)\n rebindErrorStacktrace(e, stacktrace)\n }\n },\n listen(port?: number, isRestart?: boolean) {\n return startServer(server, port, isRestart)\n },\n async close() {\n process.off('SIGTERM', exitProcess)\n\n if (!middlewareMode && process.env.CI !== 'true') {\n process.stdin.off('end', exitProcess)\n }\n\n await Promise.all([\n watcher.close(),\n ws.close(),\n container.close(),\n closeHttpServer()\n ])\n },\n printUrls() {\n if (httpServer) {\n printHttpServerUrls(httpServer, config)\n } else {\n throw new Error('cannot print server URLs in middleware mode.')\n }\n },\n _optimizeDepsMetadata: null,\n _ssrExternals: null,\n _globImporters: Object.create(null),\n _isRunningOptimizer: false,\n _registerMissingImport: null,\n _pendingReload: null,\n _pendingRequests: Object.create(null)\n }\n\n server.transformIndexHtml = createDevHtmlTransformFn(server)\n\n exitProcess = async () => {\n try {\n await server.close()\n } finally {\n process.exit(0)\n }\n }\n\n process.once('SIGTERM', exitProcess)\n\n if (!middlewareMode && process.env.CI !== 'true') {\n process.stdin.on('end', exitProcess)\n }\n\n watcher.on('change', async (file) => {\n file = normalizePath(file)\n // invalidate module graph cache on file change\n moduleGraph.onFileChange(file)\n if (serverConfig.hmr !== false) {\n try {\n await handleHMRUpdate(file, server)\n } catch (err) {\n ws.send({\n type: 'error',\n err: prepareError(err)\n })\n }\n }\n })\n\n watcher.on('add', (file) => {\n handleFileAddUnlink(normalizePath(file), server)\n })\n\n watcher.on('unlink', (file) => {\n handleFileAddUnlink(normalizePath(file), server, true)\n })\n\n if (!middlewareMode && httpServer) {\n httpServer.once('listening', () => {\n // update actual port since this may be different from initial value\n serverConfig.port = (httpServer.address() as AddressInfo).port\n })\n }\n\n // apply server configuration hooks from plugins\n const postHooks: ((() => void) | void)[] = []\n for (const plugin of plugins) {\n if (plugin.configureServer) {\n postHooks.push(await plugin.configureServer(server))\n }\n }\n\n // Internal middlewares ------------------------------------------------------\n\n // request timer\n if (process.env.DEBUG) {\n middlewares.use(timeMiddleware(root))\n }\n\n // cors (enabled by default)\n const { cors } = serverConfig\n if (cors !== false) {\n middlewares.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors))\n }\n\n // proxy\n const { proxy } = serverConfig\n if (proxy) {\n middlewares.use(proxyMiddleware(httpServer, config))\n }\n\n // base\n if (config.base !== '/') {\n middlewares.use(baseMiddleware(server))\n }\n\n // open in editor support\n middlewares.use('/__open-in-editor', launchEditorMiddleware())\n\n // hmr reconnect ping\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n middlewares.use('/__vite_ping', function viteHMRPingMiddleware(_, res) {\n res.end('pong')\n })\n\n // serve static files under /public\n // this applies before the transform middleware so that these files are served\n // as-is without transforms.\n if (config.publicDir) {\n middlewares.use(servePublicMiddleware(config.publicDir))\n }\n\n // main transform middleware\n middlewares.use(transformMiddleware(server))\n\n // serve static files\n middlewares.use(serveRawFsMiddleware(server))\n middlewares.use(serveStaticMiddleware(root, config))\n\n // spa fallback\n if (!middlewareMode || middlewareMode === 'html') {\n middlewares.use(spaFallbackMiddleware(root))\n }\n\n // run post config hooks\n // This is applied before the html middleware so that user middleware can\n // serve custom content instead of index.html.\n postHooks.forEach((fn) => fn && fn())\n\n if (!middlewareMode || middlewareMode === 'html') {\n // transform index.html\n middlewares.use(indexHtmlMiddleware(server))\n // handle 404s\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n middlewares.use(function vite404Middleware(_, res) {\n res.statusCode = 404\n res.end()\n })\n }\n\n // error handler\n middlewares.use(errorMiddleware(server, !!middlewareMode))\n\n const runOptimize = async () => {\n if (config.cacheDir) {\n server._isRunningOptimizer = true\n try {\n server._optimizeDepsMetadata = await optimizeDeps(config)\n } finally {\n server._isRunningOptimizer = false\n }\n server._registerMissingImport = createMissingImporterRegisterFn(server)\n }\n }\n\n if (!middlewareMode && httpServer) {\n let isOptimized = false\n // overwrite listen to run optimizer before server start\n const listen = httpServer.listen.bind(httpServer)\n httpServer.listen = (async (port: number, ...args: any[]) => {\n if (!isOptimized) {\n try {\n await container.buildStart({})\n await runOptimize()\n isOptimized = true\n } catch (e) {\n httpServer.emit('error', e)\n return\n }\n }\n return listen(port, ...args)\n }) as any\n } else {\n await container.buildStart({})\n await runOptimize()\n }\n\n return server\n}\n\nasync function startServer(\n server: ViteDevServer,\n inlinePort?: number,\n isRestart: boolean = false\n): Promise {\n const httpServer = server.httpServer\n if (!httpServer) {\n throw new Error('Cannot call server.listen in middleware mode.')\n }\n\n const options = server.config.server\n const port = inlinePort || options.port || 3000\n const hostname = resolveHostname(options.host)\n\n const protocol = options.https ? 'https' : 'http'\n const info = server.config.logger.info\n const base = server.config.base\n\n const serverPort = await httpServerStart(httpServer, {\n port,\n strictPort: options.strictPort,\n host: hostname.host,\n logger: server.config.logger\n })\n\n // @ts-ignore\n const profileSession = global.__vite_profile_session\n if (profileSession) {\n profileSession.post('Profiler.stop', (err: any, { profile }: any) => {\n // Write profile to disk, upload, etc.\n if (!err) {\n const outPath = path.resolve('./vite-profile.cpuprofile')\n fs.writeFileSync(outPath, JSON.stringify(profile))\n info(\n chalk.yellow(` CPU profile written to ${chalk.white.dim(outPath)}\\n`)\n )\n } else {\n throw err\n }\n })\n }\n\n if (options.open && !isRestart) {\n const path = typeof options.open === 'string' ? options.open : base\n openBrowser(\n path.startsWith('http')\n ? path\n : `${protocol}://${hostname.name}:${serverPort}${path}`,\n true,\n server.config.logger\n )\n }\n\n return server\n}\n\nfunction createServerCloseFn(server: http.Server | null) {\n if (!server) {\n return () => {}\n }\n\n let hasListened = false\n const openSockets = new Set()\n\n server.on('connection', (socket) => {\n openSockets.add(socket)\n socket.on('close', () => {\n openSockets.delete(socket)\n })\n })\n\n server.once('listening', () => {\n hasListened = true\n })\n\n return () =>\n new Promise((resolve, reject) => {\n openSockets.forEach((s) => s.destroy())\n if (hasListened) {\n server.close((err) => {\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n } else {\n resolve()\n }\n })\n}\n\nfunction resolvedAllowDir(root: string, dir: string): string {\n return ensureLeadingSlash(normalizePath(path.resolve(root, dir)))\n}\n\nexport function resolveServerOptions(\n root: string,\n raw?: ServerOptions\n): ResolvedServerOptions {\n const server = raw || {}\n let allowDirs = server.fs?.allow\n\n if (!allowDirs) {\n allowDirs = [searchForWorkspaceRoot(root)]\n }\n\n allowDirs = allowDirs.map((i) => resolvedAllowDir(root, i))\n\n // only push client dir when vite itself is outside-of-root\n const resolvedClientDir = resolvedAllowDir(root, CLIENT_DIR)\n if (!allowDirs.some((i) => resolvedClientDir.startsWith(i))) {\n allowDirs.push(resolvedClientDir)\n }\n\n server.fs = {\n // TODO: make strict by default\n strict: server.fs?.strict,\n allow: allowDirs\n }\n return server as ResolvedServerOptions\n}\n","const noop = () => null;\nfunction matches(pattern, importee) {\n if (pattern instanceof RegExp) {\n return pattern.test(importee);\n }\n if (importee.length < pattern.length) {\n return false;\n }\n if (importee === pattern) {\n return true;\n }\n const importeeStartsWithKey = importee.indexOf(pattern) === 0;\n const importeeHasSlashAfterKey = importee.substring(pattern.length)[0] === '/';\n return importeeStartsWithKey && importeeHasSlashAfterKey;\n}\nfunction normalizeId(id) {\n return id;\n}\nfunction getEntries({ entries }) {\n if (!entries) {\n return [];\n }\n if (Array.isArray(entries)) {\n return entries;\n }\n return Object.entries(entries).map(([key, value]) => {\n return { find: key, replacement: value };\n });\n}\nfunction getCustomResolver({ customResolver }, options) {\n if (typeof customResolver === 'function') {\n return customResolver;\n }\n if (customResolver && typeof customResolver.resolveId === 'function') {\n return customResolver.resolveId;\n }\n if (typeof options.customResolver === 'function') {\n return options.customResolver;\n }\n if (options.customResolver && typeof options.customResolver.resolveId === 'function') {\n return options.customResolver.resolveId;\n }\n return null;\n}\nfunction alias(options = {}) {\n const entries = getEntries(options);\n if (entries.length === 0) {\n return {\n name: 'alias',\n resolveId: noop\n };\n }\n return {\n name: 'alias',\n buildStart(inputOptions) {\n return Promise.all([...entries, options].map(({ customResolver }) => customResolver &&\n typeof customResolver === 'object' &&\n typeof customResolver.buildStart === 'function' &&\n customResolver.buildStart.call(this, inputOptions))).then(() => {\n // enforce void return value\n });\n },\n resolveId(importee, importer) {\n const importeeId = normalizeId(importee);\n const importerId = normalizeId(importer);\n // First match is supposed to be the correct one\n const matchedEntry = entries.find((entry) => matches(entry.find, importeeId));\n if (!matchedEntry || !importerId) {\n return null;\n }\n const updatedId = normalizeId(importeeId.replace(matchedEntry.find, matchedEntry.replacement));\n const customResolver = getCustomResolver(matchedEntry, options);\n if (customResolver) {\n return customResolver.call(this, updatedId, importerId, {});\n }\n return this.resolve(updatedId, importer, { skipSelf: true }).then((resolved) => {\n let finalResult = resolved;\n if (!finalResult) {\n finalResult = { id: updatedId };\n }\n return finalResult;\n });\n }\n };\n}\n\nexport default alias;\n","/**\n * https://github.com/rollup/plugins/blob/master/packages/json/src/index.js\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file at\n * https://github.com/rollup/plugins/blob/master/LICENSE\n */\n\nimport { dataToEsm } from '@rollup/pluginutils'\nimport { Plugin } from 'rollup'\nimport { SPECIAL_QUERY_RE } from '../constants'\n\nexport interface JsonOptions {\n /**\n * Generate a named export for every property of the JSON object\n * @default true\n */\n namedExports?: boolean\n /**\n * Generate performant output as JSON.parse(\"stringified\").\n * Enabling this will disable namedExports.\n * @default false\n */\n stringify?: boolean\n}\n\n// Custom json filter for vite\nconst jsonExtRE = /\\.json($|\\?)(?!commonjs-(proxy|external))/\n\nexport function jsonPlugin(\n options: JsonOptions = {},\n isBuild: boolean\n): Plugin {\n return {\n name: 'vite:json',\n\n transform(json, id) {\n if (!jsonExtRE.test(id)) return null\n if (SPECIAL_QUERY_RE.test(id)) return null\n\n try {\n if (options.stringify) {\n if (isBuild) {\n return {\n // during build, parse then double-stringify to remove all\n // unnecessary whitespaces to reduce bundle size.\n code: `export default JSON.parse(${JSON.stringify(\n JSON.stringify(JSON.parse(json))\n )})`,\n map: { mappings: '' }\n }\n } else {\n return `export default JSON.parse(${JSON.stringify(json)})`\n }\n }\n\n const parsed = JSON.parse(json)\n return {\n code: dataToEsm(parsed, {\n preferConst: true,\n namedExports: options.namedExports\n }),\n map: { mappings: '' }\n }\n } catch (e) {\n const errorMessageList = /[\\d]+/.exec(e.message)\n const position = errorMessageList && parseInt(errorMessageList[0], 10)\n const msg = position\n ? `, invalid JSON syntax found at line ${position}`\n : `.`\n this.error(`Failed to parse JSON file` + msg, e.idx)\n }\n }\n }\n}\n","import fs from 'fs'\nimport path from 'path'\nimport { Plugin } from '../plugin'\nimport { ResolvedConfig } from '../config'\nimport chalk from 'chalk'\nimport MagicString from 'magic-string'\nimport { init, parse as parseImports, ImportSpecifier } from 'es-module-lexer'\nimport { isCSSRequest, isDirectCSSRequest } from './css'\nimport {\n isBuiltin,\n cleanUrl,\n createDebugger,\n generateCodeFrame,\n injectQuery,\n isDataUrl,\n isExternalUrl,\n isJSRequest,\n prettifyUrl,\n timeFrom,\n normalizePath,\n removeImportQuery,\n unwrapId\n} from '../utils'\nimport {\n debugHmr,\n handlePrunedModules,\n lexAcceptedHmrDeps\n} from '../server/hmr'\nimport {\n FS_PREFIX,\n CLIENT_DIR,\n CLIENT_PUBLIC_PATH,\n DEP_VERSION_RE,\n VALID_ID_PREFIX,\n NULL_BYTE_PLACEHOLDER\n} from '../constants'\nimport { ViteDevServer } from '..'\nimport { checkPublicFile } from './asset'\nimport { parse as parseJS } from 'acorn'\nimport type { Node } from 'estree'\nimport { transformImportGlob } from '../importGlob'\nimport { makeLegalIdentifier } from '@rollup/pluginutils'\nimport { shouldExternalizeForSSR } from '../ssr/ssrExternal'\nimport { performance } from 'perf_hooks'\nimport { transformRequest } from '../server/transformRequest'\n\nconst isDebug = !!process.env.DEBUG\nconst debug = createDebugger('vite:import-analysis')\n\nconst clientDir = normalizePath(CLIENT_DIR)\n\nconst skipRE = /\\.(map|json)$/\nconst canSkip = (id: string) => skipRE.test(id) || isDirectCSSRequest(id)\n\nfunction isExplicitImportRequired(url: string) {\n return !isJSRequest(cleanUrl(url)) && !isCSSRequest(url)\n}\n\nfunction markExplicitImport(url: string) {\n if (isExplicitImportRequired(url)) {\n return injectQuery(url, 'import')\n }\n return url\n}\n\n/**\n * Server-only plugin that lexes, resolves, rewrites and analyzes url imports.\n *\n * - Imports are resolved to ensure they exist on disk\n *\n * - Lexes HMR accept calls and updates import relationships in the module graph\n *\n * - Bare module imports are resolved (by @rollup-plugin/node-resolve) to\n * absolute file paths, e.g.\n *\n * ```js\n * import 'foo'\n * ```\n * is rewritten to\n * ```js\n * import '/@fs//project/node_modules/foo/dist/foo.js'\n * ```\n *\n * - CSS imports are appended with `.js` since both the js module and the actual\n * css (referenced via ) may go through the transform pipeline:\n *\n * ```js\n * import './style.css'\n * ```\n * is rewritten to\n * ```js\n * import './style.css.js'\n * ```\n */\nexport function importAnalysisPlugin(config: ResolvedConfig): Plugin {\n const { root, base } = config\n const clientPublicPath = path.posix.join(base, CLIENT_PUBLIC_PATH)\n\n let server: ViteDevServer\n\n return {\n name: 'vite:import-analysis',\n\n configureServer(_server) {\n server = _server\n },\n\n async transform(source, importer, ssr) {\n const prettyImporter = prettifyUrl(importer, root)\n\n if (canSkip(importer)) {\n isDebug && debug(chalk.dim(`[skipped] ${prettyImporter}`))\n return null\n }\n\n const start = performance.now()\n await init\n let imports: readonly ImportSpecifier[] = []\n // strip UTF-8 BOM\n if (source.charCodeAt(0) === 0xfeff) {\n source = source.slice(1)\n }\n try {\n imports = parseImports(source)[0]\n } catch (e: any) {\n const isVue = importer.endsWith('.vue')\n const maybeJSX = !isVue && isJSRequest(importer)\n\n const msg = isVue\n ? `Install @vitejs/plugin-vue to handle .vue files.`\n : maybeJSX\n ? `If you are using JSX, make sure to name the file with the .jsx or .tsx extension.`\n : `You may need to install appropriate plugins to handle the ${path.extname(\n importer\n )} file format.`\n\n this.error(\n `Failed to parse source for import analysis because the content ` +\n `contains invalid JS syntax. ` +\n msg,\n e.idx\n )\n }\n\n if (!imports.length) {\n isDebug &&\n debug(\n `${timeFrom(start)} ${chalk.dim(`[no imports] ${prettyImporter}`)}`\n )\n return source\n }\n\n let hasHMR = false\n let isSelfAccepting = false\n let hasEnv = false\n let needQueryInjectHelper = false\n let s: MagicString | undefined\n const str = () => s || (s = new MagicString(source))\n // vite-only server context\n const { moduleGraph } = server\n // since we are already in the transform phase of the importer, it must\n // have been loaded so its entry is guaranteed in the module graph.\n const importerModule = moduleGraph.getModuleById(importer)!\n const importedUrls = new Set()\n const staticImportedUrls = new Set()\n const acceptedUrls = new Set<{\n url: string\n start: number\n end: number\n }>()\n const toAbsoluteUrl = (url: string) =>\n path.posix.resolve(path.posix.dirname(importerModule.url), url)\n\n const normalizeUrl = async (\n url: string,\n pos: number\n ): Promise<[string, string]> => {\n if (base !== '/' && url.startsWith(base)) {\n url = url.replace(base, '/')\n }\n\n const resolved = await this.resolve(url, importer)\n\n if (!resolved) {\n this.error(\n `Failed to resolve import \"${url}\" from \"${path.relative(\n process.cwd(),\n importer\n )}\". Does the file exist?`,\n pos\n )\n }\n\n const isRelative = url.startsWith('.')\n const isSelfImport = !isRelative && cleanUrl(url) === cleanUrl(importer)\n\n // normalize all imports into resolved URLs\n // e.g. `import 'foo'` -> `import '/@fs/.../node_modules/foo/index.js`\n if (resolved.id.startsWith(root + '/')) {\n // in root: infer short absolute path from root\n url = resolved.id.slice(root.length)\n } else if (fs.existsSync(cleanUrl(resolved.id))) {\n // exists but out of root: rewrite to absolute /@fs/ paths\n url = path.posix.join(FS_PREFIX + resolved.id)\n } else {\n url = resolved.id\n }\n\n if (isExternalUrl(url)) {\n return [url, url]\n }\n\n // if the resolved id is not a valid browser import specifier,\n // prefix it to make it valid. We will strip this before feeding it\n // back into the transform pipeline\n if (!url.startsWith('.') && !url.startsWith('/')) {\n url =\n VALID_ID_PREFIX + resolved.id.replace('\\0', NULL_BYTE_PLACEHOLDER)\n }\n\n // make the URL browser-valid if not SSR\n if (!ssr) {\n // mark non-js/css imports with `?import`\n url = markExplicitImport(url)\n\n // for relative js/css imports, or self-module virtual imports\n // (e.g. vue blocks), inherit importer's version query\n // do not do this for unknown type imports, otherwise the appended\n // query can break 3rd party plugin's extension checks.\n if ((isRelative || isSelfImport) && !/[\\?&]import=?\\b/.test(url)) {\n const versionMatch = importer.match(DEP_VERSION_RE)\n if (versionMatch) {\n url = injectQuery(url, versionMatch[1])\n }\n }\n\n // check if the dep has been hmr updated. If yes, we need to attach\n // its last updated timestamp to force the browser to fetch the most\n // up-to-date version of this module.\n try {\n const depModule = await moduleGraph.ensureEntryFromUrl(url)\n if (depModule.lastHMRTimestamp > 0) {\n url = injectQuery(url, `t=${depModule.lastHMRTimestamp}`)\n }\n } catch (e: any) {\n // it's possible that the dep fails to resolve (non-existent import)\n // attach location to the missing import\n e.pos = pos\n throw e\n }\n\n // prepend base (dev base is guaranteed to have ending slash)\n url = base + url.replace(/^\\//, '')\n }\n\n return [url, resolved.id]\n }\n\n for (let index = 0; index < imports.length; index++) {\n const {\n s: start,\n e: end,\n ss: expStart,\n se: expEnd,\n d: dynamicIndex,\n // #2083 User may use escape path,\n // so use imports[index].n to get the unescaped string\n // @ts-ignore\n n: specifier\n } = imports[index]\n\n const rawUrl = source.slice(start, end)\n\n // check import.meta usage\n if (rawUrl === 'import.meta') {\n const prop = source.slice(end, end + 4)\n if (prop === '.hot') {\n hasHMR = true\n if (source.slice(end + 4, end + 11) === '.accept') {\n // further analyze accepted modules\n if (\n lexAcceptedHmrDeps(\n source,\n source.indexOf('(', end + 11) + 1,\n acceptedUrls\n )\n ) {\n isSelfAccepting = true\n }\n }\n } else if (prop === '.env') {\n hasEnv = true\n } else if (prop === '.glo' && source[end + 4] === 'b') {\n // transform import.meta.glob()\n // e.g. `import.meta.glob('glob:./dir/*.js')`\n const {\n imports,\n importsString,\n exp,\n endIndex,\n base,\n pattern,\n isEager\n } = await transformImportGlob(\n source,\n start,\n importer,\n index,\n root,\n normalizeUrl\n )\n str().prepend(importsString)\n str().overwrite(expStart, endIndex, exp)\n imports.forEach((url) => {\n url = url.replace(base, '/')\n importedUrls.add(url)\n if (isEager) staticImportedUrls.add(url)\n })\n if (!(importerModule.file! in server._globImporters)) {\n server._globImporters[importerModule.file!] = {\n module: importerModule,\n importGlobs: []\n }\n }\n server._globImporters[importerModule.file!].importGlobs.push({\n base,\n pattern\n })\n }\n continue\n }\n\n const isDynamicImport = dynamicIndex >= 0\n\n // static import or valid string in dynamic import\n // If resolvable, let's resolve it\n if (specifier) {\n // skip external / data uri\n if (isExternalUrl(specifier) || isDataUrl(specifier)) {\n continue\n }\n // skip ssr external\n if (ssr) {\n if (\n server._ssrExternals &&\n shouldExternalizeForSSR(specifier, server._ssrExternals)\n ) {\n continue\n }\n if (isBuiltin(specifier)) {\n continue\n }\n }\n // skip client\n if (specifier === clientPublicPath) {\n continue\n }\n\n // warn imports to non-asset /public files\n if (\n specifier.startsWith('/') &&\n !config.assetsInclude(cleanUrl(specifier)) &&\n !specifier.endsWith('.json') &&\n checkPublicFile(specifier, config)\n ) {\n throw new Error(\n `Cannot import non-asset file ${specifier} which is inside /public.` +\n `JS/CSS files inside /public are copied as-is on build and ` +\n `can only be referenced via
- const filePath = id.replace(normalizePath$4(config.root), '')
+ const filePath = id.replace(normalizePath$4(config.root), '');
addToHTMLProxyCache(config, filePath, inlineModuleIndex, contents);
js += `\nimport "${id}?html-proxy&index=${inlineModuleIndex}.js"`;
shouldRemove = true;
@@ -21329,6 +21529,9 @@ function buildHtmlPlugin(config) {
someScriptsAreAsync || (someScriptsAreAsync = isAsync);
someScriptsAreDefer || (someScriptsAreDefer = !isAsync);
}
+ else if (url && !isPublicFile) {
+ config.logger.warn(`\n const filePath = id.replace(normalizePath(config.root), '')\n addToHTMLProxyCache(\n config,\n filePath,\n inlineModuleIndex,\n contents\n )\n js += `\\nimport \"${id}?html-proxy&index=${inlineModuleIndex}.js\"`\n shouldRemove = true\n }\n\n everyScriptIsAsync &&= isAsync\n someScriptsAreAsync ||= isAsync\n someScriptsAreDefer ||= !isAsync\n } else if (url && !isPublicFile) {\n config.logger.warn(\n ``\n )\n }\n }\n\n // elements with [href/src] attrs\n const assetAttrs = assetAttrsConfig[node.tag]\n if (assetAttrs) {\n for (const p of node.props) {\n if (\n p.type === NodeTypes.ATTRIBUTE &&\n p.value &&\n assetAttrs.includes(p.name)\n ) {\n processNodeUrl(p, s, config, htmlPath, originalUrl)\n }\n }\n }\n })\n\n html = s.toString()\n\n return {\n html,\n tags: [\n {\n tag: 'script',\n attrs: {\n type: 'module',\n src: path.posix.join(base, CLIENT_PUBLIC_PATH)\n },\n injectTo: 'head-prepend'\n }\n ]\n }\n}\n\nexport function indexHtmlMiddleware(\n server: ViteDevServer\n): Connect.NextHandleFunction {\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n return async function viteIndexHtmlMiddleware(req, res, next) {\n if (res.writableEnded) {\n return next()\n }\n\n const url = req.url && cleanUrl(req.url)\n // spa-fallback always redirects to /index.html\n if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') {\n const filename = getHtmlFilename(url, server)\n if (fs.existsSync(filename)) {\n try {\n let html = fs.readFileSync(filename, 'utf-8')\n html = await server.transformIndexHtml(url, html, req.originalUrl)\n return send(req, res, html, 'html')\n } catch (e) {\n return next(e)\n }\n }\n }\n next()\n }\n}\n","import { performance } from 'perf_hooks'\nimport { Connect } from 'types/connect'\nimport { createDebugger, prettifyUrl, timeFrom } from '../../utils'\n\nconst logTime = createDebugger('vite:time')\n\nexport function timeMiddleware(root: string): Connect.NextHandleFunction {\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n return function viteTimeMiddleware(req, res, next) {\n const start = performance.now()\n const end = res.end\n res.end = (...args: any[]) => {\n logTime(`${timeFrom(start)} ${prettifyUrl(req.url!, root)}`)\n // @ts-ignore\n return end.call(res, ...args)\n }\n next()\n }\n}\n","import { extname } from 'path'\nimport { ModuleInfo, PartialResolvedId } from 'rollup'\nimport { parse as parseUrl } from 'url'\nimport { isDirectCSSRequest } from '../plugins/css'\nimport {\n cleanUrl,\n normalizePath,\n removeImportQuery,\n removeTimestampQuery\n} from '../utils'\nimport { FS_PREFIX } from '../constants'\nimport { TransformResult } from './transformRequest'\n\nexport class ModuleNode {\n /**\n * Public served url path, starts with /\n */\n url: string\n /**\n * Resolved file system path + query\n */\n id: string | null = null\n file: string | null = null\n type: 'js' | 'css'\n info?: ModuleInfo\n meta?: Record\n importers = new Set()\n importedModules = new Set()\n acceptedHmrDeps = new Set()\n isSelfAccepting = false\n transformResult: TransformResult | null = null\n ssrTransformResult: TransformResult | null = null\n ssrModule: Record | null = null\n lastHMRTimestamp = 0\n\n constructor(url: string) {\n this.url = url\n this.type = isDirectCSSRequest(url) ? 'css' : 'js'\n }\n}\n\nfunction invalidateSSRModule(mod: ModuleNode, seen: Set) {\n if (seen.has(mod)) {\n return\n }\n seen.add(mod)\n mod.ssrModule = null\n mod.importers.forEach((importer) => invalidateSSRModule(importer, seen))\n}\n\nexport type ResolvedUrl = [\n url: string,\n resolvedId: string,\n meta: object | null | undefined\n]\n\nexport class ModuleGraph {\n urlToModuleMap = new Map()\n idToModuleMap = new Map()\n // a single file may corresponds to multiple modules with different queries\n fileToModulesMap = new Map>()\n safeModulesPath = new Set()\n\n constructor(\n private resolveId: (url: string) => Promise\n ) {}\n\n async getModuleByUrl(rawUrl: string): Promise {\n const [url] = await this.resolveUrl(rawUrl)\n return this.urlToModuleMap.get(url)\n }\n\n getModuleById(id: string): ModuleNode | undefined {\n return this.idToModuleMap.get(removeTimestampQuery(id))\n }\n\n getModulesByFile(file: string): Set | undefined {\n return this.fileToModulesMap.get(file)\n }\n\n onFileChange(file: string): void {\n const mods = this.getModulesByFile(file)\n if (mods) {\n const seen = new Set()\n mods.forEach((mod) => {\n this.invalidateModule(mod, seen)\n })\n }\n }\n\n invalidateModule(mod: ModuleNode, seen: Set = new Set()): void {\n mod.info = undefined\n mod.transformResult = null\n mod.ssrTransformResult = null\n invalidateSSRModule(mod, seen)\n }\n\n invalidateAll(): void {\n const seen = new Set()\n this.idToModuleMap.forEach((mod) => {\n this.invalidateModule(mod, seen)\n })\n }\n\n /**\n * Update the module graph based on a module's updated imports information\n * If there are dependencies that no longer have any importers, they are\n * returned as a Set.\n */\n async updateModuleInfo(\n mod: ModuleNode,\n importedModules: Set,\n acceptedModules: Set,\n isSelfAccepting: boolean\n ): Promise | undefined> {\n mod.isSelfAccepting = isSelfAccepting\n const prevImports = mod.importedModules\n const nextImports = (mod.importedModules = new Set())\n let noLongerImported: Set | undefined\n // update import graph\n for (const imported of importedModules) {\n const dep =\n typeof imported === 'string'\n ? await this.ensureEntryFromUrl(imported)\n : imported\n dep.importers.add(mod)\n nextImports.add(dep)\n }\n // remove the importer from deps that were imported but no longer are.\n prevImports.forEach((dep) => {\n if (!nextImports.has(dep)) {\n dep.importers.delete(mod)\n if (!dep.importers.size) {\n // dependency no longer imported\n ;(noLongerImported || (noLongerImported = new Set())).add(dep)\n }\n }\n })\n // update accepted hmr deps\n const deps = (mod.acceptedHmrDeps = new Set())\n for (const accepted of acceptedModules) {\n const dep =\n typeof accepted === 'string'\n ? await this.ensureEntryFromUrl(accepted)\n : accepted\n deps.add(dep)\n }\n return noLongerImported\n }\n\n async ensureEntryFromUrl(rawUrl: string): Promise {\n const [url, resolvedId, meta] = await this.resolveUrl(rawUrl)\n let mod = this.urlToModuleMap.get(url)\n if (!mod) {\n mod = new ModuleNode(url)\n if (meta) mod.meta = meta\n this.urlToModuleMap.set(url, mod)\n mod.id = resolvedId\n this.idToModuleMap.set(resolvedId, mod)\n const file = (mod.file = cleanUrl(resolvedId))\n let fileMappedModules = this.fileToModulesMap.get(file)\n if (!fileMappedModules) {\n fileMappedModules = new Set()\n this.fileToModulesMap.set(file, fileMappedModules)\n }\n fileMappedModules.add(mod)\n }\n return mod\n }\n\n // some deps, like a css file referenced via @import, don't have its own\n // url because they are inlined into the main css import. But they still\n // need to be represented in the module graph so that they can trigger\n // hmr in the importing css file.\n createFileOnlyEntry(file: string): ModuleNode {\n file = normalizePath(file)\n let fileMappedModules = this.fileToModulesMap.get(file)\n if (!fileMappedModules) {\n fileMappedModules = new Set()\n this.fileToModulesMap.set(file, fileMappedModules)\n }\n\n const url = `${FS_PREFIX}${file}`\n for (const m of fileMappedModules) {\n if (m.url === url || m.id === file) {\n return m\n }\n }\n\n const mod = new ModuleNode(url)\n mod.file = file\n fileMappedModules.add(mod)\n return mod\n }\n\n // for incoming urls, it is important to:\n // 1. remove the HMR timestamp query (?t=xxxx)\n // 2. resolve its extension so that urls with or without extension all map to\n // the same module\n async resolveUrl(url: string): Promise {\n url = removeImportQuery(removeTimestampQuery(url))\n const resolved = await this.resolveId(url)\n const resolvedId = resolved?.id || url\n const ext = extname(cleanUrl(resolvedId))\n const { pathname, search, hash } = parseUrl(url)\n if (ext && !pathname!.endsWith(ext)) {\n url = pathname + ext + (search || '') + (hash || '')\n }\n return [url, resolvedId, resolved?.meta]\n }\n}\n","import fs from 'fs'\nimport path from 'path'\nimport chalk from 'chalk'\nimport { ViteDevServer } from '..'\nimport { createDebugger, normalizePath } from '../utils'\nimport { ModuleNode } from './moduleGraph'\nimport { Update } from 'types/hmrPayload'\nimport { CLIENT_DIR } from '../constants'\nimport { RollupError } from 'rollup'\nimport { isMatch } from 'micromatch'\nimport { Server } from 'http'\nimport { isCSSRequest } from '../plugins/css'\n\nexport const debugHmr = createDebugger('vite:hmr')\n\nconst normalizedClientDir = normalizePath(CLIENT_DIR)\n\nexport interface HmrOptions {\n protocol?: string\n host?: string\n port?: number\n clientPort?: number\n path?: string\n timeout?: number\n overlay?: boolean\n server?: Server\n}\n\nexport interface HmrContext {\n file: string\n timestamp: number\n modules: Array\n read: () => string | Promise\n server: ViteDevServer\n}\n\nfunction getShortName(file: string, root: string) {\n return file.startsWith(root + '/') ? path.posix.relative(root, file) : file\n}\n\nexport async function handleHMRUpdate(\n file: string,\n server: ViteDevServer\n): Promise {\n const { ws, config, moduleGraph } = server\n const shortFile = getShortName(file, config.root)\n\n const isConfig = file === config.configFile\n const isConfigDependency = config.configFileDependencies.some(\n (name) => file === path.resolve(name)\n )\n const isEnv =\n config.inlineConfig.envFile !== false &&\n (file === '.env' || file.startsWith('.env.'))\n if (isConfig || isConfigDependency || isEnv) {\n // auto restart server\n debugHmr(`[config change] ${chalk.dim(shortFile)}`)\n config.logger.info(\n chalk.green(\n `${path.relative(process.cwd(), file)} changed, restarting server...`\n ),\n { clear: true, timestamp: true }\n )\n await server.restart()\n return\n }\n\n debugHmr(`[file change] ${chalk.dim(shortFile)}`)\n\n // (dev only) the client itself cannot be hot updated.\n if (file.startsWith(normalizedClientDir)) {\n ws.send({\n type: 'full-reload',\n path: '*'\n })\n return\n }\n\n const mods = moduleGraph.getModulesByFile(file)\n\n // check if any plugin wants to perform custom HMR handling\n const timestamp = Date.now()\n const hmrContext: HmrContext = {\n file,\n timestamp,\n modules: mods ? [...mods] : [],\n read: () => readModifiedFile(file),\n server\n }\n\n for (const plugin of config.plugins) {\n if (plugin.handleHotUpdate) {\n const filteredModules = await plugin.handleHotUpdate(hmrContext)\n if (filteredModules) {\n hmrContext.modules = filteredModules\n }\n }\n }\n\n if (!hmrContext.modules.length) {\n // html file cannot be hot updated\n if (file.endsWith('.html')) {\n config.logger.info(chalk.green(`page reload `) + chalk.dim(shortFile), {\n clear: true,\n timestamp: true\n })\n ws.send({\n type: 'full-reload',\n path: config.server.middlewareMode\n ? '*'\n : '/' + normalizePath(path.relative(config.root, file))\n })\n } else {\n // loaded but not in the module graph, probably not js\n debugHmr(`[no modules matched] ${chalk.dim(shortFile)}`)\n }\n return\n }\n\n updateModules(shortFile, hmrContext.modules, timestamp, server)\n}\n\nfunction updateModules(\n file: string,\n modules: ModuleNode[],\n timestamp: number,\n { config, ws }: ViteDevServer\n) {\n const updates: Update[] = []\n const invalidatedModules = new Set()\n let needFullReload = false\n\n for (const mod of modules) {\n invalidate(mod, timestamp, invalidatedModules)\n if (needFullReload) {\n continue\n }\n\n const boundaries = new Set<{\n boundary: ModuleNode\n acceptedVia: ModuleNode\n }>()\n const hasDeadEnd = propagateUpdate(mod, boundaries)\n if (hasDeadEnd) {\n needFullReload = true\n continue\n }\n\n updates.push(\n ...[...boundaries].map(({ boundary, acceptedVia }) => ({\n type: `${boundary.type}-update` as Update['type'],\n timestamp,\n path: boundary.url,\n acceptedPath: acceptedVia.url\n }))\n )\n }\n\n if (needFullReload) {\n config.logger.info(chalk.green(`page reload `) + chalk.dim(file), {\n clear: true,\n timestamp: true\n })\n ws.send({\n type: 'full-reload'\n })\n } else {\n config.logger.info(\n updates\n .map(({ path }) => chalk.green(`hmr update `) + chalk.dim(path))\n .join('\\n'),\n { clear: true, timestamp: true }\n )\n ws.send({\n type: 'update',\n updates\n })\n }\n}\n\nexport async function handleFileAddUnlink(\n file: string,\n server: ViteDevServer,\n isUnlink = false\n): Promise {\n const modules = [...(server.moduleGraph.getModulesByFile(file) ?? [])]\n if (isUnlink && file in server._globImporters) {\n delete server._globImporters[file]\n } else {\n for (const i in server._globImporters) {\n const { module, importGlobs } = server._globImporters[i]\n for (const { base, pattern } of importGlobs) {\n if (\n isMatch(file, pattern) ||\n isMatch(path.relative(base, file), pattern)\n ) {\n modules.push(module)\n // We use `onFileChange` to invalidate `module.file` so that subsequent `ssrLoadModule()`\n // calls get fresh glob import results with(out) the newly added(/removed) `file`.\n server.moduleGraph.onFileChange(module.file!)\n break\n }\n }\n }\n }\n if (modules.length > 0) {\n updateModules(\n getShortName(file, server.config.root),\n modules,\n Date.now(),\n server\n )\n }\n}\n\nfunction propagateUpdate(\n node: ModuleNode,\n boundaries: Set<{\n boundary: ModuleNode\n acceptedVia: ModuleNode\n }>,\n currentChain: ModuleNode[] = [node]\n): boolean /* hasDeadEnd */ {\n if (node.isSelfAccepting) {\n boundaries.add({\n boundary: node,\n acceptedVia: node\n })\n\n // additionally check for CSS importers, since a PostCSS plugin like\n // Tailwind JIT may register any file as a dependency to a CSS file.\n for (const importer of node.importers) {\n if (isCSSRequest(importer.url) && !currentChain.includes(importer)) {\n propagateUpdate(importer, boundaries, currentChain.concat(importer))\n }\n }\n\n return false\n }\n\n if (!node.importers.size) {\n return true\n }\n\n // #3716, #3913\n // For a non-CSS file, if all of its importers are CSS files (registered via\n // PostCSS plugins) it should be considered a dead end and force full reload.\n if (\n !isCSSRequest(node.url) &&\n [...node.importers].every((i) => isCSSRequest(i.url))\n ) {\n return true\n }\n\n for (const importer of node.importers) {\n const subChain = currentChain.concat(importer)\n if (importer.acceptedHmrDeps.has(node)) {\n boundaries.add({\n boundary: importer,\n acceptedVia: node\n })\n continue\n }\n\n if (currentChain.includes(importer)) {\n // circular deps is considered dead end\n return true\n }\n\n if (propagateUpdate(importer, boundaries, subChain)) {\n return true\n }\n }\n return false\n}\n\nfunction invalidate(mod: ModuleNode, timestamp: number, seen: Set) {\n if (seen.has(mod)) {\n return\n }\n seen.add(mod)\n mod.lastHMRTimestamp = timestamp\n mod.transformResult = null\n mod.ssrModule = null\n mod.ssrTransformResult = null\n mod.importers.forEach((importer) => {\n if (!importer.acceptedHmrDeps.has(mod)) {\n invalidate(importer, timestamp, seen)\n }\n })\n}\n\nexport function handlePrunedModules(\n mods: Set,\n { ws }: ViteDevServer\n): void {\n // update the disposed modules' hmr timestamp\n // since if it's re-imported, it should re-apply side effects\n // and without the timestamp the browser will not re-import it!\n const t = Date.now()\n mods.forEach((mod) => {\n mod.lastHMRTimestamp = t\n debugHmr(`[dispose] ${chalk.dim(mod.file)}`)\n })\n ws.send({\n type: 'prune',\n paths: [...mods].map((m) => m.url)\n })\n}\n\nconst enum LexerState {\n inCall,\n inSingleQuoteString,\n inDoubleQuoteString,\n inTemplateString,\n inArray\n}\n\n/**\n * Lex import.meta.hot.accept() for accepted deps.\n * Since hot.accept() can only accept string literals or array of string\n * literals, we don't really need a heavy @babel/parse call on the entire source.\n *\n * @returns selfAccepts\n */\nexport function lexAcceptedHmrDeps(\n code: string,\n start: number,\n urls: Set<{ url: string; start: number; end: number }>\n): boolean {\n let state: LexerState = LexerState.inCall\n // the state can only be 2 levels deep so no need for a stack\n let prevState: LexerState = LexerState.inCall\n let currentDep: string = ''\n\n function addDep(index: number) {\n urls.add({\n url: currentDep,\n start: index - currentDep.length - 1,\n end: index + 1\n })\n currentDep = ''\n }\n\n for (let i = start; i < code.length; i++) {\n const char = code.charAt(i)\n switch (state) {\n case LexerState.inCall:\n case LexerState.inArray:\n if (char === `'`) {\n prevState = state\n state = LexerState.inSingleQuoteString\n } else if (char === `\"`) {\n prevState = state\n state = LexerState.inDoubleQuoteString\n } else if (char === '`') {\n prevState = state\n state = LexerState.inTemplateString\n } else if (/\\s/.test(char)) {\n continue\n } else {\n if (state === LexerState.inCall) {\n if (char === `[`) {\n state = LexerState.inArray\n } else {\n // reaching here means the first arg is neither a string literal\n // nor an Array literal (direct callback) or there is no arg\n // in both case this indicates a self-accepting module\n return true // done\n }\n } else if (state === LexerState.inArray) {\n if (char === `]`) {\n return false // done\n } else if (char === ',') {\n continue\n } else {\n error(i)\n }\n }\n }\n break\n case LexerState.inSingleQuoteString:\n if (char === `'`) {\n addDep(i)\n if (prevState === LexerState.inCall) {\n // accept('foo', ...)\n return false\n } else {\n state = prevState\n }\n } else {\n currentDep += char\n }\n break\n case LexerState.inDoubleQuoteString:\n if (char === `\"`) {\n addDep(i)\n if (prevState === LexerState.inCall) {\n // accept('foo', ...)\n return false\n } else {\n state = prevState\n }\n } else {\n currentDep += char\n }\n break\n case LexerState.inTemplateString:\n if (char === '`') {\n addDep(i)\n if (prevState === LexerState.inCall) {\n // accept('foo', ...)\n return false\n } else {\n state = prevState\n }\n } else if (char === '$' && code.charAt(i + 1) === '{') {\n error(i)\n } else {\n currentDep += char\n }\n break\n default:\n throw new Error('unknown import.meta.hot lexer state')\n }\n }\n return false\n}\n\nfunction error(pos: number) {\n const err = new Error(\n `import.meta.accept() can only accept string literals or an ` +\n `Array of string literals.`\n ) as RollupError\n err.pos = pos\n throw err\n}\n\n// vitejs/vite#610 when hot-reloading Vue files, we read immediately on file\n// change event and sometimes this can be too early and get an empty buffer.\n// Poll until the file's modified time has changed before reading again.\nasync function readModifiedFile(file: string): Promise {\n const content = fs.readFileSync(file, 'utf-8')\n if (!content) {\n const mtime = fs.statSync(file).mtimeMs\n await new Promise((r) => {\n let n = 0\n const poll = async () => {\n n++\n const newMtime = fs.statSync(file).mtimeMs\n if (newMtime !== mtime || n > 10) {\n r(0)\n } else {\n setTimeout(poll, 10)\n }\n }\n setTimeout(poll, 10)\n })\n return fs.readFileSync(file, 'utf-8')\n } else {\n return content\n }\n}\n","'use strict';\nconst fs = require('fs');\n\nlet isDocker;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch (_) {\n\t\treturn false;\n\t}\n}\n\nmodule.exports = () => {\n\tif (isDocker === undefined) {\n\t\tisDocker = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDocker;\n};\n","'use strict';\nconst os = require('os');\nconst fs = require('fs');\nconst isDocker = require('is-docker');\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isDocker()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft') ?\n\t\t\t!isDocker() : false;\n\t} catch (_) {\n\t\treturn false;\n\t}\n};\n\nif (process.env.__IS_WSL_TEST__) {\n\tmodule.exports = isWsl;\n} else {\n\tmodule.exports = isWsl();\n}\n","'use strict';\nmodule.exports = (object, propertyName, fn) => {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = fn();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n};\n","const path = require('path');\nconst childProcess = require('child_process');\nconst {promises: fs, constants: fsConstants} = require('fs');\nconst isWsl = require('is-wsl');\nconst isDocker = require('is-docker');\nconst defineLazyProperty = require('define-lazy-prop');\n\n// Path to included `xdg-open`.\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app || {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments\n\t\t\t}\n\t\t}));\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isDocker())) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl ?\n\t\t\t`${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe` :\n\t\t\t`${process.env.SYSTEMROOT}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'–ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand'\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`, '-ArgumentList');\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.unshift(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(arg => `\"\\`\"${arg}\\`\"\"`);\n\t\t\tencodedArguments.push(appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron ||\n\t\t\t\tplatform === 'android' || isBundled || !exeLocalXdgOpen;\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget\n\t});\n};\n\nconst openApp = (name, options) => {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError('Expected a `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options || {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments\n\t\t}\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nconst apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium']\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe']\n\t}\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox'\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe'\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev']\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'\n}));\n\nopen.apps = apps;\nopen.openApp = openApp;\n\nmodule.exports = open;\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nmodule.exports = input => {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, input.length - 1);\n\t}\n\n\treturn input;\n};\n","'use strict';\nconst path = require('path');\nconst pathKey = require('path-key');\n\nconst npmRunPath = options => {\n\toptions = {\n\t\tcwd: process.cwd(),\n\t\tpath: process.env[pathKey()],\n\t\texecPath: process.execPath,\n\t\t...options\n\t};\n\n\tlet previous;\n\tlet cwdPath = path.resolve(options.cwd);\n\tconst result = [];\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n\n\t// Ensure the running `node` binary is used\n\tconst execPathDir = path.resolve(options.cwd, options.execPath, '..');\n\tresult.push(execPathDir);\n\n\treturn result.concat(options.path).join(path.delimiter);\n};\n\nmodule.exports = npmRunPath;\n// TODO: Remove this for the next major release\nmodule.exports.default = npmRunPath;\n\nmodule.exports.env = options => {\n\toptions = {\n\t\tenv: process.env,\n\t\t...options\n\t};\n\n\tconst env = {...options.env};\n\tconst path = pathKey({env});\n\n\toptions.path = env[path];\n\tenv[path] = module.exports(options);\n\n\treturn env;\n};\n","'use strict';\n\nconst mimicFn = (to, from) => {\n\tfor (const prop of Reflect.ownKeys(from)) {\n\t\tObject.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));\n\t}\n\n\treturn to;\n};\n\nmodule.exports = mimicFn;\n// TODO: Remove this for the next major release\nmodule.exports.default = mimicFn;\n","'use strict';\nconst mimicFn = require('mimic-fn');\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFn(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nmodule.exports = onetime;\n// TODO: Remove this for the next major release\nmodule.exports.default = onetime;\n\nmodule.exports.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.SIGNALS=void 0;\n\nconst SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"},\n\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"},\n\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"},\n\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"},\n\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"},\n\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"},\n\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"},\n\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"},\n\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"},\n\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"},\n\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"},\n\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"},\n\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true},\n\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"},\n\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"},\n\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"},\n\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"},\n\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"},\n\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"},\n\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"},\n\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"},\n\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"},\n\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"},\n\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"}];exports.SIGNALS=SIGNALS;\n//# sourceMappingURL=core.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.SIGRTMAX=exports.getRealtimeSignals=void 0;\nconst getRealtimeSignals=function(){\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal);\n};exports.getRealtimeSignals=getRealtimeSignals;\n\nconst getRealtimeSignal=function(value,index){\nreturn{\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"};\n\n};\n\nconst SIGRTMIN=34;\nconst SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX;\n//# sourceMappingURL=realtime.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.getSignals=void 0;var _os=require(\"os\");\n\nvar _core=require(\"./core.js\");\nvar _realtime=require(\"./realtime.js\");\n\n\n\nconst getSignals=function(){\nconst realtimeSignals=(0,_realtime.getRealtimeSignals)();\nconst signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals;\n};exports.getSignals=getSignals;\n\n\n\n\n\n\n\nconst normalizeSignal=function({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard})\n{\nconst{\nsignals:{[name]:constantSignal}}=\n_os.constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard};\n};\n//# sourceMappingURL=signals.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=require(\"os\");\n\nvar _signals=require(\"./signals.js\");\nvar _realtime=require(\"./realtime.js\");\n\n\n\nconst getSignalsByName=function(){\nconst signals=(0,_signals.getSignals)();\nreturn signals.reduce(getSignalByName,{});\n};\n\nconst getSignalByName=function(\nsignalByNameMemo,\n{name,number,description,supported,action,forced,standard})\n{\nreturn{\n...signalByNameMemo,\n[name]:{name,number,description,supported,action,forced,standard}};\n\n};\n\nconst signalsByName=getSignalsByName();exports.signalsByName=signalsByName;\n\n\n\n\nconst getSignalsByNumber=function(){\nconst signals=(0,_signals.getSignals)();\nconst length=_realtime.SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals));\n\nreturn Object.assign({},...signalsA);\n};\n\nconst getSignalByNumber=function(number,signals){\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{};\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard}};\n\n\n};\n\n\n\nconst findSignalByNumber=function(number,signals){\nconst signal=signals.find(({name})=>_os.constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal;\n}\n\nreturn signals.find(signalA=>signalA.number===number);\n};\n\nconst signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber;\n//# sourceMappingURL=main.js.map","'use strict';\nconst {signalsByName} = require('human-signals');\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nconst makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout}}\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n\nmodule.exports = makeError;\n","'use strict';\nconst aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nconst normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\nmodule.exports = normalizeStdio;\n\n// `ipc` is pushed unless it is already present\nmodule.exports.node = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n","// This is not the set of all possible signals.\n//\n// It IS, however, the set of all signals that trigger\n// an exit on either Linux or BSD systems. Linux is a\n// superset of the signal names supported on BSD, and\n// the unknown signals just fail to register, so we can\n// catch that easily enough.\n//\n// Don't bother with SIGKILL. It's uncatchable, which\n// means that we can't fire any callbacks anyway.\n//\n// If a user does happen to register a handler on a non-\n// fatal signal like SIGWINCH or something, and then\n// exit, it'll end up firing `process.emit('exit')`, so\n// the handler will be fired anyway.\n//\n// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n// artificially, inherently leave the process in a\n// state from which it is not safe to try and enter JS\n// listeners.\nmodule.exports = [\n 'SIGABRT',\n 'SIGALRM',\n 'SIGHUP',\n 'SIGINT',\n 'SIGTERM'\n]\n\nif (process.platform !== 'win32') {\n module.exports.push(\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n module.exports.push(\n 'SIGIO',\n 'SIGPOLL',\n 'SIGPWR',\n 'SIGSTKFLT',\n 'SIGUNUSED'\n )\n}\n","// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nvar process = global.process\n// some kind of non-node environment, just no-op\nif (typeof process !== 'object' || !process) {\n module.exports = function () {}\n} else {\n var assert = require('assert')\n var signals = require('./signals.js')\n var isWin = /^win/i.test(process.platform)\n\n var EE = require('events')\n /* istanbul ignore if */\n if (typeof EE !== 'function') {\n EE = EE.EventEmitter\n }\n\n var emitter\n if (process.__signal_exit_emitter__) {\n emitter = process.__signal_exit_emitter__\n } else {\n emitter = process.__signal_exit_emitter__ = new EE()\n emitter.count = 0\n emitter.emitted = {}\n }\n\n // Because this emitter is a global, we have to check to see if a\n // previous version of this library failed to enable infinite listeners.\n // I know what you're about to say. But literally everything about\n // signal-exit is a compromise with evil. Get used to it.\n if (!emitter.infinite) {\n emitter.setMaxListeners(Infinity)\n emitter.infinite = true\n }\n\n module.exports = function (cb, opts) {\n if (global.process !== process) {\n return\n }\n assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')\n\n if (loaded === false) {\n load()\n }\n\n var ev = 'exit'\n if (opts && opts.alwaysLast) {\n ev = 'afterexit'\n }\n\n var remove = function () {\n emitter.removeListener(ev, cb)\n if (emitter.listeners('exit').length === 0 &&\n emitter.listeners('afterexit').length === 0) {\n unload()\n }\n }\n emitter.on(ev, cb)\n\n return remove\n }\n\n var unload = function unload () {\n if (!loaded || global.process !== process) {\n return\n }\n loaded = false\n\n signals.forEach(function (sig) {\n try {\n process.removeListener(sig, sigListeners[sig])\n } catch (er) {}\n })\n process.emit = originalProcessEmit\n process.reallyExit = originalProcessReallyExit\n emitter.count -= 1\n }\n module.exports.unload = unload\n\n var emit = function emit (event, code, signal) {\n if (emitter.emitted[event]) {\n return\n }\n emitter.emitted[event] = true\n emitter.emit(event, code, signal)\n }\n\n // { : , ... }\n var sigListeners = {}\n signals.forEach(function (sig) {\n sigListeners[sig] = function listener () {\n if (process !== global.process) {\n return\n }\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n var listeners = process.listeners(sig)\n if (listeners.length === emitter.count) {\n unload()\n emit('exit', null, sig)\n /* istanbul ignore next */\n emit('afterexit', null, sig)\n /* istanbul ignore next */\n if (isWin && sig === 'SIGHUP') {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n sig = 'SIGINT'\n }\n process.kill(process.pid, sig)\n }\n }\n })\n\n module.exports.signals = function () {\n return signals\n }\n\n var loaded = false\n\n var load = function load () {\n if (loaded || process !== global.process) {\n return\n }\n loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n emitter.count += 1\n\n signals = signals.filter(function (sig) {\n try {\n process.on(sig, sigListeners[sig])\n return true\n } catch (er) {\n return false\n }\n })\n\n process.emit = processEmit\n process.reallyExit = processReallyExit\n }\n module.exports.load = load\n\n var originalProcessReallyExit = process.reallyExit\n var processReallyExit = function processReallyExit (code) {\n if (process !== global.process) {\n return\n }\n process.exitCode = code || 0\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n /* istanbul ignore next */\n originalProcessReallyExit.call(process, process.exitCode)\n }\n\n var originalProcessEmit = process.emit\n var processEmit = function processEmit (ev, arg) {\n if (ev === 'exit' && process === global.process) {\n if (arg !== undefined) {\n process.exitCode = arg\n }\n var ret = originalProcessEmit.apply(this, arguments)\n emit('exit', process.exitCode, null)\n /* istanbul ignore next */\n emit('afterexit', process.exitCode, null)\n return ret\n } else {\n return originalProcessEmit.apply(this, arguments)\n }\n }\n}\n","'use strict';\nconst os = require('os');\nconst onExit = require('signal-exit');\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nconst spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {\n\treturn isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n};\n\nconst isSigterm = signal => {\n\treturn signal === os.constants.signals.SIGTERM ||\n\t\t(typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n};\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nconst spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nconst setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nconst validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nconst setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n\nmodule.exports = {\n\tspawnedKill,\n\tspawnedCancel,\n\tsetupTimeout,\n\tvalidateTimeout,\n\tsetExitHandler\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst stream = require('stream');\nconst {promisify} = require('util');\nconst bufferStream = require('./buffer-stream');\n\nconst streamPipelinePromisified = promisify(stream.pipeline);\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\tthrow new Error('Expected a stream');\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\tconst stream = bufferStream(options);\n\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait streamPipelinePromisified(inputStream, stream);\n\t\t\t\tresolve();\n\t\t\t} catch (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t}\n\t\t})();\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n","'use strict';\nconst isStream = require('is-stream');\nconst getStream = require('get-stream');\nconst mergeStream = require('merge-stream');\n\n// `input` option\nconst handleInput = (spawned, input) => {\n\t// Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852\n\t// @todo remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0\n\tif (input === undefined || spawned.stdin === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nconst makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\tif (!stream) {\n\t\treturn;\n\t}\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\tif (encoding) {\n\t\treturn getStream(stream, {encoding, maxBuffer});\n\t}\n\n\treturn getStream.buffer(stream, {maxBuffer});\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nconst getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise)\n\t\t]);\n\t}\n};\n\nconst validateInputSync = ({input}) => {\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n};\n\nmodule.exports = {\n\thandleInput,\n\tmakeAllStream,\n\tgetSpawnedResult,\n\tvalidateInputSync\n};\n\n","'use strict';\n\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property)\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nconst mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function' ?\n\t\t\t(...args) => Reflect.apply(descriptor.value, promise(), args) :\n\t\t\tdescriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n\n\treturn spawned;\n};\n\n// Use promises instead of `child_process` events\nconst getSpawnedPromise = spawned => {\n\treturn new Promise((resolve, reject) => {\n\t\tspawned.on('exit', (exitCode, signal) => {\n\t\t\tresolve({exitCode, signal});\n\t\t});\n\n\t\tspawned.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\n\t\tif (spawned.stdin) {\n\t\t\tspawned.stdin.on('error', error => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t}\n\t});\n};\n\nmodule.exports = {\n\tmergePromise,\n\tgetSpawnedPromise\n};\n\n","'use strict';\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\nconst DOUBLE_QUOTES_REGEXP = /\"/g;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replace(DOUBLE_QUOTES_REGEXP, '\\\\\"')}\"`;\n};\n\nconst joinCommand = (file, args) => {\n\treturn normalizeArgs(file, args).join(' ');\n};\n\nconst getEscapedCommand = (file, args) => {\n\treturn normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n};\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execa.command()`\nconst parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens[tokens.length - 1];\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nmodule.exports = {\n\tjoinCommand,\n\tgetEscapedCommand,\n\tparseCommand\n};\n","'use strict';\nconst path = require('path');\nconst childProcess = require('child_process');\nconst crossSpawn = require('cross-spawn');\nconst stripFinalNewline = require('strip-final-newline');\nconst npmRunPath = require('npm-run-path');\nconst onetime = require('onetime');\nconst makeError = require('./lib/error');\nconst normalizeStdio = require('./lib/stdio');\nconst {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} = require('./lib/kill');\nconst {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = require('./lib/stream');\nconst {mergePromise, getSpawnedPromise} = require('./lib/promise');\nconst {joinCommand, parseCommand, getEscapedCommand} = require('./lib/command');\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPath.env({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\t...options\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execa.sync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nconst execa = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t}));\n\t\treturn mergePromise(dummySpawned, errorPromise);\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled,\n\t\t\t\tkilled: spawned.killed\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options.input);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\treturn mergePromise(spawned, handlePromiseOnce);\n};\n\nmodule.exports = execa;\n\nmodule.exports.sync = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false\n\t};\n};\n\nmodule.exports.command = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n};\n\nmodule.exports.commandSync = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa.sync(file, args, options);\n};\n\nmodule.exports.node = (scriptPath, args, options = {}) => {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdio.node(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : [])\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false\n\t\t}\n\t);\n};\n","/**\n * The following is modified based on source found in\n * https://github.com/facebook/create-react-app\n *\n * MIT Licensed\n * Copyright (c) 2015-present, Facebook, Inc.\n * https://github.com/facebook/create-react-app/blob/master/LICENSE\n *\n */\n\nimport path from 'path'\nimport open from 'open'\nimport execa from 'execa'\nimport chalk from 'chalk'\nimport { execSync } from 'child_process'\nimport { Logger } from '../logger'\n\n// https://github.com/sindresorhus/open#app\nconst OSX_CHROME = 'google chrome'\n\n/**\n * Reads the BROWSER environment variable and decides what to do with it.\n * Returns true if it opened a browser or ran a node.js script, otherwise false.\n */\nexport function openBrowser(\n url: string,\n opt: string | true,\n logger: Logger\n): boolean {\n // The browser executable to open.\n // See https://github.com/sindresorhus/open#app for documentation.\n const browser = typeof opt === 'string' ? opt : process.env.BROWSER || ''\n if (browser.toLowerCase().endsWith('.js')) {\n return executeNodeScript(browser, url, logger)\n } else if (browser.toLowerCase() !== 'none') {\n return startBrowserProcess(browser, url)\n }\n return false\n}\n\nfunction executeNodeScript(scriptPath: string, url: string, logger: Logger) {\n const extraArgs = process.argv.slice(2)\n const child = execa('node', [scriptPath, ...extraArgs, url], {\n stdio: 'inherit'\n })\n child.on('close', (code) => {\n if (code !== 0) {\n logger.error(\n chalk.red(\n `\\nThe script specified as BROWSER environment variable failed.\\n\\n${chalk.cyan(\n scriptPath\n )} exited with code ${code}.`\n ),\n { error: null }\n )\n }\n })\n return true\n}\n\nfunction startBrowserProcess(browser: string | undefined, url: string) {\n // If we're on OS X, the user hasn't specifically\n // requested a different browser, we can try opening\n // Chrome with AppleScript. This lets us reuse an\n // existing tab when possible instead of creating a new one.\n const shouldTryOpenChromeWithAppleScript =\n process.platform === 'darwin' && (browser === '' || browser === OSX_CHROME)\n\n if (shouldTryOpenChromeWithAppleScript) {\n try {\n // Try our best to reuse existing tab\n // on OS X Google Chrome with AppleScript\n execSync('ps cax | grep \"Google Chrome\"')\n execSync('osascript openChrome.applescript \"' + encodeURI(url) + '\"', {\n cwd: path.dirname(require.resolve('vite/bin/openChrome.applescript')),\n stdio: 'ignore'\n })\n return true\n } catch (err) {\n // Ignore errors\n }\n }\n\n // Another special case: on OS X, check if BROWSER has been set to \"open\".\n // In this case, instead of passing the string `open` to `open` function (which won't work),\n // just ignore it (thus ensuring the intended behavior, i.e. opening the system browser):\n // https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768\n if (process.platform === 'darwin' && browser === 'open') {\n browser = undefined\n }\n\n // Fallback to open\n // (It will always open new tab)\n try {\n const options: open.Options = browser ? { app: { name: browser } } : {}\n open(url, options).catch(() => {}) // Prevent `unhandledRejection` error.\n return true\n } catch (err) {\n return false\n }\n}\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","exports.quote = function (xs) {\n return xs.map(function (s) {\n if (s && typeof s === 'object') {\n return s.op.replace(/(.)/g, '\\\\$1');\n }\n else if (/[\"\\s]/.test(s) && !/'/.test(s)) {\n return \"'\" + s.replace(/(['\\\\])/g, '\\\\$1') + \"'\";\n }\n else if (/[\"'\\s]/.test(s)) {\n return '\"' + s.replace(/([\"\\\\$`!])/g, '\\\\$1') + '\"';\n }\n else {\n return String(s).replace(/([A-Za-z]:)?([#!\"$&'()*,:;<=>?@\\[\\\\\\]^`{|}])/g, '$1\\\\$2');\n }\n }).join(' ');\n};\n\n// '<(' is process substitution operator and\n// can be parsed the same as control operator\nvar CONTROL = '(?:' + [\n '\\\\|\\\\|', '\\\\&\\\\&', ';;', '\\\\|\\\\&', '\\\\<\\\\(', '>>', '>\\\\&', '[&;()|<>]'\n].join('|') + ')';\nvar META = '|&;()<> \\\\t';\nvar BAREWORD = '(\\\\\\\\[\\'\"' + META + ']|[^\\\\s\\'\"' + META + '])+';\nvar SINGLE_QUOTE = '\"((\\\\\\\\\"|[^\"])*?)\"';\nvar DOUBLE_QUOTE = '\\'((\\\\\\\\\\'|[^\\'])*?)\\'';\n\nvar TOKEN = '';\nfor (var i = 0; i < 4; i++) {\n TOKEN += (Math.pow(16,8)*Math.random()).toString(16);\n}\n\nexports.parse = function (s, env, opts) {\n var mapped = parse(s, env, opts);\n if (typeof env !== 'function') return mapped;\n return mapped.reduce(function (acc, s) {\n if (typeof s === 'object') return acc.concat(s);\n var xs = s.split(RegExp('(' + TOKEN + '.*?' + TOKEN + ')', 'g'));\n if (xs.length === 1) return acc.concat(xs[0]);\n return acc.concat(xs.filter(Boolean).map(function (x) {\n if (RegExp('^' + TOKEN).test(x)) {\n return JSON.parse(x.split(TOKEN)[1]);\n }\n else return x;\n }));\n }, []);\n};\n\nfunction parse (s, env, opts) {\n var chunker = new RegExp([\n '(' + CONTROL + ')', // control chars\n '(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')*'\n ].join('|'), 'g');\n var match = s.match(chunker).filter(Boolean);\n var commented = false;\n\n if (!match) return [];\n if (!env) env = {};\n if (!opts) opts = {};\n return match.map(function (s, j) {\n if (commented) {\n return;\n }\n if (RegExp('^' + CONTROL + '$').test(s)) {\n return { op: s };\n }\n\n // Hand-written scanner/parser for Bash quoting rules:\n //\n // 1. inside single quotes, all characters are printed literally.\n // 2. inside double quotes, all characters are printed literally\n // except variables prefixed by '$' and backslashes followed by\n // either a double quote or another backslash.\n // 3. outside of any quotes, backslashes are treated as escape\n // characters and not printed (unless they are themselves escaped)\n // 4. quote context can switch mid-token if there is no whitespace\n // between the two quote contexts (e.g. all'one'\"token\" parses as\n // \"allonetoken\")\n var SQ = \"'\";\n var DQ = '\"';\n var DS = '$';\n var BS = opts.escape || '\\\\';\n var quote = false;\n var esc = false;\n var out = '';\n var isGlob = false;\n\n for (var i = 0, len = s.length; i < len; i++) {\n var c = s.charAt(i);\n isGlob = isGlob || (!quote && (c === '*' || c === '?'));\n if (esc) {\n out += c;\n esc = false;\n }\n else if (quote) {\n if (c === quote) {\n quote = false;\n }\n else if (quote == SQ) {\n out += c;\n }\n else { // Double quote\n if (c === BS) {\n i += 1;\n c = s.charAt(i);\n if (c === DQ || c === BS || c === DS) {\n out += c;\n } else {\n out += BS + c;\n }\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else {\n out += c;\n }\n }\n }\n else if (c === DQ || c === SQ) {\n quote = c;\n }\n else if (RegExp('^' + CONTROL + '$').test(c)) {\n return { op: s };\n }\n else if (RegExp('^#$').test(c)) {\n commented = true;\n if (out.length){\n return [out, { comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n return [{ comment: s.slice(i+1) + match.slice(j+1).join(' ') }];\n }\n else if (c === BS) {\n esc = true;\n }\n else if (c === DS) {\n out += parseEnvVar();\n }\n else out += c;\n }\n\n if (isGlob) return {op: 'glob', pattern: out};\n\n return out;\n\n function parseEnvVar() {\n i += 1;\n var varend, varname;\n //debugger\n if (s.charAt(i) === '{') {\n i += 1;\n if (s.charAt(i) === '}') {\n throw new Error(\"Bad substitution: \" + s.substr(i - 2, 3));\n }\n varend = s.indexOf('}', i);\n if (varend < 0) {\n throw new Error(\"Bad substitution: \" + s.substr(i));\n }\n varname = s.substr(i, varend - i);\n i = varend;\n }\n else if (/[*@#?$!_\\-]/.test(s.charAt(i))) {\n varname = s.charAt(i);\n i += 1;\n }\n else {\n varend = s.substr(i).match(/[^\\w\\d_]/);\n if (!varend) {\n varname = s.substr(i);\n i = s.length;\n } else {\n varname = s.substr(i, varend.index);\n i += varend.index - 1;\n }\n }\n return getVar(null, '', varname);\n }\n })\n // finalize parsed aruments\n .reduce(function(prev, arg){\n if (arg === undefined){\n return prev;\n }\n return prev.concat(arg);\n },[]);\n\n function getVar (_, pre, key) {\n var r = typeof env === 'function' ? env(key) : env[key];\n if (r === undefined && key != '')\n r = '';\n else if (r === undefined)\n r = '$';\n\n if (typeof r === 'object') {\n return pre + TOKEN + JSON.stringify(r) + TOKEN;\n }\n else return pre + r;\n }\n}\n","module.exports = {\n '/Applications/Atom.app/Contents/MacOS/Atom': 'atom',\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta':\n '/Applications/Atom Beta.app/Contents/MacOS/Atom Beta',\n '/Applications/Brackets.app/Contents/MacOS/Brackets': 'brackets',\n '/Applications/Sublime Text.app/Contents/MacOS/Sublime Text':\n '/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text 2.app/Contents/MacOS/Sublime Text 2':\n '/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl',\n '/Applications/Sublime Text Dev.app/Contents/MacOS/Sublime Text':\n '/Applications/Sublime Text Dev.app/Contents/SharedSupport/bin/subl',\n '/Applications/Visual Studio Code.app/Contents/MacOS/Electron': 'code',\n '/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Electron':\n 'code-insiders',\n '/Applications/AppCode.app/Contents/MacOS/appcode':\n '/Applications/AppCode.app/Contents/MacOS/appcode',\n '/Applications/CLion.app/Contents/MacOS/clion':\n '/Applications/CLion.app/Contents/MacOS/clion',\n '/Applications/IntelliJ IDEA.app/Contents/MacOS/idea':\n '/Applications/IntelliJ IDEA.app/Contents/MacOS/idea',\n '/Applications/PhpStorm.app/Contents/MacOS/phpstorm':\n '/Applications/PhpStorm.app/Contents/MacOS/phpstorm',\n '/Applications/PyCharm.app/Contents/MacOS/pycharm':\n '/Applications/PyCharm.app/Contents/MacOS/pycharm',\n '/Applications/PyCharm CE.app/Contents/MacOS/pycharm':\n '/Applications/PyCharm CE.app/Contents/MacOS/pycharm',\n '/Applications/RubyMine.app/Contents/MacOS/rubymine':\n '/Applications/RubyMine.app/Contents/MacOS/rubymine',\n '/Applications/WebStorm.app/Contents/MacOS/webstorm':\n '/Applications/WebStorm.app/Contents/MacOS/webstorm'\n}\n","module.exports = {\n atom: 'atom',\n Brackets: 'brackets',\n code: 'code',\n emacs: 'emacs',\n 'idea.sh': 'idea',\n 'phpstorm.sh': 'phpstorm',\n 'pycharm.sh': 'pycharm',\n 'rubymine.sh': 'rubymine',\n sublime_text: 'subl',\n vim: 'vim',\n 'webstorm.sh': 'webstorm'\n}\n","module.exports = [\n 'Brackets.exe',\n 'Code.exe',\n 'atom.exe',\n 'sublime_text.exe',\n 'notepad++.exe',\n 'clion.exe',\n 'clion64.exe',\n 'idea.exe',\n 'idea64.exe',\n 'phpstorm.exe',\n 'phpstorm64.exe',\n 'pycharm.exe',\n 'pycharm64.exe',\n 'rubymine.exe',\n 'rubymine64.exe',\n 'webstorm.exe',\n 'webstorm64.exe'\n]\n","const path = require('path')\nconst shellQuote = require('shell-quote')\nconst childProcess = require('child_process')\n\n// Map from full process name to binary that starts the process\n// We can't just re-use full process name, because it will spawn a new instance\n// of the app every time\nconst COMMON_EDITORS_OSX = require('./editor-info/osx')\nconst COMMON_EDITORS_LINUX = require('./editor-info/linux')\nconst COMMON_EDITORS_WIN = require('./editor-info/windows')\n\nmodule.exports = function guessEditor (specifiedEditor) {\n if (specifiedEditor) {\n return shellQuote.parse(specifiedEditor)\n }\n // We can find out which editor is currently running by:\n // `ps x` on macOS and Linux\n // `Get-Process` on Windows\n try {\n if (process.platform === 'darwin') {\n const output = childProcess.execSync('ps x').toString()\n const processNames = Object.keys(COMMON_EDITORS_OSX)\n for (let i = 0; i < processNames.length; i++) {\n const processName = processNames[i]\n if (output.indexOf(processName) !== -1) {\n return [COMMON_EDITORS_OSX[processName]]\n }\n }\n } else if (process.platform === 'win32') {\n const output = childProcess\n .execSync('powershell -Command \"Get-Process | Select-Object Path\"', {\n stdio: ['pipe', 'pipe', 'ignore']\n })\n .toString()\n const runningProcesses = output.split('\\r\\n')\n for (let i = 0; i < runningProcesses.length; i++) {\n // `Get-Process` sometimes returns empty lines\n if (!runningProcesses[i]) {\n continue\n }\n\n const fullProcessPath = runningProcesses[i].trim()\n const shortProcessName = path.basename(fullProcessPath)\n\n if (COMMON_EDITORS_WIN.indexOf(shortProcessName) !== -1) {\n return [fullProcessPath]\n }\n }\n } else if (process.platform === 'linux') {\n // --no-heading No header line\n // x List all processes owned by you\n // -o comm Need only names column\n const output = childProcess\n .execSync('ps x --no-heading -o comm --sort=comm')\n .toString()\n const processNames = Object.keys(COMMON_EDITORS_LINUX)\n for (let i = 0; i < processNames.length; i++) {\n const processName = processNames[i]\n if (output.indexOf(processName) !== -1) {\n return [COMMON_EDITORS_LINUX[processName]]\n }\n }\n }\n } catch (error) {\n // Ignore...\n }\n\n // Last resort, use old skool env vars\n if (process.env.VISUAL) {\n return [process.env.VISUAL]\n } else if (process.env.EDITOR) {\n return [process.env.EDITOR]\n }\n\n return [null]\n}\n","const path = require('path')\n\n// normalize file/line numbers into command line args for specific editors\nmodule.exports = function getArgumentsForPosition (\n editor,\n fileName,\n lineNumber,\n columnNumber = 1\n) {\n const editorBasename = path.basename(editor).replace(/\\.(exe|cmd|bat)$/i, '')\n switch (editorBasename) {\n case 'atom':\n case 'Atom':\n case 'Atom Beta':\n case 'subl':\n case 'sublime':\n case 'sublime_text':\n case 'wstorm':\n case 'charm':\n return [`${fileName}:${lineNumber}:${columnNumber}`]\n case 'notepad++':\n return ['-n' + lineNumber, fileName]\n case 'vim':\n case 'mvim':\n return [`+call cursor(${lineNumber}, ${columnNumber})`, fileName]\n case 'joe':\n return ['+' + `${lineNumber}`, fileName]\n case 'emacs':\n case 'emacsclient':\n return [`+${lineNumber}:${columnNumber}`, fileName]\n case 'rmate':\n case 'mate':\n case 'mine':\n return ['--line', lineNumber, fileName]\n case 'code':\n case 'code-insiders':\n case 'Code':\n return ['-r', '-g', `${fileName}:${lineNumber}:${columnNumber}`]\n case 'appcode':\n case 'clion':\n case 'clion64':\n case 'idea':\n case 'idea64':\n case 'phpstorm':\n case 'phpstorm64':\n case 'pycharm':\n case 'pycharm64':\n case 'rubymine':\n case 'rubymine64':\n case 'webstorm':\n case 'webstorm64':\n return ['--line', lineNumber, fileName]\n }\n\n // For all others, drop the lineNumber until we have\n // a mapping above, since providing the lineNumber incorrectly\n // can result in errors or confusing behavior.\n return [fileName]\n}\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file at\n * https://github.com/facebookincubator/create-react-app/blob/master/LICENSE\n *\n * Modified by Yuxi Evan You\n */\n\nconst fs = require('fs')\nconst os = require('os')\nconst path = require('path')\nconst chalk = require('chalk')\nconst childProcess = require('child_process')\n\nconst guessEditor = require('./guess')\nconst getArgumentsForPosition = require('./get-args')\n\nfunction wrapErrorCallback (cb) {\n return (fileName, errorMessage) => {\n console.log()\n console.log(\n chalk.red('Could not open ' + path.basename(fileName) + ' in the editor.')\n )\n if (errorMessage) {\n if (errorMessage[errorMessage.length - 1] !== '.') {\n errorMessage += '.'\n }\n console.log(\n chalk.red('The editor process exited with an error: ' + errorMessage)\n )\n }\n console.log()\n if (cb) cb(fileName, errorMessage)\n }\n}\n\nfunction isTerminalEditor (editor) {\n switch (editor) {\n case 'vim':\n case 'emacs':\n case 'nano':\n return true\n }\n return false\n}\n\nconst positionRE = /:(\\d+)(:(\\d+))?$/\nfunction parseFile (file) {\n const fileName = file.replace(positionRE, '')\n const match = file.match(positionRE)\n const lineNumber = match && match[1]\n const columnNumber = match && match[3]\n return {\n fileName,\n lineNumber,\n columnNumber\n }\n}\n\nlet _childProcess = null\n\nfunction launchEditor (file, specifiedEditor, onErrorCallback) {\n const parsed = parseFile(file)\n let { fileName } = parsed\n const { lineNumber, columnNumber } = parsed\n\n if (!fs.existsSync(fileName)) {\n return\n }\n\n if (typeof specifiedEditor === 'function') {\n onErrorCallback = specifiedEditor\n specifiedEditor = undefined\n }\n\n onErrorCallback = wrapErrorCallback(onErrorCallback)\n\n const [editor, ...args] = guessEditor(specifiedEditor)\n if (!editor) {\n onErrorCallback(fileName, null)\n return\n }\n\n if (\n process.platform === 'linux' &&\n fileName.startsWith('/mnt/') &&\n /Microsoft/i.test(os.release())\n ) {\n // Assume WSL / \"Bash on Ubuntu on Windows\" is being used, and\n // that the file exists on the Windows file system.\n // `os.release()` is \"4.4.0-43-Microsoft\" in the current release\n // build of WSL, see: https://github.com/Microsoft/BashOnWindows/issues/423#issuecomment-221627364\n // When a Windows editor is specified, interop functionality can\n // handle the path translation, but only if a relative path is used.\n fileName = path.relative('', fileName)\n }\n\n if (lineNumber) {\n const extraArgs = getArgumentsForPosition(editor, fileName, lineNumber, columnNumber)\n args.push.apply(args, extraArgs)\n } else {\n args.push(fileName)\n }\n\n if (_childProcess && isTerminalEditor(editor)) {\n // There's an existing editor process already and it's attached\n // to the terminal, so go kill it. Otherwise two separate editor\n // instances attach to the stdin/stdout which gets confusing.\n _childProcess.kill('SIGKILL')\n }\n\n if (process.platform === 'win32') {\n // On Windows, launch the editor in a shell because spawn can only\n // launch .exe files.\n _childProcess = childProcess.spawn(\n 'cmd.exe',\n ['/C', editor].concat(args),\n { stdio: 'inherit' }\n )\n } else {\n _childProcess = childProcess.spawn(editor, args, { stdio: 'inherit' })\n }\n _childProcess.on('exit', function (errorCode) {\n _childProcess = null\n\n if (errorCode) {\n onErrorCallback(fileName, '(code ' + errorCode + ')')\n }\n })\n\n _childProcess.on('error', function (error) {\n onErrorCallback(fileName, error.message)\n })\n}\n\nmodule.exports = launchEditor\n","const url = require('url')\nconst path = require('path')\nconst launch = require('launch-editor')\n\nmodule.exports = (specifiedEditor, srcRoot, onErrorCallback) => {\n if (typeof specifiedEditor === 'function') {\n onErrorCallback = specifiedEditor\n specifiedEditor = undefined\n }\n\n if (typeof srcRoot === 'function') {\n onErrorCallback = srcRoot\n srcRoot = undefined\n }\n\n srcRoot = srcRoot || process.cwd()\n\n return function launchEditorMiddleware (req, res, next) {\n const { file } = url.parse(req.url, true).query || {}\n if (!file) {\n res.statusCode = 500\n res.end(`launch-editor-middleware: required query param \"file\" is missing.`)\n } else {\n launch(path.resolve(srcRoot, file), specifiedEditor, onErrorCallback)\n res.end()\n }\n }\n}\n","import path from 'path'\nimport { Loader, Plugin, ImportKind } from 'esbuild'\nimport { KNOWN_ASSET_TYPES } from '../constants'\nimport { ResolvedConfig } from '..'\nimport {\n isRunningWithYarnPnp,\n flattenId,\n normalizePath,\n isExternalUrl,\n moduleListContains\n} from '../utils'\nimport { browserExternalId } from '../plugins/resolve'\nimport { ExportsData } from '.'\n\nconst externalTypes = [\n 'css',\n // supported pre-processor types\n 'less',\n 'sass',\n 'scss',\n 'styl',\n 'stylus',\n 'pcss',\n 'postcss',\n // known SFC types\n 'vue',\n 'svelte',\n 'marko',\n 'astro',\n // JSX/TSX may be configured to be compiled differently from how esbuild\n // handles it by default, so exclude them as well\n 'jsx',\n 'tsx',\n ...KNOWN_ASSET_TYPES\n]\n\nexport function esbuildDepPlugin(\n qualified: Record,\n exportsData: Record,\n config: ResolvedConfig,\n ssr?: boolean\n): Plugin {\n // default resolver which prefers ESM\n const _resolve = config.createResolver({ asSrc: false })\n\n // cjs resolver that prefers Node\n const _resolveRequire = config.createResolver({\n asSrc: false,\n isRequire: true\n })\n\n const resolve = (\n id: string,\n importer: string,\n kind: ImportKind,\n resolveDir?: string\n ): Promise => {\n let _importer: string\n // explicit resolveDir - this is passed only during yarn pnp resolve for\n // entries\n if (resolveDir) {\n _importer = normalizePath(path.join(resolveDir, '*'))\n } else {\n // map importer ids to file paths for correct resolution\n _importer = importer in qualified ? qualified[importer] : importer\n }\n const resolver = kind.startsWith('require') ? _resolveRequire : _resolve\n return resolver(id, _importer, undefined, ssr)\n }\n\n return {\n name: 'vite:dep-pre-bundle',\n setup(build) {\n // externalize assets and commonly known non-js file types\n build.onResolve(\n {\n filter: new RegExp(`\\\\.(` + externalTypes.join('|') + `)(\\\\?.*)?$`)\n },\n async ({ path: id, importer, kind }) => {\n const resolved = await resolve(id, importer, kind)\n if (resolved) {\n return {\n path: resolved,\n external: true\n }\n }\n }\n )\n\n function resolveEntry(id: string) {\n const flatId = flattenId(id)\n if (flatId in qualified) {\n return {\n path: flatId,\n namespace: 'dep'\n }\n }\n }\n\n build.onResolve(\n { filter: /^[\\w@][^:]/ },\n async ({ path: id, importer, kind }) => {\n if (moduleListContains(config.optimizeDeps?.exclude, id)) {\n return {\n path: id,\n external: true\n }\n }\n\n // ensure esbuild uses our resolved entries\n let entry: { path: string; namespace: string } | undefined\n // if this is an entry, return entry namespace resolve result\n if (!importer) {\n if ((entry = resolveEntry(id))) return entry\n // check if this is aliased to an entry - also return entry namespace\n const aliased = await _resolve(id, undefined, true)\n if (aliased && (entry = resolveEntry(aliased))) {\n return entry\n }\n }\n\n // use vite's own resolver\n const resolved = await resolve(id, importer, kind)\n if (resolved) {\n if (resolved.startsWith(browserExternalId)) {\n return {\n path: id,\n namespace: 'browser-external'\n }\n }\n if (isExternalUrl(resolved)) {\n return {\n path: resolved,\n external: true\n }\n }\n return {\n path: path.resolve(resolved)\n }\n }\n }\n )\n\n // For entry files, we'll read it ourselves and construct a proxy module\n // to retain the entry's raw id instead of file path so that esbuild\n // outputs desired output file structure.\n // It is necessary to do the re-exporting to separate the virtual proxy\n // module from the actual module since the actual module may get\n // referenced via relative imports - if we don't separate the proxy and\n // the actual module, esbuild will create duplicated copies of the same\n // module!\n const root = path.resolve(config.root)\n build.onLoad({ filter: /.*/, namespace: 'dep' }, ({ path: id }) => {\n const entryFile = qualified[id]\n\n let relativePath = normalizePath(path.relative(root, entryFile))\n if (\n !relativePath.startsWith('./') &&\n !relativePath.startsWith('../') &&\n relativePath !== '.'\n ) {\n relativePath = `./${relativePath}`\n }\n\n let contents = ''\n const data = exportsData[id]\n const [imports, exports] = data\n if (!imports.length && !exports.length) {\n // cjs\n contents += `export default require(\"${relativePath}\");`\n } else {\n if (exports.includes('default')) {\n contents += `import d from \"${relativePath}\";export default d;`\n }\n if (\n data.hasReExports ||\n exports.length > 1 ||\n exports[0] !== 'default'\n ) {\n contents += `\\nexport * from \"${relativePath}\"`\n }\n }\n\n let ext = path.extname(entryFile).slice(1)\n if (ext === 'mjs') ext = 'js'\n return {\n loader: ext as Loader,\n contents,\n resolveDir: root\n }\n })\n\n build.onLoad(\n { filter: /.*/, namespace: 'browser-external' },\n ({ path: id }) => {\n return {\n contents:\n `export default new Proxy({}, {\n get() {\n throw new Error('Module \"${id}\" has been externalized for ` +\n `browser compatibility and cannot be accessed in client code.')\n }\n})`\n }\n }\n )\n\n // yarn 2 pnp compat\n if (isRunningWithYarnPnp) {\n build.onResolve(\n { filter: /.*/ },\n async ({ path, importer, kind, resolveDir }) => ({\n // pass along resolveDir for entries\n path: await resolve(path, importer, kind, resolveDir)\n })\n )\n build.onLoad({ filter: /.*/ }, async (args) => ({\n contents: await require('fs').promises.readFile(args.path),\n loader: 'default'\n }))\n }\n }\n }\n}\n","import fs from 'fs'\nimport path from 'path'\nimport chalk from 'chalk'\nimport { createHash } from 'crypto'\nimport { build, BuildOptions as EsbuildBuildOptions } from 'esbuild'\nimport { ResolvedConfig } from '../config'\nimport {\n createDebugger,\n emptyDir,\n lookupFile,\n normalizePath,\n writeFile,\n flattenId,\n normalizeId\n} from '../utils'\nimport { esbuildDepPlugin } from './esbuildDepPlugin'\nimport { init, parse } from 'es-module-lexer'\nimport { scanImports } from './scan'\nimport { transformWithEsbuild } from '../plugins/esbuild'\nimport { performance } from 'perf_hooks'\n\nconst debug = createDebugger('vite:deps')\n\nexport type ExportsData = ReturnType & {\n // es-module-lexer has a facade detection but isn't always accurate for our\n // use case when the module has default export\n hasReExports?: true\n}\n\nexport interface DepOptimizationOptions {\n /**\n * By default, Vite will crawl your index.html to detect dependencies that\n * need to be pre-bundled. If build.rollupOptions.input is specified, Vite\n * will crawl those entry points instead.\n *\n * If neither of these fit your needs, you can specify custom entries using\n * this option - the value should be a fast-glob pattern or array of patterns\n * (https://github.com/mrmlnc/fast-glob#basic-syntax) that are relative from\n * vite project root. This will overwrite default entries inference.\n */\n entries?: string | string[]\n /**\n * Force optimize listed dependencies (must be resolvable import paths,\n * cannot be globs).\n */\n include?: string[]\n /**\n * Do not optimize these dependencies (must be resolvable import paths,\n * cannot be globs).\n */\n exclude?: string[]\n /**\n * Options to pass to esbuild during the dep scanning and optimization\n *\n * Certain options are omitted since changing them would not be compatible\n * with Vite's dep optimization.\n *\n * - `external` is also omitted, use Vite's `optimizeDeps.exclude` option\n * - `plugins` are merged with Vite's dep plugin\n * - `keepNames` takes precedence over the deprecated `optimizeDeps.keepNames`\n *\n * https://esbuild.github.io/api\n */\n esbuildOptions?: Omit<\n EsbuildBuildOptions,\n | 'bundle'\n | 'entryPoints'\n | 'external'\n | 'write'\n | 'watch'\n | 'outdir'\n | 'outfile'\n | 'outbase'\n | 'outExtension'\n | 'metafile'\n >\n /**\n * @deprecated use `esbuildOptions.keepNames`\n */\n keepNames?: boolean\n}\n\nexport interface DepOptimizationMetadata {\n /**\n * The main hash is determined by user config and dependency lockfiles.\n * This is checked on server startup to avoid unnecessary re-bundles.\n */\n hash: string\n /**\n * The browser hash is determined by the main hash plus additional dependencies\n * discovered at runtime. This is used to invalidate browser requests to\n * optimized deps.\n */\n browserHash: string\n optimized: Record<\n string,\n {\n file: string\n src: string\n needsInterop: boolean\n }\n >\n}\n\nexport async function optimizeDeps(\n config: ResolvedConfig,\n force = config.server.force,\n asCommand = false,\n newDeps?: Record, // missing imports encountered after server has started\n ssr?: boolean\n): Promise {\n config = {\n ...config,\n command: 'build'\n }\n\n const { root, logger, cacheDir } = config\n const log = asCommand ? logger.info : debug\n\n if (!cacheDir) {\n log(`No cache directory. Skipping.`)\n return null\n }\n\n const dataPath = path.join(cacheDir, '_metadata.json')\n const mainHash = getDepHash(root, config)\n const data: DepOptimizationMetadata = {\n hash: mainHash,\n browserHash: mainHash,\n optimized: {}\n }\n\n if (!force) {\n let prevData: DepOptimizationMetadata | undefined\n try {\n prevData = JSON.parse(fs.readFileSync(dataPath, 'utf-8'))\n } catch (e) {}\n // hash is consistent, no need to re-bundle\n if (prevData && prevData.hash === data.hash) {\n log('Hash is consistent. Skipping. Use --force to override.')\n return prevData\n }\n }\n\n if (fs.existsSync(cacheDir)) {\n emptyDir(cacheDir)\n } else {\n fs.mkdirSync(cacheDir, { recursive: true })\n }\n // a hint for Node.js\n // all files in the cache directory should be recognized as ES modules\n writeFile(\n path.resolve(cacheDir, 'package.json'),\n JSON.stringify({ type: 'module' })\n )\n\n let deps: Record, missing: Record\n if (!newDeps) {\n ;({ deps, missing } = await scanImports(config))\n } else {\n deps = newDeps\n missing = {}\n }\n\n // update browser hash\n data.browserHash = createHash('sha256')\n .update(data.hash + JSON.stringify(deps))\n .digest('hex')\n .substring(0, 8)\n\n const missingIds = Object.keys(missing)\n if (missingIds.length) {\n throw new Error(\n `The following dependencies are imported but could not be resolved:\\n\\n ${missingIds\n .map(\n (id) =>\n `${chalk.cyan(id)} ${chalk.white.dim(\n `(imported by ${missing[id]})`\n )}`\n )\n .join(`\\n `)}\\n\\nAre they installed?`\n )\n }\n\n const include = config.optimizeDeps?.include\n if (include) {\n const resolve = config.createResolver({ asSrc: false })\n for (const id of include) {\n // normalize 'foo >bar` as 'foo > bar' to prevent same id being added\n // and for pretty printing\n const normalizedId = normalizeId(id)\n if (!deps[normalizedId]) {\n const entry = await resolve(id)\n if (entry) {\n deps[normalizedId] = entry\n } else {\n throw new Error(\n `Failed to resolve force included dependency: ${chalk.cyan(id)}`\n )\n }\n }\n }\n }\n\n const qualifiedIds = Object.keys(deps)\n\n if (!qualifiedIds.length) {\n writeFile(dataPath, JSON.stringify(data, null, 2))\n log(`No dependencies to bundle. Skipping.\\n\\n\\n`)\n return data\n }\n\n const total = qualifiedIds.length\n const maxListed = 5\n const listed = Math.min(total, maxListed)\n const extra = Math.max(0, total - maxListed)\n const depsString = chalk.yellow(\n qualifiedIds.slice(0, listed).join(`\\n `) +\n (extra > 0 ? `\\n (...and ${extra} more)` : ``)\n )\n if (!asCommand) {\n if (!newDeps) {\n // This is auto run on server start - let the user know that we are\n // pre-optimizing deps\n logger.info(\n chalk.greenBright(`Pre-bundling dependencies:\\n ${depsString}`)\n )\n logger.info(\n `(this will be run only when your dependencies or config have changed)`\n )\n }\n } else {\n logger.info(chalk.greenBright(`Optimizing dependencies:\\n ${depsString}`))\n }\n\n // esbuild generates nested directory output with lowest common ancestor base\n // this is unpredictable and makes it difficult to analyze entry / output\n // mapping. So what we do here is:\n // 1. flatten all ids to eliminate slash\n // 2. in the plugin, read the entry ourselves as virtual files to retain the\n // path.\n const flatIdDeps: Record = {}\n const idToExports: Record = {}\n const flatIdToExports: Record = {}\n\n const { plugins = [], ...esbuildOptions } =\n config.optimizeDeps?.esbuildOptions ?? {}\n\n await init\n for (const id in deps) {\n const flatId = flattenId(id)\n const filePath = (flatIdDeps[flatId] = deps[id])\n const entryContent = fs.readFileSync(filePath, 'utf-8')\n let exportsData: ExportsData\n try {\n exportsData = parse(entryContent) as ExportsData\n } catch {\n debug(\n `Unable to parse dependency: ${id}. Trying again with a JSX transform.`\n )\n const transformed = await transformWithEsbuild(entryContent, filePath, {\n loader: 'jsx'\n })\n // Ensure that optimization won't fail by defaulting '.js' to the JSX parser.\n // This is useful for packages such as Gatsby.\n esbuildOptions.loader = {\n '.js': 'jsx',\n ...esbuildOptions.loader\n }\n exportsData = parse(transformed.code) as ExportsData\n }\n for (const { ss, se } of exportsData[0]) {\n const exp = entryContent.slice(ss, se)\n if (/export\\s+\\*\\s+from/.test(exp)) {\n exportsData.hasReExports = true\n }\n }\n idToExports[id] = exportsData\n flatIdToExports[flatId] = exportsData\n }\n\n const define: Record = {\n 'process.env.NODE_ENV': JSON.stringify(config.mode)\n }\n for (const key in config.define) {\n const value = config.define[key]\n define[key] = typeof value === 'string' ? value : JSON.stringify(value)\n }\n\n const start = performance.now()\n\n const result = await build({\n absWorkingDir: process.cwd(),\n entryPoints: Object.keys(flatIdDeps),\n bundle: true,\n format: 'esm',\n target: config.build.target || undefined,\n external: config.optimizeDeps?.exclude,\n logLevel: 'error',\n splitting: true,\n sourcemap: true,\n outdir: cacheDir,\n ignoreAnnotations: true,\n metafile: true,\n define,\n plugins: [\n ...plugins,\n esbuildDepPlugin(flatIdDeps, flatIdToExports, config, ssr)\n ],\n ...esbuildOptions\n })\n\n const meta = result.metafile!\n\n // the paths in `meta.outputs` are relative to `process.cwd()`\n const cacheDirOutputPath = path.relative(process.cwd(), cacheDir)\n\n for (const id in deps) {\n const entry = deps[id]\n data.optimized[id] = {\n file: normalizePath(path.resolve(cacheDir, flattenId(id) + '.js')),\n src: entry,\n needsInterop: needsInterop(\n id,\n idToExports[id],\n meta.outputs,\n cacheDirOutputPath\n )\n }\n }\n\n writeFile(dataPath, JSON.stringify(data, null, 2))\n\n debug(`deps bundled in ${(performance.now() - start).toFixed(2)}ms`)\n return data\n}\n\n// https://github.com/vitejs/vite/issues/1724#issuecomment-767619642\n// a list of modules that pretends to be ESM but still uses `require`.\n// this causes esbuild to wrap them as CJS even when its entry appears to be ESM.\nconst KNOWN_INTEROP_IDS = new Set(['moment'])\n\nfunction needsInterop(\n id: string,\n exportsData: ExportsData,\n outputs: Record,\n cacheDirOutputPath: string\n): boolean {\n if (KNOWN_INTEROP_IDS.has(id)) {\n return true\n }\n const [imports, exports] = exportsData\n // entry has no ESM syntax - likely CJS or UMD\n if (!exports.length && !imports.length) {\n return true\n }\n\n // if a peer dependency used require() on a ESM dependency, esbuild turns the\n // ESM dependency's entry chunk into a single default export... detect\n // such cases by checking exports mismatch, and force interop.\n const flatId = flattenId(id) + '.js'\n let generatedExports: string[] | undefined\n for (const output in outputs) {\n if (\n normalizePath(output) ===\n normalizePath(path.join(cacheDirOutputPath, flatId))\n ) {\n generatedExports = outputs[output].exports\n break\n }\n }\n\n if (\n !generatedExports ||\n (isSingleDefaultExport(generatedExports) && !isSingleDefaultExport(exports))\n ) {\n return true\n }\n return false\n}\n\nfunction isSingleDefaultExport(exports: readonly string[]) {\n return exports.length === 1 && exports[0] === 'default'\n}\n\nconst lockfileFormats = ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml']\n\nfunction getDepHash(root: string, config: ResolvedConfig): string {\n let content = lookupFile(root, lockfileFormats) || ''\n // also take config into account\n // only a subset of config options that can affect dep optimization\n content += JSON.stringify(\n {\n mode: config.mode,\n root: config.root,\n resolve: config.resolve,\n assetsInclude: config.assetsInclude,\n plugins: config.plugins.map((p) => p.name),\n optimizeDeps: {\n include: config.optimizeDeps?.include,\n exclude: config.optimizeDeps?.exclude\n }\n },\n (_, value) => {\n if (typeof value === 'function' || value instanceof RegExp) {\n return value.toString()\n }\n return value\n }\n )\n return createHash('sha256').update(content).digest('hex').substring(0, 8)\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","import { SourceMapConsumer, RawSourceMap } from 'source-map'\nimport { ModuleGraph } from '../server/moduleGraph'\n\nlet offset: number\ntry {\n new Function('throw new Error(1)')()\n} catch (e) {\n // in Node 12, stack traces account for the function wrapper.\n // in Node 13 and later, the function wrapper adds two lines,\n // which must be subtracted to generate a valid mapping\n const match = /:(\\d+):\\d+\\)$/.exec(e.stack.split('\\n')[1])\n offset = match ? +match[1] - 1 : 0\n}\n\nexport function ssrRewriteStacktrace(\n stack: string,\n moduleGraph: ModuleGraph\n): string {\n return stack\n .split('\\n')\n .map((line) => {\n return line.replace(\n /^ {4}at (?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?)\\)?/,\n (input, varName, url, line, column) => {\n if (!url) return input\n\n const mod = moduleGraph.urlToModuleMap.get(url)\n const rawSourceMap = mod?.ssrTransformResult?.map\n\n if (!rawSourceMap) {\n return input\n }\n\n // In `source-map:v0.7.0+` this constructor returns a Promise...\n // How can we make this block async?\n const consumer = new SourceMapConsumer(\n rawSourceMap as unknown as RawSourceMap\n )\n\n const pos = consumer.originalPositionFor({\n line: Number(line) - offset,\n column: Number(column),\n bias: SourceMapConsumer.LEAST_UPPER_BOUND\n })\n\n if (!pos.source) {\n return input\n }\n\n const source = `${pos.source}:${pos.line || 0}:${pos.column || 0}`\n if (!varName || varName === 'eval') {\n return ` at ${source}`\n } else {\n return ` at ${varName} (${source})`\n }\n }\n )\n })\n .join('\\n')\n}\n\nexport function rebindErrorStacktrace(e: Error, stacktrace: string): void {\n const { configurable, writable } = Object.getOwnPropertyDescriptor(\n e,\n 'stack'\n )!\n if (configurable) {\n Object.defineProperty(e, 'stack', {\n value: stacktrace,\n enumerable: true,\n configurable: true,\n writable: true\n })\n } else if (writable) {\n e.stack = stacktrace\n }\n}\n","import MagicString from 'magic-string'\nimport { ResolvedConfig } from '..'\nimport { Plugin } from '../plugin'\nimport { arraify } from '../utils'\n\n/**\n * This plugin hooks into Node's module resolution algorithm at runtime,\n * so that SSR builds can benefit from `resolve.dedupe` like they do\n * in development.\n */\nexport function ssrRequireHookPlugin(config: ResolvedConfig): Plugin | null {\n if (\n config.command !== 'build' ||\n !config.resolve.dedupe?.length ||\n config.ssr?.noExternal === true ||\n isBuildOutputEsm(config)\n ) {\n return null\n }\n return {\n name: 'vite:ssr-require-hook',\n transform(code, id) {\n const moduleInfo = this.getModuleInfo(id)\n if (moduleInfo?.isEntry) {\n const s = new MagicString(code)\n s.prepend(\n `;(${dedupeRequire.toString()})(${JSON.stringify(\n config.resolve.dedupe\n )});\\n`\n )\n return {\n code: s.toString(),\n map: s.generateMap({\n source: id\n })\n }\n }\n }\n }\n}\n\ntype NodeResolveFilename = (\n request: string,\n parent: NodeModule,\n isMain: boolean,\n options?: Record\n) => string\n\n/** Respect the `resolve.dedupe` option in production SSR. */\nfunction dedupeRequire(dedupe: string[]) {\n const Module = require('module') as { _resolveFilename: NodeResolveFilename }\n const resolveFilename = Module._resolveFilename\n Module._resolveFilename = function (request, parent, isMain, options) {\n if (request[0] !== '.' && request[0] !== '/') {\n const parts = request.split('/')\n const pkgName = parts[0][0] === '@' ? parts[0] + '/' + parts[1] : parts[0]\n if (dedupe.includes(pkgName)) {\n // Use this module as the parent.\n parent = module\n }\n }\n return resolveFilename!(request, parent, isMain, options)\n }\n}\n\nexport function hookNodeResolve(\n getResolver: (resolveFilename: NodeResolveFilename) => NodeResolveFilename\n): () => void {\n const Module = require('module') as { _resolveFilename: NodeResolveFilename }\n const prevResolver = Module._resolveFilename\n Module._resolveFilename = getResolver(prevResolver)\n return () => {\n Module._resolveFilename = prevResolver\n }\n}\n\nfunction isBuildOutputEsm(config: ResolvedConfig) {\n const outputs = arraify(config.build.rollupOptions?.output)\n return outputs.some(\n (output) => output?.format === 'es' || output?.format === 'esm'\n )\n}\n","import path from 'path'\nimport { pathToFileURL } from 'url'\nimport { ViteDevServer } from '../server'\nimport {\n dynamicImport,\n isBuiltin,\n unwrapId,\n usingDynamicImport\n} from '../utils'\nimport { rebindErrorStacktrace, ssrRewriteStacktrace } from './ssrStacktrace'\nimport {\n ssrExportAllKey,\n ssrModuleExportsKey,\n ssrImportKey,\n ssrImportMetaKey,\n ssrDynamicImportKey\n} from './ssrTransform'\nimport { transformRequest } from '../server/transformRequest'\nimport { InternalResolveOptions, tryNodeResolve } from '../plugins/resolve'\nimport { hookNodeResolve } from '../plugins/ssrRequireHook'\n\ninterface SSRContext {\n global: typeof globalThis\n}\n\ntype SSRModule = Record\n\nconst pendingModules = new Map>()\nconst pendingImports = new Map()\n\nexport async function ssrLoadModule(\n url: string,\n server: ViteDevServer,\n context: SSRContext = { global },\n urlStack: string[] = []\n): Promise {\n url = unwrapId(url)\n\n // when we instantiate multiple dependency modules in parallel, they may\n // point to shared modules. We need to avoid duplicate instantiation attempts\n // by register every module as pending synchronously so that all subsequent\n // request to that module are simply waiting on the same promise.\n const pending = pendingModules.get(url)\n if (pending) {\n return pending\n }\n\n const modulePromise = instantiateModule(url, server, context, urlStack)\n pendingModules.set(url, modulePromise)\n modulePromise\n .catch(() => {\n pendingImports.delete(url)\n })\n .finally(() => {\n pendingModules.delete(url)\n })\n return modulePromise\n}\n\nasync function instantiateModule(\n url: string,\n server: ViteDevServer,\n context: SSRContext = { global },\n urlStack: string[] = []\n): Promise {\n const { moduleGraph } = server\n const mod = await moduleGraph.ensureEntryFromUrl(url)\n\n if (mod.ssrModule) {\n return mod.ssrModule\n }\n\n const result =\n mod.ssrTransformResult ||\n (await transformRequest(url, server, { ssr: true }))\n if (!result) {\n // TODO more info? is this even necessary?\n throw new Error(`failed to load module for ssr: ${url}`)\n }\n\n const ssrModule = {\n [Symbol.toStringTag]: 'Module'\n }\n Object.defineProperty(ssrModule, '__esModule', { value: true })\n\n // Tolerate circular imports by ensuring the module can be\n // referenced before it's been instantiated.\n mod.ssrModule = ssrModule\n\n const ssrImportMeta = {\n // The filesystem URL, matching native Node.js modules\n url: pathToFileURL(mod.file!).toString()\n }\n\n urlStack = urlStack.concat(url)\n const isCircular = (url: string) => urlStack.includes(url)\n\n const {\n isProduction,\n resolve: { dedupe, preserveSymlinks },\n root\n } = server.config\n\n // The `extensions` and `mainFields` options are used to ensure that\n // CommonJS modules are preferred. We want to avoid ESM->ESM imports\n // whenever possible, because `hookNodeResolve` can't intercept them.\n const resolveOptions: InternalResolveOptions = {\n dedupe,\n extensions: ['.js', '.cjs', '.json'],\n isBuild: true,\n isProduction,\n isRequire: true,\n mainFields: ['main'],\n preserveSymlinks,\n root\n }\n\n // Since dynamic imports can happen in parallel, we need to\n // account for multiple pending deps and duplicate imports.\n const pendingDeps: string[] = []\n\n const ssrImport = async (dep: string) => {\n if (dep[0] !== '.' && dep[0] !== '/') {\n return nodeImport(dep, mod.file!, resolveOptions)\n }\n dep = unwrapId(dep)\n if (!isCircular(dep) && !pendingImports.get(dep)?.some(isCircular)) {\n pendingDeps.push(dep)\n if (pendingDeps.length === 1) {\n pendingImports.set(url, pendingDeps)\n }\n const mod = await ssrLoadModule(dep, server, context, urlStack)\n if (pendingDeps.length === 1) {\n pendingImports.delete(url)\n } else {\n pendingDeps.splice(pendingDeps.indexOf(dep), 1)\n }\n // return local module to avoid race condition #5470\n return mod\n }\n return moduleGraph.urlToModuleMap.get(dep)?.ssrModule\n }\n\n const ssrDynamicImport = (dep: string) => {\n // #3087 dynamic import vars is ignored at rewrite import path,\n // so here need process relative path\n if (dep[0] === '.') {\n dep = path.posix.resolve(path.dirname(url), dep)\n }\n return ssrImport(dep)\n }\n\n function ssrExportAll(sourceModule: any) {\n for (const key in sourceModule) {\n if (key !== 'default') {\n Object.defineProperty(ssrModule, key, {\n enumerable: true,\n configurable: true,\n get() {\n return sourceModule[key]\n }\n })\n }\n }\n }\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const AsyncFunction = async function () {}.constructor as typeof Function\n const initModule = new AsyncFunction(\n `global`,\n ssrModuleExportsKey,\n ssrImportMetaKey,\n ssrImportKey,\n ssrDynamicImportKey,\n ssrExportAllKey,\n result.code + `\\n//# sourceURL=${mod.url}`\n )\n await initModule(\n context.global,\n ssrModule,\n ssrImportMeta,\n ssrImport,\n ssrDynamicImport,\n ssrExportAll\n )\n } catch (e) {\n const stacktrace = ssrRewriteStacktrace(e.stack, moduleGraph)\n rebindErrorStacktrace(e, stacktrace)\n server.config.logger.error(\n `Error when evaluating SSR module ${url}:\\n${stacktrace}`,\n {\n timestamp: true,\n clear: server.config.clearScreen,\n error: e\n }\n )\n throw e\n }\n\n return Object.freeze(ssrModule)\n}\n\n// In node@12+ we can use dynamic import to load CJS and ESM\nasync function nodeImport(\n id: string,\n importer: string,\n resolveOptions: InternalResolveOptions\n) {\n // Node's module resolution is hi-jacked so Vite can ensure the\n // configured `resolve.dedupe` and `mode` options are respected.\n const viteResolve = (\n id: string,\n importer: string,\n options = resolveOptions\n ) => {\n const resolved = tryNodeResolve(id, importer, options, false)\n if (!resolved) {\n const err: any = new Error(\n `Cannot find module '${id}' imported from '${importer}'`\n )\n err.code = 'ERR_MODULE_NOT_FOUND'\n throw err\n }\n return resolved.id\n }\n\n // When an ESM module imports an ESM dependency, this hook is *not* used.\n const unhookNodeResolve = hookNodeResolve(\n (nodeResolve) => (id, parent, isMain, options) => {\n // Fix #5709, use require to resolve files with the '.node' file extension.\n // See detail, https://nodejs.org/api/addons.html#addons_loading_addons_using_require\n if (id[0] === '.' || isBuiltin(id) || id.endsWith('.node')) {\n return nodeResolve(id, parent, isMain, options)\n }\n if (parent) {\n return viteResolve(id, parent.id)\n }\n // Importing a CJS module from an ESM module. In this case, the import\n // specifier is already an absolute path, so this is a no-op.\n // Options like `resolve.dedupe` and `mode` are not respected.\n return id\n }\n )\n\n let url: string\n if (id.startsWith('node:') || isBuiltin(id)) {\n url = id\n } else {\n url = viteResolve(\n id,\n importer,\n // Non-external modules can import ESM-only modules, but only outside\n // of test runs, because we use Node `require` in Jest to avoid segfault.\n typeof jest === 'undefined'\n ? { ...resolveOptions, tryEsmOnly: true }\n : resolveOptions\n )\n if (usingDynamicImport) {\n url = pathToFileURL(url).toString()\n }\n }\n\n try {\n const mod = await dynamicImport(url)\n return proxyESM(mod)\n } finally {\n unhookNodeResolve()\n }\n}\n\n// rollup-style default import interop for cjs\nfunction proxyESM(mod: any) {\n const defaultExport = getDefaultExport(mod)\n return new Proxy(mod, {\n get(mod, prop) {\n if (prop === 'default') return defaultExport\n return mod[prop] ?? defaultExport?.[prop]\n }\n })\n}\n\nfunction getDefaultExport(moduleExports: any) {\n // `moduleExports` is one of the following:\n // - `const moduleExports = require(file)`\n // - `const moduleExports = await import(file)`\n let defaultExport =\n 'default' in moduleExports ? moduleExports.default : moduleExports\n\n // Node.js doesn't support `__esModule`, see https://github.com/nodejs/node/issues/40891\n // This means we need to unwrap the `__esModule` wrapper ourselves.\n //\n // For example:\n // ```ts\n // export default 'hi'\n // ```\n //\n // Which TypeScript transpiles to:\n // ```js\n // use strict\";\n // exports.__esModule = true;\n // exports[\"default\"] = 'hi';\n // ```\n //\n // This means that `moduleExports.default` denotes `{ __esModule, default: 'hi }` thus the actual\n // default lives in `moduleExports.default.default`.\n if (defaultExport && '__esModule' in defaultExport) {\n defaultExport = defaultExport.default\n }\n\n return defaultExport\n}\n","import chalk from 'chalk'\nimport { optimizeDeps } from '.'\nimport { ViteDevServer } from '..'\nimport { resolveSSRExternal } from '../ssr/ssrExternal'\n\n/**\n * The amount to wait for requests to register newly found dependencies before triggering\n * a re-bundle + page reload\n */\nconst debounceMs = 100\n\nexport function createMissingImporterRegisterFn(\n server: ViteDevServer\n): (id: string, resolved: string, ssr?: boolean) => void {\n const { logger } = server.config\n let knownOptimized = server._optimizeDepsMetadata!.optimized\n let currentMissing: Record = {}\n let handle: NodeJS.Timeout | undefined\n\n let pendingResolve: (() => void) | null = null\n\n async function rerun(ssr: boolean | undefined) {\n const newDeps = currentMissing\n currentMissing = {}\n\n logger.info(\n chalk.yellow(\n `new dependencies found: ${Object.keys(newDeps).join(\n ', '\n )}, updating...`\n ),\n {\n timestamp: true\n }\n )\n\n for (const id in knownOptimized) {\n newDeps[id] = knownOptimized[id].src\n }\n\n try {\n // Nullify previous metadata so that the resolver won't\n // resolve to optimized files during the optimizer re-run\n server._isRunningOptimizer = true\n server._optimizeDepsMetadata = null\n\n const newData = (server._optimizeDepsMetadata = await optimizeDeps(\n server.config,\n true,\n false,\n newDeps,\n ssr\n ))\n knownOptimized = newData!.optimized\n\n // update ssr externals\n server._ssrExternals = resolveSSRExternal(\n server.config,\n Object.keys(knownOptimized)\n )\n\n logger.info(\n chalk.greenBright(`✨ dependencies updated, reloading page...`),\n { timestamp: true }\n )\n } catch (e) {\n logger.error(\n chalk.red(`error while updating dependencies:\\n${e.stack}`),\n { timestamp: true, error: e }\n )\n } finally {\n server._isRunningOptimizer = false\n if (!handle) {\n // No other rerun() pending so resolve and let pending requests proceed\n pendingResolve && pendingResolve()\n server._pendingReload = pendingResolve = null\n }\n }\n\n // Cached transform results have stale imports (resolved to\n // old locations) so they need to be invalidated before the page is\n // reloaded.\n server.moduleGraph.invalidateAll()\n\n server.ws.send({\n type: 'full-reload',\n path: '*'\n })\n }\n\n return function registerMissingImport(\n id: string,\n resolved: string,\n ssr?: boolean\n ) {\n if (!knownOptimized[id]) {\n currentMissing[id] = resolved\n if (handle) clearTimeout(handle)\n handle = setTimeout(() => {\n handle = undefined\n rerun(ssr)\n }, debounceMs)\n if (!server._pendingReload) {\n server._pendingReload = new Promise((r) => {\n pendingResolve = r\n })\n }\n }\n }\n}\n","import fs from 'fs'\nimport { dirname } from 'path'\nimport { join } from 'path'\nimport { isFileReadable } from '../utils'\n\n// https://github.com/vitejs/vite/issues/2820#issuecomment-812495079\nconst ROOT_FILES = [\n // '.git',\n\n // https://pnpm.js.org/workspaces/\n 'pnpm-workspace.yaml'\n\n // https://rushjs.io/pages/advanced/config_files/\n // 'rush.json',\n\n // https://nx.dev/latest/react/getting-started/nx-setup\n // 'workspace.json',\n // 'nx.json'\n]\n\n// npm: https://docs.npmjs.com/cli/v7/using-npm/workspaces#installing-workspaces\n// yarn: https://classic.yarnpkg.com/en/docs/workspaces/#toc-how-to-use-it\nfunction hasWorkspacePackageJSON(root: string): boolean {\n const path = join(root, 'package.json')\n if (!isFileReadable(path)) {\n return false\n }\n const content = JSON.parse(fs.readFileSync(path, 'utf-8')) || {}\n return !!content.workspaces\n}\n\nfunction hasRootFile(root: string): boolean {\n return ROOT_FILES.some((file) => fs.existsSync(join(root, file)))\n}\n\nfunction hasPackageJSON(root: string) {\n const path = join(root, 'package.json')\n return fs.existsSync(path)\n}\n\n/**\n * Search up for the nearest `package.json`\n */\nexport function searchForPackageRoot(current: string, root = current): string {\n if (hasPackageJSON(current)) return current\n\n const dir = dirname(current)\n // reach the fs root\n if (!dir || dir === current) return root\n\n return searchForPackageRoot(dir, root)\n}\n\n/**\n * Search up for the nearest workspace root\n */\nexport function searchForWorkspaceRoot(\n current: string,\n root = searchForPackageRoot(current)\n): string {\n if (hasRootFile(current)) return current\n if (hasWorkspacePackageJSON(current)) return current\n\n const dir = dirname(current)\n // reach the fs root\n if (!dir || dir === current) return root\n\n return searchForWorkspaceRoot(dir, root)\n}\n","import fs from 'fs'\nimport path from 'path'\nimport * as net from 'net'\nimport * as http from 'http'\nimport connect from 'connect'\nimport corsMiddleware from 'cors'\nimport chalk from 'chalk'\nimport { AddressInfo } from 'net'\nimport chokidar from 'chokidar'\nimport {\n resolveHttpsConfig,\n resolveHttpServer,\n httpServerStart,\n CommonServerOptions\n} from '../http'\nimport { resolveConfig, InlineConfig, ResolvedConfig } from '../config'\nimport { createPluginContainer, PluginContainer } from './pluginContainer'\nimport { FSWatcher, WatchOptions } from 'types/chokidar'\nimport { createWebSocketServer, WebSocketServer } from './ws'\nimport { baseMiddleware } from './middlewares/base'\nimport { proxyMiddleware } from './middlewares/proxy'\nimport { spaFallbackMiddleware } from './middlewares/spaFallback'\nimport { transformMiddleware } from './middlewares/transform'\nimport {\n createDevHtmlTransformFn,\n indexHtmlMiddleware\n} from './middlewares/indexHtml'\nimport {\n serveRawFsMiddleware,\n servePublicMiddleware,\n serveStaticMiddleware\n} from './middlewares/static'\nimport { timeMiddleware } from './middlewares/time'\nimport { ModuleGraph, ModuleNode } from './moduleGraph'\nimport { Connect } from 'types/connect'\nimport { ensureLeadingSlash, normalizePath } from '../utils'\nimport { errorMiddleware, prepareError } from './middlewares/error'\nimport { handleHMRUpdate, HmrOptions, handleFileAddUnlink } from './hmr'\nimport { openBrowser } from './openBrowser'\nimport launchEditorMiddleware from 'launch-editor-middleware'\nimport {\n TransformOptions,\n TransformResult,\n transformRequest\n} from './transformRequest'\nimport {\n transformWithEsbuild,\n ESBuildTransformResult\n} from '../plugins/esbuild'\nimport { TransformOptions as EsbuildTransformOptions } from 'esbuild'\nimport { DepOptimizationMetadata, optimizeDeps } from '../optimizer'\nimport { ssrLoadModule } from '../ssr/ssrModuleLoader'\nimport { resolveSSRExternal } from '../ssr/ssrExternal'\nimport {\n rebindErrorStacktrace,\n ssrRewriteStacktrace\n} from '../ssr/ssrStacktrace'\nimport { createMissingImporterRegisterFn } from '../optimizer/registerMissing'\nimport { resolveHostname } from '../utils'\nimport { searchForWorkspaceRoot } from './searchRoot'\nimport { CLIENT_DIR } from '../constants'\nimport { printCommonServerUrls } from '../logger'\nimport { performance } from 'perf_hooks'\nimport { invalidatePackageData } from '../packages'\n\nexport { searchForWorkspaceRoot } from './searchRoot'\n\nexport interface ServerOptions extends CommonServerOptions {\n /**\n * Force dep pre-optimization regardless of whether deps have changed.\n */\n force?: boolean\n /**\n * Configure HMR-specific options (port, host, path & protocol)\n */\n hmr?: HmrOptions | boolean\n /**\n * chokidar watch options\n * https://github.com/paulmillr/chokidar#api\n */\n watch?: WatchOptions\n /**\n * Create Vite dev server to be used as a middleware in an existing server\n */\n middlewareMode?: boolean | 'html' | 'ssr'\n /**\n * Prepend this folder to http requests, for use when proxying vite as a subfolder\n * Should start and end with the `/` character\n */\n base?: string\n /**\n * Options for files served via '/\\@fs/'.\n */\n fs?: FileSystemServeOptions\n /**\n * Origin for the generated asset URLs.\n */\n origin?: string\n}\n\nexport interface ResolvedServerOptions extends ServerOptions {\n fs: Required\n}\n\nexport interface FileSystemServeOptions {\n /**\n * Strictly restrict file accessing outside of allowing paths.\n *\n * Set to `false` to disable the warning\n *\n * @default true\n */\n strict?: boolean\n\n /**\n * Restrict accessing files outside the allowed directories.\n *\n * Accepts absolute path or a path relative to project root.\n * Will try to search up for workspace root by default.\n */\n allow?: string[]\n\n /**\n * Restrict accessing files that matches the patterns.\n *\n * This will have higher priority than `allow`.\n * Glob patterns are supported.\n *\n * @default ['.env', '.env.*', '*.crt', '*.pem']\n *\n * @experimental\n */\n deny?: string[]\n}\n\nexport type ServerHook = (\n server: ViteDevServer\n) => (() => void) | void | Promise<(() => void) | void>\n\nexport interface ViteDevServer {\n /**\n * The resolved vite config object\n */\n config: ResolvedConfig\n /**\n * A connect app instance.\n * - Can be used to attach custom middlewares to the dev server.\n * - Can also be used as the handler function of a custom http server\n * or as a middleware in any connect-style Node.js frameworks\n *\n * https://github.com/senchalabs/connect#use-middleware\n */\n middlewares: Connect.Server\n /**\n * @deprecated use `server.middlewares` instead\n */\n app: Connect.Server\n /**\n * native Node http server instance\n * will be null in middleware mode\n */\n httpServer: http.Server | null\n /**\n * chokidar watcher instance\n * https://github.com/paulmillr/chokidar#api\n */\n watcher: FSWatcher\n /**\n * web socket server with `send(payload)` method\n */\n ws: WebSocketServer\n /**\n * Rollup plugin container that can run plugin hooks on a given file\n */\n pluginContainer: PluginContainer\n /**\n * Module graph that tracks the import relationships, url to file mapping\n * and hmr state.\n */\n moduleGraph: ModuleGraph\n /**\n * Programmatically resolve, load and transform a URL and get the result\n * without going through the http request pipeline.\n */\n transformRequest(\n url: string,\n options?: TransformOptions\n ): Promise\n /**\n * Apply vite built-in HTML transforms and any plugin HTML transforms.\n */\n transformIndexHtml(\n url: string,\n html: string,\n originalUrl?: string\n ): Promise\n /**\n * Util for transforming a file with esbuild.\n * Can be useful for certain plugins.\n *\n * @deprecated import `transformWithEsbuild` from `vite` instead\n */\n transformWithEsbuild(\n code: string,\n filename: string,\n options?: EsbuildTransformOptions,\n inMap?: object\n ): Promise\n /**\n * Load a given URL as an instantiated module for SSR.\n */\n ssrLoadModule(url: string): Promise>\n /**\n * Fix ssr error stacktrace\n */\n ssrFixStacktrace(e: Error): void\n /**\n * Start the server.\n */\n listen(port?: number, isRestart?: boolean): Promise\n /**\n * Stop the server.\n */\n close(): Promise\n /**\n * Print server urls\n */\n printUrls(): void\n /**\n * Restart the server.\n *\n * @param forceOptimize - force the optimizer to re-bundle, same as --force cli flag\n */\n restart(forceOptimize?: boolean): Promise\n /**\n * @internal\n */\n _optimizeDepsMetadata: DepOptimizationMetadata | null\n /**\n * Deps that are externalized\n * @internal\n */\n _ssrExternals: string[] | null\n /**\n * @internal\n */\n _globImporters: Record<\n string,\n {\n module: ModuleNode\n importGlobs: {\n base: string\n pattern: string\n }[]\n }\n >\n /**\n * @internal\n */\n _restartPromise: Promise | null\n /**\n * @internal\n */\n _forceOptimizeOnRestart: boolean\n /**\n * @internal\n */\n _isRunningOptimizer: boolean\n /**\n * @internal\n */\n _registerMissingImport:\n | ((id: string, resolved: string, ssr: boolean | undefined) => void)\n | null\n /**\n * @internal\n */\n _pendingReload: Promise | null\n /**\n * @internal\n */\n _pendingRequests: Map>\n}\n\nexport async function createServer(\n inlineConfig: InlineConfig = {}\n): Promise {\n const config = await resolveConfig(inlineConfig, 'serve', 'development')\n const root = config.root\n const serverConfig = config.server\n const httpsOptions = await resolveHttpsConfig(config.server.https)\n let { middlewareMode } = serverConfig\n if (middlewareMode === true) {\n middlewareMode = 'ssr'\n }\n\n const middlewares = connect() as Connect.Server\n const httpServer = middlewareMode\n ? null\n : await resolveHttpServer(serverConfig, middlewares, httpsOptions)\n const ws = createWebSocketServer(httpServer, config, httpsOptions)\n\n const { ignored = [], ...watchOptions } = serverConfig.watch || {}\n const watcher = chokidar.watch(path.resolve(root), {\n ignored: [\n '**/node_modules/**',\n '**/.git/**',\n ...(Array.isArray(ignored) ? ignored : [ignored])\n ],\n ignoreInitial: true,\n ignorePermissionErrors: true,\n disableGlobbing: true,\n ...watchOptions\n }) as FSWatcher\n\n const moduleGraph: ModuleGraph = new ModuleGraph((url) =>\n container.resolveId(url)\n )\n\n const container = await createPluginContainer(config, moduleGraph, watcher)\n const closeHttpServer = createServerCloseFn(httpServer)\n\n // eslint-disable-next-line prefer-const\n let exitProcess: () => void\n\n const server: ViteDevServer = {\n config,\n middlewares,\n get app() {\n config.logger.warn(\n `ViteDevServer.app is deprecated. Use ViteDevServer.middlewares instead.`\n )\n return middlewares\n },\n httpServer,\n watcher,\n pluginContainer: container,\n ws,\n moduleGraph,\n transformWithEsbuild,\n transformRequest(url, options) {\n return transformRequest(url, server, options)\n },\n transformIndexHtml: null!, // to be immediately set\n ssrLoadModule(url) {\n server._ssrExternals ||= resolveSSRExternal(\n config,\n server._optimizeDepsMetadata\n ? Object.keys(server._optimizeDepsMetadata.optimized)\n : []\n )\n return ssrLoadModule(url, server)\n },\n ssrFixStacktrace(e) {\n if (e.stack) {\n const stacktrace = ssrRewriteStacktrace(e.stack, moduleGraph)\n rebindErrorStacktrace(e, stacktrace)\n }\n },\n listen(port?: number, isRestart?: boolean) {\n return startServer(server, port, isRestart)\n },\n async close() {\n process.off('SIGTERM', exitProcess)\n\n if (!middlewareMode && process.env.CI !== 'true') {\n process.stdin.off('end', exitProcess)\n }\n\n await Promise.all([\n watcher.close(),\n ws.close(),\n container.close(),\n closeHttpServer()\n ])\n },\n printUrls() {\n if (httpServer) {\n printCommonServerUrls(httpServer, config.server, config)\n } else {\n throw new Error('cannot print server URLs in middleware mode.')\n }\n },\n async restart(forceOptimize: boolean) {\n if (!server._restartPromise) {\n server._forceOptimizeOnRestart = !!forceOptimize\n server._restartPromise = restartServer(server).finally(() => {\n server._restartPromise = null\n server._forceOptimizeOnRestart = false\n })\n }\n return server._restartPromise\n },\n\n _optimizeDepsMetadata: null,\n _ssrExternals: null,\n _globImporters: Object.create(null),\n _restartPromise: null,\n _forceOptimizeOnRestart: false,\n _isRunningOptimizer: false,\n _registerMissingImport: null,\n _pendingReload: null,\n _pendingRequests: new Map()\n }\n\n server.transformIndexHtml = createDevHtmlTransformFn(server)\n\n exitProcess = async () => {\n try {\n await server.close()\n } finally {\n process.exit(0)\n }\n }\n\n process.once('SIGTERM', exitProcess)\n\n if (!middlewareMode && process.env.CI !== 'true') {\n process.stdin.on('end', exitProcess)\n }\n\n const { packageCache } = config\n const setPackageData = packageCache.set.bind(packageCache)\n packageCache.set = (id, pkg) => {\n if (id.endsWith('.json')) {\n watcher.add(id)\n }\n return setPackageData(id, pkg)\n }\n\n watcher.on('change', async (file) => {\n file = normalizePath(file)\n if (file.endsWith('/package.json')) {\n return invalidatePackageData(packageCache, file)\n }\n // invalidate module graph cache on file change\n moduleGraph.onFileChange(file)\n if (serverConfig.hmr !== false) {\n try {\n await handleHMRUpdate(file, server)\n } catch (err) {\n ws.send({\n type: 'error',\n err: prepareError(err)\n })\n }\n }\n })\n\n watcher.on('add', (file) => {\n handleFileAddUnlink(normalizePath(file), server)\n })\n\n watcher.on('unlink', (file) => {\n handleFileAddUnlink(normalizePath(file), server, true)\n })\n\n if (!middlewareMode && httpServer) {\n httpServer.once('listening', () => {\n // update actual port since this may be different from initial value\n serverConfig.port = (httpServer.address() as AddressInfo).port\n })\n }\n\n // apply server configuration hooks from plugins\n const postHooks: ((() => void) | void)[] = []\n for (const plugin of config.plugins) {\n if (plugin.configureServer) {\n postHooks.push(await plugin.configureServer(server))\n }\n }\n\n // Internal middlewares ------------------------------------------------------\n\n // request timer\n if (process.env.DEBUG) {\n middlewares.use(timeMiddleware(root))\n }\n\n // cors (enabled by default)\n const { cors } = serverConfig\n if (cors !== false) {\n middlewares.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors))\n }\n\n // proxy\n const { proxy } = serverConfig\n if (proxy) {\n middlewares.use(proxyMiddleware(httpServer, config))\n }\n\n // base\n if (config.base !== '/') {\n middlewares.use(baseMiddleware(server))\n }\n\n // open in editor support\n middlewares.use('/__open-in-editor', launchEditorMiddleware())\n\n // hmr reconnect ping\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n middlewares.use('/__vite_ping', function viteHMRPingMiddleware(_, res) {\n res.end('pong')\n })\n\n // serve static files under /public\n // this applies before the transform middleware so that these files are served\n // as-is without transforms.\n if (config.publicDir) {\n middlewares.use(servePublicMiddleware(config.publicDir))\n }\n\n // main transform middleware\n middlewares.use(transformMiddleware(server))\n\n // serve static files\n middlewares.use(serveRawFsMiddleware(server))\n middlewares.use(serveStaticMiddleware(root, server))\n\n // spa fallback\n if (!middlewareMode || middlewareMode === 'html') {\n middlewares.use(spaFallbackMiddleware(root))\n }\n\n // run post config hooks\n // This is applied before the html middleware so that user middleware can\n // serve custom content instead of index.html.\n postHooks.forEach((fn) => fn && fn())\n\n if (!middlewareMode || middlewareMode === 'html') {\n // transform index.html\n middlewares.use(indexHtmlMiddleware(server))\n // handle 404s\n // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`\n middlewares.use(function vite404Middleware(_, res) {\n res.statusCode = 404\n res.end()\n })\n }\n\n // error handler\n middlewares.use(errorMiddleware(server, !!middlewareMode))\n\n const runOptimize = async () => {\n if (config.cacheDir) {\n server._isRunningOptimizer = true\n try {\n server._optimizeDepsMetadata = await optimizeDeps(\n config,\n config.server.force || server._forceOptimizeOnRestart\n )\n } finally {\n server._isRunningOptimizer = false\n }\n server._registerMissingImport = createMissingImporterRegisterFn(server)\n }\n }\n\n if (!middlewareMode && httpServer) {\n let isOptimized = false\n // overwrite listen to run optimizer before server start\n const listen = httpServer.listen.bind(httpServer)\n httpServer.listen = (async (port: number, ...args: any[]) => {\n if (!isOptimized) {\n try {\n await container.buildStart({})\n await runOptimize()\n isOptimized = true\n } catch (e) {\n httpServer.emit('error', e)\n return\n }\n }\n return listen(port, ...args)\n }) as any\n } else {\n await container.buildStart({})\n await runOptimize()\n }\n\n return server\n}\n\nasync function startServer(\n server: ViteDevServer,\n inlinePort?: number,\n isRestart: boolean = false\n): Promise {\n const httpServer = server.httpServer\n if (!httpServer) {\n throw new Error('Cannot call server.listen in middleware mode.')\n }\n\n const options = server.config.server\n const port = inlinePort || options.port || 3000\n const hostname = resolveHostname(options.host)\n\n const protocol = options.https ? 'https' : 'http'\n const info = server.config.logger.info\n const base = server.config.base\n\n const serverPort = await httpServerStart(httpServer, {\n port,\n strictPort: options.strictPort,\n host: hostname.host,\n logger: server.config.logger\n })\n\n // @ts-ignore\n const profileSession = global.__vite_profile_session\n if (profileSession) {\n profileSession.post('Profiler.stop', (err: any, { profile }: any) => {\n // Write profile to disk, upload, etc.\n if (!err) {\n const outPath = path.resolve('./vite-profile.cpuprofile')\n fs.writeFileSync(outPath, JSON.stringify(profile))\n info(\n chalk.yellow(` CPU profile written to ${chalk.white.dim(outPath)}\\n`)\n )\n } else {\n throw err\n }\n })\n }\n\n if (options.open && !isRestart) {\n const path = typeof options.open === 'string' ? options.open : base\n openBrowser(\n path.startsWith('http')\n ? path\n : `${protocol}://${hostname.name}:${serverPort}${path}`,\n true,\n server.config.logger\n )\n }\n\n return server\n}\n\nfunction createServerCloseFn(server: http.Server | null) {\n if (!server) {\n return () => {}\n }\n\n let hasListened = false\n const openSockets = new Set()\n\n server.on('connection', (socket) => {\n openSockets.add(socket)\n socket.on('close', () => {\n openSockets.delete(socket)\n })\n })\n\n server.once('listening', () => {\n hasListened = true\n })\n\n return () =>\n new Promise((resolve, reject) => {\n openSockets.forEach((s) => s.destroy())\n if (hasListened) {\n server.close((err) => {\n if (err) {\n reject(err)\n } else {\n resolve()\n }\n })\n } else {\n resolve()\n }\n })\n}\n\nfunction resolvedAllowDir(root: string, dir: string): string {\n return ensureLeadingSlash(normalizePath(path.resolve(root, dir)))\n}\n\nexport function resolveServerOptions(\n root: string,\n raw?: ServerOptions\n): ResolvedServerOptions {\n const server = raw || {}\n let allowDirs = server.fs?.allow\n const deny = server.fs?.deny || ['.env', '.env.*', '*.{crt,pem}']\n\n if (!allowDirs) {\n allowDirs = [searchForWorkspaceRoot(root)]\n }\n\n allowDirs = allowDirs.map((i) => resolvedAllowDir(root, i))\n\n // only push client dir when vite itself is outside-of-root\n const resolvedClientDir = resolvedAllowDir(root, CLIENT_DIR)\n if (!allowDirs.some((i) => resolvedClientDir.startsWith(i))) {\n allowDirs.push(resolvedClientDir)\n }\n\n server.fs = {\n strict: server.fs?.strict ?? true,\n allow: allowDirs,\n deny\n }\n return server as ResolvedServerOptions\n}\n\nasync function restartServer(server: ViteDevServer) {\n // @ts-ignore\n global.__vite_start_time = performance.now()\n const { port } = server.config.server\n\n await server.close()\n\n let newServer = null\n try {\n newServer = await createServer(server.config.inlineConfig)\n } catch (err: any) {\n server.config.logger.error(err.message, {\n timestamp: true\n })\n return\n }\n\n for (const key in newServer) {\n if (key !== 'app') {\n // @ts-ignore\n server[key] = newServer[key]\n }\n }\n if (!server.config.server.middlewareMode) {\n await server.listen(port, true)\n } else {\n server.config.logger.info('server restarted.', { timestamp: true })\n }\n}\n","/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n var accepts = accept.split(',');\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var charset = parseCharset(accepts[i].trim(), i);\n\n if (charset) {\n accepts[j++] = charset;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n var match = simpleCharsetRegExp.exec(str);\n if (!match) return null;\n\n var charset = match[1];\n var q = 1;\n if (match[2]) {\n var params = match[2].split(';')\n for (var j = 0; j < params.length; j++) {\n var p = params[j].trim().split('=');\n if (p[0] === 'q') {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n\n return {\n charset: charset,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(charset, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n var s = 0;\n if(spec.charset.toLowerCase() === charset.toLowerCase()){\n s |= 1;\n } else if (spec.charset !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n // RFC 2616 sec 14.2: no header = *\n var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n if (!provided) {\n // sorted list of all charsets\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullCharset);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getCharsetPriority(type, accepts, index);\n });\n\n // sorted list of accepted charsets\n return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n","/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n var accepts = accept.split(',');\n var hasIdentity = false;\n var minQuality = 1;\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var encoding = parseEncoding(accepts[i].trim(), i);\n\n if (encoding) {\n accepts[j++] = encoding;\n hasIdentity = hasIdentity || specify('identity', encoding);\n minQuality = Math.min(minQuality, encoding.q || 1);\n }\n }\n\n if (!hasIdentity) {\n /*\n * If identity doesn't explicitly appear in the accept-encoding header,\n * it's added to the list of acceptable encoding with the lowest q\n */\n accepts[j++] = {\n encoding: 'identity',\n q: minQuality,\n i: i\n };\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n var match = simpleEncodingRegExp.exec(str);\n if (!match) return null;\n\n var encoding = match[1];\n var q = 1;\n if (match[2]) {\n var params = match[2].split(';');\n for (var j = 0; j < params.length; j++) {\n var p = params[j].trim().split('=');\n if (p[0] === 'q') {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n\n return {\n encoding: encoding,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(encoding, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n var s = 0;\n if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n s |= 1;\n } else if (spec.encoding !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided) {\n var accepts = parseAcceptEncoding(accept || '');\n\n if (!provided) {\n // sorted list of all encodings\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullEncoding);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getEncodingPriority(type, accepts, index);\n });\n\n // sorted list of accepted encodings\n return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n","/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n var accepts = accept.split(',');\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var language = parseLanguage(accepts[i].trim(), i);\n\n if (language) {\n accepts[j++] = language;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n var match = simpleLanguageRegExp.exec(str);\n if (!match) return null;\n\n var prefix = match[1],\n suffix = match[2],\n full = prefix;\n\n if (suffix) full += \"-\" + suffix;\n\n var q = 1;\n if (match[3]) {\n var params = match[3].split(';')\n for (var j = 0; j < params.length; j++) {\n var p = params[j].split('=');\n if (p[0] === 'q') q = parseFloat(p[1]);\n }\n }\n\n return {\n prefix: prefix,\n suffix: suffix,\n q: q,\n i: i,\n full: full\n };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(language, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n var p = parseLanguage(language)\n if (!p) return null;\n var s = 0;\n if(spec.full.toLowerCase() === p.full.toLowerCase()){\n s |= 4;\n } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n s |= 2;\n } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n s |= 1;\n } else if (spec.full !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n // RFC 2616 sec 14.4: no header = *\n var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n if (!provided) {\n // sorted list of all languages\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullLanguage);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getLanguagePriority(type, accepts, index);\n });\n\n // sorted list of accepted languages\n return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n","/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n var accepts = splitMediaTypes(accept);\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var mediaType = parseMediaType(accepts[i].trim(), i);\n\n if (mediaType) {\n accepts[j++] = mediaType;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n var match = simpleMediaTypeRegExp.exec(str);\n if (!match) return null;\n\n var params = Object.create(null);\n var q = 1;\n var subtype = match[2];\n var type = match[1];\n\n if (match[3]) {\n var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n for (var j = 0; j < kvps.length; j++) {\n var pair = kvps[j];\n var key = pair[0].toLowerCase();\n var val = pair[1];\n\n // get the value, unwrapping quotes\n var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n ? val.substr(1, val.length - 2)\n : val;\n\n if (key === 'q') {\n q = parseFloat(value);\n break;\n }\n\n // store parameter\n params[key] = value;\n }\n }\n\n return {\n type: type,\n subtype: subtype,\n params: params,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(type, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n var p = parseMediaType(type);\n var s = 0;\n\n if (!p) {\n return null;\n }\n\n if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n s |= 4\n } else if(spec.type != '*') {\n return null;\n }\n\n if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n s |= 2\n } else if(spec.subtype != '*') {\n return null;\n }\n\n var keys = Object.keys(spec.params);\n if (keys.length > 0) {\n if (keys.every(function (k) {\n return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n })) {\n s |= 1\n } else {\n return null\n }\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s,\n }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n // RFC 2616 sec 14.2: no header = */*\n var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n if (!provided) {\n // sorted list of all types\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullType);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getMediaTypePriority(type, accepts, index);\n });\n\n // sorted list of accepted types\n return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n var count = 0;\n var index = 0;\n\n while ((index = string.indexOf('\"', index)) !== -1) {\n count++;\n index++;\n }\n\n return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n var index = str.indexOf('=');\n var key;\n var val;\n\n if (index === -1) {\n key = str;\n } else {\n key = str.substr(0, index);\n val = str.substr(index + 1);\n }\n\n return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n var accepts = accept.split(',');\n\n for (var i = 1, j = 0; i < accepts.length; i++) {\n if (quoteCount(accepts[j]) % 2 == 0) {\n accepts[++j] = accepts[i];\n } else {\n accepts[j] += ',' + accepts[i];\n }\n }\n\n // trim accepts\n accepts.length = j + 1;\n\n return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n var parameters = str.split(';');\n\n for (var i = 1, j = 0; i < parameters.length; i++) {\n if (quoteCount(parameters[j]) % 2 == 0) {\n parameters[++j] = parameters[i];\n } else {\n parameters[j] += ';' + parameters[i];\n }\n }\n\n // trim parameters\n parameters.length = j + 1;\n\n for (var i = 0; i < parameters.length; i++) {\n parameters[i] = parameters[i].trim();\n }\n\n return parameters;\n}\n","/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Cached loaded submodules.\n * @private\n */\n\nvar modules = Object.create(null);\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n if (!(this instanceof Negotiator)) {\n return new Negotiator(request);\n }\n\n this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n var set = this.charsets(available);\n return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n var preferredCharsets = loadModule('charset').preferredCharsets;\n return preferredCharsets(this.request.headers['accept-charset'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available) {\n var set = this.encodings(available);\n return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available) {\n var preferredEncodings = loadModule('encoding').preferredEncodings;\n return preferredEncodings(this.request.headers['accept-encoding'], available);\n};\n\nNegotiator.prototype.language = function language(available) {\n var set = this.languages(available);\n return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n var preferredLanguages = loadModule('language').preferredLanguages;\n return preferredLanguages(this.request.headers['accept-language'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n var set = this.mediaTypes(available);\n return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n var preferredMediaTypes = loadModule('mediaType').preferredMediaTypes;\n return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n\n/**\n * Load the given module.\n * @private\n */\n\nfunction loadModule(moduleName) {\n var module = modules[moduleName];\n\n if (module !== undefined) {\n return module;\n }\n\n // This uses a switch for static require analysis\n switch (moduleName) {\n case 'charset':\n module = require('./lib/charset');\n break;\n case 'encoding':\n module = require('./lib/encoding');\n break;\n case 'language':\n module = require('./lib/language');\n break;\n case 'mediaType':\n module = require('./lib/mediaType');\n break;\n default:\n throw new Error('Cannot find module \\'' + moduleName + '\\'');\n }\n\n // Store to prevent invoking require()\n modules[moduleName] = module;\n\n return module;\n}\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","/*!\n * accepts\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Negotiator = require('negotiator')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Accepts\n\n/**\n * Create a new Accepts object for the given req.\n *\n * @param {object} req\n * @public\n */\n\nfunction Accepts (req) {\n if (!(this instanceof Accepts)) {\n return new Accepts(req)\n }\n\n this.headers = req.headers\n this.negotiator = new Negotiator(req)\n}\n\n/**\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single mime type string\n * such as \"application/json\", the extension name\n * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given the _best_ match, if any is returned.\n *\n * Examples:\n *\n * // Accept: text/html\n * this.types('html');\n * // => \"html\"\n *\n * // Accept: text/*, application/json\n * this.types('html');\n * // => \"html\"\n * this.types('text/html');\n * // => \"text/html\"\n * this.types('json', 'text');\n * // => \"json\"\n * this.types('application/json');\n * // => \"application/json\"\n *\n * // Accept: text/*, application/json\n * this.types('image/png');\n * this.types('png');\n * // => undefined\n *\n * // Accept: text/*;q=.5, application/json\n * this.types(['html', 'json']);\n * this.types('html', 'json');\n * // => \"json\"\n *\n * @param {String|Array} types...\n * @return {String|Array|Boolean}\n * @public\n */\n\nAccepts.prototype.type =\nAccepts.prototype.types = function (types_) {\n var types = types_\n\n // support flattened arguments\n if (types && !Array.isArray(types)) {\n types = new Array(arguments.length)\n for (var i = 0; i < types.length; i++) {\n types[i] = arguments[i]\n }\n }\n\n // no types, return all requested types\n if (!types || types.length === 0) {\n return this.negotiator.mediaTypes()\n }\n\n // no accept header, return first given type\n if (!this.headers.accept) {\n return types[0]\n }\n\n var mimes = types.map(extToMime)\n var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))\n var first = accepts[0]\n\n return first\n ? types[mimes.indexOf(first)]\n : false\n}\n\n/**\n * Return accepted encodings or best fit based on `encodings`.\n *\n * Given `Accept-Encoding: gzip, deflate`\n * an array sorted by quality is returned:\n *\n * ['gzip', 'deflate']\n *\n * @param {String|Array} encodings...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.encoding =\nAccepts.prototype.encodings = function (encodings_) {\n var encodings = encodings_\n\n // support flattened arguments\n if (encodings && !Array.isArray(encodings)) {\n encodings = new Array(arguments.length)\n for (var i = 0; i < encodings.length; i++) {\n encodings[i] = arguments[i]\n }\n }\n\n // no encodings, return all requested encodings\n if (!encodings || encodings.length === 0) {\n return this.negotiator.encodings()\n }\n\n return this.negotiator.encodings(encodings)[0] || false\n}\n\n/**\n * Return accepted charsets or best fit based on `charsets`.\n *\n * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n * an array sorted by quality is returned:\n *\n * ['utf-8', 'utf-7', 'iso-8859-1']\n *\n * @param {String|Array} charsets...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.charset =\nAccepts.prototype.charsets = function (charsets_) {\n var charsets = charsets_\n\n // support flattened arguments\n if (charsets && !Array.isArray(charsets)) {\n charsets = new Array(arguments.length)\n for (var i = 0; i < charsets.length; i++) {\n charsets[i] = arguments[i]\n }\n }\n\n // no charsets, return all requested charsets\n if (!charsets || charsets.length === 0) {\n return this.negotiator.charsets()\n }\n\n return this.negotiator.charsets(charsets)[0] || false\n}\n\n/**\n * Return accepted languages or best fit based on `langs`.\n *\n * Given `Accept-Language: en;q=0.8, es, pt`\n * an array sorted by quality is returned:\n *\n * ['es', 'pt', 'en']\n *\n * @param {String|Array} langs...\n * @return {Array|String}\n * @public\n */\n\nAccepts.prototype.lang =\nAccepts.prototype.langs =\nAccepts.prototype.language =\nAccepts.prototype.languages = function (languages_) {\n var languages = languages_\n\n // support flattened arguments\n if (languages && !Array.isArray(languages)) {\n languages = new Array(arguments.length)\n for (var i = 0; i < languages.length; i++) {\n languages[i] = arguments[i]\n }\n }\n\n // no languages, return all requested languages\n if (!languages || languages.length === 0) {\n return this.negotiator.languages()\n }\n\n return this.negotiator.languages(languages)[0] || false\n}\n\n/**\n * Convert extnames to mime.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction extToMime (type) {\n return type.indexOf('/') === -1\n ? mime.lookup(type)\n : type\n}\n\n/**\n * Check if mime is valid.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction validMime (type) {\n return typeof type === 'string'\n}\n","/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = bytes;\nmodule.exports.format = format;\nmodule.exports.parse = parse;\n\n/**\n * Module variables.\n * @private\n */\n\nvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\nvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\nvar map = {\n b: 1,\n kb: 1 << 10,\n mb: 1 << 20,\n gb: 1 << 30,\n tb: ((1 << 30) * 1024)\n};\n\nvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb)$/i;\n\n/**\n * Convert the given value in bytes into a string or parse to string to an integer in bytes.\n *\n * @param {string|number} value\n * @param {{\n * case: [string],\n * decimalPlaces: [number]\n * fixedDecimals: [boolean]\n * thousandsSeparator: [string]\n * unitSeparator: [string]\n * }} [options] bytes options.\n *\n * @returns {string|number|null}\n */\n\nfunction bytes(value, options) {\n if (typeof value === 'string') {\n return parse(value);\n }\n\n if (typeof value === 'number') {\n return format(value, options);\n }\n\n return null;\n}\n\n/**\n * Format the given value in bytes into a string.\n *\n * If the value is negative, it is kept as such. If it is a float,\n * it is rounded.\n *\n * @param {number} value\n * @param {object} [options]\n * @param {number} [options.decimalPlaces=2]\n * @param {number} [options.fixedDecimals=false]\n * @param {string} [options.thousandsSeparator=]\n * @param {string} [options.unit=]\n * @param {string} [options.unitSeparator=]\n *\n * @returns {string|null}\n * @public\n */\n\nfunction format(value, options) {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n var mag = Math.abs(value);\n var thousandsSeparator = (options && options.thousandsSeparator) || '';\n var unitSeparator = (options && options.unitSeparator) || '';\n var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;\n var fixedDecimals = Boolean(options && options.fixedDecimals);\n var unit = (options && options.unit) || '';\n\n if (!unit || !map[unit.toLowerCase()]) {\n if (mag >= map.tb) {\n unit = 'TB';\n } else if (mag >= map.gb) {\n unit = 'GB';\n } else if (mag >= map.mb) {\n unit = 'MB';\n } else if (mag >= map.kb) {\n unit = 'KB';\n } else {\n unit = 'B';\n }\n }\n\n var val = value / map[unit.toLowerCase()];\n var str = val.toFixed(decimalPlaces);\n\n if (!fixedDecimals) {\n str = str.replace(formatDecimalsRegExp, '$1');\n }\n\n if (thousandsSeparator) {\n str = str.replace(formatThousandsRegExp, thousandsSeparator);\n }\n\n return str + unitSeparator + unit;\n}\n\n/**\n * Parse the string value into an integer in bytes.\n *\n * If no unit is given, it is assumed the value is in bytes.\n *\n * @param {number|string} val\n *\n * @returns {number|null}\n * @public\n */\n\nfunction parse(val) {\n if (typeof val === 'number' && !isNaN(val)) {\n return val;\n }\n\n if (typeof val !== 'string') {\n return null;\n }\n\n // Test if the string passed is valid\n var results = parseRegExp.exec(val);\n var floatValue;\n var unit = 'b';\n\n if (!results) {\n // Nothing could be extracted from the given string\n floatValue = parseInt(val, 10);\n unit = 'b'\n } else {\n // Retrieve the value and the unit\n floatValue = parseFloat(results[1]);\n unit = results[4].toLowerCase();\n }\n\n return Math.floor(map[unit] * floatValue);\n}\n","/*!\n * compressible\n * Copyright(c) 2013 Jonathan Ong\n * Copyright(c) 2014 Jeremiah Senkpiel\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\n\n/**\n * Module variables.\n * @private\n */\n\nvar COMPRESSIBLE_TYPE_REGEXP = /^text\\/|\\+(?:json|text|xml)$/i\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = compressible\n\n/**\n * Checks if a type is compressible.\n *\n * @param {string} type\n * @return {Boolean} compressible\n * @public\n */\n\nfunction compressible (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // strip parameters\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && match[1].toLowerCase()\n var data = db[mime]\n\n // return database information\n if (data && data.compressible !== undefined) {\n return data.compressible\n }\n\n // fallback to regexp or unknown\n return COMPRESSIBLE_TYPE_REGEXP.test(mime) || undefined\n}\n","/*!\n * on-headers\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onHeaders\n\n/**\n * Create a replacement writeHead method.\n *\n * @param {function} prevWriteHead\n * @param {function} listener\n * @private\n */\n\nfunction createWriteHead (prevWriteHead, listener) {\n var fired = false\n\n // return function with core name and argument list\n return function writeHead (statusCode) {\n // set headers from arguments\n var args = setWriteHeadHeaders.apply(this, arguments)\n\n // fire listener\n if (!fired) {\n fired = true\n listener.call(this)\n\n // pass-along an updated status code\n if (typeof args[0] === 'number' && this.statusCode !== args[0]) {\n args[0] = this.statusCode\n args.length = 1\n }\n }\n\n return prevWriteHead.apply(this, args)\n }\n}\n\n/**\n * Execute a listener when a response is about to write headers.\n *\n * @param {object} res\n * @return {function} listener\n * @public\n */\n\nfunction onHeaders (res, listener) {\n if (!res) {\n throw new TypeError('argument res is required')\n }\n\n if (typeof listener !== 'function') {\n throw new TypeError('argument listener must be a function')\n }\n\n res.writeHead = createWriteHead(res.writeHead, listener)\n}\n\n/**\n * Set headers contained in array on the response object.\n *\n * @param {object} res\n * @param {array} headers\n * @private\n */\n\nfunction setHeadersFromArray (res, headers) {\n for (var i = 0; i < headers.length; i++) {\n res.setHeader(headers[i][0], headers[i][1])\n }\n}\n\n/**\n * Set headers contained in object on the response object.\n *\n * @param {object} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeadersFromObject (res, headers) {\n var keys = Object.keys(headers)\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i]\n if (k) res.setHeader(k, headers[k])\n }\n}\n\n/**\n * Set headers and other properties on the response object.\n *\n * @param {number} statusCode\n * @private\n */\n\nfunction setWriteHeadHeaders (statusCode) {\n var length = arguments.length\n var headerIndex = length > 1 && typeof arguments[1] === 'string'\n ? 2\n : 1\n\n var headers = length >= headerIndex + 1\n ? arguments[headerIndex]\n : undefined\n\n this.statusCode = statusCode\n\n if (Array.isArray(headers)) {\n // handle array case\n setHeadersFromArray(this, headers)\n } else if (headers) {\n // handle object case\n setHeadersFromObject(this, headers)\n }\n\n // copy leading arguments\n var args = new Array(Math.min(length, headerIndex))\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n\n return args\n}\n","/*!\n * compression\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar accepts = require('accepts')\nvar Buffer = require('safe-buffer').Buffer\nvar bytes = require('bytes')\nvar compressible = require('compressible')\nvar debug = require('debug')('compression')\nvar onHeaders = require('on-headers')\nvar vary = require('vary')\nvar zlib = require('zlib')\n\n/**\n * Module exports.\n */\n\nmodule.exports = compression\nmodule.exports.filter = shouldCompress\n\n/**\n * Module variables.\n * @private\n */\n\nvar cacheControlNoTransformRegExp = /(?:^|,)\\s*?no-transform\\s*?(?:,|$)/\n\n/**\n * Compress response data with gzip / deflate.\n *\n * @param {Object} [options]\n * @return {Function} middleware\n * @public\n */\n\nfunction compression (options) {\n var opts = options || {}\n\n // options\n var filter = opts.filter || shouldCompress\n var threshold = bytes.parse(opts.threshold)\n\n if (threshold == null) {\n threshold = 1024\n }\n\n return function compression (req, res, next) {\n var ended = false\n var length\n var listeners = []\n var stream\n\n var _end = res.end\n var _on = res.on\n var _write = res.write\n\n // flush\n res.flush = function flush () {\n if (stream) {\n stream.flush()\n }\n }\n\n // proxy\n\n res.write = function write (chunk, encoding) {\n if (ended) {\n return false\n }\n\n if (!this._header) {\n this._implicitHeader()\n }\n\n return stream\n ? stream.write(toBuffer(chunk, encoding))\n : _write.call(this, chunk, encoding)\n }\n\n res.end = function end (chunk, encoding) {\n if (ended) {\n return false\n }\n\n if (!this._header) {\n // estimate the length\n if (!this.getHeader('Content-Length')) {\n length = chunkLength(chunk, encoding)\n }\n\n this._implicitHeader()\n }\n\n if (!stream) {\n return _end.call(this, chunk, encoding)\n }\n\n // mark ended\n ended = true\n\n // write Buffer for Node.js 0.8\n return chunk\n ? stream.end(toBuffer(chunk, encoding))\n : stream.end()\n }\n\n res.on = function on (type, listener) {\n if (!listeners || type !== 'drain') {\n return _on.call(this, type, listener)\n }\n\n if (stream) {\n return stream.on(type, listener)\n }\n\n // buffer listeners for future stream\n listeners.push([type, listener])\n\n return this\n }\n\n function nocompress (msg) {\n debug('no compression: %s', msg)\n addListeners(res, _on, listeners)\n listeners = null\n }\n\n onHeaders(res, function onResponseHeaders () {\n // determine if request is filtered\n if (!filter(req, res)) {\n nocompress('filtered')\n return\n }\n\n // determine if the entity should be transformed\n if (!shouldTransform(req, res)) {\n nocompress('no transform')\n return\n }\n\n // vary\n vary(res, 'Accept-Encoding')\n\n // content-length below threshold\n if (Number(res.getHeader('Content-Length')) < threshold || length < threshold) {\n nocompress('size below threshold')\n return\n }\n\n var encoding = res.getHeader('Content-Encoding') || 'identity'\n\n // already encoded\n if (encoding !== 'identity') {\n nocompress('already encoded')\n return\n }\n\n // head\n if (req.method === 'HEAD') {\n nocompress('HEAD request')\n return\n }\n\n // compression method\n var accept = accepts(req)\n var method = accept.encoding(['gzip', 'deflate', 'identity'])\n\n // we really don't prefer deflate\n if (method === 'deflate' && accept.encoding(['gzip'])) {\n method = accept.encoding(['gzip', 'identity'])\n }\n\n // negotiation failed\n if (!method || method === 'identity') {\n nocompress('not acceptable')\n return\n }\n\n // compression stream\n debug('%s compression', method)\n stream = method === 'gzip'\n ? zlib.createGzip(opts)\n : zlib.createDeflate(opts)\n\n // add buffered listeners to stream\n addListeners(stream, stream.on, listeners)\n\n // header fields\n res.setHeader('Content-Encoding', method)\n res.removeHeader('Content-Length')\n\n // compression\n stream.on('data', function onStreamData (chunk) {\n if (_write.call(res, chunk) === false) {\n stream.pause()\n }\n })\n\n stream.on('end', function onStreamEnd () {\n _end.call(res)\n })\n\n _on.call(res, 'drain', function onResponseDrain () {\n stream.resume()\n })\n })\n\n next()\n }\n}\n\n/**\n * Add bufferred listeners to stream\n * @private\n */\n\nfunction addListeners (stream, on, listeners) {\n for (var i = 0; i < listeners.length; i++) {\n on.apply(stream, listeners[i])\n }\n}\n\n/**\n * Get the length of a given chunk\n */\n\nfunction chunkLength (chunk, encoding) {\n if (!chunk) {\n return 0\n }\n\n return !Buffer.isBuffer(chunk)\n ? Buffer.byteLength(chunk, encoding)\n : chunk.length\n}\n\n/**\n * Default filter function.\n * @private\n */\n\nfunction shouldCompress (req, res) {\n var type = res.getHeader('Content-Type')\n\n if (type === undefined || !compressible(type)) {\n debug('%s not compressible', type)\n return false\n }\n\n return true\n}\n\n/**\n * Determine if the entity should be transformed.\n * @private\n */\n\nfunction shouldTransform (req, res) {\n var cacheControl = res.getHeader('Cache-Control')\n\n // Don't compress for Cache-Control: no-transform\n // https://tools.ietf.org/html/rfc7234#section-5.2.2.4\n return !cacheControl ||\n !cacheControlNoTransformRegExp.test(cacheControl)\n}\n\n/**\n * Coerce arguments to Buffer\n * @private\n */\n\nfunction toBuffer (chunk, encoding) {\n return !Buffer.isBuffer(chunk)\n ? Buffer.from(chunk, encoding)\n : chunk\n}\n","import path from 'path'\nimport sirv from 'sirv'\nimport connect from 'connect'\nimport compression from 'compression'\nimport { Server } from 'http'\nimport { resolveConfig, InlineConfig, ResolvedConfig } from '.'\nimport { Connect } from 'types/connect'\nimport { ResolvedServerOptions } from './server'\nimport {\n resolveHttpsConfig,\n resolveHttpServer,\n httpServerStart,\n CommonServerOptions\n} from './http'\nimport { openBrowser } from './server/openBrowser'\nimport corsMiddleware from 'cors'\nimport { proxyMiddleware } from './server/middlewares/proxy'\nimport { resolveHostname } from './utils'\nimport { printCommonServerUrls } from './logger'\n\nexport interface PreviewOptions extends CommonServerOptions {}\n\nexport interface ResolvedPreviewOptions extends PreviewOptions {}\n\nexport function resolvePreviewOptions(\n preview: PreviewOptions | undefined,\n server: ResolvedServerOptions\n): ResolvedPreviewOptions {\n // The preview server inherits every CommonServerOption from the `server` config\n // except for the port to enable having both the dev and preview servers running\n // at the same time without extra configuration\n return {\n port: preview?.port,\n strictPort: preview?.strictPort ?? server.strictPort,\n host: preview?.host ?? server.host,\n https: preview?.https ?? server.https,\n open: preview?.open ?? server.open,\n proxy: preview?.proxy ?? server.proxy,\n cors: preview?.cors ?? server.cors\n }\n}\n\nexport interface PreviewServer {\n /**\n * The resolved vite config object\n */\n config: ResolvedConfig\n /**\n * native Node http server instance\n */\n httpServer: Server\n /**\n * Print server urls\n */\n printUrls: () => void\n}\n\n/**\n * Starts the Vite server in preview mode, to simulate a production deployment\n * @param config - the resolved Vite config\n * @param serverOptions - what host and port to use\n * @experimental\n */\nexport async function preview(\n inlineConfig: InlineConfig\n): Promise {\n const config = await resolveConfig(inlineConfig, 'serve', 'production')\n\n const app = connect() as Connect.Server\n const httpServer = await resolveHttpServer(\n config.preview,\n app,\n await resolveHttpsConfig(config.preview?.https, config.cacheDir)\n )\n\n // cors\n const { cors } = config.preview\n if (cors !== false) {\n app.use(corsMiddleware(typeof cors === 'boolean' ? {} : cors))\n }\n\n // proxy\n if (config.preview.proxy) {\n app.use(proxyMiddleware(httpServer, config))\n }\n\n app.use(compression())\n\n const distDir = path.resolve(config.root, config.build.outDir)\n app.use(\n config.base,\n sirv(distDir, {\n etag: true,\n dev: true,\n single: true\n })\n )\n\n const options = config.preview\n const hostname = resolveHostname(options.host)\n const port = options.port ?? 5000\n const protocol = options.https ? 'https' : 'http'\n const logger = config.logger\n const base = config.base\n\n const serverPort = await httpServerStart(httpServer, {\n port,\n strictPort: options.strictPort,\n host: hostname.host,\n logger\n })\n\n if (options.open) {\n const path = typeof options.open === 'string' ? options.open : base\n openBrowser(\n path.startsWith('http')\n ? path\n : `${protocol}://${hostname.name}:${serverPort}${path}`,\n true,\n logger\n )\n }\n\n return {\n config,\n httpServer,\n printUrls() {\n printCommonServerUrls(httpServer, config.preview, config)\n }\n }\n}\n","const noop = () => null;\nfunction matches(pattern, importee) {\n if (pattern instanceof RegExp) {\n return pattern.test(importee);\n }\n if (importee.length < pattern.length) {\n return false;\n }\n if (importee === pattern) {\n return true;\n }\n const importeeStartsWithKey = importee.indexOf(pattern) === 0;\n const importeeHasSlashAfterKey = importee.substring(pattern.length)[0] === '/';\n return importeeStartsWithKey && importeeHasSlashAfterKey;\n}\nfunction normalizeId(id) {\n return id;\n}\nfunction getEntries({ entries }) {\n if (!entries) {\n return [];\n }\n if (Array.isArray(entries)) {\n return entries;\n }\n return Object.entries(entries).map(([key, value]) => {\n return { find: key, replacement: value };\n });\n}\nfunction getCustomResolver({ customResolver }, options) {\n if (typeof customResolver === 'function') {\n return customResolver;\n }\n if (customResolver && typeof customResolver.resolveId === 'function') {\n return customResolver.resolveId;\n }\n if (typeof options.customResolver === 'function') {\n return options.customResolver;\n }\n if (options.customResolver && typeof options.customResolver.resolveId === 'function') {\n return options.customResolver.resolveId;\n }\n return null;\n}\nfunction alias(options = {}) {\n const entries = getEntries(options);\n if (entries.length === 0) {\n return {\n name: 'alias',\n resolveId: noop\n };\n }\n return {\n name: 'alias',\n buildStart(inputOptions) {\n return Promise.all([...entries, options].map(({ customResolver }) => customResolver &&\n typeof customResolver === 'object' &&\n typeof customResolver.buildStart === 'function' &&\n customResolver.buildStart.call(this, inputOptions))).then(() => {\n // enforce void return value\n });\n },\n resolveId(importee, importer, resolveOptions) {\n const importeeId = normalizeId(importee);\n const importerId = normalizeId(importer);\n // First match is supposed to be the correct one\n const matchedEntry = entries.find((entry) => matches(entry.find, importeeId));\n if (!matchedEntry || !importerId) {\n return null;\n }\n const updatedId = normalizeId(importeeId.replace(matchedEntry.find, matchedEntry.replacement));\n const customResolver = getCustomResolver(matchedEntry, options);\n if (customResolver) {\n return customResolver.call(this, updatedId, importerId, resolveOptions);\n }\n return this.resolve(updatedId, importer, Object.assign({ skipSelf: true }, resolveOptions)).then((resolved) => {\n let finalResult = resolved;\n if (!finalResult) {\n finalResult = { id: updatedId };\n }\n return finalResult;\n });\n }\n };\n}\n\nexport { alias as default };\n","/**\n * https://github.com/rollup/plugins/blob/master/packages/json/src/index.js\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file at\n * https://github.com/rollup/plugins/blob/master/LICENSE\n */\n\nimport { dataToEsm } from '@rollup/pluginutils'\nimport { Plugin } from 'rollup'\nimport { SPECIAL_QUERY_RE } from '../constants'\n\nexport interface JsonOptions {\n /**\n * Generate a named export for every property of the JSON object\n * @default true\n */\n namedExports?: boolean\n /**\n * Generate performant output as JSON.parse(\"stringified\").\n * Enabling this will disable namedExports.\n * @default false\n */\n stringify?: boolean\n}\n\n// Custom json filter for vite\nconst jsonExtRE = /\\.json($|\\?)(?!commonjs-(proxy|external))/\n\nexport function jsonPlugin(\n options: JsonOptions = {},\n isBuild: boolean\n): Plugin {\n return {\n name: 'vite:json',\n\n transform(json, id) {\n if (!jsonExtRE.test(id)) return null\n if (SPECIAL_QUERY_RE.test(id)) return null\n\n try {\n if (options.stringify) {\n if (isBuild) {\n return {\n // during build, parse then double-stringify to remove all\n // unnecessary whitespaces to reduce bundle size.\n code: `export default JSON.parse(${JSON.stringify(\n JSON.stringify(JSON.parse(json))\n )})`,\n map: { mappings: '' }\n }\n } else {\n return `export default JSON.parse(${JSON.stringify(json)})`\n }\n }\n\n const parsed = JSON.parse(json)\n return {\n code: dataToEsm(parsed, {\n preferConst: true,\n namedExports: options.namedExports\n }),\n map: { mappings: '' }\n }\n } catch (e) {\n const errorMessageList = /[\\d]+/.exec(e.message)\n const position = errorMessageList && parseInt(errorMessageList[0], 10)\n const msg = position\n ? `, invalid JSON syntax found at line ${position}`\n : `.`\n this.error(`Failed to parse JSON file` + msg, e.idx)\n }\n }\n }\n}\n","import fs from 'fs'\nimport path from 'path'\nimport { Plugin } from '../plugin'\nimport { ResolvedConfig } from '../config'\nimport chalk from 'chalk'\nimport MagicString from 'magic-string'\nimport { init, parse as parseImports, ImportSpecifier } from 'es-module-lexer'\nimport { isCSSRequest, isDirectCSSRequest } from './css'\nimport {\n isBuiltin,\n cleanUrl,\n createDebugger,\n generateCodeFrame,\n injectQuery,\n isDataUrl,\n isExternalUrl,\n isJSRequest,\n prettifyUrl,\n timeFrom,\n normalizePath,\n removeImportQuery,\n unwrapId,\n moduleListContains\n} from '../utils'\nimport {\n debugHmr,\n handlePrunedModules,\n lexAcceptedHmrDeps\n} from '../server/hmr'\nimport {\n FS_PREFIX,\n CLIENT_DIR,\n CLIENT_PUBLIC_PATH,\n DEP_VERSION_RE,\n VALID_ID_PREFIX,\n NULL_BYTE_PLACEHOLDER\n} from '../constants'\nimport { ViteDevServer } from '..'\nimport { checkPublicFile } from './asset'\nimport { parse as parseJS } from 'acorn'\nimport type { Node } from 'estree'\nimport { transformImportGlob } from '../importGlob'\nimport { makeLegalIdentifier } from '@rollup/pluginutils'\nimport { shouldExternalizeForSSR } from '../ssr/ssrExternal'\nimport { performance } from 'perf_hooks'\nimport { transformRequest } from '../server/transformRequest'\n\nconst isDebug = !!process.env.DEBUG\nconst debug = createDebugger('vite:import-analysis')\n\nconst clientDir = normalizePath(CLIENT_DIR)\n\nconst skipRE = /\\.(map|json)$/\nconst canSkip = (id: string) => skipRE.test(id) || isDirectCSSRequest(id)\n\nfunction isExplicitImportRequired(url: string) {\n return !isJSRequest(cleanUrl(url)) && !isCSSRequest(url)\n}\n\nfunction markExplicitImport(url: string) {\n if (isExplicitImportRequired(url)) {\n return injectQuery(url, 'import')\n }\n return url\n}\n\n/**\n * Server-only plugin that lexes, resolves, rewrites and analyzes url imports.\n *\n * - Imports are resolved to ensure they exist on disk\n *\n * - Lexes HMR accept calls and updates import relationships in the module graph\n *\n * - Bare module imports are resolved (by @rollup-plugin/node-resolve) to\n * absolute file paths, e.g.\n *\n * ```js\n * import 'foo'\n * ```\n * is rewritten to\n * ```js\n * import '/@fs//project/node_modules/foo/dist/foo.js'\n * ```\n *\n * - CSS imports are appended with `.js` since both the js module and the actual\n * css (referenced via ) may go through the transform pipeline:\n *\n * ```js\n * import './style.css'\n * ```\n * is rewritten to\n * ```js\n * import './style.css.js'\n * ```\n */\nexport function importAnalysisPlugin(config: ResolvedConfig): Plugin {\n const { root, base } = config\n const clientPublicPath = path.posix.join(base, CLIENT_PUBLIC_PATH)\n\n let server: ViteDevServer\n\n return {\n name: 'vite:import-analysis',\n\n configureServer(_server) {\n server = _server\n },\n\n async transform(source, importer, options) {\n const ssr = options?.ssr === true\n const prettyImporter = prettifyUrl(importer, root)\n\n if (canSkip(importer)) {\n isDebug && debug(chalk.dim(`[skipped] ${prettyImporter}`))\n return null\n }\n\n const start = performance.now()\n await init\n let imports: readonly ImportSpecifier[] = []\n // strip UTF-8 BOM\n if (source.charCodeAt(0) === 0xfeff) {\n source = source.slice(1)\n }\n try {\n imports = parseImports(source)[0]\n } catch (e: any) {\n const isVue = importer.endsWith('.vue')\n const maybeJSX = !isVue && isJSRequest(importer)\n\n const msg = isVue\n ? `Install @vitejs/plugin-vue to handle .vue files.`\n : maybeJSX\n ? `If you are using JSX, make sure to name the file with the .jsx or .tsx extension.`\n : `You may need to install appropriate plugins to handle the ${path.extname(\n importer\n )} file format.`\n\n this.error(\n `Failed to parse source for import analysis because the content ` +\n `contains invalid JS syntax. ` +\n msg,\n e.idx\n )\n }\n\n if (!imports.length) {\n isDebug &&\n debug(\n `${timeFrom(start)} ${chalk.dim(`[no imports] ${prettyImporter}`)}`\n )\n return source\n }\n\n let hasHMR = false\n let isSelfAccepting = false\n let hasEnv = false\n let needQueryInjectHelper = false\n let s: MagicString | undefined\n const str = () => s || (s = new MagicString(source))\n // vite-only server context\n const { moduleGraph } = server\n // since we are already in the transform phase of the importer, it must\n // have been loaded so its entry is guaranteed in the module graph.\n const importerModule = moduleGraph.getModuleById(importer)!\n const importedUrls = new Set()\n const staticImportedUrls = new Set()\n const acceptedUrls = new Set<{\n url: string\n start: number\n end: number\n }>()\n const toAbsoluteUrl = (url: string) =>\n path.posix.resolve(path.posix.dirname(importerModule.url), url)\n\n const normalizeUrl = async (\n url: string,\n pos: number\n ): Promise<[string, string]> => {\n if (base !== '/' && url.startsWith(base)) {\n url = url.replace(base, '/')\n }\n\n let importerFile = importer\n if (\n moduleListContains(config.optimizeDeps?.exclude, url) &&\n server._optimizeDepsMetadata\n ) {\n // if the dependency encountered in the optimized file was excluded from the optimization\n // the dependency needs to be resolved starting from the original source location of the optimized file\n // because starting from node_modules/.vite will not find the dependency if it was not hoisted\n // (that is, if it is under node_modules directory in the package source of the optimized file)\n for (const optimizedModule of Object.values(\n server._optimizeDepsMetadata.optimized\n )) {\n if (optimizedModule.file === importerModule.file) {\n importerFile = optimizedModule.src\n }\n }\n }\n\n const resolved = await this.resolve(url, importerFile)\n\n if (!resolved) {\n this.error(\n `Failed to resolve import \"${url}\" from \"${path.relative(\n process.cwd(),\n importerFile\n )}\". Does the file exist?`,\n pos\n )\n }\n\n const isRelative = url.startsWith('.')\n const isSelfImport = !isRelative && cleanUrl(url) === cleanUrl(importer)\n\n // normalize all imports into resolved URLs\n // e.g. `import 'foo'` -> `import '/@fs/.../node_modules/foo/index.js`\n if (resolved.id.startsWith(root + '/')) {\n // in root: infer short absolute path from root\n url = resolved.id.slice(root.length)\n } else if (fs.existsSync(cleanUrl(resolved.id))) {\n // exists but out of root: rewrite to absolute /@fs/ paths\n url = path.posix.join(FS_PREFIX + resolved.id)\n } else {\n url = resolved.id\n }\n\n if (isExternalUrl(url)) {\n return [url, url]\n }\n\n // if the resolved id is not a valid browser import specifier,\n // prefix it to make it valid. We will strip this before feeding it\n // back into the transform pipeline\n if (!url.startsWith('.') && !url.startsWith('/')) {\n url =\n VALID_ID_PREFIX + resolved.id.replace('\\0', NULL_BYTE_PLACEHOLDER)\n }\n\n // make the URL browser-valid if not SSR\n if (!ssr) {\n // mark non-js/css imports with `?import`\n url = markExplicitImport(url)\n\n // for relative js/css imports, or self-module virtual imports\n // (e.g. vue blocks), inherit importer's version query\n // do not do this for unknown type imports, otherwise the appended\n // query can break 3rd party plugin's extension checks.\n if ((isRelative || isSelfImport) && !/[\\?&]import=?\\b/.test(url)) {\n const versionMatch = importer.match(DEP_VERSION_RE)\n if (versionMatch) {\n url = injectQuery(url, versionMatch[1])\n }\n }\n\n // check if the dep has been hmr updated. If yes, we need to attach\n // its last updated timestamp to force the browser to fetch the most\n // up-to-date version of this module.\n try {\n const depModule = await moduleGraph.ensureEntryFromUrl(url)\n if (depModule.lastHMRTimestamp > 0) {\n url = injectQuery(url, `t=${depModule.lastHMRTimestamp}`)\n }\n } catch (e: any) {\n // it's possible that the dep fails to resolve (non-existent import)\n // attach location to the missing import\n e.pos = pos\n throw e\n }\n\n // prepend base (dev base is guaranteed to have ending slash)\n url = base + url.replace(/^\\//, '')\n }\n\n return [url, resolved.id]\n }\n\n for (let index = 0; index < imports.length; index++) {\n const {\n s: start,\n e: end,\n ss: expStart,\n se: expEnd,\n d: dynamicIndex,\n // #2083 User may use escape path,\n // so use imports[index].n to get the unescaped string\n // @ts-ignore\n n: specifier\n } = imports[index]\n\n const rawUrl = source.slice(start, end)\n\n // check import.meta usage\n if (rawUrl === 'import.meta') {\n const prop = source.slice(end, end + 4)\n if (prop === '.hot') {\n hasHMR = true\n if (source.slice(end + 4, end + 11) === '.accept') {\n // further analyze accepted modules\n if (\n lexAcceptedHmrDeps(\n source,\n source.indexOf('(', end + 11) + 1,\n acceptedUrls\n )\n ) {\n isSelfAccepting = true\n }\n }\n } else if (prop === '.env') {\n hasEnv = true\n } else if (prop === '.glo' && source[end + 4] === 'b') {\n // transform import.meta.glob()\n // e.g. `import.meta.glob('glob:./dir/*.js')`\n const {\n imports,\n importsString,\n exp,\n endIndex,\n base,\n pattern,\n isEager\n } = await transformImportGlob(\n source,\n start,\n importer,\n index,\n root,\n normalizeUrl\n )\n str().prepend(importsString)\n str().overwrite(expStart, endIndex, exp)\n imports.forEach((url) => {\n url = url.replace(base, '/')\n importedUrls.add(url)\n if (isEager) staticImportedUrls.add(url)\n })\n if (!(importerModule.file! in server._globImporters)) {\n server._globImporters[importerModule.file!] = {\n module: importerModule,\n importGlobs: []\n }\n }\n server._globImporters[importerModule.file!].importGlobs.push({\n base,\n pattern\n })\n }\n continue\n }\n\n const isDynamicImport = dynamicIndex >= 0\n\n // static import or valid string in dynamic import\n // If resolvable, let's resolve it\n if (specifier) {\n // skip external / data uri\n if (isExternalUrl(specifier) || isDataUrl(specifier)) {\n continue\n }\n // skip ssr external\n if (ssr) {\n if (\n server._ssrExternals &&\n shouldExternalizeForSSR(specifier, server._ssrExternals)\n ) {\n continue\n }\n if (isBuiltin(specifier)) {\n continue\n }\n }\n // skip client\n if (specifier === clientPublicPath) {\n continue\n }\n\n // warn imports to non-asset /public files\n if (\n specifier.startsWith('/') &&\n !config.assetsInclude(cleanUrl(specifier)) &&\n !specifier.endsWith('.json') &&\n checkPublicFile(specifier, config)\n ) {\n throw new Error(\n `Cannot import non-asset file ${specifier} which is inside /public.` +\n `JS/CSS files inside /public are copied as-is on build and ` +\n `can only be referenced via