{"version":3,"file":"js/83573-02e96d96d0163ad71c90.js","mappings":"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","sources":["webpack://StravaModern/./node_modules/@strava/api/lib/base-url-staging.js","webpack://StravaModern/./node_modules/@strava/api/lib/base-url.js","webpack://StravaModern/./node_modules/@strava/api/lib/axios-client.js","webpack://StravaModern/./node_modules/@strava/api/lib/csrf.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/index.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/adapters/xhr.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/axios.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/cancel/Cancel.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/cancel/CancelToken.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/cancel/isCancel.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/Axios.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/InterceptorManager.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/buildFullPath.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/createError.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/dispatchRequest.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/enhanceError.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/mergeConfig.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/settle.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/core/transformData.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/defaults.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/bind.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/buildURL.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/combineURLs.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/cookies.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/isAxiosError.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/parseHeaders.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/spread.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/helpers/validator.js","webpack://StravaModern/./node_modules/@strava/api/node_modules/axios/lib/utils.js","webpack://StravaModern/./node_modules/escape-html/index.js","webpack://StravaModern/./node_modules/interweave/esm/bundle-7aab7250.js","webpack://StravaModern/./node_modules/interweave/esm/index.js"],"sourcesContent":["// At times, we will be developing the app using different hostnames and ports.\n// On docker-compose, the origin might be http://webapp:3001.\n// Or, you might be running it on your machine at http://localhost:3000\n//\n// If the incoming request doesn't include '/dev-api',\n// we want it to be for /dev-api on this same server,\n// so it can be modified and re-sent, from the server, with appropriate auth cookies,\n// to the staging api.\n\nexport function stagingBaseUrlFromReq(req) {\n // When using the staging api, we will toggle the '/dev-api' depending on the state of the request.\n // If the incoming request is for localhost:3000/dev-api,\n // then we will strip out '/dev-api' and forward the request to to staging.strava.com.\n // See next-server/src/utils.js #proxyToStaging\n\n return `${req.protocol}://${req.headers.host}/dev-api`;\n}\n\nexport function stagingBaseUrlFromWindow() {\n const { location } = window;\n const { protocol, hostname, port } = location;\n\n return `${protocol}//${hostname}:${port}/dev-api`;\n}\n","// We serve active from different domains depending\n// on the environment. We need to know which URL\n// to use for a given environment (development, staging, prod).\n// https://www.strava.com\n// https://www.staging.strava.com\n// http://localhost + port\n// http://127.0.0.1 + port\n\n// Note: When developing locally, we will serve this web app\n// on a different port than active\nconst LOCALHOST_ACTIVE_PORT = 3000;\n\nexport function extractUrlFromReq(req) {\n let fullHost = req.headers['x-forwarded-host'] || req.headers.host;\n let protocol = 'https';\n\n // If we are developing locally, we will be running\n // active on some other port, so we set it here:.\n if (fullHost.includes('localhost')) {\n fullHost = `localhost:${LOCALHOST_ACTIVE_PORT}`;\n protocol = 'http';\n }\n\n return `${protocol}://${fullHost}`;\n}\n\nexport function baseUrlFromWindow() {\n const { location } = window;\n\n // If we are on the browser, and have included a port in the location URL, then\n // we are running locally, and the api client should use active's port.\n const port = location.port === '' ? '' : `:${LOCALHOST_ACTIVE_PORT}`;\n\n return `${location.protocol}//${location.hostname}${port}`;\n}\n","import axios from 'axios';\nimport { stagingBaseUrlFromWindow } from './base-url-staging';\nimport { baseUrlFromWindow } from './base-url';\nimport getCsrfToken from './csrf';\n\n/**\n * nextjs apps can be run locally but be configured to call active staging rather than active localhost.\n * If client is called by a microfrontend mounted by a nextjs app, `useStagingApi` can be passed in to\n * the mfe's props from `process.env.USE_STAGING_API` so it uses the same baseurl as the nextjs app's other\n * api requests.\n */\n\nconst apiClient = ({\n useStagingApi = typeof process !== 'undefined'\n ? process?.env?.USE_STAGING_API\n : false,\n currentLanguage = 'en-US',\n options = {}\n} = {}) => {\n const { headers: optionalHeaders, ...moreOptions } = options;\n const config = {\n baseURL: useStagingApi ? stagingBaseUrlFromWindow() : baseUrlFromWindow(),\n withCredentials: true,\n timeout: 30000, // 30 seconds\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'Accept-Language': currentLanguage,\n ...optionalHeaders\n },\n ...moreOptions\n };\n\n const csrfToken = getCsrfToken();\n if (csrfToken) {\n config.headers = { 'x-csrf-token': csrfToken, ...config.headers };\n }\n\n return axios.create(config);\n};\n\nexport default apiClient;\n","export default function getCsrfToken() {\n const metaCsrfTag =\n document.head.querySelector('meta[name=\"csrf\"]') ||\n document.head.querySelector('meta[name=\"csrf-token\"]');\n\n return metaCsrfTag ? metaCsrfTag.content : null;\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Bundled with Packemon: https://packemon.dev\n// Platform: browser, Support: stable, Format: esm\nimport React from 'react';\n/* eslint-disable no-bitwise, no-magic-numbers, sort-keys */\n// https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories\n\nconst TYPE_FLOW = 1;\nconst TYPE_SECTION = 1 << 1;\nconst TYPE_HEADING = 1 << 2;\nconst TYPE_PHRASING = 1 << 3;\nconst TYPE_EMBEDDED = 1 << 4;\nconst TYPE_INTERACTIVE = 1 << 5;\nconst TYPE_PALPABLE = 1 << 6; // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n\nconst tagConfigs = {\n a: {\n content: TYPE_FLOW | TYPE_PHRASING,\n self: false,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n address: {\n invalid: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'address', 'article', 'aside', 'section', 'div', 'header', 'footer'],\n self: false\n },\n audio: {\n children: ['track', 'source']\n },\n br: {\n type: TYPE_FLOW | TYPE_PHRASING,\n void: true\n },\n body: {\n content: TYPE_FLOW | TYPE_SECTION | TYPE_HEADING | TYPE_PHRASING | TYPE_EMBEDDED | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n button: {\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n caption: {\n content: TYPE_FLOW,\n parent: ['table']\n },\n col: {\n parent: ['colgroup'],\n void: true\n },\n colgroup: {\n children: ['col'],\n parent: ['table']\n },\n details: {\n children: ['summary'],\n type: TYPE_FLOW | TYPE_INTERACTIVE | TYPE_PALPABLE\n },\n dd: {\n content: TYPE_FLOW,\n parent: ['dl']\n },\n dl: {\n children: ['dt', 'dd'],\n type: TYPE_FLOW\n },\n dt: {\n content: TYPE_FLOW,\n invalid: ['footer', 'header'],\n parent: ['dl']\n },\n figcaption: {\n content: TYPE_FLOW,\n parent: ['figure']\n },\n footer: {\n invalid: ['footer', 'header']\n },\n header: {\n invalid: ['footer', 'header']\n },\n hr: {\n type: TYPE_FLOW,\n void: true\n },\n img: {\n void: true\n },\n li: {\n content: TYPE_FLOW,\n parent: ['ul', 'ol', 'menu']\n },\n main: {\n self: false\n },\n ol: {\n children: ['li'],\n type: TYPE_FLOW\n },\n picture: {\n children: ['source', 'img'],\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_EMBEDDED\n },\n rb: {\n parent: ['ruby', 'rtc']\n },\n rp: {\n parent: ['ruby', 'rtc']\n },\n rt: {\n content: TYPE_PHRASING,\n parent: ['ruby', 'rtc']\n },\n rtc: {\n content: TYPE_PHRASING,\n parent: ['ruby']\n },\n ruby: {\n children: ['rb', 'rp', 'rt', 'rtc']\n },\n source: {\n parent: ['audio', 'video', 'picture'],\n void: true\n },\n summary: {\n content: TYPE_PHRASING,\n parent: ['details']\n },\n table: {\n children: ['caption', 'colgroup', 'thead', 'tbody', 'tfoot', 'tr'],\n type: TYPE_FLOW\n },\n tbody: {\n parent: ['table'],\n children: ['tr']\n },\n td: {\n content: TYPE_FLOW,\n parent: ['tr']\n },\n tfoot: {\n parent: ['table'],\n children: ['tr']\n },\n th: {\n content: TYPE_FLOW,\n parent: ['tr']\n },\n thead: {\n parent: ['table'],\n children: ['tr']\n },\n tr: {\n parent: ['table', 'tbody', 'thead', 'tfoot'],\n children: ['th', 'td']\n },\n track: {\n parent: ['audio', 'video'],\n void: true\n },\n ul: {\n children: ['li'],\n type: TYPE_FLOW\n },\n video: {\n children: ['track', 'source']\n },\n wbr: {\n type: TYPE_FLOW | TYPE_PHRASING,\n void: true\n }\n};\n\nfunction createConfigBuilder(config) {\n return tagName => {\n tagConfigs[tagName] = { ...config,\n ...tagConfigs[tagName]\n };\n };\n}\n\n['address', 'main', 'div', 'figure', 'p', 'pre'].forEach(createConfigBuilder({\n content: TYPE_FLOW,\n type: TYPE_FLOW | TYPE_PALPABLE\n}));\n['abbr', 'b', 'bdi', 'bdo', 'cite', 'code', 'data', 'dfn', 'em', 'i', 'kbd', 'mark', 'q', 'ruby', 'samp', 'strong', 'sub', 'sup', 'time', 'u', 'var'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_PALPABLE\n}));\n['p', 'pre'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PALPABLE\n}));\n['s', 'small', 'span', 'del', 'ins'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_PHRASING\n}));\n['article', 'aside', 'footer', 'header', 'nav', 'section', 'blockquote'].forEach(createConfigBuilder({\n content: TYPE_FLOW,\n type: TYPE_FLOW | TYPE_SECTION | TYPE_PALPABLE\n}));\n['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].forEach(createConfigBuilder({\n content: TYPE_PHRASING,\n type: TYPE_FLOW | TYPE_HEADING | TYPE_PALPABLE\n}));\n['audio', 'canvas', 'iframe', 'img', 'video'].forEach(createConfigBuilder({\n type: TYPE_FLOW | TYPE_PHRASING | TYPE_EMBEDDED | TYPE_PALPABLE\n})); // Disable this map from being modified\n\nconst TAGS = Object.freeze(tagConfigs); // Tags that should never be allowed, even if the allow list is disabled\n\nconst BANNED_TAG_LIST = ['applet', 'base', 'body', 'command', 'embed', 'frame', 'frameset', 'head', 'html', 'link', 'meta', 'noscript', 'object', 'script', 'style', 'title'];\nconst ALLOWED_TAG_LIST = Object.keys(TAGS).filter(tag => tag !== 'canvas' && tag !== 'iframe'); // Filters apply to HTML attributes\n\nconst FILTER_ALLOW = 1;\nconst FILTER_DENY = 2;\nconst FILTER_CAST_NUMBER = 3;\nconst FILTER_CAST_BOOL = 4;\nconst FILTER_NO_CAST = 5; // Attributes not listed here will be denied\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n\nconst ATTRIBUTES = Object.freeze({\n alt: FILTER_ALLOW,\n cite: FILTER_ALLOW,\n class: FILTER_ALLOW,\n colspan: FILTER_CAST_NUMBER,\n controls: FILTER_CAST_BOOL,\n datetime: FILTER_ALLOW,\n default: FILTER_CAST_BOOL,\n disabled: FILTER_CAST_BOOL,\n dir: FILTER_ALLOW,\n height: FILTER_ALLOW,\n href: FILTER_ALLOW,\n id: FILTER_ALLOW,\n kind: FILTER_ALLOW,\n label: FILTER_ALLOW,\n lang: FILTER_ALLOW,\n loading: FILTER_ALLOW,\n loop: FILTER_CAST_BOOL,\n media: FILTER_ALLOW,\n muted: FILTER_CAST_BOOL,\n poster: FILTER_ALLOW,\n rel: FILTER_ALLOW,\n role: FILTER_ALLOW,\n rowspan: FILTER_CAST_NUMBER,\n scope: FILTER_ALLOW,\n sizes: FILTER_ALLOW,\n span: FILTER_CAST_NUMBER,\n start: FILTER_CAST_NUMBER,\n style: FILTER_NO_CAST,\n src: FILTER_ALLOW,\n srclang: FILTER_ALLOW,\n srcset: FILTER_ALLOW,\n tabindex: FILTER_ALLOW,\n target: FILTER_ALLOW,\n title: FILTER_ALLOW,\n type: FILTER_ALLOW,\n width: FILTER_ALLOW\n}); // Attributes to camel case for React props\n\nconst ATTRIBUTES_TO_PROPS = Object.freeze({\n class: 'className',\n colspan: 'colSpan',\n datetime: 'dateTime',\n rowspan: 'rowSpan',\n srclang: 'srcLang',\n srcset: 'srcSet',\n tabindex: 'tabIndex'\n});\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction Element({\n attributes = {},\n className,\n children = null,\n selfClose = false,\n tagName\n}) {\n const Tag = tagName;\n return selfClose ? /*#__PURE__*/React.createElement(Tag, _extends({\n className: className\n }, attributes)) : /*#__PURE__*/React.createElement(Tag, _extends({\n className: className\n }, attributes), children);\n}\n\nclass Filter {\n /**\n * Filter and clean an HTML attribute value.\n */\n attribute(name, value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return value;\n }\n /**\n * Filter and clean an HTML node.\n */\n\n\n node(name, node) {\n return node;\n }\n\n}\n/**\n * Trigger the actual pattern match and package the matched\n * response through a callback.\n */\n\n\nfunction match(string, pattern, process, isVoid = false) {\n const matches = string.match(pattern instanceof RegExp ? pattern : new RegExp(pattern, 'i'));\n\n if (!matches) {\n return null;\n }\n\n return {\n match: matches[0],\n void: isVoid,\n ...process(matches),\n index: matches.index,\n length: matches[0].length,\n valid: true\n };\n}\n\nclass Matcher {\n constructor(name, options, factory) {\n _defineProperty(this, \"greedy\", false);\n\n _defineProperty(this, \"options\", void 0);\n\n _defineProperty(this, \"propName\", void 0);\n\n _defineProperty(this, \"inverseName\", void 0);\n\n _defineProperty(this, \"factory\", void 0);\n\n if (process.env.NODE_ENV !== \"production\" && (!name || name.toLowerCase() === 'html')) {\n throw new Error(`The matcher name \"${name}\" is not allowed.`);\n } // @ts-expect-error Allow override\n\n\n this.options = { ...options\n };\n this.propName = name;\n this.inverseName = `no${name.charAt(0).toUpperCase() + name.slice(1)}`;\n this.factory = factory !== null && factory !== void 0 ? factory : null;\n }\n /**\n * Attempts to create a React element using a custom user provided factory,\n * or the default matcher factory.\n */\n\n\n createElement(children, props) {\n const element = this.factory ? /*#__PURE__*/React.createElement(this.factory, props, children) : this.replaceWith(children, props);\n\n if (process.env.NODE_ENV !== \"production\" && typeof element !== 'string' && ! /*#__PURE__*/React.isValidElement(element)) {\n throw new Error(`Invalid React element created from ${this.constructor.name}.`);\n }\n\n return element;\n }\n /**\n * Trigger the actual pattern match and package the matched\n * response through a callback.\n */\n\n\n doMatch(string, pattern, callback, isVoid = false) {\n return match(string, pattern, callback, isVoid);\n }\n /**\n * Callback triggered before parsing.\n */\n\n\n onBeforeParse(content, props) {\n return content;\n }\n /**\n * Callback triggered after parsing.\n */\n\n\n onAfterParse(content, props) {\n return content;\n }\n /**\n * Replace the match with a React element based on the matched token and optional props.\n */\n\n\n}\n\nexport { ALLOWED_TAG_LIST as A, BANNED_TAG_LIST as B, Element as E, Filter as F, Matcher as M, TAGS as T, _extends as _, ATTRIBUTES as a, FILTER_DENY as b, ATTRIBUTES_TO_PROPS as c, FILTER_CAST_BOOL as d, FILTER_CAST_NUMBER as e, FILTER_NO_CAST as f, TYPE_FLOW as g, TYPE_SECTION as h, TYPE_HEADING as i, TYPE_PHRASING as j, TYPE_EMBEDDED as k, TYPE_INTERACTIVE as l, TYPE_PALPABLE as m, FILTER_ALLOW as n, match as o };\n//# sourceMappingURL=bundle-7aab7250.js.map\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Bundled with Packemon: https://packemon.dev\n// Platform: browser, Support: stable, Format: esm\nimport { F as Filter, A as ALLOWED_TAG_LIST, B as BANNED_TAG_LIST, a as ATTRIBUTES, b as FILTER_DENY, c as ATTRIBUTES_TO_PROPS, T as TAGS, E as Element, d as FILTER_CAST_BOOL, e as FILTER_CAST_NUMBER, f as FILTER_NO_CAST } from './bundle-7aab7250.js';\nexport { A as ALLOWED_TAG_LIST, a as ATTRIBUTES, c as ATTRIBUTES_TO_PROPS, B as BANNED_TAG_LIST, E as Element, n as FILTER_ALLOW, d as FILTER_CAST_BOOL, e as FILTER_CAST_NUMBER, b as FILTER_DENY, f as FILTER_NO_CAST, F as Filter, M as Matcher, T as TAGS, k as TYPE_EMBEDDED, g as TYPE_FLOW, i as TYPE_HEADING, l as TYPE_INTERACTIVE, m as TYPE_PALPABLE, j as TYPE_PHRASING, h as TYPE_SECTION, o as match } from './bundle-7aab7250.js';\nimport React from 'react';\nimport escapeHtml from 'escape-html';\nconst INVALID_STYLES = /(url|image|image-set)\\(/i;\n\nclass StyleFilter extends Filter {\n attribute(name, value) {\n if (name === 'style') {\n Object.keys(value).forEach(key => {\n if (String(value[key]).match(INVALID_STYLES)) {\n // eslint-disable-next-line no-param-reassign\n delete value[key];\n }\n });\n } // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n\n\n return value;\n }\n\n}\n/* eslint-disable no-bitwise, no-cond-assign, complexity, @typescript-eslint/no-unsafe-return */\n\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst INVALID_ROOTS = /^<(!doctype|(html|head|body)(\\s|>))/i;\nconst ALLOWED_ATTRS = /^(aria-|data-|\\w+:)/iu;\nconst OPEN_TOKEN = /{{{(\\w+)\\/?}}}/;\n\nfunction createDocument() {\n // Maybe SSR? Just do nothing instead of crashing!\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return undefined;\n }\n\n return document.implementation.createHTMLDocument('Interweave');\n}\n\nclass Parser {\n constructor(markup, props = {}, matchers = [], filters = []) {\n var _props$allowList;\n\n _defineProperty(this, \"allowed\", void 0);\n\n _defineProperty(this, \"banned\", void 0);\n\n _defineProperty(this, \"blocked\", void 0);\n\n _defineProperty(this, \"container\", void 0);\n\n _defineProperty(this, \"content\", []);\n\n _defineProperty(this, \"props\", void 0);\n\n _defineProperty(this, \"matchers\", void 0);\n\n _defineProperty(this, \"filters\", void 0);\n\n _defineProperty(this, \"keyIndex\", void 0);\n\n if (process.env.NODE_ENV !== \"production\" && markup && typeof markup !== 'string') {\n throw new TypeError('Interweave parser requires a valid string.');\n }\n\n this.props = props;\n this.matchers = matchers;\n this.filters = [...filters, new StyleFilter()];\n this.keyIndex = -1;\n this.container = this.createContainer(markup || '');\n this.allowed = new Set((_props$allowList = props.allowList) !== null && _props$allowList !== void 0 ? _props$allowList : ALLOWED_TAG_LIST);\n this.banned = new Set(BANNED_TAG_LIST);\n this.blocked = new Set(props.blockList);\n }\n /**\n * Loop through and apply all registered attribute filters.\n */\n\n\n applyAttributeFilters(name, value) {\n return this.filters.reduce((nextValue, filter) => nextValue !== null && typeof filter.attribute === 'function' ? filter.attribute(name, nextValue) : nextValue, value);\n }\n /**\n * Loop through and apply all registered node filters.\n */\n\n\n applyNodeFilters(name, node) {\n // Allow null to be returned\n return this.filters.reduce((nextNode, filter) => nextNode !== null && typeof filter.node === 'function' ? filter.node(name, nextNode) : nextNode, node);\n }\n /**\n * Loop through and apply all registered matchers to the string.\n * If a match is found, create a React element, and build a new array.\n * This array allows React to interpolate and render accordingly.\n */\n\n\n applyMatchers(string, parentConfig) {\n const elements = {};\n const {\n props\n } = this;\n let matchedString = string;\n let elementIndex = 0;\n let parts = null;\n this.matchers.forEach(matcher => {\n const tagName = matcher.asTag().toLowerCase();\n const config = this.getTagConfig(tagName); // Skip matchers that have been disabled from props or are not supported\n\n if (props[matcher.inverseName] || !this.isTagAllowed(tagName)) {\n return;\n } // Skip matchers in which the child cannot be rendered\n\n\n if (!this.canRenderChild(parentConfig, config)) {\n return;\n } // Continuously trigger the matcher until no matches are found\n\n\n let tokenizedString = '';\n\n while (matchedString && (parts = matcher.match(matchedString))) {\n const {\n index,\n length,\n match,\n valid,\n void: isVoid,\n ...partProps\n } = parts;\n const tokenName = matcher.propName + String(elementIndex); // Piece together a new string with interpolated tokens\n\n if (index > 0) {\n tokenizedString += matchedString.slice(0, index);\n }\n\n if (valid) {\n tokenizedString += isVoid ? `{{{${tokenName}/}}}` : `{{{${tokenName}}}}${match}{{{/${tokenName}}}}`;\n this.keyIndex += 1;\n elementIndex += 1;\n elements[tokenName] = {\n children: match,\n matcher,\n props: { ...props,\n ...partProps,\n key: this.keyIndex\n }\n };\n } else {\n tokenizedString += match;\n } // Reduce the string being matched against,\n // otherwise we end up in an infinite loop!\n\n\n if (matcher.greedy) {\n matchedString = tokenizedString + matchedString.slice(index + length);\n tokenizedString = '';\n } else {\n // eslint-disable-next-line unicorn/explicit-length-check\n matchedString = matchedString.slice(index + (length || match.length));\n }\n } // Update the matched string with the tokenized string,\n // so that the next matcher can apply to it.\n\n\n if (!matcher.greedy) {\n matchedString = tokenizedString + matchedString;\n }\n });\n\n if (elementIndex === 0) {\n return string;\n }\n\n return this.replaceTokens(matchedString, elements);\n }\n /**\n * Determine whether the child can be rendered within the parent.\n */\n\n\n canRenderChild(parentConfig, childConfig) {\n if (!parentConfig.tagName || !childConfig.tagName) {\n return false;\n } // No children\n\n\n if (parentConfig.void) {\n return false;\n } // Valid children\n\n\n if (parentConfig.children.length > 0) {\n return parentConfig.children.includes(childConfig.tagName);\n }\n\n if (parentConfig.invalid.length > 0 && parentConfig.invalid.includes(childConfig.tagName)) {\n return false;\n } // Valid parent\n\n\n if (childConfig.parent.length > 0) {\n return childConfig.parent.includes(parentConfig.tagName);\n } // Self nesting\n\n\n if (!parentConfig.self && parentConfig.tagName === childConfig.tagName) {\n return false;\n } // Content category type\n\n\n return Boolean(parentConfig && parentConfig.content & childConfig.type);\n }\n /**\n * Convert line breaks in a string to HTML `
` tags.\n * If the string contains HTML, we should not convert anything,\n * as line breaks should be handled by `
`s in the markup itself.\n */\n\n\n convertLineBreaks(markup) {\n const {\n noHtml,\n disableLineBreaks\n } = this.props;\n\n if (noHtml || disableLineBreaks || markup.match(/<((?:\\/[ a-z]+)|(?:[ a-z]+\\/))>/gi)) {\n return markup;\n } // Replace carriage returns\n\n\n let nextMarkup = markup.replace(/\\r\\n/g, '\\n'); // Replace long line feeds\n\n nextMarkup = nextMarkup.replace(/\\n{3,}/g, '\\n\\n\\n'); // Replace line feeds with `
`s\n\n nextMarkup = nextMarkup.replace(/\\n/g, '
');\n return nextMarkup;\n }\n /**\n * Create a detached HTML document that allows for easy HTML\n * parsing while not triggering scripts or loading external\n * resources.\n */\n\n\n createContainer(markup) {\n var _this$props$container;\n\n const factory = typeof global !== 'undefined' && global.INTERWEAVE_SSR_POLYFILL || createDocument;\n const doc = factory();\n\n if (!doc) {\n return undefined;\n }\n\n const tag = (_this$props$container = this.props.containerTagName) !== null && _this$props$container !== void 0 ? _this$props$container : 'body';\n const el = tag === 'body' || tag === 'fragment' ? doc.body : doc.createElement(tag);\n\n if (markup.match(INVALID_ROOTS)) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('HTML documents as Interweave content are not supported.');\n }\n } else {\n el.innerHTML = this.convertLineBreaks(this.props.escapeHtml ? escapeHtml(markup) : markup);\n }\n\n return el;\n }\n /**\n * Convert an elements attribute map to an object map.\n * Returns null if no attributes are defined.\n */\n\n\n extractAttributes(node) {\n const {\n allowAttributes\n } = this.props;\n const attributes = {};\n let count = 0;\n\n if (node.nodeType !== ELEMENT_NODE || !node.attributes) {\n return null;\n } // @ts-expect-error Cant type iterator\n\n\n [...node.attributes].forEach(attr => {\n const {\n name,\n value\n } = attr;\n const newName = name.toLowerCase();\n const filter = ATTRIBUTES[newName] || ATTRIBUTES[name]; // Verify the node is safe from attacks\n\n if (!this.isSafe(node)) {\n return;\n } // Do not allow denied attributes, excluding ARIA attributes\n // Do not allow events or XSS injections\n\n\n if (!newName.match(ALLOWED_ATTRS) && (!allowAttributes && (!filter || filter === FILTER_DENY) || newName.startsWith('on') || value.replace(/(\\s|\\0|�([9AD]);)/, '').match(/(javascript|vbscript|livescript|xss):/i))) {\n return;\n } // Apply attribute filters\n\n\n let newValue = newName === 'style' ? this.extractStyleAttribute(node) : value; // Cast to boolean\n\n if (filter === FILTER_CAST_BOOL) {\n newValue = true; // Cast to number\n } else if (filter === FILTER_CAST_NUMBER) {\n newValue = Number.parseFloat(String(newValue)); // Cast to string\n } else if (filter !== FILTER_NO_CAST) {\n newValue = String(newValue);\n }\n\n attributes[ATTRIBUTES_TO_PROPS[newName] || newName] = this.applyAttributeFilters(newName, newValue);\n count += 1;\n });\n\n if (count === 0) {\n return null;\n }\n\n return attributes;\n }\n /**\n * Extract the style attribute as an object and remove values that allow for attack vectors.\n */\n\n\n extractStyleAttribute(node) {\n const styles = {}; // eslint-disable-next-line unicorn/prefer-spread\n\n Array.from(node.style).forEach(key => {\n const value = node.style[key];\n\n if (typeof value === 'string' || typeof value === 'number') {\n styles[key.replace(/-([a-z])/g, (match, letter) => String(letter).toUpperCase())] = value;\n }\n });\n return styles;\n }\n /**\n * Return configuration for a specific tag.\n */\n\n\n getTagConfig(tagName) {\n const common = {\n children: [],\n content: 0,\n invalid: [],\n parent: [],\n self: true,\n tagName: '',\n type: 0,\n void: false\n }; // Only spread when a tag config exists,\n // otherwise we use the empty `tagName`\n // for parent config inheritance.\n\n if (TAGS[tagName]) {\n return { ...common,\n ...TAGS[tagName],\n tagName\n };\n }\n\n return common;\n }\n /**\n * Verify that a node is safe from XSS and injection attacks.\n */\n\n\n isSafe(node) {\n // URLs should only support HTTP, email and phone numbers\n if (typeof HTMLAnchorElement !== 'undefined' && node instanceof HTMLAnchorElement) {\n const href = node.getAttribute('href'); // Fragment protocols start with about:\n // So let's just allow them\n\n if (href !== null && href !== void 0 && href.startsWith('#')) {\n return true;\n }\n\n const protocol = node.protocol.toLowerCase();\n return protocol === ':' || protocol === 'http:' || protocol === 'https:' || protocol === 'mailto:' || protocol === 'tel:';\n }\n\n return true;\n }\n /**\n * Verify that an HTML tag is allowed to render.\n */\n\n\n isTagAllowed(tagName) {\n if (this.banned.has(tagName) || this.blocked.has(tagName)) {\n return false;\n } // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\n\n return this.props.allowElements || this.allowed.has(tagName);\n }\n /**\n * Parse the markup by injecting it into a detached document,\n * while looping over all child nodes and generating an\n * array to interpolate into JSX.\n */\n\n\n parse() {\n if (!this.container) {\n return [];\n }\n\n return this.parseNode(this.container, this.getTagConfig(this.container.nodeName.toLowerCase()));\n }\n /**\n * Loop over the nodes children and generate a\n * list of text nodes and React elements.\n */\n\n\n parseNode(parentNode, parentConfig) {\n const {\n noHtml,\n noHtmlExceptMatchers,\n allowElements,\n transform,\n transformOnlyAllowList\n } = this.props;\n let content = [];\n let mergedText = ''; // @ts-expect-error Cant type iterator\n\n [...parentNode.childNodes].forEach(node => {\n // Create React elements from HTML elements\n if (node.nodeType === ELEMENT_NODE) {\n const tagName = node.nodeName.toLowerCase();\n const config = this.getTagConfig(tagName); // Persist any previous text\n\n if (mergedText) {\n content.push(mergedText);\n mergedText = '';\n } // Apply node filters first\n\n\n const nextNode = this.applyNodeFilters(tagName, node);\n\n if (!nextNode) {\n return;\n } // Apply transformation second\n\n\n let children;\n\n if (transform && !(transformOnlyAllowList && !this.isTagAllowed(tagName))) {\n this.keyIndex += 1;\n const key = this.keyIndex; // Must occur after key is set\n\n children = this.parseNode(nextNode, config);\n const transformed = transform(nextNode, children, config);\n\n if (transformed === null) {\n return;\n }\n\n if (typeof transformed !== 'undefined') {\n content.push( /*#__PURE__*/React.cloneElement(transformed, {\n key\n }));\n return;\n } // Reset as we're not using the transformation\n\n\n this.keyIndex = key - 1;\n } // Never allow these tags (except via a transformer)\n\n\n if (this.banned.has(tagName)) {\n return;\n } // Only render when the following criteria is met:\n // - HTML has not been disabled\n // - Tag is allowed\n // - Child is valid within the parent\n\n\n if (!(noHtml || noHtmlExceptMatchers && tagName !== 'br') && this.isTagAllowed(tagName) && (allowElements || this.canRenderChild(parentConfig, config))) {\n var _children;\n\n this.keyIndex += 1; // Build the props as it makes it easier to test\n\n const attributes = this.extractAttributes(nextNode);\n const elementProps = {\n tagName\n };\n\n if (attributes) {\n elementProps.attributes = attributes;\n }\n\n if (config.void) {\n elementProps.selfClose = config.void;\n }\n\n content.push( /*#__PURE__*/React.createElement(Element, { ...elementProps,\n key: this.keyIndex\n }, (_children = children) !== null && _children !== void 0 ? _children : this.parseNode(nextNode, config))); // Render the children of the current element only.\n // Important: If the current element is not allowed,\n // use the parent element for the next scope.\n } else {\n content = [...content, ...this.parseNode(nextNode, config.tagName ? config : parentConfig)];\n } // Apply matchers if a text node\n\n } else if (node.nodeType === TEXT_NODE) {\n const text = noHtml && !noHtmlExceptMatchers ? node.textContent : // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.applyMatchers(node.textContent || '', parentConfig);\n\n if (Array.isArray(text)) {\n content = [...content, ...text];\n } else {\n mergedText += text;\n }\n }\n });\n\n if (mergedText) {\n content.push(mergedText);\n }\n\n return content;\n }\n /**\n * Deconstruct the string into an array, by replacing custom tokens with React elements,\n * so that React can render it correctly.\n */\n\n\n replaceTokens(tokenizedString, elements) {\n if (!tokenizedString.includes('{{{')) {\n return tokenizedString;\n }\n\n const nodes = [];\n let text = tokenizedString;\n let open = null; // Find an open token tag\n\n while (open = text.match(OPEN_TOKEN)) {\n const [match, tokenName] = open;\n const startIndex = open.index;\n const isVoid = match.includes('/');\n\n if (process.env.NODE_ENV !== \"production\" && !elements[tokenName]) {\n throw new Error(`Token \"${tokenName}\" found but no matching element to replace with.`);\n } // Extract the previous non-token text\n\n\n if (startIndex > 0) {\n nodes.push(text.slice(0, startIndex)); // Reduce text so that the closing tag will be found after the opening\n\n text = text.slice(startIndex);\n }\n\n const {\n children,\n matcher,\n props: elementProps\n } = elements[tokenName];\n let endIndex; // Use tag as-is if void\n\n if (isVoid) {\n endIndex = match.length;\n nodes.push(matcher.createElement(children, elementProps)); // Find the closing tag if not void\n } else {\n const close = text.match(new RegExp(`{{{/${tokenName}}}}`));\n\n if (process.env.NODE_ENV !== \"production\" && !close) {\n throw new Error(`Closing token missing for interpolated element \"${tokenName}\".`);\n }\n\n endIndex = close.index + close[0].length;\n nodes.push(matcher.createElement(this.replaceTokens(text.slice(match.length, close.index), elements), elementProps));\n } // Reduce text for the next interation\n\n\n text = text.slice(endIndex);\n } // Extra the remaining text\n\n\n if (text.length > 0) {\n nodes.push(text);\n } // Reduce to a string if possible\n\n\n if (nodes.length === 0) {\n return '';\n }\n\n if (nodes.length === 1 && typeof nodes[0] === 'string') {\n return nodes[0];\n }\n\n return nodes;\n }\n\n}\n/* eslint-disable react/jsx-fragments */\n\n\nfunction Markup(props) {\n var _ref;\n\n const {\n attributes,\n className,\n containerTagName,\n content,\n emptyContent,\n parsedContent,\n tagName,\n noWrap: baseNoWrap\n } = props;\n const tag = (_ref = containerTagName !== null && containerTagName !== void 0 ? containerTagName : tagName) !== null && _ref !== void 0 ? _ref : 'span';\n const noWrap = tag === 'fragment' ? true : baseNoWrap;\n let mainContent;\n\n if (parsedContent) {\n mainContent = parsedContent;\n } else {\n const markup = new Parser(content !== null && content !== void 0 ? content : '', props).parse();\n\n if (markup.length > 0) {\n mainContent = markup;\n }\n }\n\n if (!mainContent) {\n mainContent = emptyContent;\n }\n\n if (noWrap) {\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, mainContent);\n }\n\n return /*#__PURE__*/React.createElement(Element, {\n attributes: attributes,\n className: className,\n tagName: tag\n }, mainContent);\n}\n/* eslint-disable promise/prefer-await-to-callbacks */\n\n\nfunction Interweave(props) {\n const {\n attributes,\n className,\n content = '',\n disableFilters = false,\n disableMatchers = false,\n emptyContent = null,\n filters = [],\n matchers = [],\n onAfterParse = null,\n onBeforeParse = null,\n tagName = 'span',\n noWrap = false,\n ...parserProps\n } = props;\n const allMatchers = disableMatchers ? [] : matchers;\n const allFilters = disableFilters ? [] : filters;\n const beforeCallbacks = onBeforeParse ? [onBeforeParse] : [];\n const afterCallbacks = onAfterParse ? [onAfterParse] : []; // Inherit callbacks from matchers\n\n allMatchers.forEach(matcher => {\n if (matcher.onBeforeParse) {\n beforeCallbacks.push(matcher.onBeforeParse.bind(matcher));\n }\n\n if (matcher.onAfterParse) {\n afterCallbacks.push(matcher.onAfterParse.bind(matcher));\n }\n }); // Trigger before callbacks\n\n const markup = beforeCallbacks.reduce((string, callback) => {\n const nextString = callback(string, props);\n\n if (process.env.NODE_ENV !== \"production\" && typeof nextString !== 'string') {\n throw new TypeError('Interweave `onBeforeParse` must return a valid HTML string.');\n }\n\n return nextString;\n }, content !== null && content !== void 0 ? content : ''); // Parse the markup\n\n const parser = new Parser(markup, parserProps, allMatchers, allFilters); // Trigger after callbacks\n\n const nodes = afterCallbacks.reduce((parserNodes, callback) => {\n const nextNodes = callback(parserNodes, props);\n\n if (process.env.NODE_ENV !== \"production\" && !Array.isArray(nextNodes)) {\n throw new TypeError('Interweave `onAfterParse` must return an array of strings and React elements.');\n }\n\n return nextNodes;\n }, parser.parse());\n return /*#__PURE__*/React.createElement(Markup, {\n attributes: attributes,\n className: className // eslint-disable-next-line react/destructuring-assignment\n ,\n containerTagName: props.containerTagName,\n emptyContent: emptyContent,\n noWrap: noWrap,\n parsedContent: nodes.length === 0 ? undefined : nodes,\n tagName: tagName\n });\n}\n\nexport { Interweave, Markup, Parser };\n//# sourceMappingURL=index.js.map\n"],"names":["stagingBaseUrlFromWindow","location","window","protocol","hostname","port","baseUrlFromWindow","useStagingApi","process","env","USE_STAGING_API","currentLanguage","options","_temp","headers","optionalHeaders","moreOptions","config","baseURL","withCredentials","timeout","csrfToken","metaCsrfTag","document","head","querySelector","content","getCsrfToken","axios","module","exports","utils","require","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","Promise","resolve","reject","requestData","data","requestHeaders","responseType","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","method","toUpperCase","params","paramsSerializer","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","bind","Axios","mergeConfig","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","defaults","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","token","reason","throwIfRequested","source","c","value","InterceptorManager","dispatchRequest","validator","validators","interceptors","arguments","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","push","chain","Array","apply","concat","length","shift","newConfig","onFulfilled","onRejected","error","getUri","replace","handlers","use","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","Error","transformData","throwIfCancellationRequested","call","transformRequest","merge","common","adapter","transformResponse","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","axiosKeys","otherKeys","Object","keys","filter","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","i","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","pathname","charAt","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","callback","arr","pkg","type","thing","deprecatedWarnings","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","opt","desc","opts","console","warn","schema","allowUnknown","result","getPrototypeOf","isFunction","obj","l","hasOwnProperty","constructor","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","a","b","str","stripBOM","charCodeAt","matchHtmlRegExp","string","escape","exec","html","index","lastIndex","substring","_defineProperty","defineProperty","enumerable","configurable","writable","tagConfigs","TYPE_FLOW","self","address","invalid","audio","children","br","void","body","button","caption","parent","col","colgroup","details","dd","dl","dt","figcaption","footer","header","hr","img","li","main","ol","picture","rb","rp","rt","rtc","ruby","summary","table","tbody","td","tfoot","th","thead","tr","track","ul","video","wbr","createConfigBuilder","tagName","TAGS","freeze","BANNED_TAG_LIST","ALLOWED_TAG_LIST","tag","FILTER_DENY","FILTER_CAST_NUMBER","FILTER_CAST_BOOL","FILTER_NO_CAST","ATTRIBUTES","alt","cite","class","colspan","controls","datetime","default","disabled","dir","height","kind","label","lang","loading","loop","media","muted","poster","rel","role","rowspan","scope","sizes","span","start","style","src","srclang","srcset","tabindex","title","width","ATTRIBUTES_TO_PROPS","_extends","assign","Element","attributes","className","selfClose","Tag","Filter","attribute","node","Matcher","factory","propName","inverseName","props","replaceWith","doMatch","pattern","isVoid","matches","valid","onBeforeParse","onAfterParse","INVALID_STYLES","StyleFilter","F","String","INVALID_ROOTS","ALLOWED_ATTRS","OPEN_TOKEN","createDocument","implementation","createHTMLDocument","Parser","markup","matchers","filters","_props$allowList","keyIndex","container","createContainer","allowed","Set","allowList","A","banned","B","blocked","blockList","applyAttributeFilters","reduce","nextValue","applyNodeFilters","nextNode","applyMatchers","parentConfig","elements","matchedString","elementIndex","matcher","asTag","getTagConfig","isTagAllowed","canRenderChild","tokenizedString","partProps","tokenName","greedy","replaceTokens","childConfig","includes","Boolean","convertLineBreaks","noHtml","disableLineBreaks","nextMarkup","_this$props$container","doc","g","INTERWEAVE_SSR_POLYFILL","containerTagName","el","innerHTML","escapeHtml","extractAttributes","allowAttributes","count","nodeType","attr","newName","isSafe","startsWith","newValue","extractStyleAttribute","Number","parseFloat","styles","from","letter","T","HTMLAnchorElement","getAttribute","has","allowElements","parseNode","nodeName","parentNode","noHtmlExceptMatchers","transform","transformOnlyAllowList","mergedText","childNodes","transformed","_children","elementProps","E","text","textContent","nodes","startIndex","endIndex","close","Markup","_ref","emptyContent","parsedContent","noWrap","baseNoWrap","mainContent","Interweave","disableFilters","disableMatchers","parserProps","allMatchers","allFilters","beforeCallbacks","afterCallbacks","parserNodes"],"sourceRoot":""}