{"version":3,"file":"mng-digisubs.articleShare.bundle.js","mappings":"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","sources":["webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./assets/js/settings.js","webpack:///./assets/js/logger.js","webpack:///./assets/js/constants.js","webpack:///./node_modules/jwt-decode/build/jwt-decode.esm.js","webpack:///./assets/js/utils.js","webpack:///./assets/js/analytics.js","webpack:///./assets/js/authentication/uiElementRetrieval.js","webpack:///./assets/js/user-utils.js","webpack:///./assets/js/article-sharing/article-sharing.js","webpack:///./assets/js/article-sharing/entrypoint.article-sharing.js"],"sourcesContent":["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');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\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 var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\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(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, 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 = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n 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 || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\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 // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\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// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\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\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\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 * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\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),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\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');\nvar Cancel = require('../cancel/Cancel');\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 if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\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 status: this.response && this.response.status ? this.response.status : null\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 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 // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\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 || defaults.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 headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\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","module.exports = {\n \"version\": \"0.24.0\"\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 VERSION = require('../env/data').version;\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 = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + 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' + (version ? ' in ' + version : '')));\n }\n\n if (version && !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 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","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","window.authentication_config.sessionManagementEnabled = window.authentication_config.sessionManagement === '1';\nexport default {\n\tdebug: !!window.authentication_config.debug,\n\tsessionServer: window.authentication_config ? window.authentication_config.sessionServer : '',\n\tentitlementsEnabled: window.authentication_config ? window.authentication_config.entitlementsEnabled === '1' : false,\n\tdropdownEnabled: window.authentication_config ? window.authentication_config.dropdownEnabled === '1' : false,\n\tenableReaderDashboardLink: window.authentication_config ? window.authentication_config.enableReaderDashboardLink === '1' : false,\n\toneTapEnabled: window.authentication_config ? window.authentication_config.oneTapEnabled === '1' : false,\n\tuseTribMainGoogle: window.authentication_config ? window.authentication_config.useTribMainGoogle === '1' : false,\n\tisAdfreeArticle: window.authentication_config ? window.authentication_config.isAdfreeArticle === '1' : false,\n\tauth0Domain: window.authentication_config ? window.authentication_config.auth0Domain : '',\n\tauth0ClientId: window.authentication_config ? window.authentication_config.auth0ClientId : '',\n\tentitlementsEndpoint: window.authentication_config ? window.authentication_config.entitlementsEndpoint : '',\n\tentitlementsApiKey: window.authentication_config ? window.authentication_config.entitlementsAPIKey : '',\n\tlinaCheckOnArticles: window.authentication_config ? window.authentication_config.linaCheckOnArticles : false,\n\tserverEntitlements: window.authentication_config ? window.authentication_config.serverEntitlements : false,\n\tgoogleClientId: window.authentication_config ? window.authentication_config.googleClientId : '',\n\tnewsletterId: window.authentication_config ? window.authentication_config.newsletterId : 0,\n\tconnextStorageKey: '',\n\tauth0SubKey: 'auth0_sub',\n\tauth0Authenticated: 'auth0.is.authenticated',\n\tsecret: window.authentication_config ? window.authentication_config.pluginSecret : '',\n\tnewslettersEnabled: window.authentication_config ? window.authentication_config.newslettersEnabled === '1': false,\n\tbcLowaSegements: window.authentication_config.bcLowaSegements ? window.authentication_config.bcLowaSegements === '1' : false,\n\tblueconicEnabled: window.authentication_config.blueconicEnabled ? window.authentication_config.blueconicEnabled === '1' : false,\n\tdatadogEnabled: window.authentication_config.enableDatadog ? window.authentication_config.enableDatadog === '1' : false,\n};\n","import settings from './settings';\n\nconst log = function logger(...args) {\n\tif ( settings.debug ) {\n\t\tconsole.log( 'MNGDigisubs:', ...args );\n\t}\n};\n\nexport default {\n\tlog,\n}\n","export default {\n\tAUTH0_SUB_COOKIE_KEY: 'auth0_sub',\n\tENTITLEMENT_COOKIE_KEY: 'mng-entitlements',\n\tLOCAL_STORAGE_SESSION_KEY: '__MNG_Session',\n\tREGWALL_USER_IS_SUBSCRIBED: 'regwallUserIsSubscribed',\n\tUSER_IS_LOWA: 'entitled',\n\tSLO_FLAG: 'slo_flag',\n\tAB_TESTING_COOKIE: '_matheriSegs',\n\tCONNEXT_SILENT_TIMEOUT: 10,\n\tARTICLES_REMAINING_KEY: 'articlesRemaining',\n\tUSER_PROFILE_HASH: 'user-profile',\n};\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import jwtDecode from 'jwt-decode';\nimport axios from 'axios'\nimport logger from './logger';\nimport settings from './settings';\nimport CONSTANTS from './constants';\n\nexport const getCurrentUrl = () => {\n\tconst windowLocationhref = window.location.href;\n\tconst currentUrl = new URL( windowLocationhref );\n\treturn currentUrl;\n};\n\nexport const getCookie = (name) => {\n\tconst cookieName = `${name }=`;\n\tconst cookies = decodeURIComponent(document.cookie).split(';');\n\tfor( let i = 0; i < cookies.length; i+=1 ) {\n\t\tconst cookiePart = cookies[i].trimLeft();\n\t\tif (cookiePart.indexOf(cookieName) === 0 ) {\n\t\t\treturn cookiePart.substring(cookieName.length, cookiePart.length);\n\t\t}\n\t}\n\treturn false;\n};\n\nexport const getSiteWithTrbdevDomain = () => {\n\tconst URL = getCurrentUrl();\n\tif ( ! URL.hostname.includes( 'trbdevcloud.com' ) ) return false;\n\tconst hostnameParts = URL.hostname.split('wp');\n\tif( hostnameParts.length < 2 ) return false;\n\treturn hostnameParts[1];\n};\n\nexport const getRootDomain = (givenHostname = false) => {\n\tconst { hostname } = getCurrentUrl();\n\tlet hostnameToCheck = hostname;\n\tif( givenHostname && typeof givenHostname === 'string' ) {\n\t\thostnameToCheck = givenHostname;\n\t}\n\tconst parts = hostnameToCheck.split('.');\n\treturn `${parts[parts.length - 2]}.${parts[parts.length - 1]}`;\n};\n\nexport const getCookieRootDomain = () => {\n\tconst rootDomain = getRootDomain();\n\treturn `.${rootDomain}`;\n};\n\nexport const getSiteDomainForTribuneEntitlements = (defaultRootDomain) => {\n\tif(!defaultRootDomain.includes('trbdevcloud')) return defaultRootDomain;\n\tconst { hostname } = getCurrentUrl();\n\tconst domainPart = hostname.split('.')[1];\n\tconst correctPortion = domainPart.split('-').length > 2 ? `${domainPart.split('-')[0]}-${domainPart.split('-')[1]}` : domainPart.split('-')[0];\n\treturn `${correctPortion}.com`;\n};\n\nexport const setCookie = ( name, value, options ) => {\n\tlet cookieString = `${name}=${value};`;\n\tif (typeof options !== 'undefined'){\n\t\t// loop through options and assign to cookie\n\t\tlogger.log( 'Setting cookie with options: ', options );\n\t\tObject.entries( options ).forEach( ([k, v]) => {\n\t\t\tif (k === 'expires') {\n\t\t\t\tconst date = new Date();\n\t\t\t\tdate.setTime(date.getTime() + (v*24*60*60*1000));\n\t\t\t\tcookieString += `expires=${date.toUTCString()};`;\n\t\t\t} else {\n\t\t\t\tcookieString += `${k}=${v};`;\n\t\t\t}\n\t\t} );\n\t} else{\n\t\tcookieString += 'path=/;';\n\t}\n\tdocument.cookie = cookieString;\n};\n\nexport const deleteCookie = ( name, options = {}, domainToDeleteFrom = '' ) => {\n\t// Set cookie with old expiration date\n\tlet cookieString = `${name}= ;expires= Thu, 01 Jan 1970 00:00:00 GMT;`;\n\tconst rootDomain = getRootDomain();\n\tconst wwwDomain = 'www'.concat(rootDomain);\n\tconst dotWwwDomain = '.www'.concat(rootDomain);\n\tconst domainsToDeleteFrom = [rootDomain, wwwDomain, dotWwwDomain];\n\tif( domainToDeleteFrom ) domainsToDeleteFrom.push( domainToDeleteFrom );\n\tObject.entries( options ).forEach( ([k, v]) => {\n\t\tcookieString += `${k}=${v};`;\n\t} );\n\tif (Object.keys(options).length === 0){\n\t\tcookieString += 'path=/;';\n\t}\n\n\t// try deleting the cookie without specifying the domain\n\tdocument.cookie = cookieString;\n\t// delete the cookies by domain\n\tdomainsToDeleteFrom.forEach(domain => {\n\t\tdocument.cookie = cookieString.concat('domain=', domain, ';');\n\t});\n};\n\nexport const getSiteUrl = () => {\n\tconst currentUrl = getCurrentUrl();\n\treturn currentUrl.host.replace( 'www.', '' ).replace( 'develop.', '' ).replace( 'preprod.', '' );\n};\n\nexport const isValidUrl = (url) => {\n\tconst pattern = /^https?:\\/\\/([\\w.-]+)\\.([a-z]{2,})(\\/[\\w-.]*)*$/;\n\treturn pattern.test(url);\n}\n\n// Safari doesn't allow \\n when calling atob to decode. Occasionally this appears to be\n// present in Auth0 ID Tokens so lets just remove it for all tokens here\nexport const decodeToken = ( jwt ) => jwtDecode( jwt );// JSON.parse( Base64.decode( jwt.split('.')[1] ) );\n\nexport const siteIsTribune = () => {\n\tconst domain = getRootDomain();\n\tconst tribList = ['mcall.com', 'courant.com', 'sun-sentinel.com', 'orlandosentinel.com', 'growthspotter.com', 'dailypress.com', 'pilotonline.com', 'nydailynews.com', 'baltimoresun.com', 'capitalgazette.com', 'chicagotribune.com', 'trbdevcloud.com'];\n\treturn tribList.includes( domain );\n}\n\nexport const checkAppleSubStatus = async (accessToken) => {\n\tconst rootDomain = getRootDomain().split('.')[0];\n\ttry{\n\t\tconst serverResponse = await axios({\n\t\t\tmethod: 'get',\n\t\t\turl: `${settings.entitlementsEndpoint}apple/subscription-check/${rootDomain}`,\n\t\t\tparams: { access_token: accessToken }\n\t\t});\n\t\tif( serverResponse.data ){\n\t\t\tlogger.log( 'Apple Sub Check: Request successful: ', serverResponse.data );\n\t\t\treturn serverResponse.data.status === 'subscribed';\n\t\t}\n\t\treturn false;\n\n\t} catch (errorThrown){\n\t\tlogger.log( 'Apple Sub Check: Request Failure: ', errorThrown );\n\t\treturn false;\n\t}\n}\n\nexport const getEncryptedUuid = async (uuid) => {\n\n\tconst serverResponse = await axios({\n\t\tmethod: 'get',\n\t\turl: `${settings.entitlementsEndpoint}auth0/users/${encodeURIComponent(uuid)}`,\n\t\theaders: { 'X-Api-Key': settings.entitlementsApiKey }\n\t});\n\treturn serverResponse.data.encryptedUuid;\n}\n\nexport const getDefaultUserConnection = ( email, sendEmail = false, includeLoginLink = true ) => {\n\tlet siteURL = getSiteUrl();\n\tsiteURL = getSiteDomainForTribuneEntitlements( siteURL );\n\treturn new Promise( ( resolve ) => {\n\t\tconst userEndpoint = `${settings.entitlementsEndpoint}auth0/getDefaultUserConnection`;\n\t\tconst requestBody = {\n\t\t\tsiteURL,\n\t\t\tauth0ClientId: settings.auth0ClientId,\n\t\t\tsendEmail,\n\t\t\temail,\n\t\t\tincludeLoginLink\n\t\t}\n\t\t$.ajax( {\n\t\t\ttype: 'POST',\n\t\t\turl: userEndpoint,\n\t\t\theaders: {\n\t\t\t\t'Accept': 'application/json',\n\t\t\t\t'Content-Type': 'application/json; charset=utf-8',\n\t\t\t\t'X-Api-Key': settings.entitlementsApiKey,\n\t\t\t},\n\t\t\tdata: JSON.stringify( requestBody ),\n\t\t\tsuccess: async ( data ) => {\n\t\t\t\tif ( typeof data !== 'object' ) {\n\t\t\t\t\treturn new Error( 'getDefaultUserConnection API returned no data' );\n\t\t\t\t}\n\t\t\t\tlogger.log( 'getDefaultUserConnection: Request successful: ', data );\n\t\t\t\treturn resolve(data);\n\t\t\t},\n\t\t\terror: async ( request, textStatus, errorThrown ) => {\n\t\t\t\tlogger.log( 'getDefaultUserConnection: Request Failure: ', errorThrown );\n\t\t\t\treturn new Error( 'getDefaultUserConnection failure' );\n\t\t\t},\n\t\t} );\n\t});\n}\n\nexport const documentIsLoadedCompletely = () => document.readyState === 'complete'\n\nexport const documentBodyLoaded = ( checkIfStateIsComplete = false ) => new Promise((resolve) => {\n\n\tlet loadedLevel = true;\n\n\tif ( documentIsLoadedCompletely() ) {\n\t\tresolve();\n\t} else {\n\t\tlogger.log( 'UIHandler: ', 'Waiting for the body to load...' );\n\t\tconst bodyLoaded = setInterval(async () => {\n\t\t\tif( checkIfStateIsComplete ) {\n\t\t\t\tloadedLevel = documentIsLoadedCompletely();\n\t\t\t}\n\t\t\tif ( document.querySelector('body') && loadedLevel ) {\n\t\t\t\tclearInterval(bodyLoaded);\n\t\t\t\tresolve(true)\n\t\t\t}\n\t\t}, 200); // check every 200ms\n\t}\n});\n\nexport const wordpressButtonsLoaded = () => new Promise((resolve) => {\n\tif ( documentIsLoadedCompletely() ) {\n\t\tresolve();\n\t} else {\n\t\tlogger.log( 'UIHandler: ', 'Waiting for the log-in-button class to load...' );\n\t\tconst loginButtonsLoaded = setInterval(async () => {\n\t\t\tif (document.getElementsByClassName('log-in-button').length > 1) {\n\t\t\t\tclearInterval(loginButtonsLoaded);\n\t\t\t\tresolve(true)\n\t\t\t}\n\t\t}, 200); // check every 200ms\n\t}\n});\n\nexport const digisubsDataLayerLoaded = () => new Promise((resolve) => {\n\tif ( (document.readyState === 'interactive' || documentIsLoadedCompletely() ) && window.dataLayer ) {\n\t\tlogger.log( 'Utils digisubsDataLayerLoaded: ', 'Document is in interactive state, resolving.' );\n\t\tresolve();\n\t} else {\n\t\tlogger.log( 'Utils digisubsDataLayerLoaded: ', 'Waiting for the dataLayer to load...' );\n\t\tconst dataLayerLoaded = setInterval(async () => {\n\t\t\tif (window.dataLayer && window.dataLayer.length > 2) {\n\t\t\t\tclearInterval(dataLayerLoaded);\n\t\t\t\tresolve(true)\n\t\t\t}\n\t\t}, 50); // check every 50ms\n\t}\n});\n\nexport const digisubsMenuLoaded = () => new Promise((resolve) => {\n\tif ( documentIsLoadedCompletely() ) {\n\t\tresolve();\n\t} else {\n\t\tlogger.log( 'Utils digisubsMenuLoaded: ', 'Waiting for the digisubs dropdown to load...' );\n\t\tconst digisubsLoaded = setInterval(async () => {\n\t\t\tif (document.getElementById('account-content')) {\n\t\t\t\tclearInterval(digisubsLoaded);\n\t\t\t\tresolve(true)\n\t\t\t}\n\t\t}, 200); // check every 200ms\n\t}\n});\n\nexport const newsLetterDropdownLoaded = () => new Promise((resolve) => {\n\tif ( documentIsLoadedCompletely() ) {\n\t\tresolve();\n\t} else {\n\t\tlogger.log( 'Utils newsLetterDropdownLoaded: ', 'Waiting for the digisubs dropdown to load...' );\n\t\tconst dropDownLoaded = setInterval(async () => {\n\t\t\tif (document.querySelector('.newsletter-dropdown-title.dropdown-item')) {\n\t\t\t\tclearInterval(dropDownLoaded);\n\t\t\t\tresolve(true)\n\t\t\t}\n\t\t}, 200); // check every 200ms\n\t}\n});\n\nexport const digisubsEmployeeDebuggerLoaded = () => new Promise((resolve) => {\n\tif ( documentIsLoadedCompletely() ) {\n\t\tresolve();\n\t} else {\n\t\tlogger.log( 'UIHandler: Employee Debugger: ', 'Waiting for the digisubs debugger toolbox to load...' );\n\t\tconst digisubsLoaded = setInterval(async () => {\n\t\t\tif (document.getElementById('employee-debugger-content')) {\n\t\t\t\tclearInterval(digisubsLoaded);\n\t\t\t\tresolve(true)\n\t\t\t}\n\t\t}, 200); // check every 200ms\n\t}\n});\n\nexport const getDataLayerObject = async (getObject) => {\n\tawait digisubsDataLayerLoaded();\n\tlogger.log ('Utils getDataLayerObject: looking for this dataLayer object ',getObject);\n\t// make sure dataLayer exists, it not create it\n\twindow.dataLayer = window.dataLayer || [];\n\n\t// loop through dataLayer array looking for title\n\tlet dataLayerSearch = '';\n\t/* eslint-disable-next-line no-undef */\n\tlogger.log('Utils getDataLayerObject: here is dataLayer length ', window.dataLayer.length);\n\tconst dataLayerLoop = (element) => {\n\t\tlogger.log('Utils dataLayerLoop: look for this element ', element);\n\t\tif( element[getObject] ) {\n\t\t\tlogger.log('Utils dataLayerLoop: found ',element[getObject]);\n\t\t\tdataLayerSearch = element[getObject];\n\t\t\treturn element[getObject];\n\t\t}\n\t\tlogger.log('Utils dataLayerLoop: dataLayer search ', false);\n\t\treturn false;\n\n\t}\n\t/* eslint-disable-next-line no-undef */\n\tconst searchDataLayer = window.dataLayer.some(dataLayerLoop);\n\tif (searchDataLayer) return dataLayerSearch;\n\treturn false;\n}\n\nexport const pageType = async ( typeString = 'Page Type' ) => {\n\tconst getPageType = await getDataLayerObject( typeString );\n\tlogger.log( 'utils.js | pageType: page type is ',getPageType);\n\treturn getPageType;\n}\n\nconst blueConicReady = () => new Promise( ( resolve ) => {\n\tlogger.log('blueConicReady | Waiting for BC to be ready.');\n\twindow.blueConicClient.event.subscribe(window.blueConicClient.event.onReady,\n\t\t{}, () => {\n\t\t\t// BlueConic is ready\n\t\t\tlogger.log('blueConicReady | onReady fired, BC profile is ready.');\n\t\t\tresolve(true);\n\t\t}\n\t);\n\tconst bcTimeout = setTimeout( () => {\n\t\tclearTimeout( bcTimeout );\n\t\tlogger.log('blueConicReady | onReady timeout, BC onReady unknown.');\n\t\tresolve( false );\n\t}, 3000);\n});\n\nconst blueConicProfileReady = () => new Promise( ( resolve ) => {\n\tlogger.log('blueConicProfileReady | Waiting for BC Profile to be ready.');\n\tif( window.blueConicClient && ( window.blueConicClient.getSegments || window.blueConicClient.profile ) ) {\n\t\tlogger.log('blueConicProfileReady | BC getSegments is ready.');\n\t\tresolve( true );\n\t}\n\twindow.blueConicClient.event.subscribe(window.blueConicClient.event.onBeforeInteractions,\n\t\t{},() => {\n\t\t\t// BlueConic interactions are about to be executed\n\t\t\tlogger.log('blueConicProfileReady | onBeforeInteractions fired, BC profile is ready.');\n\t\t\tresolve( true );\n\t\t});\n\n\tconst bcTimeout = setTimeout( () => {\n\t\tclearTimeout( bcTimeout );\n\t\tlogger.log('blueConicProfileReady | onBeforeInteractions timeout, BC profile readiness unknown');\n\t\tresolve( false );\n\t}, 3000);\n});\n\nexport const blueConicLoaded = ( waitTillBCReady = false ) => new Promise( ( resolve ) => {\n\tlogger.log(`blueConicLoaded | waitTillBCReady is ${waitTillBCReady}`);\n\n\tconst bcTimeout = setTimeout( () => {\n\t\tclearTimeout( bcTimeout );\n\t\tlogger.log('blueConicLoaded | onBlueConicLoaded timeout, resolving false for load status.');\n\t\tresolve( false );\n\t}, 10000);\n\t\n\t// Is BlueConic loaded?\n\tif ( typeof window.blueConicClient !== 'undefined' &&\n\t\ttypeof window.blueConicClient.event !== 'undefined' &&\n\t\ttypeof window.blueConicClient.event.subscribe !== 'undefined' ) {\n\n\t\tlogger.log('blueConicLoaded | BC object already loaded');\n\n\t\tif( waitTillBCReady ){\n\t\t\tresolve( blueConicReady() );\n\t\t} else {\n\t\t\tclearTimeout( bcTimeout );\n\t\t\tresolve();\n\t\t}\n\t} else {\n\t\tlogger.log('blueConicLoaded | BC not loaded, waiting for \"onBlueConicLoaded\" event');\n\t\t// Not yet loaded; wait for the \"onBlueConicLoaded\" event\n\t\twindow.addEventListener( 'onBlueConicLoaded', async() => {\n\t\t\tlogger.log('blueConicLoaded | onBlueConicLoaded event fired.');\n\t\t\t// BlueConic is loaded, now we can do API things\n\t\t\tif( waitTillBCReady ){\n\t\t\t\tlogger.log('blueConicLoaded | waiting for blueConicReady...');\n\t\t\t\tconst loadSuccess = await blueConicReady();\n\t\t\t\tclearTimeout( bcTimeout );\n\t\t\t\tresolve( loadSuccess );\n\t\t\t} else {\n\t\t\t\tclearTimeout( bcTimeout );\n\t\t\t\tresolve();\n\t\t\t}\n\t\t}, false );\n\t}\n} );\n\nexport const bcGetAuth0Id = async () => {\n\tconst loadStatus = await blueConicLoaded( true );\n\tif( loadStatus ) {\n\t\tconst bcLoadSuccess = await blueConicProfileReady();\n\t\tif ( !bcLoadSuccess ) return false;\n\t\treturn blueConicClient.profile.getProfile().getValue('Auth0_ID');\n\t} return false;\n}\n\nexport const bcLowaCheck = async () => {\n\tconst subSeglist = [ 'MICH LOWA', 'OHIO LOWA', 'PENN LOWA', 'NY LOWA', 'BOSTON LOWA', 'NORCAL LOWA',\n\t\t'TWIN CITIES LOWA', 'DENV/PMP LOWA', 'SCNG LOWA', 'BANG LOWA', 'AMC LOWA', 'HC LOWA', 'GS LOWA', \n\t\t'ORL LOWA', 'SS LOWA', 'NNDP LOWA', 'VP LOWA', 'NYDN LOWA', 'BAL LOWA', 'CG LOWA', 'CHI LOWA'];\n\tconst loadStatus = await blueConicLoaded( true );\n\n\tif( loadStatus ){\n\t\tconst bcSegments = window.blueConicClient.getSegments();\n\t\tlogger.log('bcLowaCheck | BC segments for users: ', bcSegments);\n\t\tconst userSubSegments = bcSegments.filter( segment => subSeglist.includes( segment.name ) );\n\n\t\tif( userSubSegments.length > 0 ){\n\n\t\t\tconst uuid = await bcGetAuth0Id();\n\t\t\tif( uuid ) {\n\t\t\t\treturn {\n\t\t\t\t\tisSub: true,\n\t\t\t\t\tuuid\n\t\t\t\t}\n\t\t\t} return {\n\t\t\t\tisSub: false\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tisSub: false\n\t};\n}\n\nexport const authenticationReady = () => new Promise( ( resolve, reject ) => {\n\tif ( typeof window.MNGAuthentication !== 'undefined' &&\n\t\ttypeof window.MNGAuthentication.authenticationReady !== 'undefined' ) {\n\t\tlogger.log( 'utils.js | Authentication already ready: ', window.MNGAuthentication.authenticationReady );\n\t\tresolve( window.MNGAuthentication.authenticationReady );\n\t} else {\n\t\tlogger.log( 'utils.js | Adding authenticationReady listener...' );\n\t\twindow.addEventListener( 'authenticationReady', ( event ) => {\n\t\t\ttry {\n\t\t\t\tconst detail = event.detail || {};\n\t\t\t\tlogger.log( 'utils.js | Event: authentication ready: ', detail );\n\t\t\t\tresolve( detail );\n\t\t\t} catch ( err ) {\n\t\t\t\tlogger.log( err );\n\t\t\t\treject( err );\n\t\t\t}\n\t\t}, false);\n\t}\n} );\n\nexport const entitlementsReady = () => new Promise( ( resolve, reject ) => {\n\tif ( !settings.entitlementsEnabled ) {\n\t\tresolve( false );\n\t} else if ( typeof window.MNGAuthentication !== 'undefined' &&\n\t\ttypeof window.MNGAuthentication.entitlementsReady !== 'undefined' ) {\n\t\tlogger.log( 'Entitlements already ready: ', window.MNGAuthentication.entitlementsReady );\n\t\tresolve( window.MNGAuthentication.entitlementsReady );\n\t} else {\n\t\tlogger.log( 'Adding entitlementsReady listener...' );\n\t\twindow.addEventListener( 'entitlementsReady', async ( event ) => {\n\t\t\ttry {\n\t\t\t\tconst detail = event.detail || {};\n\t\t\t\tlogger.log( 'Utils.js | Event: entitlements ready: ', detail );\n\t\t\t\tresolve( detail );\n\t\t\t} catch ( err ) {\n\t\t\t\tlogger.log( err );\n\t\t\t\treject( err );\n\t\t\t}\n\t\t}, false);\n\t}\n} );\n\nexport const connextReady = (eventToWaitFor = 'onFinish') => new Promise ( (resolve) => {\n\n\t// default timeout in case Connext never loads\n\tconst connextTimeout = setTimeout( () => {\n\t\tif ( typeof Connext !== 'undefined' ) {\n\t\t\tlogger.log( 'Connext actually did load...' );\n\t\t\tclearTimeout(connextTimeout);\n\t\t\tresolve(true);\n\t\t} else {\n\t\t\tlogger.log( 'Connext did not load in time. Resolving false...' );\n\t\t\tclearTimeout(connextTimeout);\n\t\t\tresolve( false );\n\t\t}\n\t}, 6000);\n\n\tif ( typeof Connext !== 'undefined' ) {\n\t\tlogger.log( 'Connext already ready.' );\n\t\tclearTimeout(connextTimeout);\n\t\tresolve( true );\n\t} else {\n\t\tlogger.log( 'Listening for Connext Ready event...' );\n\t\tdocument.addEventListener(\n\t\t\ttypeof eventToWaitFor === 'string' ? eventToWaitFor : 'onFinish',\n\t\t\t() => {\n\t\t\t\tclearTimeout(connextTimeout);\n\t\t\t\tlogger.log( 'Connext loaded!' );\n\t\t\t\tresolve( true );\n\t\t\t}\n\t\t);\n\t}\n});\n\nexport const clearEntitlementsSession = () => {\n\tlogger.log( 'Clearing entitlements...' );\n\ttry {\n\t\tdeleteCookie( CONSTANTS.ENTITLEMENT_COOKIE_KEY, {path: '/'} );\n\t} catch ( e ) {\n\t\tlogger.log( 'Failed to delete legacy cookie: ', e );\n\t}\n\ttry {\n\t\tdeleteCookie( CONSTANTS.ENTITLEMENT_COOKIE_KEY, {\n\t\t\tpath: '/',\n\t\t\tdomain: getRootDomain(),\n\t\t\texpires: 365, // 1 year\n\t\t\tsecure: true, // https\n\t\t} );\n\t} catch ( e ) {\n\t\tlogger.log( 'Failed to delete entitlements cookie: ', e );\n\t}\n\ttry {\n\t\twindow.localStorage.removeItem( CONSTANTS.LOCAL_STORAGE_SESSION_KEY );\n\t} catch ( e ) {\n\t\tlogger.log( 'Failed to remove local storage: ', e );\n\t}\n};\n\nexport const addExpectedEventListeners = (eventName) => new Promise((resolve) =>{\n\tlogger.log('Adding event to wait for: ', eventName);\n\twindow.addEventListener( eventName, ( e ) => {\n\t\ttry {\n\t\t\tconst detail = e.detail || {};\n\t\t\tlogger.log( `Event: ${eventName}} ready: `, detail );\n\t\t\tresolve( detail );\n\t\t} catch ( err ) {\n\t\t\tlogger.log( err );\n\t\t\tresolve();\n\t\t}\n\t}, false);\n});\n\nexport const clearSession = () => {\n\tdeleteCookie( CONSTANTS.AUTH0_SUB_COOKIE_KEY );\n\n\tlocalStorage.removeItem( CONSTANTS.USER_STORAGE_HASH );\n\t// TODO: Clear connext storage, this key is not currently set anywhere\n\t// window.localStorage.removeItem( window.MNGAuthentication.connextStorageKey );\n\tclearEntitlementsSession();\n}\n\nexport const isEnvironmentProduction = () => {\n\tconst nonProdEnvironments = ['local', 'develop', 'preprod', 'trbdev'];\n\tconst currentUrl = getCurrentUrl();\n\treturn !nonProdEnvironments.some(env=>currentUrl.origin.includes(env));\n}\n\nexport const deleteStorageObject = ( objName ) => {\n\tlogger.log('Removing storageObject : ', objName);\n\tif (typeof window.localStorage.getItem( objName ) !== 'undefined') {\n\t\twindow.localStorage.removeItem( objName );\n\t\tlogger.log('Storage Object removed : ', objName);\n\t}\n}\n\nexport const simpleEmailValidation = ( email ) => {\n\tlogger.log('starting simpleEmailValidation');\n\tconst emailPattern = new RegExp(\n\t\t/^(([^<>()[\\]\\\\.,;:\\s@']+(\\.[^<>()[\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/i\n\t);\n\tif (!email) {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\tmessage: 'Please enter an email.',\n\t\t};\n\t}\n\n\tif (!emailPattern.test(email)) {\n\t\t// if the domain name is on this junk list we dont allow it\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\tmessage: 'Please enter a valid email.',\n\t\t};\n\t}\n\t// if the domain name isn't on this TLD list we dont allow it\n\tconst emailList =[\n\t\t'zzz.pl'\n\t];\n\tconst TLDList = ['AAA','AARP','ABARTH','ABB','ABBOTT','ABBVIE','ABC','ABLE','ABOGADO','ABUDHABI','AC','ACADEMY','ACCENTURE','ACCOUNTANT','ACCOUNTANTS','ACO','ACTOR','AD','ADS','ADULT','AE','AEG','AERO','AETNA','AF','AFL','AFRICA','AG','AGAKHAN','AGENCY','AI','AIG','AIRBUS','AIRFORCE','AIRTEL','AKDN','AL','ALFAROMEO','ALIBABA','ALIPAY','ALLFINANZ','ALLSTATE','ALLY','ALSACE','ALSTOM','AM','AMAZON','AMERICANEXPRESS','AMERICANFAMILY','AMEX','AMFAM','AMICA','AMSTERDAM','ANALYTICS','ANDROID','ANQUAN','ANZ','AO','AOL','APARTMENTS','APP','APPLE','AQ','AQUARELLE','AR','ARAB','ARAMCO','ARCHI','ARMY','ARPA','ART','ARTE','AS','ASDA','ASIA','ASSOCIATES','AT','ATHLETA','ATTORNEY','AU','AUCTION','AUDI','AUDIBLE','AUDIO','AUSPOST','AUTHOR','AUTO','AUTOS','AVIANCA','AW','AWS','AX','AXA','AZ','AZURE','BA','BABY','BAIDU','BANAMEX','BANANAREPUBLIC','BAND','BANK','BAR','BARCELONA','BARCLAYCARD','BARCLAYS','BAREFOOT','BARGAINS','BASEBALL','BASKETBALL','BAUHAUS','BAYERN','BB','BBC','BBT','BBVA','BCG','BCN','BD','BE','BEATS','BEAUTY','BEER','BENTLEY','BERLIN','BEST','BESTBUY','BET','BF','BG','BH','BHARTI','BI','BIBLE','BID','BIKE','BING','BINGO','BIO','BIZ','BJ','BLACK','BLACKFRIDAY','BLOCKBUSTER','BLOG','BLOOMBERG','BLUE','BM','BMS','BMW','BN','BNPPARIBAS','BO','BOATS','BOEHRINGER','BOFA','BOM','BOND','BOO','BOOK','BOOKING','BOSCH','BOSTIK','BOSTON','BOT','BOUTIQUE','BOX','BR','BRADESCO','BRIDGESTONE','BROADWAY','BROKER','BROTHER','BRUSSELS','BS','BT','BUILD','BUILDERS','BUSINESS','BUY','BUZZ','BV','BW','BY','BZ','BZH','CA','CAB','CAFE','CAL','CALL','CALVINKLEIN','CAM','CAMERA','CAMP','CANON','CAPETOWN','CAPITAL','CAPITALONE','CAR','CARAVAN','CARDS','CARE','CAREER','CAREERS','CARS','CASA','CASE','CASH','CASINO','CAT','CATERING','CATHOLIC','CBA','CBN','CBRE','CBS','CC','CD','CENTER','CEO','CERN','CF','CFA','CFD','CG','CH','CHANEL','CHANNEL','CHARITY','CHASE','CHAT','CHEAP','CHINTAI','CHRISTMAS','CHROME','CHURCH','CI','CIPRIANI','CIRCLE','CISCO','CITADEL','CITI','CITIC','CITY','CITYEATS','CK','CL','CLAIMS','CLEANING','CLICK','CLINIC','CLINIQUE','CLOTHING','CLOUD','CLUB','CLUBMED','CM','CN','CO','COACH','CODES','COFFEE','COLLEGE','COLOGNE','COM','COMCAST','COMMBANK','COMMUNITY','COMPANY','COMPARE','COMPUTER','COMSEC','CONDOS','CONSTRUCTION','CONSULTING','CONTACT','CONTRACTORS','COOKING','COOKINGCHANNEL','COOL','COOP','CORSICA','COUNTRY','COUPON','COUPONS','COURSES','CPA','CR','CREDIT','CREDITCARD','CREDITUNION','CRICKET','CROWN','CRS','CRUISE','CRUISES','CU','CUISINELLA','CV','CW','CX','CY','CYMRU','CYOU','CZ','DABUR','DAD','DANCE','DATA','DATE','DATING','DATSUN','DAY','DCLK','DDS','DE','DEAL','DEALER','DEALS','DEGREE','DELIVERY','DELL','DELOITTE','DELTA','DEMOCRAT','DENTAL','DENTIST','DESI','DESIGN','DEV','DHL','DIAMONDS','DIET','DIGITAL','DIRECT','DIRECTORY','DISCOUNT','DISCOVER','DISH','DIY','DJ','DK','DM','DNP','DO','DOCS','DOCTOR','DOG','DOMAINS','DOT','DOWNLOAD','DRIVE','DTV','DUBAI','DUNLOP','DUPONT','DURBAN','DVAG','DVR','DZ','EARTH','EAT','EC','ECO','EDEKA','EDU','EDUCATION','EE','EG','EMAIL','EMERCK','ENERGY','ENGINEER','ENGINEERING','ENTERPRISES','EPSON','EQUIPMENT','ER','ERICSSON','ERNI','ES','ESQ','ESTATE','ET','ETISALAT','EU','EUROVISION','EUS','EVENTS','EXCHANGE','EXPERT','EXPOSED','EXPRESS','EXTRASPACE','FAGE','FAIL','FAIRWINDS','FAITH','FAMILY','FAN','FANS','FARM','FARMERS','FASHION','FAST','FEDEX','FEEDBACK','FERRARI','FERRERO','FI','FIAT','FIDELITY','FIDO','FILM','FINAL','FINANCE','FINANCIAL','FIRE','FIRESTONE','FIRMDALE','FISH','FISHING','FIT','FITNESS','FJ','FK','FLICKR','FLIGHTS','FLIR','FLORIST','FLOWERS','FLY','FM','FO','FOO','FOOD','FOODNETWORK','FOOTBALL','FORD','FOREX','FORSALE','FORUM','FOUNDATION','FOX','FR','FREE','FRESENIUS','FRL','FROGANS','FRONTDOOR','FRONTIER','FTR','FUJITSU','FUN','FUND','FURNITURE','FUTBOL','FYI','GA','GAL','GALLERY','GALLO','GALLUP','GAME','GAMES','GAP','GARDEN','GAY','GB','GBIZ','GD','GDN','GE','GEA','GENT','GENTING','GEORGE','GF','GG','GGEE','GH','GI','GIFT','GIFTS','GIVES','GIVING','GL','GLASS','GLE','GLOBAL','GLOBO','GM','GMAIL','GMBH','GMO','GMX','GN','GODADDY','GOLD','GOLDPOINT','GOLF','GOO','GOODYEAR','GOOG','GOOGLE','GOP','GOT','GOV','GP','GQ','GR','GRAINGER','GRAPHICS','GRATIS','GREEN','GRIPE','GROCERY','GROUP','GS','GT','GU','GUARDIAN','GUCCI','GUGE','GUIDE','GUITARS','GURU','GW','GY','HAIR','HAMBURG','HANGOUT','HAUS','HBO','HDFC','HDFCBANK','HEALTH','HEALTHCARE','HELP','HELSINKI','HERE','HERMES','HGTV','HIPHOP','HISAMITSU','HITACHI','HIV','HK','HKT','HM','HN','HOCKEY','HOLDINGS','HOLIDAY','HOMEDEPOT','HOMEGOODS','HOMES','HOMESENSE','HONDA','HORSE','HOSPITAL','HOST','HOSTING','HOT','HOTELES','HOTELS','HOTMAIL','HOUSE','HOW','HR','HSBC','HT','HU','HUGHES','HYATT','HYUNDAI','IBM','ICBC','ICE','ICU','ID','IE','IEEE','IFM','IKANO','IL','IM','IMAMAT','IMDB','IMMO','IMMOBILIEN','IN','INC','INDUSTRIES','INFINITI','INFO','ING','INK','INSTITUTE','INSURANCE','INSURE','INT','INTERNATIONAL','INTUIT','INVESTMENTS','IO','IPIRANGA','IQ','IR','IRISH','IS','ISMAILI','IST','ISTANBUL','IT','ITAU','ITV','JAGUAR','JAVA','JCB','JE','JEEP','JETZT','JEWELRY','JIO','JLL','JM','JMP','JNJ','JO','JOBS','JOBURG','JOT','JOY','JP','JPMORGAN','JPRS','JUEGOS','JUNIPER','KAUFEN','KDDI','KE','KERRYHOTELS','KERRYLOGISTICS','KERRYPROPERTIES','KFH','KG','KH','KI','KIA','KIDS','KIM','KINDER','KINDLE','KITCHEN','KIWI','KM','KN','KOELN','KOMATSU','KOSHER','KP','KPMG','KPN','KR','KRD','KRED','KUOKGROUP','KW','KY','KYOTO','KZ','LA','LACAIXA','LAMBORGHINI','LAMER','LANCASTER','LANCIA','LAND','LANDROVER','LANXESS','LASALLE','LAT','LATINO','LATROBE','LAW','LAWYER','LB','LC','LDS','LEASE','LECLERC','LEFRAK','LEGAL','LEGO','LEXUS','LGBT','LI','LIDL','LIFE','LIFEINSURANCE','LIFESTYLE','LIGHTING','LIKE','LILLY','LIMITED','LIMO','LINCOLN','LINDE','LINK','LIPSY','LIVE','LIVING','LK','LLC','LLP','LOAN','LOANS','LOCKER','LOCUS','LOFT','LOL','LONDON','LOTTE','LOTTO','LOVE','LPL','LPLFINANCIAL','LR','LS','LT','LTD','LTDA','LU','LUNDBECK','LUXE','LUXURY','LV','LY','MA','MACYS','MADRID','MAIF','MAISON','MAKEUP','MAN','MANAGEMENT','MANGO','MAP','MARKET','MARKETING','MARKETS','MARRIOTT','MARSHALLS','MASERATI','MATTEL','MBA','MC','MCKINSEY','MD','ME','MED','MEDIA','MEET','MELBOURNE','MEME','MEMORIAL','MEN','MENU','MERCKMSD','MG','MH','MIAMI','MICROSOFT','MIL','MINI','MINT','MIT','MITSUBISHI','MK','ML','MLB','MLS','MM','MMA','MN','MO','MOBI','MOBILE','MODA','MOE','MOI','MOM','MONASH','MONEY','MONSTER','MORMON','MORTGAGE','MOSCOW','MOTO','MOTORCYCLES','MOV','MOVIE','MP','MQ','MR','MS','MSD','MT','MTN','MTR','MU','MUSEUM','MUSIC','MUTUAL','MV','MW','MX','MY','MZ','NA','NAB','NAGOYA','NAME','NATURA','NAVY','NBA','NC','NE','NEC','NET','NETBANK','NETFLIX','NETWORK','NEUSTAR','NEW','NEWS','NEXT','NEXTDIRECT','NEXUS','NF','NFL','NG','NGO','NHK','NI','NICO','NIKE','NIKON','NINJA','NISSAN','NISSAY','NL','NO','NOKIA','NORTHWESTERNMUTUAL','NORTON','NOW','NOWRUZ','NOWTV','NP','NR','NRA','NRW','NTT','NU','NYC','NZ','OBI','OBSERVER','OFFICE','OKINAWA','OLAYAN','OLAYANGROUP','OLDNAVY','OLLO','OM','OMEGA','ONE','ONG','ONL','ONLINE','OOO','OPEN','ORACLE','ORANGE','ORG','ORGANIC','ORIGINS','OSAKA','OTSUKA','OTT','OVH','PA','PAGE','PANASONIC','PARIS','PARS','PARTNERS','PARTS','PARTY','PASSAGENS','PAY','PCCW','PE','PET','PF','PFIZER','PG','PH','PHARMACY','PHD','PHILIPS','PHONE','PHOTO','PHOTOGRAPHY','PHOTOS','PHYSIO','PICS','PICTET','PICTURES','PID','PIN','PING','PINK','PIONEER','PIZZA','PK','PL','PLACE','PLAY','PLAYSTATION','PLUMBING','PLUS','PM','PN','PNC','POHL','POKER','POLITIE','PORN','POST','PR','PRAMERICA','PRAXI','PRESS','PRIME','PRO','PROD','PRODUCTIONS','PROF','PROGRESSIVE','PROMO','PROPERTIES','PROPERTY','PROTECTION','PRU','PRUDENTIAL','PS','PT','PUB','PW','PWC','PY','QA','QPON','QUEBEC','QUEST','RACING','RADIO','RE','READ','REALESTATE','REALTOR','REALTY','RECIPES','RED','REDSTONE','REDUMBRELLA','REHAB','REISE','REISEN','REIT','RELIANCE','REN','RENT','RENTALS','REPAIR','REPORT','REPUBLICAN','REST','RESTAURANT','REVIEW','REVIEWS','REXROTH','RICH','RICHARDLI','RICOH','RIL','RIO','RIP','RO','ROCHER','ROCKS','RODEO','ROGERS','ROOM','RS','RSVP','RU','RUGBY','RUHR','RUN','RW','RWE','RYUKYU','SA','SAARLAND','SAFE','SAFETY','SAKURA','SALE','SALON','SAMSCLUB','SAMSUNG','SANDVIK','SANDVIKCOROMANT','SANOFI','SAP','SARL','SAS','SAVE','SAXO','SB','SBI','SBS','SC','SCA','SCB','SCHAEFFLER','SCHMIDT','SCHOLARSHIPS','SCHOOL','SCHULE','SCHWARZ','SCIENCE','SCOT','SD','SE','SEARCH','SEAT','SECURE','SECURITY','SEEK','SELECT','SENER','SERVICES','SES','SEVEN','SEW','SEX','SEXY','SFR','SG','SH','SHANGRILA','SHARP','SHAW','SHELL','SHIA','SHIKSHA','SHOES','SHOP','SHOPPING','SHOUJI','SHOW','SHOWTIME','SI','SILK','SINA','SINGLES','SITE','SJ','SK','SKI','SKIN','SKY','SKYPE','SL','SLING','SM','SMART','SMILE','SN','SNCF','SO','SOCCER','SOCIAL','SOFTBANK','SOFTWARE','SOHU','SOLAR','SOLUTIONS','SONG','SONY','SOY','SPA','SPACE','SPORT','SPOT','SR','SRL','SS','ST','STADA','STAPLES','STAR','STATEBANK','STATEFARM','STC','STCGROUP','STOCKHOLM','STORAGE','STORE','STREAM','STUDIO','STUDY','STYLE','SU','SUCKS','SUPPLIES','SUPPLY','SUPPORT','SURF','SURGERY','SUZUKI','SV','SWATCH','SWISS','SX','SY','SYDNEY','SYSTEMS','SZ','TAB','TAIPEI','TALK','TAOBAO','TARGET','TATAMOTORS','TATAR','TATTOO','TAX','TAXI','TC','TCI','TD','TDK','TEAM','TECH','TECHNOLOGY','TEL','TEMASEK','TENNIS','TEVA','TF','TG','TH','THD','THEATER','THEATRE','TIAA','TICKETS','TIENDA','TIFFANY','TIPS','TIRES','TIROL','TJ','TJMAXX','TJX','TK','TKMAXX','TL','TM','TMALL','TN','TO','TODAY','TOKYO','TOOLS','TOP','TORAY','TOSHIBA','TOTAL','TOURS','TOWN','TOYOTA','TOYS','TR','TRADE','TRADING','TRAINING','TRAVEL','TRAVELCHANNEL','TRAVELERS','TRAVELERSINSURANCE','TRUST','TRV','TT','TUBE','TUI','TUNES','TUSHU','TV','TVS','TW','TZ','UA','UBANK','UBS','UG','UK','UNICOM','UNIVERSITY','UNO','UOL','UPS','US','UY','UZ','VA','VACATIONS','VANA','VANGUARD','VC','VE','VEGAS','VENTURES','VERISIGN','VERSICHERUNG','VET','VG','VI','VIAJES','VIDEO','VIG','VIKING','VILLAS','VIN','VIP','VIRGIN','VISA','VISION','VIVA','VIVO','VLAANDEREN','VN','VODKA','VOLKSWAGEN','VOLVO','VOTE','VOTING','VOTO','VOYAGE','VU','VUELOS','WALES','WALMART','WALTER','WANG','WANGGOU','WATCH','WATCHES','WEATHER','WEATHERCHANNEL','WEBCAM','WEBER','WEBSITE','WED','WEDDING','WEIBO','WEIR','WF','WHOSWHO','WIEN','WIKI','WILLIAMHILL','WIN','WINDOWS','WINE','WINNERS','WME','WOLTERSKLUWER','WOODSIDE','WORK','WORKS','WORLD','WOW','WS','WTC','WTF','XBOX','XEROX','XFINITY','XIHUAN','XIN','XN--11B4C3D','XN--1CK2E1B','XN--1QQW23A','XN--2SCRJ9C','XN--30RR7Y','XN--3BST00M','XN--3DS443G','XN--3E0B707E','XN--3HCRJ9C','XN--3PXU8K','XN--42C2D9A','XN--45BR5CYL','XN--45BRJ9C','XN--45Q11C','XN--4DBRK0CE','XN--4GBRIM','XN--54B7FTA0CC','XN--55QW42G','XN--55QX5D','XN--5SU34J936BGSG','XN--5TZM5G','XN--6FRZ82G','XN--6QQ986B3XL','XN--80ADXHKS','XN--80AO21A','XN--80AQECDR1A','XN--80ASEHDB','XN--80ASWG','XN--8Y0A063A','XN--90A3AC','XN--90AE','XN--90AIS','XN--9DBQ2A','XN--9ET52U','XN--9KRT00A','XN--B4W605FERD','XN--BCK1B9A5DRE4C','XN--C1AVG','XN--C2BR7G','XN--CCK2B3B','XN--CCKWCXETD','XN--CG4BKI','XN--CLCHC0EA0B2G2A9GCD','XN--CZR694B','XN--CZRS0T','XN--CZRU2D','XN--D1ACJ3B','XN--D1ALF','XN--E1A4C','XN--ECKVDTC9D','XN--EFVY88H','XN--FCT429K','XN--FHBEI','XN--FIQ228C5HS','XN--FIQ64B','XN--FIQS8S','XN--FIQZ9S','XN--FJQ720A','XN--FLW351E','XN--FPCRJ9C3D','XN--FZC2C9E2C','XN--FZYS8D69UVGM','XN--G2XX48C','XN--GCKR3F0F','XN--GECRJ9C','XN--GK3AT1E','XN--H2BREG3EVE','XN--H2BRJ9C','XN--H2BRJ9C8C','XN--HXT814E','XN--I1B6B1A6A2E','XN--IMR513N','XN--IO0A7I','XN--J1AEF','XN--J1AMH','XN--J6W193G','XN--JLQ480N2RG','XN--JVR189M','XN--KCRX77D1X4A','XN--KPRW13D','XN--KPRY57D','XN--KPUT3I','XN--L1ACC','XN--LGBBAT1AD8J','XN--MGB9AWBF','XN--MGBA3A3EJT','XN--MGBA3A4F16A','XN--MGBA7C0BBN0A','XN--MGBAAKC7DVF','XN--MGBAAM7A8H','XN--MGBAB2BD','XN--MGBAH1A3HJKRD','XN--MGBAI9AZGQP6J','XN--MGBAYH7GPA','XN--MGBBH1A','XN--MGBBH1A71E','XN--MGBC0A9AZCG','XN--MGBCA7DZDO','XN--MGBCPQ6GPA1A','XN--MGBERP4A5D4AR','XN--MGBGU82A','XN--MGBI4ECEXP','XN--MGBPL2FH','XN--MGBT3DHD','XN--MGBTX2B','XN--MGBX4CD0AB','XN--MIX891F','XN--MK1BU44C','XN--MXTQ1M','XN--NGBC5AZD','XN--NGBE9E0A','XN--NGBRX','XN--NODE','XN--NQV7F','XN--NQV7FS00EMA','XN--NYQY26A','XN--O3CW4H','XN--OGBPF8FL','XN--OTU796D','XN--P1ACF','XN--P1AI','XN--PGBS0DH','XN--PSSY2U','XN--Q7CE6A','XN--Q9JYB4C','XN--QCKA1PMC','XN--QXA6A','XN--QXAM','XN--RHQV96G','XN--ROVU88B','XN--RVC1E0AM3E','XN--S9BRJ9C','XN--SES554G','XN--T60B56A','XN--TCKWE','XN--TIQ49XQYJ','XN--UNUP4Y','XN--VERMGENSBERATER-CTB','XN--VERMGENSBERATUNG-PWB','XN--VHQUV','XN--VUQ861B','XN--W4R85EL8FHU5DNRA','XN--W4RS40L','XN--WGBH1C','XN--WGBL6A','XN--XHQ521B','XN--XKC2AL3HYE2A','XN--XKC2DL3A5EE0H','XN--Y9A3AQ','XN--YFRO4I67O','XN--YGBI2AMMX','XN--ZFR164B','XXX','XYZ','YACHTS','YAHOO','YAMAXUN','YANDEX','YE','YODOBASHI','YOGA','YOKOHAMA','YOU','YOUTUBE','YT','YUN','ZA','ZAPPOS','ZARA','ZERO','ZIP','ZM','ZONE','ZUERICH','ZW'];\n\tconst TLDregex = /\\.([^.\\n\\s]*)$/;\n\tconst TLDsearch = email.match(TLDregex)[1].toUpperCase();\n\tconst TLDsearchList = TLDList.includes(TLDsearch);\n\tlogger.log('simpleEmailValidation: ', `TLD search ${TLDsearchList}`);\n\tif (TLDsearchList === false) {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\tmessage: 'Please enter a valid email domain.',\n\t\t};\n\t}\n\t// if the domain is on this black list we dont allow it\n\tconst emailSearch = emailList.findIndex(\n\t\t(ref) => ref === email.split('@')[1]\n\t);\n\tif (emailSearch === -1) {\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\tmessage: 'Valid',\n\t\t};\n\t}\n\treturn {\n\t\tvalid: false,\n\t\tmessage: 'Please enter a valid email.'\n\t};\n};\nwindow.simpleEmailValidation = simpleEmailValidation;\n\nconst validatePhoneNumber = (str) => {\n\tconst regExp = /^[0-9]([0-9 -])*[0-9]$/;\n\treturn regExp.test(str);\n}\nwindow.validatePhoneNumber = validatePhoneNumber;\n\n/* eslint-disable-next-line no-underscore-dangle */\nlet _auth0Client;\nexport const getAuth0Client = async () => {\n\tif( typeof _auth0Client !== 'undefined'){\n\t\treturn _auth0Client;\n\t}\n\tconst {\n\t\tauth0Domain,\n\t\tauth0ClientId,\n\t} = settings;\n\t_auth0Client = await createAuth0Client( {\n\t\tdomain: auth0Domain,\n\t\tclient_id: auth0ClientId,\n\t\tuseRefreshTokens: true,\n\t\tcacheLocation: 'localstorage',\n\t\taudience: 'access-extension'\n\t} );\n\treturn _auth0Client;\n};\n\nexport const dispatchAuthenticationReadyEvent = (detail) => {\n\tlogger.log('utils.js | auth event dispathed')\n\tconst event = new CustomEvent(\n\t\t'authenticationReady',\n\t\t{\n\t\t\tdetail,\n\t\t}\n\t);\n\twindow.MNGAuthentication = window.MNGAuthentication || {};\n\twindow.MNGAuthentication.authenticationReady = detail;\n\n\tlogger.log( 'Utils.js | Dispatching authenticationReady Event: ', event );\n\twindow.dispatchEvent( event );\n\tlogger.log( 'Utils.js | Dispatched authenticationReady event!' );\n}\n\n// taken from https://stackoverflow.com/questions/5525071/how-to-wait-until-an-element-exists\nexport const waitForElementToExist = (selector) => new Promise(resolve => {\n\tif (document.querySelector(selector)) {\n\t\tresolve(document.querySelector(selector));\n\t}\n\n\tconst observer = new MutationObserver(() => {\n\t\tif (document.querySelector(selector)) {\n\t\t\tresolve(document.querySelector(selector));\n\t\t\tobserver.disconnect();\n\t\t}\n\t\treturn true;\n\t});\n\n\tobserver.observe(document.body, {\n\t\tchildList: true,\n\t\tsubtree: true\n\t});\n});\n\nexport const subscribeElementToEvent = async ( selector, eventName, event¿ì²¥ÊÓƵback ) => {\n\ttry{\n\t\tlogger.log('subscribeElementToEvent', `Waiting for ${selector} to exist...`);\n\t\tconst element = await waitForElementToExist(selector);\n\t\tlogger.log('subscribeElementToEvent', `${selector} does exist, adding listener.`);\n\t\telement.addEventListener(eventName, event¿ì²¥ÊÓƵback);\n\t\treturn true;\n\t} catch (e){\n\t\tlogger.log('subscribeElementToEvent: ', `${e}`);\n\t\treturn false;\n\t}\n}\n\nexport const isInViewport = (el) => {\n\tconst rect = el.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\n\t);\n}\n\nexport const rerunConnextEntitlements = ( rerunOnlyIfSilent = false) => {\n\tif( typeof Connext === 'undefined' ){\n\t\tdocument.addEventListener(\n\t\t\t'onInit',\n\t\t\t() => {\n\t\t\t\t// rerun Connext to remove paywall for new subscribers\n\t\t\t\tif( rerunOnlyIfSilent && Connext.GetOptions().Silentmode ) Connext.Run();\n\t\t\t\telse if( !rerunOnlyIfSilent ) Connext.Run();\n\t\t\t})\n\t} else if( rerunOnlyIfSilent && Connext.GetOptions().Silentmode ) Connext.Run();\n\telse if( !rerunOnlyIfSilent ) Connext.Run();\n\telse {\n\t\tlogger.log('Not rerunning Connext');\n\t}\n}\n\nexport const checkOneTapOptions = ( keyword ) => {\n\tif( typeof window.authentication_config !== 'undefined' ) {\n\t\tconst authConfigs = window.authentication_config;\n\t\tconst findOptions = Object.keys(authConfigs).filter( key => key.includes(keyword) && authConfigs[key] === '1');\n\t\tlogger.log( 'checkOneTapOptions: enabled options', findOptions );\n\t\tif( findOptions.length > 0){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\treturn false;\n}\nexport const isStringConvertibleToInt = (str) => Number.isInteger(Number(str));\n\n/**\n * Add a dynamic link to a DOM node.\n *\n * @param {string} text - The original text content of the node.\n * @param {HTMLElement} domeNode - The DOM node where link will be added.\n * @param {string} linkText - The portion of the text to be converted into a link.\n * @param {string} href - The URL to be set as the href attribute for the created link.\n * @param {string} className - The class name to be applied to the created link.\n */\n\nexport const addDynamicLinkToNode = (text, linkText, domNode, href, className) => {\n\tconst linkIndex = text.indexOf(linkText);\n\n\t// If linkText is not found, do nothing\n\tif (linkIndex === -1) {\n\t\treturn;\n\t}\n\n\tconst beforeText = text.substring(0, linkIndex);\n\tconst afterText = text.substring(linkIndex + linkText.length);\n\n\tconst link = document.createElement('a');\n\tlink.href = href;\n\tlink.textContent = linkText;\n\tlink.className = className;\n\n\t// Append the beforeText\n\tconst beforeTextNode = document.createTextNode(beforeText);\n\t// eslint-disable-next-line no-param-reassign\n\tdomNode.appendChild(beforeTextNode);\n\n\t// Append the link as a child to domNode\n\t// eslint-disable-next-line no-param-reassign\n\tdomNode.appendChild(link);\n\n\t// Append the remaining text after the link\n\tconst afterTextNode = document.createTextNode(afterText);\n\t// eslint-disable-next-line no-param-reassign\n\tdomNode.appendChild(afterTextNode);\n};\n\n/**\n * Function to escapes any potentially dangerous\n * characters in the text and linkText variables.\n *\n * @param {string} text\n * @returns {string}\n */\n\nexport const escapeHTML = text => {\n\tconst map = {\n\t\t'&': '&',\n\t\t'<': '<',\n\t\t'>': '>',\n\t\t'\"': '"',\n\t\t\"'\": ''',\n\t};\n\treturn text.replace(/[&<>\"']/g, (m) => map[m]);\n};\n\n/**\n * Creates a modal with configurable options and attaches it to the specified element in the DOM.\n * This function constructs a modal based on the provided data object, including text, title, and styling options.\n * It allows for full-screen display, custom ID assignment, and automatic removal with fade-out effects.\n *\n * @param {Object} modalDataObj - The data object containing all necessary options for the modal.\n * @param {string} modalDataObj.text - The main text content of the modal.\n * @param {string} modalDataObj.title - The title of the modal. Optional; if not provided, the title area is hidden.\n * @param {string} modalDataObj.id - The DOM element ID for the modal. This is necessary to ensure unique modals in the document.\n * @param {boolean} [modalDataObj.fullScreen=false] - Determines whether the modal should cover the full screen.\n * @param {string} [modalDataObj.appendToId] - The ID of the DOM element to which the modal will be appended. If not specified, the modal is appended to the body.\n * @param {boolean} modalDataObj.closeConfirm - optional adds a close button\n * @param {string} modalDataObj.buttonText - text for the bottom close button \n * @param {boolean} modalDataObj.autoDismiss - prevents the modal from being dismissed by a timeout\n * @param {boolean} modalDataObj.embedded - modal is embedded into page instead of overlay\n * @returns {HTMLElement} - The created modal element.\n */\n\nexport const createModal = ( modalDataObj ) => {\n\tconst {\n\t\ttext, \n\t\ttitle, \n\t\tid, \n\t\tfullScreen, \n\t\tappendToId, \n\t\tcloseConfirm, \n\t\tbuttonText, \n\t\tautoDismiss = true, \n\t\tembedded = false\n\t} = modalDataObj;\n\n\tlet userMessage = document.querySelector(`#${id}`);\n\n\tconst containerStructure = `
\n
\n
\n
\n\t\t\t\t\t\n\t\t\t\t
\n
\n
\n
\n

${title || ''}

\n
\n
\n\t\t\t\t\t\t\t\t\t${text || ''}\n
\n
\n
\n\t\t\t\t\t\t${closeConfirm ? `
` : ''}\n
\n
\n
\n
\n
`;\n\n\tif(!userMessage){\n\t\tuserMessage = document.createElement('div');\n\t\tuserMessage.id = id;\n\t\tuserMessage.classList = 'mainModalWrapper';\n\t}\n\tuserMessage.innerHTML = '';\n\tuserMessage.innerHTML = containerStructure;\n\n\tconst closeButton = userMessage.querySelector('#modalClose');\n\tcloseButton.addEventListener( 'click', () => {\n\t\tuserMessage.remove();\n\t});\n\n\tif (closeConfirm) {\n\t\tconst closeButtonBottom = userMessage.querySelector('.optional-button-container');\n\t\tcloseButtonBottom.addEventListener( 'click', () => {\n\t\t\tuserMessage.remove();\n\t\t});\n\t}\n\tif (appendToId) {\n\t\tconst appendToElement = document.querySelector(`#${appendToId}`);\n\t\tif (appendToElement && embedded) {\n\t\t\tconst entriesContainer = document.getElementById('userProfileEntriesContainer');\n\t\t\tconst entries = entriesContainer.querySelectorAll('.user-profile-item-row');\n\n\t\t\tif (entries.length >= 2) {\n\t\t\t\t\t\n\t\t\t\tconst parent = entries[1].parentNode;\t\t\t\n\t\t\t\tparent.insertBefore(userMessage, entries[1].nextSibling); \n\t\t\t}\n\t\t} else {\n\t\t\tappendToElement.append(userMessage);\n\t\t}\n\t}\n\n\n\t// remove message after text string length * 50ms with fade\n\t// this sets a minimim of 2.5 seconds before removing the modal and a max of 7000 per AC from DSBU-1282\n\t/** Dev note: If a modal that has to be manually dismissed is needed, the following will need to\n\t\t** be paramaratized and wrapped in an if block\n\t* */\n\tif (autoDismiss) {\n\t\tlet removeModalTime = Math.min(Math.max(text.length * 55, 2500), 7000);\n\t\tremoveModalTime = removeModalTime > 2800 ? removeModalTime : 3000\n\t\tsetTimeout( () => {\n\t\t\tuserMessage.classList.add('fade-out');\n\t\t\tsetTimeout(() => {\n\t\t\t\tuserMessage.remove();\n\t\t\t}, 1500);\n\t\t}, removeModalTime);\n\t}\n\treturn userMessage;\n};\n\n\nexport const getContentId = async ( typeString = 'Content ID' ) => {\n\tconst contentId = await getDataLayerObject(typeString);\n\tlogger.log('utils.js | contentId: Content ID is ', contentId);\n\treturn contentId;\n};\n\nexport const getSection = async ( typeString = 'Section' ) => {\n\tconst obtainSection = await getDataLayerObject(typeString);\n\tlogger.log('utils.js | section: Section is ', obtainSection);\n\treturn obtainSection;\n}\n\nexport const getHomePaper = () => {\n\tconst userInfo = window.localStorage.getItem('__MNG_Session');\n\tif ( userInfo ) {\n\t\tconst userInfoParsed = JSON.parse(userInfo);\n\t\tif ( userInfoParsed.idToken ) {\n\t\t\tconst idToken = decodeToken(userInfoParsed.idToken);\n\t\t\tif (idToken.home_paper) {\n\t\t\t\tlogger.log('Util.js | home paper: Home paper is ', idToken.home_paper);\n\t\t\t\treturn idToken.home_paper.replace( 'www.', '' ).replace( 'develop.', '' ).replace( 'preprod.', '' );\n\t\t\t}\n\t\t}\n\t}\n\t// If homepaper isn't set, is going to return the current domain\n\tlogger.log('Util.js | home paper: Home paper is not set ', getSiteUrl());\n\treturn getSiteUrl();\n}\n\nexport const getTheFollowingMonth = () => {\n\tconst currentDate = new Date();\n\tconst currentMonth = currentDate.getMonth();\n\tconst nextMonthDate = new Date(currentDate.setMonth(currentMonth + 1));\n\tconst options = { month: 'long' };\n\treturn new Intl.DateTimeFormat('en-US', options).format(nextMonthDate);\n}\n\nexport const logDDMetric = ( logEventName ) => {\n\tif( settings.datadogEnabled ){\n\t\twindow.DD_RUM.addTiming( logEventName );\n\t}\n}\n\nexport default {\n\tgetCurrentUrl,\n\tgetCookie,\n\tsetCookie,\n\tdeleteCookie,\n\tdeleteStorageObject,\n\tdocumentBodyLoaded,\n\tsubscribeElementToEvent,\n\tsimpleEmailValidation,\n\tgetEncryptedUuid,\n\tcheckAppleSubStatus,\n\tgetAuth0Client,\n\trerunConnextEntitlements,\n\tconnextReady,\n\tsiteIsTribune,\n\tbcLowaCheck,\n\twaitForElementToExist,\n\tcheckOneTapOptions,\n\tisStringConvertibleToInt,\n\taddDynamicLinkToNode,\n\tgetHomePaper,\n\tescapeHTML,\n\tgetTheFollowingMonth,\n\tlogDDMetric,\n\tcreateModal\n};\n","import logger from './logger';\nimport {\n\tgetCurrentUrl,\n\tdecodeToken,\n\tblueConicLoaded,\n\tauthenticationReady,\n\tentitlementsReady,\n\tcheckOneTapOptions,\n\tisStringConvertibleToInt\n} from './utils';\nimport CONSTANTS from './constants';\n\nexport const blueConicRegwallEvents = async () => {\n\n\tawait blueConicLoaded();\n\tawait authenticationReady();\n\n\treturn new Promise( ( resolve ) => {\n\t\tlogger.log('ANALYTICS: inside BCregwall events');\n\n\t\t// remove regwall URL param and proceed as normal with window.MNGAuthentication.login()\n\t\tconst currentUrl = getCurrentUrl();\n\t\tcurrentUrl.searchParams.delete('regwall');\n\n\t\t// set blueconic profile properties for segmentation and tracking\n\t\t// loaded from blueconic script on page\n\t\tconst bcProfile = blueConicClient.profile.getProfile();\n\n\t\t// becuase of the current regwall flow we can't grab email as the user isn't actually logged in yet.\n\t\t// email will be obtained through BC listeners in the BC admin\n\n\t\t// needed to send user to different connext campaign\n\t\tlocalStorage.setItem('regwallSuccess', 'yes');\n\t\t// used to trigger GA event back on article page\n\t\tlocalStorage.setItem('regwallEvent', 'yes');\n\n\t\t// used to track regwall activity in BC\n\t\tbcProfile.setValue('bang_reg_wall_status', 'Y');\n\t\tbcProfile.setValue('regwall_newspaper', currentUrl.host);\n\t\tbcProfile.setValue('regwall_success_date', new Date());\n\t\tbcProfile.setValue('regwall_success', 'yes');\n\n\t\tblueConicClient.profile.updateProfile();\n\n\t\tresolve(true);\n\t});\n};\n\nconst partnerAccessEvent = async ( token ) => {\n\ttry {\n\t\tconst userEntitlements = decodeToken( token );\n\t\tif ( typeof userEntitlements !== 'undefined' && userEntitlements ){\n\t\t\tlogger.log('ANALYTICS: Partner Access: JWT found');\n\t\t\tconst {\n\t\t\t\tentitlement_entitled: isEntitled,\n\t\t\t\tentitlement_source: entitlementSource,\n\t\t\t\tentitlement_organizationTrackingId: partner,\n\t\t\t\tentitlement_organizationType: partnerType,\n\t\t\t} = userEntitlements;\n\t\t\t// register partnerAccess page view here\n\t\t\t// check if entitled (all partner access should be, but we dont want to register a view if they are expired\n\t\t\tlogger.log( `ANALYTICS: Partner Access Event: Entitled: ${isEntitled} and source: ${entitlementSource}` );\n\t\t\tif( isEntitled && entitlementSource === 'partner-access' ) {\n\t\t\t\t// alert GA this user is logged in valid user from a partner\n\t\t\t\tlogger.log('ANALYTICS: GA event for partner access');\n\t\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\t\twindow.dataLayer.push({\n\t\t\t\t\t'event': 'partnerAccess',\n\t\t\t\t\t'partner': `${partner}|${partnerType}`,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} catch( err ) {\n\t\tlogger.log( 'ANALYTICS: Failed to send Partner Access event: ', err );\n\t}\n};\n\nconst regwallSuccessEvent = async () => {\n\ttry {\n\t\t// Register regwall success in GA here\n\t\tif ( localStorage.getItem( 'regwallEvent' ) === 'yes' ) {\n\t\t\twindow.dataLayer = window.dataLayer || [];\n\t\t\twindow.dataLayer.push( {\n\t\t\t\t'event': 'regwall_success'\n\t\t\t} );\n\t\t\tlogger.log( 'ANALYTICS: GA/ datalayer ', window.dataLayer );\n\t\t\t// remove storage object after event trigger\n\t\t\tlocalStorage.removeItem( 'regwallEvent' );\n\t\t}\n\t} catch( err ) {\n\t\tlogger.log( 'ANALYTICS: Failed to send Regwall Succuss Event: ', err );\n\t}\n};\n\nconst userStateAnalytics = async (auth0State, entitlements) => {\n\tlet decodedEntitlement;\n\tif(entitlements.entitlements) decodedEntitlement = decodeToken( entitlements.entitlements.token);\n\tlet userState;\n\tlogger.log('ANALYTICS: user state variables are: ', auth0State, entitlements.userState);\n\tif (auth0State === 'known' && entitlements.userState) {\n\t\t// user is logged in we should see entitlements\n\t\tif(decodedEntitlement && decodedEntitlement.entitlement_entitled){\n\t\t\tif( decodedEntitlement.entitlement_level === 'comp' || decodedEntitlement.entitlement_level === 'freeTrial' ) userState = `subscriber-${decodedEntitlement.entitlement_level}`;\n\t\t\telse userState = `${entitlements.userState}${decodedEntitlement.entitlement_serviceCode ? `-${decodedEntitlement.entitlement_serviceCode}` : ''}`;\n\t\t} else {\n\t\t\tuserState = entitlements.userState;\n\t\t}\n\t} else if (auth0State === 'known' && !entitlements.userState) {\n\t\t// if a known user has no entitlements, send error, this shouldn't happen\n\t\tuserState = 'known-entitlements-failed';\n\t} else if (auth0State === 'unknown' || auth0State === 'unknown-default' || auth0State === 'unknown-fail' && entitlements.userState === 'noEntitlements') {\n\t\t// user is logged out so there should not be any entitlements, use auth0State\n\t\tuserState = auth0State;\n\t} else if (auth0State && entitlements.userState) {\n\t\t// if user is unknown with entitlements send those entitlements to GA here\n\t\tif(decodedEntitlement && decodedEntitlement.entitlement_entitled){\n\t\t\tuserState = `${entitlements.userState}${decodedEntitlement.entitlement_serviceCode ? `-${decodedEntitlement.entitlement_serviceCode}` : ''}`;\n\t\t} else {\n\t\t\tuserState = entitlements.userState;\n\t\t}\n\t} else {\n\t\t// a big case is missing, if we see this we will track down the issue\n\t\tuserState = 'noState';\n\t}\n\tlogger.log('ANALYTICS: user state is ', userState);\n\twindow.dataLayer = window.dataLayer || [];\n\twindow.dataLayer.push({\n\t\t'event': 'Auth0State_event',\n\t\t'Auth0State': userState\n\t});\n};\n\n/** **\n * Analytics triggers should be setup here\n * Events should be functions called inside of the triggers\n ** */\n\nconst onAuthReadyAnalytics = async () => {\n\ttry {\n\t\tlet userState;\n\t\tconst detail = await authenticationReady();\n\t\tconst {\n\t\t\tisAuthenticated,\n\t\t} = detail;\n\t\tswitch (isAuthenticated) {\n\t\t\tcase true:\n\t\t\t\tuserState = 'known';\n\t\t\t\tbreak;\n\t\t\tcase false:\n\t\t\t\tuserState = 'unknown';\n\t\t\t\tbreak;\n\t\t\tcase CONSTANTS.USER_IS_LOWA:\n\t\t\t\tuserState = CONSTANTS.USER_IS_LOWA;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tuserState = 'unknown-default';\n\t\t\t\tbreak;\n\t\t}\n\t\treturn userState;\n\t} catch ( err ) {\n\t\tlogger.log( 'ANALYTICS: Error during onAuthReadyAnalytics: ', err );\n\t\t// always return user state unknown if auth state fails\n\t\treturn 'unknown-fail';\n\t}\n};\n\nexport const callPreparedGTMEvent = (eventName) => {\n\ttry {\n\t\t// Register one tap event in GA here\n\t\twindow.dataLayer.push( {\n\t\t\t'event': eventName\n\t\t} );\n\t\tlogger.log(`ANALYTICS: ${ eventName } event`);\n\t\tlogger.log( 'ANALYTICS: GA/ datalayer ', window.dataLayer );\n\t} catch( err ) {\n\t\tlogger.log( `ANALYTICS: Failed to send ${ eventName } event: `, err );\n\t}\n}\n\nexport const callCustomGTMEvent = ( eventData ) => {\n\ttry {\n\t\tconst dataLayerEvent = {};\n\t\t// Register one tap event in GA here\n\t\tObject.keys(eventData).forEach( key => {\n\t\t\tdataLayerEvent[key] = eventData[key];\n\t\t});\n\n\t\tif ( Object.keys(dataLayerEvent).length !== 0 ){\n\t\t\twindow.dataLayer.push(\n\t\t\t\tdataLayerEvent\n\t\t\t );\n\t\t}\n\t\tlogger.log(`ANALYTICS: ${ eventData.event } event`);\n\t\tlogger.log( 'ANALYTICS: GA/ datalayer ', window.dataLayer );\n\t} catch( err ) {\n\t\tlogger.log( `ANALYTICS: Failed to send ${ eventData.event } event: `, err );\n\t}\n}\n\nconst getCustomEventObject = ( event, group = false) => {\n\tconst eventData = { event: 'one_tap_login', gotGroup: group, gotExperiment: event }\n\tswitch ( event ) {\n\t\tcase 'placement':\n\t\t\teventData.gotDisplayPosition = window.authentication_config[`got${group}ModalPosition`];\n\t\t\tbreak;\n\t\tcase 'scrolling':\n\t\t\teventData.gotScrollDepthPercentage = window.authentication_config[`got${group}GroupDepth`];\n\t\t\teventData.gotDisplayPosition = window.authentication_config[`got${group}GroupDelayPosition`];\n\t\t\tbreak;\n\t\tcase 'delayTime':\n\t\t\teventData.gotTimeUntilDisplay = Math.floor(isStringConvertibleToInt(window.authentication_config[`got${group}GroupTime`]) ?\n\t\t\t\tparseInt(window.authentication_config[`got${group}GroupTime`], 10) : 1);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn eventData.event;\n\t}\n\treturn eventData;\n}\n\nconst determinateOneTapLoginEvent = () => {\n\tconst abcdCookie = localStorage.getItem('abcdLocal');\n\tconst abcdeCookie = localStorage.getItem('abcdeLocal');\n\t// To check that other experiments are not enabled\n\tconst isPositionEnabled = checkOneTapOptions('GroupEnabled');\n\tconst isScrollDelayEnabled = checkOneTapOptions('GroupDelayEnabled');\n\tconst isTimeDelayEnabled = checkOneTapOptions('GroupTimeDelayEnabled');\n\t// To check for the specific cookie\n\tconst isPositionCookieEnabled = checkOneTapOptions(`got${abcdCookie}GroupEnabled`);\n\tconst isDelayCookieEnabled = checkOneTapOptions(`got${abcdeCookie}GroupDelayEnabled`);\n\tconst isTimeDelayCookieEnabled = checkOneTapOptions(`got${abcdCookie}GroupTimeDelayEnabled`);\n\tconst isDesktop = /Windows|Macintosh|Mac OS X|Linux/.test(navigator.userAgent);\n\tif( abcdCookie && isPositionEnabled && isPositionCookieEnabled && !isScrollDelayEnabled && isDesktop && !isTimeDelayEnabled ) {\n\t\tlogger.log( 'ANALYTICS: Position event enabled' );\n\t\tcallCustomGTMEvent( getCustomEventObject('placement', abcdCookie) );\n\t} else if ( abcdeCookie && !isPositionEnabled && isScrollDelayEnabled && isDelayCookieEnabled && !isTimeDelayEnabled ) {\n\t\tlogger.log( 'ANALYTICS: Scroll delay enabled' );\n\t\tcallCustomGTMEvent( getCustomEventObject('scrolling', abcdeCookie));\n\t} else if ( abcdCookie && !isPositionEnabled && !isScrollDelayEnabled && isTimeDelayEnabled && isTimeDelayCookieEnabled ) {\n\t\tlogger.log( 'ANALYTICS: Time delay enabled' );\n\t\tcallCustomGTMEvent( getCustomEventObject('delayTime', abcdCookie) );\n\t} else {\n\t\t// in case more than 1 experiment is on, send default login event\n\t\tlogger.log( 'ANALYTICS: No custom event detected' );\n\t\tcallPreparedGTMEvent( getCustomEventObject('default') );\n\t}\n}\n\n\nconst loginSourceEvent = (loginSource) => {\n\ttry{\n\t\tconst eventDict = {\n\t\t\t'googleonetap': 'one_tap_login',\n\t\t\t'viafoura_signup': 'viafoura_signup_success',\n\t\t\t'viafoura_login': 'viafoura_login_success'\n\t\t}\n\t\tconst eventName = eventDict[loginSource];\n\t\n\t\tif( eventName === 'one_tap_login' ) {\n\t\t\tdeterminateOneTapLoginEvent();\n\t\t} else {\n\t\t\tcallPreparedGTMEvent(eventName);\n\t\t}\n\t}\n\tcatch (err) {\n\t\tlogger.log( 'ANALYTICS: Event not setup', err );\n\t}\n}\n\nconst onEntitlementsReadyAnalytics = async () => {\n\ttry {\n\t\tlet userState = false;\n\t\tconst entitlements = await entitlementsReady();\n\t\tif( entitlements && entitlements.token ) {\n\t\t\tconst {\n\t\t\t\ttoken,\n\t\t\t\tisEntitled,\n\t\t\t\tadfree,\n\t\t\t} = entitlements;\n\t\t\tlogger.log('ANALYTICS: entitlements options: ', isEntitled, adfree);\n\t\t\tif ( adfree === true ) {\n\t\t\t\tlogger.log('ANALYTICS: user state: found ad free', adfree);\n\t\t\t}\n\t\t\tif ( isEntitled === true ) {\n\t\t\t\tlogger.log('ANALYTICS: user state: found subscriber');\n\t\t\t\tuserState = 'subscriber';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlogger.log('ANALYTICS: user state: LINA');\n\t\t\t\tuserState = 'lina';\n\t\t\t}\n\t\t\tpartnerAccessEvent( token );\n\t\t\treturn {userState, entitlements};\n\t\t}\n\t\treturn 'noEntitlements';\n\n\t} catch ( err ) {\n\t\tlogger.log( 'ANALYTICS:', err );\n\t\treturn 'entitlementError';\n\t}\n};\n\nconst onblueConicLoadedAnalytics = async () => {\n\tawait blueConicLoaded();\n};\n\nconst onLoadAnalytics = async () => {\n\tlogger.log('ANALYTICS: Start Analytics');\n\tregwallSuccessEvent();\n\twindow.MNGAuthentication.postAuthEvents = [];\n\twindow.MNGAuthentication.preAuthGTMEvents = [];\n\twindow.MNGAuthentication.postAuthEvents.push(loginSourceEvent);\n\n\t// no need to register analytics for login or logout\n\tconst currentUrl = getCurrentUrl();\n\tif ( currentUrl.pathname.startsWith( '/logout' ) || currentUrl.pathname.startsWith( '/login' ) || currentUrl.pathname.startsWith( '/callback' ) ) return;\n\n\t// Start the async events that need to wait for other values to be available\n\tonblueConicLoadedAnalytics();\n\t// known | unknown | unknown-default | uknown-error\n\tconst auth0State = await onAuthReadyAnalytics();\n\t// subscriber | lina | noEntitlements | entitlementError\n\tconst entitlementState = await onEntitlementsReadyAnalytics();\n\tuserStateAnalytics(auth0State, entitlementState);\n};\n\nexport default {\n\tonLoadAnalytics,\n\tblueConicRegwallEvents,\n\tcallPreparedGTMEvent,\n\tcallCustomGTMEvent\n};\n","\n/** **\n * Begin UI Selectors\n ** */\nconst uiQueries = {\n\tmainNavId: '#primary-menu',\n\tstatusNavId: '#status-bar-menu',\n\tpushNavId: '#pushnav',\n\tfooterNavId: '#footer-links-menus',\n\tloginButtonClass: '.log-in-button',\n\tsubscribeButtonClass: '.subscribe-visibility',\n\tlogoutButtonClass: '.log-out-button',\n\tdigisubsNavId: 'dfm-digisubs-menu', // subscribe and login buttons on desktop\n\tdigisubsPushNav:'dfm-digisubs-push-menu', // subscribe and login buttons on mobile/small\n\tmegaSubscribe: 'mega-subscribe-button',\n\tsharingWrapperDesktop: '#main .article-share ul',\n\tsharingDropDownDeskop: '.dropdown-menu .account-settings',\n\tsharingPushMenu: '#push-account-link',\n\tsharingArticleStickyNav: '.nav-wrapper-secondary .article-share ul'\n};\n\nexport const getMainNav = () => document.querySelector( uiQueries.mainNavId );\nexport const getPushNav = () => document.querySelector( uiQueries.pushNavId );\nexport const getFooterNav = () => document.querySelector( uiQueries.footerNavId );\nexport const getDigisubsNav = () => document.getElementById( uiQueries.digisubsNavId );\nexport const getDigisubsPushNav = () => document.getElementById( uiQueries.digisubsPushNav );\n\n// elements used for sharing feature\nexport const getSharingElement = () => document.querySelectorAll( uiQueries.sharingWrapperDesktop );\nexport const getSharingDropDown = () => document.querySelector( uiQueries.sharingDropDownDeskop );\nexport const getDigisubsPushMenu = () => document.querySelector( uiQueries.sharingPushMenu );\nexport const getSharingStickNav = () => document.querySelector( uiQueries.sharingArticleStickyNav );\n\nexport const getMainNavLogin = () => getDigisubsNav() ? getDigisubsNav().querySelector( uiQueries.loginButtonClass ) : null; // loginButton\nexport const getMainNavLoginLink = () => getMainNavLogin() ? getMainNavLogin().querySelector( 'a' ) : null; // loginButtonChild\nexport const getMainNavSubscribe = () => getMainNav() ? getMainNav().querySelector( uiQueries.subscribeButtonClass ) : null; // subscribeButton\nexport const getMainNavLogout = () => getMainNav() ? getMainNav().querySelector( uiQueries.logoutButtonClass ) : null; // logoutButton\n\nexport const getDigisubsPushNavLogin = () => getDigisubsPushNav() ? getDigisubsPushNav().querySelector( uiQueries.loginButtonClass ) : null;\nexport const getDigisubsPushNavLoginAnchor = () => getDigisubsPushNavLogin() ? getDigisubsPushNavLogin().querySelector( 'a' ) : null;\nexport const getMegaPushSubscribe = () => document.getElementById( uiQueries.megaSubscribe );\nexport const getPushNavLogin = () => getPushNav() ? getPushNav().querySelector( uiQueries.loginButtonClass ) : null; // pushnavLoginButton\n\nexport const getPushNavLoginAnchor = () => getPushNavLogin() ? getPushNavLogin().querySelector( 'a' ) : null;\n\nexport const getFooterNavLogout = () => getFooterNav() ? getFooterNav().querySelector( uiQueries.logoutButtonClass ) : null;\n\nexport const getAllLoginButtons = () => document.querySelectorAll( uiQueries.loginButtonClass );\nexport const getAllSubscribeButtons = () => document.querySelectorAll( uiQueries.subscribeButtonClass );\nexport const getAllLogoutButtons = () => document.querySelectorAll( uiQueries.logoutButtonClass );\n","import CONSTANTS from './constants'\nimport logger from './logger';\n\nconst setUserDashboardData = ( userObject ) => {\n\n\tconst newObj = {};\n\tObject.keys( userObject ).forEach( (index) => { newObj[index] = Buffer.from( JSON.stringify(userObject[index]) ).toString('base64') } );\n\tconst addToStorage = Buffer.from( JSON.stringify(newObj) ).toString('base64');\n\twindow.localStorage.setItem( 'user-profile', addToStorage );\n\tlogger.log(`Set encoded object hash for ${userObject}`);\n} \n\nconst tryToInt = ( toInt ) => {\n\ttry{\n\t\tconst parsedInt = parseInt( toInt, 10 );\n\t\treturn Number.isNaN( parsedInt ) ? toInt : parsedInt;\n\t} catch ( e ){\n\t\treturn toInt;\n\t}\n}\n\nconst decodeBase64 = ( stringToDecode ) => Buffer.from(stringToDecode, 'base64').toString('utf8')\n\nconst getUserDashboardData = () => {\n\tconst encoded = window.localStorage.getItem(CONSTANTS.USER_PROFILE_HASH);\n\t// see reviver section: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#description\n\tconst userObject = encoded && decodeBase64( encoded ) && JSON.parse( decodeBase64( encoded ), (k, v) => k ? tryToInt( JSON.parse( decodeBase64( v ) ) ) : v);\n\tlogger.log(`Got encoded object hash with a value of ${userObject}`);\n\treturn userObject;\n}\n\nexport const getUserDashboardDataByKey = ( ukey ) => {\n\tconst dashData = getUserDashboardData();\n\treturn dashData && dashData[ukey];\n}\n\nexport const setUserDashboardDataByKey = (prop, value) => {\n\tconst d = getUserDashboardData() || {};\n\td[prop] = value;\n\tsetUserDashboardData(d);\n}\n\nexport default {\n\tsetUserDashboardDataByKey,\n\tgetUserDashboardDataByKey\n}","import logger from '../logger'\nimport settings from '../settings'\nimport CONSTANTS from '../constants';\nimport { callPreparedGTMEvent } from '../analytics'\nimport {\n\tgetDigisubsPushMenu,\n\tgetSharingDropDown,\n\tgetSharingElement,\n\tgetSharingStickNav\n} from '../authentication/uiElementRetrieval'\nimport {\n\tauthenticationReady,\n\tdecodeToken,\n\tdigisubsMenuLoaded,\n\tdocumentBodyLoaded,\n\tgetDataLayerObject,\n\tgetRootDomain,\n\tisInViewport,\n\tpageType,\n\trerunConnextEntitlements\n} from '../utils'\nimport { getUserDashboardDataByKey, setUserDashboardDataByKey } from '../user-utils'\n\nconst showUserMsg = (errMsg,position) => {\n\t// create error message for failures\n\tconst userMessage = errMsg;\n\tconst userMessageLoc = document.getElementById(`article-share-copy-link-text${position}`);\n\t// copied is the only success event, let the user keep clicking copy if they want do not disable button\n\tif (errMsg !== 'Link Copied') {\n\t\t// disable the button because there was an error\n\t\tconst shareButton = document.getElementById(`article-share-copy-btn${position}`);\n\t\tshareButton.disabled = true;\n\t}\n\tlogger.log('article sharing: user message inside share button: ',errMsg,position);\n\tdocument.getElementById(`articleCopyLinkSpinner${position}`).setAttribute('style','display:none');\n\tdocument.getElementById(`article-share-copy-btn${position}`).classList.remove('spinner-pad');\n\tdocument.getElementById(`articleCopyLinkSpinner${position}`).classList.remove('spring-spinner-mar');\n\t/* \tdocument.querySelector(`.spinner-top${position}`).classList.remove('spring-spinner-pad');\n\tdocument.querySelector(`.spinner-bottom${position}`).classList.remove('spring-spinner-pad'); */\n\tdocument.getElementById(`article-share-copy-link-text${position}`).setAttribute('style','display:flex;', 'align-items:center');\n\tuserMessageLoc.innerHTML = errMsg === 'Link Copied'? `\n\t\n\t ${userMessage}` : errMsg;\n}\n\nconst getUserData = async () => {\n\n\tconst { idToken } = await authenticationReady();\n\t\n\tif( idToken ){\n\t\tconst sessionId = decodeToken(idToken);\n\t\tconst userData = {\n\t\t\tuuid: sessionId.sub,\n\t\t};\n\t\tlogger.log ('Article sharing: get user UUID',userData.uuid);\n\t\treturn userData;\n\t}\n\treturn false;\n}\n\nconst updateRemaining = (remaining) => {\n\tlogger.log('Article sharing: updating article count everywhere with ', remaining);\n\tconst articlesLeftHTML = document.querySelectorAll('.article-share-count');\n\tarticlesLeftHTML.forEach(element => {\n\t\tlogger.log('article sharing: updated article count! ',element);\n\t\t/* eslint-disable-next-line no-param-reassign */\n\t\telement.innerHTML = remaining;\n\t});\n\tlogger.log('Article sharing: update finished, return true');\n\treturn true;\n}\n\nconst callCheckRemainingEndpoint = ( userInfo ) => new Promise((resolve) => {\n\tconst {entitlementsEndpoint, entitlementsApiKey} = settings;\n\tconst articleSharingEndpoint = `${entitlementsEndpoint}articleSharing/checkRemaining`;\n\tlogger.log('Article sharing: api data: ',entitlementsApiKey);\n\tconst requestBody = {\n\t\tuid: userInfo.uuid // '1337' for testing\n\t};\n\t/* eslint-disable-next-line no-param-reassign */\n\n\tlogger.log('Article sharing: articles remaining api body: ',requestBody);\n\t\n\t$.ajax( {\n\t\ttype: 'POST',\n\t\turl: articleSharingEndpoint,\n\t\theaders: {\n\t\t\t'X-Api-Key': settings.entitlementsApiKey,\n\t\t},\n\t\tdata: JSON.stringify(requestBody),\n\t\tsuccess: async ( data ) => {\n\t\t\tlogger.log( 'Article sharing: checkRemaining response: successful: ', data.remaining );\n\t\t\tlet remainingResults = '10'\n\t\t\tif (data.remaining === 'This user does not exists in the database. Return 10 for sharesRemaining.') {\n\t\t\t\tremainingResults = '10';\n\t\t\t} else {\n\t\t\t\tremainingResults = data.remaining;\n\t\t\t}\n\t\t\tsetUserDashboardDataByKey(CONSTANTS.ARTICLES_REMAINING_KEY, remainingResults)\n\t\t\tresolve( remainingResults );\n\t\t},\n\t\terror: async ( request, textStatus, errorThrown ) => {\n\t\t\tlogger.log( 'Article sharing: checkRemaining Failure: ', errorThrown );\n\t\t\tresolve( false );\n\t\t},\n\t} );\n})\n\nexport const getArticlesLeft = async (position, getFromAPI = false) => {\n\tconst remainingArticles = getUserDashboardDataByKey( CONSTANTS.ARTICLES_REMAINING_KEY );\n\tif ( !getFromAPI && remainingArticles ) {\n\t\treturn remainingArticles;\n\t}\n\tconst userInfo = await getUserData(position);\n\tconst remaining = await callCheckRemainingEndpoint(userInfo);\n\treturn remaining;\n}\n\nconst generateArticleShareLink = async (position) => {\n\tlet result;\n\tlogger.log('Article sharing: generate copy link');\n\tcallPreparedGTMEvent('articleshare-createlink');\n\tlogger.log('Article sharing: event details ',position);\n\t// turn on loader until link is finished and saved to DB\n\tdocument.getElementById(`articleCopyLinkSpinner${position}`).setAttribute('style','display:flex');\n\tdocument.getElementById(`articleCopyLinkSpinner${position}`).classList.add('spring-spinner-mar');\n\tdocument.getElementById(`article-share-copy-btn${position}`).classList.add('spinner-pad');\n\t/* \tdocument.querySelector(`.spinner-top${position}`).classList.add('spring-spinner-pad');\n\tdocument.querySelector(`.spinner-bottom${position}`).classList.add('spring-spinner-pad'); */\n\n\tdocument.getElementById(`article-share-copy-link-text${position}`).setAttribute('style','display:none;');\n\n\t// get user attributes to send to DB\n\tconst userInfo = await getUserData(position); // userInfo.email and userInfo.uuid\n\t// get article attributes to send to DB\n\tconst articleId = await getDataLayerObject('Content ID');\n\tconst articleURL = await getDataLayerObject('URL');\n\tconst pubDomain = await getRootDomain();\n\tlogger.log ('Article sharing: get article ID',articleId);\n\tlogger.log ('Article sharing: publication: ', pubDomain);\n\t// create link based on attributes and randomness\n\tfunction makeUniqueShareCode(length) {\n\t\t// creates random string based on URL of the article\n\t\tlet newShareCode = '';\n\t\tconst characters = articleURL;\n\t\tconst regex = /[^0-9a-zA-Z]+/gm;\n\t\tconst randomCharacters = characters.replace(regex, '');\n\t\tconst charactersLength = randomCharacters.length;\n\t\tfor ( let i = 0; i < length; i += 1 ) {\n\t\t\tnewShareCode += randomCharacters.charAt(Math.floor(Math.random() *\n\t\t\t\tcharactersLength));\n\t\t}\n\t\treturn newShareCode;\n\t}\n\t// article share code is only used once but generated everytime\n\t// if the user has shared an article it will return back with the correct share link\n\tconst articleShareCode = makeUniqueShareCode(20);\n\tlogger.log('Article sharing: unique share code: ',articleShareCode);\n\tconst {entitlementsEndpoint,entitlementsApiKey} = settings;\n\tconst articleSharingEndpoint = `${entitlementsEndpoint}articleSharing/checkArticleSharedLink`;\n\tconst requestBody = {\n\t\tuid: userInfo.uuid, // '1337' for testing\n\t\tarticleName: articleId,\n\t\tpublication: pubDomain,\n\t\tcode: articleShareCode\n\t};\n\t// Send link URL to database for storing\n\t// This awaitable in order to capture the data in the event handler\n\ttry{\n\t\tresult = $.ajax( {\n\t\t\ttype: 'POST',\n\t\t\turl: articleSharingEndpoint,\n\t\t\theaders: {\n\t\t\t\t'X-Api-Key': entitlementsApiKey,\n\t\t\t},\n\t\t\tdata: JSON.stringify(requestBody),\n\t\t} );\n\n\t\tconst remaining = getUserDashboardDataByKey(CONSTANTS.ARTICLES_REMAINING_KEY);\n\t\tif( typeof remaining === 'number'){\n\t\t\tconst newRemaining = remaining - 1;\n\t\t\tsetUserDashboardDataByKey(CONSTANTS.ARTICLES_REMAINING_KEY, newRemaining);\n\t\t\tupdateRemaining(newRemaining);\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\tcatch (error) {\n\t\tshowUserMsg('Network error, try again', position);\n\t\tlogger.log( 'Article sharing: generateArticleShareLink endpoint Failure: ', error );\n\t\treturn new Error( 'Article sharing: check article endpoint failure' );\n\t}\n};\n\nconst validUrl = (str) => {\n\ttry {\n\t (()=>new URL(str))();\n\t return true;\n\t} catch {\n\t return false;\n\t}\n}\n\nconst navMenusArticleShareUI = async () => {\n\tconst sharesRemainingNumber = await getArticlesLeft(false);\n\tlogger.log(`Article sharing: start nav menu adds, remaining shares is ${sharesRemainingNumber}`);\n\t// waiting for digisubs UI to be built\n\tconst digisubsReady = await digisubsMenuLoaded();\n\tlogger.log('Article sharing: init: digisubs dropdown ready: ',digisubsReady);\n\n\tconst desktopDropDown = getSharingDropDown();\n\tconst digisubsPushNav = getDigisubsPushMenu();\n\tlogger.log('Article sharing: dropdown found',desktopDropDown);\n\t// let articleShareTitle = '';\n\tconst pageTypeCheck = await pageType();\n\tlogger.log('Article sharing: pagetype for nav menus is ',pageTypeCheck);\n\t/* if (pageTypeCheck === 'article') {\n\t\tarticleShareTitle = await getDataLayerObject('Page Title');\n\t} */\n\t// create desktop dropdown share element (article tittle for account menu commented for now)\n\t// let articleShareTitlePlacement = `
Gift this article:

${articleShareTitle}

`;\n\t// if articleShareTitle is null, we are on section front dont show article title\n\tlogger.log()\n\t// articleShareTitlePlacement = (articleShareTitle !== '' ? articleShareTitlePlacement : '');\n\t// get site URL for help link\n\tconst shareDropDown = `
Gift Articles Remaining: ${sharesRemainingNumber}/10
`;\n\tlogger.log('Article sharing: dropdown content: ',shareDropDown);\n\tdesktopDropDown.insertAdjacentHTML('beforebegin',\n\t\tshareDropDown);\n\tdigisubsPushNav.insertAdjacentHTML('beforebegin',\n\t\tshareDropDown);\n\t// make sure is a valid url to prevent host concatenation\n\tconst faqUrl = validUrl(window.article_config.article_sharing_faq) ? window.article_config.article_sharing_faq : '';\n\t// add link icon if faqUrl is valid\n\tif(faqUrl !== '') {\n\t\tconst faqLink = `?`;\n\t\tconst articleShareCount = document.querySelectorAll('.article-share-h6');\n\t\tarticleShareCount?.forEach(element => {\n\t\t\telement.insertAdjacentHTML('beforeend', faqLink);\n\t\t});\n\t};\n}\n\nconst setArticleShareIcon = (position) => {\n\tconst shareIcn = document.getElementById(`share-icon-position${position}`);\n\tconst articleShareBtnStyle = window.getComputedStyle(document.querySelector('li.share-article'));\n\tlet fillColor;\n\tif(articleShareBtnStyle.backgroundColor=== 'rgba(0, 0, 0, 0)'){\n\t\t// add class that fixes share icon\n\t\tshareIcn.classList.add('article-share-icon-invert');\n\t\tfillColor = window.getComputedStyle(document.getElementById('page')).getPropertyValue('--primary');\n\t} else {\n\t\tfillColor = 'white';\n\t}\n\tconst svg = `\n\t\t\n\t\t`;\n\tconst encoded = window.btoa(svg);\n\tconst property = `url(data:image/svg+xml;base64,${encoded})`;\n\tshareIcn.style.background = property\n\treturn `url(data:image/svg+xml;base64,${encoded})`;\n}\n\nconst resetBoxPosition = (el) => {\n\tif(el.classList.contains('article-share-fixed')){\n\t\tel.classList.remove('article-share-fixed')\n\t}\n}\n\nconst setupArticleSharingUI = async (subscriber) => {\n\tlogger.log('Article sharing: build menu here');\n\t// must wait for body to load otherwise share elements aren't available\n\tawait documentBodyLoaded();\n\tlogger.log(' Article Sharing: Build sharing menuz!');\n\n\t// article share interactivity\n\t// popup attributes\n\n\tlet svgProperty = '';\n\n\tconst popupToggle = async (position) => {\n\n\t\t// send event to GA when user opens the article share box\n\t\tcallPreparedGTMEvent('articleshare-openui');\n\n\t\tconst openedBox = document.getElementById(`share-box-position${position}`);\n\t\tlogger.log('Article Sharing: i clicked this ',openedBox, position);\n\t\tconst box = document.getElementById(openedBox.id);\n\t\tlogger.log('article sharing: look for this box: ',openedBox);\n\n\t\t// show loading icon and hide gift icon if opening\n\t\t// if sharing box is already open dont show loading icon\n\t\tif (!openedBox.classList.contains('show-article-sharing')) {\n\t\t\tlogger.log('article sharing: box already open, do not show spinner');\n\t\t\tdocument.getElementById(`articleShareBtnSpinner${ position}`).setAttribute('style', 'display:block');\n\t\t\tdocument.getElementById(`share-icon-position${ position}`).setAttribute('style', 'display:none!important;');\n\t\t}\n\t\t// when clicked ping API to find artile share left\n\t\tlet getArticlesLeftAPI = false;\n\t\t// skip api call if closing the box or user is 'false', not a subscriber\n\t\tif (!subscriber || openedBox.classList.contains('show-article-sharing')) {\n\t\t\t// set to true so api call is skipped\n\t\t\tgetArticlesLeftAPI = true;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tgetArticlesLeftAPI = await getArticlesLeft(position, false);\n\t\t\t\tupdateRemaining(getArticlesLeftAPI);\n\t\t\t} catch {\n\t\t\t\tlogger.log('Article share article count api error');\n\t\t\t}\n\t\t}\n\n\t\tlogger.log('article sharing: api request done, show results ', getArticlesLeftAPI);\n\t\t// remove timer when API is hooked up\n\t\tconst shareIcn = document.getElementById(`share-icon-position${position}`)\n\t\tshareIcn.setAttribute('style',`background:${svgProperty}; display:block!important;`);\n\t\tdocument.getElementById(`articleShareBtnSpinner${position}`).setAttribute('style','display:none');\n\n\n\t\t// show share box because api returned data\n\t\topenedBox.classList.toggle('show-article-sharing');\n\n\t\t// toggle this class\n\t\tbox.classList.toggle('show');\n\t\t// any box but the sticky nav which is position 0\n\t\tif(position !== 0){\n\t\t\tif(!isInViewport(openedBox)){\n\t\t\t\topenedBox.classList.add('article-share-fixed');\n\t\t\t}\n\t\t}\n\n\t\t// get share button user clicked\n\t\tconst shareBtn = document.querySelector(`#article-share-position${position} .article-share-link`);\n\t\tlogger.log('article sharing: accessible ',shareBtn);\n\t\t// switch between showing and hiding article share box\n\t\tconst isOpen = box.classList.contains('show');\n\t\tlogger.log('article sharing: box isOpen ',isOpen);\n\t\tif (!isOpen) {\n\t\t\t// todo: name of popup box\n\t\t\tbox.setAttribute( 'aria-expanded', 'false' );\n\t\t\tshareBtn.setAttribute('aria-press','false');\n\t\t}\n\n\t\tif (isOpen) {\n\t\t\t// todo: name of popup box\n\t\t\tbox.setAttribute( 'aria-expanded', 'true' );\n\t\t\tshareBtn.setAttribute('aria-press','true');\n\n\t\t}\n\t\t// once box is open check share count\n\t\t// if 0 mores shares left, show message and disable creating link\n\t\tif (getArticlesLeftAPI.remaining <= 0) {\n\t\t\tlogger.log('article share: user out of free views ', getArticlesLeftAPI);\n\t\t\tshowUserMsg('No more shares left',position);\n\t\t}\n\t};\n\n\n\t// Share link button text\n\tconst shareLinkText = `\n\t\n\t\n\t\n\tCopy The Shareable Link`;\n\n\tconst closeShareBox = (index) => {\n\t\tconst popup = document.getElementById(`share-box-position${index}`);\n\t\tconst cancelButtonLabel = document.getElementById(`cancel-button-label${index}`)\n\t\tif(cancelButtonLabel) {\n\t\t\tcancelButtonLabel.childNodes[0].nodeValue = 'Cancel'\n\t\t}\n\n\t\tif(popup && popup.classList.contains('show-article-sharing')){\n\t\t\t// resetting share link button in case of error (only for subscriber)\n\t\t\tconst copyLink = document.getElementById(`article-share-copy-link-text${index}`)\n\t\t\tif (subscriber && copyLink) copyLink.innerHTML = shareLinkText;\n\t\t\tpopupToggle(index, 'close');\n\t\t\tif(index === 0) resetBoxPosition(popup);\n\t\t}\n\t}\n\n\tconst closeEvent = (index, element) => {\n\t\tif(element) {\n\t\t\telement.addEventListener('click', () => {\n\t\t\t\tcloseShareBox(index);\n\t\t\t});\n\t\t}\n\n\t}\n\n\t// Event to close article share box clicking outside the container\n\twindow.addEventListener('click', ({target}) => {\n\t\tconst btnClosest = target.closest('.article-share-link');\n\t\tif (subscriber) {\n\t\t\t// Check if article share box exist\n\t\t\t// Check if sticky-nav article share box exist\n\t\t\tconst closestStickyNav = target.closest('#share-box-position0');\n\t\t\tconst clickedOutsideStickyPopup = closestStickyNav && closestStickyNav.classList.contains('show-article-sharing');\n\t\t\t// Check if clicked outside the box\n\t\t\tif(clickedOutsideStickyPopup === null && btnClosest === null){\n\t\t\t\tcloseShareBox(0);\n\t\t\t}\n\t\t}\n\n\t\tconst closestTitleContainer = target.closest('#share-box-position1');\n\t\tconst clickedOutsideTitlePopup = closestTitleContainer && closestTitleContainer.classList.contains('show-article-sharing');\n\t\tif(clickedOutsideTitlePopup === null && btnClosest === null){\n\t\t\tcloseShareBox(1);\n\t\t}\n\n\t\tconst closestBottomContainer = target.closest('#share-box-position2');\n\t\tconst clickedOutsideBottomPopup = closestBottomContainer && closestBottomContainer.classList.contains('show-article-sharing');\n\t\tif(clickedOutsideBottomPopup === null && btnClosest === null){\n\t\t\tcloseShareBox(2);\n\t\t}\n\n\t\t/* \t\tconst closest3 = target.closest('#share-box-position3');\n\t\tconst clickedOutsidePopup3 = closest2 && closest3.classList.contains('show-article-sharing');\n\t\tif(clickedOutsidePopup3 === null && btnClosest === null){\n\t\t\tcloseShareBox(3);\n\t\t}\n */\n\n\t\t/* \t\tconst closest4 = target.closest('#share-box-position4');\n\t\tconst clickedOutsidePopup4 = closest4 && closest4.classList.contains('show-article-sharing');\n\t\tif(clickedOutsidePopup4 === null && btnClosest === null){\n\t\t\tcloseShareBox(4);\n\t\t} */\n\t});\n\n\tconst createShareButton = async (locations) => {\n\t\tconst articleTitle = await getDataLayerObject('Page Title');\n\t\n\t\tlocations.map((loc, index) => {\n\t\t\tlogger.log('Article sharing: create button for this: ', loc,index);\n\t\t\t// use index to create different names for different placements on the page\n\t\t\t// create share button element\n\t\t\tconst shareLi = document.createElement('li');\n\t\t\tshareLi.className = 'share-article';\n\t\t\tshareLi.id = `article-share-position${index}`;\n\t\t\tshareLi.setAttribute('tabindex','0');\n\n\t\t\tconst shareBtn = document.createElement('button');\n\t\t\tshareBtn.className = 'article-share-link';\n\t\t\tshareBtn.setAttribute('aria-pressed','false');\n\t\t\tshareBtn.setAttribute('aria-controls',`share-box-position${index}`);\n\t\t\tshareBtn.setAttribute('aria-label','Article Sharing Button');\n\t\t\tshareBtn.setAttribute('tabindex','0');\n\t\t\tshareLi.append(shareBtn);\n\n\t\t\tconst loadingShareIcn = document.createElement('span');\n\t\t\tloadingShareIcn.style.display = 'none';\n\t\t\tloadingShareIcn.classList.add('spring-spinner');\n\t\t\tloadingShareIcn.id = `articleShareBtnSpinner${index}`;\n\t\t\tloadingShareIcn.innerHTML = `\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
`;\n\t\t\t// check if the share buttons are transparent, some themes are different...\n\t\t\tconst fbBtnCheck = document.querySelector('li.share-facebook');\n\t\t\tconst shareBtnStyles = window.getComputedStyle(fbBtnCheck);\n\t\t\tconst shareIcn = document.createElement('span');\n\t\t\tlogger.log('article sharing: share icon color: ',shareBtnStyles.backgroundColor);\n\t\t\tif (shareBtnStyles.backgroundColor === 'rgba(0, 0, 0, 0)') {\n\t\t\t\t// also invert the spinner\n\t\t\t\tloadingShareIcn.classList.add('spring-spinner-invert');\n\t\t\t}\n\t\t\tshareBtn.append(loadingShareIcn);\n\t\t\tshareIcn.id = `share-icon-position${index}`;\n\t\t\tshareIcn.className = 'article-share-icon';\n\n\t\t\tconst shareScreenReader = document.createElement('span');\n\t\t\tshareScreenReader.className = 'sharing-screen-reader-text';\n\t\t\tshareScreenReader.innerHTML = 'Click to share a free article with a friend';\n\t\t\tshareLi.append(shareScreenReader);\n\t\t\tloc.appendChild(shareLi);\n\t\t\tshareBtn.append(shareIcn);\n\t\t\tsvgProperty = setArticleShareIcon(index);\n\n\t\t\t// create share box\n\t\t\tconst shareBox = document.createElement('div');\n\t\t\tshareBox.id = `share-box-position${index}`\n\t\t\tshareBox.className = `article-share-box share-box-position${index}`;\n\t\t\tconst shareBoxTitle = 'GIFT THIS ARTICLE';\n\t\t\tconst sharesRemainingNumber = '10'; // set to 10 by default, this gets updated upon opening article share and creating a share link\n\t\t\tlet shareRemainingText = `You have ${sharesRemainingNumber} gift articles remaining this month`;\n\t\t\tlet shareBoxArticleTitle = '';\n\t\t\tshareBoxArticleTitle = articleTitle;\n\t\t\tlogger.log(shareBoxArticleTitle);\n\t\t\tlogger.log('article sharing article title: ', shareBoxArticleTitle);\n\t\t\tconst hostDomain = document.location.host;\n\t\t\t// create messaging for logged out users\n\t\t\tif (subscriber === false){\n\t\t\t\tshareBox.classList.add('no-share');\n\t\t\t\t// marketing message about this feature\n\t\t\t\tshareRemainingText = `Subscibers get ${sharesRemainingNumber} gift articles each month`;\n\t\t\t\tshareBox.innerHTML = `\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
${shareBoxTitle}
\n\t\t\t\t\t
What is article sharing?
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t

Subscribers are entitled to 10 gift sharing articles each month. These can be shared with friends and family who are not subscribers.

\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t

Subscribe now! or Sign in to your account.

\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\t// show regular sharing box for subscribers\n\t\t\t\tshareBox.innerHTML = `\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
${shareBoxTitle}
\n\t\t\t\t
${shareRemainingText}
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t

${shareBoxArticleTitle}

\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
Copy the link
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t`;\n\t\t\t}\n\n\t\t\tloc.appendChild(shareBox);\n\t\t\t/* \t\t\tdocument.getElementById('article-share-title').style.fontFamily = articleTitleStyle;\n\t\t\tdocument.getElementById('article-share-article-title').style.fontFamily = articleTitleStyle;\n\t\t\tdocument.getElementById('article-share-copy-title').style.fontFamily = articleTitleStyle; */\n\n\t\t\t// this code is saved for now, if Karl would like the sharebox moved above the button we will need to do some math here\n\t\t\t// set position of popup box based on number of share elements\n\t\t\t// first position below article title\n\t\t\t// const getShareElements = document.querySelectorAll('#main .article-share ul li');\n\t\t\t// const shareCount = [].slice.call(getShareElements);\n\t\t\t// logger.log('Article Sharing: total shares: ',shareCount);\n\t\t\t// //and all divs that are not display none\n\t\t\t// const showingElements = shareCount.filter(function(el) {\n\t\t\t// \treturn getComputedStyle(el).display !== \"none\"\n\t\t\t// });\n\t\t\t// logger.log('Article Sharing: total shares: this many shares showing ',showingElements.length);\n\n\t\t\t// desktop article share toggler\n\t\t\tconst desktopShareButtons = document.getElementById(`article-share-position${index}`);\n\t\t\tdesktopShareButtons.addEventListener('click', () => {\n\t\t\t\tpopupToggle(index, 'open');\n\t\t\t});\n\n\t\t\t// dropdown toggler for keyboard users\n\t\t\tdesktopShareButtons.addEventListener( 'keydown', ( e ) => {\n\t\t\t\tif ( e.key === 'q' ) {\n\t\t\t\t\tpopupToggle(index, 'open');\n\t\t\t\t}\n\t\t\t} );\n\t\t\t// desktop article share close button\n\t\t\tconst desktopCloseArticleShareBox = document.getElementById(`article-share-close${index}`);\n\t\t\tcloseEvent(index, desktopCloseArticleShareBox);\n\t\t\tconst articleShareCancelButton = document.getElementById(`cancel-button${index}`);\n\t\t\tcloseEvent(index, articleShareCancelButton);\n\n\t\t\t// desktop article share get link button\n\t\t\tconst desktopGetShareLink = document.getElementById(`article-share-copy-btn${index}`);\n\t\t\tdesktopGetShareLink.addEventListener('click', () => {\n\t\t\t\tcopyShareLinkOnClient(index);\n\t\t\t});\n\n\t\t\treturn 'done'\n\t\t});\n\t};\n\n\t// add button locations here if we need other locations\n\tconst shareButtonLocations = [\n\t\tgetSharingStickNav(),\n\t\t...getSharingElement()\n\t];\n\t// 5 locations (from 0 to 4) \n\t// location 0 is the sticky nav share box\n\t// location 1 is the container bellow the article title and location 2 the one at the bottom\n\t// the ones mentioned above are the ones visible on the article right now\n\tlogger.log('article sharing: target elements are ',shareButtonLocations);\n\tconst checkTargetElements = shareButtonLocations.filter(element => {\n\t\tif (element === null) return false;\n\t\treturn true;\n\t});\n\n\t// add elements to share locations if all elements exist\n\t// if one element is missing the share buttons will not load\n\tif (checkTargetElements.length === shareButtonLocations.length) await createShareButton(shareButtonLocations);\n\n\tlogger.log('Article Sharing: appending sticky nav too');\n\t// fire nav menu article share function\n\t// only load if person is a subscriber\n\t// user navs will wait inside this function for digisubs menus to load\n\tif (subscriber) {\n\t\tawait navMenusArticleShareUI();\n\t\tconst dropdownTitle = document.querySelectorAll('#article-share-dropdown-article-page');\n\t\tif(dropdownTitle){\n\t\t\tdropdownTitle.forEach(element => {\n\t\t\t\telement.addEventListener('click', ()=>{\n\t\t\t\t\tpopupToggle(0, 'open');\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tconst mobileDropdown = document.querySelector('.border-container #push-account-content #article-share-dropdown-article-page');\n\t\tif(mobileDropdown){\n\t\t\tmobileDropdown.addEventListener('click', ()=> {\n\t\t\t\tdocument.getElementById('digisubs-toggle').click();\n\t\t\t})\n\t\t}\n\t}\n};\n\nconst copyShareLinkOnClient = async (index) => {\n\tconst data = await generateArticleShareLink(index);\n\tconst articleURL = await getDataLayerObject('URL');\n\tlogger.log( 'Article sharing: check article endpoint response: successful: ', data );\n\t// \tcheck if the already generated link share has expired\n\t// \tif so generate a new link\n\t// ** This code didn't seem to do anything, currently commented out **\n\t// \tlet shareLinkTime = new Date(data.sharedTimestamp);\n\t// \tshareLinkTime = shareLinkTime.setDate(shareLinkTime.getDate() + 7); // allow shared article to be read for 7 days\n\t// \tconst shareExpiration = (shareLinkTime/1000);\n\t// \tlet currentTime = new Date();\n\t// \tcurrentTime = Math.floor(currentTime.getTime() / 1000)\n\tif (!data.sharedCode || data.sharedCode === 'null' || typeof data.sharedCode === 'undefined') {\n\t\tshowUserMsg('Network error, try again', index);\n\t} else {\n\t\tshowUserMsg('Link Copied', index);\t\t\n\t\t// THEN put link into clipboard\n\t\tconst copyShareLink = `${articleURL}?share=${data.sharedCode}`;\n\t\t// Use the clipboard's writeText method to pass the inputs text to the clipboard\n\t\tnavigator.clipboard.writeText(copyShareLink).then( () =>{\n\t\t\tlogger.log('Article sharing: Link Copied');\n\t\t});\n\t\tconst cancelButtonLabel= document.getElementById(`cancel-button-label${index}`)\n\t\tif (cancelButtonLabel) {\n\t\t\tcancelButtonLabel.childNodes[0].nodeValue = 'Close'\n\t\t}\n\n\t\t// THEN fire get artilce count again to increment display on page\n\t\tconst numLeft = await getArticlesLeft(index);\n\t\tupdateRemaining(numLeft);\n\t}\n\n};\n\nexport const checkFreeArticleCode = async () => {\n\twindow.MNGAuthentication = window.MNGAuthentication || {};\n\twindow.MNGAuthentication.articleShareConvo = false;\n\twindow.MNGAuthentication.articleShare = '';\n\tlogger.log('article sharing: code check: checking free article code');\n\t// reader is on page with ?share= url param, lets do some checks\n\tconst getURLParams = window.location.search;\n\tconst queryString = new URLSearchParams(getURLParams);\n\t// get data for article share api request\n\tconst articleId = await getDataLayerObject('Content ID');\n\tconst pubDomain = getRootDomain();\n\tlogger.log('article sharing: code check: url params array ', queryString.getAll('share'));\n\tif (queryString.getAll('share').length === 0) {\n\t\tlogger.log('No share search param');\n\t\treturn false;\n\t} // if no url params return\n\twindow.MNGAuthentication.articleShareConvo = true;\n\tconst urlShareCode = queryString.getAll('share');\n\n\t// send GA event that someone is trying to read a shared article\n\tcallPreparedGTMEvent('articleshare-readingshare');\n\t// found share article in URL param, check DB if it's still valid\n\tlogger.log('Article sharing: code check: check share code: ',urlShareCode);\n\tconst {entitlementsEndpoint,entitlementsApiKey} = settings;\n\tconst articleSharingEndpoint = `${entitlementsEndpoint}articleSharing/checkArticleSharedLink`;\n\tconst requestBody = {\n\t\t// uid: userInfo.uuid, // if uid is missing the endpoint does a search instead of an insert or update\n\t\tarticleName: articleId,\n\t\tpublication: pubDomain,\n\t\tcode: urlShareCode[0] // send value found in url to validate\n\t};\n\t\n\t// Send link URL to database for storing\n\treturn $.ajax({\n\t\ttype: 'POST',\n\t\turl: articleSharingEndpoint,\n\t\theaders: {\n\t\t\t'X-Api-Key': entitlementsApiKey,\n\t\t},\n\t\tdata: JSON.stringify(requestBody),\n\t\tsuccess: (data) => {\n\t\t\tlogger.log('Article sharing: code check: looking for valid share code: ', data);\n\t\t\tif (data === 'nocodefound') {\n\t\t\t\t// code does not exist alert user\n\t\t\t\tlogger.log('Article sharing: code check: code does not exist');\n\t\t\t\t// this object will be looked for in Engage or Blueconic\n\t\t\t\tcallPreparedGTMEvent('articleshare-readshare-codenotfound');\n\t\t\t\twindow.MNGAuthentication.articleShare = 'codenotfound';\n\t\t\t} else {\n\t\t\t\t// check if the link share has expired\n\t\t\t\t// if so BLOCKEM!\n\t\t\t\tlogger.log('Article sharing: code check: time api timestamp response: ', data.sharedTimestamp);\n\t\t\t\tlet shareLinkTime = new Date(data.sharedTimestamp);\n\t\t\t\tshareLinkTime = shareLinkTime.setDate(shareLinkTime.getDate() + 30); // allow shared article to be read for 7 days\n\t\t\t\tconst shareExpiration = (shareLinkTime / 1000);\n\t\t\t\tlogger.log('Article sharing: code check: time api timestamp response expiration date ', shareExpiration);\n\t\t\t\tlet currentTime = new Date();\n\t\t\t\tcurrentTime = Math.floor(currentTime.getTime() / 1000)\n\t\t\t\tlogger.log('Article sharing: code check: current unix time is, ', currentTime);\n\t\t\t\tif (shareExpiration < currentTime) {\n\t\t\t\t\tlogger.log('Article sharing: code check: code expired');\n\t\t\t\t\t// handle link is expired here\n\t\t\t\t\tcallPreparedGTMEvent('articleshare-readshare-expired');\n\t\t\t\t\twindow.MNGAuthentication.articleShare = 'expired';\n\t\t\t\t} else if (!data.sharedCode || data.sharedCode === 'null' || typeof data.sharedCode === 'undefined') {\n\t\t\t\t\t// message user there was a network error, try again\n\t\t\t\t\tlogger.log('Article sharing: code check: network error');\n\t\t\t\t\twindow.MNGAuthentication.articleShare = 'networkerror';\n\t\t\t\t} else {\n\t\t\t\t\t// send GA event that the share was working and verified\n\t\t\t\t\t// this should align with the event: articleshare-readingshare...if not there is a problem\n\t\t\t\t\tlogger.log('Article sharing: code check: code valid, not expired');\n\t\t\t\t\tcallPreparedGTMEvent('articleshare-readshare-verified');\n\t\t\t\t\t// article is free, let the reader read!\n\t\t\t\t\twindow.MNGAuthentication.articleShare = 'sharing';\n\t\t\t\t\t// check if connext is running if not, re run so user don't get paywalled\n\t\t\t\t\trerunConnextEntitlements();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\terror: async (request, textStatus, errorThrown) => {\n\t\t\t// message user there was a network error, try again\n\t\t\tlogger.log('Article sharing: code check: network error: ', errorThrown);\n\t\t\twindow.MNGAuthentication.articleShare = 'networkerror';\n\t\t\treturn new Error('Article sharing: check article code failed');\n\t\t},\n\t});\n}\n\nexport const init = async () => {\n\n\tdocument.addEventListener('scroll', () => {\n\t\tconst shareBoxes = [...document.querySelectorAll('.share-box-position1, .share-box-position2')];\n\t\tif (shareBoxes.length > 0) {\n\t\t\tshareBoxes.forEach(shareBox => {\n\t\t\t\tif(shareBox && shareBox.classList.contains('show-article-sharing')){\n\t\t\t\t\tconst {scrollY} = window;\n\t\t\t\t\tconst sharingBottom = document.getElementById('sharing-bottom');\n\t\t\t\t\tconst sharingTop = document.getElementById('sharing-top');\n\n\t\t\t\t\tif (sharingBottom && shareBox.classList.contains('share-box-position2')) {\n\t\t\t\t\t\tconst sharingBottomOffset = sharingBottom.offsetTop;\n\t\t\t\t\t\tconst sharingBottomPercentage = (scrollY / sharingBottomOffset) * 100;\n\t\t\t\t\t\tif (sharingBottomPercentage >= 93) {\n\t\t\t\t\t\t\tresetBoxPosition(shareBox);\n\t\t\t\t\t\t}\telse if (!shareBox.classList.contains('article-share-fixed')){\n\t\t\t\t\t\t\tshareBox.classList.add('article-share-fixed');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sharingTop && shareBox.classList.contains('share-box-position1')) {\n\t\t\t\t\t\tconst scrollPercentage = (window.scrollY / (document.documentElement.scrollHeight - window.innerHeight)) * 100;\n\t\t\t\t\t\tif (scrollPercentage >= 11.5){\n\t\t\t\t\t\t\tresetBoxPosition(shareBox);\n\t\t\t\t\t\t} else if (!shareBox.classList.contains('article-share-fixed')){\n\t\t\t\t\t\t\tshareBox.classList.add('article-share-fixed');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t});\n\n\n\t// verify user is a subscriber\n\tconst { isAuthenticated } = await authenticationReady();\n\tif ( isAuthenticated === true && typeof MNGAuthentication !== 'undefined' && typeof MNGAuthentication.isUserSubscriber === 'function' && MNGAuthentication.isUserSubscriber() )\n\t{\n\t\t// trigger another auth check and await it - it's in auth JS look into reloading page IF we have to, there is an authetication ready function to check\n\t\t// need to crete a retrigger Might be able to call auth.js init again\n\t\tlogger.log('article sharing: subscriber, show sharing tool');\n\t\tconst checkPageType = await pageType();\n\t\tlogger.log('article sharing: page type is ', checkPageType);\n\t\tif (checkPageType === 'article') {\n\t\t\t// creates article sharing UI menu, also builds dropdown\n\t\t\tawait setupArticleSharingUI(true);\n\t\t} else {\n\t\t\t// only build drop down because not on article page\n\t\t\tawait navMenusArticleShareUI();\n\t\t}\n\t} else {\n\t\t// not a subscriber don't show feature, user could be logged in or out\n\t\tlogger.log('article sharing: not a logged in or a subscriber, show marketing message and check for share code');\n\t\t// this checks for the \"?share=\" url param and throws some flags for connext or other systems to use\n\t\tawait checkFreeArticleCode();\n\n\t\t// send 'false' param to update messaging on sharing box for non-subscribers (aka an advertisment)\n\t\tawait setupArticleSharingUI(false);\n\n\t}\n\t\n\twindow.addEventListener('updateArticlesRemainingUI', (ev) => {\n\t\tupdateRemaining( ev.detail )\n\t})\n}\n\nexport default {\n\tgetArticlesLeft,\n\tcheckFreeArticleCode,\n\tinit\n};\n","import {init} from './article-sharing';\n\ninit();"],"names":["module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","defaults","Cancel","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","all","promises","spread","isAxiosError","default","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","reason","throwIfRequested","listener","push","index","splice","source","c","InterceptorManager","dispatchRequest","validator","validators","interceptors","arguments","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","replace","handlers","use","options","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","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","Object","keys","configValue","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","callback","arr","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","console","warn","schema","allowUnknown","result","getPrototypeOf","isFunction","obj","hasOwnProperty","constructor","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","a","b","str","stripBOM","content","charCodeAt","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","len","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","Uint8Array","start","end","num","output","base64","ieee754","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","arg","encodingOrOffset","allocUnsafe","from","string","encoding","isEncoding","actual","fromString","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","checked","numberIsNaN","fromObject","toPrimitive","assertSize","size","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","String","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parseInt","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","Math","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","y","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","super","writable","configurable","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","floor","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","abs","INVALID_BASE64_RE","Infinity","leadSurrogate","base64clean","src","dst","alphabet","table","i16","BufferBigIntNotDefined","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","rt","isNaN","log","LN2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","o","iterator","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen","_toConsumableArray","iter","asyncGeneratorStep","gen","_next","_throw","info","self","authentication_config","sessionManagementEnabled","sessionManagement","debug","sessionServer","entitlementsEnabled","dropdownEnabled","enableReaderDashboardLink","oneTapEnabled","useTribMainGoogle","isAdfreeArticle","auth0Domain","auth0ClientId","entitlementsEndpoint","entitlementsApiKey","entitlementsAPIKey","linaCheckOnArticles","serverEntitlements","googleClientId","newsletterId","connextStorageKey","auth0SubKey","auth0Authenticated","secret","pluginSecret","newslettersEnabled","bcLowaSegements","blueconicEnabled","datadogEnabled","enableDatadog","settings","_console","_len","_key","r","atob","t","header","_regeneratorRuntime","asyncIterator","u","toStringTag","define","wrap","Generator","Context","makeInvokeMethod","tryCatch","f","GeneratorFunction","GeneratorFunctionPrototype","p","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","mark","__proto__","awrap","async","reverse","pop","prev","stop","rval","handle","complete","finish","delegateYield","getCurrentUrl","windowLocationhref","URL","getRootDomain","givenHostname","_getCurrentUrl","hostnameToCheck","decodeToken","jwt","jwtDecode","documentIsLoadedCompletely","documentBodyLoaded","checkIfStateIsComplete","loadedLevel","logger","bodyLoaded","setInterval","_asyncToGenerator","_callee5","_context5","querySelector","clearInterval","digisubsDataLayerLoaded","dataLayer","dataLayerLoaded","_callee7","_context7","digisubsMenuLoaded","digisubsLoaded","_callee8","_context8","getElementById","getDataLayerObject","_x7","_ref13","_callee11","getObject","dataLayerSearch","dataLayerLoop","_context11","element","some","pageType","_ref14","_callee12","typeString","getPageType","_args12","_context12","authenticationReady","MNGAuthentication","event","detail","simpleEmailValidation","email","emailPattern","valid","TLDsearch","TLDsearchList","findIndex","ref","validatePhoneNumber","isInViewport","el","rect","getBoundingClientRect","top","left","bottom","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","rerunConnextEntitlements","rerunOnlyIfSilent","Connext","GetOptions","Silentmode","Run","callPreparedGTMEvent","eventName","uiQueries","getSharingElement","querySelectorAll","getSharingDropDown","getDigisubsPushMenu","getSharingStickNav","decodeBase64","stringToDecode","getUserDashboardData","encoded","localStorage","getItem","CONSTANTS","userObject","k","toInt","parsedInt","tryToInt","getUserDashboardDataByKey","ukey","dashData","setUserDashboardDataByKey","newObj","addToStorage","setItem","setUserDashboardData","showUserMsg","errMsg","position","userMessage","userMessageLoc","disabled","classList","innerHTML","getUserData","_ref","_callee","_yield$authentication","idToken","sessionId","userData","_context","uuid","updateRemaining","callCheckRemainingEndpoint","userInfo","_success","_error","articleSharingEndpoint","requestBody","uid","$","ajax","success","_x","_callee2","remainingResults","_context2","_x2","_x3","_x4","_callee3","textStatus","errorThrown","_context3","getArticlesLeft","_x5","_ref2","_callee4","getFromAPI","remainingArticles","_args4","_context4","generateArticleShareLink","_x6","_ref3","articleId","articleURL","pubDomain","makeUniqueShareCode","articleShareCode","newRemaining","newShareCode","randomCharacters","charactersLength","random","add","articleName","publication","t0","validUrl","_unused","navMenusArticleShareUI","_ref4","_callee6","sharesRemainingNumber","digisubsReady","desktopDropDown","digisubsPushNav","pageTypeCheck","shareDropDown","faqUrl","faqLink","articleShareCount","_context6","insertAdjacentHTML","article_config","article_sharing_faq","setArticleShareIcon","fillColor","shareIcn","getComputedStyle","backgroundColor","getPropertyValue","svg","property","style","background","resetBoxPosition","contains","setupArticleSharingUI","_ref5","_callee9","subscriber","_ref6","_ref8","svgProperty","popupToggle","shareLinkText","closeShareBox","closeEvent","createShareButton","shareButtonLocations","dropdownTitle","mobileDropdown","_context9","_x8","openedBox","box","getArticlesLeftAPI","shareBtn","isOpen","toggle","popup","cancelButtonLabel","childNodes","nodeValue","copyLink","_ref7","btnClosest","closest","closestStickyNav","closestTitleContainer","closestBottomContainer","_x9","locations","articleTitle","map","loc","shareLi","className","append","loadingShareIcn","display","fbBtnCheck","shareBtnStyles","shareScreenReader","appendChild","shareBox","shareBoxArticleTitle","shareBoxTitle","shareRemainingText","hostDomain","desktopShareButtons","desktopCloseArticleShareBox","articleShareCancelButton","copyShareLinkOnClient","filter","click","_x10","_ref9","_callee10","copyShareLink","numLeft","_context10","sharedCode","clipboard","writeText","checkFreeArticleCode","_ref10","_error2","getURLParams","queryString","urlShareCode","articleShareConvo","articleShare","getAll","sharedTimestamp","shareLinkTime","shareExpiration","setDate","getDate","currentTime","getTime","_x11","_x12","_x13","init","_ref11","_callee13","_yield$authentication2","checkPageType","_context13","shareBoxes","scrollY","sharingBottom","sharingTop","offsetTop","scrollHeight","isAuthenticated","isUserSubscriber","ev"],"sourceRoot":"webpack://"}