{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../src/misc.ts","webpack:///./routes/VlDiGeometria.js?ee6b","webpack:///../src/memo.ts","webpack:///./contexts/LatexRenderColor.js","webpack:///./routes/BasiDiDati.js?c53d","webpack:///../src/is.ts","webpack:///./components/Layout/Footer.less","webpack:///../src/path.ts","webpack:///../src/reportingobserver.ts","webpack:///../src/angular.ts","webpack:///../src/captureconsole.ts","webpack:///../src/debug.ts","webpack:///../src/dedupe.ts","webpack:///../src/ember.ts","webpack:///../src/extraerrordata.ts","webpack:///../src/rewriteframes.ts","webpack:///../src/sessiontiming.ts","webpack:///../src/transaction.ts","webpack:///../src/vue.ts","webpack:///./routes/OttimizzazioneLineare.js?30da","webpack:///../src/logger.ts","webpack:///./routes/CalcoloNumerico.js?ee14","webpack:///../src/supports.ts","webpack:///../src/severity.ts","webpack:///./routes/MingwInstall.js?ed77","webpack:///../node_modules/webpack/buildin/harmony-module.js","webpack:///./index.js","webpack:///../node_modules/@preact/async-loader/async-legacy.js","webpack:///../src/util.js","webpack:///../src/index.js","webpack:///./routes/ApprendimentoSistemiArtificiali.js?c6e2","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///./routes/AlgoritmiEStruttureDati.js?c5c8","webpack:///../src/string.ts","webpack:///./routes/Home.js?4f4b","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js","webpack:///./routes/Statistica.js?b5fb","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../src/object.ts","webpack:///./components/Layout/Footer.js","webpack:///../node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///../node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///../node_modules/history/esm/history.js","webpack:///../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///../node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js","webpack:///./routes/Fisica.js?f845","webpack:///../src/scope.ts","webpack:///../src/hub.ts","webpack:///../src/index.ts","webpack:///../src/integration.ts","webpack:///../src/tracekit.ts","webpack:///../src/parsers.ts","webpack:///../src/eventbuilder.ts","webpack:///../src/helpers.ts","webpack:///../src/instrument.ts","webpack:///../../src/integrations/breadcrumbs.ts","webpack:///../src/sdk.ts","webpack:///../src/status.ts","webpack:///../src/syncpromise.ts","webpack:///../../src/integrations/functiontostring.ts","webpack:///../src/polyfill.ts","webpack:///../src/error.ts","webpack:///../src/dsn.ts","webpack:///../src/api.ts","webpack:///../src/baseclient.ts","webpack:///../../src/transports/noop.ts","webpack:///../src/basebackend.ts","webpack:///../src/promisebuffer.ts","webpack:///../../src/transports/base.ts","webpack:///../../src/transports/fetch.ts","webpack:///../../src/transports/xhr.ts","webpack:///../src/backend.ts","webpack:///../src/version.ts","webpack:///../src/client.ts","webpack:///../../src/integrations/inboundfilters.ts","webpack:///../../src/integrations/trycatch.ts","webpack:///../../src/integrations/globalhandlers.ts","webpack:///../../src/integrations/linkederrors.ts","webpack:///../../src/integrations/useragent.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","installedCssChunks","1","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","isNodeEnv","toString","process","getGlobalObject","global","self","fallbackGlobalObject","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","replace","Math","random","parseUrl","url","match","host","path","protocol","relative","getEventDescription","exception","values","event_id","consoleSandbox","callback","originalConsole","wrappedLevels","forEach","level","__sentry_original__","result","keys","addExceptionTypeValue","addExceptionMechanism","mechanism","_oO","getLocationHref","location","oO","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","reverse","join","el","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","timestampWithMs","crossPlatformPerformance","timeOrigin","now","parseRetryAfterHeader","header","headerDelay","parseInt","isNaN","headerDate","Date","parse","getFunctionName","fn","INITIAL_TIME","prevNow","performanceFallback","require","performance","_","timing","navigationStart","cb","this","_hasWeakSet","WeakSet","_inner","memoize","obj","has","add","unmemoize","delete","splice","createContext","isError","wat","isInstanceOf","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base","_e","normalizeArray","parts","allowAboveRoot","up","last","unshift","splitPath","filename","splitPathRe","exec","resolvedPath","resolvedAbsolute","args","charAt","filter","trim","start","end","ReportTypes","angularPattern","options","Angular","_angular","angular","setupOnce","getCurrentHub","_getCurrentHub","moduleName","config","$provide","decorator","_$exceptionHandlerDecorator","logger","$delegate","cause","hub","getIntegration","withScope","scope","setExtra","addEventProcessor","ex","matches","extra","angularDocs","substr","captureException","CaptureConsole","_levels","levels","originalConsoleLevel","setLevel","fromString","captureMessage","Function","apply","Debug","_options","debugger","stringify","addGlobalEventProcessor","hint","log","JSON","Dedupe","currentEvent","_shouldDropEvent","_previousEvent","previousEvent","_isSameMessageEvent","_isSameExceptionEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_getFramesFromEvent","stacktrace","frames","currentFrames","previousFrames","frameA","frameB","lineno","colno","function","_getExceptionFromEvent","previousException","currentException","currentFingerprint","fingerprint","previousFingerprint","Ember","_Ember","oldOnError","originalException","testing","RSVP","on","reason","is","depth","ExtraErrorData","enhanceEventWithErrorData","constructor","errorData","_extractErrorData","contexts","normalizedErrorData","errorKeys","getOwnPropertyNames","indexOf","extraErrorInfo","types","Crash","Deprecation","Intervention","ReportingObserver","supports","handler","buffered","observe","reports","report","label","details","body","plainBody","prop","crashId","RewriteFrames","_iteratee","frame","ext","f","isWindowsFrame","test","startsWithSlash","_root","from","to","fromParts","toParts","min","samePartsLength","outputParts","concat","root","iteratee","Array","isArray","_processExceptionsEvent","_processStacktraceEvent","map","_processStacktrace","SessionTiming","_startTime","Transaction","in_app","transaction","_getTransaction","Vue","_attachProps","_logErrors","_Vue","logErrors","attachProps","_formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","errorHandler","info","metadata","componentName","propsData","lifecycleHook","setContext","util","warn","PREFIX","_enabled","disable","enable","__SENTRY__","Logger","supportsFetch","Headers","Request","Response","isNativeFetch","func","supportsNativeFetch","fetch","doc","sandbox","hidden","contentWindow","supportsReportingObserver","supportsReferrerPolicy","referrerPolicy","supportsHistory","chrome","app","runtime","history","pushState","replaceState","Severity","Info","Warning","Fatal","Critical","Log","originalModule","webpackPolyfill","children","Sentry","debug","init","dsn","release","environment","beforeSend","showReportDialog","eventId","Provider","createHashHistory","req","Async","b","old","Component","componentWillMount","nextBase","__b","setState","child","default","shouldComponentUpdate","nxt","nodeType","h","nodeName","dangerouslySetInnerHTML","__html","innerHTML","render","let","EMPTY","getCurrentUrl","customHistory","getCurrentLocation","pathname","search","route","ROUTERS","canRoute","setUrl","routeTo","didRoute","subscribers","routeFromLink","node","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","String","toUpperCase","hasAttribute","eventListenersInitialized","Router","props","super","state","addEventListener","static","onChange","const","getMatchingChildren","updating","forceUpdate","componentDidMount","unlisten","listen","componentWillUnmount","componentWillUpdate","componentDidUpdate","invoke","prepareVNodeForRanking","sort","pathRankSort","vnode","newProps","assign","ref","active","current","previous","previousUrl","router","Link","onClick","Route","component","__extends","__","extendStatics","__values","iterator","next","done","TypeError","__read","ar","__spread","arguments","setPrototypeOf","__proto__","__assign","truncate","str","max","snipLine","line","newLine","ll","safeJoin","input","delimiter","output","isMatchingPattern","pattern","removeNode","normalizedProps","defaultProps","createVNode","original","_children","_parent","_depth","_dom","_nextDom","_component","_original","createRef","Fragment","context","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","_dirty","rerenderQueue","rerenderCount","prevDebounce","debounceRendering","defer","queue","a","_vnode","some","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","diff","_globalContext","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","childVNode","sibDom","firstChildDom","refs","nextDom","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","outer","nextSibling","insertBefore","unmount","applyRef","toChildArray","setStyle","style","setProperty","IS_NON_DIMENSIONAL","dom","oldValue","useCapture","nameLower","cssText","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","newVNode","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","doRender","sub","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillReceiveProps","_force","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","_commit","oldHtml","newHtml","localName","createTextNode","createElementNS","childNodes","attributes","hydrate","diffProps","checked","parentVNode","skipRemove","replaceNode","IS_HYDRATE","cloneElement","defaultValue","ctx","Consumer","subs","_this","_props","_contextRef","isValidElement","hasCaught","getDerivedStateFromError","componentDidCatch","update","Preact","interopDefault","navigator","serviceWorker","register","__webpack_public_path__","getElementById","firstElementChild","preRenderData","inlineDataElement","querySelector","CLI_DATA","g","fill","source","replacement","wrapped","defineProperties","_Oo","urlEncode","encodeURIComponent","getWalkSource","stack","CustomEvent","detail","jsonSize","encodeURI","utf8Length","normalizeToSize","maxSize","serialized","normalize","normalizeValue","_events","walk","memo","Infinity","normalized","serializeValue","toJSON","acc","innerKey","extractExceptionKeysForMessage","maxLength","includedKeys","class","footer","getFullYear","_extends","isAbsolute","spliceOne","list","index","k","pop","addLeadingSlash","stripLeadingSlash","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","listener","isActive","item","notifyListeners","_len","_key","getConfirmation","confirm","stripHash","getHashPath","substring","replaceHashPath","getDOMLocation","decodePath","basename","nextState","globalHistory","transitionManager","handleHashChange","encodedPath","encodePath","forceNextPop","ignorePath","ok","fromLocation","toIndex","allPaths","lastIndexOf","fromIndex","delta","go","revertPop","handlePop","checkDOMListeners","listenerCount","canUseDOM","invariant","_props$getUserConfirm","userAgent","_props$hashType","hashType","_HashPathCoders$hashT","HashPathCoders","initialLocation","isBlocked","createHref","baseTag","pushHashPath","prevIndex","nextPaths","goBack","goForward","block","unblock","hasTrailingSlash","isToAbs","isFromAbs","mustEndAbs","part","condition","hashbang","noslash","slash","getGlobalEventProcessors","globalEventProcessors","getMainCarrier","carrier","extensions","makeMain","registry","oldHub","getHubFromCarrier","setHubOnCarrier","hasHubOnCarrier","isOlderThan","sentry","activeDomain","registryHubTopStack","getStackTop","client","clone","getHubFromActiveDomain","setupIntegrations","integrations","defaultIntegrations","userIntegrations","defaultIntegration","userIntegration","integrationsNames","getIntegrationsToSetup","integration","installedIntegrations","setupIntegration","computeStackTrace","popSize","framesToPop","opera10Regex","opera11Regex","lines","element","column","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","chromeEval","winjs","gecko","geckoEval","columnNumber","computeStackTraceFromStackProp","failed","exceptionFromStacktrace","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","eventFromUnknownInput","syntheticException","domException","eventFromString","rejection","__serialized__","eventFromPlainObject","synthetic","attachStacktrace","shouldIgnoreOnError","ignoreOnError","ignoreNextOnError","wrap","before","__sentry__","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","handleEvent","processedEvent","getOwnPropertyDescriptor","configurable","instrument","instrumented","triggerHandlers","instrumentConsole","domEventHandler","keypressEventHandler","proto","eventName","innerOriginal","instrumentDOM","xhrproto","XMLHttpRequest","originalOpen","__sentry_xhr__","method","__sentry_own_request__","originalSend","xhr","commonHandlerData","startTimestamp","readyState","status_code","status","endTimestamp","instrumentXHR","originalFetch","fetchData","getFetchMethod","getFetchUrl","response","instrumentFetch","historyReplacementFunction","originalHistoryFunction","lastHref","oldOnPopState","onpopstate","instrumentHistory","_oldOnErrorHandler","msg","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","handlers","fetchArgs","debounce","keypressTimeout","lastCapturedEvent","debounceTimer","isContentEditable","addSentryBreadcrumb","serializedData","addBreadcrumb","category","SENTRY_RELEASE","initAndBind","lastEventId","getClient","forceLoad","onLoad","flush","close","Status","fromHttpCode","Success","RateLimit","Invalid","Failed","Unknown","States","originalFunctionToString","executor","_state","PENDING","_handlers","_resolve","_setResult","RESOLVED","_reject","REJECTED","_value","_executeHandlers","_attachHandler","cachedHandlers","onfulfilled","onrejected","SyncPromise","collection","counter","resolvedCollection","catch","val","finally","onfinally","isRejected","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_context","addScopeListener","_notifyScopeListeners","_notifyEventProcessors","processors","processor","final","setUser","user","setTags","tags","setTag","setExtras","extras","setFingerprint","_fingerprint","_level","setTransaction","_transaction","_span","setSpan","span","getSpan","newScope","Scope","clear","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","_applyFingerprint","applyToEvent","trace","getTraceContext","breadcrumbs","_version","_stack","_invokeClient","top","version","bindClient","pushScope","getStack","popScope","getScope","_lastEventId","finalHint","captureEvent","beforeBreadcrumb","finalBreadcrumb","configureScope","run","startSpan","spanOrSpanContext","forceNoChild","_callExtensionMethod","traceHeaders","DSN_REGEX","_fromString","_fromComponents","_validate","withPassword","pass","port","projectId","components","_dsnObject","getDsn","getStoreEndpoint","_getBaseUrl","getStoreEndpointPath","getStoreEndpointWithUrlEncodedAuth","auth","sentry_key","sentry_version","getRequestHeaders","clientName","clientVersion","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","email","backendClass","_integrations","_processing","_backend","_dsn","_getBackend","eventFromException","_processEvent","finalEvent","eventFromMessage","getOptions","_isClientProcessing","clearInterval","interval","getTransport","transportFlushed","ready","enabled","_isEnabled","ticked","setInterval","_prepareEvent","dist","maxValueLength","normalizeDepth","prepared","_addIntegrations","sdk","evt","_normalizeEvent","sdkInfo","integrationsArray","sampleRate","sendEvent","beforeSendResult","_handleAsyncBeforeSend","Skipped","_transport","_setupTransport","_limit","_buffer","isReady","task","remove","drain","capturedSetTimeout","_disabledUntil","defaultOptions","headers","onreadystatechange","getResponseHeader","open","setRequestHeader","send","transportOptions","transport","handled","SDK_NAME","SDK_VERSION","platform","packages","async","FunctionToString","DEFAULT_IGNORE_ERRORS","InboundFilters","clientOptions","_mergeOptions","_isSentryError","_isIgnoredError","_isBlacklistedUrl","_getEventFilterUrl","_isWhitelistedUrl","ignoreInternal","ignoreErrors","_getPossibleEventMessages","blacklistUrls","whitelistUrls","_ignoreOnError","TryCatch","_wrapTimeFunction","originalCallback","_wrapRAF","_wrapEventTarget","_wrapXHR","xmlHttpRequestProps","wrapOptions","Breadcrumbs","_consoleBreadcrumb","handlerData","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","filterUrl","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","GlobalHandlers","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","stackTraceLimit","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","_eventFromIncompleteRejection","groups","LinkedErrors","limit","_handler","linkedErrors","_walkErrorTree","UserAgent","windowIntegrations","_window","Integrations","INTEGRATIONS"],"mappings":"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","file":"bundle.fe00b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t1: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0\":\"route-AlgoritmiEStruttureDati~route-VlDiGeometria\",\"3\":\"route-AlgoritmiEStruttureDati\",\"4\":\"route-ApprendimentoSistemiArtificiali\",\"5\":\"route-BasiDiDati\",\"6\":\"route-CalcoloNumerico\",\"7\":\"route-Fisica\",\"8\":\"route-Home\",\"9\":\"route-MingwInstall\",\"10\":\"route-OttimizzazioneLineare\",\"11\":\"route-Statistica\",\"12\":\"route-VlDiGeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"0\":\"3d7d6\",\"3\":\"59c45\",\"4\":\"88698\",\"5\":\"ee01a\",\"6\":\"52fc3\",\"7\":\"613f1\",\"8\":\"771c5\",\"9\":\"1fcbd\",\"10\":\"f238b\",\"11\":\"af2a2\",\"12\":\"8665f\"}[chunkId] + \".js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"0\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1,\"11\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"0\":\"route-AlgoritmiEStruttureDati~route-VlDiGeometria\",\"3\":\"route-AlgoritmiEStruttureDati\",\"4\":\"route-ApprendimentoSistemiArtificiali\",\"5\":\"route-BasiDiDati\",\"6\":\"route-CalcoloNumerico\",\"7\":\"route-Fisica\",\"8\":\"route-Home\",\"9\":\"route-MingwInstall\",\"10\":\"route-OttimizzazioneLineare\",\"11\":\"route-Statistica\",\"12\":\"route-VlDiGeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"0\":\"9febd\",\"3\":\"31d6c\",\"4\":\"282b5\",\"5\":\"c9a44\",\"6\":\"ad5ae\",\"7\":\"40f37\",\"8\":\"8001a\",\"9\":\"d169e\",\"10\":\"722ef\",\"11\":\"25487\",\"12\":\"31d6c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import { Event, Integration, StackFrame, WrappedFunction } from '@sentry/types';\n\nimport { isString } from './is';\nimport { snipLine } from './string';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nexport function dynamicRequire(mod: any, request: string): any {\n // tslint:disable-next-line: no-unsafe-any\n return mod.require(request);\n}\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // tslint:disable:strict-type-predicates\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject) as T & SentryGlobal;\n}\n// tslint:enable:strict-type-predicates\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // tslint:disable-next-line:no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // tslint:disable-next-line:no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let 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]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // tslint:disable-next-line:no-bitwise\n const r = (Math.random() * 16) | 0;\n // tslint:disable-next-line:no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\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\n * @returns parsed URL object\n */\nexport function parseUrl(\n url: string,\n): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n const exception = event.exception.values[0];\n\n if (exception.type && exception.value) {\n return `${exception.type}: ${exception.value}`;\n }\n return exception.type || exception.value || event.event_id || '';\n }\n return event.event_id || '';\n}\n\n/** JSDoc */\ninterface ExtensibleConsole extends Console {\n [key: string]: any;\n}\n\n/** JSDoc */\nexport function consoleSandbox(callback: () => any): any {\n const global = getGlobalObject();\n const levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as ExtensibleConsole;\n const wrappedLevels: { [key: string]: any } = {};\n\n // Restore all wrapped console methods\n levels.forEach(level => {\n if (level in global.console && (originalConsole[level] as WrappedFunction).__sentry_original__) {\n wrappedLevels[level] = originalConsole[level] as WrappedFunction;\n originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__;\n }\n });\n\n // Perform callback manipulations\n const result = callback();\n\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level];\n });\n\n return result;\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(\n event: Event,\n mechanism: {\n [key: string]: any;\n } = {},\n): void {\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore\n // tslint:disable:no-non-null-assertion\n event.exception!.values![0].mechanism = event.exception!.values![0].mechanism || {};\n Object.keys(mechanism).forEach(key => {\n // @ts-ignore\n event.exception!.values![0].mechanism[key] = mechanism[key];\n });\n } catch (_oO) {\n // no-empty\n }\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return document.location.href;\n } catch (oO) {\n return '';\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 * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\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 (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown): string {\n const elem = el as {\n getAttribute(key: string): string; // tslint:disable-line:completed-docs\n tagName?: string;\n id?: string;\n className?: string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n 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 const 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\nconst INITIAL_TIME = Date.now();\nlet prevNow = 0;\n\n/**\n * Cross platform compatible partial performance implementation\n */\ninterface CrossPlatformPerformance {\n /**\n * Returns the current timestamp in ms\n */\n now(): number;\n timeOrigin: number;\n}\n\nconst performanceFallback: CrossPlatformPerformance = {\n now(): number {\n let now = Date.now() - INITIAL_TIME;\n if (now < prevNow) {\n now = prevNow;\n }\n prevNow = now;\n return now;\n },\n timeOrigin: INITIAL_TIME,\n};\n\nexport const crossPlatformPerformance: CrossPlatformPerformance = (() => {\n if (isNodeEnv()) {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: CrossPlatformPerformance };\n return perfHooks.performance;\n } catch (_) {\n return performanceFallback;\n }\n }\n\n if (getGlobalObject().performance) {\n // Polyfill for performance.timeOrigin.\n //\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // tslint:disable-next-line:strict-type-predicates\n if (performance.timeOrigin === undefined) {\n // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a\n // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME.\n // @ts-ignore\n // tslint:disable-next-line:deprecation\n performance.timeOrigin = (performance.timing && performance.timing.navigationStart) || INITIAL_TIME;\n }\n }\n\n return getGlobalObject().performance || performanceFallback;\n})();\n\n/**\n * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock.\n */\nexport function timestampWithMs(): number {\n return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000;\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\nconst defaultRetryAfter = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now: number, header?: string | number | null): number {\n if (!header) {\n return defaultRetryAfter;\n }\n\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return defaultRetryAfter;\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./VlDiGeometria.js\") );\n\t\t\t}, \"route-VlDiGeometria\");\n\t\t}\n\n\t\texport default Async(load);\n\t","// tslint:disable:no-unsafe-any\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nexport class Memo {\n /** Determines if WeakSet is available */\n private readonly _hasWeakSet: boolean;\n /** Either WeakSet or Array */\n private readonly _inner: any;\n\n public constructor() {\n // tslint:disable-next-line\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n public memoize(obj: any): boolean {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < this._inner.length; i++) {\n const value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n }\n\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n public unmemoize(obj: any): void {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n } else {\n for (let i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n }\n}\n","import {createContext} from \"preact\";\r\n\r\nexport default createContext(\"White\");\r\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./BasiDiDati.js\") );\n\t\t\t}, \"route-BasiDiDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: any): boolean {\n switch (Object.prototype.toString.call(wat)) {\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 isInstanceOf(wat, Error);\n }\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: any): boolean {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: any): boolean {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: any): boolean {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): boolean {\n // tslint:disable:no-unsafe-any\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n // tslint:enable:no-unsafe-any\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: any): boolean {\n // tslint:disable-next-line:no-unsafe-any\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"footer__3lyac\"};","// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://raw.githubusercontent.com/calvinmetcalf/rollup-plugin-node-builtins/master/src/es6/path.js\n\n/** JSDoc */\nfunction normalizeArray(parts: string[], allowAboveRoot?: boolean): string[] {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n/** JSDoc */\nfunction splitPath(filename: string): string[] {\n const parts = splitPathRe.exec(filename);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nexport function resolve(...args: string[]): string {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(resolvedPath.split('/').filter(p => !!p), !resolvedAbsolute).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr: string[]): string[] {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nexport function relative(from: string, to: string): string {\n // tslint:disable:no-parameter-reassignment\n from = resolve(from).substr(1);\n to = resolve(to).substr(1);\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nexport function normalizePath(path: string): string {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.substr(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(path.split('/').filter(p => !!p), !isPathAbsolute).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nexport function isAbsolute(path: string): boolean {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nexport function join(...args: string[]): string {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nexport function dirname(path: string): string {\n const result = splitPath(path);\n const root = result[0];\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nexport function basename(path: string, ext?: string): string {\n let f = splitPath(path)[2];\n if (ext && f.substr(ext.length * -1) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n}\n","import { EventProcessor, Hub, Integration } from '@sentry/types';\nimport { getGlobalObject, supportsReportingObserver } from '@sentry/utils';\n\n/** JSDoc */\ninterface Report {\n [key: string]: any;\n type: ReportTypes;\n url: string;\n body?: ReportBody;\n}\n\n/** JSDoc */\nenum ReportTypes {\n /** JSDoc */\n Crash = 'crash',\n /** JSDoc */\n Deprecation = 'deprecation',\n /** JSDoc */\n Intervention = 'intervention',\n}\n\n/** JSDoc */\ntype ReportBody = CrashReportBody | DeprecationReportBody | InterventionReportBody;\n\n/** JSDoc */\ninterface CrashReportBody {\n [key: string]: any;\n crashId: string;\n reason?: string;\n}\n\n/** JSDoc */\ninterface DeprecationReportBody {\n [key: string]: any;\n id: string;\n anticipatedRemoval?: Date;\n message: string;\n sourceFile?: string;\n lineNumber?: number;\n columnNumber?: number;\n}\n\n/** JSDoc */\ninterface InterventionReportBody {\n [key: string]: any;\n id: string;\n message: string;\n sourceFile?: string;\n lineNumber?: number;\n columnNumber?: number;\n}\n\n/** Reporting API integration - https://w3c.github.io/reporting/ */\nexport class ReportingObserver implements Integration {\n /**\n * @inheritDoc\n */\n public readonly name: string = ReportingObserver.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'ReportingObserver';\n\n /**\n * Returns current hub.\n */\n private _getCurrentHub?: () => Hub;\n\n /**\n * @inheritDoc\n */\n public constructor(\n private readonly _options: {\n types?: ReportTypes[];\n } = {\n types: [ReportTypes.Crash, ReportTypes.Deprecation, ReportTypes.Intervention],\n },\n ) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n // tslint:disable:no-unsafe-any\n\n if (!supportsReportingObserver()) {\n return;\n }\n\n this._getCurrentHub = getCurrentHub;\n\n const observer = new (getGlobalObject()).ReportingObserver(this.handler.bind(this), {\n buffered: true,\n types: this._options.types,\n });\n\n observer.observe();\n }\n\n /**\n * @inheritDoc\n */\n public handler(reports: Report[]): void {\n const hub = this._getCurrentHub && this._getCurrentHub();\n if (!hub || !hub.getIntegration(ReportingObserver)) {\n return;\n }\n for (const report of reports) {\n hub.withScope(scope => {\n scope.setExtra('url', report.url);\n\n const label = `ReportingObserver [${report.type}]`;\n let details = 'No details available';\n\n if (report.body) {\n // Object.keys doesn't work on ReportBody, as all properties are inheirted\n const plainBody: {\n [key: string]: any;\n } = {};\n\n // tslint:disable-next-line:forin\n for (const prop in report.body) {\n plainBody[prop] = report.body[prop];\n }\n\n scope.setExtra('body', plainBody);\n\n if (report.type === ReportTypes.Crash) {\n const body = report.body as CrashReportBody;\n // A fancy way to create a message out of crashId OR reason OR both OR fallback\n details = [body.crashId || '', body.reason || ''].join(' ').trim() || details;\n } else {\n const body = report.body as DeprecationReportBody | InterventionReportBody;\n details = body.message || details;\n }\n }\n\n hub.captureMessage(`${label}: ${details}`);\n });\n }\n }\n}\n","import { Event, EventProcessor, Hub, Integration } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\n// See https://github.com/angular/angular.js/blob/v1.4.7/src/minErr.js\nconst angularPattern = /^\\[((?:[$a-zA-Z0-9]+:)?(?:[$a-zA-Z0-9]+))\\] (.*?)\\n?(\\S+)$/;\n\n/**\n * AngularJS integration\n *\n * Provides an $exceptionHandler for AngularJS\n */\nexport class Angular implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Angular.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'AngularJS';\n\n /**\n * moduleName used in Angular's DI resolution algorithm\n */\n public static moduleName: string = 'ngSentry';\n\n /**\n * Angular's instance\n */\n private readonly _angular: any;\n\n /**\n * Returns current hub.\n */\n private _getCurrentHub?: () => Hub;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { angular?: any } = {}) {\n // tslint:disable-next-line: no-unsafe-any\n this._angular = options.angular || getGlobalObject().angular;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (!this._angular) {\n logger.error('AngularIntegration is missing an Angular instance');\n return;\n }\n\n this._getCurrentHub = getCurrentHub;\n\n // tslint:disable: no-unsafe-any\n this._angular.module(Angular.moduleName, []).config([\n '$provide',\n ($provide: any) => {\n $provide.decorator('$exceptionHandler', ['$delegate', this._$exceptionHandlerDecorator.bind(this)]);\n },\n ]);\n // tslint:enable: no-unsafe-any\n }\n\n /**\n * Angular's exceptionHandler for Sentry integration\n */\n // tslint:disable-next-line: no-unsafe-any\n private _$exceptionHandlerDecorator($delegate: any): any {\n return (exception: Error, cause?: string) => {\n const hub = this._getCurrentHub && this._getCurrentHub();\n\n if (hub && hub.getIntegration(Angular)) {\n hub.withScope(scope => {\n if (cause) {\n scope.setExtra('cause', cause);\n }\n\n scope.addEventProcessor((event: Event) => {\n const ex = event.exception && event.exception.values && event.exception.values[0];\n\n if (ex) {\n const matches = angularPattern.exec(ex.value || '');\n\n if (matches) {\n // This type now becomes something like: $rootScope:inprog\n ex.type = matches[1];\n ex.value = matches[2];\n event.message = `${ex.type}: ${ex.value}`;\n // auto set a new tag specifically for the angular error url\n event.extra = {\n ...event.extra,\n angularDocs: matches[3].substr(0, 250),\n };\n }\n }\n\n return event;\n });\n\n hub.captureException(exception);\n });\n }\n // tslint:disable-next-line: no-unsafe-any\n $delegate(exception, cause);\n };\n }\n}\n","import { EventProcessor, Hub, Integration, Severity } from '@sentry/types';\nimport { fill, getGlobalObject, safeJoin } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** Send Console API calls as Sentry Events */\nexport class CaptureConsole implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = CaptureConsole.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'CaptureConsole';\n\n /**\n * @inheritDoc\n */\n private readonly _levels: string[] = ['log', 'info', 'warn', 'error', 'debug', 'assert'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: { levels?: string[] } = {}) {\n if (options.levels) {\n this._levels = options.levels;\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (!('console' in global)) {\n return;\n }\n\n this._levels.forEach((level: string) => {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, (originalConsoleLevel: () => any) => (...args: any[]) => {\n const hub = getCurrentHub();\n\n if (hub.getIntegration(CaptureConsole)) {\n hub.withScope(scope => {\n scope.setLevel(Severity.fromString(level));\n scope.setExtra('arguments', args);\n scope.addEventProcessor(event => {\n event.logger = 'console';\n return event;\n });\n\n let message = safeJoin(args, ' ');\n if (level === 'assert') {\n if (args[0] === false) {\n message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n hub.captureMessage(message);\n }\n } else {\n hub.captureMessage(message);\n }\n });\n }\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n });\n });\n }\n}\n","import { Event, EventHint, EventProcessor, Hub, Integration } from '@sentry/types';\nimport { consoleSandbox } from '@sentry/utils';\n\n/** JSDoc */\ninterface DebugOptions {\n stringify?: boolean;\n debugger?: boolean;\n}\n\n/** JSDoc */\nexport class Debug implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Debug.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'Debug';\n\n /** JSDoc */\n private readonly _options: DebugOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: DebugOptions) {\n this._options = {\n debugger: false,\n stringify: false,\n ...options,\n };\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(Debug);\n if (self) {\n // tslint:disable:no-console\n // tslint:disable:no-debugger\n if (self._options.debugger) {\n debugger;\n }\n\n consoleSandbox(() => {\n if (self._options.stringify) {\n console.log(JSON.stringify(event, null, 2));\n if (hint) {\n console.log(JSON.stringify(hint, null, 2));\n }\n } else {\n console.log(event);\n if (hint) {\n console.log(hint);\n }\n }\n });\n }\n return event;\n });\n }\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (self._shouldDropEvent(currentEvent, self._previousEvent)) {\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n\n /** JSDoc */\n private _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (this._isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (this._isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n }\n\n /** JSDoc */\n private _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n }\n\n /** JSDoc */\n private _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n }\n\n /** JSDoc */\n private _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = this._getFramesFromEvent(currentEvent);\n let previousFrames = this._getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n /** JSDoc */\n private _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n }\n\n /** JSDoc */\n private _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = this._getExceptionFromEvent(previousEvent);\n const currentException = this._getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n }\n\n /** JSDoc */\n private _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n }\n}\n","import { EventProcessor, Hub, Integration } from '@sentry/types';\nimport { getGlobalObject, isInstanceOf, logger } from '@sentry/utils';\n\n/** JSDoc */\nexport class Ember implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Ember.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'Ember';\n\n /**\n * @inheritDoc\n */\n private readonly _Ember: any; // tslint:disable-line:variable-name\n\n /**\n * @inheritDoc\n */\n public constructor(options: { Ember?: any } = {}) {\n // tslint:disable-next-line: no-unsafe-any\n this._Ember = options.Ember || getGlobalObject().Ember;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n // tslint:disable:no-unsafe-any\n\n if (!this._Ember) {\n logger.error('EmberIntegration is missing an Ember instance');\n return;\n }\n\n const oldOnError = this._Ember.onerror;\n\n this._Ember.onerror = (error: Error): void => {\n if (getCurrentHub().getIntegration(Ember)) {\n getCurrentHub().captureException(error, { originalException: error });\n }\n\n if (typeof oldOnError === 'function') {\n oldOnError.call(this._Ember, error);\n } else if (this._Ember.testing) {\n throw error;\n }\n };\n\n this._Ember.RSVP.on(\n 'error',\n (reason: any): void => {\n if (getCurrentHub().getIntegration(Ember)) {\n getCurrentHub().withScope(scope => {\n if (isInstanceOf(reason, Error)) {\n scope.setExtra('context', 'Unhandled Promise error detected');\n getCurrentHub().captureException(reason, { originalException: reason });\n } else {\n scope.setExtra('reason', reason);\n getCurrentHub().captureMessage('Unhandled Promise error detected');\n }\n });\n }\n },\n );\n }\n}\n","import { Event, EventHint, EventProcessor, ExtendedError, Hub, Integration } from '@sentry/types';\nimport { isError, isPlainObject, logger, normalize } from '@sentry/utils';\n\n/** JSDoc */\ninterface ExtraErrorDataOptions {\n depth?: number;\n}\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class ExtraErrorData implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = ExtraErrorData.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'ExtraErrorData';\n\n /**\n * @inheritDoc\n */\n public constructor(private readonly _options: ExtraErrorDataOptions = { depth: 3 }) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(ExtraErrorData);\n if (!self) {\n return event;\n }\n return self.enhanceEventWithErrorData(event, hint);\n });\n }\n\n /**\n * Attaches extracted information from the Error object to extra field in the Event\n */\n public enhanceEventWithErrorData(event: Event, hint?: EventHint): Event {\n if (!hint || !hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const name = (hint.originalException as ExtendedError).name || hint.originalException.constructor.name;\n\n const errorData = this._extractErrorData(hint.originalException as ExtendedError);\n\n if (errorData) {\n let contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, this._options.depth);\n if (isPlainObject(normalizedErrorData)) {\n contexts = {\n ...event.contexts,\n [name]: {\n ...normalizedErrorData,\n },\n };\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n }\n\n /**\n * Extract extra information from the Error object\n */\n private _extractErrorData(error: ExtendedError): { [key: string]: unknown } | null {\n let result = null;\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = ['name', 'message', 'stack', 'line', 'column', 'fileName', 'lineNumber', 'columnNumber'];\n const errorKeys = Object.getOwnPropertyNames(error).filter(key => nativeKeys.indexOf(key) === -1);\n\n if (errorKeys.length) {\n const extraErrorInfo: { [key: string]: unknown } = {};\n for (const key of errorKeys) {\n let value = error[key];\n if (isError(value)) {\n value = (value as Error).toString();\n }\n // tslint:disable:no-unsafe-any\n extraErrorInfo[key] = value;\n }\n result = extraErrorInfo;\n }\n } catch (oO) {\n logger.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return result;\n }\n}\n","import { Event, EventProcessor, Hub, Integration, StackFrame, Stacktrace } from '@sentry/types';\nimport { basename, relative } from '@sentry/utils';\n\ntype StackFrameIteratee = (frame: StackFrame) => StackFrame;\n\n/** Rewrite event frames paths */\nexport class RewriteFrames implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = RewriteFrames.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'RewriteFrames';\n\n /**\n * @inheritDoc\n */\n private readonly _root?: string;\n\n /**\n * @inheritDoc\n */\n private readonly _iteratee: StackFrameIteratee = (frame: StackFrame) => {\n if (!frame.filename) {\n return frame;\n }\n // Check if the frame filename begins with `/` or a Windows-style prefix such as `C:\\`\n const isWindowsFrame = /^[A-Z]:\\\\/.test(frame.filename);\n const startsWithSlash = /^\\//.test(frame.filename);\n if (frame.filename && (isWindowsFrame || startsWithSlash)) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[A-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = this._root ? relative(this._root, filename) : basename(filename);\n frame.filename = `app:///${base}`;\n }\n return frame;\n };\n\n /**\n * @inheritDoc\n */\n public constructor(options: { root?: string; iteratee?: StackFrameIteratee } = {}) {\n if (options.root) {\n this._root = options.root;\n }\n if (options.iteratee) {\n this._iteratee = options.iteratee;\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor(event => {\n const self = getCurrentHub().getIntegration(RewriteFrames);\n if (self) {\n return self.process(event);\n }\n return event;\n });\n }\n\n /** JSDoc */\n public process(event: Event): Event {\n if (event.exception && Array.isArray(event.exception.values)) {\n return this._processExceptionsEvent(event);\n }\n\n if (event.stacktrace) {\n return this._processStacktraceEvent(event);\n }\n\n return event;\n }\n\n /** JSDoc */\n private _processExceptionsEvent(event: Event): Event {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // tslint:disable-next-line:no-non-null-assertion\n values: event.exception!.values!.map(value => ({\n ...value,\n stacktrace: this._processStacktrace(value.stacktrace),\n })),\n },\n };\n } catch (_oO) {\n return event;\n }\n }\n\n /** JSDoc */\n private _processStacktraceEvent(event: Event): Event {\n try {\n return {\n ...event,\n stacktrace: this._processStacktrace(event.stacktrace),\n };\n } catch (_oO) {\n return event;\n }\n }\n\n /** JSDoc */\n private _processStacktrace(stacktrace?: Stacktrace): Stacktrace {\n return {\n ...stacktrace,\n frames: stacktrace && stacktrace.frames && stacktrace.frames.map(f => this._iteratee(f)),\n };\n }\n}\n","import { Event, EventProcessor, Hub, Integration } from '@sentry/types';\n\n/** This function adds duration since Sentry was initialized till the time event was sent */\nexport class SessionTiming implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = SessionTiming.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'SessionTiming';\n\n /** Exact time Client was initialized expressed in milliseconds since Unix Epoch. */\n protected readonly _startTime: number = Date.now();\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor(event => {\n const self = getCurrentHub().getIntegration(SessionTiming);\n if (self) {\n return self.process(event);\n }\n return event;\n });\n }\n\n /**\n * @inheritDoc\n */\n public process(event: Event): Event {\n const now = Date.now();\n\n return {\n ...event,\n extra: {\n ...event.extra,\n ['session:start']: this._startTime,\n ['session:duration']: now - this._startTime,\n ['session:end']: now,\n },\n };\n }\n}\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\n\n/** Add node transaction to the event */\nexport class Transaction implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Transaction.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'Transaction';\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor(event => {\n const self = getCurrentHub().getIntegration(Transaction);\n if (self) {\n return self.process(event);\n }\n return event;\n });\n }\n\n /**\n * @inheritDoc\n */\n public process(event: Event): Event {\n const frames = this._getFramesFromEvent(event);\n\n // use for loop so we don't have to reverse whole frames array\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame.in_app === true) {\n event.transaction = this._getTransaction(frame);\n break;\n }\n }\n\n return event;\n }\n\n /** JSDoc */\n private _getFramesFromEvent(event: Event): StackFrame[] {\n const exception = event.exception && event.exception.values && event.exception.values[0];\n return (exception && exception.stacktrace && exception.stacktrace.frames) || [];\n }\n\n /** JSDoc */\n private _getTransaction(frame: StackFrame): string {\n return frame.module || frame.function ? `${frame.module || '?'}/${frame.function || '?'}` : '';\n }\n}\n","import { EventProcessor, Hub, Integration } from '@sentry/types';\nimport { getGlobalObject, isPlainObject, logger } from '@sentry/utils';\n\n/** JSDoc */\ninterface Metadata {\n [key: string]: any;\n componentName?: string;\n propsData?: {\n [key: string]: any;\n };\n lifecycleHook?: string;\n}\n\n/** JSDoc */\nexport class Vue implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Vue.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'Vue';\n\n /**\n * @inheritDoc\n */\n private readonly _Vue: any; // tslint:disable-line:variable-name\n\n /**\n * When set to false, Sentry will suppress reporting all props data\n * from your Vue components for privacy concerns.\n */\n private readonly _attachProps: boolean = true;\n\n /**\n * When set to true, original Vue's `logError` will be called as well.\n * https://github.com/vuejs/vue/blob/c2b1cfe9ccd08835f2d99f6ce60f67b4de55187f/src/core/util/error.js#L38-L48\n */\n private readonly _logErrors: boolean = false;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { Vue?: any; attachProps?: boolean; logErrors?: boolean } = {}) {\n // tslint:disable-next-line: no-unsafe-any\n this._Vue = options.Vue || getGlobalObject().Vue;\n\n if (options.logErrors !== undefined) {\n this._logErrors = options.logErrors;\n }\n if (options.attachProps === false) {\n this._attachProps = false;\n }\n }\n\n /** JSDoc */\n private _formatComponentName(vm: any): string {\n // tslint:disable:no-unsafe-any\n\n if (vm.$root === vm) {\n return 'root instance';\n }\n const name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name;\n return (\n (name ? `component <${name}>` : 'anonymous component') +\n (vm._isVue && vm.$options.__file ? ` at ${vm.$options.__file}` : '')\n );\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n // tslint:disable:no-unsafe-any\n\n if (!this._Vue || !this._Vue.config) {\n logger.error('VueIntegration is missing a Vue instance');\n return;\n }\n\n const oldOnError = this._Vue.config.errorHandler;\n\n this._Vue.config.errorHandler = (error: Error, vm: { [key: string]: any }, info: string): void => {\n const metadata: Metadata = {};\n\n if (isPlainObject(vm)) {\n metadata.componentName = this._formatComponentName(vm);\n\n if (this._attachProps) {\n metadata.propsData = vm.$options.propsData;\n }\n }\n\n if (info !== void 0) {\n metadata.lifecycleHook = info;\n }\n\n if (getCurrentHub().getIntegration(Vue)) {\n // This timeout makes sure that any breadcrumbs are recorded before sending it off the sentry\n setTimeout(() => {\n getCurrentHub().withScope(scope => {\n scope.setContext('vue', metadata);\n getCurrentHub().captureException(error);\n });\n });\n }\n\n if (typeof oldOnError === 'function') {\n oldOnError.call(this._Vue, error, vm, info);\n }\n\n if (this._logErrors) {\n this._Vue.util.warn(`Error in ${info}: \"${error.toString()}\"`, vm);\n // tslint:disable-next-line:no-console\n console.error(error);\n }\n };\n }\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./OttimizzazioneLineare.js\") );\n\t\t\t}, \"route-OttimizzazioneLineare\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import { consoleSandbox, getGlobalObject } from './misc';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** JSDoc */\nclass Logger {\n /** JSDoc */\n private _enabled: boolean;\n\n /** JSDoc */\n public constructor() {\n this._enabled = false;\n }\n\n /** JSDoc */\n public disable(): void {\n this._enabled = false;\n }\n\n /** JSDoc */\n public enable(): void {\n this._enabled = true;\n }\n\n /** JSDoc */\n public log(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.log(`${PREFIX}[Log]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n\n /** JSDoc */\n public warn(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n\n /** JSDoc */\n public error(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.error(`${PREFIX}[Error]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nconst logger = (global.__SENTRY__.logger as Logger) || (global.__SENTRY__.logger = new Logger());\n\nexport { logger };\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./CalcoloNumerico.js\") );\n\t\t\t}, \"route-CalcoloNumerico\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n // tslint:disable:no-unused-expression\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // It really needs 1 argument, not 0.\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore\n // tslint:disable:no-unused-expression\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n // tslint:disable:no-unused-expression\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n // tslint:disable-next-line:no-unused-expression\n new Headers();\n // tslint:disable-next-line:no-unused-expression\n new Request('');\n // tslint:disable-next-line:no-unused-expression\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // tslint:disable-next-line:no-unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // tslint:disable-next-line:no-unbound-method deprecation\n if (doc && typeof (doc.createElement as unknown) === `function`) {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // tslint:disable-next-line:no-unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n // tslint:disable-next-line: no-unsafe-any\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\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\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n // tslint:disable:no-unused-expression\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\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 const global = getGlobalObject();\n const chrome = (global as any).chrome;\n // tslint:disable-next-line:no-unsafe-any\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/** JSDoc */\nexport enum Severity {\n /** JSDoc */\n Fatal = 'fatal',\n /** JSDoc */\n Error = 'error',\n /** JSDoc */\n Warning = 'warning',\n /** JSDoc */\n Log = 'log',\n /** JSDoc */\n Info = 'info',\n /** JSDoc */\n Debug = 'debug',\n /** JSDoc */\n Critical = 'critical',\n}\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\nexport namespace Severity {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n export function fromString(level: string): Severity {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./MingwInstall.js\") );\n\t\t\t}, \"route-MingwInstall\");\n\t\t}\n\n\t\texport default Async(load);\n\t","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// Import debugging tools\nimport AlgoritmiEStruttureDati from \"./routes/AlgoritmiEStruttureDati\";\n\nlet Sentry = null;\nif(process.env.NODE_ENV === \"development\") {\n\tconsole.debug(\"Initializing Preact Debugger...\")\n\trequire(\"preact/debug\");\n}\nelse if(process.env.NODE_ENV === \"production\") {\n\tconsole.debug(\"Initializing Sentry...\")\n\tSentry = require(\"@sentry/browser\");\n\tlet SentryIntegrations = require(\"@sentry/integrations\")\n\t// noinspection JSUnresolvedVariable\n\tSentry.init({\n\t\tdsn: \"https://9f5089346fd14e04a6f412638474dfec@o40131.ingest.sentry.io/5255500\",\n\t\trelease: process.env.RELEASE,\n\t\tenvironment: \"production\",\n\t\tbeforeSend(event, hint) {\n\t\t\tif (event.exception) {\n\t\t\t\tSentry.showReportDialog({ eventId: event.event_id });\n\t\t\t}\n\t\t\treturn event;\n\t\t}\n\t});\n}\n\n// noinspection ES6UnusedImports\nimport _style from './index.less';\n// noinspection ES6UnusedImports\nimport _manifest from './meta/manifest.json';\n// noinspection ES6UnusedImports\nimport _cname from './meta/CNAME';\n// noinspection ES6UnusedImports\nimport _nojekyll from './meta/.nojekyll';\n\nimport Router from 'preact-router';\nimport {createHashHistory} from \"history\";\nimport Home from './routes/Home';\nimport Fisica from './routes/Fisica';\nimport VlDiGeometria from './routes/VlDiGeometria';\nimport MingwInstall from './routes/MingwInstall';\nimport Footer from './components/Layout/Footer';\nimport Statistica from './routes/Statistica';\nimport OttimizzazioneLineare from \"./routes/OttimizzazioneLineare\";\nimport BasiDiDati from './routes/BasiDiDati';\nimport CalcoloNumerico from './routes/CalcoloNumerico';\nimport ApprendimentoSistemiArtificiali from \"./routes/ApprendimentoSistemiArtificiali\";\nimport LatexRenderColor from \"./contexts/LatexRenderColor\";\n\n// noinspection JSUnusedGlobalSymbols\nexport default function(props) {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t

Appuntiweb di Steffo

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./ApprendimentoSistemiArtificiali.js\") );\n\t\t\t}, \"route-ApprendimentoSistemiArtificiali\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./AlgoritmiEStruttureDati.js\") );\n\t\t\t}, \"route-AlgoritmiEStruttureDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\n\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n colno = ll; // tslint:disable-line:no-parameter-reassignment\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n\n return newLine;\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 Joined values\n */\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return (pattern as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./Home.js\") );\n\t\t\t}, \"route-Home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../index').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
{reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (typeof childVNode == 'string' || typeof childVNode == 'number') {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._dom != null || childVNode._component != null) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tnewDom = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tlet nextDom;\n\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t// can clean up the property\n\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t} else if (\n\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\tnewDom != oldDom ||\n\t\t\t\tnewDom.parentNode == null\n\t\t\t) {\n\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\tnextDom = null;\n\t\t\t\t} else {\n\t\t\t\t\t// `j} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\ti !== dom.value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.childNodes.length\n\t\t\t? EMPTY_ARR.slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\tlet normalizedProps = {};\n\tfor (const i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\tcontext.Provider._contextRef = context;\n\n\treturn context;\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(inlineDataElement.innerHTML).preRenderData || preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === location.pathname;\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./Statistica.js\") );\n\t\t\t}, \"route-Statistica\");\n\t\t}\n\n\t\texport default Async(load);\n\t","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","import { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName, htmlTreeAsString } from './misc';\nimport { truncate } from './string';\n\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacement: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacement(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n // tslint:disable-next-line:strict-type-predicates\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(\n // tslint:disable-next-line:no-unsafe-any\n key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`,\n )\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all it's attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order to be usable by the serializer\n */\nfunction getWalkSource(\n value: any,\n): {\n [key: string]: any;\n} {\n if (isError(value)) {\n const error = value as ExtendedError;\n const err: {\n stack: string | undefined;\n message: string;\n name: string;\n [key: string]: any;\n } = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n\n for (const i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n\n return err;\n }\n\n if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as SimpleEvent;\n\n const source: {\n [key: string]: any;\n } = {};\n\n source.type = event.type;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event.target)\n ? htmlTreeAsString(event.target)\n : Object.prototype.toString.call(event.target);\n } catch (_oO) {\n source.target = '';\n }\n\n try {\n source.currentTarget = isElement(event.currentTarget)\n ? htmlTreeAsString(event.currentTarget)\n : Object.prototype.toString.call(event.currentTarget);\n } catch (_oO) {\n source.currentTarget = '';\n }\n\n // tslint:disable-next-line:strict-type-predicates\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event.detail;\n }\n\n for (const i in event) {\n if (Object.prototype.hasOwnProperty.call(event, i)) {\n source[i] = event;\n }\n }\n\n return source;\n }\n\n return value as {\n [key: string]: any;\n };\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // tslint:disable-next-line:no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const serialized = normalize(object, depth);\n\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return serialized as T;\n}\n\n/** Transforms any input value into a string form, either primitive value or a type of the input */\nfunction serializeValue(value: any): any {\n const type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n\n const normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction normalizeValue(value: T, key?: any): T | string {\n if (key === 'domain' && value && typeof value === 'object' && ((value as unknown) as { _events: any })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n if (typeof (global as any) !== 'undefined' && (value as unknown) === global) {\n return '[Global]';\n }\n\n if (typeof (window as any) !== 'undefined' && (value as unknown) === window) {\n return '[Window]';\n }\n\n if (typeof (document as any) !== 'undefined' && (value as unknown) === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n // tslint:disable-next-line:no-tautology-expression\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n return value;\n}\n\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\nexport function walk(key: string, value: any, depth: number = +Infinity, memo: Memo = new Memo()): any {\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n\n // If value implements `toJSON` method, call it and return early\n // tslint:disable:no-unsafe-any\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n // tslint:enable:no-unsafe-any\n\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n const normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n const source = getWalkSource(value);\n\n // Create an accumulator that will act as a parent for all future itterations of that branch\n const acc = Array.isArray(value) ? [] : {};\n\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n\n // Walk all keys of the source\n for (const innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n (acc as { [key: string]: any })[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n\n // Return accumulated values\n return acc;\n}\n\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\nexport function normalize(input: any, depth?: number): any {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth)));\n } catch (_oO) {\n return '**non-serializable**';\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n // tslint:disable:strict-type-predicates\n const keys = Object.keys(getWalkSource(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val: T): T {\n if (isPlainObject(val)) {\n const obj = val as { [key: string]: any };\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n","import style from './Footer.less';\nimport { Component } from 'preact';\n\nexport default function(props) {\n\treturn (\n\t\t
\n\t\t\t© {new Date().getFullYear()}\n\t\t\t - \n\t\t\tStefano Pigozzi\n\t\t\t - \n\t\t\tCC BY-SA 4.0\n\t\t\t - \n\t\t\tuni.steffo.eu {process.env.RELEASE}\n\t\t\t - \n\t\t\tSupportami\n\t\t
\n\t);\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","// This will be replaced\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./Fisica.js\") );\n\t\t\t}, \"route-Fisica\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import {\n Breadcrumb,\n Event,\n EventHint,\n EventProcessor,\n Scope as ScopeInterface,\n Severity,\n Span,\n User,\n} from '@sentry/types';\nimport { getGlobalObject, isThenable, SyncPromise, timestampWithMs } from '@sentry/utils';\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifiying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: string } = {};\n\n /** Extra */\n protected _extra: { [key: string]: any } = {};\n\n /** Contexts */\n protected _context: { [key: string]: any } = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction */\n protected _transaction?: string;\n\n /** Span */\n protected _span?: Span;\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(() => {\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n });\n }\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n // tslint:disable-next-line:strict-type-predicates\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n (result as PromiseLike)\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: string }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: string): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: { [key: string]: any }): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: any): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransaction(transaction?: string): this {\n this._transaction = transaction;\n if (this._span) {\n (this._span as any).transaction = transaction;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: { [key: string]: any } | null): this {\n this._context = { ...this._context, [key]: context };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Internal getter for Span, used in Hub.\n * @hidden\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._context = { ...scope._context };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transaction = scope._transaction;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n }\n return newScope;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._context = {};\n this._level = undefined;\n this._transaction = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const mergedBreadcrumb = {\n timestamp: timestampWithMs(),\n ...breadcrumb,\n };\n\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? [...this._breadcrumbs, mergedBreadcrumb].slice(-maxBreadcrumbs)\n : [...this._breadcrumbs, mergedBreadcrumb];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._context && Object.keys(this._context).length) {\n event.contexts = { ...this._context, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transaction) {\n event.transaction = this._transaction;\n }\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n}\n\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n const global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n Event,\n EventHint,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Severity,\n Span,\n SpanContext,\n User,\n} from '@sentry/types';\nimport { consoleSandbox, getGlobalObject, isNodeEnv, logger, timestampWithMs, uuid4 } from '@sentry/utils';\n\nimport { Carrier, Layer } from './interfaces';\nimport { Scope } from './scope';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be incresed when the global interface\n * changes a and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 3;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this._stack.push({ client, scope });\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _invokeClient(method: M, ...args: any[]): void {\n const top = this.getStackTop();\n if (top && top.client && top.client[method]) {\n (top.client as any)[method](...args, top.scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const stack = this.getStack();\n const parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n const scope = Scope.clone(parentScope);\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n return this.getStack().pop() !== undefined;\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const top = this.getStackTop();\n\n if (!top.scope || !top.client) {\n return;\n }\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (top.client.getOptions && top.client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) {\n return;\n }\n\n const timestamp = timestampWithMs();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) {\n return;\n }\n\n top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: string }): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: { [key: string]: any }): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: string): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: any): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const top = this.getStackTop();\n if (top.scope && top.client) {\n callback(top.scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) {\n return null;\n }\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(spanOrSpanContext?: Span | SpanContext, forceNoChild: boolean = false): Span {\n return this._callExtensionMethod('startSpan', spanOrSpanContext, forceNoChild);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/** Returns the global shim registry. */\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, fallback to the registry if one doesnt exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const property = 'domain';\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (!sentry || !sentry.extensions || !sentry.extensions[property]) {\n return getHubFromCarrier(registry);\n }\n const domain = sentry.extensions[property] as any;\n const activeDomain = domain.active;\n\n // If there no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or its an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return true;\n }\n return false;\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return carrier.__SENTRY__.hub;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) {\n return false;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n","export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\n// tslint:disable: no-unsafe-any\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n// tslint:enable: no-unsafe-any\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport interface IntegrationIndex {\n [key: string]: Integration;\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n let integrations: Integration[] = [];\n if (Array.isArray(userIntegrations)) {\n const userIntegrationsNames = userIntegrations.map(i => i.name);\n const pickedIntegrationsNames: string[] = [];\n\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(defaultIntegration => {\n if (\n userIntegrationsNames.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames.indexOf(defaultIntegration.name) === -1\n ) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames.push(defaultIntegration.name);\n }\n });\n\n // Don't add same user integration twice\n userIntegrations.forEach(userIntegration => {\n if (pickedIntegrationsNames.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames.push(userIntegration.name);\n }\n });\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n } else {\n integrations = [...defaultIntegrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/** Setup given integration */\nexport function setupIntegration(integration: Integration): void {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(`Integration installed: ${integration.name}`);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options: O): IntegrationIndex {\n const integrations: IntegrationIndex = {};\n getIntegrationsToSetup(options).forEach(integration => {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n","// tslint:disable:object-literal-sort-keys\n\n/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\n\n/**\n * An object representing a single stack frame.\n * {Object} StackFrame\n * {string} url The JavaScript or HTML file URL.\n * {string} func The function name, or empty for anonymous functions (if guessing did not work).\n * {string[]?} args The arguments passed to the function, if known.\n * {number=} line The line number, if known.\n * {number=} column The column number, if known.\n * {string[]} context An array of source code lines; the middle element corresponds to the correct line#.\n */\nexport interface StackFrame {\n url: string;\n func: string;\n args: string[];\n line: number | null;\n column: number | null;\n}\n\n/**\n * An object representing a JavaScript stack trace.\n * {Object} StackTrace\n * {string} name The name of the thrown exception.\n * {string} message The exception error message.\n * {TraceKit.StackFrame[]} stack An array of stack frames.\n */\nexport interface StackTrace {\n name: string;\n message: string;\n mechanism?: string;\n stack: StackFrame[];\n failed?: boolean;\n}\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n/** JSDoc */\nexport function computeStackTrace(ex: any): StackTrace {\n // tslint:disable:no-unsafe-any\n\n let stack = null;\n const popSize: number = ex && ex.framesToPop;\n\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n\n/** JSDoc */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction computeStackTraceFromStackProp(ex: any): StackTrace | null {\n // tslint:disable:no-conditional-assignment\n if (!ex || !ex.stack) {\n return null;\n }\n\n const stack = [];\n const lines = ex.stack.split('\\n');\n let isEval;\n let submatch;\n let parts;\n let element;\n\n for (let i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n 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 // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\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 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[1] = parts[1] || `eval`;\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n } else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\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 as number) + 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 stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/** JSDoc */\nfunction computeStackTraceFromStacktraceProp(ex: any): StackTrace | null {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace;\n const opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n const opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i;\n const lines = stacktrace.split('\\n');\n const stack = [];\n let parts;\n\n for (let line = 0; line < lines.length; line += 2) {\n // tslint:disable:no-conditional-assignment\n let element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n } else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace: StackTrace, popSize: number): StackTrace {\n try {\n return {\n ...stacktrace,\n stack: stacktrace.stack.slice(popSize),\n };\n } catch (e) {\n return stacktrace;\n }\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: any): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n","import { Event, Exception, StackFrame } from '@sentry/types';\nimport { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\n\nimport { computeStackTrace, StackFrame as TraceKitStackFrame, StackTrace as TraceKitStackTrace } from './tracekit';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): Exception {\n const frames = prepareFramesForEvent(stacktrace.stack);\n\n const exception: Exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n\n if (frames && frames.length) {\n exception.stacktrace = { frames };\n }\n\n // tslint:disable-next-line:strict-type-predicates\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception: {}, syntheticException?: Error, rejection?: boolean): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n rejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace: TraceKitStackTrace): Event {\n const exception = exceptionFromStacktrace(stacktrace);\n\n return {\n exception: {\n values: [exception],\n },\n };\n}\n\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] {\n if (!stack || !stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].func || '';\n const lastFrameFunction = localStack[localStack.length - 1].func || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .map(\n (frame: TraceKitStackFrame): StackFrame => ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }),\n )\n .slice(0, STACKTRACE_LIMIT)\n .reverse();\n}\n","import { Event } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n} from '@sentry/utils';\n\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n\n/** JSDoc */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n options: {\n rejection?: boolean;\n attachStacktrace?: boolean;\n } = {},\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n const domException = exception as DOMException;\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n return event;\n }\n if (isError(exception as Error)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it is plain Object or Event, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n const objectException = exception as {};\n event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, options);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n// this._options.attachStacktrace\n/** JSDoc */\nexport function eventFromString(\n input: string,\n syntheticException?: Error,\n options: {\n attachStacktrace?: boolean;\n } = {},\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (options.attachStacktrace && syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n","import { captureException, withScope } from '@sentry/core';\nimport { Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue } from '@sentry/utils';\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n): any {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n const sentryWrapped: WrappedFunction = function(this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n // tslint:disable:no-unsafe-any\n try {\n // tslint:disable-next-line:strict-type-predicates\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n // tslint:enable:no-unsafe-any\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n const processedEvent = { ...event };\n\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n\n processedEvent.extra = {\n ...processedEvent.extra,\n arguments: args,\n };\n\n return processedEvent;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // tslint:disable-line:no-empty\n\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n } catch (_oO) {\n /*no-empty*/\n }\n\n return sentryWrapped;\n}\n","/* tslint:disable:only-arrow-functions no-unsafe-any */\n\nimport { WrappedFunction } from '@sentry/types';\n\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getFunctionName, getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\n/** Object describing handler that will be triggered for a given `type` of instrumentation */\ninterface InstrumentHandler {\n type: InstrumentHandlerType;\n callback: InstrumentHandlerCallback;\n}\ntype InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\ntype InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler: InstrumentHandler): void {\n // tslint:disable-next-line:strict-type-predicates\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n (handlers[handler.type] as InstrumentHandlerCallback[]).push(handler.callback);\n instrument(handler.type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(\n handler,\n )}\\nError: ${e}`,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function(level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function(originalConsoleLevel: () => any): Function {\n return function(...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function(originalFetch: () => void): () => void {\n return function(...args: any[]): void {\n const commonHandlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...commonHandlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n error,\n });\n throw error;\n },\n );\n };\n });\n}\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n };\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function(originalOpen: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const url = args[1];\n this.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && this.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function(originalSend: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const xhr = this; // tslint:disable-line:no-this-assignment\n const commonHandlerData = {\n args,\n startTimestamp: Date.now(),\n xhr,\n };\n\n triggerHandlers('xhr', {\n ...commonHandlerData,\n });\n\n xhr.addEventListener('readystatechange', function(): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n } catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function(this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function(this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\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 global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach((target: string) => {\n const proto = (global as any)[target] && (global as any)[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function(\n original: () => void,\n ): (\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerOrEventListenerObject, capture?: boolean, secure?: boolean) => void {\n if (fn && (fn as EventListenerObject).handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n } else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n\n return original.call(this, eventName, fn, options);\n };\n });\n\n fill(proto, 'removeEventListener', function(\n original: () => void,\n ): (\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) => () => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n let callback = fn as WrappedFunction;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n });\n}\n\nconst debounceDuration: number = 1000;\nlet debounceTimer: number = 0;\nlet keypressTimeout: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name: string, handler: Function, debounce: boolean = false): (event: Event) => void {\n return (event: Event) => {\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 keypressTimeout = undefined;\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 (!event || lastCapturedEvent === event) {\n return;\n }\n\n lastCapturedEvent = event;\n\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n if (debounce) {\n debounceTimer = setTimeout(() => {\n handler({ event, name });\n });\n } else {\n handler({ event, name });\n }\n };\n}\n\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler: Function): (event: Event) => void {\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 (event: Event) => {\n let target;\n\n try {\n target = event.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\n const tagName = target && (target as HTMLElement).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 (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !(target as HTMLElement).isContentEditable)) {\n return;\n }\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n\n keypressTimeout = (setTimeout(() => {\n keypressTimeout = undefined;\n }, debounceDuration) as any) as number;\n };\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function(msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function(e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","import { API, getCurrentHub } from '@sentry/core';\nimport { Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n logger,\n parseUrl,\n safeJoin,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\n\n/**\n * @hidden\n */\nexport interface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n };\n}\n\n/** JSDoc */\ninterface BreadcrumbIntegrations {\n console?: boolean;\n dom?: boolean;\n fetch?: boolean;\n history?: boolean;\n sentry?: boolean;\n xhr?: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /** JSDoc */\n private readonly _options: BreadcrumbIntegrations;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: BreadcrumbIntegrations) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Creates breadcrumbs from console API calls\n */\n private _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: Severity.fromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n }\n\n /**\n * Creates breadcrumbs from DOM API calls\n */\n private _domBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node)\n : htmlTreeAsString((handlerData.event as unknown) as Node);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n },\n );\n }\n\n /**\n * Creates breadcrumbs from XHR API calls\n */\n private _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: handlerData.xhr.__sentry_xhr__,\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n },\n );\n\n return;\n }\n\n // We only capture issued sentry requests\n if (this._options.sentry && handlerData.xhr.__sentry_own_request__) {\n addSentryBreadcrumb(handlerData.args[0]);\n }\n }\n\n /**\n * Creates breadcrumbs from fetch API calls\n */\n private _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n const client = getCurrentHub().getClient();\n const dsn = client && client.getDsn();\n if (this._options.sentry && dsn) {\n const filterUrl = new API(dsn).getStoreEndpoint();\n // if Sentry key appears in URL, don't capture it as a request\n // but rather as our own 'sentry' type breadcrumb\n if (\n filterUrl &&\n handlerData.fetchData.url.indexOf(filterUrl) !== -1 &&\n handlerData.fetchData.method === 'POST' &&\n handlerData.args[1] &&\n handlerData.args[1].body\n ) {\n addSentryBreadcrumb(handlerData.args[1].body);\n return;\n }\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n }\n\n /**\n * Creates breadcrumbs from history API calls\n */\n private _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\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 // tslint:disable-next-line:no-parameter-reassignment\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._consoleBreadcrumb(...args);\n },\n type: 'console',\n });\n }\n if (this._options.dom) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._domBreadcrumb(...args);\n },\n type: 'dom',\n });\n }\n if (this._options.xhr) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._xhrBreadcrumb(...args);\n },\n type: 'xhr',\n });\n }\n if (this._options.fetch) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._fetchBreadcrumb(...args);\n },\n type: 'fetch',\n });\n }\n if (this._options.history) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._historyBreadcrumb(...args);\n },\n type: 'history',\n });\n }\n }\n}\n\n/**\n * Create a breadcrumb of `sentry` from the events themselves\n */\nfunction addSentryBreadcrumb(serializedData: string): void {\n // There's always something that can go wrong with deserialization...\n try {\n const event = JSON.parse(serializedData);\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level || Severity.fromString('error'),\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n } catch (_oO) {\n logger.error('Error while adding sentry type breadcrumb');\n }\n}\n","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject, SyncPromise } from '@sentry/utils';\n\nimport { BrowserOptions } from './backend';\nimport { BrowserClient, ReportDialogOptions } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n initAndBind(BrowserClient, options);\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n const client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return SyncPromise.reject(false);\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return SyncPromise.reject(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nexport function wrap(fn: Function): any {\n return internalWrap(fn)(); // tslint:disable-line:no-unsafe-any\n}\n","/** The status of an event. */\nexport enum Status {\n /** The status could not be determined. */\n Unknown = 'unknown',\n /** The event was skipped due to configuration or callbacks. */\n Skipped = 'skipped',\n /** The event was sent to Sentry successfully. */\n Success = 'success',\n /** The client is currently rate limited and will try again later. */\n RateLimit = 'rate_limit',\n /** The event could not be processed. */\n Invalid = 'invalid',\n /** A server-side error ocurred during submission. */\n Failed = 'failed',\n}\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\nexport namespace Status {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n export function fromHttpCode(code: number): Status {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n\n if (code === 429) {\n return Status.RateLimit;\n }\n\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n\n if (code >= 500) {\n return Status.Failed;\n }\n\n return Status.Unknown;\n }\n}\n","import { isThenable } from './is';\n\n/** SyncPromise internal states */\nenum States {\n /** Pending */\n PENDING = 'PENDING',\n /** Resolved / OK */\n RESOLVED = 'RESOLVED',\n /** Rejected / Error */\n REJECTED = 'REJECTED',\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<{\n done: boolean;\n onfulfilled?: ((value: T) => T | PromiseLike) | null;\n onrejected?: ((reason: any) => any) | null;\n }> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public toString(): string {\n return '[object SyncPromise]';\n }\n\n /** JSDoc */\n public static resolve(value: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n }\n\n /** JSDoc */\n public static reject(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n }\n\n /** JSDoc */\n public static all(collection: Array>): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n if (!Array.isArray(collection)) {\n reject(new TypeError(`Promise.all requires an array as input.`));\n return;\n }\n\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n\n let counter = collection.length;\n const resolvedCollection: U[] = [];\n\n collection.forEach((item, index) => {\n SyncPromise.resolve(item)\n .then(value => {\n resolvedCollection[index] = value;\n counter -= 1;\n\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._attachHandler({\n done: false,\n onfulfilled: result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: reason => {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve((val as unknown) as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n // TODO: FIXME\n /** JSDoc */\n private readonly _attachHandler = (handler: {\n /** JSDoc */\n done: boolean;\n /** JSDoc */\n onfulfilled?(value: T): any;\n /** JSDoc */\n onrejected?(reason: any): any;\n }) => {\n this._handlers = this._handlers.concat(handler);\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler.done) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n handler.onfulfilled((this._value as unknown) as any);\n }\n }\n\n if (this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(this._value);\n }\n }\n\n handler.done = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { Integration, WrappedFunction } from '@sentry/types';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n originalFunctionToString = Function.prototype.toString;\n\n Function.prototype.toString = function(this: WrappedFunction, ...args: any[]): string {\n const context = this.__sentry_original__ || this;\n // tslint:disable-next-line:no-unsafe-any\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","export const setPrototypeOf =\n Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method\n\n/**\n * setPrototypeOf polyfill using __proto__\n */\nfunction setProtoOf(obj: TTarget, proto: TProto): TTarget & TProto {\n // @ts-ignore\n obj.__proto__ = proto;\n return obj as TTarget & TProto;\n}\n\n/**\n * setPrototypeOf polyfill using mixin\n */\nfunction mixinProperties(obj: TTarget, proto: TProto): TTarget & TProto {\n for (const prop in proto) {\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore\n obj[prop] = proto[prop];\n }\n }\n\n return obj as TTarget & TProto;\n}\n","import { setPrototypeOf } from './polyfill';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n // tslint:disable:no-unsafe-any\n this.name = new.target.prototype.constructor.name;\n setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w\\.-]+)(?::(\\d+))?\\/(.+)/;\n\n/** Error message */\nconst ERROR_MESSAGE = 'Invalid Dsn';\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport class Dsn implements DsnComponents {\n /** Protocol used to connect to Sentry. */\n public protocol!: DsnProtocol;\n /** Public authorization key. */\n public user!: string;\n /** Private authorization key (deprecated, optional). */\n public pass!: string;\n /** Hostname of the Sentry instance. */\n public host!: string;\n /** Port of the Sentry instance. */\n public port!: string;\n /** Path */\n public path!: string;\n /** Project ID */\n public projectId!: string;\n\n /** Creates a new Dsn component */\n public constructor(from: DsnLike) {\n if (typeof from === 'string') {\n this._fromString(from);\n } else {\n this._fromComponents(from);\n }\n\n this._validate();\n }\n\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n public toString(withPassword: boolean = false): string {\n // tslint:disable-next-line:no-this-assignment\n const { host, path, pass, port, projectId, protocol, user } = this;\n return (\n `${protocol}://${user}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n }\n\n /** Parses a string into this Dsn. */\n private _fromString(str: string): void {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n\n const [protocol, user, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n this._fromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, user });\n }\n\n /** Maps Dsn components into this instance. */\n private _fromComponents(components: DsnComponents): void {\n this.protocol = components.protocol;\n this.user = components.user;\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n }\n\n /** Validates this Dsn and throws on error. */\n private _validate(): void {\n ['protocol', 'user', 'host', 'projectId'].forEach(component => {\n if (!this[component as keyof DsnComponents]) {\n throw new SentryError(ERROR_MESSAGE);\n }\n });\n\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE);\n }\n\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE);\n }\n }\n}\n","import { DsnLike } from '@sentry/types';\nimport { Dsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Helper class to provide urls to different Sentry endpoints. */\nexport class API {\n /** The internally used Dsn object. */\n private readonly _dsnObject: Dsn;\n /** Create a new instance of API */\n public constructor(public dsn: DsnLike) {\n this._dsnObject = new Dsn(dsn);\n }\n\n /** Returns the Dsn object. */\n public getDsn(): Dsn {\n return this._dsnObject;\n }\n\n /** Returns a string with auth headers in the url to the store endpoint. */\n public getStoreEndpoint(): string {\n return `${this._getBaseUrl()}${this.getStoreEndpointPath()}`;\n }\n\n /** Returns the store endpoint with auth added in url encoded. */\n public getStoreEndpointWithUrlEncodedAuth(): string {\n const dsn = this._dsnObject;\n const auth = {\n sentry_key: dsn.user, // sentry_key is currently used in tracing integration to identify internal sentry requests\n sentry_version: SENTRY_API_VERSION,\n };\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header)\n // to avoid preflight CORS requests\n return `${this.getStoreEndpoint()}?${urlEncode(auth)}`;\n }\n\n /** Returns the base path of the url including the port. */\n private _getBaseUrl(): string {\n const dsn = this._dsnObject;\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}`;\n }\n\n /** Returns only the path component for the store endpoint. */\n public getStoreEndpointPath(): string {\n const dsn = this._dsnObject;\n return `${dsn.path ? `/${dsn.path}` : ''}/api/${dsn.projectId}/store/`;\n }\n\n /** Returns an object that can be used in request headers. */\n public getRequestHeaders(clientName: string, clientVersion: string): { [key: string]: string } {\n const dsn = this._dsnObject;\n const header = [`Sentry sentry_version=${SENTRY_API_VERSION}`];\n header.push(`sentry_client=${clientName}/${clientVersion}`);\n header.push(`sentry_key=${dsn.user}`);\n if (dsn.pass) {\n header.push(`sentry_secret=${dsn.pass}`);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n }\n\n /** Returns the url to the report dialog endpoint. */\n public getReportDialogEndpoint(\n dialogOptions: {\n [key: string]: any;\n user?: { name?: string; email?: string };\n } = {},\n ): string {\n const dsn = this._dsnObject;\n const endpoint = `${this._getBaseUrl()}${dsn.path ? `/${dsn.path}` : ''}/api/embed/error-page/`;\n\n const encodedOptions = [];\n encodedOptions.push(`dsn=${dsn.toString()}`);\n for (const key in dialogOptions) {\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(`name=${encodeURIComponent(dialogOptions.user.name)}`);\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(`email=${encodeURIComponent(dialogOptions.user.email)}`);\n }\n } else {\n encodedOptions.push(`${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`);\n }\n }\n if (encodedOptions.length) {\n return `${endpoint}?${encodedOptions.join('&')}`;\n }\n\n return endpoint;\n }\n}\n","import { Scope } from '@sentry/hub';\nimport { Client, Event, EventHint, Integration, IntegrationClass, Options, SdkInfo, Severity } from '@sentry/types';\nimport { Dsn, isPrimitive, isThenable, logger, normalize, SyncPromise, truncate, uuid4 } from '@sentry/utils';\n\nimport { Backend, BackendClass } from './basebackend';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient.prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * The backend used to physically interact in the enviornment. Usually, this\n * will correspond to the client. When composing SDKs, however, the Backend\n * from the root SDK will be used.\n */\n protected readonly _backend: B;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: Dsn;\n\n /** Array of used integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Is the client still processing a call? */\n protected _processing: boolean = false;\n\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n protected constructor(backendClass: BackendClass, options: O) {\n this._backend = new backendClass(options);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n this._processing = true;\n\n this._getBackend()\n .eventFromException(exception, hint)\n .then(event => this._processEvent(event, hint, scope))\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n this._processing = true;\n\n const promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(`${message}`, level, hint)\n : this._getBackend().eventFromException(message, hint);\n\n promisedEvent\n .then(event => this._processEvent(event, hint, scope))\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n this._processing = true;\n\n this._processEvent(event, hint, scope)\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): Dsn | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n return this._isClientProcessing(timeout).then(status => {\n clearInterval(status.interval);\n return this._getBackend()\n .getTransport()\n .close(timeout)\n .then(transportFlushed => status.ready && transportFlushed);\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /** Waits for the client to be done with processing. */\n protected _isClientProcessing(timeout?: number): PromiseLike<{ ready: boolean; interval: number }> {\n return new SyncPromise<{ ready: boolean; interval: number }>(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n let interval = 0;\n clearInterval(interval);\n\n interval = (setInterval(() => {\n if (!this._processing) {\n resolve({\n interval,\n ready: true,\n });\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n resolve({\n interval,\n ready: false,\n });\n }\n }\n }, tick) as unknown) as number;\n });\n }\n\n /** Returns the current backend. */\n protected _getBackend(): B {\n return this._backend;\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n const { environment, release, dist, maxValueLength = 250, normalizeDepth = 3 } = this.getOptions();\n\n const prepared: Event = { ...event };\n if (prepared.environment === undefined && environment !== undefined) {\n prepared.environment = environment;\n }\n if (prepared.release === undefined && release !== undefined) {\n prepared.release = release;\n }\n\n if (prepared.dist === undefined && dist !== undefined) {\n prepared.dist = dist;\n }\n\n if (prepared.message) {\n prepared.message = truncate(prepared.message, maxValueLength);\n }\n\n const exception = prepared.exception && prepared.exception.values && prepared.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = prepared.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n\n if (prepared.event_id === undefined) {\n prepared.event_id = hint && hint.event_id ? hint.event_id : uuid4();\n }\n\n this._addIntegrations(prepared.sdk);\n\n // We prepare the result here with a resolved Event.\n let result = SyncPromise.resolve(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (scope) {\n // In case we have a hub we reassign it.\n result = scope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number): Event | null {\n if (!event) {\n return null;\n }\n\n // tslint:disable:no-unsafe-any\n return {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth),\n }),\n };\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n protected _addIntegrations(sdkInfo?: SdkInfo): void {\n const integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\n }\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return SyncPromise.reject('SDK not enabled, will not send event.');\n }\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n if (typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject('This event has been sampled, will not send event.');\n }\n\n return new SyncPromise((resolve, reject) => {\n this._prepareEvent(event, scope, hint)\n .then(prepared => {\n if (prepared === null) {\n reject('An event processor returned null, will not send event.');\n return;\n }\n\n let finalEvent: Event | null = prepared;\n\n const isInternalException = hint && hint.data && (hint.data as { [key: string]: any }).__sentry__ === true;\n if (isInternalException || !beforeSend) {\n this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n return;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n // tslint:disable-next-line:strict-type-predicates\n if (typeof beforeSendResult === 'undefined') {\n logger.error('`beforeSend` method has to return `null` or a valid event.');\n } else if (isThenable(beforeSendResult)) {\n this._handleAsyncBeforeSend(beforeSendResult as PromiseLike, resolve, reject);\n } else {\n finalEvent = beforeSendResult as Event | null;\n\n if (finalEvent === null) {\n logger.log('`beforeSend` returned `null`, will not send event.');\n resolve(null);\n return;\n }\n\n // From here on we are really async\n this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n }\n })\n .then(null, reason => {\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n reject(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n });\n }\n\n /**\n * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n */\n private _handleAsyncBeforeSend(\n beforeSend: PromiseLike,\n resolve: (event: Event) => void,\n reject: (reason: string) => void,\n ): void {\n beforeSend\n .then(processedEvent => {\n if (processedEvent === null) {\n reject('`beforeSend` returned `null`, will not send event.');\n return;\n }\n // From here on we are really async\n this._getBackend().sendEvent(processedEvent);\n resolve(processedEvent);\n })\n .then(null, e => {\n reject(`beforeSend rejected with ${e}`);\n });\n }\n}\n","import { Event, Response, Status, Transport } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\n/** Noop transport */\nexport class NoopTransport implements Transport {\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n return SyncPromise.resolve({\n reason: `NoopTransport: Event has been skipped because no Dsn is configured.`,\n status: Status.Skipped,\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(_?: number): PromiseLike {\n return SyncPromise.resolve(true);\n }\n}\n","import { Event, EventHint, Options, Severity, Transport } from '@sentry/types';\nimport { logger, SentryError } from '@sentry/utils';\n\nimport { NoopTransport } from './transports/noop';\n\n/**\n * Internal platform-dependent Sentry SDK Backend.\n *\n * While {@link Client} contains business logic specific to an SDK, the\n * Backend offers platform specific implementations for low-level operations.\n * These are persisting and loading information, sending events, and hooking\n * into the environment.\n *\n * Backends receive a handle to the Client in their constructor. When a\n * Backend automatically generates events, it must pass them to\n * the Client for validation and processing first.\n *\n * Usually, the Client will be of corresponding type, e.g. NodeBackend\n * receives NodeClient. However, higher-level SDKs can choose to instanciate\n * multiple Backends and delegate tasks between them. In this case, an event\n * generated by one backend might very well be sent by another one.\n *\n * The client also provides access to options via {@link Client.getOptions}.\n * @hidden\n */\nexport interface Backend {\n /** Creates a {@link Event} from an exception. */\n eventFromException(exception: any, hint?: EventHint): PromiseLike;\n\n /** Creates a {@link Event} from a plain message. */\n eventFromMessage(message: string, level?: Severity, hint?: EventHint): PromiseLike;\n\n /** Submits the event to Sentry */\n sendEvent(event: Event): void;\n\n /**\n * Returns the transport that is used by the backend.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n *\n * @returns The transport.\n */\n getTransport(): Transport;\n}\n\n/**\n * A class object that can instanciate Backend objects.\n * @hidden\n */\nexport type BackendClass = new (options: O) => B;\n\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nexport abstract class BaseBackend implements Backend {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** Cached transport used internally. */\n protected _transport: Transport;\n\n /** Creates a new backend instance. */\n public constructor(options: O) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n protected _setupTransport(): Transport {\n return new NoopTransport();\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(_exception: any, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromException` method');\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n this._transport.sendEvent(event).then(null, reason => {\n logger.error(`Error while sending event: ${reason}`);\n });\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._transport;\n }\n}\n","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n\n/** A simple queue that holds promises. */\nexport class PromiseBuffer {\n public constructor(protected _limit?: number) {}\n\n /** Internal set of queued Promises */\n private readonly _buffer: Array> = [];\n\n /**\n * Says if the buffer is ready to take more requests\n */\n public isReady(): boolean {\n return this._limit === undefined || this.length() < this._limit;\n }\n\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns The original promise.\n */\n public add(task: PromiseLike): PromiseLike {\n if (!this.isReady()) {\n return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(() => this.remove(task))\n .then(null, () =>\n this.remove(task).then(null, () => {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n public remove(task: PromiseLike): PromiseLike {\n const removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n }\n\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n public length(): number {\n return this._buffer.length;\n }\n\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n public drain(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n SyncPromise.all(this._buffer)\n .then(() => {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .then(null, () => {\n resolve(true);\n });\n });\n }\n}\n","import { API } from '@sentry/core';\nimport { Event, Response, Transport, TransportOptions } from '@sentry/types';\nimport { PromiseBuffer, SentryError } from '@sentry/utils';\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @inheritDoc\n */\n public url: string;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer = new PromiseBuffer(30);\n\n public constructor(public options: TransportOptions) {\n this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth();\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this._buffer.drain(timeout);\n }\n}\n","import { Event, Response, Status } from '@sentry/types';\nimport { getGlobalObject, logger, parseRetryAfterHeader, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\nconst global = getGlobalObject();\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /** Locks transport after receiving 429 response */\n private _disabledUntil: Date = new Date(Date.now());\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event,\n reason: `Transport locked till ${this._disabledUntil} due to too many requests.`,\n status: 429,\n });\n }\n\n const defaultOptions: RequestInit = {\n body: JSON.stringify(event),\n method: 'POST',\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\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n\n if (this.options.headers !== undefined) {\n defaultOptions.headers = this.options.headers;\n }\n\n return this._buffer.add(\n new SyncPromise((resolve, reject) => {\n global\n .fetch(this.url, defaultOptions)\n .then(response => {\n const status = Status.fromHttpCode(response.status);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n if (status === Status.RateLimit) {\n const now = Date.now();\n this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After')));\n logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);\n }\n\n reject(response);\n })\n .catch(reject);\n }),\n );\n }\n}\n","import { Event, Response, Status } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\n/** `XHR` based transport */\nexport class XHRTransport extends BaseTransport {\n /** Locks transport after receiving 429 response */\n private _disabledUntil: Date = new Date(Date.now());\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event,\n reason: `Transport locked till ${this._disabledUntil} due to too many requests.`,\n status: 429,\n });\n }\n\n return this._buffer.add(\n new SyncPromise((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.onreadystatechange = () => {\n if (request.readyState !== 4) {\n return;\n }\n\n const status = Status.fromHttpCode(request.status);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n if (status === Status.RateLimit) {\n const now = Date.now();\n this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After')));\n logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);\n }\n\n reject(request);\n };\n\n request.open('POST', this.url);\n for (const header in this.options.headers) {\n if (this.options.headers.hasOwnProperty(header)) {\n request.setRequestHeader(header, this.options.headers[header]);\n }\n }\n request.send(JSON.stringify(event));\n }),\n );\n }\n}\n","import { BaseBackend } from '@sentry/core';\nimport { Event, EventHint, Options, Severity, Transport } from '@sentry/types';\nimport { addExceptionMechanism, supportsFetch, SyncPromise } from '@sentry/utils';\n\nimport { eventFromString, eventFromUnknownInput } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see BrowserClient for more information.\n */\nexport interface BrowserOptions extends Options {\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To whitelist certain errors instead, use {@link Options.whitelistUrls}.\n * By default, all errors will be sent.\n */\n blacklistUrls?: Array;\n\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.blacklistUrls}.\n * By default, all errors will be sent.\n */\n whitelistUrls?: Array;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class BrowserBackend extends BaseBackend {\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn,\n };\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: any, hint?: EventHint): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n }\n}\n","export const SDK_NAME = 'sentry.javascript.browser';\nexport const SDK_VERSION = '5.15.5';\n","import { API, BaseClient, Scope } from '@sentry/core';\nimport { DsnLike, Event, EventHint } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { BrowserBackend, BrowserOptions } from './backend';\nimport { SDK_NAME, SDK_VERSION } from './version';\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserOptions = {}) {\n super(BrowserBackend, options);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n event.platform = event.platform || 'javascript';\n event.sdk = {\n ...event.sdk,\n name: SDK_NAME,\n packages: [\n ...((event.sdk && event.sdk.packages) || []),\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n const document = getGlobalObject().document;\n if (!document) {\n return;\n }\n\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client is disabled');\n return;\n }\n\n const dsn = options.dsn || this.getDsn();\n\n if (!options.eventId) {\n logger.error('Missing `eventId` option in showReportDialog call');\n return;\n }\n\n if (!dsn) {\n logger.error('Missing `Dsn` option in showReportDialog call');\n return;\n }\n\n const script = document.createElement('script');\n script.async = true;\n script.src = new API(dsn).getReportDialogEndpoint(options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n (document.head || document.body).appendChild(script);\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Event, Integration } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** JSDoc */\ninterface InboundFiltersOptions {\n blacklistUrls?: Array;\n ignoreErrors?: Array;\n ignoreInternal?: boolean;\n whitelistUrls?: Array;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n public constructor(private readonly _options: InboundFiltersOptions = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n const hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\n }\n return event;\n });\n }\n\n /** JSDoc */\n private _shouldDropEvent(event: Event, options: InboundFiltersOptions): boolean {\n if (this._isSentryError(event, options)) {\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (this._isBlacklistedUrl(event, options)) {\n logger.warn(\n `Event dropped due to being matched by \\`blacklistUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!this._isWhitelistedUrl(event, options)) {\n logger.warn(\n `Event dropped due to not being matched by \\`whitelistUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n }\n\n /** JSDoc */\n private _isSentryError(event: Event, options: InboundFiltersOptions = {}): boolean {\n if (!options.ignoreInternal) {\n return false;\n }\n\n try {\n return (\n (event &&\n event.exception &&\n event.exception.values &&\n event.exception.values[0] &&\n event.exception.values[0].type === 'SentryError') ||\n false\n );\n } catch (_oO) {\n return false;\n }\n }\n\n /** JSDoc */\n private _isIgnoredError(event: Event, options: InboundFiltersOptions = {}): boolean {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n\n return this._getPossibleEventMessages(event).some(message =>\n // Not sure why TypeScript complains here...\n (options.ignoreErrors as Array).some(pattern => isMatchingPattern(message, pattern)),\n );\n }\n\n /** JSDoc */\n private _isBlacklistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean {\n // TODO: Use Glob instead?\n if (!options.blacklistUrls || !options.blacklistUrls.length) {\n return false;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? false : options.blacklistUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _isWhitelistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean {\n // TODO: Use Glob instead?\n if (!options.whitelistUrls || !options.whitelistUrls.length) {\n return true;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? true : options.whitelistUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _mergeOptions(clientOptions: InboundFiltersOptions = {}): InboundFiltersOptions {\n return {\n blacklistUrls: [...(this._options.blacklistUrls || []), ...(clientOptions.blacklistUrls || [])],\n ignoreErrors: [\n ...(this._options.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n whitelistUrls: [...(this._options.whitelistUrls || []), ...(clientOptions.whitelistUrls || [])],\n };\n }\n\n /** JSDoc */\n private _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n }\n\n /** JSDoc */\n private _getEventFilterUrl(event: Event): string | null {\n try {\n if (event.stacktrace) {\n const frames = event.stacktrace.frames;\n return (frames && frames[frames.length - 1].filename) || null;\n }\n if (event.exception) {\n const frames =\n event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n return (frames && frames[frames.length - 1].filename) || null;\n }\n return null;\n } catch (oO) {\n logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /** JSDoc */\n private _ignoreOnError: number = 0;\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /** JSDoc */\n private _wrapTimeFunction(original: () => void): () => number {\n return function(this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n }\n\n /** JSDoc */\n private _wrapRAF(original: any): (callback: () => void) => any {\n return function(this: any, callback: () => void): () => void {\n return original(\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n );\n };\n }\n\n /** JSDoc */\n private _wrapEventTarget(target: string): void {\n const global = getGlobalObject() as { [key: string]: any };\n const proto = global[target] && global[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function(\n original: () => void,\n ): (eventName: string, fn: EventListenerObject, options?: boolean | AddEventListenerOptions) => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n // tslint:disable-next-line:no-unbound-method strict-type-predicates\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.call(\n this,\n eventName,\n wrap((fn as any) as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n );\n };\n });\n\n fill(proto, 'removeEventListener', function(\n original: () => void,\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n let callback = (fn as any) as WrappedFunction;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n }\n\n /** JSDoc */\n private _wrapXHR(originalSend: () => void): () => void {\n return function(this: XMLHttpRequest, ...args: any[]): void {\n const xhr = this; // tslint:disable-line:no-this-assignment\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function(original: WrappedFunction): Function {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n if (original.__sentry_original__) {\n wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n this._ignoreOnError = this._ignoreOnError;\n\n const global = getGlobalObject();\n\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n\n if ('XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n\n [\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 ].forEach(this._wrapEventTarget.bind(this));\n }\n}\n","import { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n callback: (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const error = data.error;\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : this._enhanceEventWithInitialFrame(\n eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }),\n data.url,\n data.line,\n data.column,\n );\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n callback: (e: any) => {\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteRejection(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n\n event.level = Severity.Error;\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n\n return;\n },\n type: 'unhandledrejection',\n });\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n private _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name;\n\n if (isString(message)) {\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n }\n\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n private _eventFromIncompleteRejection(error: any): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${error}`,\n },\n ],\n },\n };\n }\n\n /** JSDoc */\n private _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n private readonly _key: string;\n\n /**\n * @inheritDoc\n */\n private readonly _limit: number;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { key?: string; limit?: number } = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n }\n\n /**\n * @inheritDoc\n */\n private _handler(event: Event, hint?: EventHint): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = this._walkErrorTree(hint.originalException as ExtendedError, this._key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n }\n\n /**\n * @inheritDoc\n */\n private _walkErrorTree(error: ExtendedError, key: string, stack: Exception[] = []): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n const stacktrace = computeStackTrace(error[key]);\n const exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, [exception, ...stack]);\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** UserAgent */\nexport class UserAgent implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = UserAgent.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'UserAgent';\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(UserAgent)) {\n if (!global.navigator || !global.location) {\n return event;\n }\n\n // Request Interface: https://docs.sentry.io/development/sdk-dev/event-payloads/request/\n const request = event.request || {};\n request.url = request.url || global.location.href;\n request.headers = request.headers || {};\n request.headers['User-Agent'] = global.navigator.userAgent;\n\n return {\n ...event,\n request,\n };\n }\n return event;\n });\n }\n}\n"],"sourceRoot":""}