{"version":3,"file":"mediaQueries.6b206e9d.js","sources":["../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/baggage.js","../../../node_modules/@sentry/browser/node_modules/@sentry/utils/esm/tracing.js","../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/tracing/utils.js","../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/tracing/errors.js","../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/tracing/span.js","../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/tracing/transaction.js","../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/tracing/idletransaction.js","../../../node_modules/@sentry/browser/node_modules/@sentry/core/esm/tracing/hubextensions.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/types.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/request.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/router.js","../../../node_modules/@sentry/browser/node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","../../../node_modules/url-polyfill/url-polyfill.js","../../../node_modules/performance-now/lib/performance-now.js","../../../node_modules/raf/index.js","../../../node_modules/raf/polyfill.js","../../../node_modules/proxy-polyfill/proxy.min.js","../../../node_modules/resolve-pathname/esm/resolve-pathname.js","../../../node_modules/value-equal/esm/value-equal.js","../../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../../../node_modules/history/esm/history.js","../../../node_modules/mini-create-react-context/dist/esm/index.js","../../../node_modules/isarray/index.js","../../../node_modules/react-router/node_modules/path-to-regexp/index.js","../../../node_modules/react-router/esm/react-router.js","../../../node_modules/react-router-dom/esm/react-router-dom.js","../../../node_modules/void-elements/index.js","../../../node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","../../../node_modules/react-i18next/dist/es/Trans.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/is.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/worldwide.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/browser.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/logger.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/object.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/stacktrace.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/supports.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/vendor/supportsHistory.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/instrument.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/memo.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/misc.js","../../../node_modules/@sentry/integrations/node_modules/@sentry/utils/esm/normalize.js","../../../node_modules/@sentry/integrations/esm/extraerrordata.js","../../../node_modules/@sentry/integrations/esm/httpclient.js","../../../frontend/api/rest/projects.js","../../../frontend/features/common/hooks/useGoogleTracking.js","../../../frontend/features/common/components/ScrollToTop/index.js","../../../frontend/features/common/components/NotFoundPageContainer/index.js","../../../node_modules/lodash.camelcase/index.js","../../../frontend/features/header/components/HeaderSignIn/index.js","../../../node_modules/jwt-decode/build/jwt-decode.esm.js","../../../frontend/features/header/components/HeaderSignOut/index.js","../../../frontend/features/common/components/LocaleSelector/index.js","../../../frontend/features/common/components/Logo/index.js","../../../frontend/features/common/components/NextDoorIcon/index.js","../../../frontend/features/common/components/SocialShareLinks/index.js","../../../frontend/features/common/components/SocialShareToolbar/index.js","../../../frontend/features/header/components/Header/index.js","../../../frontend/features/common/components/Footer/index.js","../../../frontend/features/common/components/SocialLink/index.js","../../../frontend/features/common/components/SocialFooter/index.js","../../../node_modules/react-responsive/dist/react-responsive.js","../../../frontend/features/common/utils/mediaQueries.js"],"sourcesContent":["import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nconst BAGGAGE_HEADER_NAME = 'baggage';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n // Very liberal definition of what any incoming header might look like\n baggageHeader,\n) {\n if (!isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return undefined;\n }\n\n // Intermediary object to store baggage key value pairs of incoming baggage headers on.\n // It is later used to read Sentry-DSC-values from.\n let baggageObject = {};\n\n if (Array.isArray(baggageHeader)) {\n // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n baggageObject = baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n return {\n ...acc,\n ...currBaggageObject,\n };\n }, {});\n } else {\n // Return undefined if baggage header is an empty string (technically an empty baggage header is not spec conform but\n // this is how we choose to handle it)\n if (!baggageHeader) {\n return undefined;\n }\n\n baggageObject = baggageHeaderToObject(baggageHeader);\n }\n\n // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n\n // Only return a dynamic sampling context object if there are keys in it.\n // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext ;\n } else {\n return undefined;\n }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n // this also takes undefined for convenience and bundle size in other places\n dynamicSamplingContext,\n) {\n if (!dynamicSamplingContext) {\n return undefined;\n }\n\n // Prefix all DSC keys with \"sentry-\" and put them into a new object\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {},\n );\n\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader\n .split(',')\n .map(baggageEntry => baggageEntry.split('=').map(keyOrValue => decodeURIComponent(keyOrValue.trim())))\n .reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n // An empty baggage header is not spec compliant: We return undefined.\n return undefined;\n }\n\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, '');\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { uuid4 } from './misc.js';\n\nconst TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n if (!traceparent) {\n return undefined;\n }\n\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (!matches) {\n return undefined;\n }\n\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n}\n\n/**\n * Create tracing context from incoming headers.\n */\nfunction tracingContextFromHeaders(\n sentryTrace,\n baggage,\n)\n\n {\n const traceparentData = extractTraceparentData(sentryTrace);\n const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n const { traceId, parentSpanId, parentSampled } = traceparentData || {};\n\n const propagationContext = {\n traceId: traceId || uuid4(),\n spanId: uuid4().substring(16),\n sampled: parentSampled,\n };\n\n if (parentSpanId) {\n propagationContext.parentSpanId = parentSpanId;\n }\n\n if (dynamicSamplingContext) {\n propagationContext.dsc = dynamicSamplingContext ;\n }\n\n return {\n traceparentData,\n dynamicSamplingContext,\n propagationContext,\n };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n traceId = uuid4(),\n spanId = uuid4().substring(16),\n sampled,\n) {\n let sampledString = '';\n if (sampled !== undefined) {\n sampledString = sampled ? '-1' : '-0';\n }\n return `${traceId}-${spanId}${sampledString}`;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, tracingContextFromHeaders };\n//# sourceMappingURL=tracing.js.map\n","import { getCurrentHub } from '../hub.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n//# sourceMappingURL=hasTracingEnabled.js.map\n","import { getCurrentHub } from '../hub.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope.getTransaction() ;\n}\n\nexport { getActiveTransaction };\n//# sourceMappingURL=utils.js.map\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { uuid4, timestampInSeconds, logger, generateSentryTraceHeader, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n\n constructor(maxlen = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Internal keeper of the status\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * Timestamp in seconds when the span was created.\n */\n\n /**\n * Timestamp in seconds when the span ended.\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n /**\n * List of spans that were finalized\n */\n\n /**\n * @inheritDoc\n */\n\n /**\n * The instrumenter that created this span.\n */\n\n /**\n * The origin of the span, giving context about what created the span.\n */\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext = {}) {\n this.traceId = spanContext.traceId || uuid4();\n this.spanId = spanContext.spanId || uuid4().substring(16);\n this.startTimestamp = spanContext.startTimestamp || timestampInSeconds();\n this.tags = spanContext.tags || {};\n this.data = spanContext.data || {};\n this.instrumenter = spanContext.instrumenter || 'sentry';\n this.origin = spanContext.origin || 'manual';\n\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.name) {\n this.description = spanContext.name;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /** An alias for `description` of the Span. */\n get name() {\n return this.description || '';\n }\n /** Update the name of the span. */\n set name(name) {\n this.setName(name);\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = childSpan.transaction.name || '< unknown name >';\n const idStr = childSpan.transaction.spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n this.setData('http.response.status_code', httpStatus);\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setName(name) {\n this.description = name;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n return generateSentryTraceHeader(this.traceId, this.spanId, this.sampled);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = spanContext.data || {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId || this.spanId;\n this.startTimestamp = spanContext.startTimestamp || this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags || {};\n this.traceId = spanContext.traceId || this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext() {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n origin: this.origin,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { logger, dropUndefinedKeys } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\nimport { getDynamicSamplingContextFromClient } from './dynamicSamplingContext.js';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n\n /**\n * The reference to the current hub.\n */\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);\n // We need to delete description since it's set by the Span class constructor\n // but not needed for transactions.\n delete this.description;\n\n this._measurements = {};\n this._contexts = {};\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n source: 'custom',\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this.metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` as custom */\n set name(newName) {\n this.setName(newName);\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n this._name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const metadata = this.metadata;\n\n const transaction = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n dynamicSamplingContext: this.getDynamicSamplingContext(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name || '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getDynamicSamplingContext() {\n if (this._frozenDynamicSamplingContext) {\n return this._frozenDynamicSamplingContext;\n }\n\n const hub = this._hub || getCurrentHub();\n const client = hub.getClient();\n\n if (!client) return {};\n\n const scope = hub.getScope();\n const dsc = getDynamicSamplingContextFromClient(this.traceId, client, scope);\n\n const maybeSampleRate = this.metadata.sampleRate;\n if (maybeSampleRate !== undefined) {\n dsc.sample_rate = `${maybeSampleRate}`;\n }\n\n // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n const source = this.metadata.source;\n if (source && source !== 'url') {\n dsc.transaction = this.name;\n }\n\n if (this.sampled !== undefined) {\n dsc.sampled = String(this.sampled);\n }\n\n // Uncomment if we want to make DSC immutable\n // this._frozenDynamicSamplingContext = dsc;\n\n return dsc;\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n setHub(hub) {\n this._hub = hub;\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { logger, timestampInSeconds } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId; }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampInSeconds();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n\n // Track state of activities in previous heartbeat\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n\n // We should not use heartbeat if we finished a transaction\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = TRACING_DEFAULTS.finalTimeout,\n _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._restartIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampInSeconds()) {\n this._finished = true;\n this.activities = {};\n\n if (this.op === 'ui.action.click') {\n this.setTag(FINISH_REASON_TAG, this._finishReason);\n }\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const spanStartedBeforeTransactionFinish = span.startTimestamp < endTimestamp;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = span.endTimestamp - this.startTimestamp < timeoutWithMarginOfError;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n const scope = this._idleHub.getScope();\n if (scope.getTransaction() === this) {\n scope.setSpan(undefined);\n }\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n const pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n cancelIdleTimeout(\n endTimestamp,\n {\n restartOnChildSpanChange,\n }\n\n = {\n restartOnChildSpanChange: true,\n },\n ) {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n setFinishReason(reason) {\n this._finishReason = reason;\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n _restartIdleTimeout(endTimestamp) {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.finish(endTimestamp);\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\nexport { IdleTransaction, IdleTransactionSpanRecorder, TRACING_DEFAULTS };\n//# sourceMappingURL=idletransaction.js.map\n","import { logger, isNaN } from '@sentry/utils';\nimport { getMainCarrier } from '../hub.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n const scope = this.getScope();\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': span.toTraceparent(),\n }\n : {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n sampleRate: Number(transaction.sampled),\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n sampleRate: Number(sampleRate),\n });\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setMetadata({\n sampleRate,\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n\n transactionContext,\n customSamplingContext,\n) {\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n transactionContext.sampled = false;\n }\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n heartbeatInterval,\n) {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, heartbeatInterval, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nfunction addTracingExtensions() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n\nexport { addTracingExtensions, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { logger } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (WINDOW && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() ;\n if (WINDOW.document.hidden && activeTransaction) {\n const statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n }\n }\n return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if (WINDOW.document.prerendering || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (onReport) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { getActiveTransaction } from '@sentry/core';\nimport { browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { WINDOW } from '../types.js';\nimport { onCLS } from '../web-vitals/getCLS.js';\nimport { onFID } from '../web-vitals/getFID.js';\nimport { onLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\nfunction getBrowserPerformanceAPI() {\n // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n return WINDOW && WINDOW.addEventListener && WINDOW.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n *\n * @returns A function that forces web vitals collection\n */\nfunction startTrackingWebVitals() {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n // @ts-expect-error we want to make sure all of these are available, even if TS is sure they are\n if (performance.mark) {\n WINDOW.performance.mark('sentry-tracing-init');\n }\n _trackFID();\n const clsCallback = _trackCLS();\n const lcpCallback = _trackLCP();\n\n return () => {\n if (clsCallback) {\n clsCallback();\n }\n if (lcpCallback) {\n lcpCallback();\n }\n };\n }\n\n return () => undefined;\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n origin: 'auto.ui.browser.metrics',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n };\n\n observe('longtask', entryHandler);\n}\n\n/**\n * Start tracking interaction events.\n */\nfunction startTrackingInteractions() {\n const entryHandler = (entries) => {\n for (const entry of entries) {\n const transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n\n if (entry.name === 'click') {\n const startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n const duration = msToSec(entry.duration);\n\n transaction.startChild({\n description: htmlTreeAsString(entry.target),\n op: `ui.interaction.${entry.name}`,\n origin: 'auto.ui.browser.metrics',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n }\n }\n };\n\n observe('event', entryHandler, { durationThreshold: 0 });\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n return onCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP() {\n return onLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n });\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n onFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin );\n const startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !WINDOW.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name ).replace(WINDOW.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n const fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'ui.action',\n origin: 'auto.ui.browser.metrics',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n origin: 'auto.resource.browser.metrics',\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n const end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n const start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: description || event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n origin: 'auto.browser.browser.metrics',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = {};\n if ('transferSize' in entry) {\n data['http.response_transfer_size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['http.response_content_length'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['http.decoded_response_content_length'] = entry.decodedBodySize;\n }\n if ('renderBlockingStatus' in entry) {\n data['resource.render_blocking_status'] = entry.renderBlockingStatus;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource.other',\n origin: 'auto.resource.browser.metrics',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n const navigator = WINDOW.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingInteractions, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { hasTracingEnabled, getCurrentHub, getDynamicSamplingContextFromClient } from '@sentry/core';\nimport { addInstrumentationHandler, browserPerformanceTimeOrigin, generateSentryTraceHeader, dynamicSamplingContextToSentryBaggageHeader, isInstanceOf, BAGGAGE_HEADER_NAME, SENTRY_XHR_DATA_KEY, stringMatchesSomePattern } from '@sentry/utils';\n\n/* eslint-disable max-lines */\n\nconst DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\\/(?!\\/)/];\n\n/** Options for Request Instrumentation */\n\nconst defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n enableHTTPTimings: true,\n // TODO (v8): Remove this property\n tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,\n tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const {\n traceFetch,\n traceXHR,\n // eslint-disable-next-line deprecation/deprecation\n tracePropagationTargets,\n // eslint-disable-next-line deprecation/deprecation\n tracingOrigins,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n } = {\n traceFetch: defaultRequestInstrumentationOptions.traceFetch,\n traceXHR: defaultRequestInstrumentationOptions.traceXHR,\n ..._options,\n };\n\n const shouldCreateSpan =\n typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;\n\n // TODO(v8) Remove tracingOrigins here\n // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported\n // and we don't want to break the API. We can remove it in v8.\n const shouldAttachHeadersWithTargets = (url) =>\n shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);\n\n const spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n const createdSpan = fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n const createdSpan = xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);\n if (enableHTTPTimings && createdSpan) {\n addHTTPTimings(createdSpan);\n }\n });\n }\n}\n\nfunction isPerformanceResourceTiming(entry) {\n return (\n entry.entryType === 'resource' &&\n 'initiatorType' in entry &&\n typeof (entry ).nextHopProtocol === 'string' &&\n (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest')\n );\n}\n\n/**\n * Creates a temporary observer to listen to the next fetch/xhr resourcing timings,\n * so that when timings hit their per-browser limit they don't need to be removed.\n *\n * @param span A span that has yet to be finished, must contain `url` on data.\n */\nfunction addHTTPTimings(span) {\n const url = span.data.url;\n const observer = new PerformanceObserver(list => {\n const entries = list.getEntries();\n entries.forEach(entry => {\n if (isPerformanceResourceTiming(entry) && entry.name.endsWith(url)) {\n const spanData = resourceTimingEntryToSpanData(entry);\n spanData.forEach(data => span.setData(...data));\n observer.disconnect();\n }\n });\n });\n observer.observe({\n entryTypes: ['resource'],\n });\n}\n\n/**\n * Converts ALPN protocol ids to name and version.\n *\n * (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids)\n * @param nextHopProtocol PerformanceResourceTiming.nextHopProtocol\n */\nfunction extractNetworkProtocol(nextHopProtocol) {\n let name = 'unknown';\n let version = 'unknown';\n let _name = '';\n for (const char of nextHopProtocol) {\n // http/1.1 etc.\n if (char === '/') {\n [name, version] = nextHopProtocol.split('/');\n break;\n }\n // h2, h3 etc.\n if (!isNaN(Number(char))) {\n name = _name === 'h' ? 'http' : _name;\n version = nextHopProtocol.split(_name)[1];\n break;\n }\n _name += char;\n }\n if (_name === nextHopProtocol) {\n // webrtc, ftp, etc.\n name = _name;\n }\n return { name, version };\n}\n\nfunction getAbsoluteTime(time = 0) {\n return ((browserPerformanceTimeOrigin || performance.timeOrigin) + time) / 1000;\n}\n\nfunction resourceTimingEntryToSpanData(resourceTiming) {\n const { name, version } = extractNetworkProtocol(resourceTiming.nextHopProtocol);\n\n const timingSpanData = [];\n\n timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);\n\n if (!browserPerformanceTimeOrigin) {\n return timingSpanData;\n }\n return [\n ...timingSpanData,\n ['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],\n ['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],\n ['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],\n ['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],\n ['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],\n ['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],\n ['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],\n ['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],\n ['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],\n ['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],\n ];\n}\n\n/**\n * A function that determines whether to attach tracing headers to a request.\n * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.\n * We only export this fuction for testing purposes.\n */\nfunction shouldAttachHeaders(url, tracePropagationTargets) {\n return stringMatchesSomePattern(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);\n}\n\n/**\n * Create and track fetch request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n if (!hasTracingEnabled() || !handlerData.fetchData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(handlerData.fetchData.url);\n\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n\n const contentLength =\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n handlerData.response && handlerData.response.headers && handlerData.response.headers.get('content-length');\n\n const contentLengthNum = parseInt(contentLength);\n if (contentLengthNum > 0) {\n span.setData('http.response_content_length', contentLengthNum);\n }\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n const parentSpan = scope.getSpan();\n\n const { method, url } = handlerData.fetchData;\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n url,\n type: 'fetch',\n 'http.method': method,\n },\n description: `${method} ${url}`,\n op: 'http.client',\n origin: 'auto.http.browser',\n })\n : undefined;\n\n if (span) {\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n }\n\n if (shouldAttachHeaders(handlerData.fetchData.url) && client) {\n const request = handlerData.args[0];\n\n // In case the user hasn't set the second argument of a fetch call we default it to `{}`.\n handlerData.args[1] = handlerData.args[1] || {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = handlerData.args[1];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n options.headers = addTracingHeadersToFetchRequest(request, client, scope, options, span);\n }\n\n return span;\n}\n\n/**\n * Adds sentry-trace and baggage headers to the various forms of fetch headers\n */\nfunction addTracingHeadersToFetchRequest(\n request, // unknown is actually type Request but we can't export DOM types from this package,\n client,\n scope,\n options\n\n,\n requestSpan,\n) {\n const span = requestSpan || scope.getSpan();\n\n const transaction = span && span.transaction;\n\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n\n const sentryTraceHeader = span ? span.toTraceparent() : generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext = transaction\n ? transaction.getDynamicSamplingContext()\n : dsc\n ? dsc\n : getDynamicSamplingContextFromClient(traceId, client, scope);\n\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n\n const headers =\n typeof Request !== 'undefined' && isInstanceOf(request, Request) ? (request ).headers : options.headers;\n\n if (!headers) {\n return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };\n } else if (typeof Headers !== 'undefined' && isInstanceOf(headers, Headers)) {\n const newHeaders = new Headers(headers );\n\n newHeaders.append('sentry-trace', sentryTraceHeader);\n\n if (sentryBaggageHeader) {\n // If the same header is appended multiple times the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n\n return newHeaders ;\n } else if (Array.isArray(headers)) {\n const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];\n\n if (sentryBaggageHeader) {\n // If there are multiple entries with the same key, the browser will merge the values into a single request header.\n // Its therefore safe to simply push a \"baggage\" entry, even though there might already be another baggage header.\n newHeaders.push([BAGGAGE_HEADER_NAME, sentryBaggageHeader]);\n }\n\n return newHeaders ;\n } else {\n const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;\n const newBaggageHeaders = [];\n\n if (Array.isArray(existingBaggageHeader)) {\n newBaggageHeaders.push(...existingBaggageHeader);\n } else if (existingBaggageHeader) {\n newBaggageHeaders.push(existingBaggageHeader);\n }\n\n if (sentryBaggageHeader) {\n newBaggageHeaders.push(sentryBaggageHeader);\n }\n\n return {\n ...(headers ),\n 'sentry-trace': sentryTraceHeader,\n baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,\n };\n }\n}\n\n/**\n * Create and track xhr request spans\n *\n * @returns Span if a span was created, otherwise void.\n */\n// eslint-disable-next-line complexity\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n shouldAttachHeaders,\n spans,\n) {\n const xhr = handlerData.xhr;\n const sentryXhrData = xhr && xhr[SENTRY_XHR_DATA_KEY];\n\n if (!hasTracingEnabled() || (xhr && xhr.__sentry_own_request__) || !xhr || !sentryXhrData) {\n return undefined;\n }\n\n const shouldCreateSpanResult = shouldCreateSpan(sentryXhrData.url);\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp && shouldCreateSpanResult) {\n const spanId = xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(sentryXhrData.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return undefined;\n }\n\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const parentSpan = scope.getSpan();\n\n const span =\n shouldCreateSpanResult && parentSpan\n ? parentSpan.startChild({\n data: {\n ...sentryXhrData.data,\n type: 'xhr',\n 'http.method': sentryXhrData.method,\n url: sentryXhrData.url,\n },\n description: `${sentryXhrData.method} ${sentryXhrData.url}`,\n op: 'http.client',\n origin: 'auto.http.browser',\n })\n : undefined;\n\n if (span) {\n xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[xhr.__sentry_xhr_span_id__] = span;\n }\n\n if (xhr.setRequestHeader && shouldAttachHeaders(sentryXhrData.url)) {\n if (span) {\n const transaction = span && span.transaction;\n const dynamicSamplingContext = transaction && transaction.getDynamicSamplingContext();\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, span.toTraceparent(), sentryBaggageHeader);\n } else {\n const client = hub.getClient();\n const { traceId, sampled, dsc } = scope.getPropagationContext();\n const sentryTraceHeader = generateSentryTraceHeader(traceId, undefined, sampled);\n const dynamicSamplingContext =\n dsc || (client ? getDynamicSamplingContextFromClient(traceId, client, scope) : undefined);\n const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);\n setHeaderOnXhr(xhr, sentryTraceHeader, sentryBaggageHeader);\n }\n }\n\n return span;\n}\n\nfunction setHeaderOnXhr(\n xhr,\n sentryTraceHeader,\n sentryBaggageHeader,\n) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader('sentry-trace', sentryTraceHeader);\n if (sentryBaggageHeader) {\n // From MDN: \"If this method is called several times with the same header, the values are merged into one single request header.\"\n // We can therefore simply set a baggage header without checking what was there before\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n xhr.setRequestHeader(BAGGAGE_HEADER_NAME, sentryBaggageHeader);\n }\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n}\n\nexport { DEFAULT_TRACE_PROPAGATION_TARGETS, addTracingHeadersToFetchRequest, defaultRequestInstrumentationOptions, extractNetworkProtocol, fetchCallback, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { logger, browserPerformanceTimeOrigin, addInstrumentationHandler } from '@sentry/utils';\nimport { WINDOW } from './types.js';\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!WINDOW || !WINDOW.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = WINDOW.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n // pageload should always start at timeOrigin (and needs to be in s, not ms)\n startTimestamp: browserPerformanceTimeOrigin ? browserPerformanceTimeOrigin / 1000 : undefined,\n op: 'pageload',\n origin: 'auto.pageload.browser',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: WINDOW.location.pathname,\n op: 'navigation',\n origin: 'auto.navigation.browser',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { TRACING_DEFAULTS, addTracingExtensions, startIdleTransaction, getActiveTransaction } from '@sentry/core';\nimport { logger, tracingContextFromHeaders, getDomElement } from '@sentry/utils';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, startTrackingInteractions, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\nimport { WINDOW } from './types.js';\n\nconst BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n ...TRACING_DEFAULTS,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n enableLongTask: true,\n _experiments: {},\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n\n /**\n * @inheritDoc\n */\n\n constructor(_options) {\n this.name = BROWSER_TRACING_INTEGRATION_ID;\n this._hasSetTracePropagationTargets = false;\n\n addTracingExtensions();\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n this._hasSetTracePropagationTargets = !!(\n _options &&\n // eslint-disable-next-line deprecation/deprecation\n (_options.tracePropagationTargets || _options.tracingOrigins)\n );\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n };\n\n // Special case: enableLongTask can be set in _experiments\n // TODO (v8): Remove this in v8\n if (this.options._experiments.enableLongTask !== undefined) {\n this.options.enableLongTask = this.options._experiments.enableLongTask;\n }\n\n // TODO (v8): remove this block after tracingOrigins is removed\n // Set tracePropagationTargets to tracingOrigins if specified by the user\n // In case both are specified, tracePropagationTargets takes precedence\n // eslint-disable-next-line deprecation/deprecation\n if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {\n // eslint-disable-next-line deprecation/deprecation\n this.options.tracePropagationTargets = _options.tracingOrigins;\n }\n\n this._collectWebVitals = startTrackingWebVitals();\n if (this.options.enableLongTask) {\n startTrackingLongTasks();\n }\n if (this.options._experiments.enableInteractions) {\n startTrackingInteractions();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n const hub = getCurrentHub();\n const client = hub.getClient();\n const clientOptions = client && client.getOptions();\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n _experiments,\n } = this.options;\n\n const clientOptionsTracePropagationTargets = clientOptions && clientOptions.tracePropagationTargets;\n // There are three ways to configure tracePropagationTargets:\n // 1. via top level client option `tracePropagationTargets`\n // 2. via BrowserTracing option `tracePropagationTargets`\n // 3. via BrowserTracing option `tracingOrigins` (deprecated)\n //\n // To avoid confusion, favour top level client option `tracePropagationTargets`, and fallback to\n // BrowserTracing option `tracePropagationTargets` and then `tracingOrigins` (deprecated).\n // This is done as it minimizes bundle size (we don't have to have undefined checks).\n //\n // If both 1 and either one of 2 or 3 are set (from above), we log out a warning.\n // eslint-disable-next-line deprecation/deprecation\n const tracePropagationTargets = clientOptionsTracePropagationTargets || this.options.tracePropagationTargets;\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._hasSetTracePropagationTargets && clientOptionsTracePropagationTargets) {\n logger.warn(\n '[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.',\n );\n }\n\n instrumentRouting(\n (context) => {\n const transaction = this._createRouteTransaction(context);\n\n this.options._experiments.onStartRouteTransaction &&\n this.options._experiments.onStartRouteTransaction(transaction, context, getCurrentHub);\n\n return transaction;\n },\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n if (_experiments.enableInteractions) {\n this._registerInteractionListener();\n }\n\n instrumentOutgoingRequests({\n traceFetch,\n traceXHR,\n tracePropagationTargets,\n shouldCreateSpanForRequest,\n enableHTTPTimings,\n });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n\n const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n\n const isPageloadTransaction = context.op === 'pageload';\n\n const sentryTrace = isPageloadTransaction ? getMetaContent('sentry-trace') : '';\n const baggage = isPageloadTransaction ? getMetaContent('baggage') : '';\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n const expandedContext = {\n ...context,\n ...traceparentData,\n metadata: {\n ...context.metadata,\n dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,\n },\n trimEnd: true,\n };\n\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n this._latestRouteName = finalContext.name;\n this._latestRouteSource = finalContext.metadata && finalContext.metadata.source;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const { location } = WINDOW;\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n\n const scope = hub.getScope();\n\n // If it's a pageload and there is a meta tag set\n // use the traceparentData as the propagation context\n if (isPageloadTransaction && traceparentData) {\n scope.setPropagationContext(propagationContext);\n } else {\n // Navigation transactions should set a new propagation context based on the\n // created idle transaction.\n scope.setPropagationContext({\n traceId: idleTransaction.traceId,\n spanId: idleTransaction.spanId,\n parentSpanId: idleTransaction.parentSpanId,\n sampled: idleTransaction.sampled,\n });\n }\n\n idleTransaction.registerBeforeFinishCallback(transaction => {\n this._collectWebVitals();\n addPerformanceEntries(transaction);\n });\n\n return idleTransaction ;\n }\n\n /** Start listener for interaction transactions */\n _registerInteractionListener() {\n let inflightInteractionTransaction;\n const registerInteractionTransaction = () => {\n const { idleTimeout, finalTimeout, heartbeatInterval } = this.options;\n const op = 'ui.action.click';\n\n const currentTransaction = getActiveTransaction();\n if (currentTransaction && currentTransaction.op && ['navigation', 'pageload'].includes(currentTransaction.op)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`,\n );\n return undefined;\n }\n\n if (inflightInteractionTransaction) {\n inflightInteractionTransaction.setFinishReason('interactionInterrupted');\n inflightInteractionTransaction.finish();\n inflightInteractionTransaction = undefined;\n }\n\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n if (!this._latestRouteName) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);\n return undefined;\n }\n\n const hub = this._getCurrentHub();\n const { location } = WINDOW;\n\n const context = {\n name: this._latestRouteName,\n op,\n trimEnd: true,\n metadata: {\n source: this._latestRouteSource || 'url',\n },\n };\n\n inflightInteractionTransaction = startIdleTransaction(\n hub,\n context,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n heartbeatInterval,\n );\n };\n\n ['click'].forEach(type => {\n addEventListener(type, registerInteractionTransaction, { once: false, capture: true });\n });\n }\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n const metaTag = getDomElement(`meta[name=${metaName}]`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return metaTag ? metaTag.getAttribute('content') : undefined;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","require('./').polyfill()\n","(function(){function n(){function v(){return null}function l(a){return a?\"object\"===typeof a||\"function\"===typeof a:!1}function p(a){if(null!==a&&!l(a))throw new TypeError(\"Object prototype may only be an Object or null: \"+a);}var q=null,e=Object,w=!!e.create||!({__proto__:null}instanceof e),A=e.create||(w?function(a){p(a);return{__proto__:a}}:function(a){function c(){}p(a);if(null===a)throw new SyntaxError(\"Native Object.create is required to create objects with null prototype\");c.prototype=a;return new c}),\nB=e.getPrototypeOf||([].__proto__===Array.prototype?function(a){a=a.__proto__;return l(a)?a:null}:v);var m=function(a,c){function k(){}if(void 0===(this&&this instanceof m?this.constructor:void 0))throw new TypeError(\"Constructor Proxy requires 'new'\");if(!l(a)||!l(c))throw new TypeError(\"Cannot create proxy with a non-object as target or handler\");q=function(){a=null;k=function(b){throw new TypeError(\"Cannot perform '\"+b+\"' on a proxy that has been revoked\");}};setTimeout(function(){q=null},0);var g=\nc;c={get:null,set:null,apply:null,construct:null};for(var h in g){if(!(h in c))throw new TypeError(\"Proxy polyfill does not support trap '\"+h+\"'\");c[h]=g[h]}\"function\"===typeof g&&(c.apply=g.apply.bind(g));g=B(a);var r=!1,t=!1;if(\"function\"===typeof a){var f=function(){var b=this&&this.constructor===f,d=Array.prototype.slice.call(arguments);k(b?\"construct\":\"apply\");return b&&c.construct?c.construct.call(this,a,d):!b&&c.apply?c.apply(a,this,d):b?(d.unshift(a),new (a.bind.apply(a,d))):a.apply(this,\nd)};r=!0}else a instanceof Array?(f=[],t=!0):f=w||null!==g?A(g):{};var x=c.get?function(b){k(\"get\");return c.get(this,b,f)}:function(b){k(\"get\");return this[b]},C=c.set?function(b,d){k(\"set\");c.set(this,b,d,f)}:function(b,d){k(\"set\");this[b]=d},y={};e.getOwnPropertyNames(a).forEach(function(b){if(!((r||t)&&b in f)){var d=e.getOwnPropertyDescriptor(a,b);e.defineProperty(f,b,{enumerable:!!d.enumerable,get:x.bind(a,b),set:C.bind(a,b)});y[b]=!0}});h=!0;if(r||t){var D=e.setPrototypeOf||([].__proto__===\nArray.prototype?function(b,d){p(d);b.__proto__=d;return b}:v);g&&D(f,g)||(h=!1)}if(c.get||!h)for(var u in a)y[u]||e.defineProperty(f,u,{get:x.bind(a,u)});e.seal(a);e.seal(f);return f};m.revocable=function(a,c){return{proxy:new m(a,c),revoke:q}};return m};var z=\"undefined\"!==typeof process&&\"[object process]\"==={}.toString.call(process)||\"undefined\"!==typeof navigator&&\"ReactNative\"===navigator.product?global:self;z.Proxy||(z.Proxy=n(),z.Proxy.revocable=z.Proxy.revocable);})();\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar historyContext = /*#__PURE__*/createNamedContext(\"Router-History\");\n\nvar context = /*#__PURE__*/createNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n }, /*#__PURE__*/React.createElement(historyContext.Provider, {\n children: this.props.children || null,\n value: this.props.history\n }));\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? /*#__PURE__*/React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false) ;\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return /*#__PURE__*/React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && /*#__PURE__*/React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? /*#__PURE__*/React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n\n return useContext(historyContext);\n}\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n\n return useContext(context).location;\n}\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n\n var match = useContext(context).match;\n return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n\n var location = useLocation();\n var match = useContext(context).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation, createPath } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return /*#__PURE__*/React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n var method = replace || isDuplicateNavigation ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(component, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = typeof classNameProp === \"function\" ? classNameProp(isActive) : classNameProp;\n var style = typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = _extends({}, style, activeStyle);\n }\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\", \"false\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"format\"],\n _excluded2 = [\"children\", \"count\", \"parent\", \"i18nKey\", \"context\", \"tOptions\", \"values\", \"defaults\", \"components\", \"ns\", \"i18n\", \"t\", \"shouldUnescape\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useContext, isValidElement, cloneElement, createElement } from 'react';\nimport HTML from 'html-parse-stringify';\nimport { getI18n, I18nContext, getDefaults } from './context';\nimport { warn, warnOnce } from './utils';\n\nfunction hasChildren(node, checkLength) {\n if (!node) return false;\n var base = node.props ? node.props.children : node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n}\n\nfunction getChildren(node) {\n if (!node) return [];\n return node && node.children ? node.children : node.props && node.props.children;\n}\n\nfunction hasValidReactChildren(children) {\n if (Object.prototype.toString.call(children) !== '[object Array]') return false;\n return children.every(function (child) {\n return isValidElement(child);\n });\n}\n\nfunction getAsArray(data) {\n return Array.isArray(data) ? data : [data];\n}\n\nfunction mergeProps(source, target) {\n var newTarget = _objectSpread({}, target);\n\n newTarget.props = Object.assign(source.props, target.props);\n return newTarget;\n}\n\nexport function nodesToString(children, i18nOptions) {\n if (!children) return '';\n var stringNode = '';\n var childrenArray = getAsArray(children);\n var keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];\n childrenArray.forEach(function (child, childIndex) {\n if (typeof child === 'string') {\n stringNode += \"\".concat(child);\n } else if (isValidElement(child)) {\n var childPropsCount = Object.keys(child.props).length;\n var shouldKeepChild = keepArray.indexOf(child.type) > -1;\n var childChildren = child.props.children;\n\n if (!childChildren && shouldKeepChild && childPropsCount === 0) {\n stringNode += \"<\".concat(child.type, \"/>\");\n } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {\n stringNode += \"<\".concat(childIndex, \">\");\n } else if (child.props.i18nIsDynamicList) {\n stringNode += \"<\".concat(childIndex, \">\");\n } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {\n stringNode += \"<\".concat(child.type, \">\").concat(childChildren, \"\");\n } else {\n var content = nodesToString(childChildren, i18nOptions);\n stringNode += \"<\".concat(childIndex, \">\").concat(content, \"\");\n }\n } else if (child === null) {\n warn(\"Trans: the passed in value is invalid - seems you passed in a null child.\");\n } else if (_typeof(child) === 'object') {\n var format = child.format,\n clone = _objectWithoutProperties(child, _excluded);\n\n var keys = Object.keys(clone);\n\n if (keys.length === 1) {\n var value = format ? \"\".concat(keys[0], \", \").concat(format) : keys[0];\n stringNode += \"{{\".concat(value, \"}}\");\n } else {\n warn(\"react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.\", child);\n }\n } else {\n warn(\"Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.\", child);\n }\n });\n return stringNode;\n}\n\nfunction renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {\n if (targetString === '') return [];\n var keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n var emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.join('|')).test(targetString);\n if (!children && !emptyChildrenButNeedsHandling) return [targetString];\n var data = {};\n\n function getData(childs) {\n var childrenArray = getAsArray(childs);\n childrenArray.forEach(function (child) {\n if (typeof child === 'string') return;\n if (hasChildren(child)) getData(getChildren(child));else if (_typeof(child) === 'object' && !isValidElement(child)) Object.assign(data, child);\n });\n }\n\n getData(children);\n var ast = HTML.parse(\"<0>\".concat(targetString, \"\"));\n\n var opts = _objectSpread(_objectSpread({}, data), combinedTOpts);\n\n function renderInner(child, node, rootReactNode) {\n var childs = getChildren(child);\n var mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 ? childs : mappedChildren;\n }\n\n function pushTranslatedJSX(child, inner, mem, i, isVoid) {\n if (child.dummy) child.children = inner;\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), isVoid ? undefined : inner));\n }\n\n function mapAST(reactNode, astNode, rootReactNode) {\n var reactNodes = getAsArray(reactNode);\n var astNodes = getAsArray(astNode);\n return astNodes.reduce(function (mem, node, i) {\n var translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n\n if (node.type === 'tag') {\n var tmp = reactNodes[parseInt(node.name, 10)];\n if (!tmp && rootReactNode.length === 1 && rootReactNode[0][node.name]) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n var child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n props: node.attrs\n }, tmp) : tmp;\n var isElement = isValidElement(child);\n var isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n var isEmptyTransWithHTML = emptyChildrenButNeedsHandling && _typeof(child) === 'object' && child.dummy && !isElement;\n var isKnownComponent = _typeof(children) === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);\n\n if (typeof child === 'string') {\n var value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n var inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n var _inner = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), _inner));\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n var _inner2 = renderInner(child, node, rootReactNode);\n\n pushTranslatedJSX(child, _inner2, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push(createElement(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }));\n } else {\n var _inner3 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(createElement(node.name, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _inner3));\n }\n } else if (node.voidElement) {\n mem.push(\"<\".concat(node.name, \" />\"));\n } else {\n var _inner4 = mapAST(reactNodes, node.children, rootReactNode);\n\n mem.push(\"<\".concat(node.name, \">\").concat(_inner4, \"\"));\n }\n } else if (_typeof(child) === 'object' && !isElement) {\n var content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else if (node.children.length === 1 && translationContent) {\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n }), translationContent));\n } else {\n mem.push(cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n key: i\n })));\n }\n } else if (node.type === 'text') {\n var wrapTextNodes = i18nOptions.transWrapTextNodes;\n\n var _content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n\n if (wrapTextNodes) {\n mem.push(createElement(wrapTextNodes, {\n key: \"\".concat(node.name, \"-\").concat(i)\n }, _content));\n } else {\n mem.push(_content);\n }\n }\n\n return mem;\n }, []);\n }\n\n var result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n}\n\nexport function Trans(_ref) {\n var children = _ref.children,\n count = _ref.count,\n parent = _ref.parent,\n i18nKey = _ref.i18nKey,\n context = _ref.context,\n _ref$tOptions = _ref.tOptions,\n tOptions = _ref$tOptions === void 0 ? {} : _ref$tOptions,\n values = _ref.values,\n defaults = _ref.defaults,\n components = _ref.components,\n ns = _ref.ns,\n i18nFromProps = _ref.i18n,\n tFromProps = _ref.t,\n shouldUnescape = _ref.shouldUnescape,\n additionalProps = _objectWithoutProperties(_ref, _excluded2);\n\n var _ref2 = useContext(I18nContext) || {},\n i18nFromContext = _ref2.i18n,\n defaultNSFromContext = _ref2.defaultNS;\n\n var i18n = i18nFromProps || i18nFromContext || getI18n();\n\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');\n return children;\n }\n\n var t = tFromProps || i18n.t.bind(i18n) || function (k) {\n return k;\n };\n\n if (context) tOptions.context = context;\n\n var reactI18nextOptions = _objectSpread(_objectSpread({}, getDefaults()), i18n.options && i18n.options.react);\n\n var namespaces = ns || t.ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n var defaultValue = defaults || nodesToString(children, reactI18nextOptions) || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n var hashTransKey = reactI18nextOptions.hashTransKey;\n var key = i18nKey || (hashTransKey ? hashTransKey(defaultValue) : defaultValue);\n var interpolationOverride = values ? tOptions.interpolation : {\n interpolation: _objectSpread(_objectSpread({}, tOptions.interpolation), {}, {\n prefix: '#$?',\n suffix: '?$#'\n })\n };\n\n var combinedTOpts = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tOptions), {}, {\n count: count\n }, values), interpolationOverride), {}, {\n defaultValue: defaultValue,\n ns: namespaces\n });\n\n var translation = key ? t(key, combinedTOpts) : defaultValue;\n var content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n var useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;\n return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat ).__isVue || (wat )._isVue));\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","/** Internal global with common properties and Sentry extensions */\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj) {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function () {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nfunction getGlobalObject() {\n return GLOBAL_OBJ ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n","import { isString } from './is.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n elem,\n options = {},\n) {\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n const MAX_TRAVERSE_HEIGHT = 5;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds maxStringLength\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n const elem = el\n\n;\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n try {\n return WINDOW.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `const element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getDomElement(selector) {\n if (WINDOW.document && WINDOW.document.querySelector) {\n return WINDOW.document.querySelector(selector) ;\n }\n return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\n = {};\n\n/** JSDoc */\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console ;\n const wrappedFuncs = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] ;\n wrappedFuncs[level] = console[level] ;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] ;\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\nconst logger = makeLogger();\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods };\n//# sourceMappingURL=logger.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { node } from './node-stack-trace.js';\n\nconst STACKTRACE_FRAME_LIMIT = 50;\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n const frames = [];\n const lines = stack.split('\\n');\n\n for (let i = skipFirst; i < lines.length; i++) {\n const line = lines[i];\n // Ignore lines over 1kb as they are unlikely to be stack frames.\n // Many of the regular expressions use backtracking which results in run time that increases exponentially with\n // input size. Huge strings can result in hangs/Denial of Service:\n // https://github.com/getsentry/sentry-javascript/issues/2286\n if (line.length > 1024) {\n continue;\n }\n\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n // https://github.com/getsentry/sentry-javascript/issues/7813\n // Skip Error: lines\n if (cleanedLine.match(/\\S*Error: /)) {\n continue;\n }\n\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n\n if (frames.length >= STACKTRACE_FRAME_LIMIT) {\n break;\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n const localStack = Array.from(stack);\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (/sentryWrapped/.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n\n // Reversing in the middle of the procedure allows us to just pop the values off the stack\n localStack.reverse();\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n\n // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n // is produced within the hub itself, making it:\n //\n // Sentry.captureException()\n // getCurrentHub().captureException()\n //\n // instead of just the top `Sentry` call itself.\n // This forces us to possibly strip an additional frame in the exact same was as above.\n if (STRIP_FRAME_REGEXP.test(localStack[localStack.length - 1].function || '')) {\n localStack.pop();\n }\n }\n\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n ...frame,\n filename: frame.filename || localStack[localStack.length - 1].filename,\n function: frame.function || '?',\n }));\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { logger } from './logger.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-expect-error It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in WINDOW)) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(WINDOW.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in WINDOW;\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { getGlobalObject } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (WINDOW ).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { supportsHistory };\n//# sourceMappingURL=supportsHistory.js.map\n","import { isString } from './is.js';\nimport { logger, CONSOLE_LEVELS, originalConsoleMethods } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch } from './supports.js';\nimport { getGlobalObject, GLOBAL_OBJ } from './worldwide.js';\nimport { supportsHistory } from './vendor/supportsHistory.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v2__';\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers = {};\nconst instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nfunction resetInstrumentationHandlers() {\n Object.keys(handlers).forEach(key => {\n handlers[key ] = undefined;\n });\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n const log = originalConsoleMethods[level];\n log && log.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(GLOBAL_OBJ, 'fetch', function (originalFetch) {\n return function (...args) {\n const { method, url } = parseFetchArgs(args);\n\n const handlerData = {\n args,\n fetchData: {\n method,\n url,\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(GLOBAL_OBJ, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\nfunction hasProp(obj, prop) {\n return !!obj && typeof obj === 'object' && !!(obj )[prop];\n}\n\nfunction getUrlFromResource(resource) {\n if (typeof resource === 'string') {\n return resource;\n }\n\n if (!resource) {\n return '';\n }\n\n if (hasProp(resource, 'url')) {\n return resource.url;\n }\n\n if (resource.toString) {\n return resource.toString();\n }\n\n return '';\n}\n\n/**\n * Parses the fetch arguments to find the used Http method and the url of the request\n */\nfunction parseFetchArgs(fetchArgs) {\n if (fetchArgs.length === 0) {\n return { method: 'GET', url: '' };\n }\n\n if (fetchArgs.length === 2) {\n const [url, options] = fetchArgs ;\n\n return {\n url: getUrlFromResource(url),\n method: hasProp(options, 'method') ? String(options.method).toUpperCase() : 'GET',\n };\n }\n\n const arg = fetchArgs[0];\n return {\n url: getUrlFromResource(arg ),\n method: hasProp(arg, 'method') ? String(arg.method).toUpperCase() : 'GET',\n };\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!(WINDOW ).XMLHttpRequest) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n const url = args[1];\n const xhrInfo = (this[SENTRY_XHR_DATA_KEY] = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n request_headers: {},\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (this.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = this.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args: args ,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: this,\n } );\n }\n };\n\n if ('onreadystatechange' in this && typeof this.onreadystatechange === 'function') {\n fill(this, 'onreadystatechange', function (original) {\n return function ( ...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(this, readyStateArgs);\n };\n });\n } else {\n this.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n fill(this, 'setRequestHeader', function (original) {\n return function ( ...setRequestHeaderArgs) {\n const [header, value] = setRequestHeaderArgs ;\n\n const xhrInfo = this[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return original.apply(this, setRequestHeaderArgs);\n };\n });\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n const sentryXhrData = this[SENTRY_XHR_DATA_KEY];\n if (sentryXhrData && args[0] !== undefined) {\n sentryXhrData.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!WINDOW.document) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW )[target] && (WINDOW )[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n\n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this ;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = WINDOW.onerror;\n\n WINDOW.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n WINDOW.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = WINDOW.onunhandledrejection;\n\n WINDOW.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n WINDOW.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addInstrumentationHandler, instrumentDOM, instrumentXHR, parseFetchArgs, resetInstrumentationHandlers };\n//# sourceMappingURL=instrument.js.map\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = () => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => crypto.getRandomValues(new Uint8Array(1))[0];\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { isNaN, isVueViewModel, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (\n value == null || // this matches null and undefined -> eqeq not eqeqeq\n (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))\n ) {\n return value ;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n // We keep a certain amount of depth.\n // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n const remainingDepth =\n typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n ? ((value )['__sentry_override_normalization_depth__'] )\n : depth;\n\n // We're also done if we've reached the max depth\n if (remainingDepth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value );\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n numAdded++;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n if (isVueViewModel(value)) {\n return '[VueViewModel]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n const objName = getConstructorName(value);\n\n // Handle HTML Elements\n if (/^HTML(\\w*)Element$/.test(objName)) {\n return `[HTMLElement: ${objName}]`;\n }\n\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n\n return prototype ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","import { isError, normalize, isPlainObject, addNonEnumerableProperty, logger } from '@sentry/utils';\n\n/** JSDoc */\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass ExtraErrorData {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'ExtraErrorData';}\n\n /**\n * @inheritDoc\n */\n\n /** JSDoc */\n\n /**\n * @inheritDoc\n */\n constructor(options) {\n this.name = ExtraErrorData.id;\n\n this._options = {\n depth: 3,\n ...options,\n };\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor((event, hint) => {\n const self = getCurrentHub().getIntegration(ExtraErrorData);\n if (!self) {\n return event;\n }\n return self.enhanceEventWithErrorData(event, hint);\n });\n }\n\n /**\n * Attaches extracted information from the Error object to extra field in the Event\n */\n enhanceEventWithErrorData(event, hint = {}) {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException ).name || hint.originalException.constructor.name;\n\n const errorData = this._extractErrorData(hint.originalException );\n\n if (errorData) {\n const contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, this._options.depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n }\n\n /**\n * Extract extra information from the Error object\n */\n _extractErrorData(error) {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() ;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n }\n} ExtraErrorData.__initStatic();\n\nexport { ExtraErrorData };\n//# sourceMappingURL=extraerrordata.js.map\n","import { logger, supportsNativeFetch, addInstrumentationHandler, GLOBAL_OBJ, SENTRY_XHR_DATA_KEY, addExceptionMechanism } from '@sentry/utils';\n\n/** HTTPClient integration creates events for failed client side HTTP requests. */\nclass HttpClient {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpClient';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Returns current hub.\n */\n\n /**\n * @inheritDoc\n *\n * @param options\n */\n constructor(options) {\n this.name = HttpClient.id;\n this._options = {\n failedRequestStatusCodes: [[500, 599]],\n failedRequestTargets: [/.*/],\n ...options,\n };\n }\n\n /**\n * @inheritDoc\n *\n * @param options\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n this._wrapFetch();\n this._wrapXHR();\n }\n\n /**\n * Interceptor function for fetch requests\n *\n * @param requestInfo The Fetch API request info\n * @param response The Fetch API response\n * @param requestInit The request init object\n */\n _fetchResponseHandler(requestInfo, response, requestInit) {\n if (this._getCurrentHub && this._shouldCaptureResponse(response.status, response.url)) {\n const request = _getRequest(requestInfo, requestInit);\n const hub = this._getCurrentHub();\n\n let requestHeaders, responseHeaders, requestCookies, responseCookies;\n\n if (hub.shouldSendDefaultPii()) {\n [{ headers: requestHeaders, cookies: requestCookies }, { headers: responseHeaders, cookies: responseCookies }] =\n [\n { cookieHeader: 'Cookie', obj: request },\n { cookieHeader: 'Set-Cookie', obj: response },\n ].map(({ cookieHeader, obj }) => {\n const headers = this._extractFetchHeaders(obj.headers);\n let cookies;\n\n try {\n const cookieString = headers[cookieHeader] || headers[cookieHeader.toLowerCase()] || undefined;\n\n if (cookieString) {\n cookies = this._parseCookieString(cookieString);\n }\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Could not extract cookies from header ${cookieHeader}`);\n }\n\n return {\n headers,\n cookies,\n };\n });\n }\n\n const event = this._createEvent({\n url: request.url,\n method: request.method,\n status: response.status,\n requestHeaders,\n responseHeaders,\n requestCookies,\n responseCookies,\n });\n\n hub.captureEvent(event);\n }\n }\n\n /**\n * Interceptor function for XHR requests\n *\n * @param xhr The XHR request\n * @param method The HTTP method\n * @param headers The HTTP headers\n */\n _xhrResponseHandler(xhr, method, headers) {\n if (this._getCurrentHub && this._shouldCaptureResponse(xhr.status, xhr.responseURL)) {\n let requestHeaders, responseCookies, responseHeaders;\n const hub = this._getCurrentHub();\n\n if (hub.shouldSendDefaultPii()) {\n try {\n const cookieString = xhr.getResponseHeader('Set-Cookie') || xhr.getResponseHeader('set-cookie') || undefined;\n\n if (cookieString) {\n responseCookies = this._parseCookieString(cookieString);\n }\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Could not extract cookies from response headers');\n }\n\n try {\n responseHeaders = this._getXHRResponseHeaders(xhr);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Could not extract headers from response');\n }\n\n requestHeaders = headers;\n }\n\n const event = this._createEvent({\n url: xhr.responseURL,\n method: method,\n status: xhr.status,\n requestHeaders,\n // Can't access request cookies from XHR\n responseHeaders,\n responseCookies,\n });\n\n hub.captureEvent(event);\n }\n }\n\n /**\n * Extracts response size from `Content-Length` header when possible\n *\n * @param headers\n * @returns The response size in bytes or undefined\n */\n _getResponseSizeFromHeaders(headers) {\n if (headers) {\n const contentLength = headers['Content-Length'] || headers['content-length'];\n\n if (contentLength) {\n return parseInt(contentLength, 10);\n }\n }\n\n return undefined;\n }\n\n /**\n * Creates an object containing cookies from the given cookie string\n *\n * @param cookieString The cookie string to parse\n * @returns The parsed cookies\n */\n _parseCookieString(cookieString) {\n return cookieString.split('; ').reduce((acc, cookie) => {\n const [key, value] = cookie.split('=');\n acc[key] = value;\n return acc;\n }, {});\n }\n\n /**\n * Extracts the headers as an object from the given Fetch API request or response object\n *\n * @param headers The headers to extract\n * @returns The extracted headers as an object\n */\n _extractFetchHeaders(headers) {\n const result = {};\n\n headers.forEach((value, key) => {\n result[key] = value;\n });\n\n return result;\n }\n\n /**\n * Extracts the response headers as an object from the given XHR object\n *\n * @param xhr The XHR object to extract the response headers from\n * @returns The response headers as an object\n */\n _getXHRResponseHeaders(xhr) {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc, line) => {\n const [key, value] = line.split(': ');\n acc[key] = value;\n return acc;\n }, {});\n }\n\n /**\n * Checks if the given target url is in the given list of targets\n *\n * @param target The target url to check\n * @returns true if the target url is in the given list of targets, false otherwise\n */\n _isInGivenRequestTargets(target) {\n if (!this._options.failedRequestTargets) {\n return false;\n }\n\n return this._options.failedRequestTargets.some((givenRequestTarget) => {\n if (typeof givenRequestTarget === 'string') {\n return target.includes(givenRequestTarget);\n }\n\n return givenRequestTarget.test(target);\n });\n }\n\n /**\n * Checks if the given status code is in the given range\n *\n * @param status The status code to check\n * @returns true if the status code is in the given range, false otherwise\n */\n _isInGivenStatusRanges(status) {\n if (!this._options.failedRequestStatusCodes) {\n return false;\n }\n\n return this._options.failedRequestStatusCodes.some((range) => {\n if (typeof range === 'number') {\n return range === status;\n }\n\n return status >= range[0] && status <= range[1];\n });\n }\n\n /**\n * Wraps `fetch` function to capture request and response data\n */\n _wrapFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n addInstrumentationHandler('fetch', (handlerData) => {\n const { response, args } = handlerData;\n const [requestInfo, requestInit] = args ;\n\n if (!response) {\n return;\n }\n\n this._fetchResponseHandler(requestInfo, response, requestInit);\n });\n }\n\n /**\n * Wraps XMLHttpRequest to capture request and response data\n */\n _wrapXHR() {\n if (!('XMLHttpRequest' in GLOBAL_OBJ)) {\n return;\n }\n\n addInstrumentationHandler(\n 'xhr',\n (handlerData) => {\n const { xhr } = handlerData;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return;\n }\n\n const { method, request_headers: headers } = sentryXhrData;\n\n if (!method) {\n return;\n }\n\n try {\n this._xhrResponseHandler(xhr, method, headers);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Error while extracting response event form XHR response', e);\n }\n },\n );\n }\n\n /**\n * Checks whether given url points to Sentry server\n *\n * @param url url to verify\n */\n _isSentryRequest(url) {\n const client = this._getCurrentHub && this._getCurrentHub().getClient();\n\n if (!client) {\n return false;\n }\n\n const dsn = client.getDsn();\n return dsn ? url.includes(dsn.host) : false;\n }\n\n /**\n * Checks whether to capture given response as an event\n *\n * @param status response status code\n * @param url response url\n */\n _shouldCaptureResponse(status, url) {\n return this._isInGivenStatusRanges(status) && this._isInGivenRequestTargets(url) && !this._isSentryRequest(url);\n }\n\n /**\n * Creates a synthetic Sentry event from given response data\n *\n * @param data response data\n * @returns event\n */\n _createEvent(data\n\n) {\n const message = `HTTP Client Error with status code: ${data.status}`;\n\n const event = {\n message,\n exception: {\n values: [\n {\n type: 'Error',\n value: message,\n },\n ],\n },\n request: {\n url: data.url,\n method: data.method,\n headers: data.requestHeaders,\n cookies: data.requestCookies,\n },\n contexts: {\n response: {\n status_code: data.status,\n headers: data.responseHeaders,\n cookies: data.responseCookies,\n body_size: this._getResponseSizeFromHeaders(data.responseHeaders),\n },\n },\n };\n\n addExceptionMechanism(event, {\n type: 'http.client',\n handled: false,\n });\n\n return event;\n }\n} HttpClient.__initStatic();\n\nfunction _getRequest(requestInfo, requestInit) {\n if (!requestInit && requestInfo instanceof Request) {\n return requestInfo;\n }\n\n // If both are set, we try to construct a new Request with the given arguments\n // However, if e.g. the original request has a `body`, this will throw an error because it was already accessed\n // In this case, as a fallback, we just use the original request - using both is rather an edge case\n if (requestInfo instanceof Request && requestInfo.bodyUsed) {\n return requestInfo;\n }\n\n return new Request(requestInfo, requestInit);\n}\n\nexport { HttpClient };\n//# sourceMappingURL=httpclient.js.map\n","import { apiCall, createQueryString } from './helper';\n\nexport function fetchProject(projectId, params = {}) {\n return apiCall(`/projects/${projectId}?${createQueryString(params)}`);\n}\n","// Libraries\nimport { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nexport function useGoogleTracking(trackingIds = []) {\n const { listen } = useHistory();\n\n useEffect(\n () =>\n listen((location) => {\n for (const id of trackingIds) {\n window.gtag('config', id, { page_path: location.pathname });\n }\n }),\n [trackingIds, listen]\n );\n}\n","// Libraries\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter } from 'react-router-dom';\n\nexport class ScrollToTop extends PureComponent {\n componentDidUpdate(prevProps) {\n const { location } = this.props;\n if (location !== prevProps.location) {\n window.scrollTo(0, 0);\n }\n }\n\n render() {\n const { children } = this.props;\n return children;\n }\n}\n\nScrollToTop.propTypes = {\n location: PropTypes.object.isRequired,\n children: PropTypes.node,\n};\n\nScrollToTop.defaultProps = {\n children: null,\n};\n\nexport default withRouter(ScrollToTop);\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation, Trans } from 'react-i18next';\n\n/* eslint-disable react/jsx-one-expression-per-line */\nexport const NotFoundPageContainer = ({ t }) => (\n \n);\n/* eslint-enable react/jsx-one-expression-per-line */\n\nNotFoundPageContainer.propTypes = {\n t: PropTypes.func.isRequired,\n};\n\nexport default withTranslation()(NotFoundPageContainer);\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\n// Utils\nimport { redirectToSignInPath } from 'common/utils/authHelpers';\n\nconst HeaderSignIn = ({ t }) => (\n
\n

{t('common.sign_in_to_participate')}

\n redirectToSignInPath(window.location.pathname)}\n >\n {t('ideation.sign_in_button')}\n \n
\n);\n\nHeaderSignIn.propTypes = {\n t: PropTypes.func.isRequired,\n};\n\nexport default withTranslation()(HeaderSignIn);\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","// Libraries\nimport React from 'react';\nimport jwtDecode from 'jwt-decode';\nimport PropTypes from 'prop-types';\nimport { Trans, withTranslation } from 'react-i18next';\n\n// Utils\nimport { getUserToken } from 'ideation/utils/userAuthenticate';\nimport { csrfToken, signOutPath } from 'common/utils/authHelpers';\n\nconst SIGN_OUT_PATH = signOutPath(window.location.pathname);\nconst CSRF_TOKEN = csrfToken();\n\n/* eslint-disable react/jsx-one-expression-per-line */\nconst HeaderSignOut = ({ t }) => {\n const token = getUserToken();\n const username = jwtDecode(token).preferred_username;\n return (\n
\n

\n \n Signed in as {{ username }}\n \n

\n
\n \n \n \n
\n
\n );\n};\n/* eslint-enable react/jsx-one-expression-per-line */\n\nHeaderSignOut.propTypes = {\n t: PropTypes.func.isRequired,\n};\n\nexport default withTranslation()(HeaderSignOut);\n","// Libraries\nimport React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocation, useParams, useRouteMatch } from 'react-router-dom';\nimport { defaultLanguage, LANGUAGES } from 'i18n';\n\n// Routes\nimport Routes from 'routes';\n\n// Utilities\nimport { populatePath } from 'common/utils/helpers';\n\nfunction LocaleSelector({ locales, meta }) {\n const match = useRouteMatch();\n const params = useParams();\n const location = useLocation();\n const selectRef = useRef();\n const [width, setWidth] = useState(null);\n const [value, setValue] = useState(\n locales.find((locale) => locale === params.locale) || locales[0]\n );\n\n function onChange(event) {\n const locale = event.currentTarget.value;\n const path = meta?.preview ? Routes.ENGAGEMENT_PREVIEW : match.path;\n const url = populatePath(path, { ...params, locale });\n setWidth(null);\n setValue(locale);\n window.location.assign(url + location.search);\n }\n\n function renderOptions() {\n if (width === null) return ;\n\n return locales.map((locale) => (\n \n ));\n }\n\n useEffect(() => {\n // Add setTimeout to fix some fonts rendering\n setTimeout(() => {\n setWidth(selectRef.current?.getBoundingClientRect().width);\n }, 500);\n }, [width]);\n\n return (\n
\n Language Selector\n \n \n {renderOptions()}\n \n
\n );\n}\n\nLocaleSelector.propTypes = {\n locales: PropTypes.arrayOf(PropTypes.string),\n meta: PropTypes.shape({\n preview: PropTypes.bool,\n }),\n};\n\nLocaleSelector.defaultProps = {\n locales: [defaultLanguage],\n meta: { preview: false },\n};\n\nexport default LocaleSelector;\n","// Libraries\nimport React from 'react';\nimport { currentLanguage } from 'i18n';\nimport _ from 'lodash';\n\nconst locale = _.camelCase(window.gon.defaultLanguage || currentLanguage);\n\nconst Logo = () => (\n
\n {gon.brand.logo_url ? (\n \n {gon.brand.name_translations[currentLanguage]}\n \n ) : (\n
\n \n Our City Logo\n
\n )}\n
\n);\n\nexport default Logo;\n","import React from 'react';\n\nconst NextDoorIcon = () => (\n \n Nextdoor\n \n \n);\n\nexport default NextDoorIcon;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\n// Utils\nimport {\n facebookShareUrl,\n twitterShareUrl,\n emailShareUrl,\n linkedinShareUrl,\n nextdoorShareLink,\n} from 'common/utils/helpers';\n\n// Components\nimport NextDoorIcon from 'common/components/NextDoorIcon';\n\nconst SocialShareLinks = ({ className }) => {\n const url = document.querySelector('meta[property=\"og:url\"]')?.getAttribute('content');\n const title = document.querySelector('meta[property=\"og:title\"]')?.getAttribute('content');\n\n const facebookUrl = facebookShareUrl(url);\n const twitterUrl = twitterShareUrl(title, url);\n const linkedinUrl = linkedinShareUrl(url);\n const emailUrl = emailShareUrl(title, url);\n const nextDoorUrl = nextdoorShareLink(url, title);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nSocialShareLinks.propTypes = {\n className: PropTypes.string,\n};\n\nSocialShareLinks.defaultProps = {\n className: null,\n};\n\nexport default SocialShareLinks;\n","// Libraries\nimport React, { useState } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport SocialShareLinks from 'common/components/SocialShareLinks';\n\nconst SocialShareToolbar = () => {\n const [expanded, setExpanded] = useState(false);\n const { t } = useTranslation();\n const toggleExpanded = () => setExpanded((currentValue) => !currentValue);\n\n return (\n \n \n {t('common.share')}\n \n \n \n );\n};\n\nexport default SocialShareToolbar;\n","// Libraries\nimport React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Route, Switch } from 'react-router-dom';\n\n// Utilities\nimport { isEmbedded } from 'common/utils/helpers';\nimport { userAuthenticated } from 'ideation/utils/userAuthenticate';\nimport { defaultLanguage } from 'i18n';\n\n// Routes\nimport Routes from 'routes';\n\n// Components\nimport HeaderSignIn from 'header/components/HeaderSignIn';\nimport HeaderSignOut from 'header/components/HeaderSignOut';\nimport LocaleSelector from 'common/components/LocaleSelector';\nimport Logo from 'common/components/Logo';\nimport SocialShareToolbar from 'common/components/SocialShareToolbar';\n\nconst Header = ({\n meta,\n engagement,\n project,\n ideaBoard,\n projectHub,\n isLastSection,\n discussionTopic,\n showAuth,\n}) => {\n // Only display locale selector if additional locale options exist\n const supportedLanguages =\n engagement?.languages ||\n project?.languages ||\n ideaBoard?.languages ||\n discussionTopic?.languages ||\n gon.brand.languages;\n const renderLocaleSelector = supportedLanguages?.some((language) => language !== defaultLanguage);\n const userAuthHeader = userAuthenticated() ? : ;\n\n return (\n
\n
\n
\n
{!isEmbedded() && }
\n {renderLocaleSelector && (\n
\n \n
\n )}\n {showAuth &&
{userAuthHeader}
}\n
\n
\n \n \n engagement.visible &&\n engagement.project.socialSharing &&\n isLastSection && \n }\n />\n \n ideaBoard.visible && ideaBoard.project.socialSharing && \n }\n />\n \n discussionTopic.visible &&\n discussionTopic.project.socialSharing && \n }\n />\n project.socialSharing && }\n />\n \n
\n );\n};\n\nHeader.defaultProps = {\n projectHub: false,\n engagement: {},\n project: {},\n ideaBoard: {},\n discussionTopic: {},\n isLastSection: null,\n meta: { preview: false },\n showAuth: false,\n};\n\nHeader.propTypes = {\n projectHub: PropTypes.bool,\n engagement: PropTypes.shape({\n languages: PropTypes.arrayOf(PropTypes.string),\n redirectUrl: PropTypes.string,\n visible: PropTypes.bool,\n project: PropTypes.shape({\n socialSharing: PropTypes.bool,\n }),\n }),\n project: PropTypes.shape({\n languages: PropTypes.arrayOf(PropTypes.string),\n socialSharing: PropTypes.bool,\n }),\n ideaBoard: PropTypes.shape({\n languages: PropTypes.arrayOf(PropTypes.string),\n visible: PropTypes.bool,\n project: PropTypes.shape({\n socialSharing: PropTypes.bool,\n }),\n }),\n discussionTopic: PropTypes.shape({\n languages: PropTypes.arrayOf(PropTypes.string),\n visible: PropTypes.bool,\n project: PropTypes.shape({\n socialSharing: PropTypes.bool,\n }),\n }),\n isLastSection: PropTypes.bool,\n meta: PropTypes.shape({\n preview: PropTypes.bool,\n }),\n showAuth: PropTypes.bool,\n};\n\nexport default Header;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\n// Utils\nimport { populatePath, storyTheme } from 'common/utils/helpers';\nimport routes from 'routes/index';\nimport { useParams } from 'react-router-dom';\n\nexport const Footer = ({ children, t }) => {\n const params = useParams();\n return (\n
\n {children}\n
\n
\n
    \n
  • \n © {`${new Date().getFullYear()} ${gon.whitelabelName || 'Zencity Engage'}`}\n
  • \n
  • \n \n {t('common.privacy_policy')}\n \n
  • \n
  • \n \n {t('common.sitemap')}\n \n
  • \n
  • {import.meta.env.VITE_CIVIL_SPACE_VERSION}
  • \n
\n
\n {t('common.powered_by')}\n \n
\n
\n
\n
\n
\n );\n};\n\nFooter.propTypes = {\n children: PropTypes.node,\n t: PropTypes.func.isRequired,\n};\n\nFooter.defaultProps = {\n children: null,\n};\n\nexport default withTranslation()(Footer);\n","// Libraries\nimport React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\n// Utilities\nimport { classicTheme, storyTheme } from 'common/utils/helpers';\n\nconst SocialLink = ({ title, href, iconClass }) => {\n return (\n
  • \n \n \n \n \n \n
  • \n );\n};\n\nSocialLink.propTypes = {\n title: PropTypes.string.isRequired,\n href: PropTypes.string.isRequired,\n iconClass: PropTypes.string.isRequired,\n};\n\nexport default SocialLink;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n// Utilities\nimport { urlFormatter } from 'common/utils/helpers';\n\n// Components\nimport SocialLink from 'common/components/SocialLink';\n\nconst SocialFooter = ({ project: { facebookUrl, twitterUrl, contactEmail } }) => (\n
    \n
    \n
      \n {facebookUrl && (\n \n )}\n {twitterUrl && (\n \n )}\n {contactEmail && (\n \n )}\n
    \n
    \n
    \n);\n\nSocialFooter.propTypes = {\n project: PropTypes.shape({\n facebookUrl: PropTypes.string,\n twitterUrl: PropTypes.string,\n contactEmail: PropTypes.string,\n }),\n};\n\nSocialFooter.defaultProps = {\n project: {\n facebookUrl: null,\n twitterUrl: null,\n contactEmail: null,\n },\n};\n\nexport default SocialFooter;\n","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory(require(\"react\")) : \"function\" == typeof define && define.amd ? define([ \"react\" ], factory) : \"object\" == typeof exports ? exports.MediaQuery = factory(require(\"react\")) : root.MediaQuery = factory(root.React);\n}(\"undefined\" != typeof self ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\n return function(modules) {\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n module.l = !0, module.exports;\n }\n var installedModules = {};\n return __webpack_require__.m = modules, __webpack_require__.c = installedModules, \n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n }, __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n return __webpack_require__.d(getter, \"a\", getter), getter;\n }, __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 7);\n }([ function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n function _unsupportedIterableToArray(o, minLen) {\n if (o) {\n if (\"string\" == typeof o) return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n return \"Object\" === n && o.constructor && (n = o.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(o) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _arrayLikeToArray(o, minLen) : void 0;\n }\n }\n function _arrayLikeToArray(arr, len) {\n (null == len || len > arr.length) && (len = arr.length);\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _iterableToArrayLimit(arr, i) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(arr)) {\n var _arr = [], _n = !0, _d = !1, _e = void 0;\n try {\n for (var _s, _i = arr[Symbol.iterator](); !(_n = (_s = _i.next()).done) && (_arr.push(_s.value), \n !i || _arr.length !== i); _n = !0) ;\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n _n || null == _i.return || _i.return();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n }\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1), __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__), __WEBPACK_IMPORTED_MODULE_1_matchmediaquery__ = __webpack_require__(8), __WEBPACK_IMPORTED_MODULE_1_matchmediaquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_matchmediaquery__), __WEBPACK_IMPORTED_MODULE_2_hyphenate_style_name__ = __webpack_require__(2), __WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects__ = __webpack_require__(10), __WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects__), __WEBPACK_IMPORTED_MODULE_4__toQuery__ = __webpack_require__(3), __WEBPACK_IMPORTED_MODULE_5__Context__ = __webpack_require__(6), makeQuery = function(settings) {\n return settings.query || Object(__WEBPACK_IMPORTED_MODULE_4__toQuery__.a)(settings);\n }, hyphenateKeys = function(obj) {\n if (!obj) return null;\n var keys = Object.keys(obj);\n return 0 === keys.length ? null : keys.reduce(function(result, key) {\n return result[Object(__WEBPACK_IMPORTED_MODULE_2_hyphenate_style_name__.a)(key)] = obj[key], \n result;\n }, {});\n }, useIsUpdate = function() {\n var ref = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useRef(!1);\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n ref.current = !0;\n }, []), ref.current;\n }, useDevice = function(deviceFromProps) {\n var deviceFromContext = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useContext(__WEBPACK_IMPORTED_MODULE_5__Context__.a), getDevice = function() {\n return hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext);\n }, _React$useState = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(getDevice), _React$useState2 = _slicedToArray(_React$useState, 2), device = _React$useState2[0], setDevice = _React$useState2[1];\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n var newDevice = getDevice();\n __WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects___default()(device, newDevice) || setDevice(newDevice);\n }, [ deviceFromProps, deviceFromContext ]), device;\n }, useQuery = function(settings) {\n var getQuery = function() {\n return makeQuery(settings);\n }, _React$useState3 = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(getQuery), _React$useState4 = _slicedToArray(_React$useState3, 2), query = _React$useState4[0], setQuery = _React$useState4[1];\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n var newQuery = getQuery();\n query !== newQuery && setQuery(newQuery);\n }, [ settings ]), query;\n }, useMatchMedia = function(query, device) {\n var getMatchMedia = function() {\n return __WEBPACK_IMPORTED_MODULE_1_matchmediaquery___default()(query, device || {}, !!device);\n }, _React$useState5 = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(getMatchMedia), _React$useState6 = _slicedToArray(_React$useState5, 2), mq = _React$useState6[0], setMq = _React$useState6[1], isUpdate = useIsUpdate();\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n return isUpdate && setMq(getMatchMedia()), function() {\n mq.dispose();\n };\n }, [ query, device ]), mq;\n }, useMatches = function(mediaQuery) {\n var _React$useState7 = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useState(mediaQuery.matches), _React$useState8 = _slicedToArray(_React$useState7, 2), matches = _React$useState8[0], setMatches = _React$useState8[1];\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n var updateMatches = function() {\n setMatches(mediaQuery.matches);\n };\n return mediaQuery.addListener(updateMatches), updateMatches(), function() {\n mediaQuery.removeListener(updateMatches);\n };\n }, [ mediaQuery ]), matches;\n }, useMediaQuery = function(settings, device, onChange) {\n var deviceSettings = useDevice(device), query = useQuery(settings);\n if (!query) throw new Error(\"Invalid or missing MediaQuery!\");\n var mq = useMatchMedia(query, deviceSettings), matches = useMatches(mq), isUpdate = useIsUpdate();\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.useEffect(function() {\n isUpdate && onChange && onChange(matches);\n }, [ matches ]), matches;\n };\n __webpack_exports__.a = useMediaQuery;\n }, function(module, exports) {\n module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function toHyphenLower(match) {\n return \"-\" + match.toLowerCase();\n }\n function hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) return cache[name];\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? \"-\" + hName : hName;\n }\n var uppercasePattern = /[A-Z]/g, msPattern = /^ms-/, cache = {};\n __webpack_exports__.a = hyphenateStyleName;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n var __WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__ = __webpack_require__(2), __WEBPACK_IMPORTED_MODULE_1__mediaQuery__ = __webpack_require__(11), negate = function(cond) {\n return \"not \".concat(cond);\n }, keyVal = function(k, v) {\n var realKey = Object(__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__.a)(k);\n return \"number\" == typeof v && (v = \"\".concat(v, \"px\")), !0 === v ? realKey : !1 === v ? negate(realKey) : \"(\".concat(realKey, \": \").concat(v, \")\");\n }, join = function(conds) {\n return conds.join(\" and \");\n }, toQuery = function(obj) {\n var rules = [];\n return Object.keys(__WEBPACK_IMPORTED_MODULE_1__mediaQuery__.a.all).forEach(function(k) {\n var v = obj[k];\n null != v && rules.push(keyVal(k, v));\n }), join(rules);\n };\n __webpack_exports__.a = toQuery;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n module.exports = __webpack_require__(13);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n module.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1), __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__), Context = __WEBPACK_IMPORTED_MODULE_0_react___default.a.createContext();\n __webpack_exports__.a = Context;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(__webpack_exports__, \"__esModule\", {\n value: !0\n });\n var __WEBPACK_IMPORTED_MODULE_0__useMediaQuery__ = __webpack_require__(0), __WEBPACK_IMPORTED_MODULE_1__Component__ = __webpack_require__(17), __WEBPACK_IMPORTED_MODULE_2__toQuery__ = __webpack_require__(3), __WEBPACK_IMPORTED_MODULE_3__Context__ = __webpack_require__(6);\n __webpack_require__.d(__webpack_exports__, \"default\", function() {\n return __WEBPACK_IMPORTED_MODULE_1__Component__.a;\n }), __webpack_require__.d(__webpack_exports__, \"useMediaQuery\", function() {\n return __WEBPACK_IMPORTED_MODULE_0__useMediaQuery__.a;\n }), __webpack_require__.d(__webpack_exports__, \"toQuery\", function() {\n return __WEBPACK_IMPORTED_MODULE_2__toQuery__.a;\n }), __webpack_require__.d(__webpack_exports__, \"Context\", function() {\n return __WEBPACK_IMPORTED_MODULE_3__Context__.a;\n });\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function Mql(query, values, forceStatic) {\n function addListener(listener) {\n mql && mql.addListener(listener);\n }\n function removeListener(listener) {\n mql && mql.removeListener(listener);\n }\n function update(evt) {\n self.matches = evt.matches, self.media = evt.media;\n }\n function dispose() {\n mql && mql.removeListener(update);\n }\n var self = this;\n if (dynamicMatch && !forceStatic) {\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches, this.media = mql.media, mql.addListener(update);\n } else this.matches = staticMatch(query, values), this.media = query;\n this.addListener = addListener, this.removeListener = removeListener, this.dispose = dispose;\n }\n function matchMedia(query, values, forceStatic) {\n return new Mql(query, values, forceStatic);\n }\n var staticMatch = __webpack_require__(9).match, dynamicMatch = \"undefined\" != typeof window ? window.matchMedia : null;\n module.exports = matchMedia;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function(query) {\n var inverse = query.inverse, typeMatch = \"all\" === query.type || values.type === query.type;\n if (typeMatch && inverse || !typeMatch && !inverse) return !1;\n var expressionsMatch = query.expressions.every(function(expression) {\n var feature = expression.feature, modifier = expression.modifier, expValue = expression.value, value = values[feature];\n if (!value) return !1;\n switch (feature) {\n case \"orientation\":\n case \"scan\":\n return value.toLowerCase() === expValue.toLowerCase();\n\n case \"width\":\n case \"height\":\n case \"device-width\":\n case \"device-height\":\n expValue = toPx(expValue), value = toPx(value);\n break;\n\n case \"resolution\":\n expValue = toDpi(expValue), value = toDpi(value);\n break;\n\n case \"aspect-ratio\":\n case \"device-aspect-ratio\":\n case \"device-pixel-ratio\":\n expValue = toDecimal(expValue), value = toDecimal(value);\n break;\n\n case \"grid\":\n case \"color\":\n case \"color-index\":\n case \"monochrome\":\n expValue = parseInt(expValue, 10) || 1, value = parseInt(value, 10) || 0;\n }\n switch (modifier) {\n case \"min\":\n return value >= expValue;\n\n case \"max\":\n return value <= expValue;\n\n default:\n return value === expValue;\n }\n });\n return expressionsMatch && !inverse || !expressionsMatch && inverse;\n });\n }\n function parseQuery(mediaQuery) {\n return mediaQuery.split(\",\").map(function(query) {\n query = query.trim();\n var captures = query.match(RE_MEDIA_QUERY), modifier = captures[1], type = captures[2], expressions = captures[3] || \"\", parsed = {};\n return parsed.inverse = !!modifier && \"not\" === modifier.toLowerCase(), parsed.type = type ? type.toLowerCase() : \"all\", \n expressions = expressions.match(/\\([^\\)]+\\)/g) || [], parsed.expressions = expressions.map(function(expression) {\n var captures = expression.match(RE_MQ_EXPRESSION), feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n return {\n modifier: feature[1],\n feature: feature[2],\n value: captures[2]\n };\n }), parsed;\n });\n }\n function toDecimal(ratio) {\n var numbers, decimal = Number(ratio);\n return decimal || (numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/), decimal = numbers[1] / numbers[2]), \n decimal;\n }\n function toDpi(resolution) {\n var value = parseFloat(resolution);\n switch (String(resolution).match(RE_RESOLUTION_UNIT)[1]) {\n case \"dpcm\":\n return value / 2.54;\n\n case \"dppx\":\n return 96 * value;\n\n default:\n return value;\n }\n }\n function toPx(length) {\n var value = parseFloat(length);\n switch (String(length).match(RE_LENGTH_UNIT)[1]) {\n case \"em\":\n case \"rem\":\n return 16 * value;\n\n case \"cm\":\n return 96 * value / 2.54;\n\n case \"mm\":\n return 96 * value / 2.54 / 10;\n\n case \"in\":\n return 96 * value;\n\n case \"pt\":\n return 72 * value;\n\n case \"pc\":\n return 72 * value / 12;\n\n default:\n return value;\n }\n }\n exports.match = matchQuery, exports.parse = parseQuery;\n var RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i, RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/, RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/, RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/, RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function shallowEqualObjects(objA, objB) {\n if (objA === objB) return !0;\n if (!objA || !objB) return !1;\n var aKeys = Object.keys(objA), bKeys = Object.keys(objB), len = aKeys.length;\n if (bKeys.length !== len) return !1;\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) return !1;\n }\n return !0;\n }\n module.exports = shallowEqualObjects;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n }\n function _defineProperty(obj, key, value) {\n return key in obj ? Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : obj[key] = value, obj;\n }\n var __WEBPACK_IMPORTED_MODULE_0_prop_types__ = __webpack_require__(12), __WEBPACK_IMPORTED_MODULE_0_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prop_types__), stringOrNumber = __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOfType([ __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string, __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number ]), matchers = {\n orientation: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf([ \"portrait\", \"landscape\" ]),\n scan: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf([ \"progressive\", \"interlace\" ]),\n aspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n deviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n colorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n monochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n resolution: stringOrNumber\n }, features = _objectSpread({\n minAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber\n }, matchers), types = {\n all: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n grid: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n aural: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n braille: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n handheld: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n print: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n projection: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n screen: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tty: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tv: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n embossed: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool\n }, all = _objectSpread(_objectSpread({}, types), features);\n matchers.type = Object.keys(types), __webpack_exports__.a = {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n };\n }, function(module, exports, __webpack_require__) {\n var ReactIs = __webpack_require__(4);\n module.exports = __webpack_require__(14)(ReactIs.isElement, !0);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n !function() {\n function isValidElementType(type) {\n return \"string\" == typeof type || \"function\" == typeof type || type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || \"object\" == typeof type && null !== type && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (\"object\" == typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n }\n function isAsyncMode(object) {\n return hasWarnedAboutDeprecatedIsAsyncMode || (hasWarnedAboutDeprecatedIsAsyncMode = !0, \n console.warn(\"The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.\")), \n isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return \"object\" == typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n var hasSymbol = \"function\" == typeof Symbol && Symbol.for, REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103, REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106, REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107, REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108, REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114, REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109, REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110, REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for(\"react.async_mode\") : 60111, REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.concurrent_mode\") : 60111, REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112, REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113, REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for(\"react.suspense_list\") : 60120, REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115, REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116, REACT_BLOCK_TYPE = hasSymbol ? Symbol.for(\"react.block\") : 60121, REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for(\"react.fundamental\") : 60117, REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for(\"react.responder\") : 60118, REACT_SCOPE_TYPE = hasSymbol ? Symbol.for(\"react.scope\") : 60119, AsyncMode = REACT_ASYNC_MODE_TYPE, ConcurrentMode = REACT_CONCURRENT_MODE_TYPE, ContextConsumer = REACT_CONTEXT_TYPE, ContextProvider = REACT_PROVIDER_TYPE, Element = REACT_ELEMENT_TYPE, ForwardRef = REACT_FORWARD_REF_TYPE, Fragment = REACT_FRAGMENT_TYPE, Lazy = REACT_LAZY_TYPE, Memo = REACT_MEMO_TYPE, Portal = REACT_PORTAL_TYPE, Profiler = REACT_PROFILER_TYPE, StrictMode = REACT_STRICT_MODE_TYPE, Suspense = REACT_SUSPENSE_TYPE, hasWarnedAboutDeprecatedIsAsyncMode = !1;\n exports.AsyncMode = AsyncMode, exports.ConcurrentMode = ConcurrentMode, exports.ContextConsumer = ContextConsumer, \n exports.ContextProvider = ContextProvider, exports.Element = Element, exports.ForwardRef = ForwardRef, \n exports.Fragment = Fragment, exports.Lazy = Lazy, exports.Memo = Memo, exports.Portal = Portal, \n exports.Profiler = Profiler, exports.StrictMode = StrictMode, exports.Suspense = Suspense, \n exports.isAsyncMode = isAsyncMode, exports.isConcurrentMode = isConcurrentMode, \n exports.isContextConsumer = isContextConsumer, exports.isContextProvider = isContextProvider, \n exports.isElement = isElement, exports.isForwardRef = isForwardRef, exports.isFragment = isFragment, \n exports.isLazy = isLazy, exports.isMemo = isMemo, exports.isPortal = isPortal, exports.isProfiler = isProfiler, \n exports.isStrictMode = isStrictMode, exports.isSuspense = isSuspense, exports.isValidElementType = isValidElementType, \n exports.typeOf = typeOf;\n }();\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function emptyFunctionThatReturnsNull() {\n return null;\n }\n var ReactIs = __webpack_require__(4), assign = __webpack_require__(15), ReactPropTypesSecret = __webpack_require__(5), checkPropTypes = __webpack_require__(16), has = Function.call.bind(Object.prototype.hasOwnProperty), printWarning = function() {};\n printWarning = function(text) {\n var message = \"Warning: \" + text;\n \"undefined\" != typeof console && console.error(message);\n try {\n throw new Error(message);\n } catch (x) {}\n }, module.exports = function(isValidElement, throwOnDirectAccess) {\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (\"function\" == typeof iteratorFn) return iteratorFn;\n }\n function is(x, y) {\n return x === y ? 0 !== x || 1 / x == 1 / y : x !== x && y !== y;\n }\n function PropTypeError(message) {\n this.message = message, this.stack = \"\";\n }\n function createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n if (componentName = componentName || ANONYMOUS, propFullName = propFullName || propName, \n secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n var err = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\");\n throw err.name = \"Invariant Violation\", err;\n }\n if (\"undefined\" != typeof console) {\n var cacheKey = componentName + \":\" + propName;\n !manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3 && (printWarning(\"You are manually calling a React.PropTypes validation function for the `\" + propFullName + \"` prop on `\" + componentName + \"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\"), \n manualPropTypeCallCache[cacheKey] = !0, manualPropTypeWarningCount++);\n }\n }\n return null == props[propName] ? isRequired ? new PropTypeError(null === props[propName] ? \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `null`.\" : \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `undefined`.\") : null : validate(props, propName, componentName, location, propFullName);\n }\n var manualPropTypeCallCache = {}, manualPropTypeWarningCount = 0, chainedCheckType = checkType.bind(null, !1);\n return chainedCheckType.isRequired = checkType.bind(null, !0), chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n if (getPropType(propValue) !== expectedType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPreciseType(propValue) + \"` supplied to `\" + componentName + \"`, expected `\" + expectedType + \"`.\");\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside arrayOf.\");\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected an array.\");\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + \"[\" + i + \"]\", ReactPropTypesSecret);\n if (error instanceof Error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getClassName(props[propName]) + \"` supplied to `\" + componentName + \"`, expected instance of `\" + expectedClassName + \"`.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var propValue = props[propName], i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null;\n var valuesString = JSON.stringify(expectedValues, function(key, value) {\n return \"symbol\" === getPreciseType(value) ? String(value) : value;\n });\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of value `\" + String(propValue) + \"` supplied to `\" + componentName + \"`, expected one of \" + valuesString + \".\");\n }\n return Array.isArray(expectedValues) ? createChainableTypeChecker(validate) : (printWarning(arguments.length > 1 ? \"Invalid arguments supplied to oneOf, expected an array, got \" + arguments.length + \" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).\" : \"Invalid argument supplied to oneOf, expected an array.\"), \n emptyFunctionThatReturnsNull);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside objectOf.\");\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected an object.\");\n for (var key in propValue) if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error instanceof Error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n if (null == (0, arrayOfTypeCheckers[i])(props, propName, componentName, location, propFullName, ReactPropTypesSecret)) return null;\n }\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`.\");\n }\n if (!Array.isArray(arrayOfTypeCheckers)) return printWarning(\"Invalid argument supplied to oneOfType, expected an instance of array.\"), \n emptyFunctionThatReturnsNull;\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (\"function\" != typeof checker) return printWarning(\"Invalid argument supplied to oneOfType. Expected an array of check functions, but received \" + getPostfixForTypeWarning(checker) + \" at index \" + i + \".\"), \n emptyFunctionThatReturnsNull;\n }\n return createChainableTypeChecker(validate);\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (checker) {\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` key `\" + key + \"` supplied to `\" + componentName + \"`.\\nBad object: \" + JSON.stringify(props[propName], null, \" \") + \"\\nValid keys: \" + JSON.stringify(Object.keys(shapeTypes), null, \" \"));\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case \"number\":\n case \"string\":\n case \"undefined\":\n return !0;\n\n case \"boolean\":\n return !propValue;\n\n case \"object\":\n if (Array.isArray(propValue)) return propValue.every(isNode);\n if (null === propValue || isValidElement(propValue)) return !0;\n var iteratorFn = getIteratorFn(propValue);\n if (!iteratorFn) return !1;\n var step, iterator = iteratorFn.call(propValue);\n if (iteratorFn !== propValue.entries) {\n for (;!(step = iterator.next()).done; ) if (!isNode(step.value)) return !1;\n } else for (;!(step = iterator.next()).done; ) {\n var entry = step.value;\n if (entry && !isNode(entry[1])) return !1;\n }\n return !0;\n\n default:\n return !1;\n }\n }\n function isSymbol(propType, propValue) {\n return \"symbol\" === propType || !!propValue && (\"Symbol\" === propValue[\"@@toStringTag\"] || \"function\" == typeof Symbol && propValue instanceof Symbol);\n }\n function getPropType(propValue) {\n var propType = typeof propValue;\n return Array.isArray(propValue) ? \"array\" : propValue instanceof RegExp ? \"object\" : isSymbol(propType, propValue) ? \"symbol\" : propType;\n }\n function getPreciseType(propValue) {\n if (void 0 === propValue || null === propValue) return \"\" + propValue;\n var propType = getPropType(propValue);\n if (\"object\" === propType) {\n if (propValue instanceof Date) return \"date\";\n if (propValue instanceof RegExp) return \"regexp\";\n }\n return propType;\n }\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case \"array\":\n case \"object\":\n return \"an \" + type;\n\n case \"boolean\":\n case \"date\":\n case \"regexp\":\n return \"a \" + type;\n\n default:\n return type;\n }\n }\n function getClassName(propValue) {\n return propValue.constructor && propValue.constructor.name ? propValue.constructor.name : ANONYMOUS;\n }\n var ITERATOR_SYMBOL = \"function\" == typeof Symbol && Symbol.iterator, FAUX_ITERATOR_SYMBOL = \"@@iterator\", ANONYMOUS = \"<>\", ReactPropTypes = {\n array: createPrimitiveTypeChecker(\"array\"),\n bool: createPrimitiveTypeChecker(\"boolean\"),\n func: createPrimitiveTypeChecker(\"function\"),\n number: createPrimitiveTypeChecker(\"number\"),\n object: createPrimitiveTypeChecker(\"object\"),\n string: createPrimitiveTypeChecker(\"string\"),\n symbol: createPrimitiveTypeChecker(\"symbol\"),\n any: function() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }(),\n arrayOf: createArrayOfTypeChecker,\n element: function() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected a single ReactElement.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }(),\n elementType: function() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected a single ReactElement type.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }(),\n instanceOf: createInstanceTypeChecker,\n node: function() {\n function validate(props, propName, componentName, location, propFullName) {\n return isNode(props[propName]) ? null : new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`, expected a ReactNode.\");\n }\n return createChainableTypeChecker(validate);\n }(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n return PropTypeError.prototype = Error.prototype, ReactPropTypes.checkPropTypes = checkPropTypes, \n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache, ReactPropTypes.PropTypes = ReactPropTypes, \n ReactPropTypes;\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function toObject(val) {\n if (null === val || void 0 === val) throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n return Object(val);\n }\n /*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n var getOwnPropertySymbols = Object.getOwnPropertySymbols, hasOwnProperty = Object.prototype.hasOwnProperty, propIsEnumerable = Object.prototype.propertyIsEnumerable;\n module.exports = function() {\n try {\n if (!Object.assign) return !1;\n var test1 = new String(\"abc\");\n if (test1[5] = \"de\", \"5\" === Object.getOwnPropertyNames(test1)[0]) return !1;\n for (var test2 = {}, i = 0; i < 10; i++) test2[\"_\" + String.fromCharCode(i)] = i;\n if (\"0123456789\" !== Object.getOwnPropertyNames(test2).map(function(n) {\n return test2[n];\n }).join(\"\")) return !1;\n var test3 = {};\n return \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n test3[letter] = letter;\n }), \"abcdefghijklmnopqrst\" === Object.keys(Object.assign({}, test3)).join(\"\");\n } catch (err) {\n return !1;\n }\n }() ? Object.assign : function(target, source) {\n for (var from, symbols, to = toObject(target), s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) hasOwnProperty.call(from, key) && (to[key] = from[key]);\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) propIsEnumerable.call(from, symbols[i]) && (to[symbols[i]] = from[symbols[i]]);\n }\n }\n return to;\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n for (var typeSpecName in typeSpecs) if (has(typeSpecs, typeSpecName)) {\n var error;\n try {\n if (\"function\" != typeof typeSpecs[typeSpecName]) {\n var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.\");\n throw err.name = \"Invariant Violation\", err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (!error || error instanceof Error || printWarning((componentName || \"React class\") + \": type specification of \" + location + \" `\" + typeSpecName + \"` is invalid; the type checker function must return `null` or an `Error` but returned a \" + typeof error + \". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\"), \n error instanceof Error && !(error.message in loggedTypeFailures)) {\n loggedTypeFailures[error.message] = !0;\n var stack = getStack ? getStack() : \"\";\n printWarning(\"Failed \" + location + \" type: \" + error.message + (null != stack ? stack : \"\"));\n }\n }\n }\n var printWarning = function() {}, ReactPropTypesSecret = __webpack_require__(5), loggedTypeFailures = {}, has = Function.call.bind(Object.prototype.hasOwnProperty);\n printWarning = function(text) {\n var message = \"Warning: \" + text;\n \"undefined\" != typeof console && console.error(message);\n try {\n throw new Error(message);\n } catch (x) {}\n }, checkPropTypes.resetWarningCache = function() {\n loggedTypeFailures = {};\n }, module.exports = checkPropTypes;\n }, function(module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n function _objectWithoutProperties(source, excluded) {\n if (null == source) return {};\n var key, i, target = _objectWithoutPropertiesLoose(source, excluded);\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) key = sourceSymbolKeys[i], excluded.indexOf(key) >= 0 || Object.prototype.propertyIsEnumerable.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (null == source) return {};\n var key, i, target = {}, sourceKeys = Object.keys(source);\n for (i = 0; i < sourceKeys.length; i++) key = sourceKeys[i], excluded.indexOf(key) >= 0 || (target[key] = source[key]);\n return target;\n }\n function MediaQuery(_ref) {\n var children = _ref.children, device = _ref.device, onChange = _ref.onChange, settings = _objectWithoutProperties(_ref, [ \"children\", \"device\", \"onChange\" ]), matches = Object(__WEBPACK_IMPORTED_MODULE_0__useMediaQuery__.a)(settings, device, onChange);\n return \"function\" == typeof children ? children(matches) : matches ? children : null;\n }\n __webpack_exports__.a = MediaQuery;\n var __WEBPACK_IMPORTED_MODULE_0__useMediaQuery__ = __webpack_require__(0);\n } ]);\n});\n//# sourceMappingURL=react-responsive.js.map","/**\n * Bulma's media queries\n */\nexport default Object.freeze({\n smallDevices: {\n maxWidth: 480,\n },\n mobile: {\n maxWidth: 768,\n },\n tablet: {\n maxWidth: 1023,\n },\n desktop: {\n minWidth: 1024,\n },\n widescreen: {\n minWidth: 1216,\n },\n fullhd: {\n minWidth: 1408,\n },\n});\n"],"names":["BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","baggageHeaderToDynamicSamplingContext","baggageHeader","isString","baggageObject","acc","curr","currBaggageObject","baggageHeaderToObject","dynamicSamplingContext","key","value","nonPrefixedKey","dynamicSamplingContextToSentryBaggageHeader","sentryPrefixedDSC","dscKey","dscValue","objectToBaggageHeader","baggageEntry","keyOrValue","object","objectKey","objectValue","currentIndex","newBaggageHeader","logger","TRACEPARENT_REGEXP","extractTraceparentData","traceparent","matches","parentSampled","tracingContextFromHeaders","sentryTrace","baggage","traceparentData","traceId","parentSpanId","propagationContext","uuid4","generateSentryTraceHeader","spanId","sampled","sampledString","hasTracingEnabled","maybeOptions","client","getCurrentHub","options","getActiveTransaction","maybeHub","errorsInstrumented","registerErrorInstrumentation","addInstrumentationHandler","errorCallback","activeTransaction","status","SpanRecorder","maxlen","span","Span","spanContext","timestampInSeconds","name","childSpan","opStr","nameStr","idStr","logMessage","httpStatus","spanStatus","spanStatusfromHttpCode","endTimestamp","dropUndefinedKeys","Transaction","transactionContext","hub","incomingDynamicSamplingContext","newName","source","context","unit","newMetadata","finishedSpans","s","prev","current","metadata","transaction","scope","dsc","getDynamicSamplingContextFromClient","maybeSampleRate","TRACING_DEFAULTS","FINISH_REASON_TAG","IDLE_TRANSACTION_FINISH_REASONS","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","IdleTransaction","_idleHub","_idleTimeout","_finalTimeout","_heartbeatInterval","_onScope","callback","spanStartedBeforeTransactionFinish","timeoutWithMarginOfError","spanEndedBeforeFinalTimeout","stringifiedSpan","pushActivity","id","popActivity","restartOnChildSpanChange","reason","heartbeatString","traceHeaders","sample","samplingContext","sampleRate","isValidSampleRate","rate","isNaN","_startTransaction","customSamplingContext","configInstrumenter","transactionInstrumenter","startIdleTransaction","idleTimeout","finalTimeout","onScope","heartbeatInterval","addTracingExtensions","carrier","getMainCarrier","WINDOW","GLOBAL_OBJ","registerBackgroundTabDetection","statusType","bindReporter","metric","reportAllChanges","prevValue","delta","forceReport","generateUniqueID","getNavigationEntryFromPerformanceTiming","timing","type","navigationEntry","getNavigationEntry","getActivationStart","navEntry","initMetric","navigationType","observe","opts","po","list","onHidden","cb","once","onHiddenOrPageHide","event","onCLS","onReport","report","sessionValue","sessionEntries","handleEntries","entries","entry","firstSessionEntry","lastSessionEntry","stopListening","firstHiddenTime","initHiddenTime","trackChanges","timeStamp","getVisibilityWatcher","onFID","visibilityWatcher","handleEntry","reportedMetricIDs","onLCP","lastEntry","isMeasurementValue","_startChild","startTimestamp","ctx","msToSec","time","getBrowserPerformanceAPI","_performanceCursor","_measurements","_lcpEntry","_clsEntry","startTrackingWebVitals","performance","browserPerformanceTimeOrigin","_trackFID","clsCallback","_trackCLS","lcpCallback","_trackLCP","startTrackingLongTasks","startTime","duration","startTrackingInteractions","htmlTreeAsString","timeOrigin","addPerformanceEntries","performanceEntries","responseStartTimestamp","requestStartTimestamp","_addNavigationSpans","_addMeasureSpans","firstHidden","shouldRecord","resourceName","_addResourceSpans","_trackNavigator","oldValue","measurementTimestamp","normalizedValue","fidMark","measurementName","_tagMetricInfo","measureStartTimestamp","measureEndTimestamp","_addPerformanceNavigationTiming","_addRequest","description","eventEnd","end","start","data","navigator","connection","index","DEFAULT_TRACE_PROPAGATION_TARGETS","defaultRequestInstrumentationOptions","instrumentOutgoingRequests","_options","traceFetch","traceXHR","tracePropagationTargets","tracingOrigins","shouldCreateSpanForRequest","enableHTTPTimings","shouldCreateSpan","_","shouldAttachHeadersWithTargets","url","shouldAttachHeaders","spans","handlerData","createdSpan","fetchCallback","addHTTPTimings","xhrCallback","isPerformanceResourceTiming","observer","resourceTimingEntryToSpanData","extractNetworkProtocol","nextHopProtocol","version","_name","char","getAbsoluteTime","resourceTiming","timingSpanData","stringMatchesSomePattern","shouldCreateSpanResult","contentLength","contentLengthNum","parentSpan","method","request","addTracingHeadersToFetchRequest","requestSpan","sentryTraceHeader","sentryBaggageHeader","headers","isInstanceOf","newHeaders","existingBaggageHeader","newBaggageHeaders","xhr","sentryXhrData","SENTRY_XHR_DATA_KEY","setHeaderOnXhr","instrumentRoutingWithDefaults","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","to","from","BROWSER_TRACING_INTEGRATION_ID","DEFAULT_BROWSER_TRACING_OPTIONS","BrowserTracing","clientOptions","instrumentRouting","markBackgroundTransactions","_experiments","clientOptionsTracePropagationTargets","beforeNavigate","isPageloadTransaction","getMetaContent","expandedContext","modifiedContext","finalContext","location","idleTransaction","inflightInteractionTransaction","registerInteractionTransaction","op","currentTransaction","metaName","metaTag","getDomElement","global","checkIfIteratorIsSupported","iteratorSupported","createIterator","items","iterator","serializeParam","deserializeParam","polyfillURLSearchParams","URLSearchParams","searchString","typeofSearchString","_this","i","proto","thisArg","searchArray","checkIfURLSearchParamsSupported","a","b","keys","attributes","attribute","this","checkIfURLIsSupported","u","polyfillURL","_URL","URL","base","doc","baseElement","err","anchorElement","inputElement","searchParams","enableSearchUpdate","enableSearchParamsUpdate","methodName","search","linkURLWithAnchorAttribute","attributeName","expectedPort","addPortToOrigin","blob","getOrigin","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performanceNowModule","hr","now","require$$0","root","vendors","suffix","raf","caf","last","queue","frameDuration","_now","next","cp","e","handle","rafModule","fn","raf_1","n","v","l","p","q","w","A","c","B","m","k","g","h","r","t","f","d","x","C","y","D","z","isAbsolute","pathname","spliceOne","resolvePathname","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","up","part","result","valueOf","obj","valueEqual","item","aValue","bValue","isProduction","prefix","invariant","condition","message","provided","addLeadingSlash","path","stripLeadingSlash","hasBasename","stripBasename","stripTrailingSlash","parsePath","hash","hashIndex","searchIndex","createPath","createLocation","state","currentLocation","_extends","locationsAreEqual","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","listeners","appendListener","isActive","listener","notifyListeners","_len","args","_key","canUseDOM","getConfirmation","supportsHistory","ua","supportsPopStateOnHashChange","supportsGoWithoutReloadUsingHash","isExtraneousPopstateEvent","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","props","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","setState","nextState","history","handlePopState","handlePop","handleHashChange","forceNextPop","ok","revertPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","initialLocation","createHref","push","href","prevIndex","nextKeys","replace","goBack","goForward","listenerCount","checkDOMListeners","isBlocked","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","stripHash","getHashPath","pushHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","encodePath","decodePath","ignorePath","locationsAreEqual$$1","encodedPath","prevLocation","allPaths","baseTag","hashChanged","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","MAX_SIGNED_31_BIT_INT","commonjsGlobal","getUniqueId","objectIs","createEventEmitter","handlers","handler","newValue","changedBits","onlyChild","children","createReactContext","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","Provider","_Component","_inheritsLoose","_proto","nextProps","Component","PropTypes","Consumer","_Component2","_this2","observedBits","_proto2","React","isarray","arr","pathToRegexpModule","pathToRegexp","pathToRegexp_1","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","str","tokens","defaultDelimiter","res","escaped","offset","capture","group","modifier","asterisk","partial","repeat","optional","delimiter","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","flags","encode","token","segment","j","attachKeys","re","regexpToRegexp","groups","arrayToRegexp","parts","regexp","stringToRegexp","strict","route","endsWithDelimiter","createNamedContext","createContext","historyContext","Router","_React$Component","Lifecycle","prevProps","cache","cacheLimit","cacheCount","compilePath","generator","generatePath","params","Redirect","computedMatch","_ref$push","staticContext","self","cache$1","cacheLimit$1","cacheCount$1","compilePath$1","cacheKey","pathCache","matchPath","_options$exact","exact","_options$strict","_options$sensitive","sensitive","paths","matched","_compilePath","match","values","isExact","memo","isEmptyChildren","Route","context$1","_this$props","component","render","addBasename","createURL","staticHandler","noop","Switch","element","child","withRouter","displayName","wrappedComponentRef","remainingProps","_objectWithoutPropertiesLoose","hoistStatics","useContext","useHistory","useLocation","useParams","useRouteMatch","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","forwardRef","isModifiedEvent","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","rest","target","ex","Link","_ref2","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","joinClassnames","classnames","_ref$ariaCurrent","ariaCurrent","_ref$activeClassName","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","className","style","voidElements","o","_excluded","_excluded2","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","hasChildren","node","checkLength","getChildren","hasValidReactChildren","isValidElement","getAsArray","mergeProps","newTarget","nodesToString","i18nOptions","stringNode","childrenArray","keepArray","childIndex","childPropsCount","shouldKeepChild","childChildren","content","warn","_typeof","format","clone","_objectWithoutProperties","renderNodes","targetString","i18n","combinedTOpts","shouldUnescape","emptyChildrenButNeedsHandling","getData","childs","ast","HTML","renderInner","rootReactNode","mappedChildren","mapAST","pushTranslatedJSX","inner","mem","isVoid","cloneElement","reactNode","astNode","reactNodes","astNodes","translationContent","tmp","isElement","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","_inner","_inner2","createElement","_inner3","_inner4","wrapTextNodes","_content","Trans","count","parent","i18nKey","_ref$tOptions","tOptions","defaults","components","ns","i18nFromProps","tFromProps","additionalProps","I18nContext","i18nFromContext","defaultNSFromContext","getI18n","warnOnce","reactI18nextOptions","getDefaults","namespaces","hashTransKey","interpolationOverride","translation","useAsParent","objectToString","isError","wat","isBuiltin","isPlainObject","isEvent","isSyntheticEvent","isVueViewModel","isGlobalObj","getGlobalObject","DEFAULT_MAX_STRING_LENGTH","elem","currentElem","MAX_TRAVERSE_HEIGHT","out","height","len","separator","sepLength","nextStr","keyAttrs","maxStringLength","_htmlElementAsString","el","classes","attr","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","PREFIX","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","console","wrappedFuncs","wrappedLevels","level","originalConsoleMethod","makeLogger","enabled","fill","replacementFactory","original","wrapped","markFunctionWrapped","addNonEnumerableProperty","convertToPlainObject","getOwnProperties","newObj","serializeEventTarget","extractedProps","property","defaultFunctionName","getFunctionName","supportsFetch","isNativeFetch","func","supportsNativeFetch","sandbox","chrome","isChromePackagedApp","hasHistoryApi","instrumented","instrument","instrumentConsole","instrumentDOM","instrumentXHR","instrumentFetch","instrumentHistory","instrumentError","instrumentUnhandledRejection","triggerHandlers","log","originalFetch","parseFetchArgs","response","error","hasProp","prop","getUrlFromResource","resource","fetchArgs","arg","xhrproto","originalOpen","xhrInfo","onreadystatechangeHandler","readyStateArgs","setRequestHeaderArgs","header","originalSend","lastHref","oldOnPopState","historyReplacementFunction","originalHistoryFunction","debounceDuration","debounceTimerID","lastCapturedEvent","shouldShortcircuitPreviousDebounce","previous","shouldSkipDOMEvent","makeDOMEventHandler","globalListener","triggerDOMHandler","globalDOMEventHandler","originalAddEventListener","handlerForType","originalRemoveEventListener","_oldOnErrorHandler","msg","line","column","_oldOnUnhandledRejectionHandler","memoBuilder","hasWeakSet","memoize","unmemoize","getFirstException","addExceptionMechanism","newMechanism","firstException","defaultMechanism","currentMechanism","mergedData","normalize","input","depth","maxProperties","visit","stringified","stringifyValue","remainingDepth","valueWithToJSON","jsonValue","normalized","numAdded","visitable","visitKey","visitValue","objName","getConstructorName","prototype","ExtraErrorData","addGlobalEventProcessor","hint","exceptionName","errorData","contexts","normalizedErrorData","nativeKeys","extraErrorInfo","serializedError","oO","HttpClient","requestInfo","requestInit","_getRequest","requestHeaders","responseHeaders","requestCookies","responseCookies","cookieHeader","cookies","cookieString","cookie","givenRequestTarget","range","dsn","fetchProject","projectId","apiCall","createQueryString","useGoogleTracking","trackingIds","useEffect","ScrollToTop","PureComponent","ScrollToTop$1","NotFoundPageContainer","NotFoundPageContainer$1","withTranslation","INFINITY","symbolTag","reAsciiWord","reLatin","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","deburredLetters","freeGlobal","freeSelf","arrayReduce","array","iteratee","accumulator","initAccum","length","asciiToArray","string","asciiWords","basePropertyOf","deburrLetter","hasUnicode","hasUnicodeWord","stringToArray","unicodeToArray","unicodeWords","objectProto","Symbol","symbolProto","symbolToString","baseSlice","baseToString","isSymbol","castSlice","createCaseFirst","toString","strSymbols","chr","trailing","createCompounder","words","deburr","isObjectLike","camelCase","word","capitalize","upperFirst","guard","lodash_camelcase","HeaderSignIn","redirectToSignInPath","HeaderSignIn$1","SIGN_OUT_PATH","signOutPath","CSRF_TOKEN","csrfToken","HeaderSignOut","getUserToken","username","jwtDecode","HeaderSignOut$1","LocaleSelector","locales","meta","selectRef","useRef","width","setWidth","useState","setValue","locale","onChange","Routes","populatePath","renderOptions","LANGUAGES","_a","defaultLanguage","currentLanguage","Logo","NextDoorIcon","SocialShareLinks","title","_b","facebookUrl","facebookShareUrl","twitterUrl","twitterShareUrl","linkedinUrl","linkedinShareUrl","emailUrl","emailShareUrl","nextDoorUrl","nextdoorShareLink","classNames","SocialShareToolbar","expanded","setExpanded","useTranslation","toggleExpanded","currentValue","Header","engagement","project","ideaBoard","projectHub","isLastSection","discussionTopic","showAuth","supportedLanguages","renderLocaleSelector","language","userAuthHeader","userAuthenticated","isEmbedded","Footer","routes","storyTheme","Footer$1","SocialLink","iconClass","classicTheme","SocialFooter","contactEmail","urlFormatter","factory","module","__WEBPACK_EXTERNAL_MODULE_1__","modules","__webpack_require__","moduleId","installedModules","exports","getter","__webpack_exports__","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_arr","_n","_d","_e","_s","_i","__WEBPACK_IMPORTED_MODULE_0_react__","__WEBPACK_IMPORTED_MODULE_0_react___default","__WEBPACK_IMPORTED_MODULE_1_matchmediaquery__","__WEBPACK_IMPORTED_MODULE_1_matchmediaquery___default","__WEBPACK_IMPORTED_MODULE_2_hyphenate_style_name__","__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects__","__WEBPACK_IMPORTED_MODULE_3_shallow_equal_objects___default","__WEBPACK_IMPORTED_MODULE_4__toQuery__","__WEBPACK_IMPORTED_MODULE_5__Context__","makeQuery","settings","hyphenateKeys","useIsUpdate","ref","useDevice","deviceFromProps","deviceFromContext","getDevice","_React$useState","_React$useState2","device","setDevice","newDevice","useQuery","getQuery","_React$useState3","_React$useState4","query","setQuery","newQuery","useMatchMedia","getMatchMedia","_React$useState5","_React$useState6","mq","setMq","isUpdate","useMatches","mediaQuery","_React$useState7","_React$useState8","setMatches","updateMatches","useMediaQuery","deviceSettings","toHyphenLower","hyphenateStyleName","hName","uppercasePattern","msPattern","__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__","__WEBPACK_IMPORTED_MODULE_1__mediaQuery__","negate","cond","keyVal","realKey","join","conds","toQuery","rules","Context","__WEBPACK_IMPORTED_MODULE_0__useMediaQuery__","__WEBPACK_IMPORTED_MODULE_1__Component__","__WEBPACK_IMPORTED_MODULE_2__toQuery__","__WEBPACK_IMPORTED_MODULE_3__Context__","Mql","forceStatic","addListener","mql","removeListener","update","evt","dispose","dynamicMatch","staticMatch","matchMedia","matchQuery","parseQuery","inverse","typeMatch","expressionsMatch","expression","feature","expValue","toPx","toDpi","toDecimal","captures","RE_MEDIA_QUERY","expressions","parsed","RE_MQ_EXPRESSION","RE_MQ_FEATURE","ratio","numbers","decimal","resolution","RE_RESOLUTION_UNIT","RE_LENGTH_UNIT","shallowEqualObjects","objA","objB","aKeys","bKeys","__WEBPACK_IMPORTED_MODULE_0_prop_types__","__WEBPACK_IMPORTED_MODULE_0_prop_types___default","stringOrNumber","matchers","features","types","all","ReactIs","isValidElementType","REACT_FRAGMENT_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_LAZY_TYPE","REACT_MEMO_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","REACT_BLOCK_TYPE","typeOf","$$typeof","REACT_ELEMENT_TYPE","REACT_ASYNC_MODE_TYPE","$$typeofType","REACT_PORTAL_TYPE","isAsyncMode","hasWarnedAboutDeprecatedIsAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","hasSymbol","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","emptyFunctionThatReturnsNull","assign","ReactPropTypesSecret","checkPropTypes","has","printWarning","text","throwOnDirectAccess","getIteratorFn","maybeIterable","iteratorFn","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","is","PropTypeError","createChainableTypeChecker","validate","checkType","isRequired","propName","componentName","propFullName","secret","ANONYMOUS","manualPropTypeCallCache","manualPropTypeWarningCount","chainedCheckType","createPrimitiveTypeChecker","expectedType","propValue","getPropType","getPreciseType","createArrayOfTypeChecker","typeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","createEnumTypeChecker","expectedValues","valuesString","createObjectOfTypeChecker","propType","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","createShapeTypeChecker","shapeTypes","createStrictShapeTypeChecker","isNode","step","ReactPropTypes","toObject","val","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","test1","test2","test3","letter","typeSpecs","getStack","typeSpecName","loggedTypeFailures","stack","excluded","sourceSymbolKeys","sourceKeys","MediaQuery","mediaQueries"],"mappings":"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"}