{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@bugsnag/js/browser/notifier.js","webpack:///./node_modules/@bugsnag/plugin-react/dist/bugsnag-react.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/@bugsnag/browser/dist/bugsnag.js","webpack:///./node_modules/@bugsnag/cuid/lib/fingerprint.browser.js","webpack:///./node_modules/@bugsnag/cuid/lib/is-cuid.js","webpack:///./app/javascript/images sync ^\\.\\/.*$","webpack:///./app/javascript/src/forms.js","webpack:///./node_modules/@bugsnag/core-performance/dist/validation.js","webpack:///./node_modules/@bugsnag/core-performance/dist/attributes.js","webpack:///./node_modules/@bugsnag/core-performance/dist/config.js","webpack:///./node_modules/@bugsnag/core-performance/dist/batch-processor.js","webpack:///./node_modules/@bugsnag/core-performance/dist/events.js","webpack:///./node_modules/@bugsnag/core-performance/dist/span.js","webpack:///./node_modules/@bugsnag/core-performance/dist/trace-id-to-sampling-rate.js","webpack:///./node_modules/@bugsnag/core-performance/dist/delivery.js","webpack:///./node_modules/@bugsnag/core-performance/dist/probability-fetcher.js","webpack:///./node_modules/@bugsnag/core-performance/dist/probability-manager.js","webpack:///./node_modules/@bugsnag/core-performance/dist/processor.js","webpack:///./node_modules/@bugsnag/core-performance/dist/sampler.js","webpack:///./node_modules/@bugsnag/core-performance/dist/span-context.js","webpack:///./node_modules/@bugsnag/core-performance/dist/time.js","webpack:///./node_modules/@bugsnag/core-performance/dist/span-factory.js","webpack:///./node_modules/@bugsnag/core-performance/dist/persistence.js","webpack:///./node_modules/@bugsnag/core-performance/dist/retry-queue.js","webpack:///./node_modules/@bugsnag/delivery-fetch-performance/dist/delivery.js","webpack:///./node_modules/@bugsnag/request-tracker-performance/dist/network-request-callback.js","webpack:///./node_modules/@bugsnag/request-tracker-performance/dist/request-tracker.js","webpack:///./node_modules/@bugsnag/request-tracker-performance/dist/url-helpers.js","webpack:///./node_modules/@bugsnag/request-tracker-performance/dist/request-tracker-fetch.js","webpack:///./node_modules/@bugsnag/request-tracker-performance/dist/request-tracker-xhr.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/send-page-attributes.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/page-load-phase-spans.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/default-routing-provider.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/full-page-load-plugin.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/network-request-plugin.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/resource-load-plugin.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/route-change-plugin.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/clock.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/routing-provider.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/id-generator.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/on-settle/settler.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/on-settle/dom-mutation-settler.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/on-settle/load-event-end-settler.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/on-settle/request-settler.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/on-settle/settler-aggregate.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/persistence.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/web-vitals.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/browser.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/on-settle/index.js","webpack:///./node_modules/@bugsnag/core-performance/dist/core.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/backgrounding-listener.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/span-attributes-source.js","webpack:///./node_modules/@bugsnag/core-performance/dist/clock.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/resource-attributes-source.js","webpack:///./node_modules/@bugsnag/browser-performance/dist/config.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/@bugsnag/cuid/index.js","webpack:///./node_modules/@bugsnag/cuid/lib/pad.js","webpack:///./app/javascript/images/jasper-signature.png","webpack:///./app/javascript/images/latief-signature.png","webpack:///./app/javascript/images/logo.png"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_$src_1","_extends","assign","target","arguments","length","source","apply","this","_assertThisInitialized","self","ReferenceError","_inheritsLoose","subClass","superClass","constructor","_setPrototypeOf","setPrototypeOf","__proto__","BugsnagPluginReact","globalReact","window","React","lazy","undefined","Error","load","client","ErrorBoundary","createClass","createErrorBoundary","BugsnagPluginReactLazyInitializer","formatComponentStack","str","lines","split","ret","line","len","_React$Component","props","_this","state","error","info","handleClearError","_proto2","setState","componentDidCatch","onError","handledState","severity","unhandled","severityReason","type","event","Event","componentStack","addMetadata","_notify","render","FallbackComponent","createElement","clearError","children","Component","f","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","document","querySelector","content","cspNonce","expando","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","setData","$","Array","slice","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","forEach","input","CustomEvent","fire","preventDefault","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","result","defaultPrevented","obj","data","dispatchEvent","stopEverything","e","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","script","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","toUpperCase","indexOf","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","setAttribute","head","appendChild","removeChild","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","push","checked","map","encodeURIComponent","join","formElements","form","filter","el","allowAction","handleConfirm","confirm","message","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","link","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","args","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","ajaxPrefilter","originalOptions","start","_rails_loaded","setTimeout","channels","require","keys","webpackEmptyContext","req","code","resolve","id","define","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","_$filter_12","item","concat","_$includes_13","x","_$isArray_14","toString","_hasDontEnumBug","propertyIsEnumerable","_dontEnums","_$keys_15","prop","_$intRange_24","min","max","Infinity","parseInt","_$listOfFunctions_25","_$stringWithLength_26","_$config_5","defaultErrorTypes","unhandledExceptions","unhandledRejections","schema","apiKey","defaultValue","validate","appVersion","appType","autoDetectErrors","enabledErrorTypes","allowPartialObject","providedKeys","defaultKeys","k","onSession","onBreadcrumb","endpoints","notify","sessions","autoTrackSessions","enabledReleaseStages","releaseStage","maxBreadcrumbs","enabledBreadcrumbTypes","maybeType","context","user","metadata","logger","redactedKeys","test","plugins","featureFlags","feature","_$assign_11","_$map_16","_$config_1","console","debug","getPrefixedConsole","consoleLog","log","consoleMethod","_$Breadcrumb_3","Breadcrumb","timestamp","Date","toJSON","metaData","_$stackframe_34","root","factory","amd","StackFrame","_isNumber","isNaN","parseFloat","isFinite","_capitalize","charAt","substring","_getter","booleanProps","numericProps","stringProps","arrayProps","getArgs","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","Boolean","j","Number","String","_$errorStackParser_31","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","stacktrace","parseOpera","stack","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","parts","exec","sanitizedLine","tokens","locationParts","pop","functionName","fileName","lineNumber","columnNumber","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","argsRaw","functionCall","shift","_$errorStackParser_10","_$safeJsonStringify_30","replacer","space","opts","redactedPaths","stringify","prepareObjForSerialization","MAX_DEPTH","MAX_EDGES","MIN_PRESERVED_DEPTH","REPLACEMENT_NODE","isError","throwsMessage","err","find","haystack","needle","isDescendent","paths","path","shouldRedact","patterns","toLowerCase","__isArray_30","safelyGetProp","seen","edges","visit","edgesExceeded","fResult","eResult","aResult","add","existingFeatures","existingFeatureKeys","variant","existingIndex","merge","newFeatures","toEventApi","_ref","flag","featureFlag","clear","features","featuresIndex","_$featureFlagDelegate_18","_$hasStack_19","__isError_32","_$iserror_20","__add_22","section","keyOrObj","maybeVal","_updates","updates","__clear_22","_$metadataDelegate_22","_$stackGenerator_33","StackGenerator","backtrace","maxStackSize","curr","callee","RegExp","$1","caller","errorClass","errorMessage","originalError","defaultHandledState","groupingHash","_handledState","app","device","request","breadcrumbs","threads","_metadata","_features","_featuresIndex","_user","_session","errors","createBugsnagError","__type","_proto","getMetadata","clearMetadata","addFeatureFlag","addFeatureFlags","getFeatureFlags","clearFeatureFlag","clearFeatureFlags","getUser","setUser","email","payloadVersion","exceptions","er","session","formatStackframe","frame","file","normaliseFunctionName","inProject","ensureString","getCauseStack","cause","getStacktrace","errorFramesToSkip","backtraceFramesToSkip","maybeError","tolerateNonErrors","component","_normaliseError","normaliseError","internalFrames","makeSerialisable","_event$errors","causes","normalisedCauses","createAndLogInputError","reason","verb","warn","hasNecessaryFields","_$Event_6","_$asyncEvery_7","cb","index","next","_$callbackRunner_9","callbacks","onCallbackError","runMaybeAsyncCallback","then","_$syncCallbackRunner_23","callbackArg","callbackType","ignore","cbs","_$pad_29","num","size","substr","env","globalCount","mimeTypesLength","navigator","mimeTypes","clientId","userAgent","_$fingerprint_28","blockSize","base","discreteValues","pow","randomBlock","random","safeCounter","cuid","getTime","fingerprint","_$cuid_27","_$Session_35","Session","startedAt","_handled","_unhandled","events","handled","_track","__add_4","__clear_4","__merge_4","noop","Client","configuration","internalPlugins","notifier","_notifier","_config","_schema","_delivery","sendSession","sendEvent","_logger","_plugins","_breadcrumbs","_context","_cbs","sp","b","_configure","pl","_loadPlugin","_depth","getContext","setContext","plugin","configSchema","_reduce","config","generateConfigErrorMessage","getPlugin","_setDelivery","startSession","version","_sessionDelegate","addOnError","front","removeOnError","_addOnSessionPayload","addOnSession","removeOnSession","addOnBreadcrumb","removeOnBreadcrumb","pauseSession","resumeSession","leaveBreadcrumb","crumb","_isBreadcrumbTypeEnabled","types","postReportCallback","_this2","originalSeverity","shouldSend","unhandledOverridden","rawInput","_$Client_4","_$jsonPayload_21","EVENT_REDACTION_PATHS","payload","_$delivery_36","win","getApiUrl","XDomainRequest","onload","onerror","toFixed","endpoint","isoDate","matchPageProtocol","_matchPageProtocol","pageProtocol","_$delivery_37","toISOString","appStart","reset","_$app_38","now","duration","_$context_39","pathname","_$pad_43","__env_42","__globalCount_42","__prop_42","__mimeTypesLength_42","__clientId_42","_$fingerprint_42","__c_41","__blockSize_41","__base_41","__discreteValues_41","__randomBlock_41","__safeCounter_41","__cuid_41","_$cuid_41","BUGSNAG_ANONYMOUS_ID_KEY","getDeviceId","storage","localStorage","getItem","setItem","_$device_40","nav","locale","browserLanguage","systemLanguage","userLanguage","language","screen","orientation","documentElement","clientWidth","clientHeight","generateAnonymousId","collectUserIp","setDefaultUserId","time","eventOrSession","_$request_44","_$session_45","sessionDelegate","sessionClient","_pausedSession","_$clientIp_46","clientIp","_$consoleBreadcrumbs_47","CONSOLE_LOG_METHODS","original","_len","_key","arg","stringified","_restore","MAX_LINE_LENGTH","MAX_SCRIPT_LENGTH","_$inlineScriptContent_48","doc","trackInlineScripts","originalLocation","DOMContentLoaded","attachEvent","getHtml","outerHTML","prev","_lastScript","updateLastScript","getCurrentScript","currentScript","scripts","getElementsByTagName","addSurroundingCode","htmlLines","zeroBasedLine","end","cleanUrl","_setTimeout","__proxy","__traceOriginalScript","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","__trace__","isEventHandlerObj","handleEvent","_$interactionBreadcrumbs_49","targetText","targetSelector","getNodeText","getNodeSelector","trim","textContent","innerText","tagName","className","childNodes","_$navigationBreadcrumbs_50","drop","oldURL","from","relativeLocation","to","newURL","getCurrentState","history","replaceState","wrapHistoryFn","pushState","a","search","hash","stateChangeToMetadata","title","currentPath","prevState","orig","resetEventCount","BREADCRUMB_TYPE","_$networkBreadcrumbs_51","_ignoredUrls","ignoredUrls","monkeyPatchXMLHttpRequest","monkeyPatchFetch","handleFetchSuccess","handleFetchError","nativeOpen","requestSetupKey","handleXHRError","handleXHRLoad","fetch","polyfill","oldFetch","_arguments","urlOrRequest","Promise","reject","_$throttle_52","maxEvents","_$stripQueryString_53","strip","allFrames","_strip","_$onerror_54","prevOnError","messageOrEvent","lineNo","charNo","decorateStack","extraParameters","culprit","isActualNumber","errorCharacter","_$unhandledRejection_55","listener","isBluebird","fixBluebirdStacktrace","_event$addMetadata","onunhandledrejection","promise","_$notifier_2","__schema_2","Bugsnag","_client","createClient","bugsnag","isStarted","pad","webpackContext","webpackContextResolve","wrapper","radio","isBoolean","isObject","isArray","isNumber","isString","isStringWithLength","isStringOrRegExpArray","every","isSpanContext","traceId","isValid","_slicedToArray","_arrayWithHoles","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","initialValues","attributes","set","remove","delete","toJson","_ref2","attribute","isInteger","intValue","doubleValue","boolValue","stringValue","attributeToJson","ResourceAttributes","sdkName","sdkVersion","Map","super","isStringArray","configure","isPlugin","BatchProcessor","delivery","retryQueue","sampler","probabilityManager","encoder","spans","timeout","flushQueue","flush","stop","clearTimeout","batchInactivityTimeoutMs","span","includes","maximumBatchSize","async","fetchingInitialProbability","batch","prepareBatch","encode","batchTime","samplingProbability","setProbability","probability","spanProbability","raw","sample","SpanEvents","clock","timeUnixNano","toUnixTimestampNanoseconds","startTime","parentSpanId","kind","samplingRate","position","traceIdToSamplingRate","addEvent","endTime","_samplingProbability","coreSpanOptionSchema","getDefaultValue","parentContext","makeCurrentContext","isFirstClass","resourceAttributeSource","resourceAttributes","jsonSpans","spanId","startTimeUnixNano","endTimeUnixNano","resourceSpans","resource","scopeSpans","headers","generateSamplingHeader","spanCounts","existingValue","rawProbabilities","pairs","rawProbability","retryCodes","Set","ProbabilityFetcher","timeBetweenRetries","PROBABILITY_REFRESH_MILLISECONDS","ProbabilityManager","static","persistence","probabilityFetcher","persistedProbability","initialProbabilityTime","initialTimeoutDuration","lastProbabilityTime","resolveInitialProbability","fetchNewProbabilityIn","newProbability","save","milliseconds","lastProbabilityTimeBeforeTimeout","getNewProbability","BufferingProcessor","scaleProbabilityToMatchSamplingRate","Sampler","initialProbability","_probability","scaledProbability","scaled","shouldSample","_regeneratorRuntime","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","iter","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","catch","thrown","delegateYield","DefaultSpanContextStorage","backgroundingListener","contextStack","isInForeground","onBackgroundStateChange","onStateChange","_callee","span1","span2","current","removeClosedContexts","first","timeToNumber","convert","processor","idGenerator","spanAttributesSource","spanContextStorage","openSpans","WeakSet","startSpan","safeStartTime","generate","endSpan","requestAttributes","spanEnded","toPublicApi","safeEndTime","validateSpanOptions","warnings","cleanOptions","spanOptions","InMemoryPersistence","persistedItems","toPersistedPayload","InMemoryQueue","retryQueueMaxSize","requestQueue","payloads","spanCount","reduce","count","countSpansInPayload","samplingProbabilityFromHeaders","asNumber","defaultNetworkRequestCallback","networkRequestInfo","isNetworkRequestCallback","RequestTracker","onStart","startCallback","results","onRequestEnd","endContext","extraRequestHeaders","isDefined","argument","getAbsoluteUrl","baseUrl","absoluteUrl","URL","endsWith","_a","isRequest","defaultSendPageAttributes","referrer","getPermittedAttributes","sendPageAttributes","isSendPageAttributes","allowedTypes","defaultRouteResolver","createNoopRoutingProvider","resolveRoute","listenForRouteChanges","startRouteChangeSpan","createDefaultRoutingProvider","onSettle","ev","originalPushState","absoluteURL","baseURI","spanFactory","webVitals","performance","wasBackgrounded","autoInstrumentFullPageLoads","permittedAttributes","route","routingProvider","createPageLoadPhaseSpan","phase","shouldOmitSpan","entries","getEntriesByType","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","TCPHandshakeEnd","secureConnectionStart","connectEnd","connectStart","requestStart","responseStart","responseEnd","domContentLoadedEventStart","domContentLoadedEventEnd","loadEventStart","loadEventEnd","instrumentPageLoadPhaseSpans","attachTo","permittedPrefixes","fetchTracker","xhrTracker","configEndpoint","networkRequestCallback","trackRequest","startContext","shouldTrackRequest","defaultRequestInfo","propagateTraceContext","getExtraRequestHeaders","autoInstrumentNetworkRequests","some","prefix","startsWith","sampled","traceparent","buildTraceparentHeader","currentSpanContext","getHttpVersion","ResourceLoadPlugin","PerformanceObserverClass","supportedEntryTypes","observer","list","getEntries","initiatorType","httpFlavor","nextHopProtocol","encodedBodySize","decodedBodySize","responseStatus","observe","buffered","entryTypes","routeChangeSpanOptionSchema","trigger","autoInstrumentRouteChanges","previousUrl","previousRoute","stringUrl","routeChangeSpanOptions","endTimeOrOptions","urlObject","ensureUrl","recalculateTimeOrigin","timeOrigin","abs","isRoutingProvider","toHex","hex","bits","bytes","Uint8Array","randomValues","crypto","getRandomValues","Settler","settled","subscribe","isSettled","unsubscribe","settle","settledTime","MutationObserver","restart","subtree","childList","characterData","settleUsingPerformance","entryType","isPerformanceNavigationTiming","timing","navigationStart","requestTracker","urlsToIgnore","outstandingRequests","onRequestStart","setUrlsToIgnore","shouldIgnoreUrl","regexp","settlers","settler","settlersAreSettled","WebVitals","observers","observeLargestContentfulPaint","observeLayoutShift","firstContentfulPaint","timeToFirstByte","firstInputDelay","cumulativeLayoutShift","largestContentfulPaint","disconnect","getEntriesByName","processingStart","hadRecentInput","previousStartTime","firstStartTime","BugsnagPerformance","createNoopOnSettle","createNoopClient","visibilityState","backgroundingListenerCallback","backgroundStateChanged","newState","createBrowserBackgroundingListener","defaultAttributes","getValue","permitted","createSpanAttributesSource","calculatedTimeOrigin","date","millisecondsToNanoseconds","round","createClock","makeBrowserPersistence","resourceAttributesSource","deviceId","userAgentData","platform","mobile","maybeAnonymousId","anonymousId","createResourceAttributesSource","fetchRequestTracker","global","originalFetch","init","inputIsRequest","createStartContext","_requestTracker$start","modifiedParams","extraHeaders","Headers","isHeadersInstance","_ref3","_ref4","has","mergeInitRequestHeaders","mergeInputRequestHeaders","mergeRequestHeaders","createFetchRequestTracker","xhrRequestTracker","trackedRequests","WeakMap","requestHandlers","originalOpen","rest","originalSend","requestData","existingHandler","onReadyStateChange","createXmlHttpRequestTracker","PerformanceObserver","domMutationSettler","fetchRequestSettler","xhrRequestSettler","loadEventEndSettler","onSettlePlugin","cooldown","settleIgnoreUrls","createOnSettle","bufferingProcessor","cleanConfiguration","validateConfig","deliveryFactory","manager","retryQueueFactory","Constructor","platformExtensions","keepalive","statusCode","createFetchDeliveryFactory","hostname","defaultRoutingProvider","BugsnagPerformance$1","bugsnagConfig","process","createCommonjsModule","sparkMd5","hex_chr","md5cycle","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","md51_array","subarray","rhex","toUtf8","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","fromCharCode","concatenateArrayBuffers","second","byteLength","buffer","hexToBinaryString","SparkMD5","clamp","targetArray","sourceArray","begin","appendBinary","contents","_buff","_length","_hash","_finish","getState","destroy","hashBinary","classCallCheck","instance","defineProperties","descriptor","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","chunkSize","chunkCount","ceil","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","getMetaValue","findElement","findElements","toArray$1","eventInit","initEvent","BlobRecord","checksum","filename","content_type","byte_size","responseType","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","DirectUpload","upload","messages","DirectUploadController","directUpload","dispatch","hiddenInput","insertAdjacentElement","dispatchError","signed_id","progress","loaded","total","alert","uploadRequestDidProgress","inputSelector","DirectUploadsController","files","controllers","createDirectUploadControllers","startNextController","controller","processingAttribute","submitButtonsByForm","started","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","hasAttribute","disable","removeAttribute","enable","submitForm","focus","autostart","ActiveStorage","isCuid"],"mappings":"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","file":"js/application-df13503c4998d5cbf3aa.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 202);\n","module.exports = require('@bugsnag/browser');","(function (f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f();\n } else if (typeof define === \"function\" && define.amd) {\n define([], f);\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window;\n } else if (typeof global !== \"undefined\") {\n g = global;\n } else if (typeof self !== \"undefined\") {\n g = self;\n } else {\n g = this;\n }\n g.BugsnagPluginReact = f();\n }\n})(function () {\n var define, module, exports;\n var _$src_1 = {};\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n }\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n _$src_1 = /*#__PURE__*/function () {\n function BugsnagPluginReact() {\n // Fetch React from the window object, if it exists\n var globalReact = typeof window !== 'undefined' && window.React;\n this.name = 'react';\n this.lazy = arguments.length === 0 && !globalReact;\n if (!this.lazy) {\n this.React = (arguments.length <= 0 ? undefined : arguments[0]) || globalReact;\n if (!this.React) throw new Error('@bugsnag/plugin-react reference to `React` was undefined');\n }\n }\n var _proto = BugsnagPluginReact.prototype;\n _proto.load = function load(client) {\n if (!this.lazy) {\n var ErrorBoundary = createClass(this.React, client);\n ErrorBoundary.createErrorBoundary = function () {\n return ErrorBoundary;\n };\n return ErrorBoundary;\n }\n var BugsnagPluginReactLazyInitializer = function () {\n throw new Error(\"@bugsnag/plugin-react was used incorrectly. Valid usage is as follows:\\nPass React to the plugin constructor\\n\\n `Bugsnag.start({ plugins: [new BugsnagPluginReact(React)] })`\\nand then call `const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary()`\\n\\nOr if React is not available until after Bugsnag has started,\\nconstruct the plugin with no arguments\\n `Bugsnag.start({ plugins: [new BugsnagPluginReact()] })`,\\nthen pass in React when available to construct your error boundary\\n `const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)`\");\n };\n BugsnagPluginReactLazyInitializer.createErrorBoundary = function (React) {\n if (!React) throw new Error('@bugsnag/plugin-react reference to `React` was undefined');\n return createClass(React, client);\n };\n return BugsnagPluginReactLazyInitializer;\n };\n return BugsnagPluginReact;\n }();\n var formatComponentStack = function (str) {\n var lines = str.split(/\\s*\\n\\s*/g);\n var ret = '';\n for (var line = 0, len = lines.length; line < len; line++) {\n if (lines[line].length) ret += \"\" + (ret.length ? '\\n' : '') + lines[line];\n }\n return ret;\n };\n var createClass = function (React, client) {\n return /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n function ErrorBoundary(props) {\n var _this;\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n error: null,\n info: null\n };\n _this.handleClearError = _this.handleClearError.bind(_assertThisInitialized(_this));\n return _this;\n }\n var _proto2 = ErrorBoundary.prototype;\n _proto2.handleClearError = function handleClearError() {\n this.setState({\n error: null,\n info: null\n });\n };\n _proto2.componentDidCatch = function componentDidCatch(error, info) {\n var onError = this.props.onError;\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event = client.Event.create(error, true, handledState, 1);\n if (info && info.componentStack) info.componentStack = formatComponentStack(info.componentStack);\n event.addMetadata('react', info);\n client._notify(event, onError);\n this.setState({\n error: error,\n info: info\n });\n };\n _proto2.render = function render() {\n var error = this.state.error;\n if (error) {\n var FallbackComponent = this.props.FallbackComponent;\n if (FallbackComponent) return React.createElement(FallbackComponent, _extends({}, this.state, {\n clearError: this.handleClearError\n }));\n return null;\n }\n return this.props.children;\n };\n return ErrorBoundary;\n }(React.Component);\n };\n _$src_1.formatComponentStack = formatComponentStack;\n _$src_1[\"default\"] = _$src_1;\n return _$src_1;\n});","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 185;","(function (f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f();\n } else if (typeof define === \"function\" && define.amd) {\n define([], f);\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window;\n } else if (typeof global !== \"undefined\") {\n g = global;\n } else if (typeof self !== \"undefined\") {\n g = self;\n } else {\n g = this;\n }\n g.Bugsnag = f();\n }\n})(function () {\n var define, module, exports;\n var _$breadcrumbTypes_8 = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual'];\n\n // Array#reduce\n var _$reduce_17 = function (arr, fn, accum) {\n var val = accum;\n for (var i = 0, len = arr.length; i < len; i++) val = fn(val, arr[i], i, arr);\n return val;\n };\n\n /* removed: var _$reduce_17 = require('./reduce'); */\n ;\n\n // Array#filter\n var _$filter_12 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return !fn(item, i, arr) ? accum : accum.concat(item);\n }, []);\n };\n\n /* removed: var _$reduce_17 = require('./reduce'); */\n ;\n // Array#includes\n var _$includes_13 = function (arr, x) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum === true || item === x;\n }, false);\n };\n\n // Array#isArray\n var _$isArray_14 = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n\n /* eslint-disable-next-line no-prototype-builtins */\n var _hasDontEnumBug = !{\n toString: null\n }.propertyIsEnumerable('toString');\n var _dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'];\n\n // Object#keys\n var _$keys_15 = function (obj) {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n var result = [];\n var prop;\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n if (!_hasDontEnumBug) return result;\n for (var i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i]);\n }\n return result;\n };\n var _$intRange_24 = function (min, max) {\n if (min === void 0) {\n min = 1;\n }\n if (max === void 0) {\n max = Infinity;\n }\n return function (value) {\n return typeof value === 'number' && parseInt('' + value, 10) === value && value >= min && value <= max;\n };\n };\n\n /* removed: var _$filter_12 = require('../es-utils/filter'); */\n ;\n /* removed: var _$isArray_14 = require('../es-utils/is-array'); */\n ;\n var _$listOfFunctions_25 = function (value) {\n return typeof value === 'function' || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'function';\n }).length === value.length;\n };\n var _$stringWithLength_26 = function (value) {\n return typeof value === 'string' && !!value.length;\n };\n var _$config_5 = {};\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n ;\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n ;\n /* removed: var _$keys_15 = require('./lib/es-utils/keys'); */\n ;\n /* removed: var _$isArray_14 = require('./lib/es-utils/is-array'); */\n ;\n /* removed: var _$includes_13 = require('./lib/es-utils/includes'); */\n ;\n /* removed: var _$intRange_24 = require('./lib/validators/int-range'); */\n ;\n /* removed: var _$stringWithLength_26 = require('./lib/validators/string-with-length'); */\n ;\n /* removed: var _$listOfFunctions_25 = require('./lib/validators/list-of-functions'); */\n ;\n /* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */\n ;\n var defaultErrorTypes = function () {\n return {\n unhandledExceptions: true,\n unhandledRejections: true\n };\n };\n _$config_5.schema = {\n apiKey: {\n defaultValue: function () {\n return null;\n },\n message: 'is required',\n validate: _$stringWithLength_26\n },\n appVersion: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n appType: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n autoDetectErrors: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n },\n enabledErrorTypes: {\n defaultValue: function () {\n return defaultErrorTypes();\n },\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: function (value) {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false;\n var providedKeys = _$keys_15(value);\n var defaultKeys = _$keys_15(defaultErrorTypes());\n // ensure it only has a subset of the allowed keys\n if (_$filter_12(providedKeys, function (k) {\n return _$includes_13(defaultKeys, k);\n }).length < providedKeys.length) return false;\n // ensure all of the values are boolean\n if (_$filter_12(_$keys_15(value), function (k) {\n return typeof value[k] !== 'boolean';\n }).length > 0) return false;\n return true;\n }\n },\n onError: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onSession: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onBreadcrumb: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n endpoints: {\n defaultValue: function () {\n return {\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n };\n },\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: function (val) {\n return (\n // first, ensure it's an object\n val && typeof val === 'object' &&\n // notify and sessions must always be set\n _$stringWithLength_26(val.notify) && _$stringWithLength_26(val.sessions) &&\n // ensure no keys other than notify/session are set on endpoints object\n _$filter_12(_$keys_15(val), function (k) {\n return !_$includes_13(['notify', 'sessions'], k);\n }).length === 0\n );\n }\n },\n autoTrackSessions: {\n defaultValue: function (val) {\n return true;\n },\n message: 'should be true|false',\n validate: function (val) {\n return val === true || val === false;\n }\n },\n enabledReleaseStages: {\n defaultValue: function () {\n return null;\n },\n message: 'should be an array of strings',\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'string';\n }).length === value.length;\n }\n },\n releaseStage: {\n defaultValue: function () {\n return 'production';\n },\n message: 'should be a string',\n validate: function (value) {\n return typeof value === 'string' && value.length;\n }\n },\n maxBreadcrumbs: {\n defaultValue: function () {\n return 25;\n },\n message: 'should be a number ≤100',\n validate: function (value) {\n return _$intRange_24(0, 100)(value);\n }\n },\n enabledBreadcrumbTypes: {\n defaultValue: function () {\n return _$breadcrumbTypes_8;\n },\n message: \"should be null or a list of available breadcrumb types (\" + _$breadcrumbTypes_8.join(',') + \")\",\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$reduce_17(value, function (accum, maybeType) {\n if (accum === false) return accum;\n return _$includes_13(_$breadcrumbTypes_8, maybeType);\n }, true);\n }\n },\n context: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || typeof value === 'string';\n }\n },\n user: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object with { id, email, name } properties',\n validate: function (value) {\n return value === null || value && _$reduce_17(_$keys_15(value), function (accum, key) {\n return accum && _$includes_13(['id', 'email', 'name'], key);\n }, true);\n }\n },\n metadata: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object',\n validate: function (value) {\n return typeof value === 'object' && value !== null;\n }\n },\n logger: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: function (value) {\n return !value || value && _$reduce_17(['debug', 'info', 'warn', 'error'], function (accum, method) {\n return accum && typeof value[method] === 'function';\n }, true);\n }\n },\n redactedKeys: {\n defaultValue: function () {\n return ['password'];\n },\n message: 'should be an array of strings|regexes',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (s) {\n return typeof s === 'string' || s && typeof s.test === 'function';\n }).length;\n }\n },\n plugins: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of plugin objects',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (p) {\n return p && typeof p === 'object' && typeof p.load === 'function';\n }).length;\n }\n },\n featureFlags: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of objects that have a \"name\" property',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (feature) {\n return feature && typeof feature === 'object' && typeof feature.name === 'string';\n }).length;\n }\n }\n };\n\n // extends helper from babel\n // https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\n var _$assign_11 = function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\n /* removed: var _$reduce_17 = require('./reduce'); */\n ;\n\n // Array#map\n var _$map_16 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum.concat(fn(item, i, arr));\n }, []);\n };\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n var schema = _$config_5.schema;\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n var _$config_1 = {\n releaseStage: _$assign_11({}, schema.releaseStage, {\n defaultValue: function () {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development';\n return 'production';\n }\n }),\n appType: _extends({}, schema.appType, {\n defaultValue: function () {\n return 'browser';\n }\n }),\n logger: _$assign_11({}, schema.logger, {\n defaultValue: function () {\n return (\n // set logger based on browser capability\n typeof console !== 'undefined' && typeof console.debug === 'function' ? getPrefixedConsole() : undefined\n );\n }\n })\n };\n var getPrefixedConsole = function () {\n var logger = {};\n var consoleLog = console.log;\n _$map_16(['debug', 'info', 'warn', 'error'], function (method) {\n var consoleMethod = console[method];\n logger[method] = typeof consoleMethod === 'function' ? consoleMethod.bind(console, '[bugsnag]') : consoleLog.bind(console, '[bugsnag]');\n });\n return logger;\n };\n var Breadcrumb = /*#__PURE__*/function () {\n function Breadcrumb(message, metadata, type, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date();\n }\n this.type = type;\n this.message = message;\n this.metadata = metadata;\n this.timestamp = timestamp;\n }\n var _proto = Breadcrumb.prototype;\n _proto.toJSON = function toJSON() {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n };\n };\n return Breadcrumb;\n }();\n var _$Breadcrumb_3 = Breadcrumb;\n var _$stackframe_34 = {};\n (function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof _$stackframe_34 === 'object') {\n _$stackframe_34 = factory();\n } else {\n root.StackFrame = factory();\n }\n })(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? '@' + this.getFileName() : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? ':' + this.getLineNumber() : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? ':' + this.getColumnNumber() : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n return StackFrame;\n });\n var _$errorStackParser_31 = {};\n (function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof _$errorStackParser_31 === 'object') {\n _$errorStackParser_31 = factory(_$stackframe_34);\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n })(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n });\n var _$errorStackParser_10 = _$errorStackParser_31;\n var _$safeJsonStringify_30 = function (data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : [];\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : [];\n return JSON.stringify(prepareObjForSerialization(data, redactedKeys, redactedPaths), replacer, space);\n };\n var MAX_DEPTH = 20;\n var MAX_EDGES = 25000;\n var MIN_PRESERVED_DEPTH = 8;\n var REPLACEMENT_NODE = '...';\n function isError(o) {\n return o instanceof Error || /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o));\n }\n function throwsMessage(err) {\n return '[Throws: ' + (err ? err.message : '?') + ']';\n }\n function find(haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true;\n }\n return false;\n }\n\n // returns true if the string `path` starts with any of the provided `paths`\n function isDescendent(paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true;\n }\n return false;\n }\n function shouldRedact(patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i].toLowerCase() === key.toLowerCase()) return true;\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true;\n }\n return false;\n }\n function __isArray_30(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n }\n function safelyGetProp(obj, prop) {\n try {\n return obj[prop];\n } catch (err) {\n return throwsMessage(err);\n }\n }\n function prepareObjForSerialization(obj, redactedKeys, redactedPaths) {\n var seen = []; // store references to objects we have seen before\n var edges = 0;\n function visit(obj, path) {\n function edgesExceeded() {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES;\n }\n edges++;\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE;\n if (edgesExceeded()) return REPLACEMENT_NODE;\n if (obj === null || typeof obj !== 'object') return obj;\n if (find(seen, obj)) return '[Circular]';\n seen.push(obj);\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--;\n var fResult = visit(obj.toJSON(), path);\n seen.pop();\n return fResult;\n } catch (err) {\n return throwsMessage(err);\n }\n }\n var er = isError(obj);\n if (er) {\n edges--;\n var eResult = visit({\n name: obj.name,\n message: obj.message\n }, path);\n seen.pop();\n return eResult;\n }\n if (__isArray_30(obj)) {\n var aResult = [];\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE);\n break;\n }\n aResult.push(visit(obj[i], path.concat('[]')));\n }\n seen.pop();\n return aResult;\n }\n var result = {};\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue;\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]';\n continue;\n }\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE;\n break;\n }\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop));\n }\n } catch (e) {}\n seen.pop();\n return result;\n }\n return visit(obj, []);\n }\n\n /* removed: var _$map_16 = require('./es-utils/map'); */\n ;\n /* removed: var _$filter_12 = require('./es-utils/filter'); */\n ;\n /* removed: var _$isArray_14 = require('./es-utils/is-array'); */\n ;\n /* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */\n ;\n function add(existingFeatures, existingFeatureKeys, name, variant) {\n if (typeof name !== 'string') {\n return;\n }\n if (variant === undefined) {\n variant = null;\n } else if (variant !== null && typeof variant !== 'string') {\n variant = _$safeJsonStringify_30(variant);\n }\n var existingIndex = existingFeatureKeys[name];\n if (typeof existingIndex === 'number') {\n existingFeatures[existingIndex] = {\n name: name,\n variant: variant\n };\n return;\n }\n existingFeatures.push({\n name: name,\n variant: variant\n });\n existingFeatureKeys[name] = existingFeatures.length - 1;\n }\n function merge(existingFeatures, newFeatures, existingFeatureKeys) {\n if (!_$isArray_14(newFeatures)) {\n return;\n }\n for (var i = 0; i < newFeatures.length; ++i) {\n var feature = newFeatures[i];\n if (feature === null || typeof feature !== 'object') {\n continue;\n }\n\n // 'add' will handle if 'name' doesn't exist & 'variant' is optional\n add(existingFeatures, existingFeatureKeys, feature.name, feature.variant);\n }\n return existingFeatures;\n }\n\n // convert feature flags from a map of 'name -> variant' into the format required\n // by the Bugsnag Event API:\n // [{ featureFlag: 'name', variant: 'variant' }, { featureFlag: 'name 2' }]\n function toEventApi(featureFlags) {\n return _$map_16(_$filter_12(featureFlags, Boolean), function (_ref) {\n var name = _ref.name,\n variant = _ref.variant;\n var flag = {\n featureFlag: name\n };\n\n // don't add a 'variant' property unless there's actually a value\n if (typeof variant === 'string') {\n flag.variant = variant;\n }\n return flag;\n });\n }\n function clear(features, featuresIndex, name) {\n var existingIndex = featuresIndex[name];\n if (typeof existingIndex === 'number') {\n features[existingIndex] = null;\n delete featuresIndex[name];\n }\n }\n var _$featureFlagDelegate_18 = {\n add: add,\n clear: clear,\n merge: merge,\n toEventApi: toEventApi\n };\n\n // Given `err` which may be an error, does it have a stack property which is a string?\n var _$hasStack_19 = function (err) {\n return !!err && (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) && typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' && err.stack !== err.name + \": \" + err.message;\n };\n\n /**\n * Expose `isError`.\n */\n\n var _$isError_32 = __isError_32;\n\n /**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\n function __isError_32(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return value instanceof Error;\n }\n }\n var _$iserror_20 = _$isError_32;\n\n /* removed: var _$assign_11 = require('./es-utils/assign'); */\n ;\n var __add_22 = function (state, section, keyOrObj, maybeVal) {\n var _updates;\n if (!section) return;\n var updates;\n\n // addMetadata(\"section\", null) -> clears section\n if (keyOrObj === null) return __clear_22(state, section);\n\n // normalise the two supported input types into object form\n if (typeof keyOrObj === 'object') updates = keyOrObj;\n if (typeof keyOrObj === 'string') updates = (_updates = {}, _updates[keyOrObj] = maybeVal, _updates);\n\n // exit if we don't have an updates object at this point\n if (!updates) return;\n\n // preventing the __proto__ property from being used as a key\n if (section === '__proto__' || section === 'constructor' || section === 'prototype') {\n return;\n }\n\n // ensure a section with this name exists\n if (!state[section]) state[section] = {};\n\n // merge the updates with the existing section\n state[section] = _$assign_11({}, state[section], updates);\n };\n var get = function (state, section, key) {\n if (typeof section !== 'string') return undefined;\n if (!key) {\n return state[section];\n }\n if (state[section]) {\n return state[section][key];\n }\n return undefined;\n };\n var __clear_22 = function (state, section, key) {\n if (typeof section !== 'string') return;\n\n // clear an entire section\n if (!key) {\n delete state[section];\n return;\n }\n\n // preventing the __proto__ property from being used as a key\n if (section === '__proto__' || section === 'constructor' || section === 'prototype') {\n return;\n }\n\n // clear a single value from a section\n if (state[section]) {\n delete state[section][key];\n }\n };\n var _$metadataDelegate_22 = {\n add: __add_22,\n get: get,\n clear: __clear_22\n };\n var _$stackGenerator_33 = {};\n (function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof _$stackGenerator_33 === 'object') {\n _$stackGenerator_33 = factory(_$stackframe_34);\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n })(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n });\n\n /* removed: var _$errorStackParser_10 = require('./lib/error-stack-parser'); */\n ;\n /* removed: var _$stackGenerator_33 = require('stack-generator'); */\n ;\n /* removed: var _$hasStack_19 = require('./lib/has-stack'); */\n ;\n /* removed: var _$map_16 = require('./lib/es-utils/map'); */\n ;\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n ;\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n ;\n /* removed: var _$assign_11 = require('./lib/es-utils/assign'); */\n ;\n /* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */\n ;\n /* removed: var _$featureFlagDelegate_18 = require('./lib/feature-flag-delegate'); */\n ;\n /* removed: var _$iserror_20 = require('./lib/iserror'); */\n ;\n var Event = /*#__PURE__*/function () {\n function Event(errorClass, errorMessage, stacktrace, handledState, originalError) {\n if (stacktrace === void 0) {\n stacktrace = [];\n }\n if (handledState === void 0) {\n handledState = defaultHandledState();\n }\n this.apiKey = undefined;\n this.context = undefined;\n this.groupingHash = undefined;\n this.originalError = originalError;\n this._handledState = handledState;\n this.severity = this._handledState.severity;\n this.unhandled = this._handledState.unhandled;\n this.app = {};\n this.device = {};\n this.request = {};\n this.breadcrumbs = [];\n this.threads = [];\n this._metadata = {};\n this._features = [];\n this._featuresIndex = {};\n this._user = {};\n this._session = undefined;\n this.errors = [createBugsnagError(errorClass, errorMessage, Event.__type, stacktrace)];\n\n // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n var _proto = Event.prototype;\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n _$featureFlagDelegate_18.add(this._features, this._featuresIndex, name, variant);\n };\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n _$featureFlagDelegate_18.merge(this._features, featureFlags, this._featuresIndex);\n };\n _proto.getFeatureFlags = function getFeatureFlags() {\n return _$featureFlagDelegate_18.toEventApi(this._features);\n };\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n _$featureFlagDelegate_18.clear(this._features, this._featuresIndex, name);\n };\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n _proto.getUser = function getUser() {\n return this._user;\n };\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n _proto.toJSON = function toJSON() {\n return {\n payloadVersion: '4',\n exceptions: _$map_16(this.errors, function (er) {\n return _$assign_11({}, er, {\n message: er.errorMessage\n });\n }),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session,\n featureFlags: this.getFeatureFlags()\n };\n };\n return Event;\n }(); // takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n // and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n var formatStackframe = function (frame) {\n var f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n };\n // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code';\n }\n return f;\n };\n var normaliseFunctionName = function (name) {\n return /^global code$/i.test(name) ? 'global code' : name;\n };\n var defaultHandledState = function () {\n return {\n unhandled: false,\n severity: 'warning',\n severityReason: {\n type: 'handledException'\n }\n };\n };\n var ensureString = function (str) {\n return typeof str === 'string' ? str : '';\n };\n function createBugsnagError(errorClass, errorMessage, type, stacktrace) {\n return {\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: type,\n stacktrace: _$reduce_17(stacktrace, function (accum, frame) {\n var f = formatStackframe(frame);\n // don't include a stackframe if none of its properties are defined\n try {\n if (JSON.stringify(f) === '{}') return accum;\n return accum.concat(f);\n } catch (e) {\n return accum;\n }\n }, [])\n };\n }\n function getCauseStack(error) {\n if (error.cause) {\n return [error].concat(getCauseStack(error.cause));\n } else {\n return [error];\n }\n }\n\n // Helpers\n\n Event.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (_$hasStack_19(error)) return _$errorStackParser_10.parse(error).slice(errorFramesToSkip);\n // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n try {\n return _$filter_12(_$stackGenerator_33.backtrace(), function (frame) {\n return (frame.functionName || '').indexOf('StackGenerator$$') === -1;\n }).slice(1 + backtraceFramesToSkip);\n } catch (e) {\n return [];\n }\n };\n Event.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip, logger) {\n if (errorFramesToSkip === void 0) {\n errorFramesToSkip = 0;\n }\n var _normaliseError = normaliseError(maybeError, tolerateNonErrors, component, logger),\n error = _normaliseError[0],\n internalFrames = _normaliseError[1];\n var event;\n try {\n var stacktrace = Event.getStacktrace(error,\n // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0,\n // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip);\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError);\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError);\n }\n if (error.name === 'InvalidError') {\n event.addMetadata(\"\" + component, 'non-error parameter', makeSerialisable(maybeError));\n }\n if (error.cause) {\n var _event$errors;\n var causes = getCauseStack(error).slice(1);\n var normalisedCauses = _$map_16(causes, function (cause) {\n // Only get stacktrace for error causes that are a valid JS Error and already have a stack\n var stacktrace = _$iserror_20(cause) && _$hasStack_19(cause) ? _$errorStackParser_10.parse(cause) : [];\n var _normaliseError2 = normaliseError(cause, true, 'error cause'),\n error = _normaliseError2[0];\n if (error.name === 'InvalidError') event.addMetadata('error cause', makeSerialisable(cause));\n return createBugsnagError(error.name, error.message, Event.__type, stacktrace);\n });\n (_event$errors = event.errors).push.apply(_event$errors, normalisedCauses);\n }\n return event;\n };\n var makeSerialisable = function (err) {\n if (err === null) return 'null';\n if (err === undefined) return 'undefined';\n return err;\n };\n var normaliseError = function (maybeError, tolerateNonErrors, component, logger) {\n var error;\n var internalFrames = 0;\n var createAndLogInputError = function (reason) {\n var verb = component === 'error cause' ? 'was' : 'received';\n if (logger) logger.warn(component + \" \" + verb + \" a non-error: \\\"\" + reason + \"\\\"\");\n var err = new Error(component + \" \" + verb + \" a non-error. See \\\"\" + component + \"\\\" tab for more detail.\");\n err.name = 'InvalidError';\n return err;\n };\n\n // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n if (!tolerateNonErrors) {\n if (_$iserror_20(maybeError)) {\n error = maybeError;\n } else {\n error = createAndLogInputError(typeof maybeError);\n internalFrames += 2;\n }\n } else {\n switch (typeof maybeError) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError));\n internalFrames += 1;\n break;\n case 'function':\n error = createAndLogInputError('function');\n internalFrames += 2;\n break;\n case 'object':\n if (maybeError !== null && _$iserror_20(maybeError)) {\n error = maybeError;\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage);\n error.name = maybeError.name || maybeError.errorClass;\n internalFrames += 1;\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object');\n internalFrames += 2;\n }\n break;\n default:\n error = createAndLogInputError('nothing');\n internalFrames += 2;\n }\n }\n if (!_$hasStack_19(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error;\n } catch (e) {\n if (_$hasStack_19(e)) {\n error = e;\n // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n internalFrames = 1;\n }\n }\n }\n return [error, internalFrames];\n };\n\n // default value for stacktrace.type\n Event.__type = 'browserjs';\n var hasNecessaryFields = function (error) {\n return (typeof error.name === 'string' || typeof error.errorClass === 'string') && (typeof error.message === 'string' || typeof error.errorMessage === 'string');\n };\n var _$Event_6 = Event;\n\n // This is a heavily modified/simplified version of\n // https://github.com/othiym23/async-some\n // with the logic flipped so that it is akin to the\n // synchronous \"every\" method instead of \"some\".\n\n // run the asynchronous test function (fn) over each item in the array (arr)\n // in series until:\n // - fn(item, cb) => calls cb(null, false)\n // - or the end of the array is reached\n // the callback (cb) will be passed (null, false) if any of the items in arr\n // caused fn to call back with false, otherwise it will be passed (null, true)\n var _$asyncEvery_7 = function (arr, fn, cb) {\n var index = 0;\n var next = function () {\n if (index >= arr.length) return cb(null, true);\n fn(arr[index], function (err, result) {\n if (err) return cb(err);\n if (result === false) return cb(null, false);\n index++;\n next();\n });\n };\n next();\n };\n\n /* removed: var _$asyncEvery_7 = require('./async-every'); */\n ;\n var _$callbackRunner_9 = function (callbacks, event, onCallbackError, cb) {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n var runMaybeAsyncCallback = function (fn, cb) {\n if (typeof fn !== 'function') return cb(null);\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n var ret = fn(event);\n // check if it returned a \"thenable\" (promise)\n if (ret && typeof ret.then === 'function') {\n return ret.then(\n // resolve\n function (val) {\n return setTimeout(function () {\n return cb(null, val);\n });\n },\n // reject\n function (err) {\n setTimeout(function () {\n onCallbackError(err);\n return cb(null, true);\n });\n });\n }\n return cb(null, ret);\n }\n // if function is async…\n fn(event, function (err, result) {\n if (err) {\n onCallbackError(err);\n return cb(null);\n }\n cb(null, result);\n });\n } catch (e) {\n onCallbackError(e);\n cb(null);\n }\n };\n _$asyncEvery_7(callbacks, runMaybeAsyncCallback, cb);\n };\n var _$syncCallbackRunner_23 = function (callbacks, callbackArg, callbackType, logger) {\n var ignore = false;\n var cbs = callbacks.slice();\n while (!ignore) {\n if (!cbs.length) break;\n try {\n ignore = cbs.pop()(callbackArg) === false;\n } catch (e) {\n logger.error(\"Error occurred in \" + callbackType + \" callback, continuing anyway\\u2026\");\n logger.error(e);\n }\n }\n return ignore;\n };\n var _$pad_29 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n };\n\n /* removed: var _$pad_29 = require('./pad.js'); */\n ;\n var env = typeof window === 'object' ? window : self;\n var globalCount = 0;\n for (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n }\n var mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\n var clientId = _$pad_29((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\n var _$fingerprint_28 = function fingerprint() {\n return clientId;\n };\n\n /**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\n /* removed: var _$fingerprint_28 = require('./lib/fingerprint.js'); */\n ;\n /* removed: var _$pad_29 = require('./lib/pad.js'); */\n ;\n var c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n function randomBlock() {\n return _$pad_29((Math.random() * discreteValues << 0).toString(base), blockSize);\n }\n function safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n }\n function cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = _$pad_29(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_28(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n }\n cuid.fingerprint = _$fingerprint_28;\n var _$cuid_27 = cuid;\n\n /* removed: var _$cuid_27 = require('@bugsnag/cuid'); */\n ;\n var Session = /*#__PURE__*/function () {\n function Session() {\n this.id = _$cuid_27();\n this.startedAt = new Date();\n this._handled = 0;\n this._unhandled = 0;\n this._user = {};\n this.app = {};\n this.device = {};\n }\n var _proto = Session.prototype;\n _proto.getUser = function getUser() {\n return this._user;\n };\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n _proto.toJSON = function toJSON() {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: {\n handled: this._handled,\n unhandled: this._unhandled\n }\n };\n };\n _proto._track = function _track(event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1;\n };\n return Session;\n }();\n var _$Session_35 = Session;\n\n /* removed: var _$config_5 = require('./config'); */\n ;\n /* removed: var _$Event_6 = require('./event'); */\n ;\n /* removed: var _$Breadcrumb_3 = require('./breadcrumb'); */\n ;\n /* removed: var _$Session_35 = require('./session'); */\n ;\n /* removed: var _$map_16 = require('./lib/es-utils/map'); */\n ;\n /* removed: var _$includes_13 = require('./lib/es-utils/includes'); */\n ;\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n ;\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n ;\n /* removed: var _$keys_15 = require('./lib/es-utils/keys'); */\n ;\n /* removed: var _$assign_11 = require('./lib/es-utils/assign'); */\n ;\n /* removed: var _$callbackRunner_9 = require('./lib/callback-runner'); */\n ;\n /* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */\n ;\n /* removed: var _$syncCallbackRunner_23 = require('./lib/sync-callback-runner'); */\n ;\n /* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */\n ;\n var __add_4 = _$featureFlagDelegate_18.add,\n __clear_4 = _$featureFlagDelegate_18.clear,\n __merge_4 = _$featureFlagDelegate_18.merge;\n var noop = function () {};\n var Client = /*#__PURE__*/function () {\n function Client(configuration, schema, internalPlugins, notifier) {\n var _this = this;\n if (schema === void 0) {\n schema = _$config_5.schema;\n }\n if (internalPlugins === void 0) {\n internalPlugins = [];\n }\n // notifier id\n this._notifier = notifier;\n\n // intialise opts and config\n this._config = {};\n this._schema = schema;\n\n // i/o\n this._delivery = {\n sendSession: noop,\n sendEvent: noop\n };\n this._logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n };\n\n // plugins\n this._plugins = {};\n\n // state\n this._breadcrumbs = [];\n this._session = null;\n this._metadata = {};\n this._featuresIndex = {};\n this._features = [];\n this._context = undefined;\n this._user = {};\n\n // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n };\n\n // expose internal constructors\n this.Client = Client;\n this.Event = _$Event_6;\n this.Breadcrumb = _$Breadcrumb_3;\n this.Session = _$Session_35;\n this._config = this._configure(configuration, internalPlugins);\n _$map_16(internalPlugins.concat(this._config.plugins), function (pl) {\n if (pl) _this._loadPlugin(pl);\n });\n\n // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n this._depth = 1;\n var self = this;\n var notify = this.notify;\n this.notify = function () {\n return notify.apply(self, arguments);\n };\n }\n var _proto = Client.prototype;\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n __add_4(this._features, this._featuresIndex, name, variant);\n };\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n __merge_4(this._features, featureFlags, this._featuresIndex);\n };\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n __clear_4(this._features, this._featuresIndex, name);\n };\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n _proto.getContext = function getContext() {\n return this._context;\n };\n _proto.setContext = function setContext(c) {\n this._context = c;\n };\n _proto._configure = function _configure(opts, internalPlugins) {\n var schema = _$reduce_17(internalPlugins, function (schema, plugin) {\n if (plugin && plugin.configSchema) return _$assign_11({}, schema, plugin.configSchema);\n return schema;\n }, this._schema);\n\n // accumulate configuration and error messages\n var _reduce = _$reduce_17(_$keys_15(schema), function (accum, key) {\n var defaultValue = schema[key].defaultValue(opts[key]);\n if (opts[key] !== undefined) {\n var valid = schema[key].validate(opts[key]);\n if (!valid) {\n accum.errors[key] = schema[key].message;\n accum.config[key] = defaultValue;\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = _$assign_11(defaultValue, opts[key]);\n } else {\n accum.config[key] = opts[key];\n }\n }\n } else {\n accum.config[key] = defaultValue;\n }\n return accum;\n }, {\n errors: {},\n config: {}\n }),\n errors = _reduce.errors,\n config = _reduce.config;\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set');\n // warn about an apikey that is not of the expected format\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters';\n }\n\n // update and elevate some options\n this._metadata = _$assign_11({}, config.metadata);\n __merge_4(this._features, config.featureFlags, this._featuresIndex);\n this._user = _$assign_11({}, config.user);\n this._context = config.context;\n if (config.logger) this._logger = config.logger;\n\n // add callbacks\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError);\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb);\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession);\n\n // finally warn about any invalid config where we fell back to the default\n if (_$keys_15(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts));\n }\n return config;\n };\n _proto.getUser = function getUser() {\n return this._user;\n };\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n _proto._loadPlugin = function _loadPlugin(plugin) {\n var result = plugin.load(this);\n // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n if (plugin.name) this._plugins[\"~\" + plugin.name + \"~\"] = result;\n return this;\n };\n _proto.getPlugin = function getPlugin(name) {\n return this._plugins[\"~\" + name + \"~\"];\n };\n _proto._setDelivery = function _setDelivery(d) {\n this._delivery = d(this);\n };\n _proto.startSession = function startSession() {\n var session = new _$Session_35();\n session.app.releaseStage = this._config.releaseStage;\n session.app.version = this._config.appVersion;\n session.app.type = this._config.appType;\n session._user = _$assign_11({}, this._user);\n\n // run onSession callbacks\n var ignore = _$syncCallbackRunner_23(this._cbs.s, session, 'onSession', this._logger);\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback');\n return this;\n }\n return this._sessionDelegate.startSession(this, session);\n };\n _proto.addOnError = function addOnError(fn, front) {\n if (front === void 0) {\n front = false;\n }\n this._cbs.e[front ? 'unshift' : 'push'](fn);\n };\n _proto.removeOnError = function removeOnError(fn) {\n this._cbs.e = _$filter_12(this._cbs.e, function (f) {\n return f !== fn;\n });\n };\n _proto._addOnSessionPayload = function _addOnSessionPayload(fn) {\n this._cbs.sp.push(fn);\n };\n _proto.addOnSession = function addOnSession(fn) {\n this._cbs.s.push(fn);\n };\n _proto.removeOnSession = function removeOnSession(fn) {\n this._cbs.s = _$filter_12(this._cbs.s, function (f) {\n return f !== fn;\n });\n };\n _proto.addOnBreadcrumb = function addOnBreadcrumb(fn, front) {\n if (front === void 0) {\n front = false;\n }\n this._cbs.b[front ? 'unshift' : 'push'](fn);\n };\n _proto.removeOnBreadcrumb = function removeOnBreadcrumb(fn) {\n this._cbs.b = _$filter_12(this._cbs.b, function (f) {\n return f !== fn;\n });\n };\n _proto.pauseSession = function pauseSession() {\n return this._sessionDelegate.pauseSession(this);\n };\n _proto.resumeSession = function resumeSession() {\n return this._sessionDelegate.resumeSession(this);\n };\n _proto.leaveBreadcrumb = function leaveBreadcrumb(message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : '';\n type = typeof type === 'string' && _$includes_13(_$breadcrumbTypes_8, type) ? type : 'manual';\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {};\n\n // if no message, discard\n if (!message) return;\n var crumb = new _$Breadcrumb_3(message, metadata, type);\n\n // run onBreadcrumb callbacks\n var ignore = _$syncCallbackRunner_23(this._cbs.b, crumb, 'onBreadcrumb', this._logger);\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback');\n return;\n }\n\n // push the valid crumb onto the queue and maintain the length\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs);\n }\n };\n _proto._isBreadcrumbTypeEnabled = function _isBreadcrumbTypeEnabled(type) {\n var types = this._config.enabledBreadcrumbTypes;\n return types === null || _$includes_13(types, type);\n };\n _proto.notify = function notify(maybeError, onError, postReportCallback) {\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n var event = _$Event_6.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger);\n this._notify(event, onError, postReportCallback);\n };\n _proto._notify = function _notify(event, onError, postReportCallback) {\n var _this2 = this;\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n event.app = _$assign_11({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n });\n event.context = event.context || this._context;\n event._metadata = _$assign_11({}, event._metadata, this._metadata);\n event._user = _$assign_11({}, event._user, this._user);\n event.breadcrumbs = this._breadcrumbs.slice();\n __merge_4(event._features, this._features, event._featuresIndex);\n\n // exit early if events should not be sent on the current releaseStage\n if (this._config.enabledReleaseStages !== null && !_$includes_13(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration');\n return postReportCallback(null, event);\n }\n var originalSeverity = event.severity;\n var onCallbackError = function (err) {\n // errors in callbacks are tolerated but we want to log them out\n _this2._logger.error('Error occurred in onError callback, continuing anyway…');\n _this2._logger.error(err);\n };\n var callbacks = [].concat(this._cbs.e).concat(onError);\n _$callbackRunner_9(callbacks, event, onCallbackError, function (err, shouldSend) {\n if (err) onCallbackError(err);\n if (!shouldSend) {\n _this2._logger.debug('Event not sent due to onError callback');\n return postReportCallback(null, event);\n }\n if (_this2._isBreadcrumbTypeEnabled('error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(_this2, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error');\n }\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = {\n type: 'userCallbackSetSeverity'\n };\n }\n if (event.unhandled !== event._handledState.unhandled) {\n event._handledState.severityReason.unhandledOverridden = true;\n event._handledState.unhandled = event.unhandled;\n }\n if (_this2._session) {\n _this2._session._track(event);\n event._session = _this2._session;\n }\n _this2._delivery.sendEvent({\n apiKey: event.apiKey || _this2._config.apiKey,\n notifier: _this2._notifier,\n events: [event]\n }, function (err) {\n return postReportCallback(err, event);\n });\n });\n };\n return Client;\n }();\n var generateConfigErrorMessage = function (errors, rawInput) {\n var er = new Error(\"Invalid configuration\\n\" + _$map_16(_$keys_15(errors), function (key) {\n return \" - \" + key + \" \" + errors[key] + \", got \" + stringify(rawInput[key]);\n }).join('\\n\\n'));\n return er;\n };\n var stringify = function (val) {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val);\n default:\n return String(val);\n }\n };\n var _$Client_4 = Client;\n var _$jsonPayload_21 = {};\n /* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */\n ;\n var EVENT_REDACTION_PATHS = ['events.[].metaData', 'events.[].breadcrumbs.[].metaData', 'events.[].request'];\n _$jsonPayload_21.event = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier: \"WARNING!\\nSerialized payload was \" + payload.length / 10e5 + \"MB (limit = 1MB)\\nmetadata was removed\"\n };\n payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n }\n return payload;\n };\n _$jsonPayload_21.session = function (session, redactedKeys) {\n var payload = _$safeJsonStringify_30(session, null, null);\n return payload;\n };\n var _$delivery_36 = {};\n /* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */\n ;\n _$delivery_36 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n var url = getApiUrl(client._config, 'notify', '4', win);\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n var req = new win.XDomainRequest();\n req.onload = function () {\n cb(null);\n };\n req.onerror = function () {\n var err = new Error('Event failed to send');\n client._logger.error('Event failed to send…', err);\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n cb(err);\n };\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n cb(e);\n }\n }, 0);\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n var url = getApiUrl(client._config, 'sessions', '1', win);\n var req = new win.XDomainRequest();\n req.onload = function () {\n cb(null);\n };\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n cb(e);\n }\n }, 0);\n }\n };\n };\n var getApiUrl = function (config, endpoint, version, win) {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n var isoDate = JSON.parse(JSON.stringify(new Date()));\n var url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol);\n return url + \"?apiKey=\" + encodeURIComponent(config.apiKey) + \"&payloadVersion=\" + version + \"&sentAt=\" + encodeURIComponent(isoDate);\n };\n var matchPageProtocol = _$delivery_36._matchPageProtocol = function (endpoint, pageProtocol) {\n return pageProtocol === 'http:' ? endpoint.replace(/^https:/, 'http:') : endpoint;\n };\n\n /* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */\n ;\n var _$delivery_37 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n try {\n var url = client._config.endpoints.notify;\n var req = new win.XMLHttpRequest();\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n var status = req.status;\n if (status === 0 || status >= 400) {\n var err = new Error(\"Request failed with status \" + status);\n client._logger.error('Event failed to send…', err);\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n cb(err);\n } else {\n cb(null);\n }\n }\n };\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '4');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n }\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n try {\n var url = client._config.endpoints.sessions;\n var req = new win.XMLHttpRequest();\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n var status = req.status;\n if (status === 0 || status >= 400) {\n var err = new Error(\"Request failed with status \" + status);\n client._logger.error('Session failed to send…', err);\n cb(err);\n } else {\n cb(null);\n }\n }\n };\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '1');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n }\n };\n };\n var appStart = new Date();\n var reset = function () {\n appStart = new Date();\n };\n var _$app_38 = {\n name: 'appDuration',\n load: function (client) {\n client.addOnError(function (event) {\n var now = new Date();\n event.app.duration = now - appStart;\n }, true);\n return {\n reset: reset\n };\n }\n };\n\n /*\n * Sets the default context to be the current URL\n */\n var _$context_39 = function (win) {\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.context !== undefined) return;\n event.context = win.location.pathname;\n }, true);\n }\n };\n };\n var _$pad_43 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n };\n\n /* removed: var _$pad_43 = require('./pad.js'); */\n ;\n var __env_42 = typeof window === 'object' ? window : self;\n var __globalCount_42 = 0;\n for (var __prop_42 in __env_42) {\n if (Object.hasOwnProperty.call(__env_42, __prop_42)) __globalCount_42++;\n }\n var __mimeTypesLength_42 = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\n var __clientId_42 = _$pad_43((__mimeTypesLength_42 + navigator.userAgent.length).toString(36) + __globalCount_42.toString(36), 4);\n var _$fingerprint_42 = function fingerprint() {\n return __clientId_42;\n };\n\n /**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\n /* removed: var _$fingerprint_42 = require('./lib/fingerprint.js'); */\n ;\n /* removed: var _$pad_43 = require('./lib/pad.js'); */\n ;\n var __c_41 = 0,\n __blockSize_41 = 4,\n __base_41 = 36,\n __discreteValues_41 = Math.pow(__base_41, __blockSize_41);\n function __randomBlock_41() {\n return _$pad_43((Math.random() * __discreteValues_41 << 0).toString(__base_41), __blockSize_41);\n }\n function __safeCounter_41() {\n __c_41 = __c_41 < __discreteValues_41 ? __c_41 : 0;\n __c_41++; // this is not subliminal\n return __c_41 - 1;\n }\n function __cuid_41() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(__base_41),\n // Prevent same-machine collisions.\n counter = _$pad_43(__safeCounter_41().toString(__base_41), __blockSize_41),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_42(),\n // Grab some more chars from Math.random()\n random = __randomBlock_41() + __randomBlock_41();\n return letter + timestamp + counter + print + random;\n }\n __cuid_41.fingerprint = _$fingerprint_42;\n var _$cuid_41 = __cuid_41;\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n var BUGSNAG_ANONYMOUS_ID_KEY = 'bugsnag-anonymous-id';\n var getDeviceId = function (win) {\n try {\n var storage = win.localStorage;\n var id = storage.getItem(BUGSNAG_ANONYMOUS_ID_KEY);\n\n // If we get an ID, make sure it looks like a valid cuid. The length can\n // fluctuate slightly, so some leeway is built in\n if (id && /^c[a-z0-9]{20,32}$/.test(id)) {\n return id;\n }\n /* removed: var _$cuid_41 = require('@bugsnag/cuid'); */\n ;\n id = _$cuid_41();\n storage.setItem(BUGSNAG_ANONYMOUS_ID_KEY, id);\n return id;\n } catch (err) {\n // If localStorage is not available (e.g. because it's disabled) then give up\n }\n };\n\n /*\n * Automatically detects browser device details\n */\n var _$device_40 = function (nav, win) {\n if (nav === void 0) {\n nav = navigator;\n }\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n var device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n };\n if (win && win.screen && win.screen.orientation && win.screen.orientation.type) {\n device.orientation = win.screen.orientation.type;\n } else if (win && win.document) {\n device.orientation = win.document.documentElement.clientWidth > win.document.documentElement.clientHeight ? 'landscape' : 'portrait';\n }\n if (client._config.generateAnonymousId) {\n device.id = getDeviceId(win);\n }\n client.addOnSession(function (session) {\n session.device = _$assign_11({}, session.device, device);\n // only set device id if collectUserIp is false\n if (!client._config.collectUserIp) setDefaultUserId(session);\n });\n\n // add time just as the event is sent\n client.addOnError(function (event) {\n event.device = _$assign_11({}, event.device, device, {\n time: new Date()\n });\n if (!client._config.collectUserIp) setDefaultUserId(event);\n }, true);\n },\n configSchema: {\n generateAnonymousId: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n };\n var setDefaultUserId = function (eventOrSession) {\n // device id is also used to populate the user id field, if it's not already set\n var user = eventOrSession.getUser();\n if (!user || !user.id) {\n eventOrSession.setUser(eventOrSession.device.id);\n }\n };\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n\n /*\n * Sets the event request: { url } to be the current href\n */\n var _$request_44 = function (win) {\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.request && event.request.url) return;\n event.request = _$assign_11({}, event.request, {\n url: win.location.href\n });\n }, true);\n }\n };\n };\n\n /* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */\n ;\n var _$session_45 = {\n load: function (client) {\n client._sessionDelegate = sessionDelegate;\n }\n };\n var sessionDelegate = {\n startSession: function (client, session) {\n var sessionClient = client;\n sessionClient._session = session;\n sessionClient._pausedSession = null;\n\n // exit early if the current releaseStage is not enabled\n if (sessionClient._config.enabledReleaseStages !== null && !_$includes_13(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration');\n return sessionClient;\n }\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [{\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }]\n });\n return sessionClient;\n },\n resumeSession: function (client) {\n // Do nothing if there's already an active session\n if (client._session) {\n return client;\n }\n\n // If we have a paused session then make it the active session\n if (client._pausedSession) {\n client._session = client._pausedSession;\n client._pausedSession = null;\n return client;\n }\n\n // Otherwise start a new session\n return client.startSession();\n },\n pauseSession: function (client) {\n client._pausedSession = client._session;\n client._session = null;\n }\n };\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n\n /*\n * Prevent collection of user IPs\n */\n var _$clientIp_46 = {\n load: function (client) {\n if (client._config.collectUserIp) return;\n client.addOnError(function (event) {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id;\n event._user = _$assign_11({\n id: '[REDACTED]'\n }, event._user);\n event.request = _$assign_11({\n clientIp: '[REDACTED]'\n }, event.request);\n });\n },\n configSchema: {\n collectUserIp: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n }\n }\n };\n var _$consoleBreadcrumbs_47 = {};\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n ;\n /* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */\n ;\n\n /*\n * Leaves breadcrumbs when console log methods are called\n */\n _$consoleBreadcrumbs_47.load = function (client) {\n var isDev = /^(local-)?dev(elopment)?$/.test(client._config.releaseStage);\n if (isDev || !client._isBreadcrumbTypeEnabled('log')) return;\n _$map_16(CONSOLE_LOG_METHODS, function (method) {\n var original = console[method];\n console[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n client.leaveBreadcrumb('Console output', _$reduce_17(args, function (accum, arg, i) {\n // do the best/simplest stringification of each argument\n var stringified = '[Unknown value]';\n // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n try {\n stringified = String(arg);\n } catch (e) {}\n // if it stringifies to [object Object] attempt to JSON stringify\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try {\n stringified = JSON.stringify(arg);\n } catch (e) {}\n }\n accum[\"[\" + i + \"]\"] = stringified;\n return accum;\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log');\n original.apply(console, args);\n };\n console[method]._restore = function () {\n console[method] = original;\n };\n });\n };\n if (\"production\" !== 'production') {\n _$consoleBreadcrumbs_47.destroy = function () {\n return CONSOLE_LOG_METHODS.forEach(function (method) {\n if (typeof console[method]._restore === 'function') console[method]._restore();\n });\n };\n }\n var CONSOLE_LOG_METHODS = _$filter_12(['log', 'debug', 'info', 'warn', 'error'], function (method) {\n return typeof console !== 'undefined' && typeof console[method] === 'function';\n });\n\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n ;\n /* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */\n ;\n var MAX_LINE_LENGTH = 200;\n var MAX_SCRIPT_LENGTH = 500000;\n var _$inlineScriptContent_48 = function (doc, win) {\n if (doc === void 0) {\n doc = document;\n }\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n if (!client._config.trackInlineScripts) return;\n var originalLocation = win.location.href;\n var html = '';\n\n // in IE8-10 the 'interactive' state can fire too soon (before scripts have finished executing), so in those\n // we wait for the 'complete' state before assuming that synchronous scripts are no longer executing\n var isOldIe = !!doc.attachEvent;\n var DOMContentLoaded = isOldIe ? doc.readyState === 'complete' : doc.readyState !== 'loading';\n var getHtml = function () {\n return doc.documentElement.outerHTML;\n };\n\n // get whatever HTML exists at this point in time\n html = getHtml();\n var prev = doc.onreadystatechange;\n // then update it when the DOM content has loaded\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml();\n DOMContentLoaded = true;\n }\n try {\n prev.apply(this, arguments);\n } catch (e) {}\n };\n var _lastScript = null;\n var updateLastScript = function (script) {\n _lastScript = script;\n };\n var getCurrentScript = function () {\n var script = doc.currentScript || _lastScript;\n if (!script && !DOMContentLoaded) {\n var scripts = doc.scripts || doc.getElementsByTagName('script');\n script = scripts[scripts.length - 1];\n }\n return script;\n };\n var addSurroundingCode = function (lineNumber) {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml();\n // simulate the raw html\n var htmlLines = [''].concat(html.split('\\n'));\n var zeroBasedLine = lineNumber - 1;\n var start = Math.max(zeroBasedLine - 3, 0);\n var end = Math.min(zeroBasedLine + 3, htmlLines.length);\n return _$reduce_17(htmlLines.slice(start, end), function (accum, line, i) {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH);\n return accum;\n }, {});\n };\n client.addOnError(function (event) {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = _$filter_12(event.errors[0].stacktrace, function (f) {\n return !/__trace__$/.test(f.method);\n });\n var frame = event.errors[0].stacktrace[0];\n\n // remove hash and query string from url\n var cleanUrl = function (url) {\n return url.replace(/#.*$/, '').replace(/\\?.*$/, '');\n };\n\n // if frame.file exists and is not the original location of the page, this can't be an inline script\n if (frame && frame.file && cleanUrl(frame.file) !== cleanUrl(originalLocation)) return;\n\n // grab the last script known to have run\n var currentScript = getCurrentScript();\n if (currentScript) {\n var content = currentScript.innerHTML;\n event.addMetadata('script', 'content', content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH));\n\n // only attempt to grab some surrounding code if we have a line number\n if (frame && frame.lineNumber) {\n frame.code = addSurroundingCode(frame.lineNumber);\n }\n }\n }, true);\n\n // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n var _map = _$map_16(['setTimeout', 'setInterval', 'setImmediate', 'requestAnimationFrame'], function (fn) {\n return __proxy(win, fn, function (original) {\n return __traceOriginalScript(original, function (args) {\n return {\n get: function () {\n return args[0];\n },\n replace: function (fn) {\n args[0] = fn;\n }\n };\n });\n });\n }),\n _setTimeout = _map[0];\n\n // Proxy all the host objects whose prototypes have an addEventListener function\n _$map_16(['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'], function (o) {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return;\n __proxy(win[o].prototype, 'addEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor);\n });\n __proxy(win[o].prototype, 'removeEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor, true);\n });\n });\n function __traceOriginalScript(fn, callbackAccessor, alsoCallOriginal) {\n if (alsoCallOriginal === void 0) {\n alsoCallOriginal = false;\n }\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n var args = [].slice.call(arguments);\n try {\n var cba = callbackAccessor(args);\n var cb = cba.get();\n if (alsoCallOriginal) fn.apply(this, args);\n if (typeof cb !== 'function') return fn.apply(this, args);\n if (cb.__trace__) {\n cba.replace(cb.__trace__);\n } else {\n var script = getCurrentScript();\n // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n cb.__trace__ = function __trace__() {\n // set the script that called this function\n updateLastScript(script);\n // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n _setTimeout(function () {\n updateLastScript(null);\n }, 0);\n var ret = cb.apply(this, arguments);\n updateLastScript(null);\n return ret;\n };\n cb.__trace__.__trace__ = cb.__trace__;\n cba.replace(cb.__trace__);\n }\n } catch (e) {\n // swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n }\n // IE8 doesn't let you call .apply() on setTimeout/setInterval\n if (fn.apply) return fn.apply(this, args);\n switch (args.length) {\n case 1:\n return fn(args[0]);\n case 2:\n return fn(args[0], args[1]);\n default:\n return fn();\n }\n };\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n };\n function __proxy(host, name, replacer) {\n var original = host[name];\n if (!original) return original;\n var replacement = replacer(original);\n host[name] = replacement;\n return original;\n }\n function eventTargetCallbackAccessor(args) {\n var isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function';\n return {\n get: function () {\n return isEventHandlerObj ? args[1].handleEvent : args[1];\n },\n replace: function (fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn;\n } else {\n args[1] = fn;\n }\n }\n };\n }\n\n /*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\n var _$interactionBreadcrumbs_49 = function (win) {\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('user')) return;\n win.addEventListener('click', function (event) {\n var targetText, targetSelector;\n try {\n targetText = getNodeText(event.target);\n targetSelector = getNodeSelector(event.target, win);\n } catch (e) {\n targetText = '[hidden]';\n targetSelector = '[hidden]';\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z');\n }\n client.leaveBreadcrumb('UI click', {\n targetText: targetText,\n targetSelector: targetSelector\n }, 'user');\n }, true);\n }\n };\n };\n var trim = /^\\s*([^\\s][\\s\\S]{0,139}[^\\s])?\\s*/;\n function getNodeText(el) {\n var text = el.textContent || el.innerText || '';\n if (!text && (el.type === 'submit' || el.type === 'button')) {\n text = el.value;\n }\n text = text.replace(trim, '$1');\n if (text.length > 140) {\n return text.slice(0, 135) + '(...)';\n }\n return text;\n }\n\n // Create a label from tagname, id and css class of the element\n function getNodeSelector(el, win) {\n var parts = [el.tagName];\n if (el.id) parts.push('#' + el.id);\n if (el.className && el.className.length) parts.push(\".\" + el.className.split(' ').join('.'));\n // Can't get much more advanced with the current browser\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('');\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('');\n }\n // try to get a more specific selector if this one matches more than one element\n if (el.parentNode.childNodes.length > 1) {\n var index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1;\n parts.push(\":nth-child(\" + index + \")\");\n }\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n // try prepending the parent node selector\n if (el.parentNode) return getNodeSelector(el.parentNode, win) + \" > \" + parts.join('');\n return parts.join('');\n }\n var _$navigationBreadcrumbs_50 = {};\n /*\n * Leaves breadcrumbs when navigation methods are called or events are emitted\n */\n _$navigationBreadcrumbs_50 = function (win) {\n if (win === void 0) {\n win = window;\n }\n var plugin = {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('navigation')) return;\n\n // returns a function that will drop a breadcrumb with a given name\n var drop = function (name) {\n return function () {\n return client.leaveBreadcrumb(name, {}, 'navigation');\n };\n };\n\n // simple drops – just names, no meta\n win.addEventListener('pagehide', drop('Page hidden'), true);\n win.addEventListener('pageshow', drop('Page shown'), true);\n win.addEventListener('load', drop('Page loaded'), true);\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true);\n // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n win.addEventListener('load', function () {\n return win.addEventListener('popstate', drop('Navigated back'), true);\n });\n\n // hashchange has some metadata that we care about\n win.addEventListener('hashchange', function (event) {\n var metadata = event.oldURL ? {\n from: relativeLocation(event.oldURL, win),\n to: relativeLocation(event.newURL, win),\n state: getCurrentState(win)\n } : {\n to: relativeLocation(win.location.href, win)\n };\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation');\n }, true);\n\n // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win);\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win);\n }\n };\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n win.history.replaceState._restore();\n win.history.pushState._restore();\n };\n }\n return plugin;\n };\n if (\"production\" !== 'production') {\n _$navigationBreadcrumbs_50.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n win.history.replaceState._restore();\n win.history.pushState._restore();\n };\n }\n\n // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n // just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\n var relativeLocation = function (url, win) {\n var a = win.document.createElement('A');\n a.href = url;\n return \"\" + a.pathname + a.search + a.hash;\n };\n var stateChangeToMetadata = function (win, state, title, url) {\n var currentPath = relativeLocation(win.location.href, win);\n return {\n title: title,\n state: state,\n prevState: getCurrentState(win),\n to: url || currentPath,\n from: currentPath\n };\n };\n var wrapHistoryFn = function (client, target, fn, win) {\n var orig = target[fn];\n target[fn] = function (state, title, url) {\n client.leaveBreadcrumb(\"History \" + fn, stateChangeToMetadata(win, state, title, url), 'navigation');\n // if throttle plugin is in use, reset the event sent count\n if (typeof client.resetEventCount === 'function') client.resetEventCount();\n // if the client is operating in auto session-mode, a new route should trigger a new session\n if (client._config.autoTrackSessions) client.startSession();\n // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n orig.apply(target, [state, title].concat(url !== undefined ? url : []));\n };\n if (\"production\" !== 'production') {\n target[fn]._restore = function () {\n target[fn] = orig;\n };\n }\n };\n var getCurrentState = function (win) {\n try {\n return win.history.state;\n } catch (e) {}\n };\n var BREADCRUMB_TYPE = 'request';\n /* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */\n ;\n\n /*\n * Leaves breadcrumbs when network requests occur\n */\n var _$networkBreadcrumbs_51 = function (_ignoredUrls, win) {\n if (_ignoredUrls === void 0) {\n _ignoredUrls = [];\n }\n if (win === void 0) {\n win = window;\n }\n var restoreFunctions = [];\n var plugin = {\n load: function (client) {\n if (!client._isBreadcrumbTypeEnabled('request')) return;\n var ignoredUrls = [client._config.endpoints.notify, client._config.endpoints.sessions].concat(_ignoredUrls);\n monkeyPatchXMLHttpRequest();\n monkeyPatchFetch();\n\n // XMLHttpRequest monkey patch\n function monkeyPatchXMLHttpRequest() {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return;\n var nativeOpen = win.XMLHttpRequest.prototype.open;\n\n // override native open()\n win.XMLHttpRequest.prototype.open = function open(method, url) {\n var _this = this;\n var requestSetupKey = false;\n var error = function () {\n return handleXHRError(method, url);\n };\n var load = function () {\n return handleXHRLoad(method, url, _this.status);\n };\n\n // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n if (requestSetupKey) {\n this.removeEventListener('load', load);\n this.removeEventListener('error', error);\n }\n\n // attach load event listener\n this.addEventListener('load', load);\n // attach error event listener\n this.addEventListener('error', error);\n requestSetupKey = true;\n nativeOpen.apply(this, arguments);\n };\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.XMLHttpRequest.prototype.open = nativeOpen;\n });\n }\n }\n function handleXHRLoad(method, url, status) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n return;\n }\n\n // an XMLHttpRequest's URL can be an object as long as its 'toString'\n // returns a URL, e.g. a HTMLAnchorElement\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n var metadata = {\n status: status,\n request: method + \" \" + url\n };\n if (status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE);\n }\n }\n function handleXHRError(method, url) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n return;\n }\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n\n // failed to contact server\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n }\n\n // window.fetch monkey patch\n function monkeyPatchFetch() {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return;\n var oldFetch = win.fetch;\n win.fetch = function fetch() {\n var _arguments = arguments;\n var urlOrRequest = arguments[0];\n var options = arguments[1];\n var method;\n var url = null;\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url;\n if (options && 'method' in options) {\n method = options.method;\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method;\n }\n } else {\n url = urlOrRequest;\n if (options && 'method' in options) {\n method = options.method;\n }\n }\n if (method === undefined) {\n method = 'GET';\n }\n return new Promise(function (resolve, reject) {\n // pass through to native fetch\n oldFetch.apply(void 0, _arguments).then(function (response) {\n handleFetchSuccess(response, method, url);\n resolve(response);\n })[\"catch\"](function (error) {\n handleFetchError(method, url);\n reject(error);\n });\n });\n };\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.fetch = oldFetch;\n });\n }\n }\n var handleFetchSuccess = function (response, method, url) {\n var metadata = {\n status: response.status,\n request: method + \" \" + url\n };\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE);\n }\n };\n var handleFetchError = function (method, url) {\n client.leaveBreadcrumb('fetch() error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n };\n }\n };\n if (\"production\" !== 'production') {\n plugin.destroy = function () {\n restoreFunctions.forEach(function (fn) {\n return fn();\n });\n restoreFunctions = [];\n };\n }\n return plugin;\n };\n\n /* removed: var _$intRange_24 = require('@bugsnag/core/lib/validators/int-range'); */\n ;\n\n /*\n * Throttles and dedupes events\n */\n\n var _$throttle_52 = {\n load: function (client) {\n // track sent events for each init of the plugin\n var n = 0;\n\n // add onError hook\n client.addOnError(function (event) {\n // have max events been sent already?\n if (n >= client._config.maxEvents) {\n client._logger.warn(\"Cancelling event send due to maxEvents per session limit of \" + client._config.maxEvents + \" being reached\");\n return false;\n }\n n++;\n });\n client.resetEventCount = function () {\n n = 0;\n };\n },\n configSchema: {\n maxEvents: {\n defaultValue: function () {\n return 10;\n },\n message: 'should be a positive integer ≤100',\n validate: function (val) {\n return _$intRange_24(1, 100)(val);\n }\n }\n }\n };\n var _$stripQueryString_53 = {};\n /*\n * Remove query strings (and fragments) from stacktraces\n */\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n ;\n _$stripQueryString_53 = {\n load: function (client) {\n client.addOnError(function (event) {\n var allFrames = _$reduce_17(event.errors, function (accum, er) {\n return accum.concat(er.stacktrace);\n }, []);\n _$map_16(allFrames, function (frame) {\n frame.file = strip(frame.file);\n });\n });\n }\n };\n var strip = _$stripQueryString_53._strip = function (str) {\n return typeof str === 'string' ? str.replace(/\\?.*$/, '').replace(/#.*$/, '') : str;\n };\n\n /*\n * Automatically notifies Bugsnag when window.onerror is called\n */\n\n var _$onerror_54 = function (win, component) {\n if (win === void 0) {\n win = window;\n }\n if (component === void 0) {\n component = 'window onerror';\n }\n return {\n load: function (client) {\n if (!client._config.autoDetectErrors) return;\n if (!client._config.enabledErrorTypes.unhandledExceptions) return;\n function onerror(messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z');\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event;\n\n // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n } else if (\n // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n typeof messageOrEvent === 'object' && messageOrEvent !== null && (!url || typeof url !== 'string') && !lineNo && !charNo && !error) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n var name = messageOrEvent.type ? \"Event: \" + messageOrEvent.type : 'Error';\n // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n var message = messageOrEvent.message || messageOrEvent.detail || '';\n event = client.Event.create({\n name: name,\n message: message\n }, true, handledState, component, 1);\n\n // provide the original thing onerror received – not our error-like object we passed to _notify\n event.originalError = messageOrEvent;\n\n // include the raw input as metadata – it might contain more info than we extracted\n event.addMetadata(component, {\n event: messageOrEvent,\n extraParameters: url\n });\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n }\n client._notify(event);\n }\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments);\n }\n var prevOnError = win.onerror;\n win.onerror = onerror;\n }\n };\n };\n\n // Sometimes the stacktrace has less information than was passed to window.onerror.\n // This function will augment the first stackframe with any useful info that was\n // received as arguments to the onerror callback.\n var decorateStack = function (stack, url, lineNo, charNo) {\n if (!stack[0]) stack.push({});\n var culprit = stack[0];\n if (!culprit.file && typeof url === 'string') culprit.file = url;\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo;\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo;\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter;\n }\n }\n };\n var isActualNumber = function (n) {\n return typeof n === 'number' && String.call(n) !== 'NaN';\n };\n\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n /* removed: var _$iserror_20 = require('@bugsnag/core/lib/iserror'); */\n ;\n var _listener;\n /*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\n var _$unhandledRejection_55 = function (win) {\n if (win === void 0) {\n win = window;\n }\n var plugin = {\n load: function (client) {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return;\n var listener = function (evt) {\n var error = evt.reason;\n var isBluebird = false;\n\n // accessing properties on evt.detail can throw errors (see #394)\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason;\n isBluebird = true;\n }\n } catch (e) {}\n var event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledPromiseRejection'\n }\n }, 'unhandledrejection handler', 1, client._logger);\n if (isBluebird) {\n _$map_16(event.errors[0].stacktrace, fixBluebirdStacktrace(error));\n }\n client._notify(event, function (event) {\n if (_$iserror_20(event.originalError) && !event.originalError.stack) {\n var _event$addMetadata;\n event.addMetadata('unhandledRejection handler', (_event$addMetadata = {}, _event$addMetadata[Object.prototype.toString.call(event.originalError)] = {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }, _event$addMetadata));\n }\n });\n };\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener);\n } else {\n win.onunhandledrejection = function (reason, promise) {\n listener({\n detail: {\n reason: reason,\n promise: promise\n }\n });\n };\n }\n _listener = listener;\n }\n };\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener);\n } else {\n win.onunhandledrejection = null;\n }\n }\n _listener = null;\n };\n }\n return plugin;\n };\n\n // The stack parser on bluebird stacks in FF get a suprious first frame:\n //\n // Error: derp\n // b@http://localhost:5000/bluebird.html:22:24\n // a@http://localhost:5000/bluebird.html:18:9\n // @http://localhost:5000/bluebird.html:14:9\n //\n // results in\n // […]\n // 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n // 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n // 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n // 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n //\n // so the following reduce/accumulator function removes such frames\n //\n // Bluebird pads method names with spaces so trim that too…\n // https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\n var fixBluebirdStacktrace = function (error) {\n return function (frame) {\n if (frame.file === error.toString()) return;\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '');\n }\n };\n };\n var _$notifier_2 = {};\n var name = 'Bugsnag JavaScript';\n var version = '7.22.7';\n var url = 'https://github.com/bugsnag/bugsnag-js';\n /* removed: var _$Client_4 = require('@bugsnag/core/client'); */\n ;\n /* removed: var _$Event_6 = require('@bugsnag/core/event'); */\n ;\n /* removed: var _$Session_35 = require('@bugsnag/core/session'); */\n ;\n /* removed: var _$Breadcrumb_3 = require('@bugsnag/core/breadcrumb'); */\n ;\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n /* removed: var _$keys_15 = require('@bugsnag/core/lib/es-utils/keys'); */\n ;\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n\n // extend the base config schema with some browser-specific options\n var __schema_2 = _$assign_11({}, _$config_5.schema, _$config_1);\n /* removed: var _$onerror_54 = require('@bugsnag/plugin-window-onerror'); */\n ;\n /* removed: var _$unhandledRejection_55 = require('@bugsnag/plugin-window-unhandled-rejection'); */\n ;\n /* removed: var _$app_38 = require('@bugsnag/plugin-app-duration'); */\n ;\n /* removed: var _$device_40 = require('@bugsnag/plugin-browser-device'); */\n ;\n /* removed: var _$context_39 = require('@bugsnag/plugin-browser-context'); */\n ;\n /* removed: var _$request_44 = require('@bugsnag/plugin-browser-request'); */\n ;\n /* removed: var _$throttle_52 = require('@bugsnag/plugin-simple-throttle'); */\n ;\n /* removed: var _$consoleBreadcrumbs_47 = require('@bugsnag/plugin-console-breadcrumbs'); */\n ;\n /* removed: var _$networkBreadcrumbs_51 = require('@bugsnag/plugin-network-breadcrumbs'); */\n ;\n /* removed: var _$navigationBreadcrumbs_50 = require('@bugsnag/plugin-navigation-breadcrumbs'); */\n ;\n /* removed: var _$interactionBreadcrumbs_49 = require('@bugsnag/plugin-interaction-breadcrumbs'); */\n ;\n /* removed: var _$inlineScriptContent_48 = require('@bugsnag/plugin-inline-script-content'); */\n ;\n /* removed: var _$session_45 = require('@bugsnag/plugin-browser-session'); */\n ;\n /* removed: var _$clientIp_46 = require('@bugsnag/plugin-client-ip'); */\n ;\n /* removed: var _$stripQueryString_53 = require('@bugsnag/plugin-strip-query-string'); */\n ;\n\n // delivery mechanisms\n /* removed: var _$delivery_36 = require('@bugsnag/delivery-x-domain-request'); */\n ;\n /* removed: var _$delivery_37 = require('@bugsnag/delivery-xml-http-request'); */\n ;\n var Bugsnag = {\n _client: null,\n createClient: function (opts) {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = {\n apiKey: opts\n };\n if (!opts) opts = {};\n var internalPlugins = [\n // add browser-specific plugins\n _$app_38, _$device_40(), _$context_39(), _$request_44(), _$throttle_52, _$session_45, _$clientIp_46, _$stripQueryString_53, _$onerror_54(), _$unhandledRejection_55(), _$navigationBreadcrumbs_50(), _$interactionBreadcrumbs_49(), _$networkBreadcrumbs_51(), _$consoleBreadcrumbs_47,\n // this one added last to avoid wrapping functionality before bugsnag uses it\n _$inlineScriptContent_48()];\n\n // configure a client with user supplied options\n var bugsnag = new _$Client_4(opts, __schema_2, internalPlugins, {\n name: name,\n version: version,\n url: url\n });\n\n // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n bugsnag._setDelivery(window.XDomainRequest ? _$delivery_36 : _$delivery_37);\n bugsnag._logger.debug('Loaded!');\n bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state');\n return bugsnag._config.autoTrackSessions ? bugsnag.startSession() : bugsnag;\n },\n start: function (opts) {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.');\n return Bugsnag._client;\n }\n Bugsnag._client = Bugsnag.createClient(opts);\n return Bugsnag._client;\n },\n isStarted: function () {\n return Bugsnag._client != null;\n }\n };\n _$map_16(['resetEventCount'].concat(_$keys_15(_$Client_4.prototype)), function (m) {\n if (/^_/.test(m)) return;\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(\"Bugsnag.\" + m + \"() was called before Bugsnag.start()\");\n Bugsnag._client._depth += 1;\n var ret = Bugsnag._client[m].apply(Bugsnag._client, arguments);\n Bugsnag._client._depth -= 1;\n return ret;\n };\n });\n _$notifier_2 = Bugsnag;\n _$notifier_2.Client = _$Client_4;\n _$notifier_2.Event = _$Event_6;\n _$notifier_2.Session = _$Session_35;\n _$notifier_2.Breadcrumb = _$Breadcrumb_3;\n\n // Export a \"default\" property for compatibility with ESM imports\n _$notifier_2[\"default\"] = Bugsnag;\n return _$notifier_2;\n});","var pad = require('./pad.js');\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\nmodule.exports = function fingerprint() {\n return clientId;\n};","/**\n * Check the provided value is a valid device id\n * @param {unknown} value\n * @returns\n */\nmodule.exports = function isCuid(value) {\n return typeof value === 'string' && /^c[a-z0-9]{20,32}$/.test(value);\n};","var map = {\n\t\"./jasper-signature\": 40,\n\t\"./jasper-signature.png\": 40,\n\t\"./latief-signature\": 41,\n\t\"./latief-signature.png\": 41,\n\t\"./logo\": 42,\n\t\"./logo.png\": 42\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 189;","const conditionalRadios = document.querySelectorAll('.js-conditional-radio');\n\nconditionalRadios.forEach(function (wrapper) {\n const radio = wrapper.querySelectorAll('.js-conditional-radio input[type=radio]');\n const target = wrapper.querySelector('.js-conditional-radio .js-conditional-radio-target');\n\n radio.forEach(function (input) {\n if (input.checked === true && input.value === 'true') {\n target.style.display = 'block';\n }\n input.addEventListener('change', function (e) {\n if (e.target.value === 'true') {\n target.style.display = 'block';\n } else {\n target.style.display = 'none';\n }\n });\n });\n});\n","const isBoolean = value => value === true || value === false;\nconst isObject = value => !!value && typeof value === 'object' && !Array.isArray(value);\nconst isNumber = value => typeof value === 'number' && Number.isFinite(value) && !Number.isNaN(value);\nconst isString = value => typeof value === 'string';\nconst isStringWithLength = value => isString(value) && value.length > 0;\nconst isLogger = value => isObject(value) && typeof value.debug === 'function' && typeof value.info === 'function' && typeof value.warn === 'function' && typeof value.error === 'function';\nconst isStringArray = value => Array.isArray(value) && value.every(isStringWithLength);\nconst isStringOrRegExpArray = value => Array.isArray(value) && value.every(item => isStringWithLength(item) || item instanceof RegExp);\nfunction isPersistedProbability(value) {\n return isObject(value) && isNumber(value.value) && isNumber(value.time);\n}\nconst isSpanContext = value => isObject(value) && typeof value.id === 'string' && typeof value.traceId === 'string' && typeof value.isValid === 'function';\nfunction isTime(value) {\n return isNumber(value) || value instanceof Date;\n}\nfunction isPlugin(value) {\n return isObject(value) && typeof value.configure === 'function';\n}\nfunction isPluginArray(value) {\n return Array.isArray(value) && value.every(plugin => isPlugin(plugin));\n}\nexport { isBoolean, isLogger, isNumber, isObject, isPersistedProbability, isPlugin, isPluginArray, isSpanContext, isString, isStringArray, isStringOrRegExpArray, isStringWithLength, isTime };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { isNumber } from './validation.js';\nclass SpanAttributes {\n constructor(initialValues) {\n this.attributes = initialValues;\n }\n set(name, value) {\n if (typeof value === 'string' || typeof value === 'boolean' || isNumber(value)) {\n this.attributes.set(name, value);\n }\n }\n remove(name) {\n this.attributes.delete(name);\n }\n toJson() {\n return Array.from(this.attributes).map(_ref => {\n let _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n return attributeToJson(key, value);\n });\n }\n}\nclass ResourceAttributes extends SpanAttributes {\n constructor(releaseStage, appVersion, sdkName, sdkVersion) {\n const initialValues = new Map([['deployment.environment', releaseStage], ['telemetry.sdk.name', sdkName], ['telemetry.sdk.version', sdkVersion]]);\n if (appVersion.length > 0) {\n initialValues.set('service.version', appVersion);\n }\n super(initialValues);\n }\n}\nfunction attributeToJson(key, attribute) {\n switch (typeof attribute) {\n case 'number':\n if (Number.isNaN(attribute) || !Number.isFinite(attribute)) {\n return undefined;\n }\n // 'bugsnag.sampling.p' must always be sent as a doubleValue\n if (key !== 'bugsnag.sampling.p' && Number.isInteger(attribute)) {\n return {\n key,\n value: {\n intValue: `${attribute}`\n }\n };\n }\n return {\n key,\n value: {\n doubleValue: attribute\n }\n };\n case 'boolean':\n return {\n key,\n value: {\n boolValue: attribute\n }\n };\n case 'string':\n return {\n key,\n value: {\n stringValue: attribute\n }\n };\n default:\n return undefined;\n }\n}\nexport { ResourceAttributes, SpanAttributes, attributeToJson };","import { isStringWithLength, isString, isLogger, isStringArray, isPluginArray, isObject } from './validation.js';\nconst schema = {\n appVersion: {\n defaultValue: '',\n message: 'should be a string',\n validate: isStringWithLength\n },\n endpoint: {\n defaultValue: 'https://otlp.bugsnag.com/v1/traces',\n message: 'should be a string',\n validate: isStringWithLength\n },\n apiKey: {\n defaultValue: '',\n message: 'should be a 32 character hexadecimal string',\n validate: value => isString(value) && /^[a-f0-9]{32}$/.test(value)\n },\n logger: {\n defaultValue: {\n debug(message) {\n console.debug(message);\n },\n info(message) {\n console.info(message);\n },\n warn(message) {\n console.warn(message);\n },\n error(message) {\n console.error(message);\n }\n },\n message: 'should be a Logger object',\n validate: isLogger\n },\n releaseStage: {\n defaultValue: 'production',\n message: 'should be a string',\n validate: isStringWithLength\n },\n enabledReleaseStages: {\n defaultValue: null,\n message: 'should be an array of strings',\n validate: value => value === null || isStringArray(value)\n },\n plugins: {\n defaultValue: [],\n message: 'should be an array of plugin objects',\n validate: isPluginArray\n }\n};\nfunction validateConfig(config, schema) {\n if (typeof config === 'string') {\n config = {\n apiKey: config\n };\n }\n if (!isObject(config) || !isString(config.apiKey) || config.apiKey.length === 0) {\n throw new Error('No Bugsnag API Key set');\n }\n let warnings = '';\n const cleanConfiguration = {};\n for (const option of Object.keys(schema)) {\n if (Object.prototype.hasOwnProperty.call(config, option)) {\n if (schema[option].validate(config[option])) {\n cleanConfiguration[option] = config[option];\n } else {\n warnings += `\\n - ${option} ${schema[option].message}, got ${typeof config[option]}`;\n cleanConfiguration[option] = schema[option].defaultValue;\n }\n } else {\n cleanConfiguration[option] = schema[option].defaultValue;\n }\n }\n // If apiKey is set but not valid we should still use it, despite the validation warning.\n cleanConfiguration.apiKey = config.apiKey;\n cleanConfiguration.maximumBatchSize = config.maximumBatchSize || 100;\n cleanConfiguration.batchInactivityTimeoutMs = config.batchInactivityTimeoutMs || 30 * 1000;\n if (warnings.length > 0) {\n cleanConfiguration.logger.warn(`Invalid configuration${warnings}`);\n }\n return cleanConfiguration;\n}\nexport { schema, validateConfig };","class BatchProcessor {\n constructor(delivery, configuration, retryQueue, sampler, probabilityManager, encoder) {\n this.spans = [];\n this.timeout = null;\n this.flushQueue = Promise.resolve();\n this.delivery = delivery;\n this.configuration = configuration;\n this.retryQueue = retryQueue;\n this.sampler = sampler;\n this.probabilityManager = probabilityManager;\n this.encoder = encoder;\n this.flush = this.flush.bind(this);\n }\n stop() {\n if (this.timeout !== null) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n start() {\n this.stop();\n this.timeout = setTimeout(this.flush, this.configuration.batchInactivityTimeoutMs);\n }\n add(span) {\n if (this.configuration.enabledReleaseStages && !this.configuration.enabledReleaseStages.includes(this.configuration.releaseStage)) {\n return;\n }\n this.spans.push(span);\n if (this.spans.length >= this.configuration.maximumBatchSize) {\n this.flush();\n } else {\n this.start();\n }\n }\n async flush() {\n this.stop();\n this.flushQueue = this.flushQueue.then(async () => {\n if (this.probabilityManager.fetchingInitialProbability) {\n await this.probabilityManager.fetchingInitialProbability;\n }\n const batch = this.prepareBatch();\n // we either had nothing in the batch originally or all spans were discarded\n if (!batch) {\n return;\n }\n const payload = await this.encoder.encode(batch);\n const batchTime = Date.now();\n try {\n const response = await this.delivery.send(payload);\n if (response.samplingProbability !== undefined) {\n this.probabilityManager.setProbability(response.samplingProbability);\n }\n switch (response.state) {\n case 'success':\n this.retryQueue.flush();\n break;\n case 'failure-discard':\n this.configuration.logger.warn('delivery failed');\n break;\n case 'failure-retryable':\n this.configuration.logger.info('delivery failed, adding to retry queue');\n this.retryQueue.add(payload, batchTime);\n break;\n default:\n response.state;\n }\n } catch (err) {\n this.configuration.logger.warn('delivery failed');\n }\n });\n await this.flushQueue;\n }\n prepareBatch() {\n if (this.spans.length === 0) {\n return;\n }\n // update sampling values if necessary and re-sample\n const batch = [];\n const probability = this.sampler.spanProbability;\n for (const span of this.spans) {\n if (span.samplingProbability.raw > probability.raw) {\n span.samplingProbability = probability;\n }\n if (this.sampler.sample(span)) {\n batch.push(span);\n }\n }\n // clear out the current batch so we're ready to start a new one\n this.spans = [];\n // if every span was discarded there's nothing to send\n if (batch.length === 0) {\n return;\n }\n return batch;\n }\n}\nexport { BatchProcessor };","class SpanEvents {\n constructor() {\n this.events = [];\n }\n add(name, time) {\n this.events.push({\n name,\n time\n });\n }\n toJson(clock) {\n return this.events.map(_ref => {\n let name = _ref.name,\n time = _ref.time;\n return {\n name,\n timeUnixNano: clock.toUnixTimestampNanoseconds(time)\n };\n });\n }\n}\nexport { SpanEvents };","import { SpanEvents } from './events.js';\nimport traceIdToSamplingRate from './trace-id-to-sampling-rate.js';\nimport { isTime, isSpanContext, isBoolean } from './validation.js';\nfunction spanToJson(span, clock) {\n return {\n name: span.name,\n kind: span.kind,\n spanId: span.id,\n traceId: span.traceId,\n parentSpanId: span.parentSpanId,\n startTimeUnixNano: clock.toUnixTimestampNanoseconds(span.startTime),\n endTimeUnixNano: clock.toUnixTimestampNanoseconds(span.endTime),\n attributes: span.attributes.toJson(),\n events: span.events.toJson(clock)\n };\n}\nclass SpanInternal {\n constructor(id, traceId, name, startTime, attributes, parentSpanId) {\n this.kind = 3 /* Kind.Client */; // TODO: How do we define the initial Kind?\n this.events = new SpanEvents();\n this.id = id;\n this.traceId = traceId;\n this.parentSpanId = parentSpanId;\n this.name = name;\n this.startTime = startTime;\n this.attributes = attributes;\n this.samplingRate = traceIdToSamplingRate(this.traceId);\n }\n addEvent(name, time) {\n this.events.add(name, time);\n }\n setAttribute(name, value) {\n this.attributes.set(name, value);\n }\n end(endTime, samplingProbability) {\n this.endTime = endTime;\n let _samplingProbability = samplingProbability;\n this.attributes.set('bugsnag.sampling.p', _samplingProbability.raw);\n return {\n id: this.id,\n name: this.name,\n kind: this.kind,\n traceId: this.traceId,\n startTime: this.startTime,\n attributes: this.attributes,\n events: this.events,\n samplingRate: this.samplingRate,\n endTime,\n get samplingProbability() {\n return _samplingProbability;\n },\n set samplingProbability(samplingProbability) {\n _samplingProbability = samplingProbability;\n this.attributes.set('bugsnag.sampling.p', _samplingProbability.raw);\n },\n parentSpanId: this.parentSpanId\n };\n }\n isValid() {\n return this.endTime === undefined;\n }\n}\nconst coreSpanOptionSchema = {\n startTime: {\n message: 'should be a number or Date',\n getDefaultValue: () => undefined,\n validate: isTime\n },\n parentContext: {\n message: 'should be a SpanContext',\n getDefaultValue: () => undefined,\n validate: value => value === null || isSpanContext(value)\n },\n makeCurrentContext: {\n message: 'should be true|false',\n getDefaultValue: () => undefined,\n validate: isBoolean\n },\n isFirstClass: {\n message: 'should be true|false',\n getDefaultValue: () => undefined,\n validate: isBoolean\n }\n};\nexport { SpanInternal, coreSpanOptionSchema, spanToJson };","/*\n * Copyright The OpenTelemetry Authors\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// taken from OpenTelemetry's TraceIdRatioBasedSampler:\n// https://github.com/open-telemetry/opentelemetry-js/blob/ca700c4eef64c14bb5fef2be6f08ace7973a8881/packages/opentelemetry-sdk-trace-base/src/sampler/TraceIdRatioBasedSampler.ts#L47-L55\n// with some small modifications to match our naming conventions\nfunction traceIdToSamplingRate(traceId) {\n let samplingRate = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const position = i * 8;\n const segment = Number.parseInt(traceId.slice(position, position + 8), 16);\n samplingRate = (samplingRate ^ segment) >>> 0;\n }\n return samplingRate;\n}\nexport { traceIdToSamplingRate as default };","import { spanToJson } from './span.js';\nclass TracePayloadEncoder {\n constructor(clock, configuration, resourceAttributeSource) {\n this.clock = clock;\n this.configuration = configuration;\n this.resourceAttributeSource = resourceAttributeSource;\n }\n async encode(spans) {\n const resourceAttributes = await this.resourceAttributeSource(this.configuration);\n const jsonSpans = Array(spans.length);\n for (let i = 0; i < spans.length; ++i) {\n jsonSpans[i] = spanToJson(spans[i], this.clock);\n }\n const deliveryPayload = {\n resourceSpans: [{\n resource: {\n attributes: resourceAttributes.toJson()\n },\n scopeSpans: [{\n spans: jsonSpans\n }]\n }]\n };\n return {\n body: deliveryPayload,\n headers: {\n 'Bugsnag-Api-Key': this.configuration.apiKey,\n 'Content-Type': 'application/json',\n 'Bugsnag-Span-Sampling': this.generateSamplingHeader(spans)\n }\n };\n }\n generateSamplingHeader(spans) {\n if (spans.length === 0) {\n return '1:0';\n }\n const spanCounts = Object.create(null);\n for (const span of spans) {\n const existingValue = spanCounts[span.samplingProbability.raw] || 0;\n spanCounts[span.samplingProbability.raw] = existingValue + 1;\n }\n const rawProbabilities = Object.keys(spanCounts);\n const pairs = Array(rawProbabilities.length);\n for (let i = 0; i < rawProbabilities.length; ++i) {\n const rawProbability = rawProbabilities[i];\n pairs[i] = `${rawProbability}:${spanCounts[rawProbability]}`;\n }\n return pairs.join(';');\n }\n}\nconst retryCodes = new Set([402, 407, 408, 429]);\nfunction responseStateFromStatusCode(statusCode) {\n if (statusCode >= 200 && statusCode < 300) {\n return 'success';\n }\n if (statusCode >= 400 && statusCode < 500 && !retryCodes.has(statusCode)) {\n return 'failure-discard';\n }\n return 'failure-retryable';\n}\nexport { TracePayloadEncoder, responseStateFromStatusCode };","// the time to wait before retrying a failed request\nconst RETRY_MILLISECONDS = 30 * 1000;\nclass ProbabilityFetcher {\n constructor(delivery, apiKey) {\n this.delivery = delivery;\n this.payload = {\n body: {\n resourceSpans: []\n },\n headers: {\n 'Bugsnag-Api-Key': apiKey,\n 'Content-Type': 'application/json',\n 'Bugsnag-Span-Sampling': '1.0:0'\n }\n };\n }\n async getNewProbability() {\n // keep making requests until we get a new probability value from the server\n while (true) {\n const response = await this.delivery.send(this.payload);\n // in theory this should always be present, but it's possible the request\n // fails or there's a bug on the server side causing it not to be returned\n if (response.samplingProbability !== undefined) {\n return response.samplingProbability;\n }\n await this.timeBetweenRetries();\n }\n }\n timeBetweenRetries() {\n return new Promise(resolve => {\n setTimeout(resolve, RETRY_MILLISECONDS);\n });\n }\n}\nexport { ProbabilityFetcher as default };","// the time between requests to fetch a new probability value from the server\nconst PROBABILITY_REFRESH_MILLISECONDS = 24 * 60 * 60 * 1000; // 24 hours\nclass ProbabilityManager {\n static async create(persistence, sampler, probabilityFetcher) {\n const persistedProbability = await persistence.load('bugsnag-sampling-probability');\n let initialProbabilityTime;\n let initialTimeoutDuration;\n if (persistedProbability === undefined) {\n // If there is no stored probability:\n // - Set the initial probability value to the default\n sampler.probability = 1.0;\n initialProbabilityTime = 0;\n // - Immediately fetch a new probability value\n initialTimeoutDuration = 0;\n } else if (persistedProbability.time < Date.now() - PROBABILITY_REFRESH_MILLISECONDS) {\n // If it is >= 24 hours old:\n // - Set the initial probability value to the stored value\n sampler.probability = persistedProbability.value;\n initialProbabilityTime = persistedProbability.time;\n // - Immediately fetch a new probability value\n initialTimeoutDuration = 0;\n } else {\n // If it is < 24 hours old:\n // - Use the stored probability\n sampler.probability = persistedProbability.value;\n initialProbabilityTime = persistedProbability.time;\n // - Fetch a new probability when this value would be 24 hours old\n initialTimeoutDuration = PROBABILITY_REFRESH_MILLISECONDS - (Date.now() - initialProbabilityTime);\n }\n return new ProbabilityManager(persistence, sampler, probabilityFetcher, initialTimeoutDuration, initialProbabilityTime);\n }\n constructor(persistence, sampler, probabilityFetcher, initialTimeoutDuration, initialProbabilityTime) {\n this.timeout = undefined;\n this.persistence = persistence;\n this.sampler = sampler;\n this.probabilityFetcher = probabilityFetcher;\n this.lastProbabilityTime = initialProbabilityTime;\n if (initialTimeoutDuration === 0) {\n this.fetchingInitialProbability = new Promise(resolve => {\n this.resolveInitialProbability = resolve;\n });\n }\n this.fetchNewProbabilityIn(initialTimeoutDuration);\n }\n setProbability(newProbability) {\n this.lastProbabilityTime = Date.now();\n this.sampler.probability = newProbability;\n this.fetchNewProbabilityIn(PROBABILITY_REFRESH_MILLISECONDS);\n // return this promise for convience in unit tests as it allows us to wait\n // for persistence to finish; in real code we won't ever wait for this but\n // there's no harm in returning it anyway\n return this.persistence.save('bugsnag-sampling-probability', {\n value: newProbability,\n time: this.lastProbabilityTime\n });\n }\n fetchNewProbabilityIn(milliseconds) {\n clearTimeout(this.timeout);\n const lastProbabilityTimeBeforeTimeout = this.lastProbabilityTime;\n this.timeout = setTimeout(async () => {\n const probability = await this.probabilityFetcher.getNewProbability();\n // only apply the new probability if we haven't received another value\n // in the meantime, e.g. from a trace request's response\n if (lastProbabilityTimeBeforeTimeout === this.lastProbabilityTime) {\n this.setProbability(probability);\n }\n // Initial sampling request has been made, and we can unblock batching\n if (this.resolveInitialProbability) {\n this.resolveInitialProbability();\n this.resolveInitialProbability = undefined;\n this.fetchingInitialProbability = undefined;\n }\n }, milliseconds);\n }\n}\nexport { ProbabilityManager as default };","// a processor that buffers spans in memory until the client has started\n// not sure if this would need to be platform specific — will we ever care about\n// persisting spans if 'start' is never called?\nclass BufferingProcessor {\n constructor() {\n this.spans = [];\n }\n add(span) {\n this.spans.push(span);\n }\n}\nexport { BufferingProcessor };","// sampling rates are stored as a number between 0 and 2^32 - 1 (i.e. they are\n// u32s) so we need to scale the probability value to match this range as they\n// are stored as values between 0 and 1\nfunction scaleProbabilityToMatchSamplingRate(probability) {\n return Math.floor(probability * 0xffffffff);\n}\nclass Sampler {\n constructor(initialProbability) {\n // we could just do 'this.probability = initialProbability' but TypeScript\n // doesn't like that as it doesn't directly initialise these properties in\n // the constructor\n this._probability = initialProbability;\n this.scaledProbability = scaleProbabilityToMatchSamplingRate(initialProbability);\n }\n /**\n * The global probability value: a number between 0 & 1\n */\n get probability() {\n return this._probability;\n }\n set probability(probability) {\n this._probability = probability;\n this.scaledProbability = scaleProbabilityToMatchSamplingRate(probability);\n }\n /**\n * The probability value for spans: a number between 0 & 2^32 - 1\n *\n * This is necessary because span sampling rates are generated as unsigned 32\n * bit integers. We scale the global probability value to match that range, so\n * that we can use a simple calculation in 'sample'\n *\n * @see scaleProbabilityToMatchSamplingRate\n */\n get spanProbability() {\n return {\n raw: this._probability,\n scaled: this.scaledProbability\n };\n }\n sample(span) {\n return span.samplingRate <= span.samplingProbability.scaled;\n }\n shouldSample(samplingRate) {\n return samplingRate <= this.spanProbability.scaled;\n }\n}\nexport { Sampler as default };","function _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function () { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function (obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == typeof value && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator.return && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function (skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function () { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function (exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function (type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function (record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function (finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function (tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function (iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction spanContextEquals(span1, span2) {\n if (span1 === span2) return true;\n if (span1 !== undefined && span2 !== undefined) {\n return span1.id === span2.id && span1.traceId === span2.traceId;\n }\n return false;\n}\nclass DefaultSpanContextStorage {\n constructor(backgroundingListener) {\n let contextStack = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n this.isInForeground = true;\n this.onBackgroundStateChange = state => {\n this.isInForeground = state === 'in-foreground';\n // clear the context stack regardless of the new background state\n // since spans are only valid if they start and end while the app is in the foreground\n this.contextStack.length = 0;\n };\n this.contextStack = contextStack;\n backgroundingListener.onStateChange(this.onBackgroundStateChange);\n }\n [Symbol.iterator]() {\n var _this = this;\n return /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var i;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n i = _this.contextStack.length - 1;\n case 1:\n if (!(i >= 0)) {\n _context.next = 7;\n break;\n }\n _context.next = 4;\n return _this.contextStack[i];\n case 4:\n --i;\n _context.next = 1;\n break;\n case 7:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n })();\n }\n push(context) {\n if (context.isValid() && this.isInForeground) {\n this.contextStack.push(context);\n }\n }\n pop(context) {\n if (spanContextEquals(context, this.current)) {\n this.contextStack.pop();\n }\n this.removeClosedContexts();\n }\n get first() {\n this.removeClosedContexts();\n return this.contextStack.length > 0 ? this.contextStack[0] : undefined;\n }\n get current() {\n this.removeClosedContexts();\n return this.contextStack.length > 0 ? this.contextStack[this.contextStack.length - 1] : undefined;\n }\n removeClosedContexts() {\n while (this.contextStack.length > 0 && this.contextStack[this.contextStack.length - 1].isValid() === false) {\n this.contextStack.pop();\n }\n }\n}\nexport { DefaultSpanContextStorage, spanContextEquals };","import { isNumber } from './validation.js';\nfunction timeToNumber(clock, time) {\n if (isNumber(time)) {\n // no need to change anything - we want to store numbers anyway\n // we assume this is nanosecond precision\n return time;\n }\n if (time instanceof Date) {\n return clock.convert(time);\n }\n return clock.now();\n}\nexport { timeToNumber };","import { SpanAttributes } from './attributes.js';\nimport { SpanInternal, coreSpanOptionSchema } from './span.js';\nimport { timeToNumber } from './time.js';\nimport { isSpanContext, isObject } from './validation.js';\nconst DISCARD_END_TIME = -1;\nclass SpanFactory {\n constructor(processor, sampler, idGenerator, spanAttributesSource, clock, backgroundingListener, logger, spanContextStorage) {\n this.openSpans = new WeakSet();\n this.isInForeground = true;\n this.onBackgroundStateChange = state => {\n this.isInForeground = state === 'in-foreground';\n // clear all open spans regardless of the new background state\n // since spans are only valid if they start and end while the app is in the foreground\n this.openSpans = new WeakSet();\n };\n this.processor = processor;\n this.sampler = sampler;\n this.idGenerator = idGenerator;\n this.spanAttributesSource = spanAttributesSource;\n this.clock = clock;\n this.logger = logger;\n this.spanContextStorage = spanContextStorage;\n // this will fire immediately if the app is already backgrounded\n backgroundingListener.onStateChange(this.onBackgroundStateChange);\n }\n startSpan(name, options) {\n const safeStartTime = timeToNumber(this.clock, options.startTime);\n const spanId = this.idGenerator.generate(64);\n // if the parentContext option is not set use the current context\n // if parentContext is explicitly null, or there is no current context,\n // we are starting a new root span\n const parentContext = isSpanContext(options.parentContext) || options.parentContext === null ? options.parentContext : this.spanContextStorage.current;\n const parentSpanId = parentContext ? parentContext.id : undefined;\n const traceId = parentContext ? parentContext.traceId : this.idGenerator.generate(128);\n const attributes = new SpanAttributes(new Map());\n if (typeof options.isFirstClass === 'boolean') {\n attributes.set('bugsnag.span.first_class', options.isFirstClass);\n }\n const span = new SpanInternal(spanId, traceId, name, safeStartTime, attributes, parentSpanId);\n // don't track spans that are started while the app is backgrounded\n if (this.isInForeground) {\n this.openSpans.add(span);\n if (options.makeCurrentContext !== false) {\n this.spanContextStorage.push(span);\n }\n }\n return span;\n }\n configure(processor, logger) {\n this.processor = processor;\n this.logger = logger;\n }\n endSpan(span, endTime) {\n // if the span doesn't exist here it shouldn't be processed\n if (!this.openSpans.delete(span)) {\n // only warn if the span has already been ended explicitly rather than\n // discarded by us\n if (!span.isValid()) {\n this.logger.warn('Attempted to end a Span which has already ended.');\n }\n return;\n }\n // Discard marked spans\n if (endTime === DISCARD_END_TIME) return;\n this.spanAttributesSource.requestAttributes(span);\n const spanEnded = span.end(endTime, this.sampler.spanProbability);\n this.spanContextStorage.pop(span);\n if (this.sampler.sample(spanEnded)) {\n this.processor.add(spanEnded);\n }\n }\n toPublicApi(span) {\n return {\n get id() {\n return span.id;\n },\n get traceId() {\n return span.traceId;\n },\n get samplingRate() {\n return span.samplingRate;\n },\n isValid: () => span.isValid(),\n end: endTime => {\n const safeEndTime = timeToNumber(this.clock, endTime);\n this.endSpan(span, safeEndTime);\n }\n };\n }\n validateSpanOptions(name, options) {\n let schema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : coreSpanOptionSchema;\n let warnings = '';\n const cleanOptions = {};\n if (typeof name !== 'string') {\n warnings += `\\n - name should be a string, got ${typeof name}`;\n name = String(name);\n }\n if (options !== undefined && !isObject(options)) {\n warnings += '\\n - options is not an object';\n } else {\n const spanOptions = options || {};\n for (const option of Object.keys(schema)) {\n if (Object.prototype.hasOwnProperty.call(spanOptions, option) && spanOptions[option] !== undefined) {\n if (schema[option].validate(spanOptions[option])) {\n cleanOptions[option] = spanOptions[option];\n } else {\n warnings += `\\n - ${option} ${schema[option].message}, got ${typeof spanOptions[option]}`;\n cleanOptions[option] = schema[option].getDefaultValue(spanOptions[option]);\n }\n } else {\n cleanOptions[option] = schema[option].getDefaultValue(spanOptions[option]);\n }\n }\n }\n if (warnings.length > 0) {\n this.logger.warn(`Invalid span options${warnings}`);\n }\n return {\n name,\n options: cleanOptions\n };\n }\n}\nexport { DISCARD_END_TIME, SpanFactory };","import { isCuid } from '@bugsnag/cuid';\nimport { isPersistedProbability } from './validation.js';\nclass InMemoryPersistence {\n constructor() {\n this.persistedItems = new Map();\n }\n async load(key) {\n return this.persistedItems.get(key);\n }\n async save(key, value) {\n this.persistedItems.set(key, value);\n }\n}\nfunction toPersistedPayload(key, raw) {\n switch (key) {\n case 'bugsnag-sampling-probability':\n {\n const json = JSON.parse(raw);\n return isPersistedProbability(json) ? json : undefined;\n }\n case 'bugsnag-anonymous-id':\n return isCuid(raw) ? raw : undefined;\n }\n}\nexport { InMemoryPersistence, toPersistedPayload };","const msInDay = 24 * 60 * 60000;\nclass InMemoryQueue {\n constructor(delivery, retryQueueMaxSize) {\n this.delivery = delivery;\n this.retryQueueMaxSize = retryQueueMaxSize;\n this.requestQueue = Promise.resolve();\n this.payloads = [];\n }\n add(payload, time) {\n this.payloads.push({\n payload,\n time\n });\n let spanCount = this.payloads.reduce((count, _ref) => {\n let payload = _ref.payload;\n return count + countSpansInPayload(payload);\n }, 0);\n while (spanCount > this.retryQueueMaxSize) {\n const payload = this.payloads.shift();\n if (!payload) {\n break;\n }\n spanCount -= countSpansInPayload(payload.payload);\n }\n }\n async flush() {\n if (this.payloads.length === 0) return;\n const payloads = this.payloads;\n this.payloads = [];\n this.requestQueue = this.requestQueue.then(async () => {\n for (const _ref2 of payloads) {\n const payload = _ref2.payload;\n const time = _ref2.time;\n // discard payloads at least 24 hours old\n if (Date.now() >= time + msInDay) continue;\n try {\n const _await$this$delivery$ = await this.delivery.send(payload),\n state = _await$this$delivery$.state;\n switch (state) {\n case 'success':\n case 'failure-discard':\n break;\n case 'failure-retryable':\n this.add(payload, time);\n break;\n default:\n state;\n }\n } catch (err) {}\n }\n });\n await this.requestQueue;\n }\n}\nfunction countSpansInPayload(payload) {\n let count = 0;\n for (let i = 0; i < payload.body.resourceSpans.length; ++i) {\n const scopeSpans = payload.body.resourceSpans[i].scopeSpans;\n for (let j = 0; j < scopeSpans.length; ++j) {\n count += scopeSpans[j].spans.length;\n }\n }\n return count;\n}\nexport { InMemoryQueue };","import { responseStateFromStatusCode } from '@bugsnag/core-performance';\nfunction samplingProbabilityFromHeaders(headers) {\n const value = headers.get('Bugsnag-Sampling-Probability');\n if (typeof value !== 'string') {\n return undefined;\n }\n const asNumber = Number.parseFloat(value);\n if (Number.isNaN(asNumber) || asNumber < 0 || asNumber > 1) {\n return undefined;\n }\n return asNumber;\n}\nfunction createFetchDeliveryFactory(fetch, clock, backgroundingListener) {\n // if a backgrounding listener is supplied, set fetch's 'keepalive' flag\n // when the app is backgrounded/terminated so that we can flush the last batch\n // this may be required on platforms such as browser where without 'keepalive'\n // the request may be cancelled (or never start sending) when backgrounded\n // we don't _always_ set the flag because it imposes a 64k payload limit\n let keepalive = false;\n if (backgroundingListener) {\n backgroundingListener.onStateChange(state => {\n keepalive = state === 'in-background';\n });\n }\n return function fetchDeliveryFactory(endpoint) {\n return {\n async send(payload) {\n const body = JSON.stringify(payload.body);\n payload.headers['Bugsnag-Sent-At'] = clock.date().toISOString();\n try {\n const response = await fetch(endpoint, {\n method: 'POST',\n keepalive,\n body,\n headers: payload.headers\n });\n return {\n state: responseStateFromStatusCode(response.status),\n samplingProbability: samplingProbabilityFromHeaders(response.headers)\n };\n } catch (err) {\n if (body.length > 10e5) {\n return {\n state: 'failure-discard'\n };\n }\n return {\n state: 'failure-retryable'\n };\n }\n }\n };\n };\n}\nexport { createFetchDeliveryFactory as default };","function defaultNetworkRequestCallback(networkRequestInfo) {\n return networkRequestInfo;\n}\nfunction isNetworkRequestCallback(value) {\n return typeof value === 'function';\n}\nexport { defaultNetworkRequestCallback, isNetworkRequestCallback };","class RequestTracker {\n constructor() {\n this.callbacks = [];\n }\n onStart(startCallback) {\n this.callbacks.push(startCallback);\n }\n start(context) {\n const results = [];\n for (const startCallback of this.callbacks) {\n const result = startCallback(context);\n if (result) results.push(result);\n }\n return {\n onRequestEnd: endContext => {\n for (const result of results) {\n if (result && result.onRequestEnd) {\n result.onRequestEnd(endContext);\n }\n }\n },\n extraRequestHeaders: results.map(result => {\n if (result && result.extraRequestHeaders) {\n return result.extraRequestHeaders;\n }\n return undefined;\n }).filter(isDefined)\n };\n }\n}\nfunction isDefined(argument) {\n return argument !== undefined;\n}\nexport { RequestTracker };","function getAbsoluteUrl(url, baseUrl) {\n // if it looks like an absolute url do nothing\n if (url.indexOf('https://') === 0 || url.indexOf('http://') === 0) return url;\n try {\n const absoluteUrl = new URL(url, baseUrl).href;\n // if a trailing slash has been added inadvertently remove it\n if (!url.endsWith('/') && absoluteUrl.endsWith('/')) {\n return absoluteUrl.slice(0, -1);\n }\n return absoluteUrl;\n } catch (_a) {\n // not a valid URL for some reason - simply return it\n return url;\n }\n}\nexport { getAbsoluteUrl as default };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { RequestTracker } from './request-tracker.js';\nimport getAbsoluteUrl from './url-helpers.js';\nfunction createStartContext(startTime, input, init, baseUrl) {\n const inputIsRequest = isRequest(input);\n const url = inputIsRequest ? input.url : String(input);\n const method = !!init && init.method || inputIsRequest && input.method || 'GET';\n return {\n url: getAbsoluteUrl(url, baseUrl),\n method,\n startTime,\n type: 'fetch'\n };\n}\nfunction isRequest(input) {\n return !!input && typeof input === 'object' && !(input instanceof URL);\n}\nfunction isHeadersInstance(input) {\n return !!input && typeof input === 'object' && input instanceof Headers;\n}\nfunction createFetchRequestTracker(global, clock) {\n const requestTracker = new RequestTracker();\n const originalFetch = global.fetch;\n global.fetch = function fetch(input, init) {\n const startContext = createStartContext(clock.now(), input, init, global.document && global.document.baseURI);\n const _requestTracker$start = requestTracker.start(startContext),\n onRequestEnd = _requestTracker$start.onRequestEnd,\n extraRequestHeaders = _requestTracker$start.extraRequestHeaders;\n // Add the headers to the `init` received from the caller\n const modifiedParams = mergeRequestHeaders(input, init, extraRequestHeaders);\n return originalFetch.call(this, modifiedParams[0], modifiedParams[1]).then(response => {\n onRequestEnd({\n status: response.status,\n endTime: clock.now(),\n state: 'success'\n });\n return response;\n }).catch(error => {\n onRequestEnd({\n error,\n endTime: clock.now(),\n state: 'error'\n });\n throw error;\n });\n };\n return requestTracker;\n}\nfunction mergeRequestHeaders(input, init, extraRequestHeaders) {\n if (!extraRequestHeaders) return [input, init];\n const extraHeaders = extraRequestHeaders.reduce((headers, current) => Object.assign(Object.assign({}, headers), current), {});\n if (isRequest(input) && (!init || !init.headers)) {\n mergeInputRequestHeaders(extraHeaders, input);\n } else {\n init = mergeInitRequestHeaders(extraHeaders, init);\n }\n return [input, init];\n}\nfunction mergeInputRequestHeaders(extraRequestHeaders, input) {\n for (const _ref of Object.entries(extraRequestHeaders)) {\n var _ref2 = _slicedToArray(_ref, 2);\n const name = _ref2[0];\n const value = _ref2[1];\n if (!input.headers.has(name)) {\n input.headers.set(name, value);\n }\n }\n}\nfunction mergeInitRequestHeaders(extraRequestHeaders, init) {\n if (!init) init = {};\n if (isHeadersInstance(init.headers)) {\n for (const _ref3 of Object.entries(extraRequestHeaders)) {\n var _ref4 = _slicedToArray(_ref3, 2);\n const name = _ref4[0];\n const value = _ref4[1];\n if (!init.headers.has(name)) {\n init.headers.set(name, value);\n }\n }\n return init;\n } else {\n return Object.assign(Object.assign({}, init), {\n headers: Object.assign(Object.assign({}, extraRequestHeaders), init.headers)\n });\n }\n}\nexport { createFetchRequestTracker as default };","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { RequestTracker } from './request-tracker.js';\nimport getAbsoluteUrl from './url-helpers.js';\nfunction createXmlHttpRequestTracker(xhr, clock, document) {\n const requestTracker = new RequestTracker();\n const trackedRequests = new WeakMap();\n const requestHandlers = new WeakMap();\n const originalOpen = xhr.prototype.open;\n xhr.prototype.open = function open(method, url) {\n trackedRequests.set(this, {\n method,\n url: getAbsoluteUrl(String(url), document && document.baseURI)\n });\n // @ts-expect-error rest\n for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n originalOpen.call(this, method, url, ...rest);\n };\n const originalSend = xhr.prototype.send;\n xhr.prototype.send = function send(body) {\n const requestData = trackedRequests.get(this);\n if (requestData) {\n // if there is an existing event listener this request instance is being reused,\n // so we need to remove the listener from the previous send\n const existingHandler = requestHandlers.get(this);\n if (existingHandler) this.removeEventListener('readystatechange', existingHandler);\n const _requestTracker$start = requestTracker.start({\n type: 'xmlhttprequest',\n method: requestData.method,\n url: requestData.url,\n startTime: clock.now()\n }),\n onRequestEnd = _requestTracker$start.onRequestEnd,\n extraRequestHeaders = _requestTracker$start.extraRequestHeaders;\n if (extraRequestHeaders) {\n for (const extraHeaders of extraRequestHeaders) {\n for (const _ref of Object.entries(extraHeaders)) {\n var _ref2 = _slicedToArray(_ref, 2);\n const name = _ref2[0];\n const value = _ref2[1];\n this.setRequestHeader(name, value);\n }\n }\n }\n const onReadyStateChange = evt => {\n if (this.readyState === xhr.DONE && onRequestEnd) {\n // If the status is 0 the request did not complete so report this as an error\n const endContext = this.status > 0 ? {\n endTime: clock.now(),\n status: this.status,\n state: 'success'\n } : {\n endTime: clock.now(),\n state: 'error'\n };\n onRequestEnd(endContext);\n }\n };\n this.addEventListener('readystatechange', onReadyStateChange);\n requestHandlers.set(this, onReadyStateChange);\n }\n originalSend.call(this, body);\n };\n return requestTracker;\n}\nexport { createXmlHttpRequestTracker as default };","import { isObject } from '@bugsnag/core-performance';\nconst defaultSendPageAttributes = {\n referrer: true,\n title: true,\n url: true\n};\nfunction getPermittedAttributes(sendPageAttributes) {\n return Object.assign(Object.assign({}, defaultSendPageAttributes), sendPageAttributes);\n}\nfunction isSendPageAttributes(obj) {\n const allowedTypes = ['undefined', 'boolean'];\n const keys = Object.keys(defaultSendPageAttributes);\n return isObject(obj) && keys.every(key => allowedTypes.includes(typeof obj[key]));\n}\nexport { defaultSendPageAttributes, getPermittedAttributes, isSendPageAttributes };","function shouldOmitSpan(startTime, endTime) {\n return startTime === undefined || endTime === undefined || startTime === 0 && endTime === 0;\n}\nconst instrumentPageLoadPhaseSpans = (spanFactory, performance, route, parentContext) => {\n function createPageLoadPhaseSpan(phase, startTime, endTime) {\n if (shouldOmitSpan(startTime, endTime)) return;\n const span = spanFactory.startSpan(`[PageLoadPhase/${phase}]${route}`, {\n startTime,\n parentContext,\n makeCurrentContext: false\n });\n span.setAttribute('bugsnag.span.category', 'page_load_phase');\n span.setAttribute('bugsnag.phase', phase);\n spanFactory.endSpan(span, endTime);\n }\n const entries = performance.getEntriesByType('navigation');\n const entry = Array.isArray(entries) && entries[0];\n if (entry) {\n createPageLoadPhaseSpan('Unload', entry.unloadEventStart, entry.unloadEventEnd);\n createPageLoadPhaseSpan('Redirect', entry.redirectStart, entry.redirectEnd);\n createPageLoadPhaseSpan('LoadFromCache', entry.fetchStart, entry.domainLookupStart);\n createPageLoadPhaseSpan('DNSLookup', entry.domainLookupStart, entry.domainLookupEnd);\n // secureConectionStart will be 0 if no secure connection is used so use connectEnd in that case\n const TCPHandshakeEnd = entry.secureConnectionStart || entry.connectEnd;\n createPageLoadPhaseSpan('TCPHandshake', entry.connectStart, TCPHandshakeEnd);\n createPageLoadPhaseSpan('TLS', entry.secureConnectionStart, entry.connectEnd);\n createPageLoadPhaseSpan('HTTPRequest', entry.requestStart, entry.responseStart);\n createPageLoadPhaseSpan('HTTPResponse', entry.responseStart, entry.responseEnd);\n createPageLoadPhaseSpan('DomContentLoadedEvent', entry.domContentLoadedEventStart, entry.domContentLoadedEventEnd);\n createPageLoadPhaseSpan('LoadEvent', entry.loadEventStart, entry.loadEventEnd);\n }\n};\nexport { instrumentPageLoadPhaseSpans };","import { getAbsoluteUrl } from '@bugsnag/request-tracker-performance';\nconst defaultRouteResolver = url => url.pathname || '/';\nconst createNoopRoutingProvider = () => {\n return class NoopRoutingProvider {\n constructor() {\n let resolveRoute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRouteResolver;\n this.resolveRoute = resolveRoute;\n }\n listenForRouteChanges(startRouteChangeSpan) {}\n };\n};\nconst createDefaultRoutingProvider = (onSettle, location) => {\n return class DefaultRoutingProvider {\n constructor() {\n let resolveRoute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultRouteResolver;\n this.resolveRoute = resolveRoute;\n }\n listenForRouteChanges(startRouteChangeSpan) {\n addEventListener('popstate', ev => {\n const url = new URL(location.href);\n const span = startRouteChangeSpan(url, 'popstate');\n onSettle(endTime => {\n span.end(endTime);\n });\n });\n const originalPushState = history.pushState;\n history.pushState = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const url = args[2];\n if (url) {\n const absoluteURL = new URL(getAbsoluteUrl(url.toString(), document.baseURI));\n const span = startRouteChangeSpan(absoluteURL, 'pushState');\n onSettle(endTime => {\n span.end(endTime);\n });\n }\n originalPushState.apply(this, args);\n };\n }\n };\n};\nexport { createDefaultRoutingProvider, createNoopRoutingProvider, defaultRouteResolver };","import { getPermittedAttributes } from '../send-page-attributes.js';\nimport { instrumentPageLoadPhaseSpans } from './page-load-phase-spans.js';\nimport { defaultRouteResolver } from '../default-routing-provider.js';\nclass FullPageLoadPlugin {\n constructor(document, location, spanFactory, webVitals, onSettle, backgroundingListener, performance) {\n // if the page was backgrounded at any point in the loading process a page\n // load span is invalidated as the browser will deprioritise the page\n this.wasBackgrounded = false;\n this.document = document;\n this.location = location;\n this.spanFactory = spanFactory;\n this.webVitals = webVitals;\n this.onSettle = onSettle;\n this.performance = performance;\n backgroundingListener.onStateChange(state => {\n if (!this.wasBackgrounded && state === 'in-background') {\n this.wasBackgrounded = true;\n }\n });\n }\n configure(configuration) {\n // don't report a page load span if the option is turned off or the page was\n // backgrounded at any point in the loading process\n if (!configuration.autoInstrumentFullPageLoads || this.wasBackgrounded) {\n return;\n }\n const span = this.spanFactory.startSpan('[FullPageLoad]', {\n startTime: 0,\n parentContext: null\n });\n const permittedAttributes = getPermittedAttributes(configuration.sendPageAttributes);\n const url = new URL(this.location.href);\n this.onSettle(endTime => {\n if (this.wasBackgrounded) return;\n // ensure there's always a route on this span by falling back to the\n // default route resolver - the pipeline will ignore page load spans that\n // don't have a route\n const route = configuration.routingProvider.resolveRoute(url) || defaultRouteResolver(url);\n span.name += route;\n instrumentPageLoadPhaseSpans(this.spanFactory, this.performance, route, span);\n // Browser attributes\n span.setAttribute('bugsnag.span.category', 'full_page_load');\n span.setAttribute('bugsnag.browser.page.route', route);\n if (permittedAttributes.referrer) span.setAttribute('bugsnag.browser.page.referrer', this.document.referrer);\n if (permittedAttributes.title) span.setAttribute('bugsnag.browser.page.title', this.document.title);\n if (permittedAttributes.url) span.setAttribute('bugsnag.browser.page.url', url.toString());\n this.webVitals.attachTo(span);\n this.spanFactory.endSpan(span, endTime);\n });\n }\n}\nexport { FullPageLoadPlugin };","import { defaultNetworkRequestCallback } from '@bugsnag/request-tracker-performance';\nconst permittedPrefixes = ['http://', 'https://', '/', './', '../'];\nclass NetworkRequestPlugin {\n constructor(spanFactory, spanContextStorage, fetchTracker, xhrTracker) {\n this.spanFactory = spanFactory;\n this.spanContextStorage = spanContextStorage;\n this.fetchTracker = fetchTracker;\n this.xhrTracker = xhrTracker;\n this.configEndpoint = '';\n this.networkRequestCallback = defaultNetworkRequestCallback;\n this.logger = {\n debug: console.debug,\n warn: console.warn,\n info: console.info,\n error: console.error\n };\n this.trackRequest = startContext => {\n if (!this.shouldTrackRequest(startContext)) return;\n const shouldPropagateTraceContextByDefault = false;\n const defaultRequestInfo = {\n url: startContext.url,\n type: startContext.type,\n propagateTraceContext: shouldPropagateTraceContextByDefault\n };\n const networkRequestInfo = this.networkRequestCallback(defaultRequestInfo);\n // returning null neither creates a span nor propagates trace context\n if (!networkRequestInfo) {\n return {\n onRequestEnd: undefined,\n extraRequestHeaders: undefined\n };\n }\n if (networkRequestInfo.propagateTraceContext === undefined) {\n networkRequestInfo.propagateTraceContext = shouldPropagateTraceContextByDefault;\n }\n // a span is not created if url is null\n if (!networkRequestInfo.url) {\n return {\n onRequestEnd: undefined,\n // propagate trace context if requested using span context\n extraRequestHeaders: networkRequestInfo.propagateTraceContext ? this.getExtraRequestHeaders() : undefined\n };\n }\n // otherwise, create a span and propagate trace context if requested\n if (typeof networkRequestInfo.url !== 'string') {\n this.logger.warn(`expected url to be a string following network request callback, got ${typeof networkRequestInfo.url}`);\n return;\n }\n const span = this.spanFactory.startSpan(`[HTTP]/${startContext.method.toUpperCase()}`, {\n startTime: startContext.startTime,\n makeCurrentContext: false\n });\n span.setAttribute('bugsnag.span.category', 'network');\n span.setAttribute('http.method', startContext.method);\n span.setAttribute('http.url', networkRequestInfo.url);\n return {\n onRequestEnd: endContext => {\n if (endContext.state === 'success') {\n span.setAttribute('http.status_code', endContext.status);\n this.spanFactory.endSpan(span, endContext.endTime);\n }\n },\n // propagate trace context using network span\n extraRequestHeaders: networkRequestInfo.propagateTraceContext ? this.getExtraRequestHeaders(span) : undefined\n };\n };\n }\n configure(configuration) {\n this.logger = configuration.logger;\n if (configuration.autoInstrumentNetworkRequests) {\n this.configEndpoint = configuration.endpoint;\n this.xhrTracker.onStart(this.trackRequest);\n this.fetchTracker.onStart(this.trackRequest);\n this.networkRequestCallback = configuration.networkRequestCallback;\n }\n }\n shouldTrackRequest(startContext) {\n return startContext.url !== this.configEndpoint && permittedPrefixes.some(prefix => startContext.url.startsWith(prefix));\n }\n getExtraRequestHeaders(span) {\n const extraRequestHeaders = {};\n if (span) {\n const traceId = span.traceId;\n const parentSpanId = span.id;\n const sampled = this.spanFactory.sampler.shouldSample(span.samplingRate);\n extraRequestHeaders.traceparent = buildTraceparentHeader(traceId, parentSpanId, sampled);\n } else if (this.spanContextStorage.current) {\n const currentSpanContext = this.spanContextStorage.current;\n const traceId = currentSpanContext.traceId;\n const parentSpanId = currentSpanContext.id;\n const sampled = this.spanFactory.sampler.shouldSample(currentSpanContext.samplingRate);\n extraRequestHeaders.traceparent = buildTraceparentHeader(traceId, parentSpanId, sampled);\n }\n return extraRequestHeaders;\n }\n}\nfunction buildTraceparentHeader(traceId, parentSpanId, sampled) {\n return `00-${traceId}-${parentSpanId}-${sampled ? '01' : '00'}`;\n}\nexport { NetworkRequestPlugin };","function getHttpVersion(protocol) {\n switch (protocol) {\n case '':\n return undefined;\n case 'http/1.0':\n return '1.0';\n case 'http/1.1':\n return '1.1';\n case 'h2':\n case 'h2c':\n return '2.0';\n case 'h3':\n return '3.0';\n case 'spdy/1':\n case 'spdy/2':\n case 'spdy/3':\n return 'SPDY';\n default:\n return protocol;\n }\n}\nfunction resourceLoadSupported(PerformanceObserverClass) {\n return PerformanceObserverClass && Array.isArray(PerformanceObserverClass.supportedEntryTypes) && PerformanceObserverClass.supportedEntryTypes.includes('resource');\n}\nclass ResourceLoadPlugin {\n constructor(spanFactory, spanContextStorage, PerformanceObserverClass) {\n this.spanFactory = spanFactory;\n this.spanContextStorage = spanContextStorage;\n this.PerformanceObserverClass = PerformanceObserverClass;\n }\n configure(configuration) {\n if (!resourceLoadSupported(this.PerformanceObserverClass)) return;\n const observer = new this.PerformanceObserverClass(list => {\n const entries = list.getEntries();\n for (const entry of entries) {\n if (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest') {\n continue;\n }\n const parentContext = this.spanContextStorage.first;\n if (parentContext) {\n const networkRequestInfo = configuration.networkRequestCallback({\n url: entry.name,\n type: entry.initiatorType\n });\n if (!networkRequestInfo) return;\n if (typeof networkRequestInfo.url !== 'string') {\n configuration.logger.warn(`expected url to be a string following network request callback, got ${typeof networkRequestInfo.url}`);\n return;\n }\n let name = '';\n try {\n const url = new URL(networkRequestInfo.url);\n url.search = '';\n name = url.href;\n } catch (err) {\n configuration.logger.warn(`Unable to parse URL returned from networkRequestCallback: ${networkRequestInfo.url}`);\n return;\n }\n const span = this.spanFactory.startSpan(`[ResourceLoad]${name}`, {\n parentContext,\n startTime: entry.startTime,\n makeCurrentContext: false\n });\n span.setAttribute('bugsnag.span.category', 'resource_load');\n span.setAttribute('http.url', networkRequestInfo.url);\n const httpFlavor = getHttpVersion(entry.nextHopProtocol);\n if (httpFlavor) {\n span.setAttribute('http.flavor', httpFlavor);\n }\n if (entry.encodedBodySize && entry.decodedBodySize) {\n span.setAttribute('http.response_content_length', entry.encodedBodySize);\n span.setAttribute('http.response_content_length_uncompressed', entry.decodedBodySize);\n }\n if (entry.responseStatus) {\n span.setAttribute('http.status_code', entry.responseStatus);\n }\n this.spanFactory.endSpan(span, entry.responseEnd);\n }\n }\n });\n try {\n observer.observe({\n type: 'resource',\n buffered: true\n });\n } catch (err) {\n configuration.logger.warn('Unable to get previous resource loads as buffered observer not supported, only showing resource loads from this point on');\n observer.observe({\n entryTypes: ['resource']\n });\n }\n }\n}\nexport { ResourceLoadPlugin, getHttpVersion };","import { isObject, isString, coreSpanOptionSchema } from '@bugsnag/core-performance';\nimport { getPermittedAttributes } from '../send-page-attributes.js';\nimport { defaultRouteResolver } from '../default-routing-provider.js';\n\n// exclude isFirstClass from the route change option schema\nconst startTime = coreSpanOptionSchema.startTime,\n parentContext = coreSpanOptionSchema.parentContext,\n makeCurrentContext = coreSpanOptionSchema.makeCurrentContext;\nconst routeChangeSpanOptionSchema = {\n startTime,\n parentContext,\n makeCurrentContext,\n trigger: {\n getDefaultValue: value => String(value),\n message: 'should be a string',\n validate: isString\n }\n};\nclass RouteChangePlugin {\n constructor(spanFactory, location, document) {\n this.spanFactory = spanFactory;\n this.location = location;\n this.document = document;\n }\n configure(configuration) {\n if (!configuration.autoInstrumentRouteChanges) return;\n const previousUrl = new URL(this.location.href);\n let previousRoute = configuration.routingProvider.resolveRoute(previousUrl) || defaultRouteResolver(previousUrl);\n const permittedAttributes = getPermittedAttributes(configuration.sendPageAttributes);\n configuration.routingProvider.listenForRouteChanges((url, trigger, options) => {\n let absoluteUrl;\n if (url instanceof URL) {\n absoluteUrl = url;\n } else {\n try {\n const stringUrl = String(url);\n absoluteUrl = new URL(stringUrl);\n } catch (err) {\n configuration.logger.warn('Invalid span options\\n - url should be a URL');\n return {\n id: '',\n traceId: '',\n samplingRate: 0,\n isValid: () => false,\n end: () => {}\n };\n }\n }\n // create internal options for validation\n const routeChangeSpanOptions = Object.assign(Object.assign({}, options), {\n trigger\n });\n const cleanOptions = this.spanFactory.validateSpanOptions('[RouteChange]', routeChangeSpanOptions, routeChangeSpanOptionSchema);\n const route = configuration.routingProvider.resolveRoute(absoluteUrl) || defaultRouteResolver(absoluteUrl);\n // update the span name using the validated route\n cleanOptions.name += route;\n const span = this.spanFactory.startSpan(cleanOptions.name, cleanOptions.options);\n span.setAttribute('bugsnag.span.category', 'route_change');\n span.setAttribute('bugsnag.browser.page.route', route);\n span.setAttribute('bugsnag.browser.page.previous_route', previousRoute);\n span.setAttribute('bugsnag.browser.page.route_change.trigger', cleanOptions.options.trigger);\n if (permittedAttributes.url) span.setAttribute('bugsnag.browser.page.url', url.toString());\n previousRoute = route;\n return {\n id: span.id,\n traceId: span.traceId,\n isValid: span.isValid,\n samplingRate: span.samplingRate,\n end: endTimeOrOptions => {\n const options = isObject(endTimeOrOptions) ? endTimeOrOptions : {\n endTime: endTimeOrOptions\n };\n if (permittedAttributes.title) {\n span.setAttribute('bugsnag.browser.page.title', this.document.title);\n }\n if (options.url) {\n const urlObject = ensureUrl(options.url); // convert strings to URL if necessary\n const route = configuration.routingProvider.resolveRoute(urlObject) || defaultRouteResolver(urlObject);\n span.name = `[RouteChange]${route}`;\n span.setAttribute('bugsnag.browser.page.route', route);\n previousRoute = route;\n // update the URL attribute as well\n if (permittedAttributes.url) {\n span.setAttribute('bugsnag.browser.page.url', urlObject.toString());\n }\n }\n this.spanFactory.toPublicApi(span).end(options.endTime);\n }\n };\n });\n }\n}\nfunction ensureUrl(url) {\n if (typeof url === 'string') {\n return new URL(url);\n }\n return url;\n}\nexport { RouteChangePlugin };","import { millisecondsToNanoseconds } from '@bugsnag/core-performance';\n\n// maximum allowed clock divergence in milliseconds\nconst MAX_CLOCK_DRIFT_MS = 300000;\nfunction recalculateTimeOrigin(timeOrigin, performance) {\n // if the machine has been sleeping the monatomic clock used by performance.now() may have been paused,\n // so we need to check if this has drifted significantly from Date.now()\n // if the drift is > 5 minutes re-set the clock's origin to bring it back in line with Date.now()\n if (Math.abs(Date.now() - (timeOrigin + performance.now())) > MAX_CLOCK_DRIFT_MS) {\n return Date.now() - performance.now();\n }\n return timeOrigin;\n}\nfunction createClock(performance, backgroundingListener) {\n const initialTimeOrigin = performance.timeOrigin === undefined ? performance.timing.navigationStart : performance.timeOrigin;\n // the performance clock could be shared between different tabs running in the same process\n // so may already have diverged - for this reason we calculate a time origin when we first create the clock\n // as well as when the app returns to the foreground\n let calculatedTimeOrigin = recalculateTimeOrigin(initialTimeOrigin, performance);\n backgroundingListener.onStateChange(state => {\n if (state === 'in-foreground') {\n calculatedTimeOrigin = recalculateTimeOrigin(calculatedTimeOrigin, performance);\n }\n });\n return {\n now: () => performance.now(),\n date: () => new Date(calculatedTimeOrigin + performance.now()),\n convert: date => date.getTime() - calculatedTimeOrigin,\n // convert milliseconds since timeOrigin to full timestamp\n toUnixTimestampNanoseconds: time => millisecondsToNanoseconds(calculatedTimeOrigin + time).toString()\n };\n}\nexport { createClock as default };","import { isObject } from '@bugsnag/core-performance';\nconst isRoutingProvider = value => isObject(value) && typeof value.resolveRoute === 'function' && typeof value.listenForRouteChanges === 'function';\nexport { isRoutingProvider };","function toHex(value) {\n const hex = value.toString(16);\n // pad hex with a leading 0 if it's not already 2 characters\n if (hex.length === 1) {\n return '0' + hex;\n }\n return hex;\n}\nconst idGenerator = {\n generate(bits) {\n const bytes = new Uint8Array(bits / 8);\n // TODO: do we just read window here?\n // how can we pass this in given it needs to be valid before 'start' is called?\n const randomValues = window.crypto.getRandomValues(bytes);\n return Array.from(randomValues, toHex).join('');\n }\n};\nexport { idGenerator as default };","class Settler {\n constructor(clock) {\n this.settled = false;\n this.callbacks = new Set();\n this.clock = clock;\n }\n subscribe(callback) {\n this.callbacks.add(callback);\n // if we're already settled, call the callback immediately\n if (this.isSettled()) {\n callback(this.clock.now());\n }\n }\n unsubscribe(callback) {\n this.callbacks.delete(callback);\n }\n isSettled() {\n return this.settled;\n }\n settle(settledTime) {\n this.settled = true;\n for (const callback of this.callbacks) {\n callback(settledTime);\n }\n }\n}\nexport { Settler };","import { Settler } from './settler.js';\nclass DomMutationSettler extends Settler {\n constructor(clock, target) {\n super(clock);\n this.timeout = undefined;\n const observer = new MutationObserver(() => {\n this.restart();\n });\n observer.observe(target, {\n subtree: true,\n childList: true,\n characterData: true\n // we don't track attribute changes as they may or may not be user visible\n // so we assume they won't affect the page appearing settled to the user\n });\n\n this.restart();\n }\n restart() {\n clearTimeout(this.timeout);\n this.settled = false;\n // we wait 100ms to ensure that DOM mutations have actually stopped but\n // don't want the settled time to reflect that wait, so we record the time\n // here and use that when settling\n const settledTime = this.clock.now();\n this.timeout = setTimeout(() => {\n this.settle(settledTime);\n }, 100);\n }\n}\nexport { DomMutationSettler as default };","import { Settler } from './settler.js';\n\n// check if a PerformanceEntry is a PerformanceNavigationTiming\nfunction isPerformanceNavigationTiming(entry) {\n return !!entry && entry.entryType === 'navigation';\n}\nclass LoadEventEndSettler extends Settler {\n constructor(clock, addEventListener, performance, document) {\n super(clock);\n // we delay settling by a macrotask so that the load event has ended\n // see: https://stackoverflow.com/questions/25915634/difference-between-microtask-and-macrotask-within-an-event-loop-context/25933985#25933985\n // https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/\n if (document.readyState === 'complete') {\n setTimeout(() => {\n this.settleUsingPerformance(performance);\n }, 0);\n } else {\n addEventListener('load', () => {\n setTimeout(() => {\n this.settleUsingPerformance(performance);\n }, 0);\n });\n }\n }\n settleUsingPerformance(performance) {\n const now = this.clock.now();\n // there's only ever one navigation entry\n // PLAT-10204 Prevent snags occuring due to DOM scanning bots like BuiltWith https://builtwith.com/biup\n const entry = typeof performance.getEntriesByType === 'function' ? performance.getEntriesByType('navigation')[0] : undefined;\n let settledTime = 0;\n if (isPerformanceNavigationTiming(entry)) {\n settledTime = entry.loadEventEnd;\n } else if (performance.timing) {\n settledTime = performance.timing.loadEventEnd - performance.timing.navigationStart;\n }\n // if the settled time is obviously wrong then use the current time instead\n // this won't be a perfectly accurate value, but it should be close enough\n // for this purpose\n if (settledTime <= 0 || settledTime > now) {\n settledTime = now;\n }\n this.settle(settledTime);\n }\n}\nexport { LoadEventEndSettler as default };","import { Settler } from './settler.js';\nclass RequestSettler extends Settler {\n constructor(clock, requestTracker) {\n super(clock);\n this.timeout = undefined;\n this.urlsToIgnore = [];\n this.outstandingRequests = 0;\n // unlike most other settlers we start settled as it's possible to not make\n // any requests at all\n // TODO: we actually should only be settled if there are no outstanding\n // requests when constructed\n this.settled = true;\n requestTracker.onStart(this.onRequestStart.bind(this));\n }\n setUrlsToIgnore(urlsToIgnore) {\n this.urlsToIgnore = urlsToIgnore;\n }\n onRequestStart(startContext) {\n // if this is an excluded URL, ignore this request\n if (this.shouldIgnoreUrl(startContext.url)) return;\n clearTimeout(this.timeout);\n this.settled = false;\n ++this.outstandingRequests;\n return {\n onRequestEnd: endContext => {\n if (--this.outstandingRequests === 0) {\n // we wait 100ms to ensure that requests have actually stopped but don't\n // want the settled time to reflect that wait, so we record the time\n // here and use that when settling\n const settledTime = this.clock.now();\n this.timeout = setTimeout(() => {\n this.settle(settledTime);\n }, 100);\n }\n }\n };\n }\n shouldIgnoreUrl(url) {\n return this.urlsToIgnore.some(regexp => regexp.test(url));\n }\n}\nexport { RequestSettler as default };","import { Settler } from './settler.js';\n\n/**\n * SettlerAggregate is a Settler that is settled when ALL Settlers it is\n * constructed with are settled themselves\n */\nclass SettlerAggregate extends Settler {\n constructor(clock, settlers) {\n super(clock);\n this.settlers = settlers;\n for (const settler of settlers) {\n settler.subscribe(settledTime => {\n // we need to check if all of the settlers are settled here as a\n // previously settled settler could have unsettled in the meantime\n if (this.settlersAreSettled()) {\n this.settle(settledTime);\n } else {\n this.settled = false;\n }\n });\n }\n }\n isSettled() {\n // ensure all child settlers are settled as well; it's possible for all of\n // them to have settled previously only for one to unsettle\n return super.isSettled() && this.settlersAreSettled();\n }\n settlersAreSettled() {\n for (const settler of this.settlers) {\n if (!settler.isSettled()) {\n return false;\n }\n }\n return true;\n }\n}\nexport { SettlerAggregate as default };","import { InMemoryPersistence, toPersistedPayload } from '@bugsnag/core-performance';\nfunction makeBrowserPersistence(window) {\n // accessing localStorage can throw on some browsers, so we have to catch\n // these errors and provide a fallback\n try {\n if (window.localStorage) {\n return new BrowserPersistence(window.localStorage);\n }\n } catch (_a) {}\n // store items in memory if localStorage isn't available\n return new InMemoryPersistence();\n}\nfunction toString(key, value) {\n switch (key) {\n case 'bugsnag-sampling-probability':\n return JSON.stringify(value);\n case 'bugsnag-anonymous-id':\n return value;\n default:\n return key;\n }\n}\nclass BrowserPersistence {\n constructor(localStorage) {\n this.storage = localStorage;\n }\n async load(key) {\n try {\n const raw = this.storage.getItem(key);\n if (raw) {\n return toPersistedPayload(key, raw);\n }\n } catch (_a) {}\n }\n async save(key, value) {\n try {\n this.storage.setItem(key, toString(key, value));\n } catch (_a) {}\n }\n}\nexport { makeBrowserPersistence as default };","class WebVitals {\n constructor(performance, clock, PerformanceObserverClass) {\n this.performance = performance;\n this.clock = clock;\n this.observers = [];\n if (PerformanceObserverClass && Array.isArray(PerformanceObserverClass.supportedEntryTypes)) {\n const supportedEntryTypes = PerformanceObserverClass.supportedEntryTypes;\n if (supportedEntryTypes.includes('largest-contentful-paint')) {\n this.observeLargestContentfulPaint(PerformanceObserverClass);\n }\n if (supportedEntryTypes.includes('layout-shift')) {\n this.observeLayoutShift(PerformanceObserverClass);\n }\n }\n }\n attachTo(span) {\n const firstContentfulPaint = this.firstContentfulPaint();\n if (firstContentfulPaint) {\n span.addEvent('fcp', firstContentfulPaint);\n }\n const timeToFirstByte = this.timeToFirstByte();\n if (timeToFirstByte) {\n span.addEvent('ttfb', timeToFirstByte);\n }\n const firstInputDelay = this.firstInputDelay();\n if (firstInputDelay) {\n span.addEvent('fid_start', firstInputDelay.start);\n span.addEvent('fid_end', firstInputDelay.end);\n }\n if (this.cumulativeLayoutShift) {\n span.setAttribute('bugsnag.metrics.cls', this.cumulativeLayoutShift);\n }\n if (this.largestContentfulPaint) {\n span.addEvent('lcp', this.largestContentfulPaint);\n }\n // as there is only 1 page load span, we don't need to keep observing\n // performance events, so can disconnect from any observers we've registered\n for (const observer of this.observers) {\n observer.disconnect();\n }\n }\n firstContentfulPaint() {\n const entries = this.performance.getEntriesByName('first-contentful-paint', 'paint');\n const entry = Array.isArray(entries) && entries[0];\n if (entry) {\n return entry.startTime;\n }\n }\n timeToFirstByte() {\n const entries = this.performance.getEntriesByType('navigation');\n const entry = Array.isArray(entries) && entries[0];\n let responseStart;\n if (entry) {\n responseStart = entry.responseStart;\n } else {\n responseStart = this.performance.timing.responseStart - this.performance.timing.navigationStart;\n }\n // only use responseStart if it's valid (between 0 and the current time)\n // any other value cannot be valid because it would mean the response\n // started immediately or hasn't happened yet!\n if (responseStart > 0 && responseStart <= this.clock.now()) {\n return responseStart;\n }\n }\n firstInputDelay() {\n const entries = this.performance.getEntriesByType('first-input');\n const entry = Array.isArray(entries) && entries[0];\n if (entry) {\n return {\n start: entry.startTime,\n end: entry.processingStart\n };\n }\n }\n observeLargestContentfulPaint(PerformanceObserverClass) {\n const observer = new PerformanceObserverClass(list => {\n const entries = list.getEntries();\n if (entries.length > 0) {\n // Use the latest LCP candidate\n this.largestContentfulPaint = entries[entries.length - 1].startTime;\n }\n });\n observer.observe({\n type: 'largest-contentful-paint',\n buffered: true\n });\n this.observers.push(observer);\n }\n observeLayoutShift(PerformanceObserverClass) {\n let session;\n const observer = new PerformanceObserverClass(list => {\n for (const entry of list.getEntries()) {\n // ignore entries with recent input as it's likely the layout shifted due\n // to user input and this metric only cares about unexpected layout\n // shifts\n if (entry.hadRecentInput) {\n continue;\n }\n // include this entry in the current session if we have a current session\n // and this entry fits into the session window (it occurred less than 1\n // second after the previous entry and the session duration is less than\n // 5 seconds), otherwise start a new session\n if (session && entry.startTime - session.previousStartTime < 1000 && entry.startTime - session.firstStartTime < 5000) {\n session.value += entry.value;\n session.previousStartTime = entry.startTime;\n } else {\n session = {\n value: entry.value,\n firstStartTime: entry.startTime,\n previousStartTime: entry.startTime\n };\n }\n }\n if (session && (this.cumulativeLayoutShift === undefined || session.value > this.cumulativeLayoutShift)) {\n this.cumulativeLayoutShift = session.value;\n }\n });\n observer.observe({\n type: 'layout-shift',\n buffered: true\n });\n this.observers.push(observer);\n }\n}\nexport { WebVitals };","import { createNoopClient, createClient, InMemoryQueue } from '@bugsnag/core-performance';\nimport createFetchDeliveryFactory from '@bugsnag/delivery-fetch-performance';\nimport { createFetchRequestTracker, createXmlHttpRequestTracker } from '@bugsnag/request-tracker-performance';\nimport { FullPageLoadPlugin } from './auto-instrumentation/full-page-load-plugin.js';\nimport { NetworkRequestPlugin } from './auto-instrumentation/network-request-plugin.js';\nimport { ResourceLoadPlugin } from './auto-instrumentation/resource-load-plugin.js';\nimport { RouteChangePlugin } from './auto-instrumentation/route-change-plugin.js';\nimport createBrowserBackgroundingListener from './backgrounding-listener.js';\nimport createClock from './clock.js';\nimport { createSchema } from './config.js';\nimport { createNoopRoutingProvider, createDefaultRoutingProvider } from './default-routing-provider.js';\nimport idGenerator from './id-generator.js';\nimport createOnSettle, { createNoopOnSettle } from './on-settle/index.js';\nimport makeBrowserPersistence from './persistence.js';\nimport createResourceAttributesSource from './resource-attributes-source.js';\nimport { createSpanAttributesSource } from './span-attributes-source.js';\nimport { WebVitals } from './web-vitals.js';\nlet onSettle;\nlet DefaultRoutingProvider;\nlet BugsnagPerformance;\nif (typeof window === 'undefined' || typeof document === 'undefined') {\n onSettle = createNoopOnSettle();\n DefaultRoutingProvider = createNoopRoutingProvider();\n BugsnagPerformance = createNoopClient();\n} else {\n const backgroundingListener = createBrowserBackgroundingListener(window);\n const spanAttributesSource = createSpanAttributesSource(document);\n const clock = createClock(performance, backgroundingListener);\n const persistence = makeBrowserPersistence(window);\n const resourceAttributesSource = createResourceAttributesSource(navigator, persistence);\n const fetchRequestTracker = createFetchRequestTracker(window, clock);\n const xhrRequestTracker = createXmlHttpRequestTracker(XMLHttpRequest, clock, document);\n const webVitals = new WebVitals(performance, clock, window.PerformanceObserver);\n onSettle = createOnSettle(clock, window, fetchRequestTracker, xhrRequestTracker, performance);\n DefaultRoutingProvider = createDefaultRoutingProvider(onSettle, window.location);\n BugsnagPerformance = createClient({\n backgroundingListener,\n clock,\n resourceAttributesSource,\n spanAttributesSource,\n deliveryFactory: createFetchDeliveryFactory(window.fetch, clock, backgroundingListener),\n idGenerator,\n schema: createSchema(window.location.hostname, new DefaultRoutingProvider()),\n plugins: (spanFactory, spanContextStorage) => [onSettle, new FullPageLoadPlugin(document, window.location, spanFactory, webVitals, onSettle, backgroundingListener, performance),\n // ResourceLoadPlugin should always come after FullPageLoad plugin, as it should use that\n // span context as the parent of it's spans\n new ResourceLoadPlugin(spanFactory, spanContextStorage, window.PerformanceObserver), new NetworkRequestPlugin(spanFactory, spanContextStorage, fetchRequestTracker, xhrRequestTracker), new RouteChangePlugin(spanFactory, window.location, document)],\n persistence,\n retryQueueFactory: (delivery, retryQueueMaxSize) => new InMemoryQueue(delivery, retryQueueMaxSize)\n });\n}\nconst BugsnagPerformance$1 = BugsnagPerformance;\nexport { DefaultRoutingProvider, BugsnagPerformance$1 as default, onSettle };","import DomMutationSettler from './dom-mutation-settler.js';\nimport LoadEventEndSettler from './load-event-end-settler.js';\nimport RequestSettler from './request-settler.js';\nimport SettlerAggregate from './settler-aggregate.js';\nconst TIMEOUT_MILLISECONDS = 60 * 1000;\nfunction createNoopOnSettle() {\n const noop = () => {};\n noop.configure = () => {};\n return noop;\n}\nfunction createOnSettle(clock, window, fetchRequestTracker, xhrRequestTracker, performance) {\n const domMutationSettler = new DomMutationSettler(clock, window.document);\n const fetchRequestSettler = new RequestSettler(clock, fetchRequestTracker);\n const xhrRequestSettler = new RequestSettler(clock, xhrRequestTracker);\n const loadEventEndSettler = new LoadEventEndSettler(clock, window.addEventListener, performance, window.document);\n const settler = new SettlerAggregate(clock, [domMutationSettler, loadEventEndSettler, fetchRequestSettler, xhrRequestSettler]);\n function onSettlePlugin(callback) {\n const onSettle = settledTime => {\n clearTimeout(timeout);\n // unsubscribe from the settler so we don't call the callback more than\n // once\n settler.unsubscribe(onSettle);\n callback(settledTime);\n };\n const timeout = setTimeout(() => {\n const settledTime = clock.now();\n settler.unsubscribe(onSettle);\n callback(settledTime);\n }, TIMEOUT_MILLISECONDS);\n // if we're already settled apply a 100ms \"cooldown\" period in case we\n // unsettle immediately after this call\n // if we're not settled then this cooldown is irrelevant - we can just\n // subscribe to the settler to be notified of when the page settles\n const cooldown = settler.isSettled() ? 100 : 0;\n const settledTime = clock.now();\n setTimeout(() => {\n if (settler.isSettled()) {\n // if we're still settled call the callback via \"onSettle\"\n onSettle(settledTime);\n } else {\n // otherwise wait for the page to settle\n settler.subscribe(onSettle);\n }\n }, cooldown);\n }\n onSettlePlugin.configure = function (configuration) {\n const settleIgnoreUrls = configuration.settleIgnoreUrls.map(url => typeof url === 'string' ? RegExp(url) : url).concat(RegExp(configuration.endpoint));\n fetchRequestSettler.setUrlsToIgnore(settleIgnoreUrls);\n xhrRequestSettler.setUrlsToIgnore(settleIgnoreUrls);\n };\n return onSettlePlugin;\n}\nexport { createNoopOnSettle, createOnSettle as default };","import { BatchProcessor } from './batch-processor.js';\nimport { validateConfig } from './config.js';\nimport { TracePayloadEncoder } from './delivery.js';\nimport ProbabilityFetcher from './probability-fetcher.js';\nimport ProbabilityManager from './probability-manager.js';\nimport { BufferingProcessor } from './processor.js';\nimport Sampler from './sampler.js';\nimport { DefaultSpanContextStorage } from './span-context.js';\nimport { SpanFactory } from './span-factory.js';\nfunction createClient(options) {\n const bufferingProcessor = new BufferingProcessor();\n let processor = bufferingProcessor;\n const spanContextStorage = options.spanContextStorage || new DefaultSpanContextStorage(options.backgroundingListener);\n let logger = options.schema.logger.defaultValue;\n const sampler = new Sampler(1.0);\n const spanFactory = new SpanFactory(processor, sampler, options.idGenerator, options.spanAttributesSource, options.clock, options.backgroundingListener, logger, spanContextStorage);\n const plugins = options.plugins(spanFactory, spanContextStorage);\n return Object.assign({\n start: config => {\n const configuration = validateConfig(config, options.schema);\n const delivery = options.deliveryFactory(configuration.endpoint);\n options.spanAttributesSource.configure(configuration);\n ProbabilityManager.create(options.persistence, sampler, new ProbabilityFetcher(delivery, configuration.apiKey)).then(manager => {\n processor = new BatchProcessor(delivery, configuration, options.retryQueueFactory(delivery, configuration.retryQueueMaxSize), sampler, manager, new TracePayloadEncoder(options.clock, configuration, options.resourceAttributesSource));\n // ensure all spans started before .start() are added to the batch\n for (const span of bufferingProcessor.spans) {\n processor.add(span);\n }\n // register with the backgrounding listener - we do this in 'start' as\n // there's nothing to do if we're backgrounded before start is called\n // e.g. we can't trigger delivery until we have the apiKey and endpoint\n // from configuration\n options.backgroundingListener.onStateChange(state => {\n processor.flush();\n });\n logger = configuration.logger;\n spanFactory.configure(processor, logger);\n });\n for (const plugin of configuration.plugins) {\n plugins.push(plugin);\n }\n for (const plugin of plugins) {\n plugin.configure(configuration, spanFactory);\n }\n },\n startSpan: (name, spanOptions) => {\n const cleanOptions = spanFactory.validateSpanOptions(name, spanOptions);\n const span = spanFactory.startSpan(cleanOptions.name, cleanOptions.options);\n span.setAttribute('bugsnag.span.category', 'custom');\n return spanFactory.toPublicApi(span);\n },\n getPlugin: Constructor => {\n for (const plugin of plugins) {\n if (plugin instanceof Constructor) {\n return plugin;\n }\n }\n },\n get currentSpanContext() {\n return spanContextStorage.current;\n }\n }, options.platformExtensions && options.platformExtensions(spanFactory, spanContextStorage));\n}\nfunction createNoopClient() {\n const noop = () => {};\n return {\n start: noop,\n startSpan: () => ({\n id: '',\n traceId: '',\n end: noop,\n isValid: () => false\n }),\n currentSpanContext: undefined\n };\n}\nexport { createClient, createNoopClient };","function createBrowserBackgroundingListener(window) {\n const callbacks = [];\n let state = window.document.visibilityState === 'hidden' ? 'in-background' : 'in-foreground';\n const backgroundingListener = {\n onStateChange(backgroundingListenerCallback) {\n callbacks.push(backgroundingListenerCallback);\n // trigger the callback immediately if the document is already 'hidden'\n if (state === 'in-background') {\n backgroundingListenerCallback(state);\n }\n }\n };\n const backgroundStateChanged = newState => {\n if (state === newState) return;\n state = newState;\n for (const callback of callbacks) {\n callback(state);\n }\n };\n window.document.addEventListener('visibilitychange', function () {\n const newState = window.document.visibilityState === 'hidden' ? 'in-background' : 'in-foreground';\n backgroundStateChanged(newState);\n });\n // some browsers don't fire the visibilitychange event when the page is suspended,\n // so we also listen for pagehide and pageshow events\n window.addEventListener('pagehide', function () {\n backgroundStateChanged('in-background');\n });\n window.addEventListener('pageshow', function () {\n backgroundStateChanged('in-foreground');\n });\n return backgroundingListener;\n}\nexport { createBrowserBackgroundingListener as default };","const createSpanAttributesSource = document => {\n const defaultAttributes = {\n url: {\n name: 'bugsnag.browser.page.url',\n getValue: () => document.location.href,\n permitted: false\n },\n title: {\n name: 'bugsnag.browser.page.title',\n getValue: () => document.title,\n permitted: false\n }\n };\n return {\n configure(configuration) {\n defaultAttributes.title.permitted = configuration.sendPageAttributes.title || false;\n defaultAttributes.url.permitted = configuration.sendPageAttributes.url || false;\n },\n requestAttributes(span) {\n for (const attribute of Object.values(defaultAttributes)) {\n if (attribute.permitted) {\n span.setAttribute(attribute.name, attribute.getValue());\n }\n }\n }\n };\n};\nexport { createSpanAttributesSource, createSpanAttributesSource as default };","const NANOSECONDS_IN_MILLISECONDS = 1000000;\nfunction millisecondsToNanoseconds(milliseconds) {\n return Math.round(milliseconds * NANOSECONDS_IN_MILLISECONDS);\n}\nexport { millisecondsToNanoseconds };","import cuid from '@bugsnag/cuid';\nimport { ResourceAttributes } from '@bugsnag/core-performance';\nfunction createResourceAttributesSource(navigator, persistence) {\n let getDeviceId;\n let deviceId;\n return function resourceAttributesSource(config) {\n const attributes = new ResourceAttributes(config.releaseStage, config.appVersion, 'bugsnag.performance.browser', '2.4.1');\n attributes.set('browser.user_agent', navigator.userAgent);\n // chromium only\n if (navigator.userAgentData) {\n attributes.set('browser.platform', navigator.userAgentData.platform);\n attributes.set('browser.mobile', navigator.userAgentData.mobile);\n }\n if (config.generateAnonymousId) {\n // ensure we only load/generate the anonymous ID once no matter how many\n // times we're called, otherwise we could generate different IDs on\n // different calls as cuids are partly time based\n if (!getDeviceId) {\n getDeviceId = persistence.load('bugsnag-anonymous-id').then(maybeAnonymousId => {\n // use the persisted value or generate a new ID\n const anonymousId = maybeAnonymousId || cuid();\n // if there was no persisted value, save the newly generated ID\n if (!maybeAnonymousId) {\n persistence.save('bugsnag-anonymous-id', anonymousId);\n }\n // store the device ID so we can set it synchronously in future\n deviceId = anonymousId;\n return deviceId;\n });\n }\n if (deviceId) {\n // set device ID synchronously if it's already available\n attributes.set('device.id', deviceId);\n } else {\n // otherwise add it when the promise resolves\n return getDeviceId.then(deviceId => {\n attributes.set('device.id', deviceId);\n return attributes;\n });\n }\n }\n return Promise.resolve(attributes);\n };\n}\nexport { createResourceAttributesSource as default };","import { schema, isBoolean, isStringOrRegExpArray } from '@bugsnag/core-performance';\nimport { defaultNetworkRequestCallback, isNetworkRequestCallback } from '@bugsnag/request-tracker-performance';\nimport { isRoutingProvider } from './routing-provider.js';\nimport { defaultSendPageAttributes, isSendPageAttributes } from './send-page-attributes.js';\nfunction createSchema(hostname, defaultRoutingProvider) {\n return Object.assign(Object.assign({}, schema), {\n releaseStage: Object.assign(Object.assign({}, schema.releaseStage), {\n defaultValue: hostname === 'localhost' ? 'development' : 'production'\n }),\n autoInstrumentFullPageLoads: {\n defaultValue: true,\n message: 'should be true|false',\n validate: isBoolean\n },\n autoInstrumentNetworkRequests: {\n defaultValue: true,\n message: 'should be true|false',\n validate: isBoolean\n },\n autoInstrumentRouteChanges: {\n defaultValue: true,\n message: 'should be true|false',\n validate: isBoolean\n },\n generateAnonymousId: {\n defaultValue: true,\n message: 'should be true|false',\n validate: isBoolean\n },\n routingProvider: {\n defaultValue: defaultRoutingProvider,\n message: 'should be a routing provider',\n validate: isRoutingProvider\n },\n settleIgnoreUrls: {\n defaultValue: [],\n message: 'should be an array of string|RegExp',\n validate: isStringOrRegExpArray\n },\n networkRequestCallback: {\n defaultValue: defaultNetworkRequestCallback,\n message: 'should be a function',\n validate: isNetworkRequestCallback\n },\n sendPageAttributes: {\n defaultValue: defaultSendPageAttributes,\n message: 'should be an object',\n validate: isSendPageAttributes\n }\n });\n}\nexport { createSchema };","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nrequire('@rails/ujs').start();\nrequire('@rails/activestorage').start();\nrequire('channels');\n\nimport Bugsnag from '@bugsnag/js'\nimport BugsnagPluginReact from '@bugsnag/plugin-react'\nimport BugsnagPerformance from '@bugsnag/browser-performance'\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\nrequire.context('../images', true);\n\nrequire('../stylesheets/application.css');\n\n// Common configuration for Bugsnag\nconst bugsnagConfig = {\n apiKey: process.env.BUGSNAG_FRONTEND_API_KEY || \"invalid\"\n};\n\nBugsnag.start({\n ...bugsnagConfig,\n plugins: [new BugsnagPluginReact()],\n releaseStage: process.env.RELEASE_STAGE,\n enabledReleaseStages: [\"production\", \"staging\", \"review_app\"],\n});\n\n// Starting Bugsnag for performance monitoring\nBugsnagPerformance.start(bugsnagConfig);\n\ndocument.addEventListener('DOMContentLoaded', function (event) {\n require('../src/forms');\n});\n","(function (global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\",\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n });\n });\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n var id = 0;\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n return object[methodName].apply(object, messages);\n }\n }\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n _this.dispatch(\"end\");\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var controllers = this.createDirectUploadControllers();\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n _this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n var target = event.target;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar isCuid = require('./lib/is-cuid.js');\nvar pad = require('./lib/pad.js');\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\nfunction randomBlock() {\n return pad((Math.random() * discreteValues << 0).toString(base), blockSize);\n}\nfunction safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n}\nfunction cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = fingerprint(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n}\ncuid.fingerprint = fingerprint;\ncuid.isCuid = isCuid;\nmodule.exports = cuid;","module.exports = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};","module.exports = __webpack_public_path__ + \"media/images/jasper-signature-a776902baae2161f24c5d085560356f2.png\";","module.exports = __webpack_public_path__ + \"media/images/latief-signature-5d68f38ef8392e73387cd705cfbc264e.png\";","module.exports = __webpack_public_path__ + \"media/images/logo-6de44b4284a0ef1dc28eaaf74260e36f.png\";"],"sourceRoot":""}