{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/raven-js/dist/raven.js-exposed","webpack:///./node_modules/raven-js/dist/raven.js","webpack:///(webpack)/buildin/global.js"],"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","e","u","f","Error","code","length","1","_dereq_","RavenConfigError","message","this","constructor","2","utils","wrapMethod","console","level","callback","originalConsoleLevel","originalConsole","sentryLevel","args","slice","arguments","msg","safeJoin","data","logger","extra","Function","apply","3","global","TraceKit","stringify","md5","isErrorEvent","isDOMError","isDOMException","isError","isObject","isPlainObject","isUndefined","isFunction","isString","isArray","isEmptyObject","each","objectMerge","truncate","objectFrozen","hasKey","joinRegExp","urlencode","uuid4","htmlTreeAsString","isSameException","isSameStacktrace","parseUrl","fill","supportsFetch","supportsReferrerPolicy","serializeKeysForMessage","serializeException","sanitize","wrapConsoleMethod","dsnKeys","split","dsnPattern","now","Date","_window","window","self","_document","document","_navigator","navigator","keepOriginalCallback","original","Raven","method","_hasJSON","JSON","_hasDocument","_hasNavigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","SENTRY_RELEASE","id","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","collectWindowErrors","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","sanitizeKeys","_fetchDefaults","referrerPolicy","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_keypressTimeout","_location","location","_lastHref","href","_resetBackoff","VERSION","debug","config","dsn","options","_logDebug","globalOptions","setDSN","push","maxBreadcrumbs","Math","max","min","autoBreadcrumbDefaults","xhr","dom","sentry","toString","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","path","lastIndexOf","substr","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","wrap","_before","undefined","__raven__","__raven_wrapper__","wrapped","deep","_ignoreNextOnError","captureException","__orig__","uninstall","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","_promiseRejectionHandler","event","reason","mechanism","type","handled","addEventListener","removeEventListener","ex","trimHeadFrames","error","captureMessage","stacktrace","_getCaptureExceptionOptionsFromPlainObject","stack","computeStackTrace","_handleStackInfo","ex1","currentOptions","exKeys","keys","sort","fingerprint","__serialized__","test","initialCall","fileurl","url","frames","_prepareFrames","reverse","_send","captureBreadcrumb","obj","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodeURIComponent","encodedOptions","email","globalServer","script","createElement","async","src","join","head","body","appendChild","setTimeout","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","toLowerCase","_breadcrumbEventHandler","evtName","target","category","_keypressEventHandler","tagName","isContentEditable","timeout","clearTimeout","_captureUrlChange","from","to","parsedLoc","parsedTo","parsedFrom","protocol","host","relative","_originalFunctionToString","wrappedBuiltIns","wrapTimeFn","orig","fn","Array","originalCallback","function","wrapEventTarget","proto","capture","secure","handleEvent","handler","err","before","clickHandler","keypressHandler","requestAnimationFrame","cb","eventTargets","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","j","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","attachEvent","chrome","hasPushAndReplaceState","app","runtime","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","_","builtin","installer","concat","str","exec","allowSecretKey","port","stackInfo","_processException","lineno","frame","_normalizeFrame","in_app","stackInfoUrl","normalized","filename","line","colno","column","prefixedMessage","exception","values","transaction","_trimPacket","request","Referer","breadcrumbs","_trimBreadcrumbs","urlProp","urlProps","_getHttpData","httpData","userAgent","referrer","_backoffDuration","_backoffStart","_shouldBackoff","_isRepeatData","current","last","Boolean","_setBackoffState","retry","getResponseHeader","parseInt","baseData","project","platform","serverName","server_name","_sanitizeData","forEach","random","_sendProcessedPayload","_getUuid","allowDuplicates","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","XDomainRequest","replace","onload","onerror","open","setRequestHeader","send","hash","evaluated","setUser","setReleaseContext","4","RavenConstructor","_Raven","noConflict","Client","5","what","Headers","Response","patterns","pattern","sources","len","source","RegExp","htmlElementAsString","elem","className","classes","attr","out","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","stack1","stack2","frames1","frames2","jsonSize","encodeURI","utf8Length","serializeValue","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","normalizedData","obj1","obj2","isFrozen","pairs","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","nextStr","height","sepLength","parentNode","ex2","match","query","fragment","replacement","track","input","delimiter","output","String","depth","maxSize","serialized","serializeObject","reduce","acc","map","val","maxLength","filter","usedKeys","safeInput","sanitizeRegExp","o_O","sanitizeWorker","workerInput","k","6","_slice","ERROR_TYPES_RE","getLocationHref","_oldOnerrorHandler","_onErrorHandlerInstalled","handlers","lastArgs","lastExceptionStack","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","augmentStackTraceWithInitialElement","processLastException","groups","_lastExceptionStack","_lastArgs","rethrow","incomplete","unsubscribe","splice","computeStackTraceFromStackProp","submatch","parts","element","winjs","gecko","geckoEval","chromeEval","lines","isNative","columnNumber","responseText","sourceMaps","sourceMapAddress","charAt","origin","hostname","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","sourceURL","fileName","lineNumber","description","7","haystack","needle","serializer","replacer","cycleReplacer","thisPos","Infinity","stringifyError","spaces","getSerialize","8","safeAdd","x","y","lsw","md5cmn","q","cnt","md5ff","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstr2hex","str2rstrUTF8","unescape","rawMD5","rstrMD5","rawHMACMD5","bkey","ipad","opad","rstrHMACMD5","string","raw","g"],"mappings":"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","file":"www.preload.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 = \"https://prod-static.color.com/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n","module.exports = global[\"Raven\"] = require(\"-!./raven.js\");","/*! Raven.js 3.27.2 (6d91db933) | github.com/getsentry/raven-js */\n\n/*\n * Includes TraceKit\n * https://github.com/getsentry/TraceKit\n *\n * Copyright (c) 2019 Sentry (https://sentry.io) and individual contributors.\n * All rights reserved.\n * https://github.com/getsentry/sentry-javascript/blob/master/packages/raven-js/LICENSE\n *\n */\n\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Raven = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o captureException(string) => captureMessage(string)\n if (initialCall && initialCall.func === 'Raven.captureException') {\n initialCall = stack.stack[2];\n }\n\n var fileurl = (initialCall && initialCall.url) || '';\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n // Always attempt to get stacktrace if message is empty.\n // It's the only way to provide any helpful information to the user.\n if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {\n // fingerprint on msg, not stack trace (legacy behavior, could be revisited)\n data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;\n\n options = objectMerge(\n {\n trimHeadFrames: 0\n },\n options\n );\n // Since we know this is a synthetic trace, the top frame (this function call)\n // MUST be from Raven.js, so mark it for trimming\n // We add to the trim counter so that callers can choose to trim extra frames, such\n // as utility functions.\n options.trimHeadFrames += 1;\n\n var frames = this._prepareFrames(stack, options);\n data.stacktrace = {\n // Sentry expects frames oldest to newest\n frames: frames.reverse()\n };\n }\n\n // Make sure that fingerprint is always wrapped in an array\n if (data.fingerprint) {\n data.fingerprint = isArray(data.fingerprint)\n ? data.fingerprint\n : [data.fingerprint];\n }\n\n // Fire away!\n this._send(data);\n\n return this;\n },\n\n captureBreadcrumb: function(obj) {\n var crumb = objectMerge(\n {\n timestamp: now() / 1000\n },\n obj\n );\n\n if (isFunction(this._globalOptions.breadcrumbCallback)) {\n var result = this._globalOptions.breadcrumbCallback(crumb);\n\n if (isObject(result) && !isEmptyObject(result)) {\n crumb = result;\n } else if (result === false) {\n return this;\n }\n }\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n this._breadcrumbs.shift();\n }\n return this;\n },\n\n addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n var pluginArgs = [].slice.call(arguments, 1);\n\n this._plugins.push([plugin, pluginArgs]);\n if (this._isRavenInstalled) {\n this._drainPlugins();\n }\n\n return this;\n },\n\n /*\n * Set/clear a user to be sent along with the payload.\n *\n * @param {object} user An object representing user data [optional]\n * @return {Raven}\n */\n setUserContext: function(user) {\n // Intentionally do not merge here since that's an unexpected behavior.\n this._globalContext.user = user;\n\n return this;\n },\n\n /*\n * Merge extra attributes to be sent along with the payload.\n *\n * @param {object} extra An object representing extra data [optional]\n * @return {Raven}\n */\n setExtraContext: function(extra) {\n this._mergeContext('extra', extra);\n\n return this;\n },\n\n /*\n * Merge tags to be sent along with the payload.\n *\n * @param {object} tags An object representing tags [optional]\n * @return {Raven}\n */\n setTagsContext: function(tags) {\n this._mergeContext('tags', tags);\n\n return this;\n },\n\n /*\n * Clear all of the context.\n *\n * @return {Raven}\n */\n clearContext: function() {\n this._globalContext = {};\n\n return this;\n },\n\n /*\n * Get a copy of the current context. This cannot be mutated.\n *\n * @return {object} copy of context\n */\n getContext: function() {\n // lol javascript\n return JSON.parse(stringify(this._globalContext));\n },\n\n /*\n * Set environment of application\n *\n * @param {string} environment Typically something like 'production'.\n * @return {Raven}\n */\n setEnvironment: function(environment) {\n this._globalOptions.environment = environment;\n\n return this;\n },\n\n /*\n * Set release version of application\n *\n * @param {string} release Typically something like a git SHA to identify version\n * @return {Raven}\n */\n setRelease: function(release) {\n this._globalOptions.release = release;\n\n return this;\n },\n\n /*\n * Set the dataCallback option\n *\n * @param {function} callback The callback to run which allows the\n * data blob to be mutated before sending\n * @return {Raven}\n */\n setDataCallback: function(callback) {\n var original = this._globalOptions.dataCallback;\n this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the breadcrumbCallback option\n *\n * @param {function} callback The callback to run which allows filtering\n * or mutating breadcrumbs\n * @return {Raven}\n */\n setBreadcrumbCallback: function(callback) {\n var original = this._globalOptions.breadcrumbCallback;\n this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the shouldSendCallback option\n *\n * @param {function} callback The callback to run which allows\n * introspecting the blob before sending\n * @return {Raven}\n */\n setShouldSendCallback: function(callback) {\n var original = this._globalOptions.shouldSendCallback;\n this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /**\n * Override the default HTTP transport mechanism that transmits data\n * to the Sentry server.\n *\n * @param {function} transport Function invoked instead of the default\n * `makeRequest` handler.\n *\n * @return {Raven}\n */\n setTransport: function(transport) {\n this._globalOptions.transport = transport;\n\n return this;\n },\n\n /*\n * Get the latest raw exception that was captured by Raven.\n *\n * @return {error}\n */\n lastException: function() {\n return this._lastCapturedException;\n },\n\n /*\n * Get the last event id\n *\n * @return {string}\n */\n lastEventId: function() {\n return this._lastEventId;\n },\n\n /*\n * Determine if Raven is setup and ready to go.\n *\n * @return {boolean}\n */\n isSetup: function() {\n if (!this._hasJSON) return false; // needs JSON support\n if (!this._globalServer) {\n if (!this.ravenNotConfiguredError) {\n this.ravenNotConfiguredError = true;\n this._logDebug('error', 'Error: Raven has not been configured.');\n }\n return false;\n }\n return true;\n },\n\n afterLoad: function() {\n // TODO: remove window dependence?\n\n // Attempt to initialize Raven on load\n var RavenConfig = _window.RavenConfig;\n if (RavenConfig) {\n this.config(RavenConfig.dsn, RavenConfig.config).install();\n }\n },\n\n showReportDialog: function(options) {\n if (\n !_document // doesn't work without a document (React native)\n )\n return;\n\n options = objectMerge(\n {\n eventId: this.lastEventId(),\n dsn: this._dsn,\n user: this._globalContext.user || {}\n },\n options\n );\n\n if (!options.eventId) {\n throw new RavenConfigError('Missing eventId');\n }\n\n if (!options.dsn) {\n throw new RavenConfigError('Missing DSN');\n }\n\n var encode = encodeURIComponent;\n var encodedOptions = [];\n\n for (var key in options) {\n if (key === 'user') {\n var user = options.user;\n if (user.name) encodedOptions.push('name=' + encode(user.name));\n if (user.email) encodedOptions.push('email=' + encode(user.email));\n } else {\n encodedOptions.push(encode(key) + '=' + encode(options[key]));\n }\n }\n var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));\n\n var script = _document.createElement('script');\n script.async = true;\n script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');\n (_document.head || _document.body).appendChild(script);\n },\n\n /**** Private functions ****/\n _ignoreNextOnError: function() {\n var self = this;\n this._ignoreOnError += 1;\n setTimeout(function() {\n // onerror should trigger before setTimeout\n self._ignoreOnError -= 1;\n });\n },\n\n _triggerEvent: function(eventType, options) {\n // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n var evt, key;\n\n if (!this._hasDocument) return;\n\n options = options || {};\n\n eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n if (_document.createEvent) {\n evt = _document.createEvent('HTMLEvents');\n evt.initEvent(eventType, true, true);\n } else {\n evt = _document.createEventObject();\n evt.eventType = eventType;\n }\n\n for (key in options)\n if (hasKey(options, key)) {\n evt[key] = options[key];\n }\n\n if (_document.createEvent) {\n // IE9 if standards\n _document.dispatchEvent(evt);\n } else {\n // IE8 regardless of Quirks or Standards\n // IE9 if quirks\n try {\n _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n } catch (e) {\n // Do nothing\n }\n }\n },\n\n /**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param evtName the event name (e.g. \"click\")\n * @returns {Function}\n * @private\n */\n _breadcrumbEventHandler: function(evtName) {\n var self = this;\n return function(evt) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n self._keypressTimeout = null;\n\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (self._lastCapturedEvent === evt) return;\n\n self._lastCapturedEvent = evt;\n\n // try/catch both:\n // - accessing evt.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // can throw an exception in some circumstances.\n var target;\n try {\n target = htmlTreeAsString(evt.target);\n } catch (e) {\n target = '';\n }\n\n self.captureBreadcrumb({\n category: 'ui.' + evtName, // e.g. ui.click, ui.input\n message: target\n });\n };\n },\n\n /**\n * Wraps addEventListener to capture keypress UI events\n * @returns {Function}\n * @private\n */\n _keypressEventHandler: function() {\n var self = this,\n debounceDuration = 1000; // milliseconds\n\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function(evt) {\n var target;\n try {\n target = evt.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (\n !tagName ||\n (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)\n )\n return;\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n var timeout = self._keypressTimeout;\n if (!timeout) {\n self._breadcrumbEventHandler('input')(evt);\n }\n clearTimeout(timeout);\n self._keypressTimeout = setTimeout(function() {\n self._keypressTimeout = null;\n }, debounceDuration);\n };\n },\n\n /**\n * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n * @param to the originating URL\n * @param from the target URL\n * @private\n */\n _captureUrlChange: function(from, to) {\n var parsedLoc = parseUrl(this._location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n this._lastHref = to;\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n to = parsedTo.relative;\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n from = parsedFrom.relative;\n\n this.captureBreadcrumb({\n category: 'navigation',\n data: {\n to: to,\n from: from\n }\n });\n },\n\n _patchFunctionToString: function() {\n var self = this;\n self._originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = function() {\n if (typeof this === 'function' && this.__raven__) {\n return self._originalFunctionToString.apply(this.__orig__, arguments);\n }\n return self._originalFunctionToString.apply(this, arguments);\n };\n },\n\n _unpatchFunctionToString: function() {\n if (this._originalFunctionToString) {\n // eslint-disable-next-line no-extend-native\n Function.prototype.toString = this._originalFunctionToString;\n }\n },\n\n /**\n * Wrap timer functions and event targets to catch errors and provide\n * better metadata.\n */\n _instrumentTryCatch: function() {\n var self = this;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapTimeFn(orig) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n var originalCallback = args[0];\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: orig.name || ''}\n }\n },\n originalCallback\n );\n }\n\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n function wrapEventTarget(global) {\n var proto = _window[global] && _window[global].prototype;\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(\n proto,\n 'addEventListener',\n function(orig) {\n return function(evtName, fn, capture, secure) {\n // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'handleEvent',\n handler: (fn && fn.name) || ''\n }\n }\n },\n fn.handleEvent\n );\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n // so that we don't have more than one wrapper function\n var before, clickHandler, keypressHandler;\n\n if (\n autoBreadcrumbs &&\n autoBreadcrumbs.dom &&\n (global === 'EventTarget' || global === 'Node')\n ) {\n // NOTE: generating multiple handlers per addEventListener invocation, should\n // revisit and verify we can just use one (almost certainly)\n clickHandler = self._breadcrumbEventHandler('click');\n keypressHandler = self._keypressEventHandler();\n before = function(evt) {\n // need to intercept every DOM event in `before` argument, in case that\n // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n // see #724\n if (!evt) return;\n\n var eventType;\n try {\n eventType = evt.type;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n if (eventType === 'click') return clickHandler(evt);\n else if (eventType === 'keypress') return keypressHandler(evt);\n };\n }\n return orig.call(\n this,\n evtName,\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n target: global,\n function: 'addEventListener',\n handler: (fn && fn.name) || ''\n }\n }\n },\n fn,\n before\n ),\n capture,\n secure\n );\n };\n },\n wrappedBuiltIns\n );\n fill(\n proto,\n 'removeEventListener',\n function(orig) {\n return function(evt, fn, capture, secure) {\n try {\n fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n } catch (e) {\n // ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n }\n return orig.call(this, evt, fn, capture, secure);\n };\n },\n wrappedBuiltIns\n );\n }\n }\n\n fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n if (_window.requestAnimationFrame) {\n fill(\n _window,\n 'requestAnimationFrame',\n function(orig) {\n return function(cb) {\n return orig(\n self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'requestAnimationFrame',\n handler: (orig && orig.name) || ''\n }\n }\n },\n cb\n )\n );\n };\n },\n wrappedBuiltIns\n );\n }\n\n // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n var eventTargets = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload'\n ];\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n },\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - XMLHttpRequests\n * - DOM interactions (click/typing)\n * - window.location changes\n * - console\n *\n * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n */\n _instrumentBreadcrumbs: function() {\n var self = this;\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && isFunction(xhr[prop])) {\n fill(xhr, prop, function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {function: prop, handler: (orig && orig.name) || ''}\n }\n },\n orig\n );\n }); // intentionally don't track filled methods on XHR instances\n }\n }\n\n if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) {\n var xhrproto = _window.XMLHttpRequest && _window.XMLHttpRequest.prototype;\n fill(\n xhrproto,\n 'open',\n function(origOpen) {\n return function(method, url) {\n // preserve arity\n\n // if Sentry key appears in URL, don't capture\n if (isString(url) && url.indexOf(self._globalKey) === -1) {\n this.__raven_xhr = {\n method: method,\n url: url,\n status_code: null\n };\n }\n\n return origOpen.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n\n fill(\n xhrproto,\n 'send',\n function(origSend) {\n return function() {\n // preserve arity\n var xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__raven_xhr && xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhr.__raven_xhr.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'xhr',\n data: xhr.__raven_xhr\n });\n }\n }\n\n var props = ['onload', 'onerror', 'onprogress'];\n for (var j = 0; j < props.length; j++) {\n wrapProp(props[j], xhr);\n }\n\n if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) {\n fill(\n xhr,\n 'onreadystatechange',\n function(orig) {\n return self.wrap(\n {\n mechanism: {\n type: 'instrument',\n data: {\n function: 'onreadystatechange',\n handler: (orig && orig.name) || ''\n }\n }\n },\n orig,\n onreadystatechangeHandler\n );\n } /* intentionally don't track this instrumentation */\n );\n } else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n\n return origSend.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n }\n\n if (autoBreadcrumbs.xhr && supportsFetch()) {\n fill(\n _window,\n 'fetch',\n function(origFetch) {\n return function() {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n\n var fetchInput = args[0];\n var method = 'GET';\n var url;\n\n if (typeof fetchInput === 'string') {\n url = fetchInput;\n } else if ('Request' in _window && fetchInput instanceof _window.Request) {\n url = fetchInput.url;\n if (fetchInput.method) {\n method = fetchInput.method;\n }\n } else {\n url = '' + fetchInput;\n }\n\n // if Sentry key appears in URL, don't capture, as it's our own request\n if (url.indexOf(self._globalKey) !== -1) {\n return origFetch.apply(this, args);\n }\n\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n\n var fetchData = {\n method: method,\n url: url,\n status_code: null\n };\n\n return origFetch\n .apply(this, args)\n .then(function(response) {\n fetchData.status_code = response.status;\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData\n });\n\n return response;\n })\n ['catch'](function(err) {\n // if there is an error performing the request\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData,\n level: 'error'\n });\n\n throw err;\n });\n };\n },\n wrappedBuiltIns\n );\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n if (autoBreadcrumbs.dom && this._hasDocument) {\n if (_document.addEventListener) {\n _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n _document.addEventListener('keypress', self._keypressEventHandler(), false);\n } else if (_document.attachEvent) {\n // IE8 Compatibility\n _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n _document.attachEvent('onkeypress', self._keypressEventHandler());\n }\n }\n\n // record navigation (URL) changes\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var chrome = _window.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasPushAndReplaceState =\n !isChromePackagedApp &&\n _window.history &&\n _window.history.pushState &&\n _window.history.replaceState;\n if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n // TODO: remove onpopstate handler on uninstall()\n var oldOnPopState = _window.onpopstate;\n _window.onpopstate = function() {\n var currentHref = self._location.href;\n self._captureUrlChange(self._lastHref, currentHref);\n\n if (oldOnPopState) {\n return oldOnPopState.apply(this, arguments);\n }\n };\n\n var historyReplacementFunction = function(origHistFunction) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function(/* state, title, url */) {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n self._captureUrlChange(self._lastHref, url + '');\n }\n\n return origHistFunction.apply(this, arguments);\n };\n };\n\n fill(_window.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n fill(_window.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n }\n\n if (autoBreadcrumbs.console && 'console' in _window && console.log) {\n // console\n var consoleMethodCallback = function(msg, data) {\n self.captureBreadcrumb({\n message: msg,\n level: data.level,\n category: 'console'\n });\n };\n\n each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) {\n wrapConsoleMethod(console, level, consoleMethodCallback);\n });\n }\n },\n\n _restoreBuiltIns: function() {\n // restore any wrapped builtins\n var builtin;\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n\n obj[name] = orig;\n }\n },\n\n _restoreConsole: function() {\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsoleMethods) {\n this._originalConsole[method] = this._originalConsoleMethods[method];\n }\n },\n\n _drainPlugins: function() {\n var self = this;\n\n // FIX ME TODO\n each(this._plugins, function(_, plugin) {\n var installer = plugin[0];\n var args = plugin[1];\n installer.apply(self, [self].concat(args));\n });\n },\n\n _parseDSN: function(str) {\n var m = dsnPattern.exec(str),\n dsn = {},\n i = 7;\n\n try {\n while (i--) dsn[dsnKeys[i]] = m[i] || '';\n } catch (e) {\n throw new RavenConfigError('Invalid DSN: ' + str);\n }\n\n if (dsn.pass && !this._globalOptions.allowSecretKey) {\n throw new RavenConfigError(\n 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'\n );\n }\n\n return dsn;\n },\n\n _getGlobalServer: function(uri) {\n // assemble the endpoint from the uri pieces\n var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n if (uri.protocol) {\n globalServer = uri.protocol + ':' + globalServer;\n }\n return globalServer;\n },\n\n _handleOnErrorStackInfo: function(stackInfo, options) {\n options = options || {};\n options.mechanism = options.mechanism || {\n type: 'onerror',\n handled: false\n };\n\n // if we are intentionally ignoring errors via onerror, bail out\n if (!this._ignoreOnError) {\n this._handleStackInfo(stackInfo, options);\n }\n },\n\n _handleStackInfo: function(stackInfo, options) {\n var frames = this._prepareFrames(stackInfo, options);\n\n this._triggerEvent('handle', {\n stackInfo: stackInfo,\n options: options\n });\n\n this._processException(\n stackInfo.name,\n stackInfo.message,\n stackInfo.url,\n stackInfo.lineno,\n frames,\n options\n );\n },\n\n _prepareFrames: function(stackInfo, options) {\n var self = this;\n var frames = [];\n if (stackInfo.stack && stackInfo.stack.length) {\n each(stackInfo.stack, function(i, stack) {\n var frame = self._normalizeFrame(stack, stackInfo.url);\n if (frame) {\n frames.push(frame);\n }\n });\n\n // e.g. frames captured via captureMessage throw\n if (options && options.trimHeadFrames) {\n for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n frames[j].in_app = false;\n }\n }\n }\n frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n return frames;\n },\n\n _normalizeFrame: function(frame, stackInfoUrl) {\n // normalize the frames data\n var normalized = {\n filename: frame.url,\n lineno: frame.line,\n colno: frame.column,\n function: frame.func || '?'\n };\n\n // Case when we don't have any information about the error\n // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n // Generating synthetic error doesn't add any value here\n //\n // We should probably somehow let a user know that they should fix their code\n if (!frame.url) {\n normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n }\n\n normalized.in_app = !// determine if an exception came from outside of our app\n // first we check the global includePaths list.\n (\n (!!this._globalOptions.includePaths.test &&\n !this._globalOptions.includePaths.test(normalized.filename)) ||\n // Now we check for fun, if the function name is Raven or TraceKit\n /(Raven|TraceKit)\\./.test(normalized['function']) ||\n // finally, we do a last ditch effort and check for raven.min.js\n /raven\\.(min\\.)?js$/.test(normalized.filename)\n );\n\n return normalized;\n },\n\n _processException: function(type, message, fileurl, lineno, frames, options) {\n var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n if (\n !!this._globalOptions.ignoreErrors.test &&\n (this._globalOptions.ignoreErrors.test(message) ||\n this._globalOptions.ignoreErrors.test(prefixedMessage))\n ) {\n return;\n }\n\n var stacktrace;\n\n if (frames && frames.length) {\n fileurl = frames[0].filename || fileurl;\n // Sentry expects frames oldest to newest\n // and JS sends them as newest to oldest\n frames.reverse();\n stacktrace = {frames: frames};\n } else if (fileurl) {\n stacktrace = {\n frames: [\n {\n filename: fileurl,\n lineno: lineno,\n in_app: true\n }\n ]\n };\n }\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n var data = objectMerge(\n {\n // sentry.interfaces.Exception\n exception: {\n values: [\n {\n type: type,\n value: message,\n stacktrace: stacktrace\n }\n ]\n },\n transaction: fileurl\n },\n options\n );\n\n var ex = data.exception.values[0];\n if (ex.type == null && ex.value === '') {\n ex.value = 'Unrecoverable error caught';\n }\n\n // Move mechanism from options to exception interface\n // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be\n // too much\n if (!data.exception.mechanism && data.mechanism) {\n data.exception.mechanism = data.mechanism;\n delete data.mechanism;\n }\n\n data.exception.mechanism = objectMerge(\n {\n type: 'generic',\n handled: true\n },\n data.exception.mechanism || {}\n );\n\n // Fire away!\n this._send(data);\n },\n\n _trimPacket: function(data) {\n // For now, we only want to truncate the two different messages\n // but this could/should be expanded to just trim everything\n var max = this._globalOptions.maxMessageLength;\n if (data.message) {\n data.message = truncate(data.message, max);\n }\n if (data.exception) {\n var exception = data.exception.values[0];\n exception.value = truncate(exception.value, max);\n }\n\n var request = data.request;\n if (request) {\n if (request.url) {\n request.url = truncate(request.url, this._globalOptions.maxUrlLength);\n }\n if (request.Referer) {\n request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength);\n }\n }\n\n if (data.breadcrumbs && data.breadcrumbs.values)\n this._trimBreadcrumbs(data.breadcrumbs);\n\n return data;\n },\n\n /**\n * Truncate breadcrumb values (right now just URLs)\n */\n _trimBreadcrumbs: function(breadcrumbs) {\n // known breadcrumb properties with urls\n // TODO: also consider arbitrary prop values that start with (https?)?://\n var urlProps = ['to', 'from', 'url'],\n urlProp,\n crumb,\n data;\n\n for (var i = 0; i < breadcrumbs.values.length; ++i) {\n crumb = breadcrumbs.values[i];\n if (\n !crumb.hasOwnProperty('data') ||\n !isObject(crumb.data) ||\n objectFrozen(crumb.data)\n )\n continue;\n\n data = objectMerge({}, crumb.data);\n for (var j = 0; j < urlProps.length; ++j) {\n urlProp = urlProps[j];\n if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength);\n }\n }\n breadcrumbs.values[i].data = data;\n }\n },\n\n _getHttpData: function() {\n if (!this._hasNavigator && !this._hasDocument) return;\n var httpData = {};\n\n if (this._hasNavigator && _navigator.userAgent) {\n httpData.headers = {\n 'User-Agent': _navigator.userAgent\n };\n }\n\n // Check in `window` instead of `document`, as we may be in ServiceWorker environment\n if (_window.location && _window.location.href) {\n httpData.url = _window.location.href;\n }\n\n if (this._hasDocument && _document.referrer) {\n if (!httpData.headers) httpData.headers = {};\n httpData.headers.Referer = _document.referrer;\n }\n\n return httpData;\n },\n\n _resetBackoff: function() {\n this._backoffDuration = 0;\n this._backoffStart = null;\n },\n\n _shouldBackoff: function() {\n return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n },\n\n /**\n * Returns true if the in-process data payload matches the signature\n * of the previously-sent data\n *\n * NOTE: This has to be done at this level because TraceKit can generate\n * data from window.onerror WITHOUT an exception object (IE8, IE9,\n * other old browsers). This can take the form of an \"exception\"\n * data object with a single frame (derived from the onerror args).\n */\n _isRepeatData: function(current) {\n var last = this._lastData;\n\n if (\n !last ||\n current.message !== last.message || // defined for captureMessage\n current.transaction !== last.transaction // defined for captureException/onerror\n )\n return false;\n\n // Stacktrace interface (i.e. from captureMessage)\n if (current.stacktrace || last.stacktrace) {\n return isSameStacktrace(current.stacktrace, last.stacktrace);\n } else if (current.exception || last.exception) {\n // Exception interface (i.e. from captureException/onerror)\n return isSameException(current.exception, last.exception);\n } else if (current.fingerprint || last.fingerprint) {\n return Boolean(current.fingerprint && last.fingerprint) &&\n JSON.stringify(current.fingerprint) === JSON.stringify(last.fingerprint)\n }\n\n return true;\n },\n\n _setBackoffState: function(request) {\n // If we are already in a backoff state, don't change anything\n if (this._shouldBackoff()) {\n return;\n }\n\n var status = request.status;\n\n // 400 - project_id doesn't exist or some other fatal\n // 401 - invalid/revoked dsn\n // 429 - too many requests\n if (!(status === 400 || status === 401 || status === 429)) return;\n\n var retry;\n try {\n // If Retry-After is not in Access-Control-Expose-Headers, most\n // browsers will throw an exception trying to access it\n if (supportsFetch()) {\n retry = request.headers.get('Retry-After');\n } else {\n retry = request.getResponseHeader('Retry-After');\n }\n\n // Retry-After is returned in seconds\n retry = parseInt(retry, 10) * 1000;\n } catch (e) {\n /* eslint no-empty:0 */\n }\n\n this._backoffDuration = retry\n ? // If Sentry server returned a Retry-After value, use it\n retry\n : // Otherwise, double the last backoff duration (starts at 1 sec)\n this._backoffDuration * 2 || 1000;\n\n this._backoffStart = now();\n },\n\n _send: function(data) {\n var globalOptions = this._globalOptions;\n\n var baseData = {\n project: this._globalProject,\n logger: globalOptions.logger,\n platform: 'javascript'\n },\n httpData = this._getHttpData();\n\n if (httpData) {\n baseData.request = httpData;\n }\n\n // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n if (data.trimHeadFrames) delete data.trimHeadFrames;\n\n data = objectMerge(baseData, data);\n\n // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags);\n data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra);\n\n // Send along our own collected metadata with extra\n data.extra['session:duration'] = now() - this._startTime;\n\n if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n // intentionally make shallow copy so that additions\n // to breadcrumbs aren't accidentally sent in this request\n data.breadcrumbs = {\n values: [].slice.call(this._breadcrumbs, 0)\n };\n }\n\n if (this._globalContext.user) {\n // sentry.interfaces.User\n data.user = this._globalContext.user;\n }\n\n // Include the environment if it's defined in globalOptions\n if (globalOptions.environment) data.environment = globalOptions.environment;\n\n // Include the release if it's defined in globalOptions\n if (globalOptions.release) data.release = globalOptions.release;\n\n // Include server_name if it's defined in globalOptions\n if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n data = this._sanitizeData(data);\n\n // Cleanup empty properties before sending them to the server\n Object.keys(data).forEach(function(key) {\n if (data[key] == null || data[key] === '' || isEmptyObject(data[key])) {\n delete data[key];\n }\n });\n\n if (isFunction(globalOptions.dataCallback)) {\n data = globalOptions.dataCallback(data) || data;\n }\n\n // Why??????????\n if (!data || isEmptyObject(data)) {\n return;\n }\n\n // Check if the request should be filtered or not\n if (\n isFunction(globalOptions.shouldSendCallback) &&\n !globalOptions.shouldSendCallback(data)\n ) {\n return;\n }\n\n // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n // so drop requests until \"cool-off\" period has elapsed.\n if (this._shouldBackoff()) {\n this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n return;\n }\n\n if (typeof globalOptions.sampleRate === 'number') {\n if (Math.random() < globalOptions.sampleRate) {\n this._sendProcessedPayload(data);\n }\n } else {\n this._sendProcessedPayload(data);\n }\n },\n\n _sanitizeData: function(data) {\n return sanitize(data, this._globalOptions.sanitizeKeys);\n },\n\n _getUuid: function() {\n return uuid4();\n },\n\n _sendProcessedPayload: function(data, callback) {\n var self = this;\n var globalOptions = this._globalOptions;\n\n if (!this.isSetup()) return;\n\n // Try and clean up the packet before sending by truncating long values\n data = this._trimPacket(data);\n\n // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n // but this would require copying an un-truncated copy of the data packet, which can be\n // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n this._logDebug('warn', 'Raven dropped repeat event: ', data);\n return;\n }\n\n // Send along an event_id if not explicitly passed.\n // This event_id can be used to reference the error within Sentry itself.\n // Set lastEventId after we know the error should actually be sent\n this._lastEventId = data.event_id || (data.event_id = this._getUuid());\n\n // Store outbound payload after trim\n this._lastData = data;\n\n this._logDebug('debug', 'Raven about to send:', data);\n\n var auth = {\n sentry_version: '7',\n sentry_client: 'raven-js/' + this.VERSION,\n sentry_key: this._globalKey\n };\n\n if (this._globalSecret) {\n auth.sentry_secret = this._globalSecret;\n }\n\n var exception = data.exception && data.exception.values[0];\n\n // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy\n if (\n this._globalOptions.autoBreadcrumbs &&\n this._globalOptions.autoBreadcrumbs.sentry\n ) {\n this.captureBreadcrumb({\n category: 'sentry',\n message: exception\n ? (exception.type ? exception.type + ': ' : '') + exception.value\n : data.message,\n event_id: data.event_id,\n level: data.level || 'error' // presume error unless specified\n });\n }\n\n var url = this._globalEndpoint;\n (globalOptions.transport || this._makeRequest).call(this, {\n url: url,\n auth: auth,\n data: data,\n options: globalOptions,\n onSuccess: function success() {\n self._resetBackoff();\n\n self._triggerEvent('success', {\n data: data,\n src: url\n });\n callback && callback();\n },\n onError: function failure(error) {\n self._logDebug('error', 'Raven transport failed to send: ', error);\n\n if (error.request) {\n self._setBackoffState(error.request);\n }\n\n self._triggerEvent('failure', {\n data: data,\n src: url\n });\n error = error || new Error('Raven send failed (no additional details provided)');\n callback && callback(error);\n }\n });\n },\n\n _makeRequest: function(opts) {\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests\n var url = opts.url + '?' + urlencode(opts.auth);\n\n var evaluatedHeaders = null;\n var evaluatedFetchParameters = {};\n\n if (opts.options.headers) {\n evaluatedHeaders = this._evaluateHash(opts.options.headers);\n }\n\n if (opts.options.fetchParameters) {\n evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);\n }\n\n if (supportsFetch()) {\n evaluatedFetchParameters.body = stringify(opts.data);\n\n var defaultFetchOptions = objectMerge({}, this._fetchDefaults);\n var fetchOptions = objectMerge(defaultFetchOptions, evaluatedFetchParameters);\n\n if (evaluatedHeaders) {\n fetchOptions.headers = evaluatedHeaders;\n }\n\n return _window\n .fetch(url, fetchOptions)\n .then(function(response) {\n if (response.ok) {\n opts.onSuccess && opts.onSuccess();\n } else {\n var error = new Error('Sentry error code: ' + response.status);\n // It's called request only to keep compatibility with XHR interface\n // and not add more redundant checks in setBackoffState method\n error.request = response;\n opts.onError && opts.onError(error);\n }\n })\n ['catch'](function() {\n opts.onError &&\n opts.onError(new Error('Sentry error code: network unavailable'));\n });\n }\n\n var request = _window.XMLHttpRequest && new _window.XMLHttpRequest();\n if (!request) return;\n\n // if browser doesn't support CORS (e.g. IE7), we are out of luck\n var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\n if (!hasCORS) return;\n\n if ('withCredentials' in request) {\n request.onreadystatechange = function() {\n if (request.readyState !== 4) {\n return;\n } else if (request.status === 200) {\n opts.onSuccess && opts.onSuccess();\n } else if (opts.onError) {\n var err = new Error('Sentry error code: ' + request.status);\n err.request = request;\n opts.onError(err);\n }\n };\n } else {\n request = new XDomainRequest();\n // xdomainrequest cannot go http -> https (or vice versa),\n // so always use protocol relative\n url = url.replace(/^https?:/, '');\n\n // onreadystatechange not supported by XDomainRequest\n if (opts.onSuccess) {\n request.onload = opts.onSuccess;\n }\n if (opts.onError) {\n request.onerror = function() {\n var err = new Error('Sentry error code: XDomainRequest');\n err.request = request;\n opts.onError(err);\n };\n }\n }\n\n request.open('POST', url);\n\n if (evaluatedHeaders) {\n each(evaluatedHeaders, function(key, value) {\n request.setRequestHeader(key, value);\n });\n }\n\n request.send(stringify(opts.data));\n },\n\n _evaluateHash: function(hash) {\n var evaluated = {};\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n var value = hash[key];\n evaluated[key] = typeof value === 'function' ? value() : value;\n }\n }\n\n return evaluated;\n },\n\n _logDebug: function(level) {\n // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change\n if (\n this._originalConsoleMethods[level] &&\n (this.debug || this._globalOptions.debug)\n ) {\n // In IE<10 console methods do not have their own 'apply' method\n Function.prototype.apply.call(\n this._originalConsoleMethods[level],\n this._originalConsole,\n [].slice.call(arguments, 1)\n );\n }\n },\n\n _mergeContext: function(key, context) {\n if (isUndefined(context)) {\n delete this._globalContext[key];\n } else {\n this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context);\n }\n }\n};\n\n// Deprecations\nRaven.prototype.setUser = Raven.prototype.setUserContext;\nRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\nmodule.exports = Raven;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"1\":1,\"2\":2,\"5\":5,\"6\":6,\"7\":7,\"8\":8}],4:[function(_dereq_,module,exports){\n(function (global){\n/**\n * Enforces a single instance of the Raven client, and the\n * main entry point for Raven. If you are a consumer of the\n * Raven library, you SHOULD load this file (vs raven.js).\n **/\n\nvar RavenConstructor = _dereq_(3);\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _Raven = _window.Raven;\n\nvar Raven = new RavenConstructor();\n\n/*\n * Allow multiple versions of Raven to be installed.\n * Strip Raven from the global context and returns the instance.\n *\n * @return {Raven}\n */\nRaven.noConflict = function() {\n _window.Raven = _Raven;\n return Raven;\n};\n\nRaven.afterLoad();\n\nmodule.exports = Raven;\n\n/**\n * DISCLAIMER:\n *\n * Expose `Client` constructor for cases where user want to track multiple \"sub-applications\" in one larger app.\n * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it.\n * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug.\n *\n * It's called `Client' to be in-line with Raven Node implementation.\n *\n * HOWTO:\n *\n * import Raven from 'raven-js';\n *\n * const someAppReporter = new Raven.Client();\n * const someOtherAppReporter = new Raven.Client();\n *\n * someAppReporter.config('__DSN__', {\n * ...config goes here\n * });\n *\n * someOtherAppReporter.config('__OTHER_DSN__', {\n * ...config goes here\n * });\n *\n * someAppReporter.captureMessage(...);\n * someAppReporter.captureException(...);\n * someAppReporter.captureBreadcrumb(...);\n *\n * someOtherAppReporter.captureMessage(...);\n * someOtherAppReporter.captureException(...);\n * someOtherAppReporter.captureBreadcrumb(...);\n *\n * It should \"just work\".\n */\nmodule.exports.Client = RavenConstructor;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"3\":3}],5:[function(_dereq_,module,exports){\n(function (global){\nvar stringify = _dereq_(7);\n\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : {};\n\nfunction isObject(what) {\n return typeof what === 'object' && what !== null;\n}\n\n// Yanked from https://git.io/vS8DV re-used under CC0\n// with some tiny modifications\nfunction isError(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\nfunction isErrorEvent(value) {\n return Object.prototype.toString.call(value) === '[object ErrorEvent]';\n}\n\nfunction isDOMError(value) {\n return Object.prototype.toString.call(value) === '[object DOMError]';\n}\n\nfunction isDOMException(value) {\n return Object.prototype.toString.call(value) === '[object DOMException]';\n}\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction isPlainObject(what) {\n return Object.prototype.toString.call(what) === '[object Object]';\n}\n\nfunction isString(what) {\n return Object.prototype.toString.call(what) === '[object String]';\n}\n\nfunction isArray(what) {\n return Object.prototype.toString.call(what) === '[object Array]';\n}\n\nfunction isEmptyObject(what) {\n if (!isPlainObject(what)) return false;\n\n for (var _ in what) {\n if (what.hasOwnProperty(_)) {\n return false;\n }\n }\n return true;\n}\n\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMError() {\n try {\n new DOMError(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsDOMException() {\n try {\n new DOMException(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsFetch() {\n if (!('fetch' in _window)) return false;\n\n try {\n new Headers(); // eslint-disable-line no-new\n new Request(''); // eslint-disable-line no-new\n new Response(); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n// https://caniuse.com/#feat=referrer-policy\n// It doesn't. And it throw exception instead of ignoring this parameter...\n// REF: https://github.com/getsentry/raven-js/issues/1233\nfunction supportsReferrerPolicy() {\n if (!supportsFetch()) return false;\n\n try {\n // eslint-disable-next-line no-new\n new Request('pickleRick', {\n referrerPolicy: 'origin'\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction supportsPromiseRejectionEvent() {\n return typeof PromiseRejectionEvent === 'function';\n}\n\nfunction wrappedCallback(callback) {\n function dataCallback(data, original) {\n var normalizedData = callback(data) || data;\n if (original) {\n return original(normalizedData) || normalizedData;\n }\n return normalizedData;\n }\n\n return dataCallback;\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n\nfunction objectMerge(obj1, obj2) {\n if (!obj2) {\n return obj1;\n }\n each(obj2, function(key, value) {\n obj1[key] = value;\n });\n return obj1;\n}\n\n/**\n * This function is only used for react-native.\n * react-native freezes object that have already been sent over the\n * js bridge. We need this function in order to check if the object is frozen.\n * So it's ok that objectFrozen returns false if Object.isFrozen is not\n * supported because it's not relevant for other \"platforms\". See related issue:\n * https://github.com/getsentry/react-native-sentry/issues/57\n */\nfunction objectFrozen(obj) {\n if (!Object.isFrozen) {\n return false;\n }\n return Object.isFrozen(obj);\n}\n\nfunction truncate(str, max) {\n if (typeof max !== 'number') {\n throw new Error('2nd argument to `truncate` function should be a number');\n }\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + '\\u2026';\n}\n\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\nfunction hasKey(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction joinRegExp(patterns) {\n // Combine an array of regular expressions and strings into one large regexp\n // Be mad.\n var sources = [],\n i = 0,\n len = patterns.length,\n pattern;\n\n for (; i < len; i++) {\n pattern = patterns[i];\n if (isString(pattern)) {\n // If it's a string, we need to escape it\n // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n } else if (pattern && pattern.source) {\n // If it's a regexp already, we want to extract the source\n sources.push(pattern.source);\n }\n // Intentionally skip other cases\n }\n return new RegExp(sources.join('|'), 'i');\n}\n\nfunction urlencode(o) {\n var pairs = [];\n each(o, function(key, value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n return pairs.join('&');\n}\n\n// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n// intentionally using regex and not href parsing trick because React Native and other\n// environments where DOM might not be available\nfunction parseUrl(url) {\n if (typeof url !== 'string') return {};\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n protocol: match[2],\n host: match[4],\n path: match[5],\n relative: match[5] + query + fragment // everything minus origin\n };\n}\nfunction uuid4() {\n var crypto = _window.crypto || _window.msCrypto;\n\n if (!isUndefined(crypto) && crypto.getRandomValues) {\n // Use window.crypto API if available\n // eslint-disable-next-line no-undef\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n var pad = function(num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = '0' + v;\n }\n return v;\n };\n\n return (\n pad(arr[0]) +\n pad(arr[1]) +\n pad(arr[2]) +\n pad(arr[3]) +\n pad(arr[4]) +\n pad(arr[5]) +\n pad(arr[6]) +\n pad(arr[7])\n );\n } else {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @param elem\n * @returns {string}\n */\nfunction htmlTreeAsString(elem) {\n /* eslint no-extra-parens:0*/\n var MAX_TRAVERSE_HEIGHT = 5,\n MAX_OUTPUT_LEN = 80,\n out = [],\n height = 0,\n len = 0,\n separator = ' > ',\n sepLength = separator.length,\n nextStr;\n\n while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = htmlElementAsString(elem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (\n nextStr === 'html' ||\n (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)\n ) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n elem = elem.parentNode;\n }\n\n return out.reverse().join(separator);\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @param HTMLElement\n * @returns {string}\n */\nfunction htmlElementAsString(elem) {\n var out = [],\n className,\n classes,\n key,\n attr,\n i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push('#' + elem.id);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push('.' + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push('[' + key + '=\"' + attr + '\"]');\n }\n }\n return out.join('');\n}\n\n/**\n * Returns true if either a OR b is truthy, but not both\n */\nfunction isOnlyOneTruthy(a, b) {\n return !!(!!a ^ !!b);\n}\n\n/**\n * Returns true if both parameters are undefined\n */\nfunction isBothUndefined(a, b) {\n return isUndefined(a) && isUndefined(b);\n}\n\n/**\n * Returns true if the two input exception interfaces have the same content\n */\nfunction isSameException(ex1, ex2) {\n if (isOnlyOneTruthy(ex1, ex2)) return false;\n\n ex1 = ex1.values[0];\n ex2 = ex2.values[0];\n\n if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false;\n\n // in case both stacktraces are undefined, we can't decide so default to false\n if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false;\n\n return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n}\n\n/**\n * Returns true if the two input stack trace interfaces have the same content\n */\nfunction isSameStacktrace(stack1, stack2) {\n if (isOnlyOneTruthy(stack1, stack2)) return false;\n\n var frames1 = stack1.frames;\n var frames2 = stack2.frames;\n\n // Exit early if stacktrace is malformed\n if (frames1 === undefined || frames2 === undefined) return false;\n\n // Exit early if frame count differs\n if (frames1.length !== frames2.length) return false;\n\n // Iterate through every frame; bail out if anything differs\n var a, b;\n for (var i = 0; i < frames1.length; i++) {\n a = frames1[i];\n b = frames2[i];\n if (\n a.filename !== b.filename ||\n a.lineno !== b.lineno ||\n a.colno !== b.colno ||\n a['function'] !== b['function']\n )\n return false;\n }\n return true;\n}\n\n/**\n * Polyfill a method\n * @param obj object e.g. `document`\n * @param name method name present on object e.g. `addEventListener`\n * @param replacement replacement function\n * @param track {optional} record instrumentation to an array\n */\nfunction fill(obj, name, replacement, track) {\n if (obj == null) return;\n var orig = obj[name];\n obj[name] = replacement(orig);\n obj[name].__raven__ = true;\n obj[name].__orig__ = orig;\n if (track) {\n track.push([obj, name, orig]);\n }\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns {string}\n */\nfunction safeJoin(input, delimiter) {\n if (!isArray(input)) return '';\n\n var output = [];\n\n for (var i = 0; i < input.length; i++) {\n try {\n output.push(String(input[i]));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n// Default Node.js REPL depth\nvar MAX_SERIALIZE_EXCEPTION_DEPTH = 3;\n// 50kB, as 100kB is max payload size, so half sounds reasonable\nvar MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;\nvar MAX_SERIALIZE_KEYS_LENGTH = 40;\n\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nfunction serializeValue(value) {\n if (typeof value === 'string') {\n var maxLength = 40;\n return truncate(value, maxLength);\n } else if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined'\n ) {\n return value;\n }\n\n var type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (type === '[object Object]') return '[Object]';\n if (type === '[object Array]') return '[Array]';\n if (type === '[object Function]')\n return value.name ? '[Function: ' + value.name + ']' : '[Function]';\n\n return value;\n}\n\nfunction serializeObject(value, depth) {\n if (depth === 0) return serializeValue(value);\n\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(function(acc, key) {\n acc[key] = serializeObject(value[key], depth - 1);\n return acc;\n }, {});\n } else if (Array.isArray(value)) {\n return value.map(function(val) {\n return serializeObject(val, depth - 1);\n });\n }\n\n return serializeValue(value);\n}\n\nfunction serializeException(ex, depth, maxSize) {\n if (!isPlainObject(ex)) return ex;\n\n depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;\n maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;\n\n var serialized = serializeObject(ex, depth);\n\n if (jsonSize(stringify(serialized)) > maxSize) {\n return serializeException(ex, depth - 1);\n }\n\n return serialized;\n}\n\nfunction serializeKeysForMessage(keys, maxLength) {\n if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();\n if (!Array.isArray(keys)) return '';\n\n keys = keys.filter(function(key) {\n return typeof key === 'string';\n });\n if (keys.length === 0) return '[object has no keys]';\n\n maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;\n if (keys[0].length >= maxLength) return keys[0];\n\n for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {\n var serialized = keys.slice(0, usedKeys).join(', ');\n if (serialized.length > maxLength) continue;\n if (usedKeys === keys.length) return serialized;\n return serialized + '\\u2026';\n }\n\n return '';\n}\n\nfunction sanitize(input, sanitizeKeys) {\n if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0))\n return input;\n\n var sanitizeRegExp = joinRegExp(sanitizeKeys);\n var sanitizeMask = '********';\n var safeInput;\n\n try {\n safeInput = JSON.parse(stringify(input));\n } catch (o_O) {\n return input;\n }\n\n function sanitizeWorker(workerInput) {\n if (isArray(workerInput)) {\n return workerInput.map(function(val) {\n return sanitizeWorker(val);\n });\n }\n\n if (isPlainObject(workerInput)) {\n return Object.keys(workerInput).reduce(function(acc, k) {\n if (sanitizeRegExp.test(k)) {\n acc[k] = sanitizeMask;\n } else {\n acc[k] = sanitizeWorker(workerInput[k]);\n }\n return acc;\n }, {});\n }\n\n return workerInput;\n }\n\n return sanitizeWorker(safeInput);\n}\n\nmodule.exports = {\n isObject: isObject,\n isError: isError,\n isErrorEvent: isErrorEvent,\n isDOMError: isDOMError,\n isDOMException: isDOMException,\n isUndefined: isUndefined,\n isFunction: isFunction,\n isPlainObject: isPlainObject,\n isString: isString,\n isArray: isArray,\n isEmptyObject: isEmptyObject,\n supportsErrorEvent: supportsErrorEvent,\n supportsDOMError: supportsDOMError,\n supportsDOMException: supportsDOMException,\n supportsFetch: supportsFetch,\n supportsReferrerPolicy: supportsReferrerPolicy,\n supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,\n wrappedCallback: wrappedCallback,\n each: each,\n objectMerge: objectMerge,\n truncate: truncate,\n objectFrozen: objectFrozen,\n hasKey: hasKey,\n joinRegExp: joinRegExp,\n urlencode: urlencode,\n uuid4: uuid4,\n htmlTreeAsString: htmlTreeAsString,\n htmlElementAsString: htmlElementAsString,\n isSameException: isSameException,\n isSameStacktrace: isSameStacktrace,\n parseUrl: parseUrl,\n fill: fill,\n safeJoin: safeJoin,\n serializeException: serializeException,\n serializeKeysForMessage: serializeKeysForMessage,\n sanitize: sanitize\n};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"7\":7}],6:[function(_dereq_,module,exports){\n(function (global){\nvar utils = _dereq_(5);\n\n/*\n TraceKit - Cross brower stack traces\n\n This was originally forked from github.com/occ/TraceKit, but has since been\n largely re-written and is now maintained as part of raven-js. Tests for\n this are in test/vendor.\n\n MIT license\n*/\n\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n};\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : typeof self !== 'undefined'\n ? self\n : {};\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined' || document.location == null) return '';\n return document.location.href;\n}\n\nfunction getLocationOrigin() {\n if (typeof document === 'undefined' || document.location == null) return '';\n\n // Oh dear IE10...\n if (!document.location.origin) {\n return (\n document.location.protocol +\n '//' +\n document.location.hostname +\n (document.location.port ? ':' + document.location.port : '')\n );\n }\n\n return document.location.origin;\n}\n\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Remove all crash handlers.\n */\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.} stack\n */\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} msg Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n function traceKitWindowOnError(msg, url, lineNo, colNo, ex) {\n var stack = null;\n // If 'ex' is ErrorEvent, get real Error from inside\n var exception = utils.isErrorEvent(ex) ? ex.error : ex;\n // If 'msg' is ErrorEvent, get real message from inside\n var message = utils.isErrorEvent(msg) ? msg.message : msg;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(\n lastExceptionStack,\n url,\n lineNo,\n message\n );\n processLastException();\n } else if (exception && utils.isError(exception)) {\n // non-string `exception` arg; attempt to extract stack trace\n\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(exception);\n notifyHandlers(stack, true);\n } else {\n var location = {\n url: url,\n line: lineNo,\n column: colNo\n };\n\n var name = undefined;\n var groups;\n\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n\n stack = {\n name: name,\n message: message,\n url: getLocationHref(),\n stack: [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n return;\n }\n _oldOnerrorHandler = _window.onerror;\n _window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler() {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n _window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(\n function() {\n if (lastException === ex) {\n processLastException();\n }\n },\n stack.incomplete ? 2000 : 0\n );\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n})();\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceFromStackProp(ex) {\n if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\n var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n var winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n // NOTE: blob urls are now supposed to always have an origin, therefore it's format\n // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\\/` as well\n var gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n // Used to additionally parse URL/line/column from eval frames\n var geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n var chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n var lines = ex.stack.split('\\n');\n var stack = [];\n var submatch;\n var parts;\n var element;\n var reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n url: !isNative ? parts[2] : null,\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n if (element.url && element.url.substr(0, 5) === 'blob:') {\n // Special case for handling JavaScript loaded into a blob.\n // We use a synchronous AJAX request here as a blob is already in\n // memory - it's not making a network request. This will generate a warning\n // in the browser console, but there has already been an error so that's not\n // that much of an issue.\n var xhr = new XMLHttpRequest();\n xhr.open('GET', element.url, false);\n xhr.send(null);\n\n // If we failed to download the source, skip this patch\n if (xhr.status === 200) {\n var source = xhr.responseText || '';\n\n // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.\n // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175\n source = source.slice(-300);\n\n // Now we dig out the source map URL\n var sourceMaps = source.match(/\\/\\/# sourceMappingURL=(.*)$/);\n\n // If we don't find a source map comment or we find more than one, continue on to the next element.\n if (sourceMaps) {\n var sourceMapAddress = sourceMaps[1];\n\n // Now we check to see if it's a relative URL.\n // If it is, convert it to an absolute one.\n if (sourceMapAddress.charAt(0) === '~') {\n sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);\n }\n\n // Now we strip the '.map' off of the end of the URL and update the\n // element so that Sentry can match the map to the blob.\n element.url = sourceMapAddress.slice(0, -4);\n }\n }\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {Object.} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n url: url,\n line: lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (\n !stackInfo.stack[0].line &&\n stackInfo.stack[0].func === initial.func\n ) {\n stackInfo.stack[0].line = initial.line;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {?Object.} Stack trace information.\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (\n var curr = computeStackTraceByWalkingCallerChain.caller;\n curr && !recursion;\n curr = curr.caller\n ) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n // console.log('skipping internal function');\n continue;\n }\n\n item = {\n url: null,\n func: UNKNOWN_FUNCTION,\n line: null,\n column: null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) {}\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n } else {\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n // console.log('depth is ' + depth);\n // console.log('stack is ' + stack.length);\n stack.splice(0, depth);\n }\n\n var result = {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n augmentStackTraceWithInitialElement(\n result,\n ex.sourceURL || ex.fileName,\n ex.line || ex.lineNumber,\n ex.message || ex.description\n );\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = depth == null ? 0 : +depth;\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref()\n };\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\n return computeStackTrace;\n})();\n\nmodule.exports = TraceKit;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"5\":5}],7:[function(_dereq_,module,exports){\n/*\n json-stringify-safe\n Like JSON.stringify, but doesn't throw on circular references.\n\n Originally forked from https://github.com/isaacs/json-stringify-safe\n version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n and IE8 compatibility. Tests for this are in test/vendor.\n\n ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n*/\n\nexports = module.exports = stringify;\nexports.getSerialize = serializer;\n\nfunction indexOf(haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) return i;\n }\n return -1;\n}\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n}\n\n// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\nfunction stringifyError(value) {\n var err = {\n // These properties are implemented as magical getters and don't show up in for in\n stack: value.stack,\n message: value.message,\n name: value.name\n };\n\n for (var i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i)) {\n err[i] = value[i];\n }\n }\n\n return err;\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [];\n var keys = [];\n\n if (cycleReplacer == null) {\n cycleReplacer = function(key, value) {\n if (stack[0] === value) {\n return '[Circular ~]';\n }\n return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n };\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = indexOf(stack, this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n if (~indexOf(stack, value)) {\n value = cycleReplacer.call(this, key, value);\n }\n } else {\n stack.push(value);\n }\n\n return replacer == null\n ? value instanceof Error ? stringifyError(value) : value\n : replacer.call(this, key, value);\n };\n}\n\n},{}],8:[function(_dereq_,module,exports){\n/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/*\n* Add integers, wrapping at 2^32. This uses 16-bit operations internally\n* to work around bugs in some JS interpreters.\n*/\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\n\n/*\n* Bitwise rotate a 32-bit number to the left.\n*/\nfunction bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n\n/*\n* These functions implement the four basic operations the algorithm uses.\n*/\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/*\n* Calculate the MD5 of an array of little-endian words, and a bit length.\n*/\nfunction binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return [a, b, c, d];\n}\n\n/*\n* Convert an array of little-endian words to a string\n*/\nfunction binl2rstr(input) {\n var i;\n var output = '';\n var length32 = input.length * 32;\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n }\n return output;\n}\n\n/*\n* Convert a raw string to an array of little-endian words\n* Characters >255 have their high-byte silently ignored.\n*/\nfunction rstr2binl(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n var length8 = input.length * 8;\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n }\n return output;\n}\n\n/*\n* Calculate the MD5 of a raw string\n*/\nfunction rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n}\n\n/*\n* Calculate the HMAC-MD5, of a key and some data (raw strings)\n*/\nfunction rstrHMACMD5(key, data) {\n var i;\n var bkey = rstr2binl(key);\n var ipad = [];\n var opad = [];\n var hash;\n ipad[15] = opad[15] = undefined;\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8);\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n}\n\n/*\n* Convert a raw string to a hex string\n*/\nfunction rstr2hex(input) {\n var hexTab = '0123456789abcdef';\n var output = '';\n var x;\n var i;\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i);\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n }\n return output;\n}\n\n/*\n* Encode a string as utf-8\n*/\nfunction str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input));\n}\n\n/*\n* Take string arguments and return either raw or hex encoded strings\n*/\nfunction rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s));\n}\nfunction hexMD5(s) {\n return rstr2hex(rawMD5(s));\n}\nfunction rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n}\nfunction hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d));\n}\n\nfunction md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string);\n }\n return rawMD5(string);\n }\n if (!raw) {\n return hexHMACMD5(key, string);\n }\n return rawHMACMD5(key, string);\n}\n\nmodule.exports = md5;\n\n},{}]},{},[4])(4)\n});\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}