{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@bugsnag/js/browser/notifier.js","webpack:///./app/javascript/packs/polyfills.js","webpack:///./app/javascript/polyfills/customEvent.js","webpack:///./node_modules/@bugsnag/browser/dist/bugsnag.js","webpack:///./app/javascript/bugsnag/ignoreErrors.js","webpack:///./app/javascript/bugsnag/enableIfNeeded.js","webpack:///./app/javascript/bugsnag/index.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","webpack:///./app/javascript/packs/onboarding/referral/application.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","require","CustomEvent","params","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","define","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","len","_$filter_12","item","concat","_$includes_13","x","_$isArray_14","obj","toString","_hasDontEnumBug","propertyIsEnumerable","_dontEnums","_$keys_15","prop","result","_$intRange_24","min","max","Infinity","parseInt","_$listOfFunctions_25","f","_$stringWithLength_26","_$config_5","defaultErrorTypes","unhandledExceptions","unhandledRejections","schema","apiKey","defaultValue","validate","appVersion","appType","autoDetectErrors","enabledErrorTypes","allowPartialObject","providedKeys","defaultKeys","k","onError","onSession","onBreadcrumb","endpoints","notify","sessions","autoTrackSessions","enabledReleaseStages","releaseStage","maxBreadcrumbs","enabledBreadcrumbTypes","join","maybeType","context","user","metadata","logger","method","redactedKeys","test","plugins","load","featureFlags","feature","_$assign_11","arguments","source","_$map_16","_extends","assign","apply","this","_$config_1","location","host","debug","getPrefixedConsole","consoleLog","log","consoleMethod","_$Breadcrumb_3","Breadcrumb","timestamp","Date","toJSON","metaData","_$stackframe_34","root","factory","amd","StackFrame","_isNumber","isNaN","parseFloat","isFinite","_capitalize","str","charAt","toUpperCase","substring","_getter","booleanProps","numericProps","stringProps","arrayProps","props","getArgs","args","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","Boolean","j","Number","String","_$errorStackParser_31","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","indexOf","parts","exec","replace","split","filter","line","map","sanitizedLine","tokens","locationParts","pop","functionName","fileName","lineNumber","columnNumber","functionNameRegex","matches","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","_$errorStackParser_10","_$safeJsonStringify_30","replacer","space","opts","redactedPaths","JSON","stringify","prepareObjForSerialization","MAX_DEPTH","MAX_EDGES","MIN_PRESERVED_DEPTH","REPLACEMENT_NODE","isError","throwsMessage","find","haystack","needle","isDescendent","paths","path","shouldRedact","patterns","toLowerCase","__isArray_30","safelyGetProp","seen","edges","visit","edgesExceeded","fResult","eResult","aResult","add","existingFeatures","existingFeatureKeys","variant","existingIndex","merge","newFeatures","toEventApi","_ref","flag","featureFlag","clear","features","featuresIndex","_$featureFlagDelegate_18","_$hasStack_19","__isError_32","_$iserror_20","__add_22","state","section","keyOrObj","maybeVal","_updates","updates","__clear_22","_$metadataDelegate_22","_$stackGenerator_33","StackGenerator","backtrace","maxStackSize","curr","callee","Array","RegExp","$1","caller","Event","errorClass","errorMessage","handledState","originalError","defaultHandledState","groupingHash","_handledState","severity","unhandled","app","device","breadcrumbs","threads","_metadata","_features","_featuresIndex","_user","_session","errors","createBugsnagError","__type","_proto","addMetadata","getMetadata","clearMetadata","addFeatureFlag","addFeatureFlags","getFeatureFlags","clearFeatureFlag","clearFeatureFlags","getUser","setUser","id","email","payloadVersion","exceptions","er","severityReason","session","formatStackframe","frame","file","normaliseFunctionName","code","inProject","ensureString","getCauseStack","cause","getStacktrace","errorFramesToSkip","backtraceFramesToSkip","maybeError","tolerateNonErrors","component","_normaliseError","normaliseError","internalFrames","makeSerialisable","_event$errors","causes","normalisedCauses","createAndLogInputError","reason","verb","warn","hasNecessaryFields","_$Event_6","_$asyncEvery_7","cb","index","next","_$callbackRunner_9","callbacks","onCallbackError","runMaybeAsyncCallback","ret","then","_$syncCallbackRunner_23","callbackArg","callbackType","ignore","cbs","_$pad_29","num","size","substr","env","self","globalCount","mimeTypesLength","navigator","mimeTypes","clientId","userAgent","_$fingerprint_28","blockSize","base","discreteValues","Math","pow","randomBlock","random","safeCounter","cuid","getTime","fingerprint","_$cuid_27","_$Session_35","Session","startedAt","_handled","_unhandled","events","handled","_track","__add_4","__clear_4","__merge_4","noop","Client","configuration","internalPlugins","notifier","_this","_notifier","_config","_schema","_delivery","sendSession","sendEvent","_logger","info","_plugins","_breadcrumbs","_context","_cbs","sp","b","_configure","pl","_loadPlugin","_depth","getContext","setContext","plugin","configSchema","_reduce","config","generateConfigErrorMessage","getPlugin","_setDelivery","startSession","version","_sessionDelegate","addOnError","front","removeOnError","_addOnSessionPayload","addOnSession","removeOnSession","addOnBreadcrumb","removeOnBreadcrumb","pauseSession","resumeSession","leaveBreadcrumb","crumb","_isBreadcrumbTypeEnabled","types","postReportCallback","_notify","_this2","originalSeverity","shouldSend","unhandledOverridden","rawInput","_$Client_4","_$jsonPayload_21","EVENT_REDACTION_PATHS","payload","_$delivery_36","client","win","url","getApiUrl","body","req","XDomainRequest","toFixed","open","send","endpoint","isoDate","matchPageProtocol","protocol","encodeURIComponent","_matchPageProtocol","pageProtocol","_$delivery_37","XMLHttpRequest","onreadystatechange","readyState","DONE","status","setRequestHeader","toISOString","appStart","reset","_$app_38","now","duration","_$context_39","pathname","_$pad_43","__env_42","__globalCount_42","__prop_42","__mimeTypesLength_42","__clientId_42","_$fingerprint_42","__c_41","__blockSize_41","__base_41","__discreteValues_41","__randomBlock_41","__safeCounter_41","__cuid_41","_$cuid_41","BUGSNAG_ANONYMOUS_ID_KEY","getDeviceId","storage","localStorage","getItem","setItem","_$device_40","nav","locale","browserLanguage","systemLanguage","userLanguage","language","screen","orientation","documentElement","clientWidth","clientHeight","generateAnonymousId","collectUserIp","setDefaultUserId","time","eventOrSession","_$request_44","href","_$session_45","sessionDelegate","sessionClient","_pausedSession","_$clientIp_46","clientIp","_$consoleBreadcrumbs_47","CONSOLE_LOG_METHODS","original","_len","_key","arg","stringified","_restore","MAX_LINE_LENGTH","MAX_SCRIPT_LENGTH","_$inlineScriptContent_48","doc","trackInlineScripts","originalLocation","html","DOMContentLoaded","attachEvent","getHtml","outerHTML","prev","_lastScript","updateLastScript","getCurrentScript","currentScript","scripts","getElementsByTagName","addSurroundingCode","htmlLines","zeroBasedLine","start","end","content","innerHTML","_setTimeout","__proxy","__traceOriginalScript","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","__trace__","replacement","isEventHandlerObj","handleEvent","_$interactionBreadcrumbs_49","addEventListener","targetText","targetSelector","getNodeText","getNodeSelector","el","text","textContent","innerText","truncate","tagName","className","querySelectorAll","parentNode","childNodes","ommision","_$navigationBreadcrumbs_50","drop","oldURL","from","relativeLocation","to","newURL","getCurrentState","history","replaceState","wrapHistoryFn","pushState","a","search","hash","stateChangeToMetadata","title","currentPath","prevState","orig","resetEventCount","BREADCRUMB_TYPE","_$networkBreadcrumbs_51","_ignoredUrls","ignoredUrls","monkeyPatchXMLHttpRequest","monkeyPatchFetch","handleFetchSuccess","response","handleFetchError","nativeOpen","requestSetupKey","handleXHRError","handleXHRLoad","removeEventListener","fetch","polyfill","oldFetch","_arguments","urlOrRequest","options","_$throttle_52","maxEvents","_$stripQueryString_53","strip","allFrames","_strip","_$onerror_54","prevOnError","messageOrEvent","lineNo","charNo","decorateStack","extraParameters","culprit","isActualNumber","errorCharacter","_$unhandledRejection_55","listener","isBluebird","fixBluebirdStacktrace","_event$addMetadata","onunhandledrejection","_$notifier_2","__schema_2","Bugsnag","_client","createClient","bugsnag","isStarted","ignoreTikTokPixel","bugsnagEvent","fetchRequredDataElement","dataAttributeName","char","dataset","trim","enableBugsnag","setupBugsnag","railsEnv","bugsnagOptions","enableIfNeeded","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","cspNonce","expando","Element","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","setData","$","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","refreshCSRFTokens","param","forEach","input","fire","preventDefault","defaultPrevented","dispatchEvent","stopEverything","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","json","ajax","responseText","getResponseHeader","floor","success","statusText","complete","beforeSend","OPENED","dataType","accept","done","crossDomain","withCredentials","parser","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","checked","formElements","form","allowAction","handleConfirm","confirm","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","originalText","handleMethod","formContent","link","action","style","display","click","isRemote","handleRemote","button","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","_slicedToArray","isArray","_arrayWithHoles","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","constructor","_unsupportedIterableToArray","_nonIterableRest","arr2","_classPrivateFieldLooseBase","receiver","privateKey","_classPrivateFieldLooseKey","ownKeys","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","hint","prim","toPrimitive","res","_toPrimitive","_toPropertyKey","configurable","writable","raise","errorConstructor","requestSubmit","submitter","HTMLElement","DOMException","validateSubmitter","hidden","HTMLFormElement","submittersByForm","WeakMap","clickCaptured","Node","parentElement","candidate","closest","findSubmitterFromClickTarget","set","prototypeOfSubmitEvent","SubmitEvent","vendor","FrameLoadingStyle","eager","lazy","FrameElement","observedAttributes","super","loaded","delegateConstructor","connectedCallback","connect","disconnectedCallback","disconnect","reload","sourceURLReloaded","attributeChangedCallback","loadingStyleChanged","completeChanged","sourceURLChanged","disabledChanged","removeAttribute","refresh","loading","frameLoadingStyleFromString","hasAttribute","autoscroll","isLoading","isActive","ownerDocument","isPreview","_this$ownerDocument","_this$ownerDocument$d","expandURL","locatable","URL","baseURI","getAnchor","anchorMatch","getAction$1","getExtension","getPathComponents","getLastPathComponent","isPrefixedBy","baseURL","prefix","origin","endsWith","getPrefix","startsWith","locationIsVisitable","rootLocation","getRequestURL","anchor","toCacheKey","FetchResponse","succeeded","ok","failed","clientError","statusCode","serverError","redirected","isHTML","contentType","header","clone","responseHTML","headers","activateScriptElement","createdScriptElement","getMetaContent","async","destinationElement","sourceElement","attributes","copyElementAttributes","dispatch","eventName","_ref2","composed","isConnected","nextAnimationFrame","requestAnimationFrame","nextEventLoopTick","parseHTMLDocument","unindent","strings","values","reduce","string","interpolate","indent","uuid","_","attributeName","_len2","_key2","markAsBusy","_len4","_key4","localName","clearBusyState","_len5","_key5","waitForLoad","timeoutInMilliseconds","onComplete","once","getHistoryMethodForAction","getVisitAction","_len6","_key6","isAction","getMetaElement","findClosestRecursively","_element$getRootNode","assignedSlot","getRootNode","elementIsFocusable","focus","queryAutofocusableElement","elementOrDocumentFragment","modifiedHeaders","Headers","requestUID","Turbo","recentRequests","fetchMethodFromString","FetchMethod","post","put","patch","delete","fetchEnctypeFromString","encoding","FetchEnctype","multipart","plain","urlEncoded","_resolveRequestPromise","_allowRequestToBeIntercepted","_willDelegateErrorHandling","FetchRequest","_this$delegate$referr","requestBody","URLSearchParams","_willDelegateErrorHandling2","_allowRequestToBeIntercepted2","abortController","AbortController","_value","_buildResourceAndBody2","buildResourceAndBody","fetchOptions","credentials","redirect","defaultHeaders","signal","abortSignal","referrer","fetchBody","isSafe","searchParams","fetchMethod","_buildResourceAndBody4","entries","cancel","abort","prepareRequest","requestStarted","receive","requestErrored","requestFinished","fetchResponse","requestPreventedHandlingResponse","requestSucceededWithResponse","requestFailedWithResponse","Accept","acceptResponseType","mimeType","requestInterception","resume","resource","entriesExcludingFiles","mergeIntoURLSearchParams","_ref3","_ref4","File","AppearanceObserver","started","intersect","lastEntry","isIntersecting","elementAppearedInViewport","intersectionObserver","IntersectionObserver","observe","stop","unobserve","StreamMessage","static","template","createDocumentFragment","fragment","streamElement","importNode","inertScriptElement","templateElement","replaceWith","importStreamElements","FormSubmissionState","FormSubmission","_element","_submitter","formElement","mustRedirect","getMethod","formAction","getAction","formElementAction","getFormAction","formData","buildFormData","getEnctype","fetchRequest","initialized","requesting","confirmationMessage","confirmMethod","perform","stopping","stopped","cookieName","cookie","decodeURIComponent","getCookieValue","requestAcceptsTurboStreamResponse","_request","_this$submitter","setSubmitsWith","formSubmission","formSubmissionStarted","formSubmissionFailedWithResponse","requestMustRedirect","responseSucceededWithoutRedirect","formSubmissionErrored","formSubmissionSucceededWithResponse","_this$submitter2","resetSubmitterText","formSubmissionFinished","submitsWith","originalSubmitText","_len3","_key3","some","_this$submitter3","Snapshot","activeElement","children","hasAnchor","getElementForAnchor","firstAutofocusableElement","permanentElements","queryPermanentElementsAll","getPermanentElementById","getPermanentElementMapForSnapshot","snapshot","permanentElementMap","currentPermanentElement","newPermanentElement","node","FormSubmitObserver","eventTarget","submitCaptured","submitBubbled","submissionDoesNotDismissDialog","getElementsByName","HTMLIFrameElement","submissionDoesNotTargetIFrame","willSubmitForm","formSubmitted","_resolveRenderPromise","_resolveInterceptionPromise","View","scrollToAnchor","scrollToElement","focusElement","scrollToPosition","y","scrollToAnchorFromLocation","scrollIntoView","_ref5","scrollRoot","scrollTo","scrollToTop","renderer","shouldRender","newSnapshot","renderPromise","prepareToRenderSnapshot","renderInterception","render","renderElement","allowsImmediateRender","renderSnapshot","viewRenderedSnapshot","renderMethod","preloadOnLoadLinksForView","finishRenderingSnapshot","invalidate","reloadReason","viewInvalidated","markAsPreview","prepareToRender","finishRendering","FrameView","missing","LinkInterceptor","clickBubbled","respondsToEventTarget","clickEvent","linkClicked","shouldInterceptLinkClick","originalEvent","linkClickIntercepted","willVisit","_event","LinkClickObserver","MouseEvent","clickEventIsSignificant","composedPath","findLinkFromClickTarget","doesNotTargetIFrame","getLocationForLink","willFollowLinkToLocation","followedLinkToLocation","isContentEditable","which","altKey","shiftKey","FormLinkClickObserver","linkInterceptor","willSubmitFormLinkToLocation","_ref6","_ref7","turboFrame","turboAction","turboConfirm","submittedFormLinkToLocation","remove","Bardo","bardo","enter","leave","_this$permanentElemen","enteringBardo","replaceNewPermanentElementWithPlaceholder","replaceCurrentPermanentElementWithClone","replacePlaceholderWithPermanentElement","leavingBardo","permanentElement","placeholder","createPlaceholderForPermanentElement","cloneNode","getPlaceholderById","placeholders","_activeElement","Renderer","currentSnapshot","willRender","resolvingFunctions","preservingPermanentElements","focusFirstAutofocusableElement","connectedSnapshot","contains","currentElement","newElement","FrameRenderer","_frameElement$ownerDo","destinationRange","createRange","selectNodeContents","deleteContents","frameElement","sourceRange","extractContents","loadFrameElement","scrollFrameIntoView","activateScriptElements","willRenderFrame","firstElementChild","block","behavior","readScrollBehavior","newScriptElements","activatedScriptElement","ProgressBar","defaultCSS","animationDuration","hiding","visible","trickle","setValue","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","installStylesheetElement","show","installProgressElement","startTrickling","hide","fadeProgressElement","uninstallProgressElement","stopTrickling","insertBefore","firstChild","width","opacity","trickleInterval","setInterval","clearInterval","HeadSnapshot","detailsByOuterHTML","elementIsNoscript","elementWithoutNonce","details","elementType","tracked","elementIsTracked","trackedElementSignature","getScriptElementsNotInSnapshot","getElementsMatchingTypeNotInSnapshot","getStylesheetElementsNotInSnapshot","matchedType","_ref8","_ref9","provisionalElements","_this$detailsByOuterH","getMetaValue","findMetaElementByName","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","PageSnapshot","fromDocument","_ref10","headSnapshot","clonedElement","selectElements","clonedSelectElements","_ref11","_ref12","selectedOptions","clonedPasswordInput","lang","headElement","_this$getSetting","getSetting","cacheControlValue","isPreviewable","isCacheable","isVisitable","prefersViewTransitions","shouldMorphPage","shouldPreserveScrollPosition","_viewTransitionStarted","_lastOperation","ViewTransitioner","renderChange","useViewTransition","viewTransitionsAvailable","startViewTransition","finished","defaultOptions","historyChanged","visitCachedSnapshot","updateHistory","shouldCacheSnapshot","acceptsStreamResponse","TimingMetric","VisitState","SystemStatusCode","Visit","restorationIdentifier","identifier","timingMetrics","followedRedirect","scrolled","snapshotCached","viewTransitioner","_defaultOptions$optio","snapshotHTML","isSamePage","locationWithActionIsSamePage","adapter","view","restorationData","getRestorationDataForIdentifier","silent","recordTimingMetric","visitStarted","cancelRender","followRedirect","visitCompleted","fail","visitFailed","changeHistory","_this$referrer","update","issueRequest","hasPreloadedResponse","simulateRequest","shouldIssueRequest","startRequest","recordResponse","finishRequest","visitRequestStarted","isSuccessful","visitRequestCompleted","visitRequestFailedWithStatusCode","visitRequestFinished","loadResponse","_this$response","cacheSnapshot","fromHTMLString","renderPageSnapshot","visitRendered","renderError","getCachedSnapshot","getCachedSnapshotForLocation","getPreloadedSnapshot","hasCachedSnapshot","loadCachedSnapshot","_this$response2","redirectedToLocation","visitProposedToLocation","goToSamePageAnchor","performScroll","_response","_error","forceReloaded","scrollToRestoredPosition","visitScrolledToSamePageLocation","lastRenderedLocation","scrollPosition","metric","getTimingMetrics","shouldTransitionTo","renderPage","cancelAnimationFrame","BrowserAdapter","progressBar","showProgressBar","startVisit","showVisitProgressBarAfterDelay","_visit","hideVisitProgressBar","pageInvalidated","_formSubmission","showFormProgressBarAfterDelay","hideFormProgressBar","visitProgressBarTimeout","progressBarDelay","formProgressBarTimeout","_this$location","CacheObserver","deprecatedSelector","removeTemporaryElements","temporaryElements","temporaryElementsWithDeprecation","_shouldSubmit","_shouldRedirect","_findFrameElement","FrameRedirector","_element2","_findFrameElement2","_shouldRedirect2","_shouldSubmit2","formSubmitObserver","_location","_meta$content2","submissionIsNavigatable","elementIsNavigatable","History","pageLoaded","onPopState","shouldHandlePopState","turbo","historyPoppedToLocationWithRestorationIdentifier","onPageLoad","updateRestorationData","additionalData","assumeControlOfScrollRestoration","_history$scrollRestor","previousScrollRestoration","scrollRestoration","relinquishControlOfScrollRestoration","pageIsLoaded","_getActionForFormSubmission","_getDefaultAction","Navigator","_getDefaultAction2","_getActionForFormSubmission2","proposeVisit","allowsVisitingLocationWithAction","currentVisit","submitForm","clearSnapshotCache","visitOptions","currentAnchor","isRestorationToTop","_this$location2","PageStage","PageObserver","stage","interpretReadyState","pageIsInteractive","pageIsComplete","pageWillUnload","pageBecameInteractive","ScrollObserver","onScroll","updatePosition","pageXOffset","pageYOffset","position","scrollPositionChanged","StreamMessageRenderer","_ref14","permanentElementsInDocument","permanentElementInDocument","elementInStream","getPermanentElementMapForFragment","generatedID","turboStreams","elementWithAutofocus","nodeListOfStreamElements","firstAutofocusableElementInStreams","willAutofocusId","elementToAutofocus","getElementById","withAutofocusFromFragment","_await$around2","reader","before","around","activeElementBeforeRender","activeElementAfterRender","restoreFocusTo","elementToFocus","withPreservedFocus","_started","StreamObserver","sources","Set","inspectFetchResponse","_event$detail","fetchResponseFromEvent","_response$contentType","fetchResponseIsStream","receiveMessageResponse","receiveMessageEvent","receiveMessageHTML","connectStreamSource","streamSourceIsConnected","disconnectStreamSource","has","receivedMessageFromStream","wrap","ErrorRenderer","_document","replaceChild","replaceHeadAndBody","_document2","newHead","replaceableElement","scriptElements","EMPTY_SET","morphNormalizedContent","oldNode","normalizedNewContent","ctx","oldHead","handleHeadElement","morphStyle","morphChildren","bestMatch","newContent","bestElement","score","newScore","scoreElement","nextSibling","findBestNodeMatch","previousSibling","morphedNode","morphOldNodeTo","added","insertSiblings","ignoreActive","beforeNodeRemoved","afterNodeRemoved","isSoftMatch","beforeNodeMorphed","HTMLHeadElement","nodeType","fromAttributes","toAttributes","fromAttribute","toAttribute","nodeValue","HTMLInputElement","syncAttribute","HTMLOptionElement","HTMLTextAreaElement","fromValue","syncNodeFrom","afterNodeMorphed","beforeNodeAdded","afterNodeAdded","newParent","oldParent","newChild","nextNewChild","insertionPoint","removeIdsFromConsideration","isIdSetMatch","idSetMatch","findIdSetMatch","removeNodesBetween","softMatch","findSoftMatch","tempNode","removeNode","newHeadTag","currentHead","removed","preserved","nodesToAppend","headMergeStyle","srcToNewHeadNodes","Map","newHeadChild","currentHeadElt","inNewContent","isReAppended","shouldReAppend","isPreserved","shouldPreserve","shouldRemove","newNode","newElt","createContextualFragment","_resolve","removedElement","afterHeadMorphed","kept","noOp","node1","node2","getIdIntersectionCount","startInclusive","endExclusive","newChildPotentialIdCount","potentialMatch","otherMatchCount","potentialSoftMatch","siblingSoftMatchCount","isIdInConsideration","deadIds","idIsWithinNode","targetNode","idMap","idSet","sourceSet","matchCount","populateIdMapForNode","nodeParent","idElements","elt","current","createIdMap","oldContent","idiomorph","morph","Document","contentWithSvgsRemoved","generatedByIdiomorph","htmlElement","parseContent","normalizedContent","dummyParent","normalizeContent","createMorphContext","_morphBody","_morphElements","_shouldAddElement","_shouldMorphElement","_shouldRemoveElement","_reloadRemoteFrames","_renderFrameWithMorph","_morphFrameUpdate","_isFrameReloadedWithMorph","_remoteFrames","MorphRenderer","_remoteFrames2","_isFrameReloadedWithMorph2","_renderFrameWithMorph2","_reloadRemoteFrames2","_morphElements2","_morphBody2","isMorphingTurboFrame","_setLanguage","PageRenderer","_setLanguage2","HTMLBodyElement","trackedElementsAreIdentical","mergeHead","replaceBody","currentHeadSnapshot","newHeadSnapshot","mergedHeadElements","mergeProvisionalElements","newStylesheetElements","copyNewHeadStylesheetElements","copyNewHeadScriptElements","activateNewBody","assignNewBody","loadingElements","newHeadStylesheetElements","newHeadScriptElements","newHeadElements","newHeadProvisionalElements","currentHeadProvisionalElements","isCurrentElementInElementList","elementList","_ref15","_ref16","splice","isEqualNode","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","adoptNode","activateNewBodyScriptElements","newBodyScriptElements","SnapshotCache","snapshots","read","touch","write","unshift","PageView","snapshotCache","isPageRefresh","viewWillCacheSnapshot","cachedSnapshot","fromElement","Preloader","preloadURL","LimitedSet","maxSize","oldestValue","_setCacheControl","Cache","_setCacheControl2","clearCache","resetCacheControl","exemptPageFromCache","exemptPageFromPreview","setMetaContent","extendURLWithDeprecatedProperties","deprecatedLocationPropertyDescriptors","absoluteURL","preloader","pageObserver","cacheObserver","linkClickObserver","scrollObserver","streamObserver","formLinkClickObserver","frameRedirector","streamMessageRenderer","cache","drive","enabled","formMode","disable","registerAdapter","requestId","renderStreamMessage","setProgressBarDelay","delay","setFormMode","applicationAllowsFollowingLinkToLocation","getActionForLink","applicationAllowsVisitingLocation","notifyApplicationAfterVisitingLocation","notifyApplicationAfterPageLoad","notifyApplicationAfterVisitingSamePageLocation","_this$navigator$curre","notifyApplicationBeforeCachingSnapshot","_ref17","notifyApplicationBeforeRender","_snapshot","notifyApplicationAfterRender","frameLoaded","notifyApplicationAfterFrameLoad","frameRendered","notifyApplicationAfterFrameRender","ev","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","newBody","timing","HashChangeEvent","submitterIsNavigatable","container","withinFrame","navigator$1","setConfirmMethod","freeze","__proto__","TurboFrameMissingError","_currentFetchRequest","_resolveVisitPromise","_connected","_hasBeenLoaded","_ignoredAttributes","_loadSourceURL","_loadFrameResponse","_visit2","_navigateFrame","_handleUnvisitableFrameResponse","_willHandleFrameMissingFromResponse","_handleFrameMissingFromResponse","_throwFrameMissingError","_visitResponse","_findFrameElement3","_formActionIsVisitable","_shouldInterceptNavigation","_isIgnoringChangesTo","_ignoringChangesToAttribute","_withCurrentNavigationElement","_loadSourceURL2","sourceURL","appearanceObserver","_loadFrameResponse2","newFrameElement","extractForeignFrameElement","fetchResponseLoaded","_visit3","_classPrivateFieldLoo","_navigateFrame2","proposeVisitIfNavigatedWithAction","_handleUnvisitableFrameResponse2","_willHandleFrameMissingFromResponse2","Response","_handleFrameMissingFromResponse2","_throwFrameMissingError2","_visitResponse2","wrapped","_findFrameElement4","_getFrameElementById","getFrameElementById","_formActionIsVisitable2","_shouldInterceptNavigation2","_isIgnoringChangesTo2","_ignoringChangesToAttribute2","_withCurrentNavigationElement2","currentNavigationElement","activateElement","currentURL","right","StreamActions","after","targetElements","_e$parentElement","templateContent","removeDuplicateTargetChildren","_e$parentElement2","prepend","targetElement","_raise","StreamElement","_raise2","performAction","_this$renderPromise","beforeRenderEvent","visibilityState","duplicateChildren","_this$templateContent","existingChildren","flatMap","newChildrenIds","includes","actionFunction","targetElementsById","targets","targetElementsByQuery","HTMLTemplateElement","description","_2","_this$outerHTML$match","newStream","_this$ownerDocument2","_this$ownerDocument3","StreamSourceElement","streamSource","WebSocket","EventSource","close","consumer","getConsumer","setConsumer","createConsumer","newConsumer","subscribeTo","channel","mixin","subscriptions","walk","acc","_element3","_fetchResponse","_ref18","previousFrameElement","replaceChildren","loadingStyle","_this$currentNavigati","_ref19","_ref20","_ref21","_isPreview","newFrame","_renderMethod","_newElement","pageSnapshot","CSS","escape","_meta$content","customElements","subscription","received","dispatchMessageEvent","connected","subscriptionConnected","disconnected","subscriptionDisconnected","unsubscribe","MessageEvent","signed_stream_name","isBodyInit","formMethod","HTMLButtonElement","determineFormMethod","overrideMethod","determineFetchMethod"],"mappings":"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","file":"js/onboarding/referral/application-a5a36bce13d4da88aa78.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 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\t16: 0,\n \t\t20: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"0\":\"actioncable\"}[chunkId]||chunkId) + \"-\" + {\"0\":\"d4d6bc5f80b74e10e146\"}[chunkId] + \".chunk.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// 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 = \"https://assets.moodhealth.com/packs/\";\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 = 927);\n","module.exports = require('@bugsnag/browser');","require(\"core-js/features/array/from\")\nrequire(\"core-js/features/dom-collections/for-each\")\nrequire(\"core-js/web/url-search-params\")\nrequire(\"polyfills/customEvent\")\n","(() => {\n if (typeof window.CustomEvent === \"function\") return false\n\n const CustomEvent = (event, params) => {\n params = params || { bubbles: false, cancelable: false, detail: null }\n const evt = document.createEvent(\"CustomEvent\")\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail)\n return evt\n }\n\n window.CustomEvent = CustomEvent\n})()\n","(function (f) {\n if (typeof exports === \"object\" && typeof module !== \"undefined\") {\n module.exports = f();\n } else if (typeof define === \"function\" && define.amd) {\n define([], f);\n } else {\n var g;\n if (typeof window !== \"undefined\") {\n g = window;\n } else if (typeof global !== \"undefined\") {\n g = global;\n } else if (typeof self !== \"undefined\") {\n g = self;\n } else {\n g = this;\n }\n g.Bugsnag = f();\n }\n})(function () {\n var define, module, exports;\n var _$breadcrumbTypes_8 = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual'];\n\n // Array#reduce\n var _$reduce_17 = function (arr, fn, accum) {\n var val = accum;\n for (var i = 0, len = arr.length; i < len; i++) {\n val = fn(val, arr[i], i, arr);\n }\n return val;\n };\n\n /* removed: var _$reduce_17 = require('./reduce'); */\n ; // Array#filter\n\n var _$filter_12 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return !fn(item, i, arr) ? accum : accum.concat(item);\n }, []);\n };\n\n /* removed: var _$reduce_17 = require('./reduce'); */\n ; // Array#includes\n\n var _$includes_13 = function (arr, x) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum === true || item === x;\n }, false);\n };\n\n // Array#isArray\n var _$isArray_14 = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n\n /* eslint-disable-next-line no-prototype-builtins */\n var _hasDontEnumBug = !{\n toString: null\n }.propertyIsEnumerable('toString');\n var _dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; // Object#keys\n\n var _$keys_15 = function (obj) {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n var result = [];\n var prop;\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n if (!_hasDontEnumBug) return result;\n for (var i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i]);\n }\n return result;\n };\n var _$intRange_24 = function (min, max) {\n if (min === void 0) {\n min = 1;\n }\n if (max === void 0) {\n max = Infinity;\n }\n return function (value) {\n return typeof value === 'number' && parseInt('' + value, 10) === value && value >= min && value <= max;\n };\n };\n\n /* removed: var _$filter_12 = require('../es-utils/filter'); */\n ;\n\n /* removed: var _$isArray_14 = require('../es-utils/is-array'); */\n ;\n var _$listOfFunctions_25 = function (value) {\n return typeof value === 'function' || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'function';\n }).length === value.length;\n };\n var _$stringWithLength_26 = function (value) {\n return typeof value === 'string' && !!value.length;\n };\n var _$config_5 = {};\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n ;\n\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n ;\n\n /* removed: var _$keys_15 = require('./lib/es-utils/keys'); */\n ;\n\n /* removed: var _$isArray_14 = require('./lib/es-utils/is-array'); */\n ;\n\n /* removed: var _$includes_13 = require('./lib/es-utils/includes'); */\n ;\n\n /* removed: var _$intRange_24 = require('./lib/validators/int-range'); */\n ;\n\n /* removed: var _$stringWithLength_26 = require('./lib/validators/string-with-length'); */\n ;\n\n /* removed: var _$listOfFunctions_25 = require('./lib/validators/list-of-functions'); */\n ;\n\n /* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */\n ;\n var defaultErrorTypes = function () {\n return {\n unhandledExceptions: true,\n unhandledRejections: true\n };\n };\n _$config_5.schema = {\n apiKey: {\n defaultValue: function () {\n return null;\n },\n message: 'is required',\n validate: _$stringWithLength_26\n },\n appVersion: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n appType: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n autoDetectErrors: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n },\n enabledErrorTypes: {\n defaultValue: function () {\n return defaultErrorTypes();\n },\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: function (value) {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false;\n var providedKeys = _$keys_15(value);\n var defaultKeys = _$keys_15(defaultErrorTypes()); // ensure it only has a subset of the allowed keys\n\n if (_$filter_12(providedKeys, function (k) {\n return _$includes_13(defaultKeys, k);\n }).length < providedKeys.length) return false; // ensure all of the values are boolean\n\n if (_$filter_12(_$keys_15(value), function (k) {\n return typeof value[k] !== 'boolean';\n }).length > 0) return false;\n return true;\n }\n },\n onError: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onSession: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onBreadcrumb: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n endpoints: {\n defaultValue: function () {\n return {\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n };\n },\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: function (val) {\n return (\n // first, ensure it's an object\n val && typeof val === 'object' &&\n // notify and sessions must always be set\n _$stringWithLength_26(val.notify) && _$stringWithLength_26(val.sessions) &&\n // ensure no keys other than notify/session are set on endpoints object\n _$filter_12(_$keys_15(val), function (k) {\n return !_$includes_13(['notify', 'sessions'], k);\n }).length === 0\n );\n }\n },\n autoTrackSessions: {\n defaultValue: function (val) {\n return true;\n },\n message: 'should be true|false',\n validate: function (val) {\n return val === true || val === false;\n }\n },\n enabledReleaseStages: {\n defaultValue: function () {\n return null;\n },\n message: 'should be an array of strings',\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'string';\n }).length === value.length;\n }\n },\n releaseStage: {\n defaultValue: function () {\n return 'production';\n },\n message: 'should be a string',\n validate: function (value) {\n return typeof value === 'string' && value.length;\n }\n },\n maxBreadcrumbs: {\n defaultValue: function () {\n return 25;\n },\n message: 'should be a number ≤100',\n validate: function (value) {\n return _$intRange_24(0, 100)(value);\n }\n },\n enabledBreadcrumbTypes: {\n defaultValue: function () {\n return _$breadcrumbTypes_8;\n },\n message: \"should be null or a list of available breadcrumb types (\" + _$breadcrumbTypes_8.join(',') + \")\",\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$reduce_17(value, function (accum, maybeType) {\n if (accum === false) return accum;\n return _$includes_13(_$breadcrumbTypes_8, maybeType);\n }, true);\n }\n },\n context: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || typeof value === 'string';\n }\n },\n user: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object with { id, email, name } properties',\n validate: function (value) {\n return value === null || value && _$reduce_17(_$keys_15(value), function (accum, key) {\n return accum && _$includes_13(['id', 'email', 'name'], key);\n }, true);\n }\n },\n metadata: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object',\n validate: function (value) {\n return typeof value === 'object' && value !== null;\n }\n },\n logger: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: function (value) {\n return !value || value && _$reduce_17(['debug', 'info', 'warn', 'error'], function (accum, method) {\n return accum && typeof value[method] === 'function';\n }, true);\n }\n },\n redactedKeys: {\n defaultValue: function () {\n return ['password'];\n },\n message: 'should be an array of strings|regexes',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (s) {\n return typeof s === 'string' || s && typeof s.test === 'function';\n }).length;\n }\n },\n plugins: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of plugin objects',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (p) {\n return p && typeof p === 'object' && typeof p.load === 'function';\n }).length;\n }\n },\n featureFlags: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of objects that have a \"name\" property',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (feature) {\n return feature && typeof feature === 'object' && typeof feature.name === 'string';\n }).length;\n }\n }\n };\n\n // extends helper from babel\n // https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\n var _$assign_11 = function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\n /* removed: var _$reduce_17 = require('./reduce'); */\n ; // Array#map\n\n var _$map_16 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum.concat(fn(item, i, arr));\n }, []);\n };\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n var schema = _$config_5.schema;\n\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n var _$config_1 = {\n releaseStage: _$assign_11({}, schema.releaseStage, {\n defaultValue: function () {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development';\n return 'production';\n }\n }),\n appType: _extends({}, schema.appType, {\n defaultValue: function () {\n return 'browser';\n }\n }),\n logger: _$assign_11({}, schema.logger, {\n defaultValue: function () {\n return (\n // set logger based on browser capability\n typeof console !== 'undefined' && typeof console.debug === 'function' ? getPrefixedConsole() : undefined\n );\n }\n })\n };\n var getPrefixedConsole = function () {\n var logger = {};\n var consoleLog = console.log;\n _$map_16(['debug', 'info', 'warn', 'error'], function (method) {\n var consoleMethod = console[method];\n logger[method] = typeof consoleMethod === 'function' ? consoleMethod.bind(console, '[bugsnag]') : consoleLog.bind(console, '[bugsnag]');\n });\n return logger;\n };\n var Breadcrumb = /*#__PURE__*/function () {\n function Breadcrumb(message, metadata, type, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date();\n }\n this.type = type;\n this.message = message;\n this.metadata = metadata;\n this.timestamp = timestamp;\n }\n var _proto = Breadcrumb.prototype;\n _proto.toJSON = function toJSON() {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n };\n };\n return Breadcrumb;\n }();\n var _$Breadcrumb_3 = Breadcrumb;\n var _$stackframe_34 = {};\n (function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof _$stackframe_34 === 'object') {\n _$stackframe_34 = factory();\n } else {\n root.StackFrame = factory();\n }\n })(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? '@' + this.getFileName() : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? ':' + this.getLineNumber() : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? ':' + this.getColumnNumber() : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n return StackFrame;\n });\n var _$errorStackParser_31 = {};\n (function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof _$errorStackParser_31 === 'object') {\n _$errorStackParser_31 = factory(_$stackframe_34);\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n })(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '('); // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/); // remove the parenthesized location from the line, if it was matched\n\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1); // if a location was matched, pass it to extractLocation() otherwise pop the last token\n\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n });\n var _$errorStackParser_10 = _$errorStackParser_31;\n var _$safeJsonStringify_30 = function (data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : [];\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : [];\n return JSON.stringify(prepareObjForSerialization(data, redactedKeys, redactedPaths), replacer, space);\n };\n var MAX_DEPTH = 20;\n var MAX_EDGES = 25000;\n var MIN_PRESERVED_DEPTH = 8;\n var REPLACEMENT_NODE = '...';\n function isError(o) {\n return o instanceof Error || /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o));\n }\n function throwsMessage(err) {\n return '[Throws: ' + (err ? err.message : '?') + ']';\n }\n function find(haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true;\n }\n return false;\n } // returns true if the string `path` starts with any of the provided `paths`\n\n function isDescendent(paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true;\n }\n return false;\n }\n function shouldRedact(patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i].toLowerCase() === key.toLowerCase()) return true;\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true;\n }\n return false;\n }\n function __isArray_30(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n }\n function safelyGetProp(obj, prop) {\n try {\n return obj[prop];\n } catch (err) {\n return throwsMessage(err);\n }\n }\n function prepareObjForSerialization(obj, redactedKeys, redactedPaths) {\n var seen = []; // store references to objects we have seen before\n\n var edges = 0;\n function visit(obj, path) {\n function edgesExceeded() {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES;\n }\n edges++;\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE;\n if (edgesExceeded()) return REPLACEMENT_NODE;\n if (obj === null || typeof obj !== 'object') return obj;\n if (find(seen, obj)) return '[Circular]';\n seen.push(obj);\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--;\n var fResult = visit(obj.toJSON(), path);\n seen.pop();\n return fResult;\n } catch (err) {\n return throwsMessage(err);\n }\n }\n var er = isError(obj);\n if (er) {\n edges--;\n var eResult = visit({\n name: obj.name,\n message: obj.message\n }, path);\n seen.pop();\n return eResult;\n }\n if (__isArray_30(obj)) {\n var aResult = [];\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE);\n break;\n }\n aResult.push(visit(obj[i], path.concat('[]')));\n }\n seen.pop();\n return aResult;\n }\n var result = {};\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue;\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]';\n continue;\n }\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE;\n break;\n }\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop));\n }\n } catch (e) {}\n seen.pop();\n return result;\n }\n return visit(obj, []);\n }\n\n /* removed: var _$map_16 = require('./es-utils/map'); */\n ;\n\n /* removed: var _$filter_12 = require('./es-utils/filter'); */\n ;\n\n /* removed: var _$isArray_14 = require('./es-utils/is-array'); */\n ;\n\n /* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */\n ;\n function add(existingFeatures, existingFeatureKeys, name, variant) {\n if (typeof name !== 'string') {\n return;\n }\n if (variant === undefined) {\n variant = null;\n } else if (variant !== null && typeof variant !== 'string') {\n variant = _$safeJsonStringify_30(variant);\n }\n var existingIndex = existingFeatureKeys[name];\n if (typeof existingIndex === 'number') {\n existingFeatures[existingIndex] = {\n name: name,\n variant: variant\n };\n return;\n }\n existingFeatures.push({\n name: name,\n variant: variant\n });\n existingFeatureKeys[name] = existingFeatures.length - 1;\n }\n function merge(existingFeatures, newFeatures, existingFeatureKeys) {\n if (!_$isArray_14(newFeatures)) {\n return;\n }\n for (var i = 0; i < newFeatures.length; ++i) {\n var feature = newFeatures[i];\n if (feature === null || typeof feature !== 'object') {\n continue;\n } // 'add' will handle if 'name' doesn't exist & 'variant' is optional\n\n add(existingFeatures, existingFeatureKeys, feature.name, feature.variant);\n }\n return existingFeatures;\n } // convert feature flags from a map of 'name -> variant' into the format required\n // by the Bugsnag Event API:\n // [{ featureFlag: 'name', variant: 'variant' }, { featureFlag: 'name 2' }]\n\n function toEventApi(featureFlags) {\n return _$map_16(_$filter_12(featureFlags, Boolean), function (_ref) {\n var name = _ref.name,\n variant = _ref.variant;\n var flag = {\n featureFlag: name\n }; // don't add a 'variant' property unless there's actually a value\n\n if (typeof variant === 'string') {\n flag.variant = variant;\n }\n return flag;\n });\n }\n function clear(features, featuresIndex, name) {\n var existingIndex = featuresIndex[name];\n if (typeof existingIndex === 'number') {\n features[existingIndex] = null;\n delete featuresIndex[name];\n }\n }\n var _$featureFlagDelegate_18 = {\n add: add,\n clear: clear,\n merge: merge,\n toEventApi: toEventApi\n };\n\n // Given `err` which may be an error, does it have a stack property which is a string?\n var _$hasStack_19 = function (err) {\n return !!err && (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) && typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' && err.stack !== err.name + \": \" + err.message;\n };\n\n /**\n * Expose `isError`.\n */\n var _$isError_32 = __isError_32;\n /**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\n function __isError_32(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return value instanceof Error;\n }\n }\n var _$iserror_20 = _$isError_32;\n\n /* removed: var _$assign_11 = require('./es-utils/assign'); */\n ;\n var __add_22 = function (state, section, keyOrObj, maybeVal) {\n var _updates;\n if (!section) return;\n var updates; // addMetadata(\"section\", null) -> clears section\n\n if (keyOrObj === null) return __clear_22(state, section); // normalise the two supported input types into object form\n\n if (typeof keyOrObj === 'object') updates = keyOrObj;\n if (typeof keyOrObj === 'string') updates = (_updates = {}, _updates[keyOrObj] = maybeVal, _updates); // exit if we don't have an updates object at this point\n\n if (!updates) return; // ensure a section with this name exists\n\n if (!state[section]) state[section] = {}; // merge the updates with the existing section\n\n state[section] = _$assign_11({}, state[section], updates);\n };\n var get = function (state, section, key) {\n if (typeof section !== 'string') return undefined;\n if (!key) {\n return state[section];\n }\n if (state[section]) {\n return state[section][key];\n }\n return undefined;\n };\n var __clear_22 = function (state, section, key) {\n if (typeof section !== 'string') return; // clear an entire section\n\n if (!key) {\n delete state[section];\n return;\n } // clear a single value from a section\n\n if (state[section]) {\n delete state[section][key];\n }\n };\n var _$metadataDelegate_22 = {\n add: __add_22,\n get: get,\n clear: __clear_22\n };\n var _$stackGenerator_33 = {};\n (function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof _$stackGenerator_33 === 'object') {\n _$stackGenerator_33 = factory(_$stackframe_34);\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n })(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n });\n\n /* removed: var _$errorStackParser_10 = require('./lib/error-stack-parser'); */\n ;\n\n /* removed: var _$stackGenerator_33 = require('stack-generator'); */\n ;\n\n /* removed: var _$hasStack_19 = require('./lib/has-stack'); */\n ;\n\n /* removed: var _$map_16 = require('./lib/es-utils/map'); */\n ;\n\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n ;\n\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n ;\n\n /* removed: var _$assign_11 = require('./lib/es-utils/assign'); */\n ;\n\n /* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */\n ;\n\n /* removed: var _$featureFlagDelegate_18 = require('./lib/feature-flag-delegate'); */\n ;\n\n /* removed: var _$iserror_20 = require('./lib/iserror'); */\n ;\n var Event = /*#__PURE__*/function () {\n function Event(errorClass, errorMessage, stacktrace, handledState, originalError) {\n if (stacktrace === void 0) {\n stacktrace = [];\n }\n if (handledState === void 0) {\n handledState = defaultHandledState();\n }\n this.apiKey = undefined;\n this.context = undefined;\n this.groupingHash = undefined;\n this.originalError = originalError;\n this._handledState = handledState;\n this.severity = this._handledState.severity;\n this.unhandled = this._handledState.unhandled;\n this.app = {};\n this.device = {};\n this.request = {};\n this.breadcrumbs = [];\n this.threads = [];\n this._metadata = {};\n this._features = [];\n this._featuresIndex = {};\n this._user = {};\n this._session = undefined;\n this.errors = [createBugsnagError(errorClass, errorMessage, Event.__type, stacktrace)]; // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n var _proto = Event.prototype;\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n _$featureFlagDelegate_18.add(this._features, this._featuresIndex, name, variant);\n };\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n _$featureFlagDelegate_18.merge(this._features, featureFlags, this._featuresIndex);\n };\n _proto.getFeatureFlags = function getFeatureFlags() {\n return _$featureFlagDelegate_18.toEventApi(this._features);\n };\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n _$featureFlagDelegate_18.clear(this._features, this._featuresIndex, name);\n };\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n _proto.getUser = function getUser() {\n return this._user;\n };\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n _proto.toJSON = function toJSON() {\n return {\n payloadVersion: '4',\n exceptions: _$map_16(this.errors, function (er) {\n return _$assign_11({}, er, {\n message: er.errorMessage\n });\n }),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session,\n featureFlags: this.getFeatureFlags()\n };\n };\n return Event;\n }(); // takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n // and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n\n var formatStackframe = function (frame) {\n var f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n }; // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code';\n }\n return f;\n };\n var normaliseFunctionName = function (name) {\n return /^global code$/i.test(name) ? 'global code' : name;\n };\n var defaultHandledState = function () {\n return {\n unhandled: false,\n severity: 'warning',\n severityReason: {\n type: 'handledException'\n }\n };\n };\n var ensureString = function (str) {\n return typeof str === 'string' ? str : '';\n };\n function createBugsnagError(errorClass, errorMessage, type, stacktrace) {\n return {\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: type,\n stacktrace: _$reduce_17(stacktrace, function (accum, frame) {\n var f = formatStackframe(frame); // don't include a stackframe if none of its properties are defined\n\n try {\n if (JSON.stringify(f) === '{}') return accum;\n return accum.concat(f);\n } catch (e) {\n return accum;\n }\n }, [])\n };\n }\n function getCauseStack(error) {\n if (error.cause) {\n return [error].concat(getCauseStack(error.cause));\n } else {\n return [error];\n }\n } // Helpers\n\n Event.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (_$hasStack_19(error)) return _$errorStackParser_10.parse(error).slice(errorFramesToSkip); // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n\n try {\n return _$filter_12(_$stackGenerator_33.backtrace(), function (frame) {\n return (frame.functionName || '').indexOf('StackGenerator$$') === -1;\n }).slice(1 + backtraceFramesToSkip);\n } catch (e) {\n return [];\n }\n };\n Event.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip, logger) {\n if (errorFramesToSkip === void 0) {\n errorFramesToSkip = 0;\n }\n var _normaliseError = normaliseError(maybeError, tolerateNonErrors, component, logger),\n error = _normaliseError[0],\n internalFrames = _normaliseError[1];\n var event;\n try {\n var stacktrace = Event.getStacktrace(error,\n // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0,\n // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip);\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError);\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError);\n }\n if (error.name === 'InvalidError') {\n event.addMetadata(\"\" + component, 'non-error parameter', makeSerialisable(maybeError));\n }\n if (error.cause) {\n var _event$errors;\n var causes = getCauseStack(error).slice(1);\n var normalisedCauses = _$map_16(causes, function (cause) {\n // Only get stacktrace for error causes that are a valid JS Error and already have a stack\n var stacktrace = _$iserror_20(cause) && _$hasStack_19(cause) ? _$errorStackParser_10.parse(cause) : [];\n var _normaliseError2 = normaliseError(cause, true, 'error cause'),\n error = _normaliseError2[0];\n if (error.name === 'InvalidError') event.addMetadata('error cause', makeSerialisable(cause));\n return createBugsnagError(error.name, error.message, Event.__type, stacktrace);\n });\n (_event$errors = event.errors).push.apply(_event$errors, normalisedCauses);\n }\n return event;\n };\n var makeSerialisable = function (err) {\n if (err === null) return 'null';\n if (err === undefined) return 'undefined';\n return err;\n };\n var normaliseError = function (maybeError, tolerateNonErrors, component, logger) {\n var error;\n var internalFrames = 0;\n var createAndLogInputError = function (reason) {\n var verb = component === 'error cause' ? 'was' : 'received';\n if (logger) logger.warn(component + \" \" + verb + \" a non-error: \\\"\" + reason + \"\\\"\");\n var err = new Error(component + \" \" + verb + \" a non-error. See \\\"\" + component + \"\\\" tab for more detail.\");\n err.name = 'InvalidError';\n return err;\n }; // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n\n if (!tolerateNonErrors) {\n if (_$iserror_20(maybeError)) {\n error = maybeError;\n } else {\n error = createAndLogInputError(typeof maybeError);\n internalFrames += 2;\n }\n } else {\n switch (typeof maybeError) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError));\n internalFrames += 1;\n break;\n case 'function':\n error = createAndLogInputError('function');\n internalFrames += 2;\n break;\n case 'object':\n if (maybeError !== null && _$iserror_20(maybeError)) {\n error = maybeError;\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage);\n error.name = maybeError.name || maybeError.errorClass;\n internalFrames += 1;\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object');\n internalFrames += 2;\n }\n break;\n default:\n error = createAndLogInputError('nothing');\n internalFrames += 2;\n }\n }\n if (!_$hasStack_19(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error;\n } catch (e) {\n if (_$hasStack_19(e)) {\n error = e; // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n\n internalFrames = 1;\n }\n }\n }\n return [error, internalFrames];\n }; // default value for stacktrace.type\n\n Event.__type = 'browserjs';\n var hasNecessaryFields = function (error) {\n return (typeof error.name === 'string' || typeof error.errorClass === 'string') && (typeof error.message === 'string' || typeof error.errorMessage === 'string');\n };\n var _$Event_6 = Event;\n\n // This is a heavily modified/simplified version of\n // https://github.com/othiym23/async-some\n // with the logic flipped so that it is akin to the\n // synchronous \"every\" method instead of \"some\".\n // run the asynchronous test function (fn) over each item in the array (arr)\n // in series until:\n // - fn(item, cb) => calls cb(null, false)\n // - or the end of the array is reached\n // the callback (cb) will be passed (null, false) if any of the items in arr\n // caused fn to call back with false, otherwise it will be passed (null, true)\n var _$asyncEvery_7 = function (arr, fn, cb) {\n var index = 0;\n var next = function () {\n if (index >= arr.length) return cb(null, true);\n fn(arr[index], function (err, result) {\n if (err) return cb(err);\n if (result === false) return cb(null, false);\n index++;\n next();\n });\n };\n next();\n };\n\n /* removed: var _$asyncEvery_7 = require('./async-every'); */\n ;\n var _$callbackRunner_9 = function (callbacks, event, onCallbackError, cb) {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n var runMaybeAsyncCallback = function (fn, cb) {\n if (typeof fn !== 'function') return cb(null);\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n var ret = fn(event); // check if it returned a \"thenable\" (promise)\n\n if (ret && typeof ret.then === 'function') {\n return ret.then(\n // resolve\n function (val) {\n return setTimeout(function () {\n return cb(null, val);\n });\n },\n // reject\n function (err) {\n setTimeout(function () {\n onCallbackError(err);\n return cb(null, true);\n });\n });\n }\n return cb(null, ret);\n } // if function is async…\n\n fn(event, function (err, result) {\n if (err) {\n onCallbackError(err);\n return cb(null);\n }\n cb(null, result);\n });\n } catch (e) {\n onCallbackError(e);\n cb(null);\n }\n };\n _$asyncEvery_7(callbacks, runMaybeAsyncCallback, cb);\n };\n var _$syncCallbackRunner_23 = function (callbacks, callbackArg, callbackType, logger) {\n var ignore = false;\n var cbs = callbacks.slice();\n while (!ignore) {\n if (!cbs.length) break;\n try {\n ignore = cbs.pop()(callbackArg) === false;\n } catch (e) {\n logger.error(\"Error occurred in \" + callbackType + \" callback, continuing anyway\\u2026\");\n logger.error(e);\n }\n }\n return ignore;\n };\n var _$pad_29 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n };\n\n /* removed: var _$pad_29 = require('./pad.js'); */\n ;\n var env = typeof window === 'object' ? window : self;\n var globalCount = 0;\n for (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n }\n var mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\n var clientId = _$pad_29((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\n var _$fingerprint_28 = function fingerprint() {\n return clientId;\n };\n\n /**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n /* removed: var _$fingerprint_28 = require('./lib/fingerprint.js'); */\n ;\n\n /* removed: var _$pad_29 = require('./lib/pad.js'); */\n ;\n var c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n function randomBlock() {\n return _$pad_29((Math.random() * discreteValues << 0).toString(base), blockSize);\n }\n function safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n\n return c - 1;\n }\n function cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = _$pad_29(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_28(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n }\n cuid.fingerprint = _$fingerprint_28;\n var _$cuid_27 = cuid;\n\n /* removed: var _$cuid_27 = require('@bugsnag/cuid'); */\n ;\n var Session = /*#__PURE__*/function () {\n function Session() {\n this.id = _$cuid_27();\n this.startedAt = new Date();\n this._handled = 0;\n this._unhandled = 0;\n this._user = {};\n this.app = {};\n this.device = {};\n }\n var _proto = Session.prototype;\n _proto.getUser = function getUser() {\n return this._user;\n };\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n _proto.toJSON = function toJSON() {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: {\n handled: this._handled,\n unhandled: this._unhandled\n }\n };\n };\n _proto._track = function _track(event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1;\n };\n return Session;\n }();\n var _$Session_35 = Session;\n\n /* removed: var _$config_5 = require('./config'); */\n ;\n\n /* removed: var _$Event_6 = require('./event'); */\n ;\n\n /* removed: var _$Breadcrumb_3 = require('./breadcrumb'); */\n ;\n\n /* removed: var _$Session_35 = require('./session'); */\n ;\n\n /* removed: var _$map_16 = require('./lib/es-utils/map'); */\n ;\n\n /* removed: var _$includes_13 = require('./lib/es-utils/includes'); */\n ;\n\n /* removed: var _$filter_12 = require('./lib/es-utils/filter'); */\n ;\n\n /* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */\n ;\n\n /* removed: var _$keys_15 = require('./lib/es-utils/keys'); */\n ;\n\n /* removed: var _$assign_11 = require('./lib/es-utils/assign'); */\n ;\n\n /* removed: var _$callbackRunner_9 = require('./lib/callback-runner'); */\n ;\n\n /* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */\n ;\n\n /* removed: var _$syncCallbackRunner_23 = require('./lib/sync-callback-runner'); */\n ;\n\n /* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */\n ;\n var __add_4 = _$featureFlagDelegate_18.add,\n __clear_4 = _$featureFlagDelegate_18.clear,\n __merge_4 = _$featureFlagDelegate_18.merge;\n var noop = function () {};\n var Client = /*#__PURE__*/function () {\n function Client(configuration, schema, internalPlugins, notifier) {\n var _this = this;\n if (schema === void 0) {\n schema = _$config_5.schema;\n }\n if (internalPlugins === void 0) {\n internalPlugins = [];\n }\n\n // notifier id\n this._notifier = notifier; // intialise opts and config\n\n this._config = {};\n this._schema = schema; // i/o\n\n this._delivery = {\n sendSession: noop,\n sendEvent: noop\n };\n this._logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n }; // plugins\n\n this._plugins = {}; // state\n\n this._breadcrumbs = [];\n this._session = null;\n this._metadata = {};\n this._featuresIndex = {};\n this._features = [];\n this._context = undefined;\n this._user = {}; // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }; // expose internal constructors\n\n this.Client = Client;\n this.Event = _$Event_6;\n this.Breadcrumb = _$Breadcrumb_3;\n this.Session = _$Session_35;\n this._config = this._configure(configuration, internalPlugins);\n _$map_16(internalPlugins.concat(this._config.plugins), function (pl) {\n if (pl) _this._loadPlugin(pl);\n }); // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n\n this._depth = 1;\n var self = this;\n var notify = this.notify;\n this.notify = function () {\n return notify.apply(self, arguments);\n };\n }\n var _proto = Client.prototype;\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n __add_4(this._features, this._featuresIndex, name, variant);\n };\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n __merge_4(this._features, featureFlags, this._featuresIndex);\n };\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n __clear_4(this._features, this._featuresIndex, name);\n };\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n _proto.getContext = function getContext() {\n return this._context;\n };\n _proto.setContext = function setContext(c) {\n this._context = c;\n };\n _proto._configure = function _configure(opts, internalPlugins) {\n var schema = _$reduce_17(internalPlugins, function (schema, plugin) {\n if (plugin && plugin.configSchema) return _$assign_11({}, schema, plugin.configSchema);\n return schema;\n }, this._schema); // accumulate configuration and error messages\n\n var _reduce = _$reduce_17(_$keys_15(schema), function (accum, key) {\n var defaultValue = schema[key].defaultValue(opts[key]);\n if (opts[key] !== undefined) {\n var valid = schema[key].validate(opts[key]);\n if (!valid) {\n accum.errors[key] = schema[key].message;\n accum.config[key] = defaultValue;\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = _$assign_11(defaultValue, opts[key]);\n } else {\n accum.config[key] = opts[key];\n }\n }\n } else {\n accum.config[key] = defaultValue;\n }\n return accum;\n }, {\n errors: {},\n config: {}\n }),\n errors = _reduce.errors,\n config = _reduce.config;\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set'); // warn about an apikey that is not of the expected format\n\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters';\n } // update and elevate some options\n\n this._metadata = _$assign_11({}, config.metadata);\n __merge_4(this._features, config.featureFlags, this._featuresIndex);\n this._user = _$assign_11({}, config.user);\n this._context = config.context;\n if (config.logger) this._logger = config.logger; // add callbacks\n\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError);\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb);\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession); // finally warn about any invalid config where we fell back to the default\n\n if (_$keys_15(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts));\n }\n return config;\n };\n _proto.getUser = function getUser() {\n return this._user;\n };\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n _proto._loadPlugin = function _loadPlugin(plugin) {\n var result = plugin.load(this); // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n\n if (plugin.name) this._plugins[\"~\" + plugin.name + \"~\"] = result;\n return this;\n };\n _proto.getPlugin = function getPlugin(name) {\n return this._plugins[\"~\" + name + \"~\"];\n };\n _proto._setDelivery = function _setDelivery(d) {\n this._delivery = d(this);\n };\n _proto.startSession = function startSession() {\n var session = new _$Session_35();\n session.app.releaseStage = this._config.releaseStage;\n session.app.version = this._config.appVersion;\n session.app.type = this._config.appType;\n session._user = _$assign_11({}, this._user); // run onSession callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.s, session, 'onSession', this._logger);\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback');\n return this;\n }\n return this._sessionDelegate.startSession(this, session);\n };\n _proto.addOnError = function addOnError(fn, front) {\n if (front === void 0) {\n front = false;\n }\n this._cbs.e[front ? 'unshift' : 'push'](fn);\n };\n _proto.removeOnError = function removeOnError(fn) {\n this._cbs.e = _$filter_12(this._cbs.e, function (f) {\n return f !== fn;\n });\n };\n _proto._addOnSessionPayload = function _addOnSessionPayload(fn) {\n this._cbs.sp.push(fn);\n };\n _proto.addOnSession = function addOnSession(fn) {\n this._cbs.s.push(fn);\n };\n _proto.removeOnSession = function removeOnSession(fn) {\n this._cbs.s = _$filter_12(this._cbs.s, function (f) {\n return f !== fn;\n });\n };\n _proto.addOnBreadcrumb = function addOnBreadcrumb(fn, front) {\n if (front === void 0) {\n front = false;\n }\n this._cbs.b[front ? 'unshift' : 'push'](fn);\n };\n _proto.removeOnBreadcrumb = function removeOnBreadcrumb(fn) {\n this._cbs.b = _$filter_12(this._cbs.b, function (f) {\n return f !== fn;\n });\n };\n _proto.pauseSession = function pauseSession() {\n return this._sessionDelegate.pauseSession(this);\n };\n _proto.resumeSession = function resumeSession() {\n return this._sessionDelegate.resumeSession(this);\n };\n _proto.leaveBreadcrumb = function leaveBreadcrumb(message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : '';\n type = typeof type === 'string' && _$includes_13(_$breadcrumbTypes_8, type) ? type : 'manual';\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {}; // if no message, discard\n\n if (!message) return;\n var crumb = new _$Breadcrumb_3(message, metadata, type); // run onBreadcrumb callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.b, crumb, 'onBreadcrumb', this._logger);\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback');\n return;\n } // push the valid crumb onto the queue and maintain the length\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs);\n }\n };\n _proto._isBreadcrumbTypeEnabled = function _isBreadcrumbTypeEnabled(type) {\n var types = this._config.enabledBreadcrumbTypes;\n return types === null || _$includes_13(types, type);\n };\n _proto.notify = function notify(maybeError, onError, postReportCallback) {\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n var event = _$Event_6.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger);\n this._notify(event, onError, postReportCallback);\n };\n _proto._notify = function _notify(event, onError, postReportCallback) {\n var _this2 = this;\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n event.app = _$assign_11({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n });\n event.context = event.context || this._context;\n event._metadata = _$assign_11({}, event._metadata, this._metadata);\n event._user = _$assign_11({}, event._user, this._user);\n event.breadcrumbs = this._breadcrumbs.slice();\n __merge_4(event._features, this._features, event._featuresIndex); // exit early if events should not be sent on the current releaseStage\n\n if (this._config.enabledReleaseStages !== null && !_$includes_13(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration');\n return postReportCallback(null, event);\n }\n var originalSeverity = event.severity;\n var onCallbackError = function (err) {\n // errors in callbacks are tolerated but we want to log them out\n _this2._logger.error('Error occurred in onError callback, continuing anyway…');\n _this2._logger.error(err);\n };\n var callbacks = [].concat(this._cbs.e).concat(onError);\n _$callbackRunner_9(callbacks, event, onCallbackError, function (err, shouldSend) {\n if (err) onCallbackError(err);\n if (!shouldSend) {\n _this2._logger.debug('Event not sent due to onError callback');\n return postReportCallback(null, event);\n }\n if (_this2._isBreadcrumbTypeEnabled('error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(_this2, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error');\n }\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = {\n type: 'userCallbackSetSeverity'\n };\n }\n if (event.unhandled !== event._handledState.unhandled) {\n event._handledState.severityReason.unhandledOverridden = true;\n event._handledState.unhandled = event.unhandled;\n }\n if (_this2._session) {\n _this2._session._track(event);\n event._session = _this2._session;\n }\n _this2._delivery.sendEvent({\n apiKey: event.apiKey || _this2._config.apiKey,\n notifier: _this2._notifier,\n events: [event]\n }, function (err) {\n return postReportCallback(err, event);\n });\n });\n };\n return Client;\n }();\n var generateConfigErrorMessage = function (errors, rawInput) {\n var er = new Error(\"Invalid configuration\\n\" + _$map_16(_$keys_15(errors), function (key) {\n return \" - \" + key + \" \" + errors[key] + \", got \" + stringify(rawInput[key]);\n }).join('\\n\\n'));\n return er;\n };\n var stringify = function (val) {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val);\n default:\n return String(val);\n }\n };\n var _$Client_4 = Client;\n var _$jsonPayload_21 = {};\n /* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */\n ;\n var EVENT_REDACTION_PATHS = ['events.[].metaData', 'events.[].breadcrumbs.[].metaData', 'events.[].request'];\n _$jsonPayload_21.event = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier: \"WARNING!\\nSerialized payload was \" + payload.length / 10e5 + \"MB (limit = 1MB)\\nmetadata was removed\"\n };\n payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n }\n return payload;\n };\n _$jsonPayload_21.session = function (session, redactedKeys) {\n var payload = _$safeJsonStringify_30(session, null, null);\n return payload;\n };\n var _$delivery_36 = {};\n /* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */\n ;\n _$delivery_36 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n var url = getApiUrl(client._config, 'notify', '4', win);\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n var req = new win.XDomainRequest();\n req.onload = function () {\n cb(null);\n };\n req.onerror = function () {\n var err = new Error('Event failed to send');\n client._logger.error('Event failed to send…', err);\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n cb(err);\n };\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n cb(e);\n }\n }, 0);\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n var url = getApiUrl(client._config, 'sessions', '1', win);\n var req = new win.XDomainRequest();\n req.onload = function () {\n cb(null);\n };\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n cb(e);\n }\n }, 0);\n }\n };\n };\n var getApiUrl = function (config, endpoint, version, win) {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n var isoDate = JSON.parse(JSON.stringify(new Date()));\n var url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol);\n return url + \"?apiKey=\" + encodeURIComponent(config.apiKey) + \"&payloadVersion=\" + version + \"&sentAt=\" + encodeURIComponent(isoDate);\n };\n var matchPageProtocol = _$delivery_36._matchPageProtocol = function (endpoint, pageProtocol) {\n return pageProtocol === 'http:' ? endpoint.replace(/^https:/, 'http:') : endpoint;\n };\n\n /* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */\n ;\n var _$delivery_37 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n try {\n var url = client._config.endpoints.notify;\n var req = new win.XMLHttpRequest();\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n var status = req.status;\n if (status === 0 || status >= 400) {\n client._logger.error('Event failed to send…');\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n }\n cb(null);\n }\n };\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '4');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n }\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n try {\n var url = client._config.endpoints.sessions;\n var req = new win.XMLHttpRequest();\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) cb(null);\n };\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '1');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n }\n };\n };\n var appStart = new Date();\n var reset = function () {\n appStart = new Date();\n };\n var _$app_38 = {\n name: 'appDuration',\n load: function (client) {\n client.addOnError(function (event) {\n var now = new Date();\n event.app.duration = now - appStart;\n }, true);\n return {\n reset: reset\n };\n }\n };\n\n /*\n * Sets the default context to be the current URL\n */\n var _$context_39 = function (win) {\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.context !== undefined) return;\n event.context = win.location.pathname;\n }, true);\n }\n };\n };\n var _$pad_43 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n };\n\n /* removed: var _$pad_43 = require('./pad.js'); */\n ;\n var __env_42 = typeof window === 'object' ? window : self;\n var __globalCount_42 = 0;\n for (var __prop_42 in __env_42) {\n if (Object.hasOwnProperty.call(__env_42, __prop_42)) __globalCount_42++;\n }\n var __mimeTypesLength_42 = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\n var __clientId_42 = _$pad_43((__mimeTypesLength_42 + navigator.userAgent.length).toString(36) + __globalCount_42.toString(36), 4);\n var _$fingerprint_42 = function fingerprint() {\n return __clientId_42;\n };\n\n /**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n /* removed: var _$fingerprint_42 = require('./lib/fingerprint.js'); */\n ;\n\n /* removed: var _$pad_43 = require('./lib/pad.js'); */\n ;\n var __c_41 = 0,\n __blockSize_41 = 4,\n __base_41 = 36,\n __discreteValues_41 = Math.pow(__base_41, __blockSize_41);\n function __randomBlock_41() {\n return _$pad_43((Math.random() * __discreteValues_41 << 0).toString(__base_41), __blockSize_41);\n }\n function __safeCounter_41() {\n __c_41 = __c_41 < __discreteValues_41 ? __c_41 : 0;\n __c_41++; // this is not subliminal\n\n return __c_41 - 1;\n }\n function __cuid_41() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(__base_41),\n // Prevent same-machine collisions.\n counter = _$pad_43(__safeCounter_41().toString(__base_41), __blockSize_41),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_42(),\n // Grab some more chars from Math.random()\n random = __randomBlock_41() + __randomBlock_41();\n return letter + timestamp + counter + print + random;\n }\n __cuid_41.fingerprint = _$fingerprint_42;\n var _$cuid_41 = __cuid_41;\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n var BUGSNAG_ANONYMOUS_ID_KEY = 'bugsnag-anonymous-id';\n var getDeviceId = function (win) {\n try {\n var storage = win.localStorage;\n var id = storage.getItem(BUGSNAG_ANONYMOUS_ID_KEY); // If we get an ID, make sure it looks like a valid cuid. The length can\n // fluctuate slightly, so some leeway is built in\n\n if (id && /^c[a-z0-9]{20,32}$/.test(id)) {\n return id;\n }\n\n /* removed: var _$cuid_41 = require('@bugsnag/cuid'); */\n ;\n id = _$cuid_41();\n storage.setItem(BUGSNAG_ANONYMOUS_ID_KEY, id);\n return id;\n } catch (err) {// If localStorage is not available (e.g. because it's disabled) then give up\n }\n };\n /*\n * Automatically detects browser device details\n */\n\n var _$device_40 = function (nav, win) {\n if (nav === void 0) {\n nav = navigator;\n }\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n var device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n };\n if (win && win.screen && win.screen.orientation && win.screen.orientation.type) {\n device.orientation = win.screen.orientation.type;\n } else if (win && win.document) {\n device.orientation = win.document.documentElement.clientWidth > win.document.documentElement.clientHeight ? 'landscape' : 'portrait';\n }\n if (client._config.generateAnonymousId) {\n device.id = getDeviceId(win);\n }\n client.addOnSession(function (session) {\n session.device = _$assign_11({}, session.device, device); // only set device id if collectUserIp is false\n\n if (!client._config.collectUserIp) setDefaultUserId(session);\n }); // add time just as the event is sent\n\n client.addOnError(function (event) {\n event.device = _$assign_11({}, event.device, device, {\n time: new Date()\n });\n if (!client._config.collectUserIp) setDefaultUserId(event);\n }, true);\n },\n configSchema: {\n generateAnonymousId: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n };\n var setDefaultUserId = function (eventOrSession) {\n // device id is also used to populate the user id field, if it's not already set\n var user = eventOrSession.getUser();\n if (!user || !user.id) {\n eventOrSession.setUser(eventOrSession.device.id);\n }\n };\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n /*\n * Sets the event request: { url } to be the current href\n */\n\n var _$request_44 = function (win) {\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.request && event.request.url) return;\n event.request = _$assign_11({}, event.request, {\n url: win.location.href\n });\n }, true);\n }\n };\n };\n\n /* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */\n ;\n var _$session_45 = {\n load: function (client) {\n client._sessionDelegate = sessionDelegate;\n }\n };\n var sessionDelegate = {\n startSession: function (client, session) {\n var sessionClient = client;\n sessionClient._session = session;\n sessionClient._pausedSession = null; // exit early if the current releaseStage is not enabled\n\n if (sessionClient._config.enabledReleaseStages !== null && !_$includes_13(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration');\n return sessionClient;\n }\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [{\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }]\n });\n return sessionClient;\n },\n resumeSession: function (client) {\n // Do nothing if there's already an active session\n if (client._session) {\n return client;\n } // If we have a paused session then make it the active session\n\n if (client._pausedSession) {\n client._session = client._pausedSession;\n client._pausedSession = null;\n return client;\n } // Otherwise start a new session\n\n return client.startSession();\n },\n pauseSession: function (client) {\n client._pausedSession = client._session;\n client._session = null;\n }\n };\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ;\n /*\n * Prevent collection of user IPs\n */\n\n var _$clientIp_46 = {\n load: function (client) {\n if (client._config.collectUserIp) return;\n client.addOnError(function (event) {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id;\n event._user = _$assign_11({\n id: '[REDACTED]'\n }, event._user);\n event.request = _$assign_11({\n clientIp: '[REDACTED]'\n }, event.request);\n });\n },\n configSchema: {\n collectUserIp: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n }\n }\n };\n var _$consoleBreadcrumbs_47 = {};\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n ;\n\n /* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */\n ;\n /*\n * Leaves breadcrumbs when console log methods are called\n */\n\n _$consoleBreadcrumbs_47.load = function (client) {\n var isDev = /^(local-)?dev(elopment)?$/.test(client._config.releaseStage);\n if (isDev || !client._isBreadcrumbTypeEnabled('log')) return;\n _$map_16(CONSOLE_LOG_METHODS, function (method) {\n var original = console[method];\n console[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n client.leaveBreadcrumb('Console output', _$reduce_17(args, function (accum, arg, i) {\n // do the best/simplest stringification of each argument\n var stringified = '[Unknown value]'; // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n\n try {\n stringified = String(arg);\n } catch (e) {} // if it stringifies to [object Object] attempt to JSON stringify\n\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try {\n stringified = JSON.stringify(arg);\n } catch (e) {}\n }\n accum[\"[\" + i + \"]\"] = stringified;\n return accum;\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log');\n original.apply(console, args);\n };\n console[method]._restore = function () {\n console[method] = original;\n };\n });\n };\n if (\"production\" !== 'production') {\n _$consoleBreadcrumbs_47.destroy = function () {\n return CONSOLE_LOG_METHODS.forEach(function (method) {\n if (typeof console[method]._restore === 'function') console[method]._restore();\n });\n };\n }\n var CONSOLE_LOG_METHODS = _$filter_12(['log', 'debug', 'info', 'warn', 'error'], function (method) {\n return typeof console !== 'undefined' && typeof console[method] === 'function';\n });\n\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n ;\n\n /* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */\n ;\n var MAX_LINE_LENGTH = 200;\n var MAX_SCRIPT_LENGTH = 500000;\n var _$inlineScriptContent_48 = function (doc, win) {\n if (doc === void 0) {\n doc = document;\n }\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n if (!client._config.trackInlineScripts) return;\n var originalLocation = win.location.href;\n var html = ''; // in IE8-10 the 'interactive' state can fire too soon (before scripts have finished executing), so in those\n // we wait for the 'complete' state before assuming that synchronous scripts are no longer executing\n\n var isOldIe = !!doc.attachEvent;\n var DOMContentLoaded = isOldIe ? doc.readyState === 'complete' : doc.readyState !== 'loading';\n var getHtml = function () {\n return doc.documentElement.outerHTML;\n }; // get whatever HTML exists at this point in time\n\n html = getHtml();\n var prev = doc.onreadystatechange; // then update it when the DOM content has loaded\n\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml();\n DOMContentLoaded = true;\n }\n try {\n prev.apply(this, arguments);\n } catch (e) {}\n };\n var _lastScript = null;\n var updateLastScript = function (script) {\n _lastScript = script;\n };\n var getCurrentScript = function () {\n var script = doc.currentScript || _lastScript;\n if (!script && !DOMContentLoaded) {\n var scripts = doc.scripts || doc.getElementsByTagName('script');\n script = scripts[scripts.length - 1];\n }\n return script;\n };\n var addSurroundingCode = function (lineNumber) {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml(); // simulate the raw html\n\n var htmlLines = [''].concat(html.split('\\n'));\n var zeroBasedLine = lineNumber - 1;\n var start = Math.max(zeroBasedLine - 3, 0);\n var end = Math.min(zeroBasedLine + 3, htmlLines.length);\n return _$reduce_17(htmlLines.slice(start, end), function (accum, line, i) {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH);\n return accum;\n }, {});\n };\n client.addOnError(function (event) {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = _$filter_12(event.errors[0].stacktrace, function (f) {\n return !/__trace__$/.test(f.method);\n });\n var frame = event.errors[0].stacktrace[0]; // if frame.file exists and is not the original location of the page, this can't be an inline script\n\n if (frame && frame.file && frame.file.replace(/#.*$/, '') !== originalLocation.replace(/#.*$/, '')) return; // grab the last script known to have run\n\n var currentScript = getCurrentScript();\n if (currentScript) {\n var content = currentScript.innerHTML;\n event.addMetadata('script', 'content', content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH)); // only attempt to grab some surrounding code if we have a line number\n\n if (frame && frame.lineNumber) {\n frame.code = addSurroundingCode(frame.lineNumber);\n }\n }\n }, true); // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n\n var _map = _$map_16(['setTimeout', 'setInterval', 'setImmediate', 'requestAnimationFrame'], function (fn) {\n return __proxy(win, fn, function (original) {\n return __traceOriginalScript(original, function (args) {\n return {\n get: function () {\n return args[0];\n },\n replace: function (fn) {\n args[0] = fn;\n }\n };\n });\n });\n }),\n _setTimeout = _map[0]; // Proxy all the host objects whose prototypes have an addEventListener function\n\n _$map_16(['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'], function (o) {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return;\n __proxy(win[o].prototype, 'addEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor);\n });\n __proxy(win[o].prototype, 'removeEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor, true);\n });\n });\n function __traceOriginalScript(fn, callbackAccessor, alsoCallOriginal) {\n if (alsoCallOriginal === void 0) {\n alsoCallOriginal = false;\n }\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n var args = [].slice.call(arguments);\n try {\n var cba = callbackAccessor(args);\n var cb = cba.get();\n if (alsoCallOriginal) fn.apply(this, args);\n if (typeof cb !== 'function') return fn.apply(this, args);\n if (cb.__trace__) {\n cba.replace(cb.__trace__);\n } else {\n var script = getCurrentScript(); // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n\n cb.__trace__ = function __trace__() {\n // set the script that called this function\n updateLastScript(script); // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n\n _setTimeout(function () {\n updateLastScript(null);\n }, 0);\n var ret = cb.apply(this, arguments);\n updateLastScript(null);\n return ret;\n };\n cb.__trace__.__trace__ = cb.__trace__;\n cba.replace(cb.__trace__);\n }\n } catch (e) {// swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n } // IE8 doesn't let you call .apply() on setTimeout/setInterval\n\n if (fn.apply) return fn.apply(this, args);\n switch (args.length) {\n case 1:\n return fn(args[0]);\n case 2:\n return fn(args[0], args[1]);\n default:\n return fn();\n }\n };\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n };\n function __proxy(host, name, replacer) {\n var original = host[name];\n if (!original) return original;\n var replacement = replacer(original);\n host[name] = replacement;\n return original;\n }\n function eventTargetCallbackAccessor(args) {\n var isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function';\n return {\n get: function () {\n return isEventHandlerObj ? args[1].handleEvent : args[1];\n },\n replace: function (fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn;\n } else {\n args[1] = fn;\n }\n }\n };\n }\n\n /*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\n var _$interactionBreadcrumbs_49 = function (win) {\n if (win === void 0) {\n win = window;\n }\n return {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('user')) return;\n win.addEventListener('click', function (event) {\n var targetText, targetSelector;\n try {\n targetText = getNodeText(event.target);\n targetSelector = getNodeSelector(event.target, win);\n } catch (e) {\n targetText = '[hidden]';\n targetSelector = '[hidden]';\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z');\n }\n client.leaveBreadcrumb('UI click', {\n targetText: targetText,\n targetSelector: targetSelector\n }, 'user');\n }, true);\n }\n };\n }; // extract text content from a element\n\n var getNodeText = function (el) {\n var text = el.textContent || el.innerText || '';\n if (!text && (el.type === 'submit' || el.type === 'button')) text = el.value;\n text = text.replace(/^\\s+|\\s+$/g, ''); // trim whitespace\n\n return truncate(text, 140);\n }; // Create a label from tagname, id and css class of the element\n\n function getNodeSelector(el, win) {\n var parts = [el.tagName];\n if (el.id) parts.push('#' + el.id);\n if (el.className && el.className.length) parts.push(\".\" + el.className.split(' ').join('.')); // Can't get much more advanced with the current browser\n\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('');\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('');\n } // try to get a more specific selector if this one matches more than one element\n\n if (el.parentNode.childNodes.length > 1) {\n var index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1;\n parts.push(\":nth-child(\" + index + \")\");\n }\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join(''); // try prepending the parent node selector\n\n if (el.parentNode) return getNodeSelector(el.parentNode, win) + \" > \" + parts.join('');\n return parts.join('');\n }\n function truncate(value, length) {\n var ommision = '(...)';\n if (value && value.length <= length) return value;\n return value.slice(0, length - ommision.length) + ommision;\n }\n var _$navigationBreadcrumbs_50 = {};\n /*\n * Leaves breadcrumbs when navigation methods are called or events are emitted\n */\n _$navigationBreadcrumbs_50 = function (win) {\n if (win === void 0) {\n win = window;\n }\n var plugin = {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('navigation')) return; // returns a function that will drop a breadcrumb with a given name\n\n var drop = function (name) {\n return function () {\n return client.leaveBreadcrumb(name, {}, 'navigation');\n };\n }; // simple drops – just names, no meta\n\n win.addEventListener('pagehide', drop('Page hidden'), true);\n win.addEventListener('pageshow', drop('Page shown'), true);\n win.addEventListener('load', drop('Page loaded'), true);\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true); // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n\n win.addEventListener('load', function () {\n return win.addEventListener('popstate', drop('Navigated back'), true);\n }); // hashchange has some metadata that we care about\n\n win.addEventListener('hashchange', function (event) {\n var metadata = event.oldURL ? {\n from: relativeLocation(event.oldURL, win),\n to: relativeLocation(event.newURL, win),\n state: getCurrentState(win)\n } : {\n to: relativeLocation(win.location.href, win)\n };\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation');\n }, true); // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win);\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win);\n }\n };\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n win.history.replaceState._restore();\n win.history.pushState._restore();\n };\n }\n return plugin;\n };\n if (\"production\" !== 'production') {\n _$navigationBreadcrumbs_50.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n win.history.replaceState._restore();\n win.history.pushState._restore();\n };\n } // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n // just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\n\n var relativeLocation = function (url, win) {\n var a = win.document.createElement('A');\n a.href = url;\n return \"\" + a.pathname + a.search + a.hash;\n };\n var stateChangeToMetadata = function (win, state, title, url) {\n var currentPath = relativeLocation(win.location.href, win);\n return {\n title: title,\n state: state,\n prevState: getCurrentState(win),\n to: url || currentPath,\n from: currentPath\n };\n };\n var wrapHistoryFn = function (client, target, fn, win) {\n var orig = target[fn];\n target[fn] = function (state, title, url) {\n client.leaveBreadcrumb(\"History \" + fn, stateChangeToMetadata(win, state, title, url), 'navigation'); // if throttle plugin is in use, reset the event sent count\n\n if (typeof client.resetEventCount === 'function') client.resetEventCount(); // if the client is operating in auto session-mode, a new route should trigger a new session\n\n if (client._config.autoTrackSessions) client.startSession(); // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n\n orig.apply(target, [state, title].concat(url !== undefined ? url : []));\n };\n if (\"production\" !== 'production') {\n target[fn]._restore = function () {\n target[fn] = orig;\n };\n }\n };\n var getCurrentState = function (win) {\n try {\n return win.history.state;\n } catch (e) {}\n };\n var BREADCRUMB_TYPE = 'request';\n\n /* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */\n ;\n /*\n * Leaves breadcrumbs when network requests occur\n */\n\n var _$networkBreadcrumbs_51 = function (_ignoredUrls, win) {\n if (_ignoredUrls === void 0) {\n _ignoredUrls = [];\n }\n if (win === void 0) {\n win = window;\n }\n var restoreFunctions = [];\n var plugin = {\n load: function (client) {\n if (!client._isBreadcrumbTypeEnabled('request')) return;\n var ignoredUrls = [client._config.endpoints.notify, client._config.endpoints.sessions].concat(_ignoredUrls);\n monkeyPatchXMLHttpRequest();\n monkeyPatchFetch(); // XMLHttpRequest monkey patch\n\n function monkeyPatchXMLHttpRequest() {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return;\n var nativeOpen = win.XMLHttpRequest.prototype.open; // override native open()\n\n win.XMLHttpRequest.prototype.open = function open(method, url) {\n var _this = this;\n var requestSetupKey = false;\n var error = function () {\n return handleXHRError(method, url);\n };\n var load = function () {\n return handleXHRLoad(method, url, _this.status);\n }; // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n\n if (requestSetupKey) {\n this.removeEventListener('load', load);\n this.removeEventListener('error', error);\n } // attach load event listener\n\n this.addEventListener('load', load); // attach error event listener\n\n this.addEventListener('error', error);\n requestSetupKey = true;\n nativeOpen.apply(this, arguments);\n };\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.XMLHttpRequest.prototype.open = nativeOpen;\n });\n }\n }\n function handleXHRLoad(method, url, status) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n return;\n } // an XMLHttpRequest's URL can be an object as long as its 'toString'\n // returns a URL, e.g. a HTMLAnchorElement\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n var metadata = {\n status: status,\n request: method + \" \" + url\n };\n if (status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE);\n }\n }\n function handleXHRError(method, url) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n return;\n }\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n } // failed to contact server\n\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n } // window.fetch monkey patch\n\n function monkeyPatchFetch() {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return;\n var oldFetch = win.fetch;\n win.fetch = function fetch() {\n var _arguments = arguments;\n var urlOrRequest = arguments[0];\n var options = arguments[1];\n var method;\n var url = null;\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url;\n if (options && 'method' in options) {\n method = options.method;\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method;\n }\n } else {\n url = urlOrRequest;\n if (options && 'method' in options) {\n method = options.method;\n }\n }\n if (method === undefined) {\n method = 'GET';\n }\n return new Promise(function (resolve, reject) {\n // pass through to native fetch\n oldFetch.apply(void 0, _arguments).then(function (response) {\n handleFetchSuccess(response, method, url);\n resolve(response);\n })[\"catch\"](function (error) {\n handleFetchError(method, url);\n reject(error);\n });\n });\n };\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.fetch = oldFetch;\n });\n }\n }\n var handleFetchSuccess = function (response, method, url) {\n var metadata = {\n status: response.status,\n request: method + \" \" + url\n };\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE);\n }\n };\n var handleFetchError = function (method, url) {\n client.leaveBreadcrumb('fetch() error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n };\n }\n };\n if (\"production\" !== 'production') {\n plugin.destroy = function () {\n restoreFunctions.forEach(function (fn) {\n return fn();\n });\n restoreFunctions = [];\n };\n }\n return plugin;\n };\n\n /* removed: var _$intRange_24 = require('@bugsnag/core/lib/validators/int-range'); */\n ;\n /*\n * Throttles and dedupes events\n */\n\n var _$throttle_52 = {\n load: function (client) {\n // track sent events for each init of the plugin\n var n = 0; // add onError hook\n\n client.addOnError(function (event) {\n // have max events been sent already?\n if (n >= client._config.maxEvents) {\n client._logger.warn(\"Cancelling event send due to maxEvents per session limit of \" + client._config.maxEvents + \" being reached\");\n return false;\n }\n n++;\n });\n client.resetEventCount = function () {\n n = 0;\n };\n },\n configSchema: {\n maxEvents: {\n defaultValue: function () {\n return 10;\n },\n message: 'should be a positive integer ≤100',\n validate: function (val) {\n return _$intRange_24(1, 100)(val);\n }\n }\n }\n };\n var _$stripQueryString_53 = {};\n /*\n * Remove query strings (and fragments) from stacktraces\n */\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n\n /* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */\n ;\n _$stripQueryString_53 = {\n load: function (client) {\n client.addOnError(function (event) {\n var allFrames = _$reduce_17(event.errors, function (accum, er) {\n return accum.concat(er.stacktrace);\n }, []);\n _$map_16(allFrames, function (frame) {\n frame.file = strip(frame.file);\n });\n });\n }\n };\n var strip = _$stripQueryString_53._strip = function (str) {\n return typeof str === 'string' ? str.replace(/\\?.*$/, '').replace(/#.*$/, '') : str;\n };\n\n /*\n * Automatically notifies Bugsnag when window.onerror is called\n */\n var _$onerror_54 = function (win, component) {\n if (win === void 0) {\n win = window;\n }\n if (component === void 0) {\n component = 'window onerror';\n }\n return {\n load: function (client) {\n if (!client._config.autoDetectErrors) return;\n if (!client._config.enabledErrorTypes.unhandledExceptions) return;\n function onerror(messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z');\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event; // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n } else if (\n // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n typeof messageOrEvent === 'object' && messageOrEvent !== null && (!url || typeof url !== 'string') && !lineNo && !charNo && !error) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n var name = messageOrEvent.type ? \"Event: \" + messageOrEvent.type : 'Error'; // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n\n var message = messageOrEvent.message || messageOrEvent.detail || '';\n event = client.Event.create({\n name: name,\n message: message\n }, true, handledState, component, 1); // provide the original thing onerror received – not our error-like object we passed to _notify\n\n event.originalError = messageOrEvent; // include the raw input as metadata – it might contain more info than we extracted\n\n event.addMetadata(component, {\n event: messageOrEvent,\n extraParameters: url\n });\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n }\n client._notify(event);\n }\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments);\n }\n var prevOnError = win.onerror;\n win.onerror = onerror;\n }\n };\n }; // Sometimes the stacktrace has less information than was passed to window.onerror.\n // This function will augment the first stackframe with any useful info that was\n // received as arguments to the onerror callback.\n\n var decorateStack = function (stack, url, lineNo, charNo) {\n if (!stack[0]) stack.push({});\n var culprit = stack[0];\n if (!culprit.file && typeof url === 'string') culprit.file = url;\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo;\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo;\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter;\n }\n }\n };\n var isActualNumber = function (n) {\n return typeof n === 'number' && String.call(n) !== 'NaN';\n };\n\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n\n /* removed: var _$iserror_20 = require('@bugsnag/core/lib/iserror'); */\n ;\n var _listener;\n /*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\n\n var _$unhandledRejection_55 = function (win) {\n if (win === void 0) {\n win = window;\n }\n var plugin = {\n load: function (client) {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return;\n var listener = function (evt) {\n var error = evt.reason;\n var isBluebird = false; // accessing properties on evt.detail can throw errors (see #394)\n\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason;\n isBluebird = true;\n }\n } catch (e) {}\n var event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledPromiseRejection'\n }\n }, 'unhandledrejection handler', 1, client._logger);\n if (isBluebird) {\n _$map_16(event.errors[0].stacktrace, fixBluebirdStacktrace(error));\n }\n client._notify(event, function (event) {\n if (_$iserror_20(event.originalError) && !event.originalError.stack) {\n var _event$addMetadata;\n event.addMetadata('unhandledRejection handler', (_event$addMetadata = {}, _event$addMetadata[Object.prototype.toString.call(event.originalError)] = {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }, _event$addMetadata));\n }\n });\n };\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener);\n } else {\n win.onunhandledrejection = function (reason, promise) {\n listener({\n detail: {\n reason: reason,\n promise: promise\n }\n });\n };\n }\n _listener = listener;\n }\n };\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener);\n } else {\n win.onunhandledrejection = null;\n }\n }\n _listener = null;\n };\n }\n return plugin;\n }; // The stack parser on bluebird stacks in FF get a suprious first frame:\n //\n // Error: derp\n // b@http://localhost:5000/bluebird.html:22:24\n // a@http://localhost:5000/bluebird.html:18:9\n // @http://localhost:5000/bluebird.html:14:9\n //\n // results in\n // […]\n // 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n // 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n // 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n // 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n //\n // so the following reduce/accumulator function removes such frames\n //\n // Bluebird pads method names with spaces so trim that too…\n // https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\n\n var fixBluebirdStacktrace = function (error) {\n return function (frame) {\n if (frame.file === error.toString()) return;\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '');\n }\n };\n };\n var _$notifier_2 = {};\n var name = 'Bugsnag JavaScript';\n var version = '7.19.0';\n var url = 'https://github.com/bugsnag/bugsnag-js';\n\n /* removed: var _$Client_4 = require('@bugsnag/core/client'); */\n ;\n\n /* removed: var _$Event_6 = require('@bugsnag/core/event'); */\n ;\n\n /* removed: var _$Session_35 = require('@bugsnag/core/session'); */\n ;\n\n /* removed: var _$Breadcrumb_3 = require('@bugsnag/core/breadcrumb'); */\n ;\n\n /* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */\n ;\n\n /* removed: var _$keys_15 = require('@bugsnag/core/lib/es-utils/keys'); */\n ;\n\n /* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */\n ; // extend the base config schema with some browser-specific options\n\n var __schema_2 = _$assign_11({}, _$config_5.schema, _$config_1);\n\n /* removed: var _$onerror_54 = require('@bugsnag/plugin-window-onerror'); */\n ;\n\n /* removed: var _$unhandledRejection_55 = require('@bugsnag/plugin-window-unhandled-rejection'); */\n ;\n\n /* removed: var _$app_38 = require('@bugsnag/plugin-app-duration'); */\n ;\n\n /* removed: var _$device_40 = require('@bugsnag/plugin-browser-device'); */\n ;\n\n /* removed: var _$context_39 = require('@bugsnag/plugin-browser-context'); */\n ;\n\n /* removed: var _$request_44 = require('@bugsnag/plugin-browser-request'); */\n ;\n\n /* removed: var _$throttle_52 = require('@bugsnag/plugin-simple-throttle'); */\n ;\n\n /* removed: var _$consoleBreadcrumbs_47 = require('@bugsnag/plugin-console-breadcrumbs'); */\n ;\n\n /* removed: var _$networkBreadcrumbs_51 = require('@bugsnag/plugin-network-breadcrumbs'); */\n ;\n\n /* removed: var _$navigationBreadcrumbs_50 = require('@bugsnag/plugin-navigation-breadcrumbs'); */\n ;\n\n /* removed: var _$interactionBreadcrumbs_49 = require('@bugsnag/plugin-interaction-breadcrumbs'); */\n ;\n\n /* removed: var _$inlineScriptContent_48 = require('@bugsnag/plugin-inline-script-content'); */\n ;\n\n /* removed: var _$session_45 = require('@bugsnag/plugin-browser-session'); */\n ;\n\n /* removed: var _$clientIp_46 = require('@bugsnag/plugin-client-ip'); */\n ;\n\n /* removed: var _$stripQueryString_53 = require('@bugsnag/plugin-strip-query-string'); */\n ; // delivery mechanisms\n\n /* removed: var _$delivery_36 = require('@bugsnag/delivery-x-domain-request'); */\n ;\n\n /* removed: var _$delivery_37 = require('@bugsnag/delivery-xml-http-request'); */\n ;\n var Bugsnag = {\n _client: null,\n createClient: function (opts) {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = {\n apiKey: opts\n };\n if (!opts) opts = {};\n var internalPlugins = [\n // add browser-specific plugins\n _$app_38, _$device_40(), _$context_39(), _$request_44(), _$throttle_52, _$session_45, _$clientIp_46, _$stripQueryString_53, _$onerror_54(), _$unhandledRejection_55(), _$navigationBreadcrumbs_50(), _$interactionBreadcrumbs_49(), _$networkBreadcrumbs_51(), _$consoleBreadcrumbs_47,\n // this one added last to avoid wrapping functionality before bugsnag uses it\n _$inlineScriptContent_48()]; // configure a client with user supplied options\n\n var bugsnag = new _$Client_4(opts, __schema_2, internalPlugins, {\n name: name,\n version: version,\n url: url\n }); // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n\n bugsnag._setDelivery(window.XDomainRequest ? _$delivery_36 : _$delivery_37);\n bugsnag._logger.debug('Loaded!');\n bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state');\n return bugsnag._config.autoTrackSessions ? bugsnag.startSession() : bugsnag;\n },\n start: function (opts) {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.');\n return Bugsnag._client;\n }\n Bugsnag._client = Bugsnag.createClient(opts);\n return Bugsnag._client;\n },\n isStarted: function () {\n return Bugsnag._client != null;\n }\n };\n _$map_16(['resetEventCount'].concat(_$keys_15(_$Client_4.prototype)), function (m) {\n if (/^_/.test(m)) return;\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(\"Bugsnag.\" + m + \"() was called before Bugsnag.start()\");\n Bugsnag._client._depth += 1;\n var ret = Bugsnag._client[m].apply(Bugsnag._client, arguments);\n Bugsnag._client._depth -= 1;\n return ret;\n };\n });\n _$notifier_2 = Bugsnag;\n _$notifier_2.Client = _$Client_4;\n _$notifier_2.Event = _$Event_6;\n _$notifier_2.Session = _$Session_35;\n _$notifier_2.Breadcrumb = _$Breadcrumb_3; // Export a \"default\" property for compatibility with ESM imports\n\n _$notifier_2[\"default\"] = Bugsnag;\n return _$notifier_2;\n});","const ignoreTikTokPixel = (bugsnagEvent) => {\n if (bugsnagEvent && bugsnagEvent.errors && bugsnagEvent.errors[\"filter\"]) {\n const errorsThatLookLikeTikTokPixel = bugsnagEvent.errors.filter( (error) => {\n if (error && error.errorMessage) {\n const looksLikeTikTokPixel = error.errorMessage.indexOf(\"_AutofillCallbackHandler\") != -1\n return looksLikeTikTokPixel\n } else {\n return false\n }\n })\n return errorsThatLookLikeTikTokPixel.length == 0\n }\n else {\n return true\n }\n}\n\n// Export each callback separately so they can be unit tested\nexport { ignoreTikTokPixel }\n","import Bugsnag from \"@bugsnag/js\"\n\nimport { ignoreTikTokPixel } from \"./ignoreErrors\"\n\nconst dasherize = (string) => {\n return string.replace(/[A-Z]/g, (char, index) => {\n if (index === 0) {\n return char.toLowerCase()\n }\n else {\n return \"-\" + char.toLowerCase()\n }\n })\n}\n\nconst fetchRequredDataElement = (document,property) => {\n const dataAttributeName = \"data-\" + dasherize(property)\n const value = document.body.dataset[property]\n if (value && value.trim().length > 0) {\n return value\n }\n else {\n throw `No value for ${dataAttributeName} on the document body: ${value}`\n }\n}\n\nconst enableIfNeeded = (document) => {\n\n const enableBugsnag = document.body.dataset.setupBugsnag === \"true\"\n const railsEnv = fetchRequredDataElement(document,\"railsEnv\")\n\n let log = () => {}\n if (railsEnv === \"development\") {\n log = (message) => {\n console.log(`[bugsnag/enableIfNeeded]: ${message}`)\n }\n }\n\n if (enableBugsnag) {\n\n log(\"Bugsnag enabled for this page\")\n\n const apiKey = fetchRequredDataElement(document,\"bugsnagJsApiKey\")\n const herokuReleaseVersion = fetchRequredDataElement(document,\"herokuReleaseVersion\")\n\n const bugsnagOptions = {\n apiKey: apiKey,\n appVersion: herokuReleaseVersion,\n enabledReleaseStages: [ \"production\" ],\n releaseStage: railsEnv,\n onError: ignoreTikTokPixel,\n }\n\n log(`Bugsnag options ${JSON.stringify(bugsnagOptions)}`)\n\n Bugsnag.start(bugsnagOptions)\n }\n else {\n log(\"Bugsnag NOT enabled for this page\")\n }\n}\n\nexport { enableIfNeeded }\n","import { enableIfNeeded } from \"./enableIfNeeded\"\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n enableIfNeeded(window.document)\n})\n","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*!\nTurbo 8.0.0-beta.1\nCopyright © 2023 37signals LLC\n */\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Javan Makhmali\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return;\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name);\n }\n})(HTMLFormElement.prototype);\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype) return;\n let prototype = window.Event.prototype;\n // Certain versions of Safari 15 have a bug where they won't\n // populate the submitter. This hurts TurboDrive's enable/disable detection.\n // See https://bugs.webkit.org/show_bug.cgi?id=229660\n if (\"SubmitEvent\" in window) {\n const prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n prototype = prototypeOfSubmitEvent;\n } else {\n return; // polyfill not needed\n }\n }\n\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n }\n });\n})();\nconst FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * \n * \n * Show all expanded messages in this frame.\n * \n *\n *
\n * Show response from this form within this frame.\n *
\n *
\n */\nclass FrameElement extends HTMLElement {\n static get observedAttributes() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n return this.delegate.sourceURLReloaded();\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"complete\") {\n this.delegate.completeChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else {\n this.delegate.disabledChanged();\n }\n }\n\n /**\n * Gets the URL to lazily load source HTML from\n */\n get src() {\n return this.getAttribute(\"src\");\n }\n\n /**\n * Sets the URL to lazily load source HTML from\n */\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n\n /**\n * Gets the refresh mode for the frame.\n */\n get refresh() {\n return this.getAttribute(\"refresh\");\n }\n\n /**\n * Sets the refresh mode for the frame.\n */\n set refresh(value) {\n if (value) {\n this.setAttribute(\"refresh\", value);\n } else {\n this.removeAttribute(\"refresh\");\n }\n }\n\n /**\n * Determines if the element is loading\n */\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n\n /**\n * Sets the value of if the element is loading\n */\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n\n /**\n * Determines if the element has finished loading\n */\n get complete() {\n return !this.delegate.isLoading;\n }\n\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isPreview() {\n var _this$ownerDocument, _this$ownerDocument$d;\n return (_this$ownerDocument = this.ownerDocument) === null || _this$ownerDocument === void 0 ? void 0 : (_this$ownerDocument$d = _this$ownerDocument.documentElement) === null || _this$ownerDocument$d === void 0 ? void 0 : _this$ownerDocument$d.hasAttribute(\"data-turbo-preview\");\n }\n}\nFrameElement.delegateConstructor = undefined;\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n default:\n return FrameLoadingStyle.eager;\n }\n}\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n // eslint-disable-next-line no-cond-assign\n } else if (anchorMatch = url.href.match(/#(.*)$/)) {\n return anchorMatch[1];\n }\n}\nfunction getAction$1(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n } else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n } else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const _ref of sourceElement.attributes) {\n const name = _ref.name;\n const value = _ref.value;\n destinationElement.setAttribute(name, value);\n }\n}\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\nfunction dispatch(eventName) {\n let _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n target = _ref2.target,\n cancelable = _ref2.cancelable,\n detail = _ref2.detail;\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail\n });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick();\n } else {\n return nextAnimationFrame();\n }\n}\nfunction nextAnimationFrame() {\n return new Promise(resolve => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise(resolve => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map(line => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.from({\n length: 36\n }).map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n } else if (i == 14) {\n return \"4\";\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n } else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n }).join(\"\");\n}\nfunction getAttribute(attributeName) {\n for (var _len2 = arguments.length, elements = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n elements[_key2 - 1] = arguments[_key2];\n }\n for (const value of elements.map(element => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value;\n }\n return null;\n}\nfunction hasAttribute(attributeName) {\n for (var _len3 = arguments.length, elements = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n elements[_key3 - 1] = arguments[_key3];\n }\n return elements.some(element => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy() {\n for (var _len4 = arguments.length, elements = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n elements[_key4] = arguments[_key4];\n }\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState() {\n for (var _len5 = arguments.length, elements = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n elements[_key5] = arguments[_key5];\n }\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\nfunction waitForLoad(element) {\n let timeoutInMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n return new Promise(resolve => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n element.addEventListener(\"load\", onComplete, {\n once: true\n });\n element.addEventListener(\"error\", onComplete, {\n once: true\n });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction() {\n for (var _len6 = arguments.length, elements = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n elements[_key6] = arguments[_key6];\n }\n const action = getAttribute(\"data-turbo-action\", ...elements);\n return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content;\n}\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n element.setAttribute(\"content\", content);\n return element;\n}\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n var _element$getRootNode;\n return element.closest(selector) || findClosestRecursively(element.assignedSlot || ((_element$getRootNode = element.getRootNode()) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.host), selector);\n }\n}\nfunction elementIsFocusable(element) {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\";\n}\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable);\n}\nasync function around(callback, reader) {\n const before = reader();\n callback();\n await nextAnimationFrame();\n const after = reader();\n return [before, after];\n}\nfunction fetch(url) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const modifiedHeaders = new Headers(options.headers || {});\n const requestUID = uuid();\n window.Turbo.session.recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n return window.fetch(url, _objectSpread(_objectSpread({}, options), {}, {\n headers: modifiedHeaders\n }));\n}\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n case \"post\":\n return FetchMethod.post;\n case \"put\":\n return FetchMethod.put;\n case \"patch\":\n return FetchMethod.patch;\n case \"delete\":\n return FetchMethod.delete;\n }\n}\nconst FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart;\n case FetchEnctype.plain:\n return FetchEnctype.plain;\n default:\n return FetchEnctype.urlEncoded;\n }\n}\nconst FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\nvar _resolveRequestPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveRequestPromise\");\nvar _allowRequestToBeIntercepted = /*#__PURE__*/_classPrivateFieldLooseKey(\"allowRequestToBeIntercepted\");\nvar _willDelegateErrorHandling = /*#__PURE__*/_classPrivateFieldLooseKey(\"willDelegateErrorHandling\");\nclass FetchRequest {\n constructor(delegate, method, location) {\n var _this$delegate$referr;\n let requestBody = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new URLSearchParams();\n let target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n let enctype = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : FetchEnctype.urlEncoded;\n Object.defineProperty(this, _willDelegateErrorHandling, {\n value: _willDelegateErrorHandling2\n });\n Object.defineProperty(this, _allowRequestToBeIntercepted, {\n value: _allowRequestToBeIntercepted2\n });\n this.abortController = new AbortController();\n Object.defineProperty(this, _resolveRequestPromise, {\n writable: true,\n value: _value => {}\n });\n const _buildResourceAndBody = buildResourceAndBody(expandURL(location), method, requestBody, enctype),\n _buildResourceAndBody2 = _slicedToArray(_buildResourceAndBody, 2),\n url = _buildResourceAndBody2[0],\n body = _buildResourceAndBody2[1];\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method,\n headers: _objectSpread({}, this.defaultHeaders),\n body: body,\n signal: this.abortSignal,\n referrer: (_this$delegate$referr = this.delegate.referrer) === null || _this$delegate$referr === void 0 ? void 0 : _this$delegate$referr.href\n };\n this.enctype = enctype;\n }\n get method() {\n return this.fetchOptions.method;\n }\n set method(value) {\n const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n this.url.search = \"\";\n const _buildResourceAndBody3 = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype),\n _buildResourceAndBody4 = _slicedToArray(_buildResourceAndBody3, 2),\n url = _buildResourceAndBody4[0],\n body = _buildResourceAndBody4[1];\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod;\n }\n get headers() {\n return this.fetchOptions.headers;\n }\n set headers(value) {\n this.fetchOptions.headers = value;\n }\n get body() {\n if (this.isSafe) {\n return this.url.searchParams;\n } else {\n return this.fetchOptions.body;\n }\n }\n set body(value) {\n this.fetchOptions.body = value;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n const fetchOptions = this.fetchOptions;\n this.delegate.prepareRequest(this);\n await _classPrivateFieldLooseBase(this, _allowRequestToBeIntercepted)[_allowRequestToBeIntercepted](fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n } catch (error) {\n if (error.name !== \"AbortError\") {\n if (_classPrivateFieldLooseBase(this, _willDelegateErrorHandling)[_willDelegateErrorHandling](error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error;\n }\n } finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: {\n fetchResponse\n },\n target: this.target\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n };\n }\n get isSafe() {\n return isSafe(this.method);\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n}\nasync function _allowRequestToBeIntercepted2(fetchOptions) {\n const requestInterception = new Promise(resolve => _classPrivateFieldLooseBase(this, _resolveRequestPromise)[_resolveRequestPromise] = resolve);\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: _classPrivateFieldLooseBase(this, _resolveRequestPromise)[_resolveRequestPromise]\n },\n target: this.target\n });\n this.url = event.detail.url;\n if (event.defaultPrevented) await requestInterception;\n}\nfunction _willDelegateErrorHandling2(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: {\n request: this,\n error: error\n }\n });\n return !event.defaultPrevented;\n}\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get;\n}\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n const searchParams = Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null];\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams];\n } else {\n return [resource, requestBody];\n }\n}\nfunction entriesExcludingFiles(requestBody) {\n const entries = [];\n for (const _ref3 of requestBody) {\n var _ref4 = _slicedToArray(_ref3, 2);\n const name = _ref4[0];\n const value = _ref4[1];\n if (value instanceof File) continue;else entries.push([name, value]);\n }\n return entries;\n}\nfunction mergeIntoURLSearchParams(url, requestBody) {\n const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n url.search = searchParams.toString();\n return url;\n}\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = entries => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry !== null && lastEntry !== void 0 && lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\nclass StreamMessage {\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n } else {\n return message;\n }\n }\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n element.replaceWith(streamElement);\n }\n return fragment;\n}\nconst FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\nclass FormSubmission {\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\n constructor(delegate, formElement, submitter) {\n let mustRedirect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n this.state = FormSubmissionState.initialized;\n const method = getMethod(formElement, submitter);\n const action = getAction(getFormAction(formElement, submitter), method);\n const body = buildFormData(formElement, submitter);\n const enctype = getEnctype(formElement, submitter);\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n get method() {\n return this.fetchRequest.method;\n }\n set method(value) {\n this.fetchRequest.method = value;\n }\n get action() {\n return this.fetchRequest.url.toString();\n }\n set action(value) {\n this.fetchRequest.url = expandURL(value);\n }\n get body() {\n return this.fetchRequest.body;\n }\n get enctype() {\n return this.fetchRequest.enctype;\n }\n get isSafe() {\n return this.fetchRequest.isSafe;\n }\n get location() {\n return this.fetchRequest.url;\n }\n\n // The submission process\n\n async start() {\n const initialized = FormSubmissionState.initialized,\n requesting = FormSubmissionState.requesting;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const stopping = FormSubmissionState.stopping,\n stopped = FormSubmissionState.stopped;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n var _this$submitter;\n this.state = FormSubmissionState.waiting;\n (_this$submitter = this.submitter) === null || _this$submitter === void 0 ? void 0 : _this$submitter.setAttribute(\"disabled\", \"\");\n this.setSubmitsWith();\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: {\n formSubmission: this\n }\n });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = {\n success: response.succeeded,\n fetchResponse: response\n };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = {\n success: true,\n fetchResponse: response\n };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = {\n success: false,\n fetchResponse: response\n };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = {\n success: false,\n error\n };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(_request) {\n var _this$submitter2;\n this.state = FormSubmissionState.stopped;\n (_this$submitter2 = this.submitter) === null || _this$submitter2 === void 0 ? void 0 : _this$submitter2.removeAttribute(\"disabled\");\n this.resetSubmitterText();\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: _objectSpread({\n formSubmission: this\n }, this.result)\n });\n this.delegate.formSubmissionFinished(this);\n }\n\n // Private\n\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return;\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return;\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect;\n }\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n get submitsWith() {\n var _this$submitter3;\n return (_this$submitter3 = this.submitter) === null || _this$submitter3 === void 0 ? void 0 : _this$submitter3.getAttribute(\"data-turbo-submits-with\");\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name) {\n formData.append(name, value || \"\");\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find(cookie => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction getFormAction(formElement, submitter) {\n const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n if (submitter !== null && submitter !== void 0 && submitter.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\";\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n}\nfunction getAction(formAction, fetchMethod) {\n const action = expandURL(formAction);\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n return action;\n}\nfunction getMethod(formElement, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n}\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString((submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formenctype\")) || formElement.enctype);\n}\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get activeElement() {\n return this.element.ownerDocument.activeElement;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n return queryAutofocusableElement(this.element);\n }\n get permanentElements() {\n return queryPermanentElementsAll(this.element);\n }\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const id = currentPermanentElement.id;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\nclass FormSubmitObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = event => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form && submissionDoesNotDismissDialog(form, submitter) && submissionDoesNotTargetIFrame(form, submitter) && this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n if (submitter !== null && submitter !== void 0 && submitter.hasAttribute(\"formtarget\") || form.hasAttribute(\"target\")) {\n const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement) return false;\n }\n return true;\n } else {\n return true;\n }\n}\nvar _resolveRenderPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveRenderPromise\");\nvar _resolveInterceptionPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveInterceptionPromise\");\nclass View {\n constructor(delegate, element) {\n Object.defineProperty(this, _resolveRenderPromise, {\n writable: true,\n value: _value => {}\n });\n Object.defineProperty(this, _resolveInterceptionPromise, {\n writable: true,\n value: _value => {}\n });\n this.delegate = delegate;\n this.element = element;\n }\n\n // Scrolling\n\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition(_ref5) {\n let x = _ref5.x,\n y = _ref5.y;\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n get scrollRoot() {\n return window;\n }\n\n // Rendering\n\n async render(renderer) {\n const isPreview = renderer.isPreview,\n shouldRender = renderer.shouldRender,\n snapshot = renderer.newSnapshot;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise(resolve => _classPrivateFieldLooseBase(this, _resolveRenderPromise)[_resolveRenderPromise] = resolve);\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise(resolve => _classPrivateFieldLooseBase(this, _resolveInterceptionPromise)[_resolveInterceptionPromise] = resolve);\n const options = {\n resume: _classPrivateFieldLooseBase(this, _resolveInterceptionPromise)[_resolveInterceptionPromise],\n render: this.renderer.renderElement\n };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, isPreview, options);\n if (!immediateRender) await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n _classPrivateFieldLooseBase(this, _resolveRenderPromise)[_resolveRenderPromise](undefined);\n delete this.renderPromise;\n }\n } else {\n this.invalidate(renderer.reloadReason);\n }\n }\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `Content missing`;\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = event => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = event => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n };\n this.willVisit = _event => {\n delete this.clickEvent;\n };\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\nclass LinkClickObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = event => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = event.composedPath && event.composedPath()[0] || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link)) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\nfunction doesNotTargetIFrame(anchor) {\n if (anchor.hasAttribute(\"target\")) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement) return false;\n }\n return true;\n } else {\n return true;\n }\n}\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, originalEvent) {\n return this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) && (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"));\n }\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n const type = \"hidden\";\n for (const _ref6 of location.searchParams) {\n var _ref7 = _slicedToArray(_ref6, 2);\n const name = _ref7[0];\n const value = _ref7[1];\n form.append(Object.assign(document.createElement(\"input\"), {\n type,\n name,\n value\n }));\n }\n const action = Object.assign(location, {\n search: \"\"\n });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), {\n once: true\n });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const _this$permanentElemen = _slicedToArray(this.permanentElementMap[id], 2),\n currentPermanentElement = _this$permanentElemen[0],\n newPermanentElement = _this$permanentElemen[1];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const _this$permanentElemen2 = _slicedToArray(this.permanentElementMap[id], 1),\n currentPermanentElement = _this$permanentElemen2[0];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find(element => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\nvar _activeElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeElement\");\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview) {\n let willRender = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n Object.defineProperty(this, _activeElement, {\n writable: true,\n value: null\n });\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => this.resolvingFunctions = {\n resolve,\n reject\n });\n }\n get shouldRender() {\n return true;\n }\n get reloadReason() {\n return;\n }\n prepareToRender() {\n return;\n }\n render() {\n // Abstract method\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\n }\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement) {\n if (_classPrivateFieldLooseBase(this, _activeElement)[_activeElement]) return;\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n _classPrivateFieldLooseBase(this, _activeElement)[_activeElement] = this.currentSnapshot.activeElement;\n }\n }\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(_classPrivateFieldLooseBase(this, _activeElement)[_activeElement]) && _classPrivateFieldLooseBase(this, _activeElement)[_activeElement] instanceof HTMLElement) {\n _classPrivateFieldLooseBase(this, _activeElement)[_activeElement].focus();\n _classPrivateFieldLooseBase(this, _activeElement)[_activeElement] = null;\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n get renderMethod() {\n return \"replace\";\n }\n}\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n var _frameElement$ownerDo;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n const frameElement = newElement;\n const sourceRange = (_frameElement$ownerDo = frameElement.ownerDocument) === null || _frameElement$ownerDo === void 0 ? void 0 : _frameElement$ownerDo.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview) {\n let willRender = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n if (element) {\n element.scrollIntoView({\n block,\n behavior\n });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n } else {\n return defaultValue;\n }\n}\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n } else {\n return defaultValue;\n }\n}\nclass ProgressBar {\n /*ms*/\n\n static get defaultCSS() {\n return unindent`\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n\n // Private\n\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n get cspNonce() {\n return getMetaContent(\"csp-nonce\");\n }\n}\nProgressBar.animationDuration = 300;\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children.filter(element => !elementIsNoscript(element)).map(element => elementWithoutNonce(element)).reduce((result, element) => {\n const outerHTML = element.outerHTML;\n const details = outerHTML in result ? result[outerHTML] : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return _objectSpread(_objectSpread({}, result), {}, {\n [outerHTML]: _objectSpread(_objectSpread({}, details), {}, {\n elements: [...details.elements, element]\n })\n });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML).filter(outerHTML => this.detailsByOuterHTML[outerHTML].tracked).join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML).filter(outerHTML => !(outerHTML in snapshot.detailsByOuterHTML)).map(outerHTML => this.detailsByOuterHTML[outerHTML]).filter(_ref8 => {\n let type = _ref8.type;\n return type == matchedType;\n }).map(_ref9 => {\n let _ref9$elements = _slicedToArray(_ref9.elements, 1),\n element = _ref9$elements[0];\n return element;\n });\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const _this$detailsByOuterH = this.detailsByOuterHTML[outerHTML],\n type = _this$detailsByOuterH.type,\n tracked = _this$detailsByOuterH.tracked,\n elements = _this$detailsByOuterH.elements;\n if (type == null && !tracked) {\n return [...result, ...elements];\n } else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n } else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const _this$detailsByOuterH2 = _slicedToArray(this.detailsByOuterHTML[outerHTML].elements, 1),\n element = _this$detailsByOuterH2[0];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined | undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\";\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\nclass PageSnapshot extends Snapshot {\n static fromHTMLString() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument(_ref10) {\n let documentElement = _ref10.documentElement,\n body = _ref10.body,\n head = _ref10.head;\n return new this(documentElement, body, new HeadSnapshot(head));\n }\n constructor(documentElement, body, headSnapshot) {\n super(body);\n this.documentElement = documentElement;\n this.headSnapshot = headSnapshot;\n }\n clone() {\n const clonedElement = this.element.cloneNode(true);\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n for (const _ref11 of selectElements.entries()) {\n var _ref12 = _slicedToArray(_ref11, 2);\n const index = _ref12[0];\n const source = _ref12[1];\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions) option.selected = false;\n for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n }\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot);\n }\n get lang() {\n return this.documentElement.getAttribute(\"lang\");\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _this$getSetting;\n const root = (_this$getSetting = this.getSetting(\"root\")) !== null && _this$getSetting !== void 0 ? _this$getSetting : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n get prefersViewTransitions() {\n return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\";\n }\n get shouldMorphPage() {\n return this.getSetting(\"refresh-method\") === \"morph\";\n }\n get shouldPreserveScrollPosition() {\n return this.getSetting(\"refresh-scroll\") === \"preserve\";\n }\n\n // Private\n\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\nvar _viewTransitionStarted = /*#__PURE__*/_classPrivateFieldLooseKey(\"viewTransitionStarted\");\nvar _lastOperation = /*#__PURE__*/_classPrivateFieldLooseKey(\"lastOperation\");\nclass ViewTransitioner {\n constructor() {\n Object.defineProperty(this, _viewTransitionStarted, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _lastOperation, {\n writable: true,\n value: Promise.resolve()\n });\n }\n renderChange(useViewTransition, render) {\n if (useViewTransition && this.viewTransitionsAvailable && !_classPrivateFieldLooseBase(this, _viewTransitionStarted)[_viewTransitionStarted]) {\n _classPrivateFieldLooseBase(this, _viewTransitionStarted)[_viewTransitionStarted] = true;\n _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation] = _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation].then(async () => {\n await document.startViewTransition(render).finished;\n });\n } else {\n _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation] = _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation].then(render);\n }\n return _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation];\n }\n get viewTransitionsAvailable() {\n return document.startViewTransition;\n }\n}\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\nconst TimingMetric = {\n visitStart: \"visitStart\",\n requestStart: \"requestStart\",\n requestEnd: \"requestEnd\",\n visitEnd: \"visitEnd\"\n};\nconst VisitState = {\n initialized: \"initialized\",\n started: \"started\",\n canceled: \"canceled\",\n failed: \"failed\",\n completed: \"completed\"\n};\nconst SystemStatusCode = {\n networkFailure: 0,\n timeoutFailure: -1,\n contentTypeMismatch: -2\n};\nclass Visit {\n constructor(delegate, location, restorationIdentifier) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n this.identifier = uuid();\n // Required by turbo-ios\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.viewTransitioner = new ViewTransitioner();\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const _defaultOptions$optio = _objectSpread(_objectSpread({}, defaultOptions), options),\n action = _defaultOptions$optio.action,\n historyChanged = _defaultOptions$optio.historyChanged,\n referrer = _defaultOptions$optio.referrer,\n snapshot = _defaultOptions$optio.snapshot,\n snapshotHTML = _defaultOptions$optio.snapshotHTML,\n response = _defaultOptions$optio.response,\n visitCachedSnapshot = _defaultOptions$optio.visitCachedSnapshot,\n willRender = _defaultOptions$optio.willRender,\n updateHistory = _defaultOptions$optio.updateHistory,\n shouldCacheSnapshot = _defaultOptions$optio.shouldCacheSnapshot,\n acceptsStreamResponse = _defaultOptions$optio.acceptsStreamResponse;\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n this.delegate.visitCompleted(this);\n }\n }\n changeHistory() {\n if (!this.historyChanged && this.updateHistory) {\n var _this$referrer;\n const actionForHistory = this.location.href === ((_this$referrer = this.referrer) === null || _this$referrer === void 0 ? void 0 : _this$referrer.href) ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse() {\n let response = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.response;\n this.response = response;\n if (response) {\n const statusCode = response.statusCode;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const _this$response = this.response,\n statusCode = _this$response.statusCode,\n responseHTML = _this$response.responseHTML;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n await this.renderPageSnapshot(snapshot, false);\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n await this.renderPageSnapshot(snapshot, isPreview);\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _this$response2;\n if (this.redirectedToLocation && !this.followedRedirect && (_this$response2 = this.response) !== null && _this$response2 !== void 0 && _this$response2.redirected) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(_request, _response) {}\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const redirected = response.redirected,\n statusCode = response.statusCode;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({\n statusCode: statusCode,\n responseHTML,\n redirected\n });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const redirected = response.redirected,\n statusCode = response.statusCode;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.recordResponse({\n statusCode: statusCode,\n responseHTML,\n redirected\n });\n }\n }\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n requestFinished() {\n this.finishRequest();\n }\n\n // Scrolling\n\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded && !this.view.snapshot.shouldPreserveScrollPosition) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const scrollPosition = this.restorationData.scrollPosition;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n\n // Instrumentation\n\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return _objectSpread({}, this.timingMetrics);\n }\n\n // Private\n\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n } else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then(snapshot => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise(resolve => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n async renderPageSnapshot(snapshot, isPreview) {\n await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n });\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar();\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n if (locationIsVisitable(location, this.navigator.rootLocation)) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n } else {\n window.location.href = location.toString();\n }\n }\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode\n }\n });\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(_visit) {}\n visitCompleted(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n pageInvalidated(reason) {\n this.reload(reason);\n }\n visitFailed(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitRendered(_visit) {}\n\n // Form Submission Delegate\n\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n\n // Private\n\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload(reason) {\n var _this$location;\n dispatch(\"turbo:reload\", {\n detail: reason\n });\n window.location.href = ((_this$location = this.location) === null || _this$location === void 0 ? void 0 : _this$location.toString()) || window.location.href;\n }\n get navigator() {\n return this.session.navigator;\n }\n}\nclass CacheObserver {\n constructor() {\n this.selector = \"[data-turbo-temporary]\";\n this.deprecatedSelector = \"[data-turbo-cache=false]\";\n this.started = false;\n this.removeTemporaryElements = _event => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n };\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n }\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n if (elements.length) {\n console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n }\n return [...elements];\n }\n}\nvar _shouldSubmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldSubmit\");\nvar _shouldRedirect = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldRedirect\");\nvar _findFrameElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"findFrameElement\");\nclass FrameRedirector {\n constructor(session, _element2) {\n Object.defineProperty(this, _findFrameElement, {\n value: _findFrameElement2\n });\n Object.defineProperty(this, _shouldRedirect, {\n value: _shouldRedirect2\n });\n Object.defineProperty(this, _shouldSubmit, {\n value: _shouldSubmit2\n });\n this.session = session;\n this.element = _element2;\n this.linkInterceptor = new LinkInterceptor(this, _element2);\n this.formSubmitObserver = new FormSubmitObserver(this, _element2);\n }\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return _classPrivateFieldLooseBase(this, _shouldRedirect)[_shouldRedirect](element);\n }\n linkClickIntercepted(element, url, event) {\n const frame = _classPrivateFieldLooseBase(this, _findFrameElement)[_findFrameElement](element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == null && _classPrivateFieldLooseBase(this, _shouldSubmit)[_shouldSubmit](element, submitter) && _classPrivateFieldLooseBase(this, _shouldRedirect)[_shouldRedirect](element, submitter);\n }\n formSubmitted(element, submitter) {\n const frame = _classPrivateFieldLooseBase(this, _findFrameElement)[_findFrameElement](element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n}\nfunction _shouldSubmit2(form, submitter) {\n var _meta$content2;\n const action = getAction$1(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_meta$content2 = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _meta$content2 !== void 0 ? _meta$content2 : \"/\");\n return _classPrivateFieldLooseBase(this, _shouldRedirect)[_shouldRedirect](form, submitter) && locationIsVisitable(action, rootLocation);\n}\nfunction _shouldRedirect2(element, submitter) {\n const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter) : this.session.elementIsNavigatable(element);\n if (isNavigatable) {\n const frame = _classPrivateFieldLooseBase(this, _findFrameElement)[_findFrameElement](element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n } else {\n return false;\n }\n}\nfunction _findFrameElement2(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n}\nclass History {\n constructor(delegate) {\n this.location = void 0;\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n // Event handlers\n this.onPopState = event => {\n if (this.shouldHandlePopState()) {\n const _ref13 = event.state || {},\n turbo = _ref13.turbo;\n if (turbo) {\n this.location = new URL(window.location.href);\n const restorationIdentifier = turbo.restorationIdentifier;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async _event => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location) {\n let restorationIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : uuid();\n const state = {\n turbo: {\n restorationIdentifier\n }\n };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n\n // Restoration data\n\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const restorationIdentifier = this.restorationIdentifier;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = _objectSpread(_objectSpread({}, restorationData), additionalData);\n }\n\n // Scroll restoration\n\n assumeControlOfScrollRestoration() {\n if (!this.previousScrollRestoration) {\n var _history$scrollRestor;\n this.previousScrollRestoration = (_history$scrollRestor = history.scrollRestoration) !== null && _history$scrollRestor !== void 0 ? _history$scrollRestor : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n // Private\n\n shouldHandlePopState() {\n // Safari dispatches a popstate event after window's load event, ignore it\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\nvar _getActionForFormSubmission = /*#__PURE__*/_classPrivateFieldLooseKey(\"getActionForFormSubmission\");\nvar _getDefaultAction = /*#__PURE__*/_classPrivateFieldLooseKey(\"getDefaultAction\");\nclass Navigator {\n constructor(delegate) {\n Object.defineProperty(this, _getDefaultAction, {\n value: _getDefaultAction2\n });\n Object.defineProperty(this, _getActionForFormSubmission, {\n value: _getActionForFormSubmission2\n });\n this.delegate = delegate;\n }\n proposeVisit(location) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n }\n startVisit(locatable, restorationIdentifier) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, _objectSpread({\n referrer: this.location\n }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get rootLocation() {\n return this.view.snapshot.rootLocation;\n }\n get history() {\n return this.delegate.history;\n }\n\n // Form submission delegate\n\n formSubmissionStarted(formSubmission) {\n // Not all adapters implement formSubmissionStarted\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n const statusCode = fetchResponse.statusCode,\n redirected = fetchResponse.redirected;\n const action = _classPrivateFieldLooseBase(this, _getActionForFormSubmission)[_getActionForFormSubmission](formSubmission, fetchResponse);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: {\n statusCode,\n responseHTML,\n redirected\n }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n if (!snapshot.shouldPreserveScrollPosition) {\n this.view.scrollToTop();\n }\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n // Not all adapters implement formSubmissionFinished\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return action !== \"replace\" && getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n\n // Visits\n\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n}\nfunction _getActionForFormSubmission2(formSubmission, fetchResponse) {\n const submitter = formSubmission.submitter,\n formElement = formSubmission.formElement;\n return getVisitAction(submitter, formElement) || _classPrivateFieldLooseBase(this, _getDefaultAction)[_getDefaultAction](fetchResponse);\n}\nfunction _getDefaultAction2(fetchResponse) {\n var _this$location2;\n const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === ((_this$location2 = this.location) === null || _this$location2 === void 0 ? void 0 : _this$location2.href);\n return sameLocationRedirect ? \"replace\" : \"advance\";\n}\nconst PageStage = {\n initial: 0,\n loading: 1,\n interactive: 2,\n complete: 3\n};\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const readyState = this.readyState;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n // Private\n\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\nclass StreamMessageRenderer {\n render(_ref14) {\n let fragment = _ref14.fragment;\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n withAutofocusFromFragment(fragment, () => {\n withPreservedFocus(() => {\n document.documentElement.appendChild(fragment);\n });\n });\n });\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n leavingBardo() {}\n}\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const id = permanentElementInDocument.id;\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n return permanentElementMap;\n}\nasync function withAutofocusFromFragment(fragment, callback) {\n const generatedID = `turbo-stream-autofocus-${uuid()}`;\n const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n let willAutofocusId = null;\n if (elementWithAutofocus) {\n if (elementWithAutofocus.id) {\n willAutofocusId = elementWithAutofocus.id;\n } else {\n willAutofocusId = generatedID;\n }\n elementWithAutofocus.id = willAutofocusId;\n }\n callback();\n await nextAnimationFrame();\n const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n if (hasNoActiveElement && willAutofocusId) {\n const elementToAutofocus = document.getElementById(willAutofocusId);\n if (elementIsFocusable(elementToAutofocus)) {\n elementToAutofocus.focus();\n }\n if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n elementToAutofocus.removeAttribute(\"id\");\n }\n }\n}\nasync function withPreservedFocus(callback) {\n const _await$around = await around(callback, () => document.activeElement),\n _await$around2 = _slicedToArray(_await$around, 2),\n activeElementBeforeRender = _await$around2[0],\n activeElementAfterRender = _await$around2[1];\n const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n if (restoreFocusTo) {\n const elementToFocus = document.getElementById(restoreFocusTo);\n if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n elementToFocus.focus();\n }\n }\n}\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n for (const streamElement of nodeListOfStreamElements) {\n const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n if (elementWithAutofocus) return elementWithAutofocus;\n }\n return null;\n}\nvar _started = /*#__PURE__*/_classPrivateFieldLooseKey(\"started\");\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set();\n Object.defineProperty(this, _started, {\n writable: true,\n value: false\n });\n this.inspectFetchResponse = event => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n };\n this.receiveMessageEvent = event => {\n if (_classPrivateFieldLooseBase(this, _started)[_started] && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!_classPrivateFieldLooseBase(this, _started)[_started]) {\n _classPrivateFieldLooseBase(this, _started)[_started] = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (_classPrivateFieldLooseBase(this, _started)[_started]) {\n _classPrivateFieldLooseBase(this, _started)[_started] = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _event$detail;\n const fetchResponse = (_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _response$contentType;\n const contentType = (_response$contentType = response.contentType) !== null && _response$contentType !== void 0 ? _response$contentType : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const _document = document,\n documentElement = _document.documentElement,\n body = _document.body;\n documentElement.replaceChild(newElement, body);\n }\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const _document2 = document,\n documentElement = _document2.documentElement,\n head = _document2.head;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n}\nlet EMPTY_SET = new Set();\n\n//=============================================================================\n// Core Morphing Algorithm - morph, morphNormalizedContent, morphOldNodeTo, morphChildren\n//=============================================================================\nfunction morph(oldNode, newContent) {\n let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (oldNode instanceof Document) {\n oldNode = oldNode.documentElement;\n }\n if (typeof newContent === 'string') {\n newContent = parseContent(newContent);\n }\n let normalizedContent = normalizeContent(newContent);\n let ctx = createMorphContext(oldNode, normalizedContent, config);\n return morphNormalizedContent(oldNode, normalizedContent, ctx);\n}\nfunction morphNormalizedContent(oldNode, normalizedNewContent, ctx) {\n if (ctx.head.block) {\n let oldHead = oldNode.querySelector('head');\n let newHead = normalizedNewContent.querySelector('head');\n if (oldHead && newHead) {\n let promises = handleHeadElement(newHead, oldHead, ctx);\n // when head promises resolve, call morph again, ignoring the head tag\n Promise.all(promises).then(function () {\n morphNormalizedContent(oldNode, normalizedNewContent, Object.assign(ctx, {\n head: {\n block: false,\n ignore: true\n }\n }));\n });\n return;\n }\n }\n if (ctx.morphStyle === \"innerHTML\") {\n // innerHTML, so we are only updating the children\n morphChildren(normalizedNewContent, oldNode, ctx);\n return oldNode.children;\n } else if (ctx.morphStyle === \"outerHTML\" || ctx.morphStyle == null) {\n // otherwise find the best element match in the new content, morph that, and merge its siblings\n // into either side of the best match\n let bestMatch = findBestNodeMatch(normalizedNewContent, oldNode, ctx);\n\n // stash the siblings that will need to be inserted on either side of the best match\n let previousSibling = bestMatch === null || bestMatch === void 0 ? void 0 : bestMatch.previousSibling;\n let nextSibling = bestMatch === null || bestMatch === void 0 ? void 0 : bestMatch.nextSibling;\n\n // morph it\n let morphedNode = morphOldNodeTo(oldNode, bestMatch, ctx);\n if (bestMatch) {\n // if there was a best match, merge the siblings in too and return the\n // whole bunch\n return insertSiblings(previousSibling, morphedNode, nextSibling);\n } else {\n // otherwise nothing was added to the DOM\n return [];\n }\n } else {\n throw \"Do not understand how to morph style \" + ctx.morphStyle;\n }\n}\n\n/**\n * @param oldNode root node to merge content into\n * @param newContent new content to merge\n * @param ctx the merge context\n * @returns {Element} the element that ended up in the DOM\n */\nfunction morphOldNodeTo(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) ;else if (newContent == null) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return;\n oldNode.remove();\n ctx.callbacks.afterNodeRemoved(oldNode);\n return null;\n } else if (!isSoftMatch(oldNode, newContent)) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return;\n if (ctx.callbacks.beforeNodeAdded(newContent) === false) return;\n oldNode.parentElement.replaceChild(newContent, oldNode);\n ctx.callbacks.afterNodeAdded(newContent);\n ctx.callbacks.afterNodeRemoved(oldNode);\n return newContent;\n } else {\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) return;\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ;else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== \"morph\") {\n handleHeadElement(newContent, oldNode, ctx);\n } else {\n syncNodeFrom(newContent, oldNode);\n morphChildren(newContent, oldNode, ctx);\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n}\n\n/**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm is, for each node in the new content:\n *\n * - if we have reached the end of the old parent, append the new content\n * - if the new content has an id set match with the current insertion point, morph\n * - search for an id set match\n * - if id set match found, morph\n * - otherwise search for a \"soft\" match\n * - if a soft match is found, morph\n * - otherwise, prepend the new node before the current insertion point\n *\n * The two search algorithms terminate if competing node matches appear to outweigh what can be achieved\n * with the current node. See findIdSetMatch() and findSoftMatch() for details.\n *\n * @param {Element} newParent the parent element of the new content\n * @param {Element } oldParent the old content that we are merging the new content into\n * @param ctx the merge context\n */\nfunction morphChildren(newParent, oldParent, ctx) {\n let nextNewChild = newParent.firstChild;\n let insertionPoint = oldParent.firstChild;\n let newChild;\n\n // run through all the new content\n while (nextNewChild) {\n newChild = nextNewChild;\n nextNewChild = newChild.nextSibling;\n\n // if we are at the end of the exiting parent's children, just append\n if (insertionPoint == null) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n oldParent.appendChild(newChild);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // if the current node has an id set match then morph\n if (isIdSetMatch(newChild, insertionPoint, ctx)) {\n morphOldNodeTo(insertionPoint, newChild, ctx);\n insertionPoint = insertionPoint.nextSibling;\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // otherwise search forward in the existing old children for an id set match\n let idSetMatch = findIdSetMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a potential match, remove the nodes until that point and morph\n if (idSetMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, idSetMatch, ctx);\n morphOldNodeTo(idSetMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // no id set match found, so scan forward for a soft match for the current node\n let softMatch = findSoftMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a soft match for the current node, morph\n if (softMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, softMatch, ctx);\n morphOldNodeTo(softMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // abandon all hope of morphing, just insert the new child before the insertion point\n // and move on\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n oldParent.insertBefore(newChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n }\n\n // remove any remaining old nodes that didn't match up with new content\n while (insertionPoint !== null) {\n let tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(tempNode, ctx);\n }\n}\n\n//=============================================================================\n// Attribute Syncing Code\n//=============================================================================\n\n/**\n * syncs a given node with another node, copying over all attributes and\n * inner element state from the 'from' node to the 'to' node\n *\n * @param {Element} from the element to copy attributes & state from\n * @param {Element} to the element to copy attributes & state to\n */\nfunction syncNodeFrom(from, to) {\n let type = from.nodeType;\n\n // if is an element type, sync the attributes from the\n // new node into the new node\n if (type === 1 /* element type */) {\n const fromAttributes = from.attributes;\n const toAttributes = to.attributes;\n for (const fromAttribute of fromAttributes) {\n if (to.getAttribute(fromAttribute.name) !== fromAttribute.value) {\n to.setAttribute(fromAttribute.name, fromAttribute.value);\n }\n }\n for (const toAttribute of toAttributes) {\n if (!from.hasAttribute(toAttribute.name)) {\n to.removeAttribute(toAttribute.name);\n }\n }\n }\n\n // sync text nodes\n if (type === 8 /* comment */ || type === 3 /* text */) {\n if (to.nodeValue !== from.nodeValue) {\n to.nodeValue = from.nodeValue;\n }\n }\n\n // NB: many bothans died to bring us information:\n //\n // https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n // https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n\n // sync input value\n if (from instanceof HTMLInputElement && to instanceof HTMLInputElement && from.type !== 'file') {\n to.value = from.value || '';\n syncAttribute(from, to, 'value');\n\n // sync boolean attributes\n syncAttribute(from, to, 'checked');\n syncAttribute(from, to, 'disabled');\n } else if (from instanceof HTMLOptionElement) {\n syncAttribute(from, to, 'selected');\n } else if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) {\n let fromValue = from.value;\n let toValue = to.value;\n if (fromValue !== toValue) {\n to.value = fromValue;\n }\n if (to.firstChild && to.firstChild.nodeValue !== fromValue) {\n to.firstChild.nodeValue = fromValue;\n }\n }\n}\nfunction syncAttribute(from, to, attributeName) {\n if (from[attributeName] !== to[attributeName]) {\n if (from[attributeName]) {\n to.setAttribute(attributeName, from[attributeName]);\n } else {\n to.removeAttribute(attributeName);\n }\n }\n}\n\n//=============================================================================\n// the HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n//=============================================================================\nfunction handleHeadElement(newHeadTag, currentHead, ctx) {\n let added = [];\n let removed = [];\n let preserved = [];\n let nodesToAppend = [];\n let headMergeStyle = ctx.head.style;\n\n // put all new head elements into a Map, by their outerHTML\n let srcToNewHeadNodes = new Map();\n for (const newHeadChild of newHeadTag.children) {\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n }\n\n // for each elt in the current head\n for (const currentHeadElt of currentHead.children) {\n // If the current head element is in the map\n let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (headMergeStyle === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n }\n\n // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n nodesToAppend.push(...srcToNewHeadNodes.values());\n let promises = [];\n for (const newNode of nodesToAppend) {\n let newElt = document.createRange().createContextualFragment(newNode.outerHTML).firstChild;\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (newElt.href || newElt.src) {\n let resolve = null;\n let promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener('load', function () {\n resolve();\n });\n promises.push(promise);\n }\n currentHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n }\n\n // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n for (const removedElement of removed) {\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n currentHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n ctx.head.afterHeadMorphed(currentHead, {\n added: added,\n kept: preserved,\n removed: removed\n });\n return promises;\n}\nfunction noOp() {}\nfunction createMorphContext(oldNode, newContent, config) {\n return {\n target: oldNode,\n newContent: newContent,\n config: config,\n morphStyle: config.morphStyle,\n ignoreActive: config.ignoreActive,\n idMap: createIdMap(oldNode, newContent),\n deadIds: new Set(),\n callbacks: Object.assign({\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp\n }, config.callbacks),\n head: Object.assign({\n style: 'merge',\n shouldPreserve: function (elt) {\n return elt.getAttribute(\"im-preserve\") === \"true\";\n },\n shouldReAppend: function (elt) {\n return elt.getAttribute(\"im-re-append\") === \"true\";\n },\n shouldRemove: noOp,\n afterHeadMorphed: noOp\n }, config.head)\n };\n}\nfunction isIdSetMatch(node1, node2, ctx) {\n if (node1 == null || node2 == null) {\n return false;\n }\n if (node1.nodeType === node2.nodeType && node1.tagName === node2.tagName) {\n if (node1.id !== \"\" && node1.id === node2.id) {\n return true;\n } else {\n return getIdIntersectionCount(ctx, node1, node2) > 0;\n }\n }\n return false;\n}\nfunction isSoftMatch(node1, node2) {\n if (node1 == null || node2 == null) {\n return false;\n }\n return node1.nodeType === node2.nodeType && node1.tagName === node2.tagName;\n}\nfunction removeNodesBetween(startInclusive, endExclusive, ctx) {\n while (startInclusive !== endExclusive) {\n let tempNode = startInclusive;\n startInclusive = startInclusive.nextSibling;\n removeNode(tempNode, ctx);\n }\n removeIdsFromConsideration(ctx, endExclusive);\n return endExclusive.nextSibling;\n}\n\n//=============================================================================\n// Scans forward from the insertionPoint in the old parent looking for a potential id match\n// for the newChild. We stop if we find a potential id match for the new child OR\n// if the number of potential id matches we are discarding is greater than the\n// potential id matches for the new child\n//=============================================================================\nfunction findIdSetMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n // max id matches we are willing to discard in our search\n let newChildPotentialIdCount = getIdIntersectionCount(ctx, newChild, oldParent);\n let potentialMatch = null;\n\n // only search forward if there is a possibility of an id match\n if (newChildPotentialIdCount > 0) {\n let potentialMatch = insertionPoint;\n // if there is a possibility of an id match, scan forward\n // keep track of the potential id match count we are discarding (the\n // newChildPotentialIdCount must be greater than this to make it likely\n // worth it)\n let otherMatchCount = 0;\n while (potentialMatch != null) {\n // If we have an id match, return the current potential match\n if (isIdSetMatch(newChild, potentialMatch, ctx)) {\n return potentialMatch;\n }\n\n // computer the other potential matches of this new content\n otherMatchCount += getIdIntersectionCount(ctx, potentialMatch, newContent);\n if (otherMatchCount > newChildPotentialIdCount) {\n // if we have more potential id matches in _other_ content, we\n // do not have a good candidate for an id match, so return null\n return null;\n }\n\n // advanced to the next old content child\n potentialMatch = potentialMatch.nextSibling;\n }\n }\n return potentialMatch;\n}\n\n//=============================================================================\n// Scans forward from the insertionPoint in the old parent looking for a potential soft match\n// for the newChild. We stop if we find a potential soft match for the new child OR\n// if we find a potential id match in the old parents children OR if we find two\n// potential soft matches for the next two pieces of new content\n//=============================================================================\nfunction findSoftMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n let potentialSoftMatch = insertionPoint;\n let nextSibling = newChild.nextSibling;\n let siblingSoftMatchCount = 0;\n while (potentialSoftMatch != null) {\n if (getIdIntersectionCount(ctx, potentialSoftMatch, newContent) > 0) {\n // the current potential soft match has a potential id set match with the remaining new\n // content so bail out of looking\n return null;\n }\n\n // if we have a soft match with the current node, return it\n if (isSoftMatch(newChild, potentialSoftMatch)) {\n return potentialSoftMatch;\n }\n if (isSoftMatch(nextSibling, potentialSoftMatch)) {\n // the next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling;\n\n // If there are two future soft matches, bail to allow the siblings to soft match\n // so that we don't consume future soft matches for the sake of the current node\n if (siblingSoftMatchCount >= 2) {\n return null;\n }\n }\n\n // advanced to the next old content child\n potentialSoftMatch = potentialSoftMatch.nextSibling;\n }\n return potentialSoftMatch;\n}\nfunction parseContent(newContent) {\n let parser = new DOMParser();\n\n // remove svgs to avoid false-positive matches on head, etc.\n let contentWithSvgsRemoved = newContent.replace(/]*>|>)([\\s\\S]*?)<\\/svg>/gim, '');\n\n // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n if (contentWithSvgsRemoved.match(/<\\/html>/) || contentWithSvgsRemoved.match(/<\\/head>/) || contentWithSvgsRemoved.match(/<\\/body>/)) {\n let content = parser.parseFromString(newContent, \"text/html\");\n // if it is a full HTML document, return the document itself as the parent container\n if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n content.generatedByIdiomorph = true;\n return content;\n } else {\n // otherwise return the html element as the parent container\n let htmlElement = content.firstChild;\n if (htmlElement) {\n htmlElement.generatedByIdiomorph = true;\n return htmlElement;\n } else {\n return null;\n }\n }\n } else {\n // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n // deal with touchy tags like tr, tbody, etc.\n let responseDoc = parser.parseFromString(\"\", \"text/html\");\n let content = responseDoc.body.querySelector('template').content;\n content.generatedByIdiomorph = true;\n return content;\n }\n}\nfunction normalizeContent(newContent) {\n if (newContent == null) {\n // noinspection UnnecessaryLocalVariableJS\n const dummyParent = document.createElement('div');\n return dummyParent;\n } else if (newContent.generatedByIdiomorph) {\n // the template tag created by idiomorph parsing can serve as a dummy parent\n return newContent;\n } else if (newContent instanceof Node) {\n // a single node is added as a child to a dummy parent\n const dummyParent = document.createElement('div');\n dummyParent.append(newContent);\n return dummyParent;\n } else {\n // all nodes in the array or HTMLElement collection are consolidated under\n // a single dummy parent element\n const dummyParent = document.createElement('div');\n for (const elt of [...newContent]) {\n dummyParent.append(elt);\n }\n return dummyParent;\n }\n}\nfunction insertSiblings(previousSibling, morphedNode, nextSibling) {\n let stack = [];\n let added = [];\n while (previousSibling != null) {\n stack.push(previousSibling);\n previousSibling = previousSibling.previousSibling;\n }\n while (stack.length > 0) {\n let node = stack.pop();\n added.push(node); // push added preceding siblings on in order and insert\n morphedNode.parentElement.insertBefore(node, morphedNode);\n }\n added.push(morphedNode);\n while (nextSibling != null) {\n stack.push(nextSibling);\n added.push(nextSibling); // here we are going in order, so push on as we scan, rather than add\n nextSibling = nextSibling.nextSibling;\n }\n while (stack.length > 0) {\n morphedNode.parentElement.insertBefore(stack.pop(), morphedNode.nextSibling);\n }\n return added;\n}\nfunction findBestNodeMatch(newContent, oldNode, ctx) {\n let currentElement;\n currentElement = newContent.firstChild;\n let bestElement = currentElement;\n let score = 0;\n while (currentElement) {\n let newScore = scoreElement(currentElement, oldNode, ctx);\n if (newScore > score) {\n bestElement = currentElement;\n score = newScore;\n }\n currentElement = currentElement.nextSibling;\n }\n return bestElement;\n}\nfunction scoreElement(node1, node2, ctx) {\n if (isSoftMatch(node1, node2)) {\n return .5 + getIdIntersectionCount(ctx, node1, node2);\n }\n return 0;\n}\nfunction removeNode(tempNode, ctx) {\n removeIdsFromConsideration(ctx, tempNode);\n if (ctx.callbacks.beforeNodeRemoved(tempNode) === false) return;\n tempNode.remove();\n ctx.callbacks.afterNodeRemoved(tempNode);\n}\n\n//=============================================================================\n// ID Set Functions\n//=============================================================================\n\nfunction isIdInConsideration(ctx, id) {\n return !ctx.deadIds.has(id);\n}\nfunction idIsWithinNode(ctx, id, targetNode) {\n let idSet = ctx.idMap.get(targetNode) || EMPTY_SET;\n return idSet.has(id);\n}\nfunction removeIdsFromConsideration(ctx, node) {\n let idSet = ctx.idMap.get(node) || EMPTY_SET;\n for (const id of idSet) {\n ctx.deadIds.add(id);\n }\n}\nfunction getIdIntersectionCount(ctx, node1, node2) {\n let sourceSet = ctx.idMap.get(node1) || EMPTY_SET;\n let matchCount = 0;\n for (const id of sourceSet) {\n // a potential match is an id in the source and potentialIdsSet, but\n // that has not already been merged into the DOM\n if (isIdInConsideration(ctx, id) && idIsWithinNode(ctx, id, node2)) {\n ++matchCount;\n }\n }\n return matchCount;\n}\n\n/**\n * A bottom up algorithm that finds all elements with ids inside of the node\n * argument and populates id sets for those nodes and all their parents, generating\n * a set of ids contained within all nodes for the entire hierarchy in the DOM\n *\n * @param node {Element}\n * @param {Map>} idMap\n */\nfunction populateIdMapForNode(node, idMap) {\n let nodeParent = node.parentElement;\n // find all elements with an id property\n let idElements = node.querySelectorAll('[id]');\n for (const elt of idElements) {\n let current = elt;\n // walk up the parent hierarchy of that element, adding the id\n // of element to the parent's id set\n while (current !== nodeParent && current != null) {\n let idSet = idMap.get(current);\n // if the id set doesn't exist, create it and insert it in the map\n if (idSet == null) {\n idSet = new Set();\n idMap.set(current, idSet);\n }\n idSet.add(elt.id);\n current = current.parentElement;\n }\n }\n}\n\n/**\n * This function computes a map of nodes to all ids contained within that node (inclusive of the\n * node). This map can be used to ask if two nodes have intersecting sets of ids, which allows\n * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n * to contribute to a parent nodes matching.\n *\n * @param {Element} oldContent the old content that will be morphed\n * @param {Element} newContent the new content to morph to\n * @returns {Map>} a map of nodes to id sets for the\n */\nfunction createIdMap(oldContent, newContent) {\n let idMap = new Map();\n populateIdMapForNode(oldContent, idMap);\n populateIdMapForNode(newContent, idMap);\n return idMap;\n}\n\n//=============================================================================\n// This is what ends up becoming the Idiomorph export\n//=============================================================================\nvar idiomorph = {\n morph\n};\nvar _morphBody = /*#__PURE__*/_classPrivateFieldLooseKey(\"morphBody\");\nvar _morphElements = /*#__PURE__*/_classPrivateFieldLooseKey(\"morphElements\");\nvar _shouldAddElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldAddElement\");\nvar _shouldMorphElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldMorphElement\");\nvar _shouldRemoveElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldRemoveElement\");\nvar _reloadRemoteFrames = /*#__PURE__*/_classPrivateFieldLooseKey(\"reloadRemoteFrames\");\nvar _renderFrameWithMorph = /*#__PURE__*/_classPrivateFieldLooseKey(\"renderFrameWithMorph\");\nvar _morphFrameUpdate = /*#__PURE__*/_classPrivateFieldLooseKey(\"morphFrameUpdate\");\nvar _isFrameReloadedWithMorph = /*#__PURE__*/_classPrivateFieldLooseKey(\"isFrameReloadedWithMorph\");\nvar _remoteFrames = /*#__PURE__*/_classPrivateFieldLooseKey(\"remoteFrames\");\nclass MorphRenderer extends Renderer {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, _remoteFrames, {\n value: _remoteFrames2\n });\n Object.defineProperty(this, _isFrameReloadedWithMorph, {\n value: _isFrameReloadedWithMorph2\n });\n Object.defineProperty(this, _renderFrameWithMorph, {\n value: _renderFrameWithMorph2\n });\n Object.defineProperty(this, _reloadRemoteFrames, {\n value: _reloadRemoteFrames2\n });\n Object.defineProperty(this, _morphElements, {\n value: _morphElements2\n });\n // Private\n Object.defineProperty(this, _morphBody, {\n value: _morphBody2\n });\n Object.defineProperty(this, _shouldAddElement, {\n writable: true,\n value: node => {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id));\n }\n });\n Object.defineProperty(this, _shouldMorphElement, {\n writable: true,\n value: (oldNode, newNode) => {\n if (oldNode instanceof HTMLElement) {\n return !oldNode.hasAttribute(\"data-turbo-permanent\") && (this.isMorphingTurboFrame || !_classPrivateFieldLooseBase(this, _isFrameReloadedWithMorph)[_isFrameReloadedWithMorph](oldNode));\n } else {\n return true;\n }\n }\n });\n Object.defineProperty(this, _shouldRemoveElement, {\n writable: true,\n value: node => {\n return _classPrivateFieldLooseBase(this, _shouldMorphElement)[_shouldMorphElement](node);\n }\n });\n Object.defineProperty(this, _morphFrameUpdate, {\n writable: true,\n value: (currentElement, newElement) => {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: {\n currentElement,\n newElement\n }\n });\n _classPrivateFieldLooseBase(this, _morphElements)[_morphElements](currentElement, newElement.children, \"innerHTML\");\n }\n });\n }\n async render() {\n if (this.willRender) await _classPrivateFieldLooseBase(this, _morphBody)[_morphBody]();\n }\n get renderMethod() {\n return \"morph\";\n }\n}\nasync function _morphBody2() {\n _classPrivateFieldLooseBase(this, _morphElements)[_morphElements](this.currentElement, this.newElement);\n _classPrivateFieldLooseBase(this, _reloadRemoteFrames)[_reloadRemoteFrames]();\n dispatch(\"turbo:morph\", {\n detail: {\n currentElement: this.currentElement,\n newElement: this.newElement\n }\n });\n}\nfunction _morphElements2(currentElement, newElement) {\n let morphStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"outerHTML\";\n this.isMorphingTurboFrame = _classPrivateFieldLooseBase(this, _isFrameReloadedWithMorph)[_isFrameReloadedWithMorph](currentElement);\n idiomorph.morph(currentElement, newElement, {\n morphStyle: morphStyle,\n callbacks: {\n beforeNodeAdded: _classPrivateFieldLooseBase(this, _shouldAddElement)[_shouldAddElement],\n beforeNodeMorphed: _classPrivateFieldLooseBase(this, _shouldMorphElement)[_shouldMorphElement],\n beforeNodeRemoved: _classPrivateFieldLooseBase(this, _shouldRemoveElement)[_shouldRemoveElement]\n }\n });\n}\nfunction _reloadRemoteFrames2() {\n _classPrivateFieldLooseBase(this, _remoteFrames)[_remoteFrames]().forEach(frame => {\n if (_classPrivateFieldLooseBase(this, _isFrameReloadedWithMorph)[_isFrameReloadedWithMorph](frame)) {\n _classPrivateFieldLooseBase(this, _renderFrameWithMorph)[_renderFrameWithMorph](frame);\n frame.reload();\n }\n });\n}\nfunction _renderFrameWithMorph2(frame) {\n frame.addEventListener(\"turbo:before-frame-render\", event => {\n event.detail.render = _classPrivateFieldLooseBase(this, _morphFrameUpdate)[_morphFrameUpdate];\n }, {\n once: true\n });\n}\nfunction _isFrameReloadedWithMorph2(element) {\n return element.src && element.refresh === \"morph\";\n}\nfunction _remoteFrames2() {\n return Array.from(document.querySelectorAll('turbo-frame[src]')).filter(frame => {\n return !frame.closest('[data-turbo-permanent]');\n });\n}\nvar _setLanguage = /*#__PURE__*/_classPrivateFieldLooseKey(\"setLanguage\");\nclass PageRenderer extends Renderer {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, _setLanguage, {\n value: _setLanguage2\n });\n }\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n } else {\n document.documentElement.appendChild(newElement);\n }\n }\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n };\n }\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n };\n }\n }\n async prepareToRender() {\n _classPrivateFieldLooseBase(this, _setLanguage)[_setLanguage]();\n await this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n await mergedHeadElements;\n await newStylesheetElements;\n }\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n await Promise.all(loadingElements);\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n isCurrentElementInElementList(element, elementList) {\n for (const _ref15 of elementList.entries()) {\n var _ref16 = _slicedToArray(_ref15, 2);\n const index = _ref16[0];\n const newElement = _ref16[1];\n // if title element...\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue;\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true;\n }\n }\n\n // if any other element...\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true;\n }\n }\n return false;\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\nfunction _setLanguage2() {\n const documentElement = this.currentSnapshot.documentElement;\n const lang = this.newSnapshot.lang;\n if (lang) {\n documentElement.setAttribute(\"lang\", lang);\n } else {\n documentElement.removeAttribute(\"lang\");\n }\n}\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n\n // Private\n\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n this.forceReloaded = false;\n }\n shouldTransitionTo(newSnapshot) {\n return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions;\n }\n renderPage(snapshot) {\n let isPreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let willRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let visit = arguments.length > 3 ? arguments[3] : undefined;\n const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n const rendererClass = shouldMorphPage ? MorphRenderer : PageRenderer;\n const renderer = new rendererClass(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n return this.render(renderer);\n }\n renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot() {\n let snapshot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.snapshot;\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const location = this.lastRenderedLocation;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n isPageRefresh(visit) {\n return !visit || this.lastRenderedLocation.href === visit.location.href && visit.action === \"replace\";\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n}\nclass Preloader {\n constructor(delegate) {\n this.selector = \"a[data-turbo-preload]\";\n this.delegate = delegate;\n }\n get snapshotCache() {\n return this.delegate.navigator.view.snapshotCache;\n }\n start() {\n if (document.readyState === \"loading\") {\n return document.addEventListener(\"DOMContentLoaded\", () => {\n this.preloadOnLoadLinksForView(document.body);\n });\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n this.preloadURL(link);\n }\n }\n async preloadURL(link) {\n const location = new URL(link.href);\n if (this.snapshotCache.has(location)) {\n return;\n }\n try {\n const response = await fetch(location.toString(), {\n headers: {\n \"Sec-Purpose\": \"prefetch\",\n Accept: \"text/html\"\n }\n });\n const responseText = await response.text();\n const snapshot = PageSnapshot.fromHTMLString(responseText);\n this.snapshotCache.put(location, snapshot);\n } catch (_) {\n // If we cannot preload that is ok!\n }\n }\n}\nclass LimitedSet extends Set {\n constructor(maxSize) {\n super();\n this.maxSize = maxSize;\n }\n add(value) {\n if (this.size >= this.maxSize) {\n const iterator = this.values();\n const oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n super.add(value);\n }\n}\nvar _setCacheControl = /*#__PURE__*/_classPrivateFieldLooseKey(\"setCacheControl\");\nclass Cache {\n constructor(session) {\n Object.defineProperty(this, _setCacheControl, {\n value: _setCacheControl2\n });\n this.session = session;\n }\n clear() {\n this.session.clearCache();\n }\n resetCacheControl() {\n _classPrivateFieldLooseBase(this, _setCacheControl)[_setCacheControl](\"\");\n }\n exemptPageFromCache() {\n _classPrivateFieldLooseBase(this, _setCacheControl)[_setCacheControl](\"no-cache\");\n }\n exemptPageFromPreview() {\n _classPrivateFieldLooseBase(this, _setCacheControl)[_setCacheControl](\"no-preview\");\n }\n}\nfunction _setCacheControl2(value) {\n setMetaContent(\"turbo-cache-control\", value);\n}\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.preloader = new Preloader(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.cache = new Cache(this);\n this.recentRequests = new LimitedSet(20);\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n refresh(url, requestId) {\n const isRecentRequest = requestId && this.recentRequests.has(requestId);\n if (!isRecentRequest) {\n this.cache.exemptPageFromPreview();\n this.visit(url, {\n action: \"replace\"\n });\n }\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n setFormMode(mode) {\n this.formMode = mode;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n\n // History delegate\n\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n\n // Scroll observer delegate\n\n scrollPositionChanged(position) {\n this.history.updateRestorationData({\n scrollPosition: position\n });\n }\n\n // Form click observer delegate\n\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n submittedFormLinkToLocation() {}\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, event) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location, event);\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, {\n action,\n acceptsStreamResponse\n });\n }\n\n // Navigator delegate\n\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(form, submitter) {\n const action = getAction$1(form, submitter);\n return this.submissionIsNavigatable(form, submitter) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n\n // Page observer delegate\n\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n\n // Stream observer delegate\n\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n\n // Page view delegate\n\n viewWillCacheSnapshot() {\n var _this$navigator$curre;\n if (!((_this$navigator$curre = this.navigator.currentVisit) !== null && _this$navigator$curre !== void 0 && _this$navigator$curre.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender(_ref17, isPreview, options) {\n let element = _ref17.element;\n const event = this.notifyApplicationBeforeRender(element, isPreview, options);\n const defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, isPreview, renderMethod) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender(isPreview, renderMethod);\n }\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n\n // Frame element\n\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n\n // Application events\n\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: {\n url: location.href,\n originalEvent: event\n },\n cancelable: true\n });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: {\n url: location.href\n },\n cancelable: true\n });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", {\n detail: {\n url: location.href,\n action\n }\n });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, isPreview, options) {\n return dispatch(\"turbo:before-render\", {\n detail: _objectSpread({\n newBody,\n isPreview\n }, options),\n cancelable: true\n });\n }\n notifyApplicationAfterRender(isPreview, renderMethod) {\n return dispatch(\"turbo:render\", {\n detail: {\n isPreview,\n renderMethod\n }\n });\n }\n notifyApplicationAfterPageLoad() {\n let timing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return dispatch(\"turbo:load\", {\n detail: {\n url: this.location.href,\n timing\n }\n });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", {\n target: frame\n });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: {\n fetchResponse\n },\n target: frame,\n cancelable: true\n });\n }\n\n // Helpers\n\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n // Check if Drive is enabled on the session or we're within a Frame.\n if (this.drive || withinFrame) {\n // Element is navigatable by default, unless `data-turbo=\"false\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n } else {\n return true;\n }\n } else {\n // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n } else {\n return false;\n }\n }\n }\n\n // Private\n\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\";\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n }\n }\n};\nconst session = new Session();\nconst cache = session.cache,\n navigator$1 = session.navigator;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n fetch: fetch,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode\n});\nclass TurboFrameMissingError extends Error {}\nvar _currentFetchRequest = /*#__PURE__*/_classPrivateFieldLooseKey(\"currentFetchRequest\");\nvar _resolveVisitPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveVisitPromise\");\nvar _connected = /*#__PURE__*/_classPrivateFieldLooseKey(\"connected\");\nvar _hasBeenLoaded = /*#__PURE__*/_classPrivateFieldLooseKey(\"hasBeenLoaded\");\nvar _ignoredAttributes = /*#__PURE__*/_classPrivateFieldLooseKey(\"ignoredAttributes\");\nvar _loadSourceURL = /*#__PURE__*/_classPrivateFieldLooseKey(\"loadSourceURL\");\nvar _loadFrameResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"loadFrameResponse\");\nvar _visit2 = /*#__PURE__*/_classPrivateFieldLooseKey(\"visit\");\nvar _navigateFrame = /*#__PURE__*/_classPrivateFieldLooseKey(\"navigateFrame\");\nvar _handleUnvisitableFrameResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleUnvisitableFrameResponse\");\nvar _willHandleFrameMissingFromResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"willHandleFrameMissingFromResponse\");\nvar _handleFrameMissingFromResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleFrameMissingFromResponse\");\nvar _throwFrameMissingError = /*#__PURE__*/_classPrivateFieldLooseKey(\"throwFrameMissingError\");\nvar _visitResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"visitResponse\");\nvar _findFrameElement3 = /*#__PURE__*/_classPrivateFieldLooseKey(\"findFrameElement\");\nvar _formActionIsVisitable = /*#__PURE__*/_classPrivateFieldLooseKey(\"formActionIsVisitable\");\nvar _shouldInterceptNavigation = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldInterceptNavigation\");\nvar _isIgnoringChangesTo = /*#__PURE__*/_classPrivateFieldLooseKey(\"isIgnoringChangesTo\");\nvar _ignoringChangesToAttribute = /*#__PURE__*/_classPrivateFieldLooseKey(\"ignoringChangesToAttribute\");\nvar _withCurrentNavigationElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"withCurrentNavigationElement\");\nclass FrameController {\n constructor(_element3) {\n Object.defineProperty(this, _withCurrentNavigationElement, {\n value: _withCurrentNavigationElement2\n });\n Object.defineProperty(this, _ignoringChangesToAttribute, {\n value: _ignoringChangesToAttribute2\n });\n Object.defineProperty(this, _isIgnoringChangesTo, {\n value: _isIgnoringChangesTo2\n });\n Object.defineProperty(this, _shouldInterceptNavigation, {\n value: _shouldInterceptNavigation2\n });\n Object.defineProperty(this, _formActionIsVisitable, {\n value: _formActionIsVisitable2\n });\n Object.defineProperty(this, _findFrameElement3, {\n value: _findFrameElement4\n });\n Object.defineProperty(this, _visitResponse, {\n value: _visitResponse2\n });\n Object.defineProperty(this, _throwFrameMissingError, {\n value: _throwFrameMissingError2\n });\n Object.defineProperty(this, _handleFrameMissingFromResponse, {\n value: _handleFrameMissingFromResponse2\n });\n Object.defineProperty(this, _willHandleFrameMissingFromResponse, {\n value: _willHandleFrameMissingFromResponse2\n });\n Object.defineProperty(this, _handleUnvisitableFrameResponse, {\n value: _handleUnvisitableFrameResponse2\n });\n Object.defineProperty(this, _navigateFrame, {\n value: _navigateFrame2\n });\n Object.defineProperty(this, _visit2, {\n value: _visit3\n });\n // Private\n Object.defineProperty(this, _loadFrameResponse, {\n value: _loadFrameResponse2\n });\n Object.defineProperty(this, _loadSourceURL, {\n value: _loadSourceURL2\n });\n this.fetchResponseLoaded = _fetchResponse => Promise.resolve();\n Object.defineProperty(this, _currentFetchRequest, {\n writable: true,\n value: null\n });\n Object.defineProperty(this, _resolveVisitPromise, {\n writable: true,\n value: () => {}\n });\n Object.defineProperty(this, _connected, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _hasBeenLoaded, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _ignoredAttributes, {\n writable: true,\n value: new Set()\n });\n this.action = null;\n this.visitCachedSnapshot = _ref18 => {\n let element = _ref18.element;\n const frame = element.querySelector(\"#\" + this.element.id);\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n delete this.previousFrameElement;\n };\n this.element = _element3;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n\n // Frame delegate\n\n connect() {\n if (!_classPrivateFieldLooseBase(this, _connected)[_connected]) {\n _classPrivateFieldLooseBase(this, _connected)[_connected] = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n disconnect() {\n if (_classPrivateFieldLooseBase(this, _connected)[_connected]) {\n _classPrivateFieldLooseBase(this, _connected)[_connected] = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n }\n sourceURLChanged() {\n if (_classPrivateFieldLooseBase(this, _isIgnoringChangesTo)[_isIgnoringChangesTo](\"src\")) return;\n if (this.element.isConnected) {\n this.complete = false;\n }\n if (this.loadingStyle == FrameLoadingStyle.eager || _classPrivateFieldLooseBase(this, _hasBeenLoaded)[_hasBeenLoaded]) {\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n }\n sourceURLReloaded() {\n const src = this.element.src;\n _classPrivateFieldLooseBase(this, _ignoringChangesToAttribute)[_ignoringChangesToAttribute](\"complete\", () => {\n this.element.removeAttribute(\"complete\");\n });\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n completeChanged() {\n if (_classPrivateFieldLooseBase(this, _isIgnoringChangesTo)[_isIgnoringChangesTo](\"complete\")) return;\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n if (pageSnapshot.isVisitable) {\n await _classPrivateFieldLooseBase(this, _loadFrameResponse)[_loadFrameResponse](fetchResponse, document);\n } else {\n await _classPrivateFieldLooseBase(this, _handleUnvisitableFrameResponse)[_handleUnvisitableFrameResponse](fetchResponse);\n }\n }\n } finally {\n this.fetchResponseLoaded = () => Promise.resolve();\n }\n }\n\n // Appearance observer delegate\n\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, element);\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n\n // Form link click observer delegate\n\n willSubmitFormLinkToLocation(link) {\n return _classPrivateFieldLooseBase(this, _shouldInterceptNavigation)[_shouldInterceptNavigation](link);\n }\n submittedFormLinkToLocation(link, _location, form) {\n const frame = _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return _classPrivateFieldLooseBase(this, _shouldInterceptNavigation)[_shouldInterceptNavigation](element);\n }\n linkClickIntercepted(element, location) {\n _classPrivateFieldLooseBase(this, _navigateFrame)[_navigateFrame](element, location);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && _classPrivateFieldLooseBase(this, _shouldInterceptNavigation)[_shouldInterceptNavigation](element, submitter);\n }\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.formSubmission = new FormSubmission(this, element, submitter);\n const fetchRequest = this.formSubmission.fetchRequest;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n var _this$currentNavigati;\n request.headers[\"Turbo-Frame\"] = this.id;\n if ((_this$currentNavigati = this.currentNavigationElement) !== null && _this$currentNavigati !== void 0 && _this$currentNavigati.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(_request, _response) {\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n }\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n }\n requestErrored(request, error) {\n console.error(error);\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n }\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n\n // Form submission delegate\n\n formSubmissionStarted(_ref19) {\n let formElement = _ref19.formElement;\n markAsBusy(formElement, _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](formSubmission.formElement, formSubmission.submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(_ref20) {\n let formElement = _ref20.formElement;\n clearBusyState(formElement, _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](formElement));\n }\n\n // View delegate\n\n allowsImmediateRender(_ref21, _isPreview, options) {\n let newFrame = _ref21.element;\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: _objectSpread({\n newFrame\n }, options),\n cancelable: true\n });\n const defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n viewInvalidated() {}\n\n // Frame renderer delegate\n\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n this.action = getVisitAction(submitter, element, frame);\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const visitCachedSnapshot = frame.delegate.visitCachedSnapshot;\n frame.delegate.fetchResponseLoaded = async fetchResponse => {\n if (frame.src) {\n const statusCode = fetchResponse.statusCode,\n redirected = fetchResponse.redirected;\n const responseHTML = await fetchResponse.responseHTML;\n const response = {\n statusCode,\n redirected,\n responseHTML\n };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot\n };\n if (this.action) options.action = this.action;\n session.visit(frame.src, options);\n }\n };\n }\n }\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element;\n }\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n } catch (error) {\n console.error(error);\n return new FrameElement();\n }\n return null;\n }\n // Computed properties\n\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n set sourceURL(sourceURL) {\n _classPrivateFieldLooseBase(this, _ignoringChangesToAttribute)[_ignoringChangesToAttribute](\"src\", () => {\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]() !== undefined;\n }\n get complete() {\n return this.element.hasAttribute(\"complete\");\n }\n set complete(value) {\n _classPrivateFieldLooseBase(this, _ignoringChangesToAttribute)[_ignoringChangesToAttribute](\"complete\", () => {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n } else {\n this.element.removeAttribute(\"complete\");\n }\n });\n }\n get isActive() {\n return this.element.isActive && _classPrivateFieldLooseBase(this, _connected)[_connected];\n }\n get rootLocation() {\n var _meta$content;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_meta$content = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _meta$content !== void 0 ? _meta$content : \"/\";\n return expandURL(root);\n }\n}\nasync function _loadSourceURL2() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = _classPrivateFieldLooseBase(this, _visit2)[_visit2](expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n _classPrivateFieldLooseBase(this, _hasBeenLoaded)[_hasBeenLoaded] = true;\n }\n}\nasync function _loadFrameResponse2(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise) await this.view.renderPromise;\n this.changeHistory();\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n await this.fetchResponseLoaded(fetchResponse);\n } else if (_classPrivateFieldLooseBase(this, _willHandleFrameMissingFromResponse)[_willHandleFrameMissingFromResponse](fetchResponse)) {\n _classPrivateFieldLooseBase(this, _handleFrameMissingFromResponse)[_handleFrameMissingFromResponse](fetchResponse);\n }\n}\nasync function _visit3(url) {\n var _classPrivateFieldLoo;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _currentFetchRequest)[_currentFetchRequest]) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.cancel();\n _classPrivateFieldLooseBase(this, _currentFetchRequest)[_currentFetchRequest] = request;\n return new Promise(resolve => {\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise] = () => {\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise] = () => {};\n _classPrivateFieldLooseBase(this, _currentFetchRequest)[_currentFetchRequest] = null;\n resolve();\n };\n request.perform();\n });\n}\nfunction _navigateFrame2(element, url, submitter) {\n const frame = _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](element, submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n _classPrivateFieldLooseBase(this, _withCurrentNavigationElement)[_withCurrentNavigationElement](element, () => {\n frame.src = url;\n });\n}\nasync function _handleUnvisitableFrameResponse2(fetchResponse) {\n console.warn(`The response (${fetchResponse.statusCode}) from is performing a full page visit due to turbo-visit-control.`);\n await _classPrivateFieldLooseBase(this, _visitResponse)[_visitResponse](fetchResponse.response);\n}\nfunction _willHandleFrameMissingFromResponse2(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n const response = fetchResponse.response;\n const visit = async (url, options) => {\n if (url instanceof Response) {\n _classPrivateFieldLooseBase(this, _visitResponse)[_visitResponse](url);\n } else {\n session.visit(url, options);\n }\n };\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: {\n response,\n visit\n },\n cancelable: true\n });\n return !event.defaultPrevented;\n}\nfunction _handleFrameMissingFromResponse2(fetchResponse) {\n this.view.missing();\n _classPrivateFieldLooseBase(this, _throwFrameMissingError)[_throwFrameMissingError](fetchResponse);\n}\nfunction _throwFrameMissingError2(fetchResponse) {\n const message = `The response (${fetchResponse.statusCode}) did not contain the expected and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n throw new TurboFrameMissingError(message);\n}\nasync function _visitResponse2(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const location = wrapped.location,\n redirected = wrapped.redirected,\n statusCode = wrapped.statusCode;\n return session.visit(location, {\n response: {\n redirected,\n statusCode,\n responseHTML\n }\n });\n}\nfunction _findFrameElement4(element, submitter) {\n var _getFrameElementById;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_getFrameElementById = getFrameElementById(id)) !== null && _getFrameElementById !== void 0 ? _getFrameElementById : this.element;\n}\nfunction _formActionIsVisitable2(form, submitter) {\n const action = getAction$1(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n}\nfunction _shouldInterceptNavigation2(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !_classPrivateFieldLooseBase(this, _formActionIsVisitable)[_formActionIsVisitable](element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n return true;\n}\nfunction _isIgnoringChangesTo2(attributeName) {\n return _classPrivateFieldLooseBase(this, _ignoredAttributes)[_ignoredAttributes].has(attributeName);\n}\nfunction _ignoringChangesToAttribute2(attributeName, callback) {\n _classPrivateFieldLooseBase(this, _ignoredAttributes)[_ignoredAttributes].add(attributeName);\n callback();\n _classPrivateFieldLooseBase(this, _ignoredAttributes)[_ignoredAttributes].delete(attributeName);\n}\nfunction _withCurrentNavigationElement2(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\nconst StreamActions = {\n after() {\n this.targetElements.forEach(e => {\n var _e$parentElement;\n return (_e$parentElement = e.parentElement) === null || _e$parentElement === void 0 ? void 0 : _e$parentElement.insertBefore(this.templateContent, e.nextSibling);\n });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach(e => {\n var _e$parentElement2;\n return (_e$parentElement2 = e.parentElement) === null || _e$parentElement2 === void 0 ? void 0 : _e$parentElement2.insertBefore(this.templateContent, e);\n });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach(e => e.remove());\n },\n replace() {\n this.targetElements.forEach(e => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach(targetElement => {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n });\n },\n refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n};\n\n//