@feedbackfun/js 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -168
- package/dist/feedbackfun-widget.esm.js +1 -1
- package/dist/types.d.ts +6 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={725(e,t,n){n.d(t,{Sentry:()=>i,initSentry:()=>rw}),n.r(t);var r={};n.r(r),n.d(r,{debug:()=>fs,error:()=>vs,fatal:()=>ys,fmt:()=>Go,info:()=>gs,trace:()=>hs,warn:()=>ms});var o={};n.r(o),n.d(o,{count:()=>Ss,distribution:()=>Es,gauge:()=>Cs});var i={};n.r(i),n.d(i,{BrowserClient:()=>nu,MULTIPLEXED_TRANSPORT_EXTRA_KEY:()=>Bo,OpenFeatureIntegrationHook:()=>Gb,SDK_VERSION:()=>c,SEMANTIC_ATTRIBUTE_SENTRY_OP:()=>ot,SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN:()=>it,SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE:()=>nt,SEMANTIC_ATTRIBUTE_SENTRY_SOURCE:()=>tt,Scope:()=>Fe,WINDOW:()=>Pd,addBreadcrumb:()=>Qo,addEventProcessor:()=>Or,addIntegration:()=>Wr,breadcrumbsIntegration:()=>bh,browserApiErrorsIntegration:()=>xh,browserProfilingIntegration:()=>Ub,browserSessionIntegration:()=>Ch,browserTracingIntegration:()=>nb,buildLaunchDarklyFlagUsedHandler:()=>Vb,captureConsoleIntegration:()=>wi,captureEvent:()=>kr,captureException:()=>wr,captureFeedback:()=>us,captureMessage:()=>xr,captureSession:()=>jr,chromeStackLineParser:()=>oh,close:()=>Rr,consoleLoggingIntegration:()=>ks,contextLinesIntegration:()=>Xh,continueTrace:()=>Wn,createConsolaReporter:()=>Ms,createLangChainCallbackHandler:()=>Mc,createTransport:()=>fo,createUserFeedbackEnvelope:()=>vh,dedupeIntegration:()=>xi,defaultRequestInstrumentationOptions:()=>Gy,defaultStackLineParsers:()=>fh,defaultStackParser:()=>gh,diagnoseSdkConnectivity:()=>Zb,endSession:()=>Nr,eventFiltersIntegration:()=>ri,eventFromException:()=>Xd,eventFromMessage:()=>Qd,exceptionFromError:()=>qd,extraErrorDataIntegration:()=>Ci,featureFlagsIntegration:()=>os,feedbackAsyncIntegration:()=>Fd,feedbackIntegration:()=>Hd,feedbackSyncIntegration:()=>Hd,flush:()=>Ar,forceLoad:()=>Bh,functionToStringIntegration:()=>ti,geckoStackLineParser:()=>ah,getActiveSpan:()=>en,getClient:()=>Ze,getCurrentScope:()=>Ge,getDefaultIntegrations:()=>Dh,getFeedback:()=>cl,getGlobalScope:()=>Ye,getIsolationScope:()=>Je,getReplay:()=>py,getRootSpan:()=>Zt,getSpanDescendants:()=>Qt,getSpanStatusFromHttpCode:()=>gt,getTraceData:()=>Yo,globalHandlersIntegration:()=>Eh,graphqlClientIntegration:()=>of,growthbookIntegration:()=>Xb,httpClientIntegration:()=>qh,httpContextIntegration:()=>Rh,inboundFiltersIntegration:()=>oi,init:()=>Nh,instrumentAnthropicAiClient:()=>ic,instrumentGoogleGenAIClient:()=>gc,instrumentLangGraph:()=>Oc,instrumentOpenAiClient:()=>Ja,instrumentOutgoingRequests:()=>Jy,instrumentSupabaseClient:()=>qi,isEnabled:()=>Pr,isInitialized:()=>Lr,lastEventId:()=>Ir,launchDarklyIntegration:()=>Wb,lazyLoadIntegration:()=>zd,linkedErrorsIntegration:()=>Lh,logger:()=>r,makeBrowserOfflineTransport:()=>gb,makeFetchTransport:()=>Yp,makeMultiplexedTransport:()=>$o,metrics:()=>o,moduleMetadataIntegration:()=>mi,onLoad:()=>jh,openFeatureIntegration:()=>Kb,opera10StackLineParser:()=>uh,opera11StackLineParser:()=>hh,parameterize:()=>Ko,registerSpanErrorInstrumentation:()=>on,registerWebWorker:()=>nw,replayCanvasIntegration:()=>qy,replayIntegration:()=>ly,reportPageLoaded:()=>db,reportingObserverIntegration:()=>Hh,rewriteFramesIntegration:()=>Li,sendFeedback:()=>Qc,setActiveSpanInBrowser:()=>ub,setContext:()=>_r,setCurrentClient:()=>Oo,setExtra:()=>Cr,setExtras:()=>Sr,setHttpStatus:()=>mt,setMeasurement:()=>Dn,setTag:()=>Tr,setTags:()=>Er,setUser:()=>Mr,showReportDialog:()=>$h,spanToBaggageHeader:()=>vn,spanToJSON:()=>Vt,spanToTraceHeader:()=>Ht,spotlightBrowserIntegration:()=>Ph,startBrowserTracingNavigationSpan:()=>ob,startBrowserTracingPageLoadSpan:()=>rb,startInactiveSpan:()=>Un,startNewTrace:()=>Gn,startSession:()=>Dr,startSpan:()=>Hn,startSpanManual:()=>qn,statsigIntegration:()=>Qb,supabaseIntegration:()=>Ui,suppressTracing:()=>Kn,thirdPartyErrorFilterIntegration:()=>Yi,uiProfiler:()=>Qp,unleashIntegration:()=>Jb,updateSpanName:()=>nn,webWorkerIntegration:()=>ew,winjsStackLineParser:()=>lh,withActiveSpan:()=>Vn,withIsolationScope:()=>Qe,withScope:()=>Xe,zodErrorsIntegration:()=>Ji});const s="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__,a=globalThis,c="10.34.0";function l(){return d(a),a}function d(e){const t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||c,t[c]=t[c]||{}}function u(e,t,n=a){const r=n.__SENTRY__=n.__SENTRY__||{},o=r[c]=r[c]||{};return o[e]||(o[e]=t())}const p=["debug","info","warn","error","log","assert","trace"],h={};function f(e){if(!("console"in a))return e();const t=a.console,n={},r=Object.keys(h);r.forEach(e=>{const r=h[e];n[e]=t[e],t[e]=r});try{return e()}finally{r.forEach(e=>{t[e]=n[e]})}}function g(){return v().enabled}function m(e,...t){s&&g()&&f(()=>{a.console[e](`Sentry Logger [${e}]:`,...t)})}function v(){return s?u("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const y={enable:function(){v().enabled=!0},disable:function(){v().enabled=!1},isEnabled:g,log:function(...e){m("log",...e)},warn:function(...e){m("warn",...e)},error:function(...e){m("error",...e)}},b="?",w=/\(error: (.*)\)/,x=/captureMessage|captureException/;function k(...e){const t=e.sort((e,t)=>e[0]-t[0]).map(e=>e[1]);return(e,n=0,r=0)=>{const o=[],i=e.split("\n");for(let e=n;e<i.length;e++){let n=i[e];n.length>1024&&(n=n.slice(0,1024));const s=w.test(n)?n.replace(w,"$1"):n;if(!s.match(/\S*Error: /)){for(const e of t){const t=e(s);if(t){o.push(t);break}}if(o.length>=50+r)break}}return function(e){if(!e.length)return[];const t=Array.from(e);/sentryWrapped/.test(_(t).function||"")&&t.pop();t.reverse(),x.test(_(t).function||"")&&(t.pop(),x.test(_(t).function||"")&&t.pop());return t.slice(0,50).map(e=>({...e,filename:e.filename||_(t).filename,function:e.function||b}))}(o.slice(r))}}function _(e){return e[e.length-1]||{}}const S="<anonymous>";function C(e){try{return e&&"function"==typeof e&&e.name||S}catch{return S}}function E(e){const t=e.exception;if(t){const e=[];try{return t.values.forEach(t=>{t.stacktrace.frames&&e.push(...t.stacktrace.frames)}),e}catch{return}}}function T(e){return"__v_isVNode"in e&&e.__v_isVNode?"[VueVNode]":"[VueViewModel]"}const M={},I={};function A(e,t){M[e]=M[e]||[],M[e].push(t)}function R(e,t){if(!I[e]){I[e]=!0;try{t()}catch(t){s&&y.error(`Error while instrumenting ${e}`,t)}}}function L(e,t){const n=e&&M[e];if(n)for(const r of n)try{r(t)}catch(t){s&&y.error(`Error while triggering instrumentation handler.\nType: ${e}\nName: ${C(r)}\nError:`,t)}}let P=null;function O(e){const t="error";A(t,e),R(t,D)}function D(){P=a.onerror,a.onerror=function(e,t,n,r,o){return L("error",{column:r,error:o,line:n,msg:e,url:t}),!!P&&P.apply(this,arguments)},a.onerror.__SENTRY_INSTRUMENTED__=!0}let N=null;function B(e){const t="unhandledrejection";A(t,e),R(t,j)}function j(){N=a.onunhandledrejection,a.onunhandledrejection=function(e){return L("unhandledrejection",e),!N||N.apply(this,arguments)},a.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const $=Object.prototype.toString;function z(e){switch($.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return Y(e,Error)}}function F(e,t){return $.call(e)===`[object ${t}]`}function H(e){return F(e,"ErrorEvent")}function q(e){return F(e,"DOMError")}function U(e){return F(e,"String")}function W(e){return"object"==typeof e&&null!==e&&"__sentry_template_string__"in e&&"__sentry_template_values__"in e}function V(e){return null===e||W(e)||"object"!=typeof e&&"function"!=typeof e}function K(e){return F(e,"Object")}function G(e){return"undefined"!=typeof Event&&Y(e,Event)}function J(e){return Boolean(e?.then&&"function"==typeof e.then)}function Y(e,t){try{return e instanceof t}catch{return!1}}function X(e){return!("object"!=typeof e||null===e||!(e.__isVue||e._isVue||e.__v_isVNode))}function Q(e){return"undefined"!=typeof Request&&Y(e,Request)}const Z=a;function ee(e,t={}){if(!e)return"<unknown>";try{let n=e;const r=5,o=[];let i=0,s=0;const a=" > ",c=a.length;let l;const d=Array.isArray(t)?t:t.keyAttrs,u=!Array.isArray(t)&&t.maxStringLength||80;for(;n&&i++<r&&(l=te(n,d),!("html"===l||i>1&&s+o.length*c+l.length>=u));)o.push(l),s+=l.length,n=n.parentNode;return o.reverse().join(a)}catch{return"<unknown>"}}function te(e,t){const n=e,r=[];if(!n?.tagName)return"";if(Z.HTMLElement&&n instanceof HTMLElement&&n.dataset){if(n.dataset.sentryComponent)return n.dataset.sentryComponent;if(n.dataset.sentryElement)return n.dataset.sentryElement}r.push(n.tagName.toLowerCase());const o=t?.length?t.filter(e=>n.getAttribute(e)).map(e=>[e,n.getAttribute(e)]):null;if(o?.length)o.forEach(e=>{r.push(`[${e[0]}="${e[1]}"]`)});else{n.id&&r.push(`#${n.id}`);const e=n.className;if(e&&U(e)){const t=e.split(/\s+/);for(const e of t)r.push(`.${e}`)}}const i=["aria-label","type","name","title","alt"];for(const e of i){const t=n.getAttribute(e);t&&r.push(`[${e}="${t}"]`)}return r.join("")}function ne(){try{return Z.document.location.href}catch{return""}}function re(e){if(!Z.HTMLElement)return null;let t=e;for(let e=0;e<5;e++){if(!t)return null;if(t instanceof HTMLElement){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}t=t.parentNode}return null}function oe(e,t,n){if(!(t in e))return;const r=e[t];if("function"!=typeof r)return;const o=n(r);"function"==typeof o&&se(o,r);try{e[t]=o}catch{s&&y.log(`Failed to replace method "${t}" in object`,e)}}function ie(e,t,n){try{Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}catch{s&&y.log(`Failed to add non-enumerable property "${t}" to object`,e)}}function se(e,t){try{const n=t.prototype||{};e.prototype=t.prototype=n,ie(e,"__sentry_original__",t)}catch{}}function ae(e){return e.__sentry_original__}function ce(e){if(z(e))return{message:e.message,name:e.name,stack:e.stack,...de(e)};if(G(e)){const t={type:e.type,target:le(e.target),currentTarget:le(e.currentTarget),...de(e)};return"undefined"!=typeof CustomEvent&&Y(e,CustomEvent)&&(t.detail=e.detail),t}return e}function le(e){try{return t=e,"undefined"!=typeof Element&&Y(t,Element)?ee(e):Object.prototype.toString.call(e)}catch{return"<unknown>"}var t}function de(e){if("object"==typeof e&&null!==e){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}return{}}function ue(e){const t=Object.keys(ce(e));return t.sort(),t[0]?t.join(", "):"[object has no keys]"}let pe,he;function fe(e){if(void 0!==pe)return pe?pe(e):e();const t=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),n=a;return t in n&&"function"==typeof n[t]?(pe=n[t],pe(e)):(pe=null,e())}function ge(){return fe(()=>Math.random())}function me(){return fe(()=>Date.now())}function ve(e,t=0){return"string"!=typeof e||0===t||e.length<=t?e:`${e.slice(0,t)}...`}function ye(e,t){let n=e;const r=n.length;if(r<=150)return n;t>r&&(t=r);let o=Math.max(t-60,0);o<5&&(o=0);let i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n=`'{snip} ${n}`),i<r&&(n+=" {snip}"),n}function be(e,t){if(!Array.isArray(e))return"";const n=[];for(let t=0;t<e.length;t++){const r=e[t];try{X(r)?n.push(T(r)):n.push(String(r))}catch{n.push("[value cannot be serialized]")}}return n.join(t)}function we(e,t,n=!1){return!!U(e)&&(F(t,"RegExp")?t.test(e):!!U(t)&&(n?e===t:e.includes(t)))}function xe(e,t=[],n=!1){return t.some(t=>we(e,t,n))}function ke(e=function(){const e=a;return e.crypto||e.msCrypto}()){try{if(e?.randomUUID)return fe(()=>e.randomUUID()).replace(/-/g,"")}catch{}return he||(he=[1e7]+1e3+4e3+8e3+1e11),he.replace(/[018]/g,e=>(e^(16*ge()&15)>>e/4).toString(16))}function _e(e){return e.exception?.values?.[0]}function Se(e){const{message:t,event_id:n}=e;if(t)return t;const r=_e(e);return r?r.type&&r.value?`${r.type}: ${r.value}`:r.type||r.value||n||"<unknown>":n||"<unknown>"}function Ce(e,t,n){const r=e.exception=e.exception||{},o=r.values=r.values||[],i=o[0]=o[0]||{};i.value||(i.value=t||""),i.type||(i.type=n||"Error")}function Ee(e,t){const n=_e(e);if(!n)return;const r=n.mechanism;if(n.mechanism={type:"generic",handled:!0,...r,...t},t&&"data"in t){const e={...r?.data,...t.data};n.mechanism.data=e}}function Te(e){if(function(e){try{return e.__sentry_captured__}catch{}}(e))return!0;try{ie(e,"__sentry_captured__",!0)}catch{}return!1}function Me(){return me()/1e3}let Ie;function Ae(){return(Ie??(Ie=function(){const{performance:e}=a;if(!e?.now||!e.timeOrigin)return Me;const t=e.timeOrigin;return()=>(t+fe(()=>e.now()))/1e3}()))()}let Re=null;function Le(){return null===Re&&(Re=function(){const{performance:e}=a;if(!e?.now)return;const t=3e5,n=fe(()=>e.now()),r=me(),o=e.timeOrigin;if("number"==typeof o&&Math.abs(o+n-r)<t)return o;const i=e.timing?.navigationStart;if("number"==typeof i&&Math.abs(i+n-r)<t)return i;return r-n}()),Re}function Pe(e){const t=Ae(),n={sid:ke(),init:!0,timestamp:t,started:t,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>function(e){return{sid:`${e.sid}`,init:e.init,started:new Date(1e3*e.started).toISOString(),timestamp:new Date(1e3*e.timestamp).toISOString(),status:e.status,errors:e.errors,did:"number"==typeof e.did||"string"==typeof e.did?`${e.did}`:void 0,duration:e.duration,abnormal_mechanism:e.abnormal_mechanism,attrs:{release:e.release,environment:e.environment,ip_address:e.ipAddress,user_agent:e.userAgent}}}(n)};return e&&Oe(n,e),n}function Oe(e,t={}){if(t.user&&(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),e.did||t.did||(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||Ae(),t.abnormal_mechanism&&(e.abnormal_mechanism=t.abnormal_mechanism),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=32===t.sid.length?t.sid:ke()),void 0!==t.init&&(e.init=t.init),!e.did&&t.did&&(e.did=`${t.did}`),"number"==typeof t.started&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if("number"==typeof t.duration)e.duration=t.duration;else{const t=e.timestamp-e.started;e.duration=t>=0?t:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),"number"==typeof t.errors&&(e.errors=t.errors),t.status&&(e.status=t.status)}function De(e,t,n=2){if(!t||"object"!=typeof t||n<=0)return t;if(e&&0===Object.keys(t).length)return e;const r={...e};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=De(r[e],t[e],n-1));return r}function Ne(){return ke()}function Be(){return ke().substring(16)}const je="_sentrySpan";function $e(e,t){t?ie(e,je,t):delete e[je]}function ze(e){return e[je]}class Fe{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:Ne(),sampleRand:ge()}}clone(){const e=new Fe;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._attributes={...this._attributes},e._extra={...this._extra},e._contexts={...this._contexts},this._contexts.flags&&(e._contexts.flags={values:[...this._contexts.flags.values]}),e._user=this._user,e._level=this._level,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e._lastEventId=this._lastEventId,$e(e,ze(this)),e}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&Oe(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this.setTags({[e]:t})}setAttributes(e){return this._attributes={...this._attributes,...e},this._notifyScopeListeners(),this}setAttribute(e,t){return this.setAttributes({[e]:t})}removeAttribute(e){return e in this._attributes&&(delete this._attributes[e],this._notifyScopeListeners()),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return null===t?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t="function"==typeof e?e(this):e,n=t instanceof Fe?t.getScopeData():K(t)?e:void 0,{tags:r,attributes:o,extra:i,user:s,contexts:a,level:c,fingerprint:l=[],propagationContext:d}=n||{};return this._tags={...this._tags,...r},this._attributes={...this._attributes,...o},this._extra={...this._extra,...i},this._contexts={...this._contexts,...a},s&&Object.keys(s).length&&(this._user=s),c&&(this._level=c),l.length&&(this._fingerprint=l),d&&(this._propagationContext=d),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,$e(this,void 0),this._attachments=[],this.setPropagationContext({traceId:Ne(),sampleRand:ge()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){const n="number"==typeof t?t:100;if(n<=0)return this;const r={timestamp:Me(),...e,message:e.message?ve(e.message,2048):e.message};return this._breadcrumbs.push(r),this._breadcrumbs.length>n&&(this._breadcrumbs=this._breadcrumbs.slice(-n),this._client?.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:ze(this)}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=De(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const n=t?.event_id||ke();if(!this._client)return s&&y.warn("No client configured on scope - will not capture exception!"),n;const r=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:n},this),n}captureMessage(e,t,n){const r=n?.event_id||ke();if(!this._client)return s&&y.warn("No client configured on scope - will not capture message!"),r;const o=n?.syntheticException??new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:o,...n,event_id:r},this),r}captureEvent(e,t){const n=t?.event_id||ke();return this._client?(this._client.captureEvent(e,{...t,event_id:n},this),n):(s&&y.warn("No client configured on scope - will not capture event!"),n)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}class He{constructor(e,t){let n,r;n=e||new Fe,r=t||new Fe,this._stack=[{scope:n}],this._isolationScope=r}withScope(e){const t=this._pushScope();let n;try{n=e(t)}catch(e){throw this._popScope(),e}return J(n)?n.then(e=>(this._popScope(),e),e=>{throw this._popScope(),e}):(this._popScope(),n)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return!(this._stack.length<=1)&&!!this._stack.pop()}}function qe(){const e=d(l());return e.stack=e.stack||new He(u("defaultCurrentScope",()=>new Fe),u("defaultIsolationScope",()=>new Fe))}function Ue(e){return qe().withScope(e)}function We(e,t){const n=qe();return n.withScope(()=>(n.getStackTop().scope=e,t(e)))}function Ve(e){return qe().withScope(()=>e(qe().getIsolationScope()))}function Ke(e){const t=d(e);return t.acs?t.acs:{withIsolationScope:Ve,withScope:Ue,withSetScope:We,withSetIsolationScope:(e,t)=>Ve(t),getCurrentScope:()=>qe().getScope(),getIsolationScope:()=>qe().getIsolationScope()}}function Ge(){return Ke(l()).getCurrentScope()}function Je(){return Ke(l()).getIsolationScope()}function Ye(){return u("globalScope",()=>new Fe)}function Xe(...e){const t=Ke(l());if(2===e.length){const[n,r]=e;return n?t.withSetScope(n,r):t.withScope(r)}return t.withScope(e[0])}function Qe(...e){const t=Ke(l());if(2===e.length){const[n,r]=e;return n?t.withSetIsolationScope(n,r):t.withIsolationScope(r)}return t.withIsolationScope(e[0])}function Ze(){return Ge().getClient()}function et(e){const t=e.getPropagationContext(),{traceId:n,parentSpanId:r,propagationSpanId:o}=t,i={trace_id:n,span_id:o||Be()};return r&&(i.parent_span_id=r),i}const tt="sentry.source",nt="sentry.sample_rate",rt="sentry.previous_trace_sample_rate",ot="sentry.op",it="sentry.origin",st="sentry.idle_span_finish_reason",at="sentry.measurement_unit",ct="sentry.measurement_value",lt="sentry.custom_span_name",dt="sentry.profile_id",ut="sentry.exclusive_time",pt="http.request.method",ht="url.full",ft="sentry.link.type";function gt(e){if(e<400&&e>=100)return{code:1};if(e>=400&&e<500)switch(e){case 401:return{code:2,message:"unauthenticated"};case 403:return{code:2,message:"permission_denied"};case 404:return{code:2,message:"not_found"};case 409:return{code:2,message:"already_exists"};case 413:return{code:2,message:"failed_precondition"};case 429:return{code:2,message:"resource_exhausted"};case 499:return{code:2,message:"cancelled"};default:return{code:2,message:"invalid_argument"}}if(e>=500&&e<600)switch(e){case 501:return{code:2,message:"unimplemented"};case 503:return{code:2,message:"unavailable"};case 504:return{code:2,message:"deadline_exceeded"};default:return{code:2,message:"internal_error"}}return{code:2,message:"internal_error"}}function mt(e,t){e.setAttribute("http.response.status_code",t);const n=gt(t);"unknown_error"!==n.message&&e.setStatus(n)}const vt="_sentryScope",yt="_sentryIsolationScope";function bt(e){if(e){if("object"==typeof e&&"deref"in e&&"function"==typeof e.deref)try{return e.deref()}catch{return}return e}}function wt(e,t,n){e&&(ie(e,yt,function(e){try{const t=a.WeakRef;if("function"==typeof t)return new t(e)}catch{}return e}(n)),ie(e,vt,t))}function xt(e){const t=e;return{scope:t[vt],isolationScope:bt(t[yt])}}const kt="sentry-",_t=/^sentry-/;function St(e){const t=function(e){if(!e||!U(e)&&!Array.isArray(e))return;if(Array.isArray(e))return e.reduce((e,t)=>{const n=Et(t);return Object.entries(n).forEach(([t,n])=>{e[t]=n}),e},{});return Et(e)}(e);if(!t)return;const n=Object.entries(t).reduce((e,[t,n])=>{if(t.match(_t)){e[t.slice(7)]=n}return e},{});return Object.keys(n).length>0?n:void 0}function Ct(e){if(!e)return;return function(e){if(0===Object.keys(e).length)return;return Object.entries(e).reduce((e,[t,n],r)=>{const o=`${encodeURIComponent(t)}=${encodeURIComponent(n)}`,i=0===r?o:`${e},${o}`;return i.length>8192?(s&&y.warn(`Not adding key: ${t} with val: ${n} to baggage header due to exceeding baggage size limits.`),e):i},"")}(Object.entries(e).reduce((e,[t,n])=>(n&&(e[`${kt}${t}`]=n),e),{}))}function Et(e){return e.split(",").map(e=>{const t=e.indexOf("=");if(-1===t)return[];return[e.slice(0,t),e.slice(t+1)].map(e=>{try{return decodeURIComponent(e.trim())}catch{return}})}).reduce((e,[t,n])=>(t&&n&&(e[t]=n),e),{})}const Tt=/^o(\d+)\./,Mt=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function It(e,t=!1){const{host:n,path:r,pass:o,port:i,projectId:s,protocol:a,publicKey:c}=e;return`${a}://${c}${t&&o?`:${o}`:""}@${n}${i?`:${i}`:""}/${r?`${r}/`:r}${s}`}function At(e){const t=Mt.exec(e);if(!t)return void f(()=>{});const[n,r,o="",i="",s="",a=""]=t.slice(1);let c="",l=a;const d=l.split("/");if(d.length>1&&(c=d.slice(0,-1).join("/"),l=d.pop()),l){const e=l.match(/^\d+/);e&&(l=e[0])}return Rt({host:i,pass:o,path:c,projectId:l,port:s,protocol:n,publicKey:r})}function Rt(e){return{protocol:e.protocol,publicKey:e.publicKey||"",pass:e.pass||"",host:e.host,port:e.port||"",path:e.path||"",projectId:e.projectId}}function Lt(e){const t=e.getOptions(),{host:n}=e.getDsn()||{};let r;return t.orgId?r=String(t.orgId):n&&(r=function(e){const t=e.match(Tt);return t?.[1]}(n)),r}function Pt(e){const t="string"==typeof e?At(e):Rt(e);if(t&&function(e){if(!s)return!0;const{port:t,projectId:n,protocol:r}=e;return!(["protocol","publicKey","host","projectId"].find(t=>!e[t]&&(y.error(`Invalid Sentry Dsn: ${t} missing`),!0))||(n.match(/^\d+$/)?function(e){return"http"===e||"https"===e}(r)?t&&isNaN(parseInt(t,10))&&(y.error(`Invalid Sentry Dsn: Invalid port ${t}`),1):(y.error(`Invalid Sentry Dsn: Invalid protocol ${r}`),1):(y.error(`Invalid Sentry Dsn: Invalid projectId ${n}`),1)))}(t))return t}function Ot(e){if("boolean"==typeof e)return Number(e);const t="string"==typeof e?parseFloat(e):e;return"number"!=typeof t||isNaN(t)||t<0||t>1?void 0:t}const Dt=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function Nt(e,t){const n=function(e){if(!e)return;const t=e.match(Dt);if(!t)return;let n;return"1"===t[3]?n=!0:"0"===t[3]&&(n=!1),{traceId:t[1],parentSampled:n,parentSpanId:t[2]}}(e),r=St(t);if(!n?.traceId)return{traceId:Ne(),sampleRand:ge()};const o=function(e,t){const n=Ot(t?.sample_rand);if(void 0!==n)return n;const r=Ot(t?.sample_rate);return r&&void 0!==e?.parentSampled?e.parentSampled?ge()*r:r+ge()*(1-r):ge()}(n,r);r&&(r.sample_rand=o.toString());const{traceId:i,parentSpanId:s,parentSampled:a}=n;return{traceId:i,parentSpanId:s,sampled:a,dsc:r||{},sampleRand:o}}function Bt(e=Ne(),t=Be(),n){let r="";return void 0!==n&&(r=n?"-1":"-0"),`${e}-${t}${r}`}function jt(e=Ne(),t=Be(),n){return`00-${e}-${t}-${n?"01":"00"}`}let $t=!1;function zt(e){const{spanId:t,traceId:n}=e.spanContext(),{data:r,op:o,parent_span_id:i,status:s,origin:a,links:c}=Vt(e);return{parent_span_id:i,span_id:t,trace_id:n,data:r,op:o,status:s,origin:a,links:c}}function Ft(e){const{spanId:t,traceId:n,isRemote:r}=e.spanContext(),o=r?t:Vt(e).parent_span_id,i=xt(e).scope;return{parent_span_id:o,span_id:r?i?.getPropagationContext().propagationSpanId||Be():t,trace_id:n}}function Ht(e){const{traceId:t,spanId:n}=e.spanContext();return Bt(t,n,Kt(e))}function qt(e){return e&&e.length>0?e.map(({context:{spanId:e,traceId:t,traceFlags:n,...r},attributes:o})=>({span_id:e,trace_id:t,sampled:1===n,attributes:o,...r})):void 0}function Ut(e){return"number"==typeof e?Wt(e):Array.isArray(e)?e[0]+e[1]/1e9:e instanceof Date?Wt(e.getTime()):Ae()}function Wt(e){return e>9999999999?e/1e3:e}function Vt(e){if(function(e){return"function"==typeof e.getSpanJSON}(e))return e.getSpanJSON();const{spanId:t,traceId:n}=e.spanContext();if(function(e){const t=e;return!!(t.attributes&&t.startTime&&t.name&&t.endTime&&t.status)}(e)){const{attributes:r,startTime:o,name:i,endTime:s,status:a,links:c}=e;return{span_id:t,trace_id:n,data:r,description:i,parent_span_id:"parentSpanId"in e?e.parentSpanId:"parentSpanContext"in e?e.parentSpanContext?.spanId:void 0,start_timestamp:Ut(o),timestamp:Ut(s)||void 0,status:Gt(a),op:r[ot],origin:r[it],links:qt(c)}}return{span_id:t,trace_id:n,start_timestamp:0,data:{}}}function Kt(e){const{traceFlags:t}=e.spanContext();return 1===t}function Gt(e){if(e&&0!==e.code)return 1===e.code?"ok":e.message||"internal_error"}const Jt="_sentryChildSpans",Yt="_sentryRootSpan";function Xt(e,t){const n=e[Yt]||e;ie(t,Yt,n),e[Jt]?e[Jt].add(t):ie(e,Jt,new Set([t]))}function Qt(e){const t=new Set;return function e(n){if(!t.has(n)&&Kt(n)){t.add(n);const r=n[Jt]?Array.from(n[Jt]):[];for(const t of r)e(t)}}(e),Array.from(t)}function Zt(e){return e[Yt]||e}function en(){const e=Ke(l());return e.getActiveSpan?e.getActiveSpan():ze(Ge())}function tn(){$t||(f(()=>{}),$t=!0)}function nn(e,t){e.updateName(t),e.setAttributes({[tt]:"custom",[lt]:t})}let rn=!1;function on(){function e(){const e=en(),t=e&&Zt(e);if(t){const e="internal_error";s&&y.log(`[Tracing] Root span: ${e} -> Global error occurred`),t.setStatus({code:2,message:e})}}rn||(e.tag="sentry_tracingErrorCallback",rn=!0,O(e),B(e))}function sn(e){if("boolean"==typeof __SENTRY_TRACING__&&!__SENTRY_TRACING__)return!1;const t=e||Ze()?.getOptions();return!(!t||null==t.tracesSampleRate&&!t.tracesSampler)}function an(e){y.log(`Ignoring span ${e.op} - ${e.description} because it matches \`ignoreSpans\`.`)}function cn(e,t){if(!t?.length||!e.description)return!1;for(const n of t){if(dn(n)){if(we(e.description,n))return s&&an(e),!0;continue}if(!n.name&&!n.op)continue;const t=!n.name||we(e.description,n.name),r=!n.op||e.op&&we(e.op,n.op);if(t&&r)return s&&an(e),!0}return!1}function ln(e,t){const n=t.parent_span_id,r=t.span_id;if(n)for(const t of e)t.parent_span_id===r&&(t.parent_span_id=n)}function dn(e){return"string"==typeof e||e instanceof RegExp}const un="production",pn="_frozenDsc";function hn(e,t){ie(e,pn,t)}function fn(e,t){const n=t.getOptions(),{publicKey:r}=t.getDsn()||{},o={environment:n.environment||un,release:n.release,public_key:r,trace_id:e,org_id:Lt(t)};return t.emit("createDsc",o),o}function gn(e,t){const n=t.getPropagationContext();return n.dsc||fn(n.traceId,e)}function mn(e){const t=Ze();if(!t)return{};const n=Zt(e),r=Vt(n),o=r.data,i=n.spanContext().traceState,s=i?.get("sentry.sample_rate")??o[nt]??o[rt];function a(e){return"number"!=typeof s&&"string"!=typeof s||(e.sample_rate=`${s}`),e}const c=n[pn];if(c)return a(c);const l=i?.get("sentry.dsc"),d=l&&St(l);if(d)return a(d);const u=fn(e.spanContext().traceId,t),p=o[tt],h=r.description;return"url"!==p&&h&&(u.transaction=h),sn()&&(u.sampled=String(Kt(n)),u.sample_rand=i?.get("sentry.sample_rand")??xt(n).scope?.getPropagationContext().sampleRand.toString()),a(u),t.emit("createDsc",u,n),u}function vn(e){return Ct(mn(e))}class yn{constructor(e={}){this._traceId=e.traceId||Ne(),this._spanId=e.spanId||Be()}spanContext(){return{spanId:this._spanId,traceId:this._traceId,traceFlags:0}}end(e){}setAttribute(e,t){return this}setAttributes(e){return this}setStatus(e){return this}updateName(e){return this}isRecording(){return!1}addEvent(e,t,n){return this}addLink(e){return this}addLinks(e){return this}recordException(e,t){}}function bn(e,t=100,n=1/0){try{return xn("",e,t,n)}catch(e){return{ERROR:`**non-serializable** (${e})`}}}function wn(e,t=3,n=102400){const r=bn(e,t);return function(e){return function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(e))}(r)>n?wn(e,t-1,n):r}function xn(e,t,r=1/0,o=1/0,i=function(){const e=new WeakSet;function t(t){return!!e.has(t)||(e.add(t),!1)}function n(t){e.delete(t)}return[t,n]}()){const[s,a]=i;if(null==t||["boolean","string"].includes(typeof t)||"number"==typeof t&&Number.isFinite(t))return t;const c=function(e,t){try{if("domain"===e&&t&&"object"==typeof t&&t._events)return"[Domain]";if("domainEmitter"===e)return"[DomainEmitter]";if(void 0!==n.g&&t===n.g)return"[Global]";if("undefined"!=typeof window&&t===window)return"[Window]";if("undefined"!=typeof document&&t===document)return"[Document]";if(X(t))return T(t);if(K(r=t)&&"nativeEvent"in r&&"preventDefault"in r&&"stopPropagation"in r)return"[SyntheticEvent]";if("number"==typeof t&&!Number.isFinite(t))return`[${t}]`;if("function"==typeof t)return`[Function: ${C(t)}]`;if("symbol"==typeof t)return`[${String(t)}]`;if("bigint"==typeof t)return`[BigInt: ${String(t)}]`;const o=function(e){const t=Object.getPrototypeOf(e);return t?.constructor?t.constructor.name:"null prototype"}(t);return/^HTML(\w*)Element$/.test(o)?`[HTMLElement: ${o}]`:`[object ${o}]`}catch(e){return`**non-serializable** (${e})`}var r}(e,t);if(!c.startsWith("[object "))return c;if(t.__sentry_skip_normalization__)return t;const l="number"==typeof t.__sentry_override_normalization_depth__?t.__sentry_override_normalization_depth__:r;if(0===l)return c.replace("object ","");if(s(t))return"[Circular ~]";const d=t;if(d&&"function"==typeof d.toJSON)try{return xn("",d.toJSON(),l-1,o,i)}catch{}const u=Array.isArray(t)?[]:{};let p=0;const h=ce(t);for(const e in h){if(!Object.prototype.hasOwnProperty.call(h,e))continue;if(p>=o){u[e]="[MaxProperties ~]";break}const t=h[e];u[e]=xn(e,t,l-1,o,i),p++}return a(t),u}function kn(e,t=[]){return[e,t]}function _n(e,t){const[n,r]=e;return[n,[...r,t]]}function Sn(e,t){const n=e[1];for(const e of n){if(t(e,e[0].type))return!0}return!1}function Cn(e,t){return Sn(e,(e,n)=>t.includes(n))}function En(e){const t=d(a);return t.encodePolyfill?t.encodePolyfill(e):(new TextEncoder).encode(e)}function Tn(e){const[t,n]=e;let r=JSON.stringify(t);function o(e){"string"==typeof r?r="string"==typeof e?r+e:[En(r),e]:r.push("string"==typeof e?En(e):e)}for(const e of n){const[t,n]=e;if(o(`\n${JSON.stringify(t)}\n`),"string"==typeof n||n instanceof Uint8Array)o(n);else{let e;try{e=JSON.stringify(n)}catch{e=JSON.stringify(bn(n))}o(e)}}return"string"==typeof r?r:function(e){const t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.length;return n}(r)}function Mn(e){let t="string"==typeof e?En(e):e;function n(e){const n=t.subarray(0,e);return t=t.subarray(e+1),n}function r(){let e=t.indexOf(10);return e<0&&(e=t.length),JSON.parse(function(e){const t=d(a);return t.decodePolyfill?t.decodePolyfill(e):(new TextDecoder).decode(e)}(n(e)))}const o=r(),i=[];for(;t.length;){const e=r(),t="number"==typeof e.length?e.length:void 0;i.push([e,t?n(t):r()])}return[o,i]}function In(e){return[{type:"span"},e]}function An(e){const t="string"==typeof e.data?En(e.data):e.data;return[{type:"attachment",length:t.length,filename:e.filename,content_type:e.contentType,attachment_type:e.attachmentType},t]}const Rn={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",raw_security:"security",log:"log_item",metric:"metric",trace_metric:"metric"};function Ln(e){return Rn[e]}function Pn(e){if(!e?.sdk)return;const{name:t,version:n}=e.sdk;return{name:t,version:n}}function On(e,t,n,r){const o=e.sdkProcessingMetadata?.dynamicSamplingContext;return{event_id:e.event_id,sent_at:(new Date).toISOString(),...t&&{sdk:t},...!!n&&r&&{dsn:It(r)},...o&&{trace:o}}}function Dn(e,t,n,r=en()){const o=r&&Zt(r);o&&(s&&y.log(`[Measurement] Setting measurement on root span: ${e} = ${t} ${n}`),o.addEvent(e,{[ct]:t,[at]:n}))}function Nn(e){if(!e||0===e.length)return;const t={};return e.forEach(e=>{const n=e.attributes||{},r=n[at],o=n[ct];"string"==typeof r&&"number"==typeof o&&(t[e.name]={value:o,unit:r})}),t}class Bn{constructor(e={}){this._traceId=e.traceId||Ne(),this._spanId=e.spanId||Be(),this._startTime=e.startTimestamp||Ae(),this._links=e.links,this._attributes={},this.setAttributes({[it]:"manual",[ot]:e.op,...e.attributes}),this._name=e.name,e.parentSpanId&&(this._parentSpanId=e.parentSpanId),"sampled"in e&&(this._sampled=e.sampled),e.endTimestamp&&(this._endTime=e.endTimestamp),this._events=[],this._isStandaloneSpan=e.isStandalone,this._endTime&&this._onSpanEnded()}addLink(e){return this._links?this._links.push(e):this._links=[e],this}addLinks(e){return this._links?this._links.push(...e):this._links=e,this}recordException(e,t){}spanContext(){const{_spanId:e,_traceId:t,_sampled:n}=this;return{spanId:e,traceId:t,traceFlags:n?1:0}}setAttribute(e,t){return void 0===t?delete this._attributes[e]:this._attributes[e]=t,this}setAttributes(e){return Object.keys(e).forEach(t=>this.setAttribute(t,e[t])),this}updateStartTime(e){this._startTime=Ut(e)}setStatus(e){return this._status=e,this}updateName(e){return this._name=e,this.setAttribute(tt,"custom"),this}end(e){this._endTime||(this._endTime=Ut(e),function(e){if(!s)return;const{description:t="< unknown name >",op:n="< unknown op >"}=Vt(e),{spanId:r}=e.spanContext(),o=`[Tracing] Finishing "${n}" ${Zt(e)===e?"root ":""}span "${t}" with ID ${r}`;y.log(o)}(this),this._onSpanEnded())}getSpanJSON(){return{data:this._attributes,description:this._name,op:this._attributes[ot],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:Gt(this._status),timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[it],profile_id:this._attributes[dt],exclusive_time:this._attributes[ut],measurements:Nn(this._events),is_segment:this._isStandaloneSpan&&Zt(this)===this||void 0,segment_id:this._isStandaloneSpan?Zt(this).spanContext().spanId:void 0,links:qt(this._links)}}isRecording(){return!this._endTime&&!!this._sampled}addEvent(e,t,n){s&&y.log("[Tracing] Adding an event to span:",e);const r=jn(t)?t:n||Ae(),o=jn(t)?{}:t||{},i={name:e,time:Ut(r),attributes:o};return this._events.push(i),this}isStandaloneSpan(){return!!this._isStandaloneSpan}_onSpanEnded(){const e=Ze();e&&e.emit("spanEnd",this);if(!(this._isStandaloneSpan||this===Zt(this)))return;if(this._isStandaloneSpan)return void(this._sampled?function(e){const t=Ze();if(!t)return;const n=e[1];if(!n||0===n.length)return void t.recordDroppedEvent("before_send","span");t.sendEnvelope(e)}(function(e,t){const n=mn(e[0]),r=t?.getDsn(),o=t?.getOptions().tunnel,i={sent_at:(new Date).toISOString(),...function(e){return!!e.trace_id&&!!e.public_key}(n)&&{trace:n},...!!o&&r&&{dsn:It(r)}},{beforeSendSpan:s,ignoreSpans:a}=t?.getOptions()||{},c=a?.length?e.filter(e=>!cn(Vt(e),a)):e,l=e.length-c.length;l&&t?.recordDroppedEvent("before_send","span",l);const d=s?e=>{const t=Vt(e);return s(t)||(tn(),t)}:Vt,u=[];for(const e of c){const t=d(e);t&&u.push(In(t))}return kn(i,u)}([this],e)):(s&&y.log("[Tracing] Discarding standalone span because its trace was not chosen to be sampled."),e&&e.recordDroppedEvent("sample_rate","span")));const t=this._convertSpanToTransaction();if(t){(xt(this).scope||Ge()).captureEvent(t)}}_convertSpanToTransaction(){if(!$n(Vt(this)))return;this._name||(s&&y.warn("Transaction has no name, falling back to `<unlabeled transaction>`."),this._name="<unlabeled transaction>");const{scope:e,isolationScope:t}=xt(this),n=e?.getScopeData().sdkProcessingMetadata?.normalizedRequest;if(!0!==this._sampled)return;const r=Qt(this).filter(e=>e!==this&&!function(e){return e instanceof Bn&&e.isStandaloneSpan()}(e)).map(e=>Vt(e)).filter($n),o=this._attributes[tt];delete this._attributes[lt],r.forEach(e=>{delete e.data[lt]});const i={contexts:{trace:zt(this)},spans:r.length>1e3?r.sort((e,t)=>e.start_timestamp-t.start_timestamp).slice(0,1e3):r,start_timestamp:this._startTime,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:e,capturedSpanIsolationScope:t,dynamicSamplingContext:mn(this)},request:n,...o&&{transaction_info:{source:o}}},a=Nn(this._events);return a&&Object.keys(a).length&&(s&&y.log("[Measurements] Adding measurements to transaction event",JSON.stringify(a,void 0,2)),i.measurements=a),i}}function jn(e){return e&&"number"==typeof e||e instanceof Date||Array.isArray(e)}function $n(e){return!!(e.start_timestamp&&e.timestamp&&e.span_id&&e.trace_id)}function zn(e,t,n=()=>{},r=()=>{}){let o;try{o=e()}catch(e){throw t(e),n(),e}return function(e,t,n,r){if(J(e))return e.then(e=>(n(),r(e),e),e=>{throw t(e),n(),e});return n(),r(e),e}(o,t,n,r)}const Fn="__SENTRY_SUPPRESS_TRACING__";function Hn(e,t){const n=Xn();if(n.startSpan)return n.startSpan(e,t);const r=Yn(e),{forceTransaction:o,parentSpan:i,scope:s}=e,a=s?.clone();return Xe(a,()=>er(i)(()=>{const n=Ge(),s=Zn(n,i),a=e.onlyIfParent&&!s?new yn:Jn({parentSpan:s,spanArguments:r,forceTransaction:o,scope:n});return $e(n,a),zn(()=>t(a),()=>{const{status:e}=Vt(a);!a.isRecording()||e&&"ok"!==e||a.setStatus({code:2,message:"internal_error"})},()=>{a.end()})}))}function qn(e,t){const n=Xn();if(n.startSpanManual)return n.startSpanManual(e,t);const r=Yn(e),{forceTransaction:o,parentSpan:i,scope:s}=e,a=s?.clone();return Xe(a,()=>er(i)(()=>{const n=Ge(),s=Zn(n,i),a=e.onlyIfParent&&!s?new yn:Jn({parentSpan:s,spanArguments:r,forceTransaction:o,scope:n});return $e(n,a),zn(()=>t(a,()=>a.end()),()=>{const{status:e}=Vt(a);!a.isRecording()||e&&"ok"!==e||a.setStatus({code:2,message:"internal_error"})})}))}function Un(e){const t=Xn();if(t.startInactiveSpan)return t.startInactiveSpan(e);const n=Yn(e),{forceTransaction:r,parentSpan:o}=e;return(e.scope?t=>Xe(e.scope,t):void 0!==o?e=>Vn(o,e):e=>e())(()=>{const t=Ge(),i=Zn(t,o);return e.onlyIfParent&&!i?new yn:Jn({parentSpan:i,spanArguments:n,forceTransaction:r,scope:t})})}const Wn=(e,t)=>{const n=Ke(l());if(n.continueTrace)return n.continueTrace(e,t);const{sentryTrace:r,baggage:o}=e,i=Ze(),s=St(o);return i&&!function(e,t){const n=Lt(e);return t&&n&&t!==n?(y.log(`Won't continue trace because org IDs don't match (incoming baggage: ${t}, SDK options: ${n})`),!1):!e.getOptions().strictTraceContinuation||!(t&&!n||!t&&n)||(y.log(`Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${t}, Sentry client: ${n})`),!1)}(i,s?.org_id)?Gn(t):Xe(e=>{const n=Nt(r,o);return e.setPropagationContext(n),$e(e,void 0),t()})};function Vn(e,t){const n=Xn();return n.withActiveSpan?n.withActiveSpan(e,t):Xe(n=>($e(n,e||void 0),t(n)))}function Kn(e){const t=Xn();return t.suppressTracing?t.suppressTracing(e):Xe(t=>{t.setSDKProcessingMetadata({[Fn]:!0});const n=e();return t.setSDKProcessingMetadata({[Fn]:void 0}),n})}function Gn(e){return Xe(t=>(t.setPropagationContext({traceId:Ne(),sampleRand:ge()}),s&&y.log(`Starting a new trace with id ${t.getPropagationContext().traceId}`),Vn(null,e)))}function Jn({parentSpan:e,spanArguments:t,forceTransaction:n,scope:r}){if(!sn()){const r=new yn;if(n||!e){hn(r,{sampled:"false",sample_rate:"0",transaction:t.name,...mn(r)})}return r}const o=Je();let i;if(e&&!n)i=function(e,t,n){const{spanId:r,traceId:o}=e.spanContext(),i=!t.getScopeData().sdkProcessingMetadata[Fn]&&Kt(e),s=i?new Bn({...n,parentSpanId:r,traceId:o,sampled:i}):new yn({traceId:o});Xt(e,s);const a=Ze();a&&(a.emit("spanStart",s),n.endTimestamp&&a.emit("spanEnd",s));return s}(e,r,t),Xt(e,i);else if(e){const n=mn(e),{traceId:o,spanId:s}=e.spanContext(),a=Kt(e);i=Qn({traceId:o,parentSpanId:s,...t},r,a),hn(i,n)}else{const{traceId:e,dsc:n,parentSpanId:s,sampled:a}={...o.getPropagationContext(),...r.getPropagationContext()};i=Qn({traceId:e,parentSpanId:s,...t},r,a),n&&hn(i,n)}return function(e){if(!s)return;const{description:t="< unknown name >",op:n="< unknown op >",parent_span_id:r}=Vt(e),{spanId:o}=e.spanContext(),i=Kt(e),a=Zt(e),c=a===e,l=`[Tracing] Starting ${i?"sampled":"unsampled"} ${c?"root ":""}span`,d=[`op: ${n}`,`name: ${t}`,`ID: ${o}`];if(r&&d.push(`parent ID: ${r}`),!c){const{op:e,description:t}=Vt(a);d.push(`root ID: ${a.spanContext().spanId}`),e&&d.push(`root op: ${e}`),t&&d.push(`root description: ${t}`)}y.log(`${l}\n ${d.join("\n ")}`)}(i),wt(i,r,o),i}function Yn(e){const t={isStandalone:(e.experimental||{}).standalone,...e};if(e.startTime){const n={...t};return n.startTimestamp=Ut(e.startTime),delete n.startTime,n}return t}function Xn(){return Ke(l())}function Qn(e,t,n){const r=Ze(),o=r?.getOptions()||{},{name:i=""}=e,a={spanAttributes:{...e.attributes},spanName:i,parentSampled:n};r?.emit("beforeSampling",a,{decision:!1});const c=a.parentSampled??n,l=a.spanAttributes,d=t.getPropagationContext(),[u,p,h]=t.getScopeData().sdkProcessingMetadata[Fn]?[!1]:function(e,t,n){if(!sn(e))return[!1];let r,o;"function"==typeof e.tracesSampler?(o=e.tracesSampler({...t,inheritOrSampleWith:e=>"number"==typeof t.parentSampleRate?t.parentSampleRate:"boolean"==typeof t.parentSampled?Number(t.parentSampled):e}),r=!0):void 0!==t.parentSampled?o=t.parentSampled:void 0!==e.tracesSampleRate&&(o=e.tracesSampleRate,r=!0);const i=Ot(o);if(void 0===i)return s&&y.warn(`[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(o)} of type ${JSON.stringify(typeof o)}.`),[!1];if(!i)return s&&y.log("[Tracing] Discarding transaction because "+("function"==typeof e.tracesSampler?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0")),[!1,i,r];const a=n<i;return a||s&&y.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(o)})`),[a,i,r]}(o,{name:i,parentSampled:c,attributes:l,parentSampleRate:Ot(d.dsc?.sample_rate)},d.sampleRand),f=new Bn({...e,attributes:{[tt]:"custom",[nt]:void 0!==p&&h?p:void 0,...l},sampled:u});return!u&&r&&(s&&y.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),r.recordDroppedEvent("sample_rate","transaction")),r&&r.emit("spanStart",f),f}function Zn(e,t){if(t)return t;if(null===t)return;const n=ze(e);if(!n)return;const r=Ze();return(r?r.getOptions():{}).parentSpanIsAlwaysRootSpan?Zt(n):n}function er(e){return void 0!==e?t=>Vn(e,t):e=>e()}const tr={idleTimeout:1e3,finalTimeout:3e4,childSpanTimeout:15e3};function nr(e,t={}){const n=new Map;let r,o=!1,i="externalFinish",a=!t.disableAutoFinish;const c=[],{idleTimeout:l=tr.idleTimeout,finalTimeout:d=tr.finalTimeout,childSpanTimeout:u=tr.childSpanTimeout,beforeSpanEnd:p,trimIdleSpanEndTimestamp:h=!0}=t,f=Ze();if(!f||!sn()){const e=new yn;return hn(e,{sample_rate:"0",sampled:"false",...mn(e)}),e}const g=Ge(),m=en(),v=function(e){const t=Un(e);return $e(Ge(),t),s&&y.log("[Tracing] Started span is an idle span"),t}(e);function b(){r&&(clearTimeout(r),r=void 0)}function w(e){b(),r=setTimeout(()=>{!o&&0===n.size&&a&&(i="idleTimeout",v.end(e))},l)}function x(e){r=setTimeout(()=>{!o&&a&&(i="heartbeatFailed",v.end(e))},u)}function k(e){o=!0,n.clear(),c.forEach(e=>e()),$e(g,m);const t=Vt(v),{start_timestamp:r}=t;if(!r)return;t.data[st]||v.setAttribute(st,i);const a=t.status;a&&"unknown"!==a||v.setStatus({code:1}),y.log(`[Tracing] Idle span "${t.op}" finished`);const u=Qt(v).filter(e=>e!==v);let p=0;u.forEach(t=>{t.isRecording()&&(t.setStatus({code:2,message:"cancelled"}),t.end(e),s&&y.log("[Tracing] Cancelling span since span ended early",JSON.stringify(t,void 0,2)));const n=Vt(t),{timestamp:r=0,start_timestamp:o=0}=n,i=o<=e,a=r-o<=(d+l)/1e3;if(s){const e=JSON.stringify(t,void 0,2);i?a||y.log("[Tracing] Discarding span since it finished after idle span final timeout",e):y.log("[Tracing] Discarding span since it happened after idle span was finished",e)}a&&i||(!function(e,t){e[Jt]&&e[Jt].delete(t)}(v,t),p++)}),p>0&&v.setAttribute("sentry.idle_span_discarded_spans",p)}return v.end=new Proxy(v.end,{apply(e,t,n){if(p&&p(v),t instanceof yn)return;const[r,...o]=n,i=Ut(r||Ae()),s=Qt(v).filter(e=>e!==v),a=Vt(v);if(!s.length||!h)return k(i),Reflect.apply(e,t,[i,...o]);const c=f.getOptions().ignoreSpans,l=s?.reduce((e,t)=>{const n=Vt(t);return n.timestamp?c&&cn(n,c)?e:e?Math.max(e,n.timestamp):n.timestamp:e},void 0),u=a.start_timestamp,g=Math.min(u?u+d/1e3:1/0,Math.max(u||-1/0,Math.min(i,l||1/0)));return k(g),Reflect.apply(e,t,[g,...o])}}),c.push(f.on("spanStart",e=>{if(o||e===v||Vt(e).timestamp||e instanceof Bn&&e.isStandaloneSpan())return;var t;Qt(v).includes(e)&&(t=e.spanContext().spanId,b(),n.set(t,!0),x(Ae()+u/1e3))})),c.push(f.on("spanEnd",e=>{var t;o||(t=e.spanContext().spanId,n.has(t)&&n.delete(t),0===n.size&&w(Ae()+l/1e3))})),c.push(f.on("idleSpanEnableAutoFinish",e=>{e===v&&(a=!0,w(),n.size&&x())})),t.disableAutoFinish||w(),setTimeout(()=>{o||(v.setStatus({code:2,message:"deadline_exceeded"}),i="finalTimeout",v.end())},d),v}function rr(e){return new ir(t=>{t(e)})}function or(e){return new ir((t,n)=>{n(e)})}class ir{constructor(e){this._state=0,this._handlers=[],this._runExecutor(e)}then(e,t){return new ir((n,r)=>{this._handlers.push([!1,t=>{if(e)try{n(e(t))}catch(e){r(e)}else n(t)},e=>{if(t)try{n(t(e))}catch(e){r(e)}else r(e)}]),this._executeHandlers()})}catch(e){return this.then(e=>e,e)}finally(e){return new ir((t,n)=>{let r,o;return this.then(t=>{o=!1,r=t,e&&e()},t=>{o=!0,r=t,e&&e()}).then(()=>{o?n(r):t(r)})})}_executeHandlers(){if(0===this._state)return;const e=this._handlers.slice();this._handlers=[],e.forEach(e=>{e[0]||(1===this._state&&e[1](this._value),2===this._state&&e[2](this._value),e[0]=!0)})}_runExecutor(e){const t=(e,t)=>{0===this._state&&(J(t)?t.then(n,r):(this._state=e,this._value=t,this._executeHandlers()))},n=e=>{t(1,e)},r=e=>{t(2,e)};try{e(n,r)}catch(e){r(e)}}}function sr(e,t,n,r=0){try{const o=ar(t,n,e,r);return J(o)?o:rr(o)}catch(e){return or(e)}}function ar(e,t,n,r){const o=n[r];if(!e||!o)return e;const i=o({...e},t);return s&&null===i&&y.log(`Event processor "${o.id||"?"}" dropped event`),J(i)?i.then(e=>ar(e,t,n,r+1)):ar(i,t,n,r+1)}let cr,lr,dr,ur;function pr(e){const t=a._sentryDebugIds,n=a._debugIds;if(!t&&!n)return{};const r=t?Object.keys(t):[],o=n?Object.keys(n):[];if(ur&&r.length===lr&&o.length===dr)return ur;lr=r.length,dr=o.length,ur={},cr||(cr={});const i=(t,n)=>{for(const r of t){const t=n[r],o=cr?.[r];if(o&&ur&&t)ur[o[0]]=t,cr&&(cr[r]=[o[0],t]);else if(t){const n=e(r);for(let e=n.length-1;e>=0;e--){const o=n[e],i=o?.filename;if(i&&ur&&cr){ur[i]=t,cr[r]=[i,t];break}}}}};return t&&i(r,t),n&&i(o,n),ur}function hr(e,t){const{fingerprint:n,span:r,breadcrumbs:o,sdkProcessingMetadata:i}=t;!function(e,t){const{extra:n,tags:r,user:o,contexts:i,level:s,transactionName:a}=t;Object.keys(n).length&&(e.extra={...n,...e.extra});Object.keys(r).length&&(e.tags={...r,...e.tags});Object.keys(o).length&&(e.user={...o,...e.user});Object.keys(i).length&&(e.contexts={...i,...e.contexts});s&&(e.level=s);a&&"transaction"!==e.type&&(e.transaction=a)}(e,t),r&&function(e,t){e.contexts={trace:Ft(t),...e.contexts},e.sdkProcessingMetadata={dynamicSamplingContext:mn(t),...e.sdkProcessingMetadata};const n=Zt(t),r=Vt(n).description;r&&!e.transaction&&"transaction"===e.type&&(e.transaction=r)}(e,r),function(e,t){e.fingerprint=e.fingerprint?Array.isArray(e.fingerprint)?e.fingerprint:[e.fingerprint]:[],t&&(e.fingerprint=e.fingerprint.concat(t));e.fingerprint.length||delete e.fingerprint}(e,n),function(e,t){const n=[...e.breadcrumbs||[],...t];e.breadcrumbs=n.length?n:void 0}(e,o),function(e,t){e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...t}}(e,i)}function fr(e,t){const{extra:n,tags:r,attributes:o,user:i,contexts:s,level:a,sdkProcessingMetadata:c,breadcrumbs:l,fingerprint:d,eventProcessors:u,attachments:p,propagationContext:h,transactionName:f,span:g}=t;gr(e,"extra",n),gr(e,"tags",r),gr(e,"attributes",o),gr(e,"user",i),gr(e,"contexts",s),e.sdkProcessingMetadata=De(e.sdkProcessingMetadata,c,2),a&&(e.level=a),f&&(e.transactionName=f),g&&(e.span=g),l.length&&(e.breadcrumbs=[...e.breadcrumbs,...l]),d.length&&(e.fingerprint=[...e.fingerprint,...d]),u.length&&(e.eventProcessors=[...e.eventProcessors,...u]),p.length&&(e.attachments=[...e.attachments,...p]),e.propagationContext={...e.propagationContext,...h}}function gr(e,t,n){e[t]=De(e[t],n,1)}function mr(e,t){const n=Ye().getScopeData();return e&&fr(n,e.getScopeData()),t&&fr(n,t.getScopeData()),n}function vr(e,t,n,r,o,i){const{normalizeDepth:s=3,normalizeMaxBreadth:a=1e3}=e,c={...t,event_id:t.event_id||n.event_id||ke(),timestamp:t.timestamp||Me()},l=n.integrations||e.integrations.map(e=>e.name);!function(e,t){const{environment:n,release:r,dist:o,maxValueLength:i}=t;e.environment=e.environment||n||un,!e.release&&r&&(e.release=r);!e.dist&&o&&(e.dist=o);const s=e.request;s?.url&&i&&(s.url=ve(s.url,i));i&&e.exception?.values?.forEach(e=>{e.value&&(e.value=ve(e.value,i))})}(c,e),function(e,t){t.length>0&&(e.sdk=e.sdk||{},e.sdk.integrations=[...e.sdk.integrations||[],...t])}(c,l),o&&o.emit("applyFrameMetadata",t),void 0===t.type&&function(e,t){const n=pr(t);e.exception?.values?.forEach(e=>{e.stacktrace?.frames?.forEach(e=>{e.filename&&(e.debug_id=n[e.filename])})})}(c,e.stackParser);const d=function(e,t){if(!t)return e;const n=e?e.clone():new Fe;return n.update(t),n}(r,n.captureContext);n.mechanism&&Ee(c,n.mechanism);const u=o?o.getEventProcessors():[],p=mr(i,d),h=[...n.attachments||[],...p.attachments];h.length&&(n.attachments=h),hr(c,p);return sr([...u,...p.eventProcessors],c,n).then(e=>(e&&function(e){const t={};if(e.exception?.values?.forEach(e=>{e.stacktrace?.frames?.forEach(e=>{e.debug_id&&(e.abs_path?t[e.abs_path]=e.debug_id:e.filename&&(t[e.filename]=e.debug_id),delete e.debug_id)})}),0===Object.keys(t).length)return;e.debug_meta=e.debug_meta||{},e.debug_meta.images=e.debug_meta.images||[];const n=e.debug_meta.images;Object.entries(t).forEach(([e,t])=>{n.push({type:"sourcemap",code_file:e,debug_id:t})})}(e),"number"==typeof s&&s>0?function(e,t,n){if(!e)return null;const r={...e,...e.breadcrumbs&&{breadcrumbs:e.breadcrumbs.map(e=>({...e,...e.data&&{data:bn(e.data,t,n)}}))},...e.user&&{user:bn(e.user,t,n)},...e.contexts&&{contexts:bn(e.contexts,t,n)},...e.extra&&{extra:bn(e.extra,t,n)}};e.contexts?.trace&&r.contexts&&(r.contexts.trace=e.contexts.trace,e.contexts.trace.data&&(r.contexts.trace.data=bn(e.contexts.trace.data,t,n)));e.spans&&(r.spans=e.spans.map(e=>({...e,...e.data&&{data:bn(e.data,t,n)}})));e.contexts?.flags&&r.contexts&&(r.contexts.flags=bn(e.contexts.flags,3,n));return r}(e,s,a):e))}function yr(e){if(e)return function(e){return e instanceof Fe||"function"==typeof e}(e)||function(e){return Object.keys(e).some(e=>br.includes(e))}(e)?{captureContext:e}:e}const br=["user","level","extra","contexts","tags","fingerprint","propagationContext"];function wr(e,t){return Ge().captureException(e,yr(t))}function xr(e,t){const n="string"==typeof t?t:void 0,r="string"!=typeof t?{captureContext:t}:void 0;return Ge().captureMessage(e,n,r)}function kr(e,t){return Ge().captureEvent(e,t)}function _r(e,t){Je().setContext(e,t)}function Sr(e){Je().setExtras(e)}function Cr(e,t){Je().setExtra(e,t)}function Er(e){Je().setTags(e)}function Tr(e,t){Je().setTag(e,t)}function Mr(e){Je().setUser(e)}function Ir(){return Je().lastEventId()}async function Ar(e){const t=Ze();return t?t.flush(e):(s&&y.warn("Cannot flush events. No client defined."),Promise.resolve(!1))}async function Rr(e){const t=Ze();return t?t.close(e):(s&&y.warn("Cannot flush events and disable SDK. No client defined."),Promise.resolve(!1))}function Lr(){return!!Ze()}function Pr(){const e=Ze();return!1!==e?.getOptions().enabled&&!!e?.getTransport()}function Or(e){Je().addEventProcessor(e)}function Dr(e){const t=Je(),n=Ge(),{userAgent:r}=a.navigator||{},o=Pe({user:n.getUser()||t.getUser(),...r&&{userAgent:r},...e}),i=t.getSession();return"ok"===i?.status&&Oe(i,{status:"exited"}),Nr(),t.setSession(o),o}function Nr(){const e=Je(),t=Ge().getSession()||e.getSession();t&&function(e,t){let n={};t?n={status:t}:"ok"===e.status&&(n={status:"exited"}),Oe(e,n)}(t),Br(),e.setSession()}function Br(){const e=Je(),t=Ze(),n=e.getSession();n&&t&&t.captureSession(n)}function jr(e=!1){e?Nr():Br()}function $r(e){const t=e.protocol?`${e.protocol}:`:"",n=e.port?`:${e.port}`:"";return`${t}//${e.host}${n}${e.path?`/${e.path}`:""}/api/`}function zr(e,t,n){return t||`${function(e){return`${$r(e)}${e.projectId}/envelope/`}(e)}?${function(e,t){const n={sentry_version:"7"};return e.publicKey&&(n.sentry_key=e.publicKey),t&&(n.sentry_client=`${t.name}/${t.version}`),new URLSearchParams(n).toString()}(e,n)}`}const Fr=[];function Hr(e){const t=e.defaultIntegrations||[],n=e.integrations;let r;if(t.forEach(e=>{e.isDefaultInstance=!0}),Array.isArray(n))r=[...t,...n];else if("function"==typeof n){const e=n(t);r=Array.isArray(e)?e:[e]}else r=t;return function(e){const t={};return e.forEach(e=>{const{name:n}=e,r=t[n];r&&!r.isDefaultInstance&&e.isDefaultInstance||(t[n]=e)}),Object.values(t)}(r)}function qr(e,t){for(const n of t)n?.afterAllSetup&&n.afterAllSetup(e)}function Ur(e,t,n){if(n[t.name])s&&y.log(`Integration skipped because it was already installed: ${t.name}`);else{if(n[t.name]=t,Fr.includes(t.name)||"function"!=typeof t.setupOnce||(t.setupOnce(),Fr.push(t.name)),t.setup&&"function"==typeof t.setup&&t.setup(e),"function"==typeof t.preprocessEvent){const n=t.preprocessEvent.bind(t);e.on("preprocessEvent",(t,r)=>n(t,r,e))}if("function"==typeof t.processEvent){const n=t.processEvent.bind(t),r=Object.assign((t,r)=>n(t,r,e),{id:t.name});e.addEventProcessor(r)}s&&y.log(`Integration installed: ${t.name}`)}}function Wr(e){const t=Ze();t?t.addIntegration(e):s&&y.warn(`Cannot add integration "${e.name}" because no SDK Client is available.`)}function Vr(e,t){const{value:n,unit:r}="object"==typeof(o=e)&&null!=o&&!Array.isArray(o)&&Object.keys(o).includes("value")?e:{value:e,unit:void 0};var o;const i=function(e){const t="string"==typeof e?"string":"boolean"==typeof e?"boolean":"number"!=typeof e||Number.isNaN(e)?null:Number.isInteger(e)?"integer":"double";if(t)return{value:e,type:t}}(n),s=r&&"string"==typeof r?{unit:r}:{};if(i)return{...i,...s};if(!t||"skip-undefined"===t&&void 0===n)return;let a="";try{a=JSON.stringify(n)??""}catch{}return{value:a,type:"string",...s}}function Kr(e,t=!1){const n={};for(const[r,o]of Object.entries(e??{})){const e=Vr(o,t);e&&(n[r]=e)}return n}function Gr(e,t){return t?Xe(t,()=>{const n=en(),r=n?Ft(n):et(t);return[n?mn(n):gn(e,t),r]}):[void 0,void 0]}const Jr={trace:1,debug:5,info:9,warn:13,error:17,fatal:21};function Yr(e,t,n,r=!0){!n||e[t]&&!r||(e[t]=n)}function Xr(e,t){const n=to(),r=eo(e);void 0===r?n.set(e,[t]):r.length>=100?(Zr(e,r),n.set(e,[t])):n.set(e,[...r,t])}function Qr(e,t=Ge(),n=Xr){const r=t?.getClient()??Ze();if(!r)return void(s&&y.warn("No client available to capture log."));const{release:o,environment:i,enableLogs:a=!1,beforeSendLog:c}=r.getOptions();if(!a)return void(s&&y.warn("logging option not enabled, log will not be captured."));const[,l]=Gr(r,t),d={...e.attributes},{user:{id:u,email:p,username:h},attributes:g={}}=mr(Je(),t);Yr(d,"user.id",u,!1),Yr(d,"user.email",p,!1),Yr(d,"user.name",h,!1),Yr(d,"sentry.release",o),Yr(d,"sentry.environment",i);const{name:m,version:v}=r.getSdkMetadata()?.sdk??{};Yr(d,"sentry.sdk.name",m),Yr(d,"sentry.sdk.version",v);const b=r.getIntegrationByName("Replay"),w=b?.getReplayId(!0);Yr(d,"sentry.replay_id",w),w&&"buffer"===b?.getRecordingMode()&&Yr(d,"sentry._internal.replay_is_buffering",!0);const x=e.message;if(W(x)){const{__sentry_template_string__:e,__sentry_template_values__:t=[]}=x;t?.length&&(d["sentry.message.template"]=e),t.forEach((e,t)=>{d[`sentry.message.parameter.${t}`]=e})}const k=ze(t);Yr(d,"sentry.trace.parent_span_id",k?.spanContext().spanId);const _={...e,attributes:d};r.emit("beforeCaptureLog",_);const S=c?f(()=>c(_)):_;if(!S)return r.recordDroppedEvent("before_send","log_item",1),void(s&&y.warn("beforeSendLog returned null, log will not be captured."));const{level:C,message:E,attributes:T={},severityNumber:M}=S;n(r,{timestamp:Ae(),level:C,body:E,trace_id:l?.trace_id,severity_number:M??Jr[C],attributes:{...Kr(g),...Kr(T,!0)}}),r.emit("afterCaptureLog",S)}function Zr(e,t){const n=t??eo(e)??[];if(0===n.length)return;const r=e.getOptions(),o=function(e,t,n,r){const o={};return t?.sdk&&(o.sdk={name:t.sdk.name,version:t.sdk.version}),n&&r&&(o.dsn=It(r)),kn(o,[(i=e,[{type:"log",item_count:i.length,content_type:"application/vnd.sentry.items.log+json"},{items:i}])]);var i}(n,r._metadata,r.tunnel,e.getDsn());to().set(e,[]),e.emit("flushLogs"),e.sendEnvelope(o)}function eo(e){return to().get(e)}function to(){return u("clientToLogBufferMap",()=>new WeakMap)}function no(e,t,n,r=!0){!n||!r&&t in e||(e[t]=n)}function ro(e,t){const n=ao(),r=so(e);void 0===r?n.set(e,[t]):r.length>=1e3?(io(e,r),n.set(e,[t])):n.set(e,[...r,t])}function oo(e,t){const n=t?.scope??Ge(),r=t?.captureSerializedMetric??ro,o=n?.getClient()??Ze();if(!o)return void(s&&y.warn("No client available to capture metric."));const{_experiments:i,enableMetrics:a,beforeSendMetric:c}=o.getOptions();if(!(a??i?.enableMetrics??!0))return void(s&&y.warn("metrics option not enabled, metric will not be captured."));const{user:l,attributes:d}=mr(Je(),n),u=function(e,t,n){const{release:r,environment:o}=t.getOptions(),i={...e.attributes};no(i,"user.id",n.id,!1),no(i,"user.email",n.email,!1),no(i,"user.name",n.username,!1),no(i,"sentry.release",r),no(i,"sentry.environment",o);const{name:s,version:a}=t.getSdkMetadata()?.sdk??{};no(i,"sentry.sdk.name",s),no(i,"sentry.sdk.version",a);const c=t.getIntegrationByName("Replay"),l=c?.getReplayId(!0);return no(i,"sentry.replay_id",l),l&&"buffer"===c?.getRecordingMode()&&no(i,"sentry._internal.replay_is_buffering",!0),{...e,attributes:i}}(e,o,l);o.emit("processMetric",u);const p=c||i?.beforeSendMetric,h=p?p(u):u;if(!h)return void(s&&y.log("`beforeSendMetric` returned `null`, will not send metric."));const f=function(e,t,n,r){const[,o]=Gr(t,n),i=ze(n),s=i?i.spanContext().traceId:o?.trace_id,a=i?i.spanContext().spanId:void 0;return{timestamp:Ae(),trace_id:s??"",span_id:a,name:e.name,type:e.type,unit:e.unit,value:e.value,attributes:{...Kr(r),...Kr(e.attributes,"skip-undefined")}}}(h,o,n,d);s&&y.log("[Metric]",f),r(o,f),o.emit("afterCaptureMetric",h)}function io(e,t){const n=t??so(e)??[];if(0===n.length)return;const r=e.getOptions(),o=function(e,t,n,r){const o={};return t?.sdk&&(o.sdk={name:t.sdk.name,version:t.sdk.version}),n&&r&&(o.dsn=It(r)),kn(o,[(i=e,[{type:"trace_metric",item_count:i.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:i}])]);var i}(n,r._metadata,r.tunnel,e.getDsn());ao().set(e,[]),e.emit("flushMetrics"),e.sendEnvelope(o)}function so(e){return ao().get(e)}function ao(){return u("clientToMetricBufferMap",()=>new WeakMap)}const co=Symbol.for("SentryBufferFullError");function lo(e=100){const t=new Set;function n(e){t.delete(e)}return{get $(){return Array.from(t)},add:function(r){if(!(t.size<e))return or(co);const o=r();return t.add(o),o.then(()=>n(o),()=>n(o)),o},drain:function(e){if(!t.size)return rr(!0);const n=Promise.allSettled(Array.from(t)).then(()=>!0);if(!e)return n;const r=[n,new Promise(t=>setTimeout(()=>t(!1),e))];return Promise.race(r)}}}function uo(e,t=me()){const n=parseInt(`${e}`,10);if(!isNaN(n))return 1e3*n;const r=Date.parse(`${e}`);return isNaN(r)?6e4:r-t}function po(e,t,n=me()){return function(e,t){return e[t]||e.all||0}(e,t)>n}function ho(e,{statusCode:t,headers:n},r=me()){const o={...e},i=n?.["x-sentry-rate-limits"],s=n?.["retry-after"];if(i)for(const e of i.trim().split(",")){const[t,n,,,i]=e.split(":",5),s=parseInt(t,10),a=1e3*(isNaN(s)?60:s);if(n)for(const e of n.split(";"))"metric_bucket"===e&&i&&!i.split(";").includes("custom")||(o[e]=r+a);else o.all=r+a}else s?o.all=r+uo(s,r):429===t&&(o.all=r+6e4);return o}function fo(e,t,n=lo(e.bufferSize||64)){let r={};return{send:function(o){const i=[];if(Sn(o,(t,n)=>{const o=Ln(n);po(r,o)?e.recordDroppedEvent("ratelimit_backoff",o):i.push(t)}),0===i.length)return Promise.resolve({});const a=kn(o[0],i),c=t=>{Cn(a,["client_report"])?s&&y.warn(`Dropping client report. Will not send outcomes (reason: ${t}).`):Sn(a,(n,r)=>{e.recordDroppedEvent(t,Ln(r))})};return n.add(()=>t({body:Tn(a)}).then(e=>(void 0!==e.statusCode&&(e.statusCode<200||e.statusCode>=300)&&s&&y.warn(`Sentry responded with status code ${e.statusCode} to sent event.`),r=ho(r,e),e),e=>{throw c("network_error"),s&&y.error("Encountered error running transport request:",e),e})).then(e=>e,e=>{if(e===co)return s&&y.error("Skipped sending event because buffer is full."),c("queue_overflow"),Promise.resolve({});throw e})},flush:e=>n.drain(e)}}function go(e){const t=[];e.message&&t.push(e.message);try{const n=e.exception.values[e.exception.values.length-1];n?.value&&(t.push(n.value),n.type&&t.push(`${n.type}: ${n.value}`))}catch{}return t}const mo="Not capturing exception because it's already been captured.",vo="Discarded session because of missing or non-string release",yo=Symbol.for("SentryInternalError"),bo=Symbol.for("SentryDoNotSendEventError");function wo(e){return{message:e,[yo]:!0}}function xo(e){return{message:e,[bo]:!0}}function ko(e){return!!e&&"object"==typeof e&&yo in e}function _o(e){return!!e&&"object"==typeof e&&bo in e}function So(e,t,n,r,o){let i,s=0,a=!1;e.on(n,()=>{s=0,clearTimeout(i),a=!1}),e.on(t,t=>{s+=r(t),s>=8e5?o(e):a||(a=!0,i=setTimeout(()=>{o(e)},5e3))}),e.on("flush",()=>{o(e)})}class Co{constructor(e){if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=lo(e.transportOptions?.bufferSize??64),e.dsn?this._dsn=Pt(e.dsn):s&&y.warn("No DSN provided, client will not send events."),this._dsn){const t=zr(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:t})}this._options.enableLogs=this._options.enableLogs??this._options._experiments?.enableLogs,this._options.enableLogs&&So(this,"afterCaptureLog","flushLogs",Ao,Zr);(this._options.enableMetrics??this._options._experiments?.enableMetrics??!0)&&So(this,"afterCaptureMetric","flushMetrics",Io,io)}captureException(e,t,n){const r=ke();if(Te(e))return s&&y.log(mo),r;const o={event_id:r,...t};return this._process(()=>this.eventFromException(e,o).then(e=>this._captureEvent(e,o,n)).then(e=>e),"error"),o.event_id}captureMessage(e,t,n,r){const o={event_id:ke(),...n},i=W(e)?e:String(e),s=V(e),a=s?this.eventFromMessage(i,t,o):this.eventFromException(e,o);return this._process(()=>a.then(e=>this._captureEvent(e,o,r)),s?"unknown":"error"),o.event_id}captureEvent(e,t,n){const r=ke();if(t?.originalException&&Te(t.originalException))return s&&y.log(mo),r;const o={event_id:r,...t},i=e.sdkProcessingMetadata||{},a=i.capturedSpanScope,c=i.capturedSpanIsolationScope,l=Eo(e.type);return this._process(()=>this._captureEvent(e,o,a||n,c),l),o.event_id}captureSession(e){this.sendSession(e),Oe(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(e){const t=this._transport;if(!t)return!0;this.emit("flush");const n=await this._isClientDoneProcessing(e),r=await t.flush(e);return n&&r}async close(e){const t=await this.flush(e);return this.getOptions().enabled=!1,this.emit("close"),t}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const t=this._integrations[e.name];Ur(this,e,this._integrations),t||qr(this,[e])}sendEvent(e,t={}){this.emit("beforeSendEvent",e,t);let n=function(e,t,n,r){const o=Pn(n),i=e.type&&"replay_event"!==e.type?e.type:"event";!function(e,t){if(!t)return e;const n=e.sdk||{};e.sdk={...n,name:n.name||t.name,version:n.version||t.version,integrations:[...e.sdk?.integrations||[],...t.integrations||[]],packages:[...e.sdk?.packages||[],...t.packages||[]],settings:e.sdk?.settings||t.settings?{...e.sdk?.settings,...t.settings}:void 0}}(e,n?.sdk);const s=On(e,o,r,t);return delete e.sdkProcessingMetadata,kn(s,[[{type:i},e]])}(e,this._dsn,this._options._metadata,this._options.tunnel);for(const e of t.attachments||[])n=_n(n,An(e));this.sendEnvelope(n).then(t=>this.emit("afterSendEvent",e,t))}sendSession(e){const{release:t,environment:n=un}=this._options;if("aggregates"in e){const r=e.attrs||{};if(!r.release&&!t)return void(s&&y.warn(vo));r.release=r.release||t,r.environment=r.environment||n,e.attrs=r}else{if(!e.release&&!t)return void(s&&y.warn(vo));e.release=e.release||t,e.environment=e.environment||n}this.emit("beforeSendSession",e);const r=function(e,t,n,r){const o=Pn(n);return kn({sent_at:(new Date).toISOString(),...o&&{sdk:o},...!!r&&t&&{dsn:It(t)}},["aggregates"in e?[{type:"sessions"},e]:[{type:"session"},e.toJSON()]])}(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(r)}recordDroppedEvent(e,t,n=1){if(this._options.sendClientReports){const r=`${e}:${t}`;s&&y.log(`Recording outcome: "${r}"${n>1?` (${n} times)`:""}`),this._outcomes[r]=(this._outcomes[r]||0)+n}}on(e,t){const n=this._hooks[e]=this._hooks[e]||new Set,r=(...e)=>t(...e);return n.add(r),()=>{n.delete(r)}}emit(e,...t){const n=this._hooks[e];n&&n.forEach(e=>e(...t))}async sendEnvelope(e){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)try{return await this._transport.send(e)}catch(e){return s&&y.error("Error while sending envelope:",e),{}}return s&&y.error("Transport disabled"),{}}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=function(e,t){const n={};return t.forEach(t=>{t&&Ur(e,t,n)}),n}(this,e),qr(this,e)}_updateSessionFromEvent(e,t){let n="fatal"===t.level,r=!1;const o=t.exception?.values;if(o){r=!0,n=!1;for(const e of o)if(!1===e.mechanism?.handled){n=!0;break}}const i="ok"===e.status;(i&&0===e.errors||i&&n)&&(Oe(e,{...n&&{status:"crashed"},errors:e.errors||Number(r||n)}),this.captureSession(e))}async _isClientDoneProcessing(e){let t=0;for(;!e||t<e;){if(await new Promise(e=>setTimeout(e,1)),!this._numProcessing)return!0;t++}return!1}_isEnabled(){return!1!==this.getOptions().enabled&&void 0!==this._transport}_prepareEvent(e,t,n,r){const o=this.getOptions(),i=Object.keys(this._integrations);return!t.integrations&&i?.length&&(t.integrations=i),this.emit("preprocessEvent",e,t),e.type||r.setLastEventId(e.event_id||t.event_id),vr(o,e,t,n,this,r).then(e=>{if(null===e)return e;this.emit("postprocessEvent",e,t),e.contexts={trace:et(n),...e.contexts};const r=gn(this,n);return e.sdkProcessingMetadata={dynamicSamplingContext:r,...e.sdkProcessingMetadata},e})}_captureEvent(e,t={},n=Ge(),r=Je()){return s&&To(e)&&y.log(`Captured error event \`${go(e)[0]||"<unknown>"}\``),this._processEvent(e,t,n,r).then(e=>e.event_id,e=>{s&&(_o(e)?y.log(e.message):ko(e)?y.warn(e.message):y.warn(e))})}_processEvent(e,t,n,r){const o=this.getOptions(),{sampleRate:i}=o,s=Mo(e),a=To(e),c=`before send for type \`${e.type||"error"}\``,l=void 0===i?void 0:Ot(i);if(a&&"number"==typeof l&&ge()>l)return this.recordDroppedEvent("sample_rate","error"),or(xo(`Discarding event because it's not included in the random sample (sampling rate = ${i})`));const d=Eo(e.type);return this._prepareEvent(e,t,n,r).then(e=>{if(null===e)throw this.recordDroppedEvent("event_processor",d),xo("An event processor returned `null`, will not send event.");if(t.data&&!0===t.data.__sentry__)return e;const n=function(e,t,n,r){const{beforeSend:o,beforeSendTransaction:i,beforeSendSpan:s,ignoreSpans:a}=t;let c=n;if(To(c)&&o)return o(c,r);if(Mo(c)){if(s||a){const t=function(e){const{trace_id:t,parent_span_id:n,span_id:r,status:o,origin:i,data:s,op:a}=e.contexts?.trace??{};return{data:s??{},description:e.transaction,op:a,parent_span_id:n,span_id:r??"",start_timestamp:e.start_timestamp??0,status:o,timestamp:e.timestamp,trace_id:t??"",origin:i,profile_id:s?.[dt],exclusive_time:s?.[ut],measurements:e.measurements,is_segment:!0}}(c);if(a?.length&&cn(t,a))return null;if(s){const e=s(t);e?c=De(n,{type:"transaction",timestamp:(l=e).timestamp,start_timestamp:l.start_timestamp,transaction:l.description,contexts:{trace:{trace_id:l.trace_id,span_id:l.span_id,parent_span_id:l.parent_span_id,op:l.op,status:l.status,origin:l.origin,data:{...l.data,...l.profile_id&&{[dt]:l.profile_id},...l.exclusive_time&&{[ut]:l.exclusive_time}}}},measurements:l.measurements}):tn()}if(c.spans){const t=[],n=c.spans;for(const e of n)if(a?.length&&cn(e,a))ln(n,e);else if(s){const n=s(e);n?t.push(n):(tn(),t.push(e))}else t.push(e);const r=c.spans.length-t.length;r&&e.recordDroppedEvent("before_send","span",r),c.spans=t}}if(i){if(c.spans){const e=c.spans.length;c.sdkProcessingMetadata={...n.sdkProcessingMetadata,spanCountBeforeProcessing:e}}return i(c,r)}}var l;return c}(this,o,e,t);return function(e,t){const n=`${t} must return \`null\` or a valid event.`;if(J(e))return e.then(e=>{if(!K(e)&&null!==e)throw wo(n);return e},e=>{throw wo(`${t} rejected with ${e}`)});if(!K(e)&&null!==e)throw wo(n);return e}(n,c)}).then(o=>{if(null===o){if(this.recordDroppedEvent("before_send",d),s){const t=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",t)}throw xo(`${c} returned \`null\`, will not send event.`)}const i=n.getSession()||r.getSession();if(a&&i&&this._updateSessionFromEvent(i,o),s){const e=(o.sdkProcessingMetadata?.spanCountBeforeProcessing||0)-(o.spans?o.spans.length:0);e>0&&this.recordDroppedEvent("before_send","span",e)}const l=o.transaction_info;if(s&&l&&o.transaction!==e.transaction){const e="custom";o.transaction_info={...l,source:e}}return this.sendEvent(o,t),o}).then(null,e=>{if(_o(e)||ko(e))throw e;throw this.captureException(e,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:e}),wo(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${e}`)})}_process(e,t){this._numProcessing++,this._promiseBuffer.add(e).then(e=>(this._numProcessing--,e),e=>(this._numProcessing--,e===co&&this.recordDroppedEvent("queue_overflow",t),e))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([e,t])=>{const[n,r]=e.split(":");return{reason:n,category:r,quantity:t}})}_flushOutcomes(){s&&y.log("Flushing outcomes...");const e=this._clearOutcomes();if(0===e.length)return void(s&&y.log("No outcomes to send"));if(!this._dsn)return void(s&&y.log("No dsn provided, will not send outcomes"));s&&y.log("Sending outcomes:",e);const t=(n=e,kn((r=this._options.tunnel&&It(this._dsn))?{dsn:r}:{},[[{type:"client_report"},{timestamp:o||Me(),discarded_events:n}]]));var n,r,o;this.sendEnvelope(t)}}function Eo(e){return"replay_event"===e?"replay":e||"error"}function To(e){return void 0===e.type}function Mo(e){return"transaction"===e.type}function Io(e){let t=0;return e.name&&(t+=2*e.name.length),t+=8,t+Ro(e.attributes)}function Ao(e){let t=0;return e.message&&(t+=2*e.message.length),t+Ro(e.attributes)}function Ro(e){if(!e)return 0;let t=0;return Object.values(e).forEach(e=>{Array.isArray(e)?t+=e.length*Lo(e[0]):V(e)?t+=Lo(e):t+=100}),t}function Lo(e){return"string"==typeof e?2*e.length:"number"==typeof e?8:"boolean"==typeof e?4:0}function Po(e){return function(e){return z(e)&&"__sentry_fetch_url_host__"in e&&"string"==typeof e.__sentry_fetch_url_host__}(e)?`${e.message} (${e.__sentry_fetch_url_host__})`:e.message}function Oo(e){Ge().setClient(e)}const Do=5e3;function No(e){function t(...e){s&&y.log("[Offline]:",...e)}return n=>{const r=e(n);if(!n.createStore)throw new Error("No `createStore` function was provided");const o=n.createStore(n);let i,s=Do;function a(e){i&&clearTimeout(i),i=setTimeout(async()=>{i=void 0;const e=await o.shift();e&&(t("Attempting to send previously queued event"),e[0].sent_at=(new Date).toISOString(),l(e,!0).catch(e=>{t("Failed to retry sending",e)}))},e),"number"!=typeof i&&i.unref&&i.unref()}function c(){i||(a(s),s=Math.min(2*s,36e5))}async function l(e,i=!1){if(!i&&Cn(e,["replay_event","replay_recording"]))return await o.push(e),a(100),{};try{if(n.shouldSend&&!1===await n.shouldSend(e))throw new Error("Envelope not sent because `shouldSend` callback returned false");const t=await r.send(e);let o=100;if(t)if(t.headers?.["retry-after"])o=uo(t.headers["retry-after"]);else if(t.headers?.["x-sentry-rate-limits"])o=6e4;else if((t.statusCode||0)>=400)return t;return a(o),s=Do,t}catch(r){if(await function(e,t,r){return!Cn(e,["client_report"])&&(!n.shouldStore||n.shouldStore(e,t,r))}(e,r,s))return i?await o.unshift(e):await o.push(e),c(),t("Error sending. Event queued.",r),{};throw r}}return n.flushAtStartup&&c(),{send:l,flush:e=>(void 0===e&&(s=Do,a(100)),r.flush(e))}}}const Bo="MULTIPLEXED_TRANSPORT_EXTRA_KEY";function jo(e,t){let n;return Sn(e,(e,r)=>(t.includes(r)&&(n=Array.isArray(e)?e[1]:void 0),!!n)),n}function $o(e,t){return n=>{const r=e(n),o=new Map,i=t||(e=>{const t=e.getEvent();return t?.extra?.[Bo]&&Array.isArray(t.extra[Bo])?t.extra[Bo]:[]});function s(t,r){const i=r?`${t}:${r}`:t;let s=o.get(i);if(!s){const a=At(t);if(!a)return;const c=zr(a,n.tunnel);s=r?function(e,t){return n=>{const r=e(n);return{...r,send:async e=>{const n=jo(e,["event","transaction","profile","replay_event"]);return n&&(n.release=t),r.send(e)}}}}(e,r)({...n,url:c}):e({...n,url:c}),o.set(i,s)}return[t,s]}return{send:async function(e){const t=i({envelope:e,getEvent:function(t){return jo(e,t?.length?t:["event"])}}).map(e=>"string"==typeof e?s(e,void 0):s(e.dsn,e.release)).filter(e=>!!e),n=t.length?t:[["",r]];return(await Promise.all(n.map(([t,n])=>n.send(function(e,t){return kn(t?{...e[0],dsn:t}:e[0],e[1])}(e,t)))))[0]},flush:async function(e){const t=[...o.values(),r];return(await Promise.all(t.map(t=>t.flush(e)))).every(e=>e)}}}}new Set;function zo(e){return"isRelative"in e}function Fo(e,t){const n=e.indexOf("://")<=0&&0!==e.indexOf("//"),r=t??(n?"thismessage:/":void 0);try{if("canParse"in URL&&!URL.canParse(e,r))return;const t=new URL(e,r);return n?{isRelative:n,pathname:t.pathname,search:t.search,hash:t.hash}:t}catch{}}function Ho(e){if(zo(e))return e.pathname;const t=new URL(e);return t.search="",t.hash="",["80","443"].includes(t.port)&&(t.port=""),t.password&&(t.password="%filtered%"),t.username&&(t.username="%filtered%"),t.toString()}function qo(e){if(!e)return{};const t=e.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};const n=t[6]||"",r=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],search:n,hash:r,relative:t[5]+n+r}}function Uo(e){return e.split(/[?#]/,1)[0]}function Wo(e,t){const n=t?.getDsn(),r=t?.getOptions().tunnel;return function(e,t){const n=Fo(e);if(!n||zo(n))return!1;return!!t&&(n.host.includes(t.host)&&/(^|&|\?)sentry_key=/.test(n.search))}(e,n)||function(e,t){if(!t)return!1;return Vo(e)===Vo(t)}(e,r)}function Vo(e){return"/"===e[e.length-1]?e.slice(0,-1):e}function Ko(e,...t){const n=new String(String.raw(e,...t));return n.__sentry_template_string__=e.join("\0").replace(/%/g,"%%").replace(/\0/g,"%s"),n.__sentry_template_values__=t,n}const Go=Ko;function Jo(e){"aggregates"in e?void 0===e.attrs?.ip_address&&(e.attrs={...e.attrs,ip_address:"{{auto}}"}):void 0===e.ipAddress&&(e.ipAddress="{{auto}}")}function Yo(e={}){const t=e.client||Ze();if(!Pr()||!t)return{};const n=Ke(l());if(n.getTraceData)return n.getTraceData(e);const r=e.scope||Ge(),o=e.span||en(),i=o?Ht(o):function(e){const{traceId:t,sampled:n,propagationSpanId:r}=e.getPropagationContext();return Bt(t,r,n)}(r),s=Ct(o?mn(o):gn(t,r));if(!Dt.test(i))return y.warn("Invalid sentry-trace data. Cannot generate trace data"),{};const a={"sentry-trace":i,baggage:s};return e.propagateTraceparent&&(a.traceparent=o?function(e){const{traceId:t,spanId:n}=e.spanContext();return jt(t,n,Kt(e))}(o):function(e){const{traceId:t,sampled:n,propagationSpanId:r}=e.getPropagationContext();return jt(t,r,n)}(r)),a}const Xo=100;function Qo(e,t){const n=Ze(),r=Je();if(!n)return;const{beforeBreadcrumb:o=null,maxBreadcrumbs:i=Xo}=n.getOptions();if(i<=0)return;const s={timestamp:Me(),...e},a=o?f(()=>o(s,t)):s;null!==a&&(n.emit&&n.emit("beforeAddBreadcrumb",a,t),r.addBreadcrumb(a,i))}let Zo;const ei=new WeakMap,ti=()=>({name:"FunctionToString",setupOnce(){Zo=Function.prototype.toString;try{Function.prototype.toString=function(...e){const t=ae(this),n=ei.has(Ze())&&void 0!==t?t:this;return Zo.apply(n,e)}}catch{}},setup(e){ei.set(e,!0)}}),ni=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,'can\'t redefine non-configurable property "solana"',"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)","Can't find variable: _AutofillCallbackHandler",/^Non-Error promise rejection captured with value: Object Not Found Matching Id:\d+, MethodName:simulateEvent, ParamCount:\d+$/,/^Java exception was raised during method invocation$/],ri=(e={})=>{let t;return{name:"EventFilters",setup(n){const r=n.getOptions();t=ii(e,r)},processEvent(n,r,o){if(!t){const n=o.getOptions();t=ii(e,n)}return function(e,t){if(e.type){if("transaction"===e.type&&function(e,t){if(!t?.length)return!1;const n=e.transaction;return!!n&&xe(n,t)}(e,t.ignoreTransactions))return s&&y.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.\nEvent: ${Se(e)}`),!0}else{if(function(e,t){if(!t?.length)return!1;return go(e).some(e=>xe(e,t))}(e,t.ignoreErrors))return s&&y.warn(`Event dropped due to being matched by \`ignoreErrors\` option.\nEvent: ${Se(e)}`),!0;if(function(e){if(!e.exception?.values?.length)return!1;return!e.message&&!e.exception.values.some(e=>e.stacktrace||e.type&&"Error"!==e.type||e.value)}(e))return s&&y.warn(`Event dropped due to not having an error message, error type or stacktrace.\nEvent: ${Se(e)}`),!0;if(function(e,t){if(!t?.length)return!1;const n=si(e);return!!n&&xe(n,t)}(e,t.denyUrls))return s&&y.warn(`Event dropped due to being matched by \`denyUrls\` option.\nEvent: ${Se(e)}.\nUrl: ${si(e)}`),!0;if(!function(e,t){if(!t?.length)return!0;const n=si(e);return!n||xe(n,t)}(e,t.allowUrls))return s&&y.warn(`Event dropped due to not being matched by \`allowUrls\` option.\nEvent: ${Se(e)}.\nUrl: ${si(e)}`),!0}return!1}(n,t)?null:n}}},oi=(e={})=>({...ri(e),name:"InboundFilters"});function ii(e={},t={}){return{allowUrls:[...e.allowUrls||[],...t.allowUrls||[]],denyUrls:[...e.denyUrls||[],...t.denyUrls||[]],ignoreErrors:[...e.ignoreErrors||[],...t.ignoreErrors||[],...e.disableErrorDefaults?[]:ni],ignoreTransactions:[...e.ignoreTransactions||[],...t.ignoreTransactions||[]]}}function si(e){try{const t=[...e.exception?.values??[]].reverse().find(e=>void 0===e.mechanism?.parent_id&&e.stacktrace?.frames?.length),n=t?.stacktrace?.frames;return n?function(e=[]){for(let t=e.length-1;t>=0;t--){const n=e[t];if(n&&"<anonymous>"!==n.filename&&"[native code]"!==n.filename)return n.filename||null}return null}(n):null}catch{return s&&y.error(`Cannot extract url for event ${Se(e)}`),null}}function ai(e,t,n,r,o,i){if(!o.exception?.values||!i||!Y(i.originalException,Error))return;const s=o.exception.values.length>0?o.exception.values[o.exception.values.length-1]:void 0;s&&(o.exception.values=ci(e,t,r,i.originalException,n,o.exception.values,s,0))}function ci(e,t,n,r,o,i,s,a){if(i.length>=n+1)return i;let c=[...i];if(Y(r[o],Error)){li(s,a);const i=e(t,r[o]),l=c.length;di(i,o,l,a),c=ci(e,t,n,r[o],o,[i,...c],i,l)}return Array.isArray(r.errors)&&r.errors.forEach((r,i)=>{if(Y(r,Error)){li(s,a);const l=e(t,r),d=c.length;di(l,`errors[${i}]`,d,a),c=ci(e,t,n,r,o,[l,...c],l,d)}}),c}function li(e,t){e.mechanism={handled:!0,type:"auto.core.linked_errors",...e.mechanism,..."AggregateError"===e.type&&{is_exception_group:!0},exception_id:t}}function di(e,t,n,r){e.mechanism={handled:!0,...e.mechanism,type:"chained",source:t,exception_id:n,parent_id:r}}const ui=new Map,pi=new Set;function hi(e,t){return function(e){if(a._sentryModuleMetadata)for(const t of Object.keys(a._sentryModuleMetadata)){const n=a._sentryModuleMetadata[t];if(pi.has(t))continue;pi.add(t);const r=e(t);for(const e of r.reverse())if(e.filename){ui.set(e.filename,n);break}}}(e),ui.get(t)}function fi(e,t){t.exception?.values?.forEach(t=>{t.stacktrace?.frames?.forEach(t=>{if(!t.filename||t.module_metadata)return;const n=hi(e,t.filename);n&&(t.module_metadata=n)})})}function gi(e){e.exception?.values?.forEach(e=>{e.stacktrace?.frames?.forEach(e=>{delete e.module_metadata})})}const mi=()=>({name:"ModuleMetadata",setup(e){e.on("beforeEnvelope",e=>{Sn(e,(e,t)=>{if("event"===t){const t=Array.isArray(e)?e[1]:void 0;t&&(gi(t),e[1]=t)}})}),e.on("applyFrameMetadata",t=>{if(t.type)return;fi(e.getOptions().stackParser,t)})}});function vi(e){const t="console";A(t,e),R(t,yi)}function yi(){"console"in a&&p.forEach(function(e){e in a.console&&oe(a.console,e,function(t){return h[e]=t,function(...t){L("console",{args:t,level:e});const n=h[e];n?.apply(a.console,t)}})})}function bi(e){return"warn"===e?"warning":["fatal","error","warning","log","info","debug"].includes(e)?e:"log"}const wi=(e={})=>{const t=e.levels||p,n=e.handled??!0;return{name:"CaptureConsole",setup(e){"console"in a&&vi(({args:r,level:o})=>{Ze()===e&&t.includes(o)&&function(e,t,n){const r=bi(t),o=new Error,i={level:bi(t),extra:{arguments:e}};Xe(s=>{if(s.addEventProcessor(e=>(e.logger="console",Ee(e,{handled:n,type:"auto.core.capture_console"}),e)),"assert"===t){if(!e[0]){const t=`Assertion failed: ${be(e.slice(1)," ")||"console.assert"}`;s.setExtra("arguments",e.slice(1)),s.captureMessage(t,r,{captureContext:i,syntheticException:o})}return}const a=e.find(e=>e instanceof Error);if(a)return void wr(a,i);const c=be(e," ");s.captureMessage(c,r,{captureContext:i,syntheticException:o})})}(r,o,n)})}}};const xi=()=>{let e;return{name:"Dedupe",processEvent(t){if(t.type)return t;try{if(function(e,t){if(!t)return!1;if(function(e,t){const n=e.message,r=t.message;if(!n&&!r)return!1;if(n&&!r||!n&&r)return!1;if(n!==r)return!1;if(!_i(e,t))return!1;if(!ki(e,t))return!1;return!0}(e,t))return!0;if(function(e,t){const n=Si(t),r=Si(e);if(!n||!r)return!1;if(n.type!==r.type||n.value!==r.value)return!1;if(!_i(e,t))return!1;if(!ki(e,t))return!1;return!0}(e,t))return!0;return!1}(t,e))return s&&y.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return e=t}}};function ki(e,t){let n=E(e),r=E(t);if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;if(r.length!==n.length)return!1;for(let e=0;e<r.length;e++){const t=r[e],o=n[e];if(t.filename!==o.filename||t.lineno!==o.lineno||t.colno!==o.colno||t.function!==o.function)return!1}return!0}function _i(e,t){let n=e.fingerprint,r=t.fingerprint;if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;try{return!(n.join("")!==r.join(""))}catch{return!1}}function Si(e){return e.exception?.values?.[0]}const Ci=(e={})=>{const{depth:t=3,captureErrorCause:n=!0}=e;return{name:"ExtraErrorData",processEvent(e,r,o){const{maxValueLength:i}=o.getOptions();return function(e,t={},n,r,o){if(!t.originalException||!z(t.originalException))return e;const i=t.originalException.name||t.originalException.constructor.name,s=Ei(t.originalException,r,o);if(s){const t={...e.contexts},r=bn(s,n);return K(r)&&(ie(r,"__sentry_skip_normalization__",!0),t[i]=r),{...e,contexts:t}}return e}(e,r,t,n,i)}}};function Ei(e,t,n){try{const r=["name","message","stack","line","column","fileName","lineNumber","columnNumber","toJSON"],o={};for(const t of Object.keys(e)){if(-1!==r.indexOf(t))continue;const i=e[t];o[t]=z(i)||"string"==typeof i?n?ve(`${i}`,n):`${i}`:i}if(t&&void 0!==e.cause)if(z(e.cause)){const t=e.cause.name||e.cause.constructor.name;o.cause={[t]:Ei(e.cause,!1,n)}}else o.cause=e.cause;if("function"==typeof e.toJSON){const t=e.toJSON();for(const e of Object.keys(t)){const n=t[e];o[e]=z(n)?n.toString():n}}return o}catch(e){s&&y.error("Unable to extract extra data from the Error object:",e)}return null}function Ti(e,t){let n=0;for(let t=e.length-1;t>=0;t--){const r=e[t];"."===r?e.splice(t,1):".."===r?(e.splice(t,1),n++):n&&(e.splice(t,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}const Mi=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function Ii(e){const t=e.length>1024?`<truncated>${e.slice(-1024)}`:e,n=Mi.exec(t);return n?n.slice(1):[]}function Ai(...e){let t="",n=!1;for(let r=e.length-1;r>=-1&&!n;r--){const o=r>=0?e[r]:"/";o&&(t=`${o}/${t}`,n="/"===o.charAt(0))}return t=Ti(t.split("/").filter(e=>!!e),!n).join("/"),(n?"/":"")+t||"."}function Ri(e){let t=0;for(;t<e.length&&""===e[t];t++);let n=e.length-1;for(;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}const Li=(e={})=>{const t=e.root,n=e.prefix||"app:///",r="window"in a&&!!a.window,o=e.iteratee||function({isBrowser:e,root:t,prefix:n}){return r=>{if(!r.filename)return r;const o=/^[a-zA-Z]:\\/.test(r.filename)||r.filename.includes("\\")&&!r.filename.includes("/"),i=/^\//.test(r.filename);if(e){if(t){const e=r.filename;0===e.indexOf(t)&&(r.filename=e.replace(t,n))}}else if(o||i){const e=o?r.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):r.filename,i=t?function(e,t){e=Ai(e).slice(1),t=Ai(t).slice(1);const n=Ri(e.split("/")),r=Ri(t.split("/")),o=Math.min(n.length,r.length);let i=o;for(let e=0;e<o;e++)if(n[e]!==r[e]){i=e;break}let s=[];for(let e=i;e<n.length;e++)s.push("..");return s=s.concat(r.slice(i)),s.join("/")}(t,e):function(e,t){let n=Ii(e)[2]||"";return t&&n.slice(-1*t.length)===t&&(n=n.slice(0,n.length-t.length)),n}(e);r.filename=`${n}${i}`}return r}}({isBrowser:r,root:t,prefix:n});return{name:"RewriteFrames",processEvent(e){let t=e;return e.exception&&Array.isArray(e.exception.values)&&(t=function(e){try{return{...e,exception:{...e.exception,values:e.exception.values.map(e=>{return{...e,...e.stacktrace&&{stacktrace:(t=e.stacktrace,{...t,frames:t?.frames?.map(e=>o(e))})}};var t})}}}catch{return e}}(t)),t}}};const Pi=["reauthenticate","signInAnonymously","signInWithOAuth","signInWithIdToken","signInWithOtp","signInWithPassword","signInWithSSO","signOut","signUp","verifyOtp"],Oi=["createUser","deleteUser","listUsers","getUserById","updateUserById","inviteUserByEmail"],Di={eq:"eq",neq:"neq",gt:"gt",gte:"gte",lt:"lt",lte:"lte",like:"like","like(all)":"likeAllOf","like(any)":"likeAnyOf",ilike:"ilike","ilike(all)":"ilikeAllOf","ilike(any)":"ilikeAnyOf",is:"is",in:"in",cs:"contains",cd:"containedBy",sr:"rangeGt",nxl:"rangeGte",sl:"rangeLt",nxr:"rangeLte",adj:"rangeAdjacent",ov:"overlaps",fts:"",plfts:"plain",phfts:"phrase",wfts:"websearch",not:"not"},Ni=["select","insert","upsert","update","delete"];function Bi(e){try{e.__SENTRY_INSTRUMENTED__=!0}catch{}}function ji(e){try{return e.__SENTRY_INSTRUMENTED__}catch{return!1}}function $i(e,t){if(""===t||"*"===t)return"select(*)";if("select"===e)return`select(${t})`;if("or"===e||e.endsWith(".or"))return`${e}${t}`;const[n,...r]=t.split(".");let o;return o=n?.startsWith("fts")?"textSearch":n?.startsWith("plfts")?"textSearch[plain]":n?.startsWith("phfts")?"textSearch[phrase]":n?.startsWith("wfts")?"textSearch[websearch]":n&&Di[n]||"filter",`${o}(${e}, ${r.join(".")})`}function zi(e,t=!1){return new Proxy(e,{apply:(n,r,o)=>Hn({name:`auth ${t?"(admin) ":""}${e.name}`,attributes:{[it]:"auto.db.supabase",[ot]:"db","db.system":"postgresql","db.operation":`auth.${t?"admin.":""}${e.name}`}},e=>Reflect.apply(n,r,o).then(t=>(t&&"object"==typeof t&&"error"in t&&t.error?(e.setStatus({code:2}),wr(t.error,{mechanism:{handled:!1,type:"auto.db.supabase.auth"}})):e.setStatus({code:1}),e.end(),t)).catch(t=>{throw e.setStatus({code:2}),e.end(),wr(t,{mechanism:{handled:!1,type:"auto.db.supabase.auth"}}),t}).then(...o))})}function Fi(e){ji(e.prototype.from)||(e.prototype.from=new Proxy(e.prototype.from,{apply(e,t,n){const r=Reflect.apply(e,t,n);return function(e){for(const t of Ni)ji(e.prototype[t])||(e.prototype[t]=new Proxy(e.prototype[t],{apply(e,n,r){const o=Reflect.apply(e,n,r),i=o.constructor;return s&&y.log(`Instrumenting ${t} operation's PostgRESTFilterBuilder`),Hi(i),o}}),Bi(e.prototype[t]))}(r.constructor),r}}),Bi(e.prototype.from))}function Hi(e){ji(e.prototype.then)||(e.prototype.then=new Proxy(e.prototype.then,{apply(e,t,n){const r=Ni,o=t,i=function(e,t={}){switch(e){case"GET":return"select";case"POST":return t.Prefer?.includes("resolution=")?"upsert":"insert";case"PATCH":return"update";case"DELETE":return"delete";default:return"<unknown-op>"}}(o.method,o.headers);if(!r.includes(i))return Reflect.apply(e,t,n);if(!o?.url?.pathname||"string"!=typeof o.url.pathname)return Reflect.apply(e,t,n);const s=o.url.pathname.split("/"),a=s.length>0?s[s.length-1]:"",c=[];for(const[e,t]of o.url.searchParams.entries())c.push($i(e,t));const l=Object.create(null);if(K(o.body))for(const[e,t]of Object.entries(o.body))l[e]=t;const d=`${"select"===i?"":`${i}${l?"(...) ":""}`}${c.join(" ")} from(${a})`,u={"db.table":a,"db.schema":o.schema,"db.url":o.url.origin,"db.sdk":o.headers["X-Client-Info"],"db.system":"postgresql","db.operation":i,[it]:"auto.db.supabase",[ot]:"db"};return c.length&&(u["db.query"]=c),Object.keys(l).length&&(u["db.body"]=l),Hn({name:d,attributes:u},r=>Reflect.apply(e,t,[]).then(e=>{if(r&&(e&&"object"==typeof e&&"status"in e&&mt(r,e.status||500),r.end()),e.error){const t=new Error(e.error.message);e.error.code&&(t.code=e.error.code),e.error.details&&(t.details=e.error.details);const n={};c.length&&(n.query=c),Object.keys(l).length&&(n.body=l),wr(t,e=>(e.addEventProcessor(e=>(Ee(e,{handled:!1,type:"auto.db.supabase.postgres"}),e)),e.setContext("supabase",n),e))}const t={type:"supabase",category:`db.${i}`,message:d},n={};return c.length&&(n.query=c),Object.keys(l).length&&(n.body=l),Object.keys(n).length&&(t.data=n),Qo(t),e},e=>{throw r&&(mt(r,500),r.end()),e}).then(...n))}}),Bi(e.prototype.then))}const qi=e=>{if(!e)return void(s&&y.warn("Supabase integration was not installed because no Supabase client was provided."));Fi(e.constructor===Function?e:e.constructor),function(e){const t=e.auth;if(t&&!ji(e.auth)){for(const n of Pi){const r=t[n];r&&"function"==typeof e.auth[n]&&(e.auth[n]=zi(r))}for(const n of Oi){const r=t.admin[n];r&&"function"==typeof e.auth.admin[n]&&(e.auth.admin[n]=zi(r,!0))}Bi(e.auth)}}(e)},Ui=e=>{return t=e.supabaseClient,{setupOnce(){qi(t)},name:"Supabase"};var t};function Wi(e){return{...e,path:"path"in e&&Array.isArray(e.path)?e.path.join("."):void 0,keys:"keys"in e?JSON.stringify(e.keys):void 0,unionErrors:"unionErrors"in e?JSON.stringify(e.unionErrors):void 0}}function Vi(e){return e.map(e=>"number"==typeof e?"<array>":e).join(".")}function Ki(e){const t=new Set;for(const n of e.issues){const e=Vi(n.path);e.length>0&&t.add(e)}const n=Array.from(t);if(0===n.length){let t="variable";if(e.issues.length>0){const n=e.issues[0];void 0!==n&&"expected"in n&&"string"==typeof n.expected&&(t=n.expected)}return`Failed to validate ${t}`}return`Failed to validate keys: ${ve(n.join(", "),100)}`}function Gi(e,t=!1,n,r){if(!(n.exception?.values&&r.originalException&&(o=r.originalException,z(o)&&"ZodError"===o.name&&Array.isArray(o.issues))&&0!==r.originalException.issues.length))return n;var o;try{const o=(t?r.originalException.issues:r.originalException.issues.slice(0,e)).map(Wi);return t&&(Array.isArray(r.attachments)||(r.attachments=[]),r.attachments.push({filename:"zod_issues.json",data:JSON.stringify({issues:o})})),{...n,exception:{...n.exception,values:[{...n.exception.values[0],value:Ki(r.originalException)},...n.exception.values.slice(1)]},extra:{...n.extra,"zoderror.issues":o.slice(0,e)}}}catch(e){return{...n,extra:{...n.extra,"zoderrors sentry integration parse error":{message:"an exception was thrown while processing ZodError within applyZodErrorsToEvent()",error:e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:"unknown"}}}}}const Ji=(e={})=>{const t=e.limit??10;return{name:"ZodErrors",processEvent:(n,r)=>Gi(t,e.saveZodIssuesAsAttachment,n,r)}},Yi=e=>({name:"ThirdPartyErrorsFilter",setup(e){e.on("beforeEnvelope",e=>{Sn(e,(e,t)=>{if("event"===t){const t=Array.isArray(e)?e[1]:void 0;t&&(gi(t),e[1]=t)}})}),e.on("applyFrameMetadata",t=>{if(t.type)return;fi(e.getOptions().stackParser,t)})},processEvent(t){const n=function(e,t){const n=E(e);if(!n)return;return n.filter((e,n)=>!!e.filename&&((null!=e.lineno||null!=e.colno||null!=e.instruction_addr)&&(!t||!function(e,t){if(0!==t||!e.context_line||!e.filename)return!1;if(!e.filename.includes("sentry")||!e.filename.includes("helpers")||!e.context_line.includes(Zi))return!1;if(e.pre_context){const t=e.pre_context.length;for(let n=0;n<t;n++)if(e.pre_context[n]?.includes(Qi))return!0}return!1}(e,n)))).map(e=>e.module_metadata?Object.keys(e.module_metadata).filter(e=>e.startsWith(Xi)).map(e=>e.slice(Xi.length)):[])}(t,e.ignoreSentryInternalFrames);if(n){const r=n["drop-error-if-contains-third-party-frames"===e.behaviour||"apply-tag-if-contains-third-party-frames"===e.behaviour?"some":"every"](t=>!t.some(t=>e.filterKeys.includes(t)));if(r){if("drop-error-if-contains-third-party-frames"===e.behaviour||"drop-error-if-exclusively-contains-third-party-frames"===e.behaviour)return null;t.tags={...t.tags,third_party_code:!0}}}return t}});const Xi="_sentryBundlerPluginAppKey:",Qi="Attempt to invoke user-land function",Zi="fn.apply(this, wrappedArguments)";const es="flag.evaluation.";function ts(e){const t=Ge().getScopeData().contexts.flags,n=t?t.values:[];return n.length?(void 0===e.contexts&&(e.contexts={}),e.contexts.flags={values:[...n]},e):e}function ns(e,t,n=100){const r=Ge().getScopeData().contexts;r.flags||(r.flags={values:[]});!function(e,t,n,r){if("boolean"!=typeof n)return;if(e.length>r)return void(s&&y.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${r}`));const o=e.findIndex(e=>e.flag===t);-1!==o&&e.splice(o,1);e.length===r&&e.shift();e.push({flag:t,result:n})}(r.flags.values,e,t,n)}function rs(e,t,n=10){if("boolean"!=typeof t)return;const r=en();if(!r)return;const o=Vt(r).data;if(`${es}${e}`in o)return void r.setAttribute(`${es}${e}`,t);Object.keys(o).filter(e=>e.startsWith(es)).length<n&&r.setAttribute(`${es}${e}`,t)}const os=()=>({name:"FeatureFlags",processEvent:(e,t,n)=>ts(e),addFeatureFlag(e,t){ns(e,t),rs(e,t)}}),is=({growthbookClass:e})=>({name:"GrowthBook",setupOnce(){const t=e.prototype;"function"==typeof t.isOn&&oe(t,"isOn",ss),"function"==typeof t.getFeatureValue&&oe(t,"getFeatureValue",ss)},processEvent:(e,t,n)=>ts(e)});function ss(e){return function(...t){const n=t[0],r=e.apply(this,t);return"string"==typeof n&&"boolean"==typeof r&&(ns(n,r),rs(n,r)),r}}function as(e,t,n,r,o){if(!e.fetchData)return;const{method:i,url:s}=e.fetchData,a=sn()&&t(s);if(e.endTimestamp&&a){const t=e.fetchData.__span;if(!t)return;const n=r[t];return void(n&&(!function(e,t){if(t.response){mt(e,t.response.status);const n=t.response?.headers?.get("content-length");if(n){const t=parseInt(n);t>0&&e.setAttribute("http.response_content_length",t)}}else t.error&&e.setStatus({code:2,message:"internal_error"});e.end()}(n,e),function(e,t,n){const r="object"==typeof n&&null!==n?n.onRequestSpanEnd:void 0;r?.(e,{headers:t.response?.headers,error:t.error})}(n,e,o),delete r[t]))}const{spanOrigin:c="auto.http.browser",propagateTraceparent:l=!1}="object"==typeof o?o:{spanOrigin:o},d=!!en(),u=a&&d?Un(function(e,t,n){const r=Fo(e);return{name:r?`${t} ${Ho(r)}`:t,attributes:ls(e,r,t,n)}}(s,i,c)):new yn;if(e.fetchData.__span=u.spanContext().spanId,r[u.spanContext().spanId]=u,n(e.fetchData.url)){const t=e.args[0],n=e.args[1]||{},r=function(e,t,n,r){const o=Yo({span:n,propagateTraceparent:r}),i=o["sentry-trace"],s=o.baggage,a=o.traceparent;if(!i)return;const c=t.headers||(Q(e)?e.headers:void 0);if(c){if(function(e){return"undefined"!=typeof Headers&&Y(e,Headers)}(c)){const e=new Headers(c);if(e.get("sentry-trace")||e.set("sentry-trace",i),r&&a&&!e.get("traceparent")&&e.set("traceparent",a),s){const t=e.get("baggage");t?cs(t)||e.set("baggage",`${t},${s}`):e.set("baggage",s)}return e}if(Array.isArray(c)){const e=[...c];c.find(e=>"sentry-trace"===e[0])||e.push(["sentry-trace",i]),r&&a&&!c.find(e=>"traceparent"===e[0])&&e.push(["traceparent",a]);const t=c.find(e=>"baggage"===e[0]&&cs(e[1]));return s&&!t&&e.push(["baggage",s]),e}{const e="sentry-trace"in c?c["sentry-trace"]:void 0,t="traceparent"in c?c.traceparent:void 0,n="baggage"in c?c.baggage:void 0,o=n?Array.isArray(n)?[...n]:[n]:[],l=n&&(Array.isArray(n)?n.find(e=>cs(e)):cs(n));s&&!l&&o.push(s);const d={...c,"sentry-trace":e??i,baggage:o.length>0?o.join(","):void 0};return r&&a&&!t&&(d.traceparent=a),d}}return{...o}}(t,n,sn()&&d?u:void 0,l);r&&(e.args[1]=n,n.headers=r)}const p=Ze();if(p){const t={input:e.args,response:e.response,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp};p.emit("beforeOutgoingRequestSpan",u,t)}return u}function cs(e){return e.split(",").some(e=>e.trim().startsWith(kt))}function ls(e,t,n,r){const o={url:e,type:"fetch","http.method":n,[it]:r,[ot]:"http.client"};return t&&(zo(t)||(o["http.url"]=t.href,o["server.address"]=t.host),t.search&&(o["http.query"]=t.search),t.hash&&(o["http.fragment"]=t.hash)),o}const ds="mcp.resource.uri";new WeakMap;new WeakMap;new Set(["client.address","client.port",ds]);new WeakSet;function us(e,t={},n=Ge()){const{message:r,name:o,email:i,url:s,source:a,associatedEventId:c,tags:l}=e,d={contexts:{feedback:{contact_email:i,name:o,message:r,url:s,source:a,associated_event_id:c}},type:"feedback",level:"info",tags:l},u=n?.getClient()||Ze();u&&u.emit("beforeSendFeedback",d,t);return n.captureEvent(d,t)}function ps(e,t,n,r,o){Qr({level:e,message:t,attributes:n,severityNumber:o},r)}function hs(e,t,{scope:n}={}){ps("trace",e,t,n)}function fs(e,t,{scope:n}={}){ps("debug",e,t,n)}function gs(e,t,{scope:n}={}){ps("info",e,t,n)}function ms(e,t,{scope:n}={}){ps("warn",e,t,n)}function vs(e,t,{scope:n}={}){ps("error",e,t,n)}function ys(e,t,{scope:n}={}){ps("fatal",e,t,n)}function bs(e,t,n){return"util"in a&&"function"==typeof a.util.format?a.util.format(...e):function(e,t,n){return e.map(e=>V(e)?String(e):JSON.stringify(bn(e,t,n))).join(" ")}(e,t,n)}function ws(e,t){const n={},r=new Array(t.length).fill("{}").join(" ");return n["sentry.message.template"]=`${e} ${r}`,t.forEach((e,t)=>{n[`sentry.message.parameter.${t}`]=e}),n}const xs={[it]:"auto.log.console"},ks=(e={})=>{const t=e.levels||p;return{name:"ConsoleLogs",setup(e){const{enableLogs:n,normalizeDepth:r=3,normalizeMaxBreadth:o=1e3}=e.getOptions();n?vi(({args:n,level:i})=>{if(Ze()!==e||!t.includes(i))return;const s=n[0],a=n.slice(1);if("assert"===i){if(!s){Qr({level:"error",message:a.length>0?`Assertion failed: ${bs(a,r,o)}`:"Assertion failed",attributes:xs})}return}const c="log"===i,l=n.length>1&&"string"==typeof n[0]&&(d=n[0],!/%[sdifocO]/.test(d));var d;const u={...xs,...l?ws(s,a):{}};Qr({level:c?"info":i,message:bs(n,r,o),severityNumber:c?10:void 0,attributes:u})}):s&&y.warn("`enableLogs` is not enabled, ConsoleLogs integration disabled")}}};function _s(e,t,n,r){oo({type:e,name:t,value:n,unit:r?.unit,attributes:r?.attributes},{scope:r?.scope})}function Ss(e,t=1,n){_s("counter",e,t,n)}function Cs(e,t,n){_s("gauge",e,t,n)}function Es(e,t,n){_s("distribution",e,t,n)}const Ts=["trace","debug","info","warn","error","fatal"];function Ms(e={}){const t=new Set(e.levels??Ts),n=e.client;return{log(e){const{type:r,level:o,message:i,args:s,tag:a,date:c,...l}=e,d=n||Ze();if(!d)return;const u=function(e,t){if("verbose"===e)return"debug";if("silent"===e)return"trace";if(e){const t=Is[e];if(t)return t}if("number"==typeof t){const e=As[t];if(e)return e}return"info"}(r,o);if(!t.has(u))return;const{normalizeDepth:p=3,normalizeMaxBreadth:h=1e3}=d.getOptions(),f=[];i&&f.push(i),s&&s.length>0&&f.push(bs(s,p,h));const g=f.join(" ");l["sentry.origin"]="auto.log.consola",a&&(l["consola.tag"]=a),r&&(l["consola.type"]=r),null!=o&&"number"==typeof o&&(l["consola.level"]=o),Qr({level:u,message:g,attributes:l})}}}const Is={silent:"trace",fatal:"fatal",error:"error",warn:"warn",log:"info",info:"info",success:"info",fail:"error",ready:"info",start:"info",box:"info",debug:"debug",trace:"trace",verbose:"debug",critical:"fatal",notice:"info"},As={0:"fatal",1:"warn",2:"info",3:"info",4:"debug",5:"trace"};const Rs="gen_ai.prompt",Ls="gen_ai.system",Ps="gen_ai.request.model",Os="gen_ai.request.stream",Ds="gen_ai.request.temperature",Ns="gen_ai.request.max_tokens",Bs="gen_ai.request.frequency_penalty",js="gen_ai.request.presence_penalty",$s="gen_ai.request.top_p",zs="gen_ai.request.top_k",Fs="gen_ai.response.finish_reasons",Hs="gen_ai.response.model",qs="gen_ai.response.id",Us="gen_ai.usage.input_tokens",Ws="gen_ai.usage.output_tokens",Vs="gen_ai.usage.total_tokens",Ks="gen_ai.operation.name",Gs="gen_ai.request.messages.original_length",Js="gen_ai.request.messages",Ys="gen_ai.response.text",Xs="gen_ai.request.available_tools",Qs="gen_ai.response.streaming",Zs="gen_ai.response.tool_calls",ea="gen_ai.agent.name",ta="gen_ai.pipeline.name",na="gen_ai.conversation.id",ra="gen_ai.invoke_agent",oa="openai.response.id",ia="openai.response.model",sa="openai.response.timestamp",aa="openai.usage.completion_tokens",ca="openai.usage.prompt_tokens",la="chat",da="responses",ua="embeddings",pa="conversations",ha="anthropic.response.timestamp",fa=(new Map,e=>(new TextEncoder).encode(e).length),ga=e=>fa(JSON.stringify(e));function ma(e,t){if(fa(e)<=t)return e;let n=0,r=e.length,o="";for(;n<=r;){const i=Math.floor((n+r)/2),s=e.slice(0,i);fa(s)<=t?(o=s,n=i+1):r=i-1}return o}function va(e){return"string"==typeof e?e:"text"in e?e.text:""}function ya(e,t){return"string"==typeof e?t:{...e,text:t}}function ba(e){return!(!e||"object"!=typeof e)&&(function(e){return"type"in e&&"string"==typeof e.type&&"source"in e&&ba(e.source)}(e)||wa(e)||"media_type"in e&&"string"==typeof e.media_type&&"data"in e||"image_url"in e&&"string"==typeof e.image_url&&e.image_url.startsWith("data:")||"type"in e&&("blob"===e.type||"base64"===e.type)||"b64_json"in e||"type"in e&&"result"in e&&"image_generation"===e.type||"uri"in e&&"string"==typeof e.uri&&e.uri.startsWith("data:"))}function wa(e){return"inlineData"in e&&!!e.inlineData&&"object"==typeof e.inlineData&&"data"in e.inlineData&&"string"==typeof e.inlineData.data}function xa(e){return null!==e&&"object"==typeof e&&"parts"in e&&Array.isArray(e.parts)&&e.parts.length>0}function ka(e,t){return e&&"object"==typeof e?function(e){return null!==e&&"object"==typeof e&&"content"in e&&"string"==typeof e.content}(e)?function(e,t){const n={...e,content:""},r=t-ga(n);if(r<=0)return[];const o=ma(e.content,r);return[{...e,content:o}]}(e,t):xa(e)?function(e,t){const{parts:n}=e,r=n.map(e=>ya(e,""));let o=t-ga({...e,parts:r});if(o<=0)return[];const i=[];for(const e of n){const t=va(e),n=fa(t);if(!(n<=o)){if(0===i.length){const n=ma(t,o);n&&i.push(ya(e,n));break}break}i.push(e),o-=n}return i.length<=0?[]:[{...e,parts:i}]}(e,t):[]:[]}const _a="[Filtered]",Sa=["image_url","data","content","b64_json","result","uri"];function Ca(e){const t={...e};ba(t.source)&&(t.source=Ca(t.source)),wa(e)&&(t.inlineData={...e.inlineData,data:_a});for(const e of Sa)"string"==typeof t[e]&&(t[e]=_a);return t}function Ea(e){return e.map(e=>{let t;return e&&"object"==typeof e&&(!function(e){return null!==e&&"object"==typeof e&&"content"in e&&Array.isArray(e.content)}(e)?"content"in e&&ba(e.content)&&(t={...e,content:Ca(e.content)}):t={...e,content:Ea(e.content)},xa(e)&&(t={...t??e,parts:Ea(e.parts)}),ba(t)?t=Ca(t):ba(e)&&(t=Ca(e))),t??e})}function Ta(e){return function(e,t){if(!Array.isArray(e)||0===e.length)return e;const n=Ea(e);if(ga(n)<=t)return n;const r=n.map(ga);let o=0,i=n.length;for(let e=n.length-1;e>=0;e--){const n=r[e];if(n&&o+n>t)break;n&&(o+=n),i=e}if(i===n.length)return ka(n[n.length-1],t);return n.slice(i)}(e,2e4)}function Ma(e){return e.includes("messages")?"messages":e.includes("completions")?"completions":e.includes("models")?"models":e.includes("chat")?"chat":e.split(".").pop()||"unknown"}function Ia(e){return`gen_ai.${Ma(e)}`}function Aa(e,t){return e?`${e}.${t}`:t}function Ra(e,t,n,r,o){if(void 0!==t&&e.setAttributes({[Us]:t}),void 0!==n&&e.setAttributes({[Ws]:n}),void 0!==t||void 0!==n||void 0!==r||void 0!==o){const i=(t??0)+(n??0)+(r??0)+(o??0);e.setAttributes({[Vs]:i})}}function La(e){if("string"==typeof e)return ma(e,2e4);if(Array.isArray(e)){const t=Ta(e);return JSON.stringify(t)}return JSON.stringify(e)}const Pa=["responses.create","chat.completions.create","embeddings.create","conversations.create"],Oa=["response.created","response.in_progress","response.failed","response.completed","response.incomplete","response.queued","response.output_text.delta","response.output_item.added","response.function_call_arguments.delta","response.function_call_arguments.done","response.output_item.done"];function Da(e){return e.includes("chat.completions")?la:e.includes("responses")?da:e.includes("embeddings")?ua:e.includes("conversations")?pa:e.split(".").pop()||"unknown"}function Na(e){return`gen_ai.${Da(e)}`}function Ba(e){return null!==e&&"object"==typeof e&&"type"in e&&"string"==typeof e.type&&e.type.startsWith("response.")}function ja(e){return null!==e&&"object"==typeof e&&"object"in e&&"chat.completion.chunk"===e.object}function $a(e,t,n,r){void 0!==t&&e.setAttributes({[ca]:t,[Us]:t}),void 0!==n&&e.setAttributes({[aa]:n,[Ws]:n}),void 0!==r&&e.setAttributes({[Vs]:r})}function za(e,t,n,r){e.setAttributes({[oa]:t,[qs]:t}),e.setAttributes({[ia]:n,[Hs]:n}),e.setAttributes({[sa]:new Date(1e3*r).toISOString()})}function Fa(e,t){for(const n of e){const e=n.index;if(void 0!==e&&n.function)if(e in t.chatCompletionToolCalls){const r=t.chatCompletionToolCalls[e];n.function.arguments&&r?.function&&(r.function.arguments+=n.function.arguments)}else t.chatCompletionToolCalls[e]={...n,function:{name:n.function.name,arguments:n.function.arguments||""}}}}function Ha(e,t,n){t.responseId=e.id??t.responseId,t.responseModel=e.model??t.responseModel,t.responseTimestamp=e.created??t.responseTimestamp,e.usage&&(t.promptTokens=e.usage.prompt_tokens,t.completionTokens=e.usage.completion_tokens,t.totalTokens=e.usage.total_tokens);for(const r of e.choices??[])n&&(r.delta?.content&&t.responseTexts.push(r.delta.content),r.delta?.tool_calls&&Fa(r.delta.tool_calls,t)),r.finish_reason&&t.finishReasons.push(r.finish_reason)}function qa(e,t,n,r){if(!e||"object"!=typeof e)return void t.eventTypes.push("unknown:non-object");if(e instanceof Error)return r.setStatus({code:2,message:"internal_error"}),void wr(e,{mechanism:{handled:!1,type:"auto.ai.openai.stream-response"}});if(!("type"in e))return;const o=e;if(Oa.includes(o.type)){if(n&&("response.output_item.done"===o.type&&"item"in o&&t.responsesApiToolCalls.push(o.item),"response.output_text.delta"===o.type&&"delta"in o&&o.delta))t.responseTexts.push(o.delta);else if("response"in o){const{response:e}=o;t.responseId=e.id??t.responseId,t.responseModel=e.model??t.responseModel,t.responseTimestamp=e.created_at??t.responseTimestamp,e.usage&&(t.promptTokens=e.usage.input_tokens,t.completionTokens=e.usage.output_tokens,t.totalTokens=e.usage.total_tokens),e.status&&t.finishReasons.push(e.status),n&&e.output_text&&t.responseTexts.push(e.output_text)}}else t.eventTypes.push(o.type)}function Ua(e,t){const n={[Ls]:"openai",[Ks]:Da(t),[it]:"auto.ai.openai"};if(e.length>0&&"object"==typeof e[0]&&null!==e[0]){const t=e[0],r=function(e){const t=[...Array.isArray(e.tools)?e.tools:[],...e.web_search_options&&"object"==typeof e.web_search_options?[{type:"web_search_options",...e.web_search_options}]:[]];return t.length>0?JSON.stringify(t):void 0}(t);r&&(n[Xs]=r),Object.assign(n,function(e){const t={[Ps]:e.model??"unknown"};"temperature"in e&&(t[Ds]=e.temperature),"top_p"in e&&(t[$s]=e.top_p),"frequency_penalty"in e&&(t[Bs]=e.frequency_penalty),"presence_penalty"in e&&(t[js]=e.presence_penalty),"stream"in e&&(t[Os]=e.stream),"encoding_format"in e&&(t["gen_ai.request.encoding_format"]=e.encoding_format),"dimensions"in e&&(t["gen_ai.request.dimensions"]=e.dimensions);const n=function(e){return"conversation"in e&&"string"==typeof e.conversation?e.conversation:"previous_response_id"in e&&"string"==typeof e.previous_response_id?e.previous_response_id:void 0}(e);return n&&(t[na]=n),t}(t))}else n[Ps]="unknown";return n}function Wa(e,t,n){if(!t||"object"!=typeof t)return;const r=t;if(function(e){return null!==e&&"object"==typeof e&&"object"in e&&"chat.completion"===e.object}(r)){if(function(e,t,n){if(za(e,t.id,t.model,t.created),t.usage&&$a(e,t.usage.prompt_tokens,t.usage.completion_tokens,t.usage.total_tokens),Array.isArray(t.choices)){const r=t.choices.map(e=>e.finish_reason).filter(e=>null!==e);if(r.length>0&&e.setAttributes({[Fs]:JSON.stringify(r)}),n){const n=t.choices.map(e=>e.message?.tool_calls).filter(e=>Array.isArray(e)&&e.length>0).flat();n.length>0&&e.setAttributes({[Zs]:JSON.stringify(n)})}}}(e,r,n),n&&r.choices?.length){const t=r.choices.map(e=>e.message?.content||"");e.setAttributes({[Ys]:JSON.stringify(t)})}}else!function(e){return null!==e&&"object"==typeof e&&"object"in e&&"response"===e.object}(r)?function(e){if(null===e||"object"!=typeof e||!("object"in e))return!1;const t=e;return"list"===t.object&&"string"==typeof t.model&&t.model.toLowerCase().includes("embedding")}(r)?function(e,t){e.setAttributes({[ia]:t.model,[Hs]:t.model}),t.usage&&$a(e,t.usage.prompt_tokens,void 0,t.usage.total_tokens)}(e,r):function(e){return null!==e&&"object"==typeof e&&"object"in e&&"conversation"===e.object}(r)&&function(e,t){const{id:n,created_at:r}=t;e.setAttributes({[oa]:n,[qs]:n,[na]:n}),r&&e.setAttributes({[sa]:new Date(1e3*r).toISOString()})}(e,r):(!function(e,t,n){if(za(e,t.id,t.model,t.created_at),t.status&&e.setAttributes({[Fs]:JSON.stringify([t.status])}),t.usage&&$a(e,t.usage.input_tokens,t.usage.output_tokens,t.usage.total_tokens),n){const n=t;if(Array.isArray(n.output)&&n.output.length>0){const t=n.output.filter(e=>"object"==typeof e&&null!==e&&"function_call"===e.type);t.length>0&&e.setAttributes({[Zs]:JSON.stringify(t)})}}}(e,r,n),n&&r.output_text&&e.setAttributes({[Ys]:r.output_text}))}function Va(e,t){const n="input"in t?t.input:"messages"in t?t.messages:void 0,r=Array.isArray(n)?n.length:void 0;if(n&&0!==r){const t=La(n);e.setAttribute(Js,t),r&&e.setAttribute(Gs,r)}}function Ka(e,t,n,r){return async function(...o){const i=Ua(o,t),s=i[Ps]||"unknown",a=Da(t),c=o[0];return c&&"object"==typeof c&&!0===c.stream?qn({name:`${a} ${s} stream-response`,op:Na(t),attributes:i},async i=>{try{r.recordInputs&&c&&Va(i,c);return async function*(e,t,n){const r={eventTypes:[],responseTexts:[],finishReasons:[],responseId:"",responseModel:"",responseTimestamp:0,promptTokens:void 0,completionTokens:void 0,totalTokens:void 0,chatCompletionToolCalls:{},responsesApiToolCalls:[]};try{for await(const o of e)ja(o)?Ha(o,r,n):Ba(o)&&qa(o,r,n,t),yield o}finally{za(t,r.responseId,r.responseModel,r.responseTimestamp),$a(t,r.promptTokens,r.completionTokens,r.totalTokens),t.setAttributes({[Qs]:!0}),r.finishReasons.length&&t.setAttributes({[Fs]:JSON.stringify(r.finishReasons)}),n&&r.responseTexts.length&&t.setAttributes({[Ys]:r.responseTexts.join("")});const e=[...Object.values(r.chatCompletionToolCalls),...r.responsesApiToolCalls];e.length>0&&t.setAttributes({[Zs]:JSON.stringify(e)}),t.end()}}(await e.apply(n,o),i,r.recordOutputs??!1)}catch(e){throw i.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.openai.stream",data:{function:t}}}),i.end(),e}}):Hn({name:`${a} ${s}`,op:Na(t),attributes:i},async i=>{try{r.recordInputs&&c&&Va(i,c);const t=await e.apply(n,o);return Wa(i,t,r.recordOutputs),t}catch(e){throw wr(e,{mechanism:{handled:!1,type:"auto.ai.openai",data:{function:t}}}),e}})}}function Ga(e,t="",n){return new Proxy(e,{get(e,r){const o=e[r],i=function(e,t){return e?`${e}.${t}`:t}(t,String(r));return"function"==typeof o&&function(e){return Pa.includes(e)}(i)?Ka(o,i,e,n):"function"==typeof o?o.bind(e):o&&"object"==typeof o?Ga(o,i,n):o}})}function Ja(e,t){const n=Boolean(Ze()?.getOptions().sendDefaultPii);return Ga(e,"",{recordInputs:n,recordOutputs:n,...t})}function Ya(e,t,n,r){if(!e||"object"!=typeof e)return;const o=function(e,t){return"type"in e&&"string"==typeof e.type&&"error"===e.type&&(t.setStatus({code:2,message:e.error?.type??"internal_error"}),wr(e.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}}),!0)}(e,r);o||(function(e,t){if("message_delta"===e.type&&e.usage&&"output_tokens"in e.usage&&"number"==typeof e.usage.output_tokens&&(t.completionTokens=e.usage.output_tokens),e.message){const n=e.message;n.id&&(t.responseId=n.id),n.model&&(t.responseModel=n.model),n.stop_reason&&t.finishReasons.push(n.stop_reason),n.usage&&("number"==typeof n.usage.input_tokens&&(t.promptTokens=n.usage.input_tokens),"number"==typeof n.usage.cache_creation_input_tokens&&(t.cacheCreationInputTokens=n.usage.cache_creation_input_tokens),"number"==typeof n.usage.cache_read_input_tokens&&(t.cacheReadInputTokens=n.usage.cache_read_input_tokens))}}(e,t),function(e,t){"content_block_start"===e.type&&"number"==typeof e.index&&e.content_block&&("tool_use"!==e.content_block.type&&"server_tool_use"!==e.content_block.type||(t.activeToolBlocks[e.index]={id:e.content_block.id,name:e.content_block.name,inputJsonParts:[]}))}(e,t),function(e,t,n){if("content_block_delta"===e.type&&e.delta){if("number"==typeof e.index&&"partial_json"in e.delta&&"string"==typeof e.delta.partial_json){const n=t.activeToolBlocks[e.index];n&&n.inputJsonParts.push(e.delta.partial_json)}n&&"string"==typeof e.delta.text&&t.responseTexts.push(e.delta.text)}}(e,t,n),function(e,t){if("content_block_stop"!==e.type||"number"!=typeof e.index)return;const n=t.activeToolBlocks[e.index];if(!n)return;const r=n.inputJsonParts.join("");let o;try{o=r?JSON.parse(r):{}}catch{o={__unparsed:r}}t.toolCalls.push({type:"tool_use",id:n.id,name:n.name,input:o}),delete t.activeToolBlocks[e.index]}(e,t))}function Xa(e,t,n){const r={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};return e.on("streamEvent",e=>{Ya(e,r,n,t)}),e.on("message",()=>{!function(e,t,n){t.isRecording()&&(e.responseId&&t.setAttributes({[qs]:e.responseId}),e.responseModel&&t.setAttributes({[Hs]:e.responseModel}),Ra(t,e.promptTokens,e.completionTokens,e.cacheCreationInputTokens,e.cacheReadInputTokens),t.setAttributes({[Qs]:!0}),e.finishReasons.length>0&&t.setAttributes({[Fs]:JSON.stringify(e.finishReasons)}),n&&e.responseTexts.length>0&&t.setAttributes({[Ys]:e.responseTexts.join("")}),n&&e.toolCalls.length>0&&t.setAttributes({[Zs]:JSON.stringify(e.toolCalls)}),t.end())}(r,t,n)}),e.on("error",e=>{wr(e,{mechanism:{handled:!1,type:"auto.ai.anthropic.stream_error"}}),t.isRecording()&&(t.setStatus({code:2,message:"stream_error"}),t.end())}),e}const Qa=["messages.create","messages.stream","messages.countTokens","models.get","completions.create","models.retrieve","beta.messages.create"];function Za(e,t){const n=function(e){const{system:t,messages:n,input:r}=e,o="string"==typeof t?[{role:"system",content:e.system}]:[],i=Array.isArray(r)?r:null!=r?[r]:void 0,s=Array.isArray(n)?n:null!=n?[n]:[];return[...o,...i??s]}(t);!function(e,t){const n=Array.isArray(t)?t.length:void 0;0!==n&&e.setAttributes({[Js]:La(t),[Gs]:n})}(e,n),"prompt"in t&&e.setAttributes({[Rs]:JSON.stringify(t.prompt)})}function ec(e,t,n){t&&"object"==typeof t&&("type"in t&&"error"===t.type?function(e,t){t.error&&(e.setStatus({code:2,message:t.error.type||"internal_error"}),wr(t.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}}))}(e,t):(n&&function(e,t){if("content"in t&&Array.isArray(t.content)){e.setAttributes({[Ys]:t.content.map(e=>e.text).filter(e=>!!e).join("")});const n=[];for(const e of t.content)"tool_use"!==e.type&&"server_tool_use"!==e.type||n.push(e);n.length>0&&e.setAttributes({[Zs]:JSON.stringify(n)})}"completion"in t&&e.setAttributes({[Ys]:t.completion}),"input_tokens"in t&&e.setAttributes({[Ys]:JSON.stringify(t.input_tokens)})}(e,t),function(e,t){"id"in t&&"model"in t&&(e.setAttributes({[qs]:t.id,[Hs]:t.model}),"created"in t&&"number"==typeof t.created&&e.setAttributes({[ha]:new Date(1e3*t.created).toISOString()}),"created_at"in t&&"number"==typeof t.created_at&&e.setAttributes({[ha]:new Date(1e3*t.created_at).toISOString()}),"usage"in t&&t.usage&&Ra(e,t.usage.input_tokens,t.usage.output_tokens,t.usage.cache_creation_input_tokens,t.usage.cache_read_input_tokens))}(e,t)))}function tc(e,t,n){throw wr(e,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:n}}}),t.isRecording()&&(t.setStatus({code:2,message:"internal_error"}),t.end()),e}function nc(e,t,n,r,o,i,s,a,c,l,d){const u={name:`${i} ${o[Ps]??"unknown"} stream-response`,op:Ia(s),attributes:o};return qn(u,l&&!d?async t=>{try{c.recordInputs&&a&&Za(t,a);return async function*(e,t,n){const r={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};try{for await(const o of e)Ya(o,r,n,t),yield o}finally{r.responseId&&t.setAttributes({[qs]:r.responseId}),r.responseModel&&t.setAttributes({[Hs]:r.responseModel}),Ra(t,r.promptTokens,r.completionTokens,r.cacheCreationInputTokens,r.cacheReadInputTokens),t.setAttributes({[Qs]:!0}),r.finishReasons.length>0&&t.setAttributes({[Fs]:JSON.stringify(r.finishReasons)}),n&&r.responseTexts.length>0&&t.setAttributes({[Ys]:r.responseTexts.join("")}),n&&r.toolCalls.length>0&&t.setAttributes({[Zs]:JSON.stringify(r.toolCalls)}),t.end()}}(await e.apply(n,r),t,c.recordOutputs??!1)}catch(e){return tc(e,t,s)}}:e=>{try{c.recordInputs&&a&&Za(e,a);return Xa(t.apply(n,r),e,c.recordOutputs??!1)}catch(t){return tc(t,e,s)}})}function rc(e,t,n,r){return new Proxy(e,{apply(o,i,s){const a=function(e,t){const n={[Ls]:"anthropic",[Ks]:Ma(t),[it]:"auto.ai.anthropic"};if(e.length>0&&"object"==typeof e[0]&&null!==e[0]){const t=e[0];t.tools&&Array.isArray(t.tools)&&(n[Xs]=JSON.stringify(t.tools)),n[Ps]=t.model??"unknown","temperature"in t&&(n[Ds]=t.temperature),"top_p"in t&&(n[$s]=t.top_p),"stream"in t&&(n[Os]=t.stream),"top_k"in t&&(n[zs]=t.top_k),"frequency_penalty"in t&&(n[Bs]=t.frequency_penalty),"max_tokens"in t&&(n[Ns]=t.max_tokens)}else n[Ps]="models.retrieve"===t||"models.get"===t?e[0]:"unknown";return n}(s,t),c=a[Ps]??"unknown",l=Ma(t),d="object"==typeof s[0]?s[0]:void 0,u=Boolean(d?.stream),p="messages.stream"===t;return u||p?nc(e,o,n,s,a,l,t,d,r,u,p):Hn({name:`${l} ${c}`,op:Ia(t),attributes:a},e=>(r.recordInputs&&d&&Za(e,d),zn(()=>o.apply(n,s),e=>{wr(e,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:t}}})},()=>{},t=>ec(e,t,r.recordOutputs))))}})}function oc(e,t="",n){return new Proxy(e,{get(e,r){const o=e[r],i=Aa(t,String(r));return"function"==typeof o&&function(e){return Qa.includes(e)}(i)?rc(o,i,e,n):"function"==typeof o?o.bind(e):o&&"object"==typeof o?oc(o,i,n):o}})}function ic(e,t){const n=Boolean(Ze()?.getOptions().sendDefaultPii);return oc(e,"",{recordInputs:n,recordOutputs:n,...t})}const sc=["models.generateContent","models.generateContentStream","chats.create","sendMessage","sendMessageStream"],ac="chats.create";function cc(e,t,n,r){e&&!function(e,t){const n=e?.promptFeedback;if(n?.blockReason){const e=n.blockReasonMessage??n.blockReason;return t.setStatus({code:2,message:`Content blocked: ${e}`}),wr(`Content blocked: ${e}`,{mechanism:{handled:!1,type:"auto.ai.google_genai"}}),!0}return!1}(e,r)&&(function(e,t){"string"==typeof e.responseId&&(t.responseId=e.responseId),"string"==typeof e.modelVersion&&(t.responseModel=e.modelVersion);const n=e.usageMetadata;n&&("number"==typeof n.promptTokenCount&&(t.promptTokens=n.promptTokenCount),"number"==typeof n.candidatesTokenCount&&(t.completionTokens=n.candidatesTokenCount),"number"==typeof n.totalTokenCount&&(t.totalTokens=n.totalTokenCount))}(e,t),function(e,t,n){Array.isArray(e.functionCalls)&&t.toolCalls.push(...e.functionCalls);for(const r of e.candidates??[]){r?.finishReason&&!t.finishReasons.includes(r.finishReason)&&t.finishReasons.push(r.finishReason);for(const e of r?.content?.parts??[])n&&e.text&&t.responseTexts.push(e.text),e.functionCall&&t.toolCalls.push({type:"function",id:e.functionCall.id,name:e.functionCall.name,arguments:e.functionCall.args})}}(e,t,n))}function lc(e,t="user"){return"string"==typeof e?[{role:t,content:e}]:Array.isArray(e)?e.flatMap(e=>lc(e,t)):"object"==typeof e&&e?"role"in e&&"string"==typeof e.role?[e]:"parts"in e?[{...e,role:t}]:[{role:t,content:e}]:[]}function dc(e,t){if("model"in e&&"string"==typeof e.model)return e.model;if(t&&"object"==typeof t){const e=t;if("model"in e&&"string"==typeof e.model)return e.model;if("modelVersion"in e&&"string"==typeof e.modelVersion)return e.modelVersion}return"unknown"}function uc(e,t,n){const r={[Ls]:"google_genai",[Ks]:Ma(e),[it]:"auto.ai.google_genai"};if(t){if(r[Ps]=dc(t,n),"config"in t&&"object"==typeof t.config&&t.config){const e=t.config;if(Object.assign(r,function(e){const t={};return"temperature"in e&&"number"==typeof e.temperature&&(t[Ds]=e.temperature),"topP"in e&&"number"==typeof e.topP&&(t[$s]=e.topP),"topK"in e&&"number"==typeof e.topK&&(t[zs]=e.topK),"maxOutputTokens"in e&&"number"==typeof e.maxOutputTokens&&(t[Ns]=e.maxOutputTokens),"frequencyPenalty"in e&&"number"==typeof e.frequencyPenalty&&(t[Bs]=e.frequencyPenalty),"presencePenalty"in e&&"number"==typeof e.presencePenalty&&(t[js]=e.presencePenalty),t}(e)),"tools"in e&&Array.isArray(e.tools)){const t=e.tools.flatMap(e=>e.functionDeclarations);r[Xs]=JSON.stringify(t)}}}else r[Ps]=dc({},n);return r}function pc(e,t){const n=[];"config"in t&&t.config&&"object"==typeof t.config&&"systemInstruction"in t.config&&t.config.systemInstruction&&n.push(...lc(t.config.systemInstruction,"system")),"history"in t&&n.push(...lc(t.history,"user")),"contents"in t&&n.push(...lc(t.contents,"user")),"message"in t&&n.push(...lc(t.message,"user")),Array.isArray(n)&&n.length&&e.setAttributes({[Gs]:n.length,[Js]:JSON.stringify(Ta(n))})}function hc(e,t,n,r){const o=t===ac;return new Proxy(e,{apply(e,i,s){const a=s[0],c=uc(t,a,n),l=c[Ps]??"unknown",d=Ma(t);return function(e){return e.includes("Stream")}(t)?qn({name:`${d} ${l} stream-response`,op:Ia(t),attributes:c},async o=>{try{r.recordInputs&&a&&pc(o,a);return async function*(e,t,n){const r={responseTexts:[],finishReasons:[],toolCalls:[]};try{for await(const o of e)cc(o,r,n,t),yield o}finally{const e={[Qs]:!0};r.responseId&&(e[qs]=r.responseId),r.responseModel&&(e[Hs]=r.responseModel),void 0!==r.promptTokens&&(e[Us]=r.promptTokens),void 0!==r.completionTokens&&(e[Ws]=r.completionTokens),void 0!==r.totalTokens&&(e[Vs]=r.totalTokens),r.finishReasons.length&&(e[Fs]=JSON.stringify(r.finishReasons)),n&&r.responseTexts.length&&(e[Ys]=r.responseTexts.join("")),n&&r.toolCalls.length&&(e[Zs]=JSON.stringify(r.toolCalls)),t.setAttributes(e),t.end()}}(await e.apply(n,s),o,Boolean(r.recordOutputs))}catch(e){throw o.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:t}}}),o.end(),e}}):Hn({name:o?`${d} ${l} create`:`${d} ${l}`,op:Ia(t),attributes:c},i=>(r.recordInputs&&a&&pc(i,a),zn(()=>e.apply(n,s),e=>{wr(e,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:t}}})},()=>{},e=>{o||function(e,t,n){if(t&&"object"==typeof t){if(t.modelVersion&&e.setAttribute(Hs,t.modelVersion),t.usageMetadata&&"object"==typeof t.usageMetadata){const n=t.usageMetadata;"number"==typeof n.promptTokenCount&&e.setAttributes({[Us]:n.promptTokenCount}),"number"==typeof n.candidatesTokenCount&&e.setAttributes({[Ws]:n.candidatesTokenCount}),"number"==typeof n.totalTokenCount&&e.setAttributes({[Vs]:n.totalTokenCount})}if(n&&Array.isArray(t.candidates)&&t.candidates.length>0){const n=t.candidates.map(e=>e.content?.parts&&Array.isArray(e.content.parts)?e.content.parts.map(e=>"string"==typeof e.text?e.text:"").filter(e=>e.length>0).join(""):"").filter(e=>e.length>0);n.length>0&&e.setAttributes({[Ys]:n.join("")})}if(n&&t.functionCalls){const n=t.functionCalls;Array.isArray(n)&&n.length>0&&e.setAttributes({[Zs]:JSON.stringify(n)})}}}(i,e,r.recordOutputs)})))}})}function fc(e,t="",n){return new Proxy(e,{get:(e,r,o)=>{const i=Reflect.get(e,r,o),s=Aa(t,String(r));if("function"==typeof i&&function(e){if(sc.includes(e))return!0;const t=e.split(".").pop();return sc.includes(t)}(s)){if(s===ac){const t=hc(i,s,e,n);return function(...e){const r=t(...e);return r&&"object"==typeof r?fc(r,"chat",n):r}}return hc(i,s,e,n)}return"function"==typeof i?i.bind(e):i&&"object"==typeof i?fc(i,s,n):i}})}function gc(e,t){const n=Boolean(Ze()?.getOptions().sendDefaultPii);return fc(e,"",{recordInputs:n,recordOutputs:n,...t})}const mc="auto.ai.langchain",vc={human:"user",ai:"assistant",assistant:"assistant",system:"system",function:"function",tool:"tool"},yc=(e,t,n)=>{null!=n&&(e[t]=n)},bc=(e,t,n)=>{const r=Number(n);Number.isNaN(r)||(e[t]=r)};function wc(e){if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}function xc(e){const t=e.toLowerCase();return vc[t]??t}function kc(e){return e.includes("System")?"system":e.includes("Human")?"user":e.includes("AI")||e.includes("Assistant")?"assistant":e.includes("Function")?"function":e.includes("Tool")?"tool":"user"}function _c(e){if(e&&!Array.isArray(e))return e.invocation_params}function Sc(e){return e.map(e=>{const t=e._getType;if("function"==typeof t){return{role:xc(t.call(e)),content:wc(e.content)}}const n=e.constructor?.name;if(n)return{role:xc(kc(n)),content:wc(e.content)};if(e.type){return{role:xc(String(e.type).toLowerCase()),content:wc(e.content)}}if(e.role)return{role:xc(String(e.role)),content:wc(e.content)};if(1===e.lc&&e.kwargs){const t=e.id,n=Array.isArray(t)&&t.length>0?t[t.length-1]:"";return{role:xc("string"==typeof n?kc(n):"user"),content:wc(e.kwargs?.content)}}return{role:"user",content:wc(e.content)}})}function Cc(e,t,n){const r={},o="kwargs"in e?e.kwargs:void 0;bc(r,Ds,t?.temperature??n?.ls_temperature??o?.temperature);bc(r,Ns,t?.max_tokens??n?.ls_max_tokens??o?.max_tokens);bc(r,$s,t?.top_p??o?.top_p);const i=t?.frequency_penalty;bc(r,Bs,i);const s=t?.presence_penalty;return bc(r,js,s),t&&"stream"in t&&yc(r,Os,Boolean(t.stream)),r}function Ec(e,t,n,r,o,i){return{[Ls]:wc(e??"langchain"),[Ks]:n,[Ps]:wc(t),[it]:mc,...Cc(r,o,i)}}function Tc(e,t){if(!e)return;const n={};if(Array.isArray(e.generations)){const r=e.generations.flat().map(e=>e.generationInfo?.finish_reason?e.generationInfo.finish_reason:e.generation_info?.finish_reason?e.generation_info.finish_reason:null).filter(e=>"string"==typeof e);if(r.length>0&&yc(n,Fs,wc(r)),function(e,t){const n=[],r=e.flat();for(const e of r){const t=e.message?.content;if(Array.isArray(t))for(const e of t){const t=e;"tool_use"===t.type&&n.push(t)}}n.length>0&&yc(t,Zs,wc(n))}(e.generations,n),t){const t=e.generations.flat().map(e=>e.text??e.message?.content).filter(e=>"string"==typeof e);t.length>0&&yc(n,Ys,wc(t))}}!function(e,t){if(!e)return;const n=e.tokenUsage,r=e.usage;if(n)bc(t,Us,n.promptTokens),bc(t,Ws,n.completionTokens),bc(t,Vs,n.totalTokens);else if(r){bc(t,Us,r.input_tokens),bc(t,Ws,r.output_tokens);const e=Number(r.input_tokens),n=Number(r.output_tokens),o=(Number.isNaN(e)?0:e)+(Number.isNaN(n)?0:n);o>0&&bc(t,Vs,o),void 0!==r.cache_creation_input_tokens&&bc(t,"gen_ai.usage.cache_creation_input_tokens",r.cache_creation_input_tokens),void 0!==r.cache_read_input_tokens&&bc(t,"gen_ai.usage.cache_read_input_tokens",r.cache_read_input_tokens)}}(e.llmOutput,n);const r=e.llmOutput,o=e.generations?.[0]?.[0],i=o?.message,s=r?.model_name??r?.model??i?.response_metadata?.model_name;s&&yc(n,Hs,s);const a=r?.id??i?.id;a&&yc(n,qs,a);const c=r?.stop_reason??i?.response_metadata?.finish_reason;return c&&yc(n,"gen_ai.response.stop_reason",wc(c)),n}function Mc(e={}){const t=e.recordInputs??!1,n=e.recordOutputs??!1,r=new Map,o=e=>{const t=r.get(e);t?.isRecording()&&(t.end(),r.delete(e))},i={lc_serializable:!1,lc_namespace:["langchain_core","callbacks","sentry"],lc_secrets:void 0,lc_attributes:void 0,lc_aliases:void 0,lc_serializable_keys:void 0,lc_id:["langchain_core","callbacks","sentry"],lc_kwargs:{},name:"SentryCallbackHandler",ignoreLLM:!1,ignoreChain:!1,ignoreAgent:!1,ignoreRetriever:!1,ignoreCustomEvent:!1,raiseError:!1,awaitHandlers:!0,handleLLMStart(e,n,o,i,s,a,c,l){const d=_c(a),u=function(e,t,n,r,o){const i=o?.ls_provider,s=Ec(i,r?.model??o?.ls_model_name??"unknown","pipeline",e,r,o);if(n&&Array.isArray(t)&&t.length>0){yc(s,Gs,t.length);const e=t.map(e=>({role:"user",content:e}));yc(s,Js,wc(e))}return s}(e,n,t,d,c),p=u[Ps];qn({name:`${u[Ks]} ${p}`,op:"gen_ai.pipeline",attributes:{...u,[ot]:"gen_ai.pipeline"}},e=>(r.set(o,e),e))},handleChatModelStart(e,n,o,i,s,a,c,l){const d=_c(a),u=function(e,t,n,r,o){const i=Ec(o?.ls_provider??e.id?.[2],r?.model??o?.ls_model_name??"unknown","chat",e,r,o);if(n&&Array.isArray(t)&&t.length>0){const e=Sc(t.flat());yc(i,Gs,e.length);const n=Ta(e);yc(i,Js,wc(n))}return i}(e,n,t,d,c),p=u[Ps];qn({name:`${u[Ks]} ${p}`,op:"gen_ai.chat",attributes:{...u,[ot]:"gen_ai.chat"}},e=>(r.set(o,e),e))},handleLLMEnd(e,t,i,s,a){const c=r.get(t);if(c?.isRecording()){const r=Tc(e,n);r&&c.setAttributes(r),o(t)}},handleLLMError(e,t){const n=r.get(t);n?.isRecording()&&(n.setStatus({code:2,message:"llm_error"}),o(t)),wr(e,{mechanism:{handled:!1,type:`${mc}.llm_error_handler`}})},handleChainStart(e,n,o,i){const s=e.name||"unknown_chain",a={[it]:"auto.ai.langchain","langchain.chain.name":s};t&&(a["langchain.chain.inputs"]=JSON.stringify(n)),qn({name:`chain ${s}`,op:"gen_ai.invoke_agent",attributes:{...a,[ot]:"gen_ai.invoke_agent"}},e=>(r.set(o,e),e))},handleChainEnd(e,t){const i=r.get(t);i?.isRecording()&&(n&&i.setAttributes({"langchain.chain.outputs":JSON.stringify(e)}),o(t))},handleChainError(e,t){const n=r.get(t);n?.isRecording()&&(n.setStatus({code:2,message:"chain_error"}),o(t)),wr(e,{mechanism:{handled:!1,type:`${mc}.chain_error_handler`}})},handleToolStart(e,n,o,i){const s=e.name||"unknown_tool",a={[it]:mc,"gen_ai.tool.name":s};t&&(a["gen_ai.tool.input"]=n),qn({name:`execute_tool ${s}`,op:"gen_ai.execute_tool",attributes:{...a,[ot]:"gen_ai.execute_tool"}},e=>(r.set(o,e),e))},handleToolEnd(e,t){const i=r.get(t);i?.isRecording()&&(n&&i.setAttributes({"gen_ai.tool.output":JSON.stringify(e)}),o(t))},handleToolError(e,t){const n=r.get(t);n?.isRecording()&&(n.setStatus({code:2,message:"tool_error"}),o(t)),wr(e,{mechanism:{handled:!1,type:`${mc}.tool_error_handler`}})},copy:()=>i,toJSON:()=>({lc:1,type:"not_implemented",id:i.lc_id}),toJSONNotImplemented:()=>({lc:1,type:"not_implemented",id:i.lc_id})};return i}const Ic="auto.ai.langgraph";function Ac(e){const t=e;let n=0,r=0,o=0;if(t.usage_metadata&&"object"==typeof t.usage_metadata){const e=t.usage_metadata;return"number"==typeof e.input_tokens&&(n=e.input_tokens),"number"==typeof e.output_tokens&&(r=e.output_tokens),"number"==typeof e.total_tokens&&(o=e.total_tokens),{inputTokens:n,outputTokens:r,totalTokens:o}}if(t.response_metadata&&"object"==typeof t.response_metadata){const e=t.response_metadata;if(e.tokenUsage&&"object"==typeof e.tokenUsage){const t=e.tokenUsage;"number"==typeof t.promptTokens&&(n=t.promptTokens),"number"==typeof t.completionTokens&&(r=t.completionTokens),"number"==typeof t.totalTokens&&(o=t.totalTokens)}}return{inputTokens:n,outputTokens:r,totalTokens:o}}function Rc(e,t){const n=t;if(n.response_metadata&&"object"==typeof n.response_metadata){const t=n.response_metadata;t.model_name&&"string"==typeof t.model_name&&e.setAttribute(Hs,t.model_name),t.finish_reason&&"string"==typeof t.finish_reason&&e.setAttribute(Fs,[t.finish_reason])}}function Lc(e,t,n){const r=n,o=r?.messages;if(!o||!Array.isArray(o))return;const i=t?.length??0,s=o.length>i?o.slice(i):[];if(0===s.length)return;const a=function(e){if(!e||0===e.length)return null;const t=[];for(const n of e)if(n&&"object"==typeof n){const e=n.tool_calls;e&&Array.isArray(e)&&t.push(...e)}return t.length>0?t:null}(s);a&&e.setAttribute(Zs,JSON.stringify(a));const c=Sc(s);e.setAttribute(Ys,JSON.stringify(c));let l=0,d=0,u=0;for(const t of s){const n=Ac(t);l+=n.inputTokens,d+=n.outputTokens,u+=n.totalTokens,Rc(e,t)}l>0&&e.setAttribute(Us,l),d>0&&e.setAttribute(Ws,d),u>0&&e.setAttribute(Vs,u)}function Pc(e,t){return new Proxy(e,{apply:(e,n,r)=>Hn({op:"gen_ai.create_agent",name:"create_agent",attributes:{[it]:Ic,[ot]:"gen_ai.create_agent",[Ks]:"create_agent"}},o=>{try{const i=Reflect.apply(e,n,r),s=r.length>0?r[0]:{};s?.name&&"string"==typeof s.name&&(o.setAttribute(ea,s.name),o.updateName(`create_agent ${s.name}`));const a=i.invoke;return a&&"function"==typeof a&&(i.invoke=function(e,t,n,r){return new Proxy(e,{apply:(e,o,i)=>Hn({op:"gen_ai.invoke_agent",name:"invoke_agent",attributes:{[it]:Ic,[ot]:ra,[Ks]:"invoke_agent"}},async s=>{try{const a=n?.name;a&&"string"==typeof a&&(s.setAttribute(ta,a),s.setAttribute(ea,a),s.updateName(`invoke_agent ${a}`));const c=i.length>1?i[1]:void 0,l=c?.configurable,d=l?.thread_id;d&&"string"==typeof d&&s.setAttribute(na,d);const u=function(e){if(!e.builder?.nodes?.tools?.runnable?.tools)return null;const t=e.builder?.nodes?.tools?.runnable?.tools;return t&&Array.isArray(t)&&0!==t.length?t.map(e=>({name:e.lc_kwargs?.name,description:e.lc_kwargs?.description,schema:e.lc_kwargs?.schema})):null}(t);u&&s.setAttribute(Xs,JSON.stringify(u));const p=r.recordInputs,h=r.recordOutputs,f=i.length>0?i[0].messages??[]:[];if(f&&p){const e=Sc(f),t=Ta(e);s.setAttributes({[Js]:JSON.stringify(t),[Gs]:e.length})}const g=await Reflect.apply(e,o,i);return h&&Lc(s,f??null,g),g}catch(e){throw s.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),e}})})}(a.bind(i),i,s,t)),i}catch(e){throw o.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),e}})})}function Oc(e,t){const n=t||{};return e.compile=Pc(e.compile.bind(e),n),e}function Dc(e){return void 0===e?void 0:e>=400&&e<500?"warning":e>=500?"error":void 0}Error;const Nc=a;function Bc(){if(!("fetch"in Nc))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}function jc(e){return e&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(e.toString())}function $c(){if("string"==typeof EdgeRuntime)return!0;if(!Bc())return!1;if(jc(Nc.fetch))return!0;let e=!1;const t=Nc.document;if(t&&"function"==typeof t.createElement)try{const n=t.createElement("iframe");n.hidden=!0,t.head.appendChild(n),n.contentWindow?.fetch&&(e=jc(n.contentWindow.fetch)),t.head.removeChild(n)}catch(e){s&&y.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",e)}return e}function zc(e,t){const n="fetch";A(n,e),R(n,()=>Fc(void 0,t))}function Fc(e,t=!1){t&&!$c()||oe(a,"fetch",function(t){return function(...n){const r=new Error,{method:o,url:i}=function(e){if(0===e.length)return{method:"GET",url:""};if(2===e.length){const[t,n]=e;return{url:Uc(t),method:qc(n,"method")?String(n.method).toUpperCase():Q(t)&&qc(t,"method")?String(t.method).toUpperCase():"GET"}}const t=e[0];return{url:Uc(t),method:qc(t,"method")?String(t.method).toUpperCase():"GET"}}(n),s={args:n,fetchData:{method:o,url:i},startTimestamp:1e3*Ae(),virtualError:r,headers:Wc(n)};return e||L("fetch",{...s}),t.apply(a,n).then(async t=>(e?e(t):L("fetch",{...s,endTimestamp:1e3*Ae(),response:t}),t),e=>{L("fetch",{...s,endTimestamp:1e3*Ae(),error:e}),z(e)&&void 0===e.stack&&(e.stack=r.stack,ie(e,"framesToPop",1));const t=Ze(),n=t?.getOptions().enhanceFetchErrorMessages??"always";if(!1!==n&&e instanceof TypeError&&("Failed to fetch"===e.message||"Load failed"===e.message||"NetworkError when attempting to fetch resource."===e.message))try{const t=new URL(s.fetchData.url).host;"always"===n?e.message=`${e.message} (${t})`:ie(e,"__sentry_fetch_url_host__",t)}catch{}throw e})}})}function Hc(e){let t;try{t=e.clone()}catch{return}!async function(e,t){if(e?.body){const n=e.body,r=n.getReader(),o=setTimeout(()=>{n.cancel().then(null,()=>{})},9e4);let i=!0;for(;i;){let e;try{e=setTimeout(()=>{n.cancel().then(null,()=>{})},5e3);const{done:o}=await r.read();clearTimeout(e),o&&(t(),i=!1)}catch{i=!1}finally{clearTimeout(e)}}clearTimeout(o),r.releaseLock(),n.cancel().then(null,()=>{})}}(t,()=>{L("fetch-body-resolved",{endTimestamp:1e3*Ae(),response:e})})}function qc(e,t){return!!e&&"object"==typeof e&&!!e[t]}function Uc(e){return"string"==typeof e?e:e?qc(e,"url")?e.url:e.toString?e.toString():"":""}function Wc(e){const[t,n]=e;try{if("object"==typeof n&&null!==n&&"headers"in n&&n.headers)return new Headers(n.headers);if(Q(t))return new Headers(t.headers)}catch{}}function Vc(){return!("undefined"!=typeof __SENTRY_BROWSER_BUNDLE__&&__SENTRY_BROWSER_BUNDLE__)&&"[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0)}function Kc(){return"undefined"!=typeof window&&(!Vc()||function(){const e=a.process;return"renderer"===e?.type}())}const Gc=a,Jc=Gc.document,Yc=Gc.navigator,Xc="Report a Bug",Qc=(e,t={includeReplay:!0})=>{if(!e.message)throw new Error("Unable to submit feedback with empty message");const n=Ze();if(!n)throw new Error("No client setup, cannot send feedback.");e.tags&&Object.keys(e.tags).length&&Ge().setTags(e.tags);const r=us({source:"api",url:ne(),...e},t);return new Promise((e,t)=>{const o=setTimeout(()=>t("Unable to determine if Feedback was correctly sent."),3e4),i=n.on("afterSendEvent",(n,s)=>{if(n.event_id===r)return clearTimeout(o),i(),s?.statusCode&&s.statusCode>=200&&s.statusCode<300?e(r):t(403===s?.statusCode?"Unable to send feedback. This could be because this domain is not in your list of allowed domains.":"Unable to send feedback. This could be because of network issues, or because you are using an ad-blocker.")})})},Zc="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;function el(e,t){return{...e,...t,tags:{...e.tags,...t.tags},onFormOpen:()=>{t.onFormOpen?.(),e.onFormOpen?.()},onFormClose:()=>{t.onFormClose?.(),e.onFormClose?.()},onSubmitSuccess:(n,r)=>{t.onSubmitSuccess?.(n,r),e.onSubmitSuccess?.(n,r)},onSubmitError:n=>{t.onSubmitError?.(n),e.onSubmitError?.(n)},onFormSubmitted:()=>{t.onFormSubmitted?.(),e.onFormSubmitted?.()},themeDark:{...e.themeDark,...t.themeDark},themeLight:{...e.themeLight,...t.themeLight}}}function tl(e,t){return Object.entries(t).forEach(([t,n])=>{e.setAttributeNS(null,t,n)}),e}function nl({triggerLabel:e,triggerAriaLabel:t,shadow:n,styleNonce:r}){const o=Jc.createElement("button");if(o.type="button",o.className="widget__actor",o.ariaHidden="false",o.ariaLabel=t||e||Xc,o.appendChild(function(){const e=e=>Gc.document.createElementNS("http://www.w3.org/2000/svg",e),t=tl(e("svg"),{width:"20",height:"20",viewBox:"0 0 20 20",fill:"var(--actor-color, var(--foreground))"}),n=tl(e("g"),{clipPath:"url(#clip0_57_80)"}),r=tl(e("path"),{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M15.6622 15H12.3997C12.2129 14.9959 12.031 14.9396 11.8747 14.8375L8.04965 12.2H7.49956V19.1C7.4875 19.3348 7.3888 19.5568 7.22256 19.723C7.05632 19.8892 6.83435 19.9879 6.59956 20H2.04956C1.80193 19.9968 1.56535 19.8969 1.39023 19.7218C1.21511 19.5467 1.1153 19.3101 1.11206 19.0625V12.2H0.949652C0.824431 12.2017 0.700142 12.1783 0.584123 12.1311C0.468104 12.084 0.362708 12.014 0.274155 11.9255C0.185602 11.8369 0.115689 11.7315 0.0685419 11.6155C0.0213952 11.4995 -0.00202913 11.3752 -0.00034808 11.25V3.75C-0.00900498 3.62067 0.0092504 3.49095 0.0532651 3.36904C0.0972798 3.24712 0.166097 3.13566 0.255372 3.04168C0.344646 2.94771 0.452437 2.87327 0.571937 2.82307C0.691437 2.77286 0.82005 2.74798 0.949652 2.75H8.04965L11.8747 0.1625C12.031 0.0603649 12.2129 0.00407221 12.3997 0H15.6622C15.9098 0.00323746 16.1464 0.103049 16.3215 0.278167C16.4966 0.453286 16.5964 0.689866 16.5997 0.9375V3.25269C17.3969 3.42959 18.1345 3.83026 18.7211 4.41679C19.5322 5.22788 19.9878 6.32796 19.9878 7.47502C19.9878 8.62209 19.5322 9.72217 18.7211 10.5333C18.1345 11.1198 17.3969 11.5205 16.5997 11.6974V14.0125C16.6047 14.1393 16.5842 14.2659 16.5395 14.3847C16.4948 14.5035 16.4268 14.6121 16.3394 14.7042C16.252 14.7962 16.147 14.8698 16.0307 14.9206C15.9144 14.9714 15.7891 14.9984 15.6622 15ZM1.89695 10.325H1.88715V4.625H8.33715C8.52423 4.62301 8.70666 4.56654 8.86215 4.4625L12.6872 1.875H14.7247V13.125H12.6872L8.86215 10.4875C8.70666 10.3835 8.52423 10.327 8.33715 10.325H2.20217C2.15205 10.3167 2.10102 10.3125 2.04956 10.3125C1.9981 10.3125 1.94708 10.3167 1.89695 10.325ZM2.98706 12.2V18.1625H5.66206V12.2H2.98706ZM16.5997 9.93612V5.01393C16.6536 5.02355 16.7072 5.03495 16.7605 5.04814C17.1202 5.13709 17.4556 5.30487 17.7425 5.53934C18.0293 5.77381 18.2605 6.06912 18.4192 6.40389C18.578 6.73866 18.6603 7.10452 18.6603 7.47502C18.6603 7.84552 18.578 8.21139 18.4192 8.54616C18.2605 8.88093 18.0293 9.17624 17.7425 9.41071C17.4556 9.64518 17.1202 9.81296 16.7605 9.90191C16.7072 9.91509 16.6536 9.9265 16.5997 9.93612Z"});t.appendChild(n).appendChild(r);const o=e("defs"),i=tl(e("clipPath"),{id:"clip0_57_80"}),s=tl(e("rect"),{width:"20",height:"20",fill:"white"});return i.appendChild(s),o.appendChild(i),t.appendChild(o).appendChild(i).appendChild(s),t}()),e){const t=Jc.createElement("span");t.appendChild(Jc.createTextNode(e)),o.appendChild(t)}const i=function(e){const t=Jc.createElement("style");return t.textContent='\n.widget__actor {\n position: fixed;\n z-index: var(--z-index);\n margin: var(--page-margin);\n inset: var(--actor-inset);\n\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n\n font-family: inherit;\n font-size: var(--font-size);\n font-weight: 600;\n line-height: 1.14em;\n text-decoration: none;\n\n background: var(--actor-background, var(--background));\n border-radius: var(--actor-border-radius, 1.7em/50%);\n border: var(--actor-border, var(--border));\n box-shadow: var(--actor-box-shadow, var(--box-shadow));\n color: var(--actor-color, var(--foreground));\n fill: var(--actor-color, var(--foreground));\n cursor: pointer;\n opacity: 1;\n transition: transform 0.2s ease-in-out;\n transform: translate(0, 0) scale(1);\n}\n.widget__actor[aria-hidden="true"] {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transform: translate(0, 16px) scale(0.98);\n}\n\n.widget__actor:hover {\n background: var(--actor-hover-background, var(--background));\n filter: var(--interactive-filter);\n}\n\n.widget__actor svg {\n width: 1.14em;\n height: 1.14em;\n}\n\n@media (max-width: 600px) {\n .widget__actor span {\n display: none;\n }\n}\n',e&&t.setAttribute("nonce",e),t}(r);return{el:o,appendToDom(){n.appendChild(i),n.appendChild(o)},removeFromDom(){o.remove(),i.remove()},show(){o.ariaHidden="false"},hide(){o.ariaHidden="true"}}}const rl="rgba(88, 74, 192, 1)",ol={foreground:"#2b2233",background:"#ffffff",accentForeground:"white",accentBackground:rl,successColor:"#268d75",errorColor:"#df3338",border:"1.5px solid rgba(41, 35, 47, 0.13)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(95%)"},il={foreground:"#ebe6ef",background:"#29232f",accentForeground:"white",accentBackground:rl,successColor:"#2da98c",errorColor:"#f55459",border:"1.5px solid rgba(235, 230, 239, 0.15)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(150%)"};function sl(e){return`\n --foreground: ${e.foreground};\n --background: ${e.background};\n --accent-foreground: ${e.accentForeground};\n --accent-background: ${e.accentBackground};\n --success-color: ${e.successColor};\n --error-color: ${e.errorColor};\n --border: ${e.border};\n --box-shadow: ${e.boxShadow};\n --outline: ${e.outline};\n --interactive-filter: ${e.interactiveFilter};\n `}const al=({lazyLoadIntegration:e,getModalIntegration:t,getScreenshotIntegration:n})=>({id:r="sentry-feedback",autoInject:o=!0,showBranding:i=!0,isEmailRequired:s=!1,isNameRequired:a=!1,showEmail:c=!0,showName:l=!0,enableScreenshot:d=!0,useSentryUser:u={email:"email",name:"username"},tags:p,styleNonce:h,scriptNonce:f,colorScheme:g="system",themeLight:m={},themeDark:v={},addScreenshotButtonLabel:b="Add a screenshot",cancelButtonLabel:w="Cancel",confirmButtonLabel:x="Confirm",emailLabel:k="Email",emailPlaceholder:_="your.email@example.org",formTitle:S="Report a Bug",isRequiredLabel:C="(required)",messageLabel:E="Description",messagePlaceholder:T="What's the bug? What did you expect?",nameLabel:M="Name",namePlaceholder:I="Your Name",removeScreenshotButtonLabel:A="Remove screenshot",submitButtonLabel:R="Send Bug Report",successMessageText:L="Thank you for your report!",triggerLabel:P=Xc,triggerAriaLabel:O="",highlightToolText:D="Highlight",hideToolText:N="Hide",removeHighlightText:B="Remove",onFormOpen:j,onFormClose:$,onSubmitSuccess:z,onSubmitError:F,onFormSubmitted:H}={})=>{const q={id:r,autoInject:o,showBranding:i,isEmailRequired:s,isNameRequired:a,showEmail:c,showName:l,enableScreenshot:d,useSentryUser:u,tags:p,styleNonce:h,scriptNonce:f,colorScheme:g,themeDark:v,themeLight:m,triggerLabel:P,triggerAriaLabel:O,cancelButtonLabel:w,submitButtonLabel:R,confirmButtonLabel:x,formTitle:S,emailLabel:k,emailPlaceholder:_,messageLabel:E,messagePlaceholder:T,nameLabel:M,namePlaceholder:I,successMessageText:L,isRequiredLabel:C,addScreenshotButtonLabel:b,removeScreenshotButtonLabel:A,highlightToolText:D,hideToolText:N,removeHighlightText:B,onFormClose:$,onFormOpen:j,onSubmitError:F,onSubmitSuccess:z,onFormSubmitted:H};let U=null,W=[];const V=e=>{if(!U){const t=Jc.createElement("div");t.id=String(e.id),Jc.body.appendChild(t),U=t.attachShadow({mode:"open"}),U.appendChild(function({colorScheme:e,themeDark:t,themeLight:n,styleNonce:r}){const o=Jc.createElement("style");return o.textContent=`\n:host {\n --font-family: system-ui, 'Helvetica Neue', Arial, sans-serif;\n --font-size: 14px;\n --z-index: 100000;\n\n --page-margin: 16px;\n --inset: auto 0 0 auto;\n --actor-inset: var(--inset);\n\n font-family: var(--font-family);\n font-size: var(--font-size);\n\n ${"system"!==e?`color-scheme: only ${e};`:""}\n\n ${sl("dark"===e?{...il,...t}:{...ol,...n})}\n}\n\n${"system"===e?`\n@media (prefers-color-scheme: dark) {\n :host {\n color-scheme: only dark;\n\n ${sl({...il,...t})}\n }\n}`:""}\n`,r&&o.setAttribute("nonce",r),o}(e))}return U},K=async r=>{const o=r.enableScreenshot&&!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(Yc.userAgent)||/Macintosh/i.test(Yc.userAgent)&&Yc.maxTouchPoints&&Yc.maxTouchPoints>1||!isSecureContext);let i,s;try{i=(t?t():await e("feedbackModalIntegration",f))(),Wr(i)}catch{throw Zc&&y.error("[Feedback] Error when trying to load feedback integrations. Try using `feedbackSyncIntegration` in your `Sentry.init`."),new Error("[Feedback] Missing feedback modal integration!")}try{const t=o?n?n():await e("feedbackScreenshotIntegration",f):void 0;t&&(s=t(),Wr(s))}catch{Zc&&y.error("[Feedback] Missing feedback screenshot integration. Proceeding without screenshots.")}const a=i.createDialog({options:{...r,onFormClose:()=>{a?.close(),r.onFormClose?.()},onFormSubmitted:()=>{a?.close(),r.onFormSubmitted?.()}},screenshotIntegration:s,sendFeedback:Qc,shadow:V(r)});return a},G=(e,t={})=>{const n=el(q,t),r="string"==typeof e?Jc.querySelector(e):"function"==typeof e.addEventListener?e:null;if(!r)throw Zc&&y.error("[Feedback] Unable to attach to target element"),new Error("Unable to attach to target element");let o=null;const i=async()=>{o||(o=await K({...n,onFormSubmitted:()=>{o?.removeFromDom(),n.onFormSubmitted?.()}})),o.appendToDom(),o.open()};r.addEventListener("click",i);const s=()=>{W=W.filter(e=>e!==s),o?.removeFromDom(),o=null,r.removeEventListener("click",i)};return W.push(s),s},J=(e={})=>{const t=el(q,e),n=V(t),r=nl({triggerLabel:t.triggerLabel,triggerAriaLabel:t.triggerAriaLabel,shadow:n,styleNonce:h});return G(r.el,{...t,onFormOpen(){r.hide()},onFormClose(){r.show()},onFormSubmitted(){r.show()}}),r};return{name:"Feedback",setupOnce(){Kc()&&q.autoInject&&("loading"===Jc.readyState?Jc.addEventListener("DOMContentLoaded",()=>J().appendToDom()):J().appendToDom())},attachTo:G,createWidget(e={}){const t=J(el(q,e));return t.appendToDom(),t},createForm:async(e={})=>K(el(q,e)),remove(){U&&(U.parentElement?.remove(),U=null),W.forEach(e=>e()),W=[]}}};function cl(){const e=Ze();return e?.getIntegrationByName("Feedback")}var ll,dl,ul,pl,hl,fl,gl,ml={},vl=[],yl=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,bl=Array.isArray;function wl(e,t){for(var n in t)e[n]=t[n];return e}function xl(e){var t=e.parentNode;t&&t.removeChild(e)}function kl(e,t,n){var r,o,i,s={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?ll.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===s[i]&&(s[i]=e.defaultProps[i]);return _l(e,s,r,o,null)}function _l(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==o?++ul:o,__i:-1,__u:0};return null==o&&null!=dl.vnode&&dl.vnode(i),i}function Sl(e){return e.children}function Cl(e,t){this.props=e,this.context=t}function El(e,t){if(null==t)return e.__?El(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?El(e):null}function Tl(e,t,n){var r,o=e.__v,i=o.__e,s=e.__P;if(s)return(r=wl({},o)).__v=o.__v+1,dl.vnode&&dl.vnode(r),jl(s,r,o,e.__n,void 0!==s.ownerSVGElement,32&o.__u?[i]:null,t,null==i?El(o):i,!!(32&o.__u),n),r.__.__k[r.__i]=r,r.__d=void 0,r.__e!=i&&Ml(r),r}function Ml(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return Ml(e)}}function Il(e){(!e.__d&&(e.__d=!0)&&pl.push(e)&&!Al.__r++||hl!==dl.debounceRendering)&&((hl=dl.debounceRendering)||fl)(Al)}function Al(){var e,t,n,r=[],o=[];for(pl.sort(gl);e=pl.shift();)e.__d&&(n=pl.length,t=Tl(e,r,o)||t,0===n||pl.length>n?($l(r,t,o),o.length=r.length=0,t=void 0,pl.sort(gl)):t&&dl.__c&&dl.__c(t,vl));t&&$l(r,t,o),Al.__r=0}function Rl(e,t,n,r,o,i,s,a,c,l,d){var u,p,h,f,g,m=r&&r.__k||vl,v=t.length;for(n.__d=c,function(e,t,n){var r,o,i,s,a,c=t.length,l=n.length,d=l,u=0;for(e.__k=[],r=0;r<c;r++)null!=(o=e.__k[r]=null==(o=t[r])||"boolean"==typeof o||"function"==typeof o?null:"string"==typeof o||"number"==typeof o||"bigint"==typeof o||o.constructor==String?_l(null,o,null,null,o):bl(o)?_l(Sl,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?_l(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o)?(o.__=e,o.__b=e.__b+1,a=Pl(o,n,s=r+u,d),o.__i=a,i=null,-1!==a&&(d--,(i=n[a])&&(i.__u|=131072)),null==i||null===i.__v?(-1==a&&u--,"function"!=typeof o.type&&(o.__u|=65536)):a!==s&&(a===s+1?u++:a>s?d>c-s?u+=a-s:u--:u=a<s&&a==s-1?a-s:0,a!==r+u&&(o.__u|=65536))):(i=n[r])&&null==i.key&&i.__e&&(i.__e==e.__d&&(e.__d=El(i)),Hl(i,i,!1),n[r]=null,d--);if(d)for(r=0;r<l;r++)null!=(i=n[r])&&!(131072&i.__u)&&(i.__e==e.__d&&(e.__d=El(i)),Hl(i,i))}(n,t,m),c=n.__d,u=0;u<v;u++)null!=(h=n.__k[u])&&"boolean"!=typeof h&&"function"!=typeof h&&(p=-1===h.__i?ml:m[h.__i]||ml,h.__i=u,jl(e,h,p,o,i,s,a,c,l,d),f=h.__e,h.ref&&p.ref!=h.ref&&(p.ref&&Fl(p.ref,null,h),d.push(h.ref,h.__c||f,h)),null==g&&null!=f&&(g=f),65536&h.__u||p.__k===h.__k?c=Ll(h,c,e):"function"==typeof h.type&&void 0!==h.__d?c=h.__d:f&&(c=f.nextSibling),h.__d=void 0,h.__u&=-196609);n.__d=c,n.__e=g}function Ll(e,t,n){var r,o;if("function"==typeof e.type){for(r=e.__k,o=0;r&&o<r.length;o++)r[o]&&(r[o].__=e,t=Ll(r[o],t,n));return t}e.__e!=t&&(n.insertBefore(e.__e,t||null),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8===t.nodeType);return t}function Pl(e,t,n,r){var o=e.key,i=e.type,s=n-1,a=n+1,c=t[n];if(null===c||c&&o==c.key&&i===c.type)return n;if(r>(null==c||131072&c.__u?0:1))for(;s>=0||a<t.length;){if(s>=0){if((c=t[s])&&!(131072&c.__u)&&o==c.key&&i===c.type)return s;s--}if(a<t.length){if((c=t[a])&&!(131072&c.__u)&&o==c.key&&i===c.type)return a;a++}}return-1}function Ol(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||yl.test(t)?n:n+"px"}function Dl(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Ol(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||Ol(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/(PointerCapture)$|Capture$/i,"$1")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n.u=r.u:(n.u=Date.now(),e.addEventListener(t,i?Bl:Nl,i)):e.removeEventListener(t,i?Bl:Nl,i);else{if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&"rowSpan"!==t&&"colSpan"!==t&&"role"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function Nl(e){if(this.l){var t=this.l[e.type+!1];if(e.t){if(e.t<=t.u)return}else e.t=Date.now();return t(dl.event?dl.event(e):e)}}function Bl(e){if(this.l)return this.l[e.type+!0](dl.event?dl.event(e):e)}function jl(e,t,n,r,o,i,s,a,c,l){var d,u,p,h,f,g,m,v,y,b,w,x,k,_,S,C=t.type;if(void 0!==t.constructor)return null;128&n.__u&&(c=!!(32&n.__u),i=[a=t.__e=n.__e]),(d=dl.__b)&&d(t);e:if("function"==typeof C)try{if(v=t.props,y=(d=C.contextType)&&r[d.__c],b=d?y?y.props.value:d.__:r,n.__c?m=(u=t.__c=n.__c).__=u.__E:("prototype"in C&&C.prototype.render?t.__c=u=new C(v,b):(t.__c=u=new Cl(v,b),u.constructor=C,u.render=ql),y&&y.sub(u),u.props=v,u.state||(u.state={}),u.context=b,u.__n=r,p=u.__d=!0,u.__h=[],u._sb=[]),null==u.__s&&(u.__s=u.state),null!=C.getDerivedStateFromProps&&(u.__s==u.state&&(u.__s=wl({},u.__s)),wl(u.__s,C.getDerivedStateFromProps(v,u.__s))),h=u.props,f=u.state,u.__v=t,p)null==C.getDerivedStateFromProps&&null!=u.componentWillMount&&u.componentWillMount(),null!=u.componentDidMount&&u.__h.push(u.componentDidMount);else{if(null==C.getDerivedStateFromProps&&v!==h&&null!=u.componentWillReceiveProps&&u.componentWillReceiveProps(v,b),!u.__e&&(null!=u.shouldComponentUpdate&&!1===u.shouldComponentUpdate(v,u.__s,b)||t.__v===n.__v)){for(t.__v!==n.__v&&(u.props=v,u.state=u.__s,u.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.forEach(function(e){e&&(e.__=t)}),w=0;w<u._sb.length;w++)u.__h.push(u._sb[w]);u._sb=[],u.__h.length&&s.push(u);break e}null!=u.componentWillUpdate&&u.componentWillUpdate(v,u.__s,b),null!=u.componentDidUpdate&&u.__h.push(function(){u.componentDidUpdate(h,f,g)})}if(u.context=b,u.props=v,u.__P=e,u.__e=!1,x=dl.__r,k=0,"prototype"in C&&C.prototype.render){for(u.state=u.__s,u.__d=!1,x&&x(t),d=u.render(u.props,u.state,u.context),_=0;_<u._sb.length;_++)u.__h.push(u._sb[_]);u._sb=[]}else do{u.__d=!1,x&&x(t),d=u.render(u.props,u.state,u.context),u.state=u.__s}while(u.__d&&++k<25);u.state=u.__s,null!=u.getChildContext&&(r=wl(wl({},r),u.getChildContext())),p||null==u.getSnapshotBeforeUpdate||(g=u.getSnapshotBeforeUpdate(h,f)),Rl(e,bl(S=null!=d&&d.type===Sl&&null==d.key?d.props.children:d)?S:[S],t,n,r,o,i,s,a,c,l),u.base=t.__e,t.__u&=-161,u.__h.length&&s.push(u),m&&(u.__E=u.__=null)}catch(e){t.__v=null,c||null!=i?(t.__e=a,t.__u|=c?160:32,i[i.indexOf(a)]=null):(t.__e=n.__e,t.__k=n.__k),dl.__e(e,t,n)}else null==i&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=zl(n.__e,t,n,r,o,i,s,c,l);(d=dl.diffed)&&d(t)}function $l(e,t,n){for(var r=0;r<n.length;r++)Fl(n[r],n[++r],n[++r]);dl.__c&&dl.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){dl.__e(e,t.__v)}})}function zl(e,t,n,r,o,i,s,a,c){var l,d,u,p,h,f,g,m=n.props,v=t.props,y=t.type;if("svg"===y&&(o=!0),null!=i)for(l=0;l<i.length;l++)if((h=i[l])&&"setAttribute"in h==!!y&&(y?h.localName===y:3===h.nodeType)){e=h,i[l]=null;break}if(null==e){if(null===y)return document.createTextNode(v);e=o?document.createElementNS("http://www.w3.org/2000/svg",y):document.createElement(y,v.is&&v),i=null,a=!1}if(null===y)m===v||a&&e.data===v||(e.data=v);else{if(i=i&&ll.call(e.childNodes),m=n.props||ml,!a&&null!=i)for(m={},l=0;l<e.attributes.length;l++)m[(h=e.attributes[l]).name]=h.value;for(l in m)h=m[l],"children"==l||("dangerouslySetInnerHTML"==l?u=h:"key"===l||l in v||Dl(e,l,null,h,o));for(l in v)h=v[l],"children"==l?p=h:"dangerouslySetInnerHTML"==l?d=h:"value"==l?f=h:"checked"==l?g=h:"key"===l||a&&"function"!=typeof h||m[l]===h||Dl(e,l,h,m[l],o);if(d)a||u&&(d.__html===u.__html||d.__html===e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(u&&(e.innerHTML=""),Rl(e,bl(p)?p:[p],t,n,r,o&&"foreignObject"!==y,i,s,i?i[0]:n.__k&&El(n,0),a,c),null!=i)for(l=i.length;l--;)null!=i[l]&&xl(i[l]);a||(l="value",void 0!==f&&(f!==e[l]||"progress"===y&&!f||"option"===y&&f!==m[l])&&Dl(e,l,f,m[l],!1),l="checked",void 0!==g&&g!==e[l]&&Dl(e,l,g,m[l],!1))}return e}function Fl(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){dl.__e(e,n)}}function Hl(e,t,n){var r,o;if(dl.unmount&&dl.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||Fl(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){dl.__e(e,t)}r.base=r.__P=null,e.__c=void 0}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Hl(r[o],t,n||"function"!=typeof e.type);n||null==e.__e||xl(e.__e),e.__=e.__e=e.__d=void 0}function ql(e,t,n){return this.constructor(e,n)}ll=vl.slice,dl={__e:function(e,t,n,r){for(var o,i,s;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&null!=i.getDerivedStateFromError&&(o.setState(i.getDerivedStateFromError(e)),s=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),s=o.__d),s)return o.__E=o}catch(t){e=t}throw e}},ul=0,Cl.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=wl({},this.state),"function"==typeof e&&(e=e(wl({},n),this.props)),e&&wl(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),Il(this))},Cl.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Il(this))},Cl.prototype.render=Sl,pl=[],fl="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,gl=function(e,t){return e.__v.__b-t.__v.__b},Al.__r=0;var Ul,Wl,Vl,Kl,Gl=0,Jl=[],Yl=[],Xl=dl,Ql=Xl.__b,Zl=Xl.__r,ed=Xl.diffed,td=Xl.__c,nd=Xl.unmount,rd=Xl.__;function od(e,t){Xl.__h&&Xl.__h(Wl,e,Gl||t),Gl=0;var n=Wl.__H||(Wl.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:Yl}),n.__[e]}function id(e){return Gl=1,sd(md,e)}function sd(e,t,n){var r=od(Ul++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):md(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=Wl,!Wl.u)){var o=function(e,t,n){if(!r.__c.__H)return!0;var o=r.__c.__H.__.filter(function(e){return!!e.__c});if(o.every(function(e){return!e.__N}))return!i||i.call(this,e,t,n);var s=!1;return o.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(s=!0)}}),!(!s&&r.__c.props===e)&&(!i||i.call(this,e,t,n))};Wl.u=!0;var i=Wl.shouldComponentUpdate,s=Wl.componentWillUpdate;Wl.componentWillUpdate=function(e,t,n){if(this.__e){var r=i;i=void 0,o(e,t,n),i=r}s&&s.call(this,e,t,n)},Wl.shouldComponentUpdate=o}return r.__N||r.__}function ad(e,t){var n=od(Ul++,4);!Xl.__s&&gd(n.__H,t)&&(n.__=e,n.i=t,Wl.__h.push(n))}function cd(e,t){var n=od(Ul++,7);return gd(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}function ld(e,t){return Gl=8,cd(function(){return e},t)}function dd(){for(var e;e=Jl.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(hd),e.__H.__h.forEach(fd),e.__H.__h=[]}catch(t){e.__H.__h=[],Xl.__e(t,e.__v)}}Xl.__b=function(e){Wl=null,Ql&&Ql(e)},Xl.__=function(e,t){t.__k&&t.__k.__m&&(e.__m=t.__k.__m),rd&&rd(e,t)},Xl.__r=function(e){Zl&&Zl(e),Ul=0;var t=(Wl=e.__c).__H;t&&(Vl===Wl?(t.__h=[],Wl.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.__V=Yl,e.__N=e.i=void 0})):(t.__h.forEach(hd),t.__h.forEach(fd),t.__h=[],Ul=0)),Vl=Wl},Xl.diffed=function(e){ed&&ed(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Jl.push(t)&&Kl===Xl.requestAnimationFrame||((Kl=Xl.requestAnimationFrame)||pd)(dd)),t.__H.__.forEach(function(e){e.i&&(e.__H=e.i),e.__V!==Yl&&(e.__=e.__V),e.i=void 0,e.__V=Yl})),Vl=Wl=null},Xl.__c=function(e,t){t.some(function(e){try{e.__h.forEach(hd),e.__h=e.__h.filter(function(e){return!e.__||fd(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Xl.__e(n,e.__v)}}),td&&td(e,t)},Xl.unmount=function(e){nd&&nd(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{hd(e)}catch(e){t=e}}),n.__H=void 0,t&&Xl.__e(t,n.__v))};var ud="function"==typeof requestAnimationFrame;function pd(e){var t,n=function(){clearTimeout(r),ud&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);ud&&(t=requestAnimationFrame(n))}function hd(e){var t=Wl,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Wl=t}function fd(e){var t=Wl;e.__c=e.__(),Wl=t}function gd(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function md(e,t){return"function"==typeof t?t(e):t}const vd=Object.defineProperty({__proto__:null,useCallback:ld,useContext:function(e){var t=Wl.context[e.__c],n=od(Ul++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(Wl)),t.props.value):e.__},useDebugValue:function(e,t){Xl.useDebugValue&&Xl.useDebugValue(t?t(e):e)},useEffect:function(e,t){var n=od(Ul++,3);!Xl.__s&&gd(n.__H,t)&&(n.__=e,n.i=t,Wl.__H.__h.push(n))},useErrorBoundary:function(e){var t=od(Ul++,10),n=id();return t.__=e,Wl.componentDidCatch||(Wl.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]},useId:function(){var e=od(Ul++,11);if(!e.__){for(var t=Wl.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__},useImperativeHandle:function(e,t,n){Gl=6,ad(function(){return"function"==typeof e?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},null==n?n:n.concat(e))},useLayoutEffect:ad,useMemo:cd,useReducer:sd,useRef:function(e){return Gl=5,cd(function(){return{current:e}},[])},useState:id},Symbol.toStringTag,{value:"Module"});function yd(){const e=e=>Jc.createElementNS("http://www.w3.org/2000/svg",e),t=tl(e("svg"),{width:"32",height:"30",viewBox:"0 0 72 66",fill:"inherit"}),n=tl(e("path"),{transform:"translate(11, 11)",d:"M29,2.26a4.67,4.67,0,0,0-8,0L14.42,13.53A32.21,32.21,0,0,1,32.17,40.19H27.55A27.68,27.68,0,0,0,12.09,17.47L6,28a15.92,15.92,0,0,1,9.23,12.17H4.62A.76.76,0,0,1,4,39.06l2.94-5a10.74,10.74,0,0,0-3.36-1.9l-2.91,5a4.54,4.54,0,0,0,1.69,6.24A4.66,4.66,0,0,0,4.62,44H19.15a19.4,19.4,0,0,0-8-17.31l2.31-4A23.87,23.87,0,0,1,23.76,44H36.07a35.88,35.88,0,0,0-16.41-31.8l4.67-8a.77.77,0,0,1,1.05-.27c.53.29,20.29,34.77,20.66,35.17a.76.76,0,0,1-.68,1.13H40.6q.09,1.91,0,3.81h4.78A4.59,4.59,0,0,0,50,39.43a4.49,4.49,0,0,0-.62-2.28Z"});return t.appendChild(n),t}function bd({options:e}){const t=cd(()=>({__html:yd().outerHTML}),[]);return kl("h2",{class:"dialog__header"},kl("span",{class:"dialog__title"},e.formTitle),e.showBranding?kl("a",{class:"brand-link",target:"_blank",href:"https://sentry.io/welcome/",title:"Powered by Sentry",rel:"noopener noreferrer",dangerouslySetInnerHTML:t}):null)}function wd(e,t){const n=e.get(t);return"string"==typeof n?n.trim():""}function xd({options:e,defaultEmail:t,defaultName:n,onFormClose:r,onSubmit:o,onSubmitSuccess:i,onSubmitError:s,showEmail:a,showName:c,screenshotInput:l}){const{tags:d,addScreenshotButtonLabel:u,removeScreenshotButtonLabel:p,cancelButtonLabel:h,emailLabel:f,emailPlaceholder:g,isEmailRequired:m,isNameRequired:v,messageLabel:b,messagePlaceholder:w,nameLabel:x,namePlaceholder:k,submitButtonLabel:_,isRequiredLabel:S}=e,[C,E]=id(!1),[T,M]=id(null),[I,A]=id(!1),R=l?.input,[L,P]=id(null),O=ld(e=>{P(e),A(!1)},[]),D=ld(e=>{const t=function(e,t){const n=[];return t.isNameRequired&&!e.name&&n.push(t.nameLabel),t.isEmailRequired&&!e.email&&n.push(t.emailLabel),e.message||n.push(t.messageLabel),n}(e,{emailLabel:f,isEmailRequired:m,isNameRequired:v,messageLabel:b,nameLabel:x});return t.length>0?M(`Please enter in the following required fields: ${t.join(", ")}`):M(null),0===t.length},[f,m,v,b,x]),N=ld(async e=>{E(!0);try{if(e.preventDefault(),!(e.target instanceof HTMLFormElement))return;const t=new FormData(e.target),n=await(l&&I?l.value():void 0),r={name:wd(t,"name"),email:wd(t,"email"),message:wd(t,"message"),attachments:n?[n]:void 0};if(!D(r))return;try{const e=await o({name:r.name,email:r.email,message:r.message,source:"widget",tags:d},{attachments:r.attachments});i(r,e)}catch(e){Zc&&y.error(e),M(e),s(e)}}finally{E(!1)}},[l&&I,i,s]);return kl("form",{class:"form",onSubmit:N},R&&I?kl(R,{onError:O}):null,kl("fieldset",{class:"form__right","data-sentry-feedback":!0,disabled:C},kl("div",{class:"form__top"},T?kl("div",{class:"form__error-container"},T):null,c?kl("label",{for:"name",class:"form__label"},kl(kd,{label:x,isRequiredLabel:S,isRequired:v}),kl("input",{class:"form__input",defaultValue:n,id:"name",name:"name",placeholder:k,required:v,type:"text"})):kl("input",{"aria-hidden":!0,value:n,name:"name",type:"hidden"}),a?kl("label",{for:"email",class:"form__label"},kl(kd,{label:f,isRequiredLabel:S,isRequired:m}),kl("input",{class:"form__input",defaultValue:t,id:"email",name:"email",placeholder:g,required:m,type:"email"})):kl("input",{"aria-hidden":!0,value:t,name:"email",type:"hidden"}),kl("label",{for:"message",class:"form__label"},kl(kd,{label:b,isRequiredLabel:S,isRequired:!0}),kl("textarea",{autoFocus:!0,class:"form__input form__input--textarea",id:"message",name:"message",placeholder:w,required:!0,rows:5})),R?kl("label",{for:"screenshot",class:"form__label"},kl("button",{class:"btn btn--default",disabled:C,type:"button",onClick:()=>{P(null),A(e=>!e)}},I?p:u),L?kl("div",{class:"form__error-container"},L.message):null):null),kl("div",{class:"btn-group"},kl("button",{class:"btn btn--primary",disabled:C,type:"submit"},_),kl("button",{class:"btn btn--default",disabled:C,type:"button",onClick:r},h))))}function kd({label:e,isRequired:t,isRequiredLabel:n}){return kl("span",{class:"form__label__text"},e,t&&kl("span",{class:"form__label__text--required"},n))}function _d(){const e=e=>Gc.document.createElementNS("http://www.w3.org/2000/svg",e),t=tl(e("svg"),{width:"16",height:"17",viewBox:"0 0 16 17",fill:"inherit"}),n=tl(e("g"),{clipPath:"url(#clip0_57_156)"}),r=tl(e("path"),{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.55544 15.1518C4.87103 16.0308 6.41775 16.5 8 16.5C10.1217 16.5 12.1566 15.6571 13.6569 14.1569C15.1571 12.6566 16 10.6217 16 8.5C16 6.91775 15.5308 5.37103 14.6518 4.05544C13.7727 2.73985 12.5233 1.71447 11.0615 1.10897C9.59966 0.503466 7.99113 0.34504 6.43928 0.653721C4.88743 0.962403 3.46197 1.72433 2.34315 2.84315C1.22433 3.96197 0.462403 5.38743 0.153721 6.93928C-0.15496 8.49113 0.00346625 10.0997 0.608967 11.5615C1.21447 13.0233 2.23985 14.2727 3.55544 15.1518ZM4.40546 3.1204C5.46945 2.40946 6.72036 2.03 8 2.03C9.71595 2.03 11.3616 2.71166 12.575 3.92502C13.7883 5.13838 14.47 6.78405 14.47 8.5C14.47 9.77965 14.0905 11.0306 13.3796 12.0945C12.6687 13.1585 11.6582 13.9878 10.476 14.4775C9.29373 14.9672 7.99283 15.0953 6.73777 14.8457C5.48271 14.596 4.32987 13.9798 3.42502 13.075C2.52018 12.1701 1.90397 11.0173 1.65432 9.76224C1.40468 8.50718 1.5328 7.20628 2.0225 6.02404C2.5122 4.8418 3.34148 3.83133 4.40546 3.1204Z"}),o=tl(e("path"),{d:"M6.68775 12.4297C6.78586 12.4745 6.89218 12.4984 7 12.5C7.11275 12.4955 7.22315 12.4664 7.32337 12.4145C7.4236 12.3627 7.51121 12.2894 7.58 12.2L12 5.63999C12.0848 5.47724 12.1071 5.28902 12.0625 5.11098C12.0178 4.93294 11.9095 4.77744 11.7579 4.67392C11.6064 4.57041 11.4221 4.52608 11.24 4.54931C11.0579 4.57254 10.8907 4.66173 10.77 4.79999L6.88 10.57L5.13 8.56999C5.06508 8.49566 4.98613 8.43488 4.89768 8.39111C4.80922 8.34735 4.713 8.32148 4.61453 8.31498C4.51605 8.30847 4.41727 8.32147 4.32382 8.35322C4.23038 8.38497 4.14413 8.43484 4.07 8.49999C3.92511 8.63217 3.83692 8.81523 3.82387 9.01092C3.81083 9.2066 3.87393 9.39976 4 9.54999L6.43 12.24C6.50187 12.3204 6.58964 12.385 6.68775 12.4297Z"});t.appendChild(n).append(o,r);const i=e("defs"),s=tl(e("clipPath"),{id:"clip0_57_156"}),a=tl(e("rect"),{width:"16",height:"16",fill:"white",transform:"translate(0 0.5)"});return s.appendChild(a),i.appendChild(s),t.appendChild(i).appendChild(s).appendChild(a),t}function Sd({open:e,onFormSubmitted:t,...n}){const r=n.options,o=cd(()=>({__html:_d().outerHTML}),[]),[i,s]=id(null),a=ld(()=>{i&&(clearTimeout(i),s(null)),t()},[i]),c=ld((e,r)=>{n.onSubmitSuccess(e,r),s(setTimeout(()=>{t(),s(null)},5e3))},[t]);return kl(Sl,null,i?kl("div",{class:"success__position",onClick:a},kl("div",{class:"success__content"},r.successMessageText,kl("span",{class:"success__icon",dangerouslySetInnerHTML:o}))):kl("dialog",{class:"dialog",onClick:r.onFormClose,open:e},kl("div",{class:"dialog__position"},kl("div",{class:"dialog__content",onClick:e=>{e.stopPropagation()}},kl(bd,{options:r}),kl(xd,{...n,onSubmitSuccess:c})))))}const Cd=()=>({name:"FeedbackModal",setupOnce(){},createDialog:({options:e,screenshotIntegration:t,sendFeedback:n,shadow:r})=>{const o=r,i=e.useSentryUser,s=function(){const e=Ge().getUser(),t=Je().getUser(),n=Ye().getUser();return e&&Object.keys(e).length?e:t&&Object.keys(t).length?t:n}(),a=Jc.createElement("div"),c=function(e){const t=Jc.createElement("style");return t.textContent="\n:host {\n --dialog-inset: var(--inset);\n}\n\n\n.dialog {\n position: fixed;\n z-index: var(--z-index);\n margin: 0;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n height: 100vh;\n width: 100vw;\n\n color: var(--dialog-color, var(--foreground));\n fill: var(--dialog-color, var(--foreground));\n line-height: 1.75em;\n\n background-color: rgba(0, 0, 0, 0.05);\n border: none;\n inset: 0;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n}\n\n.dialog__position {\n position: fixed;\n z-index: var(--z-index);\n inset: var(--dialog-inset);\n padding: var(--page-margin);\n display: flex;\n max-height: calc(100vh - (2 * var(--page-margin)));\n}\n@media (max-width: 600px) {\n .dialog__position {\n inset: var(--page-margin);\n padding: 0;\n }\n}\n\n.dialog__position:has(.editor) {\n inset: var(--page-margin);\n padding: 0;\n}\n\n.dialog:not([open]) {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.dialog:not([open]) .dialog__content {\n transform: translate(0, -16px) scale(0.98);\n}\n\n.dialog__content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: var(--dialog-padding, 24px);\n max-width: 100%;\n width: 100%;\n max-height: 100%;\n overflow: auto;\n\n background: var(--dialog-background, var(--background));\n border-radius: var(--dialog-border-radius, 20px);\n border: var(--dialog-border, var(--border));\n box-shadow: var(--dialog-box-shadow, var(--box-shadow));\n transform: translate(0, 0) scale(1);\n transition: transform 0.2s ease-in-out;\n}\n\n\n\n.dialog__header {\n display: flex;\n gap: 4px;\n justify-content: space-between;\n font-weight: var(--dialog-header-weight, 600);\n margin: 0;\n}\n.dialog__title {\n align-self: center;\n width: var(--form-width, 272px);\n}\n\n@media (max-width: 600px) {\n .dialog__title {\n width: auto;\n }\n}\n\n.dialog__position:has(.editor) .dialog__title {\n width: auto;\n}\n\n\n.brand-link {\n display: inline-flex;\n}\n.brand-link:focus-visible {\n outline: var(--outline);\n}\n\n\n.form {\n display: flex;\n overflow: auto;\n flex-direction: row;\n gap: 16px;\n flex: 1 0;\n}\n\n.form fieldset {\n border: none;\n margin: 0;\n padding: 0;\n}\n\n.form__right {\n flex: 0 0 auto;\n display: flex;\n overflow: auto;\n flex-direction: column;\n justify-content: space-between;\n gap: 20px;\n width: var(--form-width, 100%);\n}\n\n.dialog__position:has(.editor) .form__right {\n width: var(--form-width, 272px);\n}\n\n.form__top {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form__error-container {\n color: var(--error-color);\n fill: var(--error-color);\n}\n\n.form__label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin: 0px;\n}\n\n.form__label__text {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.form__label__text--required {\n font-size: 0.85em;\n}\n\n.form__input {\n font-family: inherit;\n line-height: inherit;\n background: transparent;\n box-sizing: border-box;\n border: var(--input-border, var(--border));\n border-radius: var(--input-border-radius, 6px);\n color: var(--input-color, inherit);\n fill: var(--input-color, inherit);\n font-size: var(--input-font-size, inherit);\n font-weight: var(--input-font-weight, 500);\n padding: 6px 12px;\n}\n\n.form__input::placeholder {\n opacity: 0.65;\n color: var(--input-placeholder-color, inherit);\n filter: var(--interactive-filter);\n}\n\n.form__input:focus-visible {\n outline: var(--input-focus-outline, var(--outline));\n}\n\n.form__input--textarea {\n font-family: inherit;\n resize: vertical;\n}\n\n.error {\n color: var(--error-color);\n fill: var(--error-color);\n}\n\n\n.btn-group {\n display: grid;\n gap: 8px;\n}\n\n.btn {\n line-height: inherit;\n border: var(--button-border, var(--border));\n border-radius: var(--button-border-radius, 6px);\n cursor: pointer;\n font-family: inherit;\n font-size: var(--button-font-size, inherit);\n font-weight: var(--button-font-weight, 600);\n padding: var(--button-padding, 6px 16px);\n}\n.btn[disabled] {\n opacity: 0.6;\n pointer-events: none;\n}\n\n.btn--primary {\n color: var(--button-primary-color, var(--accent-foreground));\n fill: var(--button-primary-color, var(--accent-foreground));\n background: var(--button-primary-background, var(--accent-background));\n border: var(--button-primary-border, var(--border));\n border-radius: var(--button-primary-border-radius, 6px);\n font-weight: var(--button-primary-font-weight, 500);\n}\n.btn--primary:hover {\n color: var(--button-primary-hover-color, var(--accent-foreground));\n fill: var(--button-primary-hover-color, var(--accent-foreground));\n background: var(--button-primary-hover-background, var(--accent-background));\n filter: var(--interactive-filter);\n}\n.btn--primary:focus-visible {\n background: var(--button-primary-hover-background, var(--accent-background));\n filter: var(--interactive-filter);\n outline: var(--button-primary-focus-outline, var(--outline));\n}\n\n.btn--default {\n color: var(--button-color, var(--foreground));\n fill: var(--button-color, var(--foreground));\n background: var(--button-background, var(--background));\n border: var(--button-border, var(--border));\n border-radius: var(--button-border-radius, 6px);\n font-weight: var(--button-font-weight, 500);\n}\n.btn--default:hover {\n color: var(--button-color, var(--foreground));\n fill: var(--button-color, var(--foreground));\n background: var(--button-hover-background, var(--background));\n filter: var(--interactive-filter);\n}\n.btn--default:focus-visible {\n background: var(--button-hover-background, var(--background));\n filter: var(--interactive-filter);\n outline: var(--button-focus-outline, var(--outline));\n}\n\n\n.success__position {\n position: fixed;\n inset: var(--dialog-inset);\n padding: var(--page-margin);\n z-index: var(--z-index);\n}\n.success__content {\n background: var(--success-background, var(--background));\n border: var(--success-border, var(--border));\n border-radius: var(--success-border-radius, 1.7em/50%);\n box-shadow: var(--success-box-shadow, var(--box-shadow));\n font-weight: var(--success-font-weight, 600);\n color: var(--success-color);\n fill: var(--success-color);\n padding: 12px 24px;\n line-height: 1.75em;\n\n display: grid;\n align-items: center;\n grid-auto-flow: column;\n gap: 6px;\n cursor: default;\n}\n\n.success__icon {\n display: flex;\n}\n\n",e&&t.setAttribute("nonce",e),t}(e.styleNonce);let l="";const d={get el(){return a},appendToDom(){o.contains(c)||o.contains(a)||(o.appendChild(c),o.appendChild(a))},removeFromDom(){a.remove(),c.remove(),Jc.body.style.overflow=l},open(){p(!0),e.onFormOpen?.(),Ze()?.emit("openFeedbackWidget"),l=Jc.body.style.overflow,Jc.body.style.overflow="hidden"},close(){p(!1),Jc.body.style.overflow=l}},u=t?.createInput({h:kl,hooks:vd,dialog:d,options:e}),p=t=>{!function(e,t){var n,r,o;dl.__&&dl.__(e,t),n=t.__k,r=[],o=[],jl(t,e=t.__k=kl(Sl,null,[e]),n||ml,ml,void 0!==t.ownerSVGElement,n?null:t.firstChild?ll.call(t.childNodes):null,r,n?n.__e:t.firstChild,!1,o),e.__d=void 0,$l(r,e,o)}(kl(Sd,{options:e,screenshotInput:u,showName:e.showName||e.isNameRequired,showEmail:e.showEmail||e.isEmailRequired,defaultName:String(i&&s?.[i.name]||""),defaultEmail:String(i&&s?.[i.email]||""),onFormClose:()=>{p(!1),e.onFormClose?.()},onSubmit:n,onSubmitSuccess:(t,n)=>{p(!1),e.onSubmitSuccess?.(t,n)},onSubmitError:t=>{e.onSubmitError?.(t)},onFormSubmitted:()=>{e.onFormSubmitted?.()},open:t}),a)};return d}});function Ed(e){const t=Jc.createElement("style"),n="#1A141F",r="#302735";return t.textContent=`\n.editor {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n}\n\n.editor__image-container {\n justify-items: center;\n padding: 15px;\n position: relative;\n height: 100%;\n border-radius: var(--menu-border-radius, 6px);\n\n background-color: ${n};\n background-image: repeating-linear-gradient(\n -145deg,\n transparent,\n transparent 8px,\n ${n} 8px,\n ${n} 11px\n ),\n repeating-linear-gradient(\n -45deg,\n transparent,\n transparent 15px,\n ${r} 15px,\n ${r} 16px\n );\n}\n\n.editor__canvas-container {\n width: 100%;\n height: 100%;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.editor__canvas-container > * {\n object-fit: contain;\n position: absolute;\n}\n\n.editor__tool-container {\n padding-top: 8px;\n display: flex;\n justify-content: center;\n}\n\n.editor__tool-bar {\n display: flex;\n gap: 8px;\n}\n\n.editor__tool {\n display: flex;\n padding: 8px 12px;\n justify-content: center;\n align-items: center;\n border: var(--button-border, var(--border));\n border-radius: var(--button-border-radius, 6px);\n background: var(--button-background, var(--background));\n color: var(--button-color, var(--foreground));\n}\n\n.editor__tool--active {\n background: var(--button-primary-background, var(--accent-background));\n color: var(--button-primary-color, var(--accent-foreground));\n}\n\n.editor__rect {\n position: absolute;\n z-index: 2;\n}\n\n.editor__rect button {\n opacity: 0;\n position: absolute;\n top: -12px;\n right: -12px;\n cursor: pointer;\n padding: 0;\n z-index: 3;\n border: none;\n background: none;\n}\n\n.editor__rect:hover button {\n opacity: 1;\n}\n`,e&&t.setAttribute("nonce",e),t}function Td({hooks:e}){return function({onBeforeScreenshot:t,onScreenshot:n,onAfterScreenshot:r,onError:o}){const i=function(){const[t,n]=e.useState(Gc.devicePixelRatio??1);return e.useEffect(()=>{const e=()=>{n(Gc.devicePixelRatio)},t=matchMedia(`(resolution: ${Gc.devicePixelRatio}dppx)`);return t.addEventListener("change",e),()=>{t.removeEventListener("change",e)}},[]),t}();e.useEffect(()=>{(async()=>{t();const e=await Yc.mediaDevices.getDisplayMedia({video:{width:Gc.innerWidth*i,height:Gc.innerHeight*i},audio:!1,monitorTypeSurfaces:"exclude",preferCurrentTab:!0,selfBrowserSurface:"include",surfaceSwitching:"exclude"}),o=Jc.createElement("video");await new Promise((t,r)=>{o.srcObject=e,o.onloadedmetadata=()=>{n(o,i),e.getTracks().forEach(e=>e.stop()),t()},o.play().catch(r)}),r()})().catch(o)},[])}}function Md(e,t,n){if(!e)return;const r=e.getContext("2d",t);r&&n(e,r)}function Id(e,t){Md(e,{alpha:!0},(e,n)=>{n.drawImage(t,0,0,t.width,t.height,0,0,e.width,e.height)})}function Ad(e,t,n){Md(e,{alpha:!0},(e,r)=>{n.length&&(r.fillStyle="rgba(0, 0, 0, 0.25)",r.fillRect(0,0,e.width,e.height)),n.forEach(e=>{!function(e,t,n){switch(e.type){case"highlight":t.shadowColor="rgba(0, 0, 0, 0.7)",t.shadowBlur=50,t.fillStyle=n,t.fillRect(e.x-1,e.y-1,e.w+2,e.h+2),t.clearRect(e.x,e.y,e.w,e.h);break;case"hide":t.fillStyle="rgb(0, 0, 0)",t.fillRect(e.x,e.y,e.w,e.h)}}(e,r,t)})})}function Rd({h:e,hooks:t,outputBuffer:n,dialog:r,options:o}){const i=Td({hooks:t}),s=function({h:e}){return function({action:t,setAction:n,options:r}){return e("div",{class:"editor__tool-container"},e("div",{class:"editor__tool-bar"},e("button",{type:"button",class:"editor__tool "+("highlight"===t?"editor__tool--active":""),onClick:()=>{n("highlight"===t?"":"highlight")}},r.highlightToolText),e("button",{type:"button",class:"editor__tool "+("hide"===t?"editor__tool--active":""),onClick:()=>{n("hide"===t?"":"hide")}},r.hideToolText)))}}({h:e}),a=function({h:e}){return function(){return e("svg",{"data-test-id":"icon-close",viewBox:"0 0 16 16",fill:"#2B2233",height:"25px",width:"25px"},e("circle",{r:"7",cx:"8",cy:"8",fill:"white"}),e("path",{strokeWidth:"1.5",d:"M8,16a8,8,0,1,1,8-8A8,8,0,0,1,8,16ZM8,1.53A6.47,6.47,0,1,0,14.47,8,6.47,6.47,0,0,0,8,1.53Z"}),e("path",{strokeWidth:"1.5",d:"M5.34,11.41a.71.71,0,0,1-.53-.22.74.74,0,0,1,0-1.06l5.32-5.32a.75.75,0,0,1,1.06,1.06L5.87,11.19A.74.74,0,0,1,5.34,11.41Z"}),e("path",{strokeWidth:"1.5",d:"M10.66,11.41a.74.74,0,0,1-.53-.22L4.81,5.87A.75.75,0,0,1,5.87,4.81l5.32,5.32a.74.74,0,0,1,0,1.06A.71.71,0,0,1,10.66,11.41Z"}))}}({h:e}),c={__html:Ed(o.styleNonce).innerText},l=r.el.style,d=({screenshot:r})=>{const[i,l]=t.useState("highlight"),[d,u]=t.useState([]),p=t.useRef(null),h=t.useRef(null),f=t.useRef(null),g=t.useRef(null),[m,v]=t.useState(1),y=t.useMemo(()=>{const e=Jc.getElementById(o.id);if(!e)return"white";const t=getComputedStyle(e);return t.getPropertyValue("--button-primary-background")||t.getPropertyValue("--accent-background")},[o.id]);t.useLayoutEffect(()=>{const e=()=>{const t=p.current;t&&(Md(r.canvas,{alpha:!1},e=>{const n=Math.min(t.clientWidth/e.width,t.clientHeight/e.height);v(n)}),0!==t.clientHeight&&0!==t.clientWidth||setTimeout(e,0))};return e(),Gc.addEventListener("resize",e),()=>{Gc.removeEventListener("resize",e)}},[r]);const b=t.useCallback((e,t)=>{Md(e,{alpha:!0},(e,n)=>{n.scale(t,t),e.width=r.canvas.width,e.height=r.canvas.height})},[r]);t.useEffect(()=>{b(h.current,r.dpi),Id(h.current,r.canvas)},[r]),t.useEffect(()=>{b(f.current,r.dpi),Md(f.current,{alpha:!0},(e,t)=>{t.clearRect(0,0,e.width,e.height)}),Ad(f.current,y,d)},[d,y]),t.useEffect(()=>{b(n,r.dpi),Id(n,r.canvas),Md(Jc.createElement("canvas"),{alpha:!0},(e,t)=>{t.scale(r.dpi,r.dpi),e.width=r.canvas.width,e.height=r.canvas.height,Ad(e,y,d),Id(n,e)})},[d,r,y]);const w=t.useCallback(e=>t=>{t.preventDefault(),t.stopPropagation(),u(t=>{const n=[...t];return n.splice(e,1),n})},[]),x={width:r.canvas.width*m+"px",height:r.canvas.height*m+"px"},k=e=>{e.stopPropagation()};return e("div",{class:"editor"},e("style",{nonce:o.styleNonce,dangerouslySetInnerHTML:c}),e("div",{class:"editor__image-container"},e("div",{class:"editor__canvas-container",ref:p},e("canvas",{ref:h,id:"background",style:x}),e("canvas",{ref:f,id:"foreground",style:x}),e("div",{ref:g,onMouseDown:e=>{if(!i||!g.current)return;const t=g.current.getBoundingClientRect(),n={type:i,x:e.offsetX/m,y:e.offsetY/m},r=(e,n)=>{const r=(n.clientX-t.x)/m,o=(n.clientY-t.y)/m;return{type:e.type,x:Math.min(e.x,r),y:Math.min(e.y,o),w:Math.abs(r-e.x),h:Math.abs(o-e.y)}},o=e=>{Md(f.current,{alpha:!0},(e,t)=>{t.clearRect(0,0,e.width,e.height)}),Ad(f.current,y,[...d,r(n,e)])},s=e=>{const t=r(n,e);t.w*m>=1&&t.h*m>=1&&u(e=>[...e,t]),Jc.removeEventListener("mousemove",o),Jc.removeEventListener("mouseup",s)};Jc.addEventListener("mousemove",o),Jc.addEventListener("mouseup",s)},style:x},d.map((t,n)=>e("div",{key:n,class:"editor__rect",style:{top:t.y*m+"px",left:t.x*m+"px",width:t.w*m+"px",height:t.h*m+"px"}},e("button",{"aria-label":o.removeHighlightText,onClick:w(n),onMouseDown:k,onMouseUp:k,type:"button"},e(a,null))))))),e(s,{options:o,action:i,setAction:l}))};return function({onError:r}){const[o,s]=t.useState();return i({onBeforeScreenshot:t.useCallback(()=>{l.display="none"},[]),onScreenshot:t.useCallback((e,t)=>{Md(Jc.createElement("canvas"),{alpha:!1},(n,r)=>{r.scale(t,t),n.width=e.videoWidth,n.height=e.videoHeight,r.drawImage(e,0,0,n.width,n.height),s({canvas:n,dpi:t})}),n.width=e.videoWidth,n.height=e.videoHeight},[]),onAfterScreenshot:t.useCallback(()=>{l.display="block"},[]),onError:t.useCallback(e=>{l.display="block",r(e)},[])}),o?e(d,{screenshot:o}):e("div",null)}}const Ld=()=>({name:"FeedbackScreenshot",setupOnce(){},createInput:({h:e,hooks:t,dialog:n,options:r})=>{const o=Jc.createElement("canvas");return{input:Rd({h:e,hooks:t,outputBuffer:o,dialog:n,options:r}),value:async()=>{const e=await new Promise(e=>{o.toBlob(e,"image/png")});if(e){return{data:new Uint8Array(await e.arrayBuffer()),filename:"screenshot.png",contentType:"application/png"}}}}}}),Pd=a;let Od=0;function Dd(){return Od>0}function Nd(e,t={}){if(!function(e){return"function"==typeof e}(e))return e;try{const t=e.__sentry_wrapped__;if(t)return"function"==typeof t?t:e;if(ae(e))return e}catch{return e}const n=function(...n){try{const r=n.map(e=>Nd(e,t));return e.apply(this,r)}catch(e){throw Od++,setTimeout(()=>{Od--}),Xe(r=>{r.addEventProcessor(e=>(t.mechanism&&(Ce(e,void 0,void 0),Ee(e,t.mechanism)),e.extra={...e.extra,arguments:n},e)),wr(e)}),e}};try{for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t])}catch{}se(n,e),ie(e,"__sentry_wrapped__",n);try{Object.getOwnPropertyDescriptor(n,"name").configurable&&Object.defineProperty(n,"name",{get:()=>e.name})}catch{}return n}function Bd(){const e=ne(),{referrer:t}=Pd.document||{},{userAgent:n}=Pd.navigator||{};return{url:e,headers:{...t&&{Referer:t},...n&&{"User-Agent":n}}}}const jd={replayIntegration:"replay",replayCanvasIntegration:"replay-canvas",feedbackIntegration:"feedback",feedbackModalIntegration:"feedback-modal",feedbackScreenshotIntegration:"feedback-screenshot",captureConsoleIntegration:"captureconsole",contextLinesIntegration:"contextlines",linkedErrorsIntegration:"linkederrors",dedupeIntegration:"dedupe",extraErrorDataIntegration:"extraerrordata",graphqlClientIntegration:"graphqlclient",httpClientIntegration:"httpclient",reportingObserverIntegration:"reportingobserver",rewriteFramesIntegration:"rewriteframes",browserProfilingIntegration:"browserprofiling",moduleMetadataIntegration:"modulemetadata",instrumentAnthropicAiClient:"instrumentanthropicaiclient",instrumentOpenAiClient:"instrumentopenaiclient",instrumentGoogleGenAIClient:"instrumentgooglegenaiclient",instrumentLangGraph:"instrumentlanggraph",createLangChainCallbackHandler:"createlangchaincallbackhandler"},$d=Pd;async function zd(e,t){const n=jd[e],r=$d.Sentry=$d.Sentry||{};if(!n)throw new Error(`Cannot lazy load integration: ${e}`);const o=r[e];if("function"==typeof o&&!("_isShim"in o))return o;const i=function(e){const t=Ze(),n=t?.getOptions()?.cdnBaseUrl||"https://browser.sentry-cdn.com";return new URL(`/${c}/${e}.min.js`,n).toString()}(n),s=Pd.document.createElement("script");s.src=i,s.crossOrigin="anonymous",s.referrerPolicy="strict-origin",t&&s.setAttribute("nonce",t);const a=new Promise((e,t)=>{s.addEventListener("load",()=>e()),s.addEventListener("error",t)}),l=Pd.document.currentScript,d=Pd.document.body||Pd.document.head||l?.parentElement;if(!d)throw new Error(`Could not find parent element to insert lazy-loaded ${e} script`);d.appendChild(s);try{await a}catch{throw new Error(`Error when loading integration: ${e}`)}const u=r[e];if("function"!=typeof u)throw new Error(`Could not load integration: ${e}`);return u}const Fd=al({lazyLoadIntegration:zd}),Hd=al({getModalIntegration:()=>Cd,getScreenshotIntegration:()=>Ld});function qd(e,t){const n=Vd(e,t),r={type:Jd(t),value:Yd(t)};return n.length&&(r.stacktrace={frames:n}),void 0===r.type&&""===r.value&&(r.value="Unrecoverable error caught"),r}function Ud(e,t,n,r){const o=Ze(),i=o?.getOptions().normalizeDepth,s=function(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const n=e[t];if(n instanceof Error)return n}return}(t),a={__serialized__:wn(t,i)};if(s)return{exception:{values:[qd(e,s)]},extra:a};const c={exception:{values:[{type:G(t)?t.constructor.name:r?"UnhandledRejection":"Error",value:tu(t,{isUnhandledRejection:r})}]},extra:a};if(n){const t=Vd(e,n);t.length&&(c.exception.values[0].stacktrace={frames:t})}return c}function Wd(e,t){return{exception:{values:[qd(e,t)]}}}function Vd(e,t){const n=t.stacktrace||t.stack||"",r=function(e){if(e&&Kd.test(e.message))return 1;return 0}(t),o=function(e){if("number"==typeof e.framesToPop)return e.framesToPop;return 0}(t);try{return e(n,r,o)}catch{}return[]}const Kd=/Minified React error #\d+;/i;function Gd(e){return"undefined"!=typeof WebAssembly&&void 0!==WebAssembly.Exception&&e instanceof WebAssembly.Exception}function Jd(e){const t=e?.name;if(!t&&Gd(e)){return e.message&&Array.isArray(e.message)&&2==e.message.length?e.message[0]:"WebAssembly.Exception"}return t}function Yd(e){const t=e?.message;return Gd(e)?Array.isArray(e.message)&&2==e.message.length?e.message[1]:"wasm exception":t?t.error&&"string"==typeof t.error.message?Po(t.error):Po(e):"No error message"}function Xd(e,t,n,r){const o=Zd(e,t,n?.syntheticException||void 0,r);return Ee(o),o.level="error",n?.event_id&&(o.event_id=n.event_id),rr(o)}function Qd(e,t,n="info",r,o){const i=eu(e,t,r?.syntheticException||void 0,o);return i.level=n,r?.event_id&&(i.event_id=r.event_id),rr(i)}function Zd(e,t,n,r,o){let i;if(H(t)&&t.error){return Wd(e,t.error)}if(q(t)||F(t,"DOMException")){const o=t;if("stack"in t)i=Wd(e,t);else{const t=o.name||(q(o)?"DOMError":"DOMException"),s=o.message?`${t}: ${o.message}`:t;i=eu(e,s,n,r),Ce(i,s)}return"code"in o&&(i.tags={...i.tags,"DOMException.code":`${o.code}`}),i}if(z(t))return Wd(e,t);if(K(t)||G(t)){return i=Ud(e,t,n,o),Ee(i,{synthetic:!0}),i}return i=eu(e,t,n,r),Ce(i,`${t}`,void 0),Ee(i,{synthetic:!0}),i}function eu(e,t,n,r){const o={};if(r&&n){const r=Vd(e,n);r.length&&(o.exception={values:[{value:t,stacktrace:{frames:r}}]}),Ee(o,{synthetic:!0})}if(W(t)){const{__sentry_template_string__:e,__sentry_template_values__:n}=t;return o.logentry={message:e,params:n},o}return o.message=t,o}function tu(e,{isUnhandledRejection:t}){const n=ue(e),r=t?"promise rejection":"exception";if(H(e))return`Event \`ErrorEvent\` captured as ${r} with message \`${e.message}\``;if(G(e)){return`Event \`${function(e){try{const t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch{}}(e)}\` (type=${e.type}) captured as ${r}`}return`Object captured as ${r} with keys: ${n}`}class nu extends Co{constructor(e){const t=(n=e,{release:"string"==typeof __SENTRY_RELEASE__?__SENTRY_RELEASE__:Pd.SENTRY_RELEASE?.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...n});var n;!function(e,t,n=[t],r="npm"){const o=e._metadata||{};o.sdk||(o.sdk={name:`sentry.javascript.${t}`,packages:n.map(e=>({name:`${r}:@sentry/${e}`,version:c})),version:c}),e._metadata=o}(t,"browser",["browser"],Pd.SENTRY_SDK_SOURCE||"npm"),t._metadata?.sdk&&(t._metadata.sdk.settings={infer_ip:t.sendDefaultPii?"auto":"never",...t._metadata.sdk.settings}),super(t);const{sendDefaultPii:r,sendClientReports:o,enableLogs:i,_experiments:s,enableMetrics:a}=this._options,l=a??s?.enableMetrics??!0;Pd.document&&(o||i||l)&&Pd.document.addEventListener("visibilitychange",()=>{"hidden"===Pd.document.visibilityState&&(o&&this._flushOutcomes(),i&&Zr(this),l&&io(this))}),r&&this.on("beforeSendSession",Jo)}eventFromException(e,t){return Xd(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t="info",n){return Qd(this._options.stackParser,e,t,n,this._options.attachStacktrace)}_prepareEvent(e,t,n,r){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,n,r)}}const ru="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__,ou=a,iu=(e,t,n,r)=>{let o,i;return s=>{t.value>=0&&(s||r)&&(i=t.value-(o??0),(i||void 0===o)&&(o=t.value,t.delta=i,t.rating=((e,t)=>e>t[1]?"poor":e>t[0]?"needs-improvement":"good")(t.value,n),e(t)))}},su=(e=!0)=>{const t=ou.performance?.getEntriesByType?.("navigation")[0];if(!e||t&&t.responseStart>0&&t.responseStart<performance.now())return t},au=()=>{const e=su();return e?.activationStart??0};function cu(e,t,n){ou.document&&ou.addEventListener(e,t,n)}function lu(e,t,n){ou.document&&ou.removeEventListener(e,t,n)}let du=-1;const uu=new Set,pu=e=>{if(function(e){return"pagehide"===e.type||"hidden"===ou.document?.visibilityState}(e)&&du>-1){if("visibilitychange"===e.type||"pagehide"===e.type)for(const e of uu)e();isFinite(du)||(du="visibilitychange"===e.type?e.timeStamp:0,lu("prerenderingchange",pu,!0))}},hu=()=>{if(ou.document&&du<0){const e=au(),t=ou.document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(t=>"hidden"===t.name&&t.startTime>e)[0]?.startTime;du=t??("hidden"!==ou.document?.visibilityState||ou.document?.prerendering?1/0:0),cu("visibilitychange",pu,!0),cu("pagehide",pu,!0),cu("prerenderingchange",pu,!0)}return{get firstHiddenTime(){return du},onHidden(e){uu.add(e)}}};const fu=(e,t=-1)=>{const n=su();let r="navigate";n&&(ou.document?.prerendering||au()>0?r="prerender":ou.document?.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-")));return{name:e,value:t,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},gu=new WeakMap;function mu(e,t){try{return gu.get(e)||gu.set(e,new t),gu.get(e)}catch(e){return new t}}class vu{constructor(){vu.prototype.__init.call(this),vu.prototype.__init2.call(this)}__init(){this._sessionValue=0}__init2(){this._sessionEntries=[]}_processEntry(e){if(e.hadRecentInput)return;const t=this._sessionEntries[0],n=this._sessionEntries[this._sessionEntries.length-1];this._sessionValue&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this._sessionValue+=e.value,this._sessionEntries.push(e)):(this._sessionValue=e.value,this._sessionEntries=[e]),this._onAfterProcessingUnexpectedShift?.(e)}}const yu=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const r=new PerformanceObserver(e=>{Promise.resolve().then(()=>{t(e.getEntries())})});return r.observe({type:e,buffered:!0,...n}),r}}catch{}},bu=e=>{let t=!1;return()=>{t||(e(),t=!0)}},wu=e=>{ou.document?.prerendering?addEventListener("prerenderingchange",()=>e(),!0):e()},xu=[1800,3e3],ku=[.1,.25],_u=(e,t={})=>{((e,t={})=>{wu(()=>{const n=hu(),r=fu("FCP");let o;const i=yu("paint",e=>{for(const t of e)"first-contentful-paint"===t.name&&(i.disconnect(),t.startTime<n.firstHiddenTime&&(r.value=Math.max(t.startTime-au(),0),r.entries.push(t),o(!0)))});i&&(o=iu(e,r,xu,t.reportAllChanges))})})(bu(()=>{const n=fu("CLS",0);let r;const o=hu(),i=mu(t,vu),s=e=>{for(const t of e)i._processEntry(t);i._sessionValue>n.value&&(n.value=i._sessionValue,n.entries=i._sessionEntries,r())},a=yu("layout-shift",s);a&&(r=iu(e,n,ku,t.reportAllChanges),o.onHidden(()=>{s(a.takeRecords()),r(!0)}),ou?.setTimeout?.(r))}))};let Su=0,Cu=1/0,Eu=0;const Tu=e=>{e.forEach(e=>{e.interactionId&&(Cu=Math.min(Cu,e.interactionId),Eu=Math.max(Eu,e.interactionId),Su=Eu?(Eu-Cu)/7+1:0)})};let Mu;const Iu=()=>Mu?Su:performance.interactionCount||0,Au=()=>{"interactionCount"in performance||Mu||(Mu=yu("event",Tu,{type:"event",buffered:!0,durationThreshold:0}))};let Ru=0;class Lu{constructor(){Lu.prototype.__init.call(this),Lu.prototype.__init2.call(this)}__init(){this._longestInteractionList=[]}__init2(){this._longestInteractionMap=new Map}_resetInteractions(){Ru=Iu(),this._longestInteractionList.length=0,this._longestInteractionMap.clear()}_estimateP98LongestInteraction(){const e=Math.min(this._longestInteractionList.length-1,Math.floor((Iu()-Ru)/50));return this._longestInteractionList[e]}_processEntry(e){if(this._onBeforeProcessingEntry?.(e),!e.interactionId&&"first-input"!==e.entryType)return;const t=this._longestInteractionList.at(-1);let n=this._longestInteractionMap.get(e.interactionId);if(n||this._longestInteractionList.length<10||e.duration>t._latency){if(n?e.duration>n._latency?(n.entries=[e],n._latency=e.duration):e.duration===n._latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],_latency:e.duration},this._longestInteractionMap.set(n.id,n),this._longestInteractionList.push(n)),this._longestInteractionList.sort((e,t)=>t._latency-e._latency),this._longestInteractionList.length>10){const e=this._longestInteractionList.splice(10);for(const t of e)this._longestInteractionMap.delete(t.id)}this._onAfterProcessingINPCandidate?.(n)}}}const Pu=e=>{const t=ou.requestIdleCallback||ou.setTimeout;"hidden"===ou.document?.visibilityState?e():(cu("visibilitychange",e=bu(e),{once:!0,capture:!0}),cu("pagehide",e,{once:!0,capture:!0}),t(()=>{e(),lu("visibilitychange",e,{capture:!0}),lu("pagehide",e,{capture:!0})}))},Ou=[200,500];class Du{_processEntry(e){this._onBeforeProcessingEntry?.(e)}}const Nu=[2500,4e3],Bu=[800,1800],ju=e=>{ou.document?.prerendering?wu(()=>ju(e)):"complete"!==ou.document?.readyState?addEventListener("load",()=>ju(e),!0):setTimeout(e)},$u={},zu={};let Fu,Hu,qu,Uu;function Wu(e,t=!1){return ep("cls",e,Yu,Fu,t)}function Vu(e,t=!1){return ep("lcp",e,Xu,Hu,t)}function Ku(e){return ep("inp",e,Zu,Uu)}function Gu(e,t){return tp(e,t),zu[e]||(!function(e){const t={};"event"===e&&(t.durationThreshold=0);yu(e,t=>{Ju(e,{entries:t})},t)}(e),zu[e]=!0),np(e,t)}function Ju(e,t){const n=$u[e];if(n?.length)for(const r of n)try{r(t)}catch(t){ru&&y.error(`Error while triggering instrumentation handler.\nType: ${e}\nName: ${C(r)}\nError:`,t)}}function Yu(){return _u(e=>{Ju("cls",{metric:e}),Fu=e},{reportAllChanges:!0})}function Xu(){return((e,t={})=>{wu(()=>{const n=hu(),r=fu("LCP");let o;const i=mu(t,Du),s=e=>{t.reportAllChanges||(e=e.slice(-1));for(const t of e)i._processEntry(t),t.startTime<n.firstHiddenTime&&(r.value=Math.max(t.startTime-au(),0),r.entries=[t],o())},a=yu("largest-contentful-paint",s);if(a){o=iu(e,r,Nu,t.reportAllChanges);const n=bu(()=>{s(a.takeRecords()),a.disconnect(),o(!0)}),i=e=>{e.isTrusted&&(Pu(n),lu(e.type,i,{capture:!0}))};for(const e of["keydown","click","visibilitychange"])cu(e,i,{capture:!0})}})})(e=>{Ju("lcp",{metric:e}),Hu=e},{reportAllChanges:!0})}function Qu(){return((e,t={})=>{const n=fu("TTFB"),r=iu(e,n,Bu,t.reportAllChanges);ju(()=>{const e=su();e&&(n.value=Math.max(e.responseStart-au(),0),n.entries=[e],r(!0))})})(e=>{Ju("ttfb",{metric:e}),qu=e})}function Zu(){return((e,t={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;const n=hu();wu(()=>{Au();const r=fu("INP");let o;const i=mu(t,Lu),s=e=>{Pu(()=>{for(const t of e)i._processEntry(t);const t=i._estimateP98LongestInteraction();t&&t._latency!==r.value&&(r.value=t._latency,r.entries=t.entries,o())})},a=yu("event",s,{durationThreshold:t.durationThreshold??40});o=iu(e,r,Ou,t.reportAllChanges),a&&(a.observe({type:"first-input",buffered:!0}),n.onHidden(()=>{s(a.takeRecords()),o(!0)}))})})(e=>{Ju("inp",{metric:e}),Uu=e})}function ep(e,t,n,r,o=!1){let i;return tp(e,t),zu[e]||(i=n(),zu[e]=!0),r&&t({metric:r}),np(e,t,o?i:void 0)}function tp(e,t){$u[e]=$u[e]||[],$u[e].push(t)}function np(e,t,n){return()=>{n&&n();const r=$u[e];if(!r)return;const o=r.indexOf(t);-1!==o&&r.splice(o,1)}}function rp(e){return"number"==typeof e&&isFinite(e)}function op(e,t,n,{...r}){const o=Vt(e).start_timestamp;return o&&o>t&&"function"==typeof e.updateStartTime&&e.updateStartTime(t),Vn(e,()=>{const e=Un({startTime:t,...r});return e&&e.end(n),e})}function ip(e){const t=Ze();if(!t)return;const{name:n,transaction:r,attributes:o,startTime:i}=e,{release:s,environment:a,sendDefaultPii:c}=t.getOptions(),l=t.getIntegrationByName("Replay"),d=l?.getReplayId(),u=Ge(),p=u.getUser(),h=void 0!==p?p.email||p.id||p.ip_address:void 0;let f;try{f=u.getScopeData().contexts.profile.profile_id}catch{}return Un({name:n,attributes:{release:s,environment:a,user:h||void 0,profile_id:f||void 0,replay_id:d||void 0,transaction:r,"user_agent.original":ou.navigator?.userAgent,"client.address":c?"{{auto}}":void 0,...o},startTime:i,experimental:{standalone:!0}})}function sp(){return ou.addEventListener&&ou.performance}function ap(e){return e/1e3}function cp(e){try{return PerformanceObserver.supportedEntryTypes.includes(e)}catch{return!1}}function lp(e,t){let n,r=!1;function o(e){!r&&n&&t(e,n),r=!0}(e=>{const t=t=>{"pagehide"!==t.type&&"hidden"!==ou.document?.visibilityState||e(t)};cu("visibilitychange",t,{capture:!0,once:!0}),cu("pagehide",t,{capture:!0,once:!0})})(()=>{o("pagehide")});const i=e.on("beforeStartNavigationSpan",(e,t)=>{t?.isRedirect||(o("navigation"),i(),s())}),s=e.on("afterStartPageLoadSpan",e=>{n=e.spanContext().spanId,s()})}function dp(e){let t,n=0;if(!cp("layout-shift"))return;const r=Wu(({metric:e})=>{const r=e.entries[e.entries.length-1];r&&(n=e.value,t=r)},!0);lp(e,(e,o)=>{!function(e,t,n,r){ru&&y.log(`Sending CLS span (${e})`);const o=t?ap((Le()||0)+t.startTime):Ae(),i=Ge().getScopeData().transactionName,s=t?ee(t.sources[0]?.node):"Layout shift",a={[it]:"auto.http.browser.cls",[ot]:"ui.webvital.cls",[ut]:0,"sentry.pageload.span_id":n,"sentry.report_event":r};t?.sources&&t.sources.forEach((e,t)=>{a[`cls.source.${t+1}`]=ee(e.node)});const c=ip({name:s,transaction:i,attributes:a,startTime:o});c&&(c.addEvent("cls",{[at]:"",[ct]:e}),c.end(o))}(n,t,o,e),r()})}function up(e){let t,n=0;if(!cp("largest-contentful-paint"))return;const r=Vu(({metric:e})=>{const r=e.entries[e.entries.length-1];r&&(n=e.value,t=r)},!0);lp(e,(e,o)=>{!function(e,t,n,r){ru&&y.log(`Sending LCP span (${e})`);const o=ap((Le()||0)+(t?.startTime||0)),i=Ge().getScopeData().transactionName,s=t?ee(t.element):"Largest contentful paint",a={[it]:"auto.http.browser.lcp",[ot]:"ui.webvital.lcp",[ut]:0,"sentry.pageload.span_id":n,"sentry.report_event":r};t&&(t.element&&(a["lcp.element"]=ee(t.element)),t.id&&(a["lcp.id"]=t.id),t.url&&(a["lcp.url"]=t.url),null!=t.loadTime&&(a["lcp.loadTime"]=t.loadTime),null!=t.renderTime&&(a["lcp.renderTime"]=t.renderTime),null!=t.size&&(a["lcp.size"]=t.size));const c=ip({name:s,transaction:i,attributes:a,startTime:o});c&&(c.addEvent("lcp",{[at]:"millisecond",[ct]:e}),c.end(o))}(n,t,o,e),r()})}function pp(e){return e?((Le()||performance.timeOrigin)+e)/1e3:e}function hp(e){const t={};if(null!=e.nextHopProtocol){const{name:n,version:r}=function(e){let t="unknown",n="unknown",r="";for(const o of e){if("/"===o){[t,n]=e.split("/");break}if(!isNaN(Number(o))){t="h"===r?"http":r,n=e.split(r)[1];break}r+=o}return r===e&&(t=r),{name:t,version:n}}(e.nextHopProtocol);t["network.protocol.version"]=r,t["network.protocol.name"]=n}return Le()||sp()?.timeOrigin?(n={...t,"http.request.redirect_start":pp(e.redirectStart),"http.request.redirect_end":pp(e.redirectEnd),"http.request.worker_start":pp(e.workerStart),"http.request.fetch_start":pp(e.fetchStart),"http.request.domain_lookup_start":pp(e.domainLookupStart),"http.request.domain_lookup_end":pp(e.domainLookupEnd),"http.request.connect_start":pp(e.connectStart),"http.request.secure_connection_start":pp(e.secureConnectionStart),"http.request.connection_end":pp(e.connectEnd),"http.request.request_start":pp(e.requestStart),"http.request.response_start":pp(e.responseStart),"http.request.response_end":pp(e.responseEnd),"http.request.time_to_first_byte":null!=e.responseStart?e.responseStart/1e3:void 0},Object.fromEntries(Object.entries(n).filter(([,e])=>null!=e))):t;var n}const fp=2147483647;let gp,mp,vp=0,yp={};function bp({recordClsStandaloneSpans:e,recordLcpStandaloneSpans:t,client:n}){const r=sp();if(r&&Le()){r.mark&&ou.performance.mark("sentry-tracing-init");const o=t?up(n):Vu(({metric:e})=>{const t=e.entries[e.entries.length-1];t&&(yp.lcp={value:e.value,unit:"millisecond"},gp=t)},!0),i=ep("ttfb",({metric:e})=>{e.entries[e.entries.length-1]&&(yp.ttfb={value:e.value,unit:"millisecond"})},Qu,qu),s=e?dp(n):Wu(({metric:e})=>{const t=e.entries[e.entries.length-1];t&&(yp.cls={value:e.value,unit:""},mp=t)},!0);return()=>{o?.(),i(),s?.()}}return()=>{}}function wp(e,t){const n=sp(),r=Le();if(!n?.getEntries||!r)return;const o=ap(r),i=n.getEntries(),{op:s,start_timestamp:a}=Vt(e);i.slice(vp).forEach(n=>{const r=ap(n.startTime),i=ap(Math.max(0,n.duration));if(!("navigation"===s&&a&&o+r<a))switch(n.entryType){case"navigation":!function(e,t,n){["unloadEvent","redirect","domContentLoadedEvent","loadEvent","connect"].forEach(r=>{xp(e,t,r,n)}),xp(e,t,"secureConnection",n,"TLS/SSL"),xp(e,t,"fetch",n,"cache"),xp(e,t,"domainLookup",n,"DNS"),function(e,t,n){const r=n+ap(t.requestStart),o=n+ap(t.responseEnd),i=n+ap(t.responseStart);t.responseEnd&&(op(e,r,o,{op:"browser.request",name:t.name,attributes:{[it]:"auto.ui.browser.metrics"}}),op(e,i,o,{op:"browser.response",name:t.name,attributes:{[it]:"auto.ui.browser.metrics"}}))}(e,t,n)}(e,n,o);break;case"mark":case"paint":case"measure":{!function(e,t,n,r,o,i){if(function(e){if("measure"!==e?.entryType)return;try{return"Components ⚛"===e.detail.devtools.track}catch{return}}(t))return;if(["mark","measure"].includes(t.entryType)&&xe(t.name,i))return;const s=su(!1),a=ap(s?s.requestStart:0),c=o+Math.max(n,a),l=o+n,d=l+r,u={[it]:"auto.resource.browser.metrics"};c!==l&&(u["sentry.browser.measure_happened_before_request"]=!0,u["sentry.browser.measure_start_time"]=c);(function(e,t){try{const n=t.detail;if(!n)return;if("object"==typeof n){for(const[t,r]of Object.entries(n))if(r&&V(r))e[`sentry.browser.measure.detail.${t}`]=r;else if(void 0!==r)try{e[`sentry.browser.measure.detail.${t}`]=JSON.stringify(r)}catch{}return}if(V(n))return void(e["sentry.browser.measure.detail"]=n);try{e["sentry.browser.measure.detail"]=JSON.stringify(n)}catch{}}catch{}})(u,t),c<=d&&op(e,c,d,{name:t.name,op:t.entryType,attributes:u})}(e,n,r,i,o,t.ignorePerformanceApiSpans);const s=hu(),a=n.startTime<s.firstHiddenTime;"first-paint"===n.name&&a&&(yp.fp={value:n.startTime,unit:"millisecond"}),"first-contentful-paint"===n.name&&a&&(yp.fcp={value:n.startTime,unit:"millisecond"});break}case"resource":!function(e,t,n,r,o,i,s){if("xmlhttprequest"===t.initiatorType||"fetch"===t.initiatorType)return;const a=t.initiatorType?`resource.${t.initiatorType}`:"resource.other";if(s?.includes(a))return;const c={[it]:"auto.resource.browser.metrics"},l=qo(n);l.protocol&&(c["url.scheme"]=l.protocol.split(":").pop());l.host&&(c["server.address"]=l.host);c["url.same_origin"]=n.includes(ou.location.origin),function(e,t,n){n.forEach(([n,r])=>{const o=e[n];null!=o&&("number"==typeof o&&o<fp||"string"==typeof o)&&(t[r]=o)})}(t,c,[["responseStatus","http.response.status_code"],["transferSize","http.response_transfer_size"],["encodedBodySize","http.response_content_length"],["decodedBodySize","http.decoded_response_content_length"],["renderBlockingStatus","resource.render_blocking_status"],["deliveryType","http.response_delivery_type"]]);const d={...c,...hp(t)},u=i+r,p=u+o;op(e,u,p,{name:n.replace(ou.location.origin,""),op:a,attributes:d})}(e,n,n.name,r,i,o,t.ignoreResourceSpans)}}),vp=Math.max(i.length-1,0),function(e){const t=ou.navigator;if(!t)return;const n=t.connection;n&&(n.effectiveType&&e.setAttribute("effectiveConnectionType",n.effectiveType),n.type&&e.setAttribute("connectionType",n.type),rp(n.rtt)&&(yp["connection.rtt"]={value:n.rtt,unit:"millisecond"}));rp(t.deviceMemory)&&e.setAttribute("deviceMemory",`${t.deviceMemory} GB`);rp(t.hardwareConcurrency)&&e.setAttribute("hardwareConcurrency",String(t.hardwareConcurrency))}(e),"pageload"===s&&(function(e){const t=su(!1);if(!t)return;const{responseStart:n,requestStart:r}=t;r<=n&&(e["ttfb.requestTime"]={value:n-r,unit:"millisecond"})}(yp),t.recordClsOnPageloadSpan||delete yp.cls,t.recordLcpOnPageloadSpan||delete yp.lcp,Object.entries(yp).forEach(([e,t])=>{Dn(e,t.value,t.unit)}),e.setAttribute("performance.timeOrigin",o),e.setAttribute("performance.activationStart",au()),function(e,t){gp&&t.recordLcpOnPageloadSpan&&(gp.element&&e.setAttribute("lcp.element",ee(gp.element)),gp.id&&e.setAttribute("lcp.id",gp.id),gp.url&&e.setAttribute("lcp.url",gp.url.trim().slice(0,200)),null!=gp.loadTime&&e.setAttribute("lcp.loadTime",gp.loadTime),null!=gp.renderTime&&e.setAttribute("lcp.renderTime",gp.renderTime),e.setAttribute("lcp.size",gp.size));mp?.sources&&t.recordClsOnPageloadSpan&&mp.sources.forEach((t,n)=>e.setAttribute(`cls.source.${n+1}`,ee(t.node)))}(e,t)),gp=void 0,mp=void 0,yp={}}function xp(e,t,n,r,o=n){const i=function(e){if("secureConnection"===e)return"connectEnd";if("fetch"===e)return"domainLookupStart";return`${e}End`}(n),s=t[i],a=t[`${n}Start`];a&&s&&op(e,r+ap(a),r+ap(s),{op:`browser.${o}`,name:t.name,attributes:{[it]:"auto.ui.browser.metrics",..."redirect"===n&&null!=t.redirectCount?{"http.redirect_count":t.redirectCount}:{}}})}const kp=({entries:e})=>{const t=en(),n=t?Zt(t):void 0,r=n?Vt(n).description:Ge().getScopeData().transactionName;e.forEach(e=>{const t=e;if(!t.identifier)return;const n=t.name,o=t.renderTime,i=t.loadTime,[s,a]=i?[ap(i),"load-time"]:o?[ap(o),"render-time"]:[Ae(),"entry-emission"],c="image-paint"===n?ap(Math.max(0,(o??0)-(i??0))):0,l={[it]:"auto.ui.browser.elementtiming",[ot]:"ui.elementtiming",[tt]:"component","sentry.span_start_time_source":a,"sentry.transaction_name":r,"element.id":t.id,"element.type":t.element?.tagName?.toLowerCase()||"unknown","element.size":t.naturalWidth&&t.naturalHeight?`${t.naturalWidth}x${t.naturalHeight}`:void 0,"element.render_time":o,"element.load_time":i,"element.url":t.url||void 0,"element.identifier":t.identifier,"element.paint_type":n};Hn({name:`element[${t.identifier}]`,attributes:l,startTime:s,onlyIfParent:!0},e=>{e.end(s+c)})})};let _p,Sp,Cp,Ep;function Tp(e){A("dom",e),R("dom",Mp)}function Mp(){if(!ou.document)return;const e=L.bind(null,"dom"),t=Ip(e,!0);ou.document.addEventListener("click",t,!1),ou.document.addEventListener("keypress",t,!1),["EventTarget","Node"].forEach(t=>{const n=ou,r=n[t]?.prototype;r?.hasOwnProperty?.("addEventListener")&&(oe(r,"addEventListener",function(t){return function(n,r,o){if("click"===n||"keypress"==n)try{const r=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},i=r[n]=r[n]||{refCount:0};if(!i.handler){const r=Ip(e);i.handler=r,t.call(this,n,r,o)}i.refCount++}catch{}return t.call(this,n,r,o)}}),oe(r,"removeEventListener",function(e){return function(t,n,r){if("click"===t||"keypress"==t)try{const n=this.__sentry_instrumentation_handlers__||{},o=n[t];o&&(o.refCount--,o.refCount<=0&&(e.call(this,t,o.handler,r),o.handler=void 0,delete n[t]),0===Object.keys(n).length&&delete this.__sentry_instrumentation_handlers__)}catch{}return e.call(this,t,n,r)}}))})}function Ip(e,t=!1){return n=>{if(!n||n._sentryCaptured)return;const r=function(e){try{return e.target}catch{return null}}(n);if(function(e,t){return"keypress"===e&&(!t?.tagName||"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&!t.isContentEditable)}(n.type,r))return;ie(n,"_sentryCaptured",!0),r&&!r._sentryId&&ie(r,"_sentryId",ke());const o="keypress"===n.type?"input":n.type;if(!function(e){if(e.type!==Sp)return!1;try{if(!e.target||e.target._sentryId!==Cp)return!1}catch{}return!0}(n)){e({event:n,name:o,global:t}),Sp=n.type,Cp=r?r._sentryId:void 0}clearTimeout(_p),_p=ou.setTimeout(()=>{Cp=void 0,Sp=void 0},1e3)}}function Ap(e){const t="history";A(t,e),R(t,Rp)}function Rp(){function e(e){return function(...t){const n=t.length>2?t[2]:void 0;if(n){const r=Ep,o=function(e){try{return new URL(e,ou.location.origin).toString()}catch{return e}}(String(n));if(Ep=o,r===o)return e.apply(this,t);L("history",{from:r,to:o})}return e.apply(this,t)}}ou.addEventListener("popstate",()=>{const e=ou.location.href,t=Ep;if(Ep=e,t===e)return;L("history",{from:t,to:e})}),"history"in Nc&&Nc.history&&(oe(ou.history,"pushState",e),oe(ou.history,"replaceState",e))}const Lp={};function Pp(e){const t=Lp[e];if(t)return t;let n=ou[e];if(jc(n))return Lp[e]=n.bind(ou);const r=ou.document;if(r&&"function"==typeof r.createElement)try{const t=r.createElement("iframe");t.hidden=!0,r.head.appendChild(t);const o=t.contentWindow;o?.[e]&&(n=o[e]),r.head.removeChild(t)}catch(t){ru&&y.warn(`Could not create sandbox iframe for ${e} check, bailing to window.${e}: `,t)}return n?Lp[e]=n.bind(ou):n}function Op(...e){return Pp("setTimeout")(...e)}const Dp="__sentry_xhr_v3__";function Np(e){A("xhr",e),R("xhr",Bp)}function Bp(){if(!ou.XMLHttpRequest)return;const e=XMLHttpRequest.prototype;e.open=new Proxy(e.open,{apply(e,t,n){const r=new Error,o=1e3*Ae(),i=U(n[0])?n[0].toUpperCase():void 0,s=function(e){if(U(e))return e;try{return e.toString()}catch{}return}(n[1]);if(!i||!s)return e.apply(t,n);t[Dp]={method:i,url:s,request_headers:{}},"POST"===i&&s.match(/sentry_key/)&&(t.__sentry_own_request__=!0);const a=()=>{const e=t[Dp];if(e&&4===t.readyState){try{e.status_code=t.status}catch{}L("xhr",{endTimestamp:1e3*Ae(),startTimestamp:o,xhr:t,virtualError:r})}};return"onreadystatechange"in t&&"function"==typeof t.onreadystatechange?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply:(e,t,n)=>(a(),e.apply(t,n))}):t.addEventListener("readystatechange",a),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(e,t,n){const[r,o]=n,i=t[Dp];return i&&U(r)&&U(o)&&(i.request_headers[r.toLowerCase()]=o),e.apply(t,n)}}),e.apply(t,n)}}),e.send=new Proxy(e.send,{apply(e,t,n){const r=t[Dp];if(!r)return e.apply(t,n);void 0!==n[0]&&(r.body=n[0]);return L("xhr",{startTimestamp:1e3*Ae(),xhr:t}),e.apply(t,n)}})}const jp=Symbol.for("sentry__originalRequestBody");function $p(e){return new URLSearchParams(e).toString()}function zp(e,t=y){try{if("string"==typeof e)return[e];if(e instanceof URLSearchParams)return[e.toString()];if(e instanceof FormData)return[$p(e)];if(!e)return[void 0]}catch(n){return ru&&t.error(n,"Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return ru&&t.log("Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}function Fp(e=[]){if(e.length>=2&&e[1]&&"object"==typeof e[1]&&"body"in e[1])return e[1].body;if(e.length>=1&&e[0]instanceof Request){const t=e[0][jp];return void 0!==t?t:void 0}}function Hp(e){let t;try{t=e.getAllResponseHeaders()}catch(t){return ru&&y.error(t,"Failed to get xhr response headers",e),{}}return t?t.split("\r\n").reduce((e,t)=>{const[n,r]=t.split(": ");return r&&(e[n.toLowerCase()]=r),e},{}):{}}const qp=[],Up=new Map,Wp=new Map;function Vp(){if(sp()&&Le()){const e=Ku(Gp);return()=>{e()}}return()=>{}}const Kp={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"};const Gp=({metric:e})=>{if(null==e.value)return;const t=ap(e.value);if(t>60)return;const n=e.entries.find(t=>t.duration===e.value&&Kp[t.name]);if(!n)return;const{interactionId:r}=n,o=Kp[n.name],i=ap(Le()+n.startTime),s=en(),a=s?Zt(s):void 0,c=null!=r?Up.get(r):void 0,l=c?.span||a,d=l?Vt(l).description:Ge().getScopeData().transactionName,u=ip({name:c?.elementName||ee(n.target),transaction:d,attributes:{[it]:"auto.http.browser.inp",[ot]:`ui.interaction.${o}`,[ut]:n.duration},startTime:i});u&&(u.addEvent("inp",{[at]:"millisecond",[ct]:e.value}),u.end(i+t))};function Jp(){const e=Object.keys(Kp);function t(e){const t=e.target;if(!t)return;const n=ee(t),r=Math.round(e.timeStamp);if(Wp.set(r,n),Wp.size>50){const e=Wp.keys().next().value;void 0!==e&&Wp.delete(e)}}Kc()&&e.forEach(e=>{ou.addEventListener(e,t,{capture:!0,passive:!0})});const n=({entries:e})=>{const t=en(),n=t&&Zt(t);e.forEach(e=>{if(!function(e){return"duration"in e}(e))return;const t=e.interactionId;if(null==t)return;if(Up.has(t))return;const r=e.target?ee(e.target):function(e){const t=Math.round(e.startTime);let n=Wp.get(t);if(!n)for(let e=-5;e<=5;e++){const r=Wp.get(t+e);if(r){n=r;break}}return n||"<unknown>"}(e);if(qp.length>10){const e=qp.shift();Up.delete(e)}qp.push(t),Up.set(t,{span:n,elementName:r})})};Gu("event",n),Gu("first-input",n)}function Yp(e,t=Pp("fetch")){let n=0,r=0;return fo(e,async function(o){const i=o.body.length;n+=i,r++;const s={body:o.body,method:"POST",referrerPolicy:"strict-origin",headers:e.headers,keepalive:n<=6e4&&r<15,...e.fetchOptions};try{const n=await t(e.url,s);return{statusCode:n.status,headers:{"x-sentry-rate-limits":n.headers.get("X-Sentry-Rate-Limits"),"retry-after":n.headers.get("Retry-After")}}}catch(e){throw Lp["fetch"]=void 0,e}finally{n-=i,r--}},lo(e.bufferSize||40))}const Xp="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;const Qp={startProfiler:function(){const e=Ze();if(!e)return void(Xp&&y.warn("No Sentry client available, profiling is not started"));e.getIntegrationByName("BrowserProfiling")?e.emit("startUIProfiler"):Xp&&y.warn("BrowserProfiling integration is not available")},stopProfiler:function(){const e=Ze();if(!e)return void(Xp&&y.warn("No Sentry client available, profiling is not started"));e.getIntegrationByName("BrowserProfiling")?e.emit("stopUIProfiler"):Xp&&y.warn("ProfilingIntegration is not available")}};function Zp(e,t,n,r){const o={filename:e,function:"<anonymous>"===t?b:t,in_app:!0};return void 0!==n&&(o.lineno=n),void 0!==r&&(o.colno=r),o}const eh=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,th=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,nh=/\((\S*)(?::(\d+))(?::(\d+))\)/,rh=/at (.+?) ?\(data:(.+?),/,oh=[30,e=>{const t=e.match(rh);if(t)return{filename:`<data:${t[2]}>`,function:t[1]};const n=eh.exec(e);if(n){const[,e,t,r]=n;return Zp(e,b,+t,+r)}const r=th.exec(e);if(r){if(r[2]&&0===r[2].indexOf("eval")){const e=nh.exec(r[2]);e&&(r[2]=e[1],r[3]=e[2],r[4]=e[3])}const[e,t]=mh(r[1]||b,r[2]);return Zp(t,e,r[3]?+r[3]:void 0,r[4]?+r[4]:void 0)}}],ih=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,sh=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ah=[50,e=>{const t=ih.exec(e);if(t){if(t[3]&&t[3].indexOf(" > eval")>-1){const e=sh.exec(t[3]);e&&(t[1]=t[1]||"eval",t[3]=e[1],t[4]=e[2],t[5]="")}let e=t[3],n=t[1]||b;return[n,e]=mh(n,e),Zp(e,n,t[4]?+t[4]:void 0,t[5]?+t[5]:void 0)}}],ch=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,lh=[40,e=>{const t=ch.exec(e);return t?Zp(t[2],t[1]||b,+t[3],t[4]?+t[4]:void 0):void 0}],dh=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,uh=[10,e=>{const t=dh.exec(e);return t?Zp(t[2],t[3]||b,+t[1]):void 0}],ph=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,hh=[20,e=>{const t=ph.exec(e);return t?Zp(t[5],t[3]||t[4]||b,+t[1],+t[2]):void 0}],fh=[oh,ah],gh=k(...fh),mh=(e,t)=>{const n=-1!==e.indexOf("safari-extension"),r=-1!==e.indexOf("safari-web-extension");return n||r?[-1!==e.indexOf("@")?e.split("@")[0]:b,n?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};function vh(e,{metadata:t,tunnel:n,dsn:r}){const o={event_id:e.event_id,sent_at:(new Date).toISOString(),...t?.sdk&&{sdk:{name:t.sdk.name,version:t.sdk.version}},...!!n&&!!r&&{dsn:It(r)}},i=function(e){return[{type:"user_report"},e]}(e);return kn(o,[i])}const yh=1024,bh=(e={})=>{const t={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...e};return{name:"Breadcrumbs",setup(e){t.console&&vi(function(e){return function(t){if(Ze()!==e)return;const n={category:"console",data:{arguments:t.args,logger:"console"},level:bi(t.level),message:be(t.args," ")};if("assert"===t.level){if(!1!==t.args[0])return;n.message=`Assertion failed: ${be(t.args.slice(1)," ")||"console.assert"}`,n.data.arguments=t.args.slice(1)}Qo(n,{input:t.args,level:t.level})}}(e)),t.dom&&Tp(function(e,t){return function(n){if(Ze()!==e)return;let r,o,i="object"==typeof t?t.serializeAttribute:void 0,s="object"==typeof t&&"number"==typeof t.maxStringLength?t.maxStringLength:void 0;s&&s>yh&&(Xp&&y.warn(`\`dom.maxStringLength\` cannot exceed 1024, but a value of ${s} was configured. Sentry will use 1024 instead.`),s=yh),"string"==typeof i&&(i=[i]);try{const e=n.event,t=function(e){return!!e&&!!e.target}(e)?e.target:e;r=ee(t,{keyAttrs:i,maxStringLength:s}),o=re(t)}catch{r="<unknown>"}if(0===r.length)return;const a={category:`ui.${n.name}`,message:r};o&&(a.data={"ui.component_name":o}),Qo(a,{event:n.event,name:n.name,global:n.global})}}(e,t.dom)),t.xhr&&Np(function(e){return function(t){if(Ze()!==e)return;const{startTimestamp:n,endTimestamp:r}=t,o=t.xhr[Dp];if(!n||!r||!o)return;const{method:i,url:s,status_code:a,body:c}=o,l={method:i,url:s,status_code:a},d={xhr:t.xhr,input:c,startTimestamp:n,endTimestamp:r},u={category:"xhr",data:l,type:"http",level:Dc(a)};e.emit("beforeOutgoingRequestBreadcrumb",u,d),Qo(u,d)}}(e)),t.fetch&&zc(function(e){return function(t){if(Ze()!==e)return;const{startTimestamp:n,endTimestamp:r}=t;if(r&&(!t.fetchData.url.match(/sentry_key/)||"POST"!==t.fetchData.method))if(t.fetchData.method,t.fetchData.url,t.error){const o=t.fetchData,i={data:t.error,input:t.args,startTimestamp:n,endTimestamp:r},s={category:"fetch",data:o,level:"error",type:"http"};e.emit("beforeOutgoingRequestBreadcrumb",s,i),Qo(s,i)}else{const o=t.response,i={...t.fetchData,status_code:o?.status};t.fetchData.request_body_size,t.fetchData.response_body_size;const s={input:t.args,response:o,startTimestamp:n,endTimestamp:r},a={category:"fetch",data:i,type:"http",level:Dc(i.status_code)};e.emit("beforeOutgoingRequestBreadcrumb",a,s),Qo(a,s)}}}(e)),t.history&&Ap(function(e){return function(t){if(Ze()!==e)return;let n=t.from,r=t.to;const o=qo(Pd.location.href);let i=n?qo(n):void 0;const s=qo(r);i?.path||(i=o),o.protocol===s.protocol&&o.host===s.host&&(r=s.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),Qo({category:"navigation",data:{from:n,to:r}})}}(e)),t.sentry&&e.on("beforeSendEvent",function(e){return function(t){Ze()===e&&Qo({category:"sentry."+("transaction"===t.type?"transaction":"event"),event_id:t.event_id,level:t.level,message:Se(t)},{event:t})}}(e))}}};const wh=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","BroadcastChannel","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","SharedWorker","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],xh=(e={})=>{const t={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...e};return{name:"BrowserApiErrors",setupOnce(){t.setTimeout&&oe(Pd,"setTimeout",kh),t.setInterval&&oe(Pd,"setInterval",kh),t.requestAnimationFrame&&oe(Pd,"requestAnimationFrame",_h),t.XMLHttpRequest&&"XMLHttpRequest"in Pd&&oe(XMLHttpRequest.prototype,"send",Sh);const e=t.eventTarget;if(e){(Array.isArray(e)?e:wh).forEach(e=>function(e,t){const n=Pd,r=n[e]?.prototype;if(!r?.hasOwnProperty?.("addEventListener"))return;oe(r,"addEventListener",function(n){return function(r,o,i){try{"function"==typeof o.handleEvent&&(o.handleEvent=Nd(o.handleEvent,{mechanism:{data:{handler:C(o),target:e},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return t.unregisterOriginalCallbacks&&function(e,t,n){e&&"object"==typeof e&&"removeEventListener"in e&&"function"==typeof e.removeEventListener&&e.removeEventListener(t,n)}(this,r,o),n.apply(this,[r,Nd(o,{mechanism:{data:{handler:C(o),target:e},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),i])}}),oe(r,"removeEventListener",function(e){return function(t,n,r){try{const o=n.__sentry_wrapped__;o&&e.call(this,t,o,r)}catch{}return e.call(this,t,n,r)}})}(e,t))}}}};function kh(e){return function(...t){const n=t[0];return t[0]=Nd(n,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${C(e)}`}}),e.apply(this,t)}}function _h(e){return function(t){return e.apply(this,[Nd(t,{mechanism:{data:{handler:C(e)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function Sh(e){return function(...t){const n=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(e=>{e in n&&"function"==typeof n[e]&&oe(n,e,function(t){const n={mechanism:{data:{handler:C(t)},handled:!1,type:`auto.browser.browserapierrors.xhr.${e}`}},r=ae(t);return r&&(n.mechanism.data.handler=C(r)),Nd(t,n)})}),e.apply(this,t)}}const Ch=()=>({name:"BrowserSession",setupOnce(){void 0!==Pd.document?(Dr({ignoreDuration:!0}),jr(),Ap(({from:e,to:t})=>{void 0!==e&&e!==t&&(Dr({ignoreDuration:!0}),jr())})):Xp&&y.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.")}}),Eh=(e={})=>{const t={onerror:!0,onunhandledrejection:!0,...e};return{name:"GlobalHandlers",setupOnce(){Error.stackTraceLimit=50},setup(e){t.onerror&&(!function(e){O(t=>{const{stackParser:n,attachStacktrace:r}=Ah();if(Ze()!==e||Dd())return;const{msg:o,url:i,line:s,column:a,error:c}=t,l=function(e,t,n,r){const o=e.exception=e.exception||{},i=o.values=o.values||[],s=i[0]=i[0]||{},a=s.stacktrace=s.stacktrace||{},c=a.frames=a.frames||[],l=r,d=n,u=function(e){if(!U(e)||0===e.length)return;if(e.startsWith("data:")){const t=e.match(/^data:([^;]+)/);return`<data:${t?t[1]:"text/javascript"}${e.includes("base64,")?",base64":""}>`}return e}(t)??ne();0===c.length&&c.push({colno:l,filename:u,function:b,in_app:!0,lineno:d});return e}(Zd(n,c||o,void 0,r,!1),i,s,a);l.level="error",kr(l,{originalException:c,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})})}(e),Ih("onerror")),t.onunhandledrejection&&(!function(e){B(t=>{const{stackParser:n,attachStacktrace:r}=Ah();if(Ze()!==e||Dd())return;const o=Th(t),i=V(o)?Mh(o):Zd(n,o,void 0,r,!0);i.level="error",kr(i,{originalException:o,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})})}(e),Ih("onunhandledrejection"))}}};function Th(e){if(V(e))return e;try{if("reason"in e)return e.reason;if("detail"in e&&"reason"in e.detail)return e.detail.reason}catch{}return e}function Mh(e){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(e)}`}]}}}function Ih(e){Xp&&y.log(`Global Handler attached: ${e}`)}function Ah(){const e=Ze();return e?.getOptions()||{stackParser:()=>[],attachStacktrace:!1}}const Rh=()=>({name:"HttpContext",preprocessEvent(e){if(!Pd.navigator&&!Pd.location&&!Pd.document)return;const t=Bd(),n={...t.headers,...e.request?.headers};e.request={...t,...e.request,headers:n}}}),Lh=(e={})=>{const t=e.limit||5,n=e.key||"cause";return{name:"LinkedErrors",preprocessEvent(e,r,o){ai(qd,o.getOptions().stackParser,n,t,e,r)}}};const Ph=(e={})=>{const t=e.sidecarUrl||"http://localhost:8969/stream";return{name:"SpotlightBrowser",setup:()=>{Xp&&y.log("Using Sidecar URL",t)},processEvent:e=>function(e){return Boolean("transaction"===e.type&&e.spans&&e.contexts?.trace&&"ui.action.click"===e.contexts.trace.op&&e.spans.some(({description:e})=>e?.includes("#sentry-spotlight")))}(e)?null:e,afterAllSetup:e=>{!function(e,t){const n=Pp("fetch");let r=0;e.on("beforeEnvelope",e=>{r>3?y.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests:",r):n(t,{method:"POST",body:Tn(e),headers:{"Content-Type":"application/x-sentry-envelope"},mode:"cors"}).then(e=>{e.status>=200&&e.status<400&&(r=0)},e=>{r++,y.error("Sentry SDK can't connect to Sidecar is it running? See: https://spotlightjs.com/sidecar/npx/",e)})})}(e,t)}}};function Oh(){return!!function(){if(void 0===Pd.window)return!1;const e=Pd;if(e.nw)return!1;const t=e.chrome||e.browser;if(!t?.runtime?.id)return!1;const n=ne(),r=["chrome-extension","moz-extension","ms-browser-extension","safari-web-extension"],o=Pd===Pd.top&&r.some(e=>n.startsWith(`${e}://`));return!o}()&&(Xp&&f(()=>{}),!0)}function Dh(e){return[oi(),ti(),xh(),bh(),Eh(),Lh(),xi(),Rh(),Ch()]}function Nh(e={}){const t=!e.skipBrowserExtensionCheck&&Oh();let n=null==e.defaultIntegrations?Dh():e.defaultIntegrations;const r={...e,enabled:!t&&e.enabled,stackParser:(o=e.stackParser||gh,Array.isArray(o)?k(...o):o),integrations:Hr({integrations:e.integrations,defaultIntegrations:n}),transport:e.transport||Yp};var o;return function(e,t){!0===t.debug&&(s?y.enable():f(()=>{})),Ge().update(t.initialScope);const n=new e(t);return Oo(n),n.init(),n}(nu,r)}function Bh(){}function jh(e){e()}function $h(e={}){const t=Pd.document,n=t?.head||t?.body;if(!n)return void(Xp&&y.error("[showReportDialog] Global document not defined"));const r=Ge(),o=Ze(),i=o?.getDsn();if(!i)return void(Xp&&y.error("[showReportDialog] DSN not configured"));const s={...e,user:{...r.getUser(),...e.user},eventId:e.eventId||Ir()},a=Pd.document.createElement("script");a.async=!0,a.crossOrigin="anonymous",a.src=function(e,t){const n=Pt(e);if(!n)return"";const r=`${$r(n)}embed/error-page/`;let o=`dsn=${It(n)}`;for(const e in t)if("dsn"!==e&&"onClose"!==e)if("user"===e){const e=t.user;if(!e)continue;e.name&&(o+=`&name=${encodeURIComponent(e.name)}`),e.email&&(o+=`&email=${encodeURIComponent(e.email)}`)}else o+=`&${encodeURIComponent(e)}=${encodeURIComponent(t[e])}`;return`${r}?${o}`}(i,s);const{onLoad:c,onClose:l}=s;if(c&&(a.onload=c),l){const e=t=>{if("__sentry_reportdialog_closed__"===t.data)try{l()}finally{Pd.removeEventListener("message",e)}};Pd.addEventListener("message",e)}n.appendChild(a)}const zh=a,Fh=new WeakMap,Hh=(e={})=>{const t=e.types||["crash","deprecation","intervention"];function n(e){if(Fh.has(Ze()))for(const t of e)Xe(e=>{e.setExtra("url",t.url);const n=`ReportingObserver [${t.type}]`;let r="No details available";if(t.body){const n={};for(const e in t.body)n[e]=t.body[e];if(e.setExtra("body",n),"crash"===t.type){const e=t.body;r=[e.crashId||"",e.reason||""].join(" ").trim()||r}else{r=t.body.message||r}}xr(`${n}: ${r}`)})}return{name:"ReportingObserver",setupOnce(){if(!("ReportingObserver"in Nc))return;new zh.ReportingObserver(n,{buffered:!0,types:t}).observe()},setup(e){Fh.set(e,!0)}}},qh=(e={})=>{const t={failedRequestStatusCodes:[[500,599]],failedRequestTargets:[/.*/],...e};return{name:"HttpClient",setup(e){!function(e,t){if(!$c())return;zc(n=>{if(Ze()!==e)return;const{response:r,args:o,error:i,virtualError:s}=n,[a,c]=o;r&&function(e,t,n,r,o){if(Kh(e,n.status,n.url)){const e=function(e,t){if(!t&&e instanceof Request)return e;if(e instanceof Request&&e.bodyUsed)return e;return new Request(e,t)}(t,r);let i,s,a,c;Jh()&&([i,a]=Uh("Cookie",e),[s,c]=Uh("Set-Cookie",n));kr(Gh({url:e.url,method:e.method,status:n.status,requestHeaders:i,responseHeaders:s,requestCookies:a,responseCookies:c,error:o,type:"fetch"}))}}(t,a,r,c,i||s)},!1)}(e,t),function(e,t){if(!("XMLHttpRequest"in a))return;Np(n=>{if(Ze()!==e)return;const{error:r,virtualError:o}=n,i=n.xhr,s=i[Dp];if(!s)return;const{method:a,request_headers:c}=s;try{!function(e,t,n,r,o){if(Kh(e,t.status,t.responseURL)){let e,i,s;if(Jh()){try{const e=t.getResponseHeader("Set-Cookie")||t.getResponseHeader("set-cookie")||void 0;e&&(i=Vh(e))}catch{}try{s=function(e){const t=e.getAllResponseHeaders();if(!t)return{};return t.split("\r\n").reduce((e,t)=>{const[n,r]=t.split(": ");return n&&r&&(e[n]=r),e},{})}(t)}catch{}e=r}kr(Gh({url:t.responseURL,method:n,status:t.status,requestHeaders:e,responseHeaders:s,responseCookies:i,error:o,type:"xhr"}))}}(t,i,a,c,r||o)}catch(e){Xp&&y.warn("Error while extracting response event form XHR response",e)}})}(e,t)}}};function Uh(e,t){const n=function(e){const t={};return e.forEach((e,n)=>{t[n]=e}),t}(t.headers);let r;try{const t=n[e]||n[e.toLowerCase()]||void 0;t&&(r=Vh(t))}catch{}return[n,r]}function Wh(e){if(e){const t=e["Content-Length"]||e["content-length"];if(t)return parseInt(t,10)}}function Vh(e){return e.split("; ").reduce((e,t)=>{const[n,r]=t.split("=");return n&&r&&(e[n]=r),e},{})}function Kh(e,t,n){return function(e,t){return e.some(e=>"number"==typeof e?e===t:t>=e[0]&&t<=e[1])}(e.failedRequestStatusCodes,t)&&(r=e.failedRequestTargets,o=n,r.some(e=>"string"==typeof e?o.includes(e):e.test(o)))&&!Wo(n,Ze());var r,o}function Gh(e){const t=Ze(),n=t&&e.error&&e.error instanceof Error?e.error.stack:void 0,r=n&&t?t.getOptions().stackParser(n,0,1):void 0,o=`HTTP Client Error with status code: ${e.status}`,i={message:o,exception:{values:[{type:"Error",value:o,stacktrace:r?{frames:r}:void 0}]},request:{url:e.url,method:e.method,headers:e.requestHeaders,cookies:e.requestCookies},contexts:{response:{status_code:e.status,headers:e.responseHeaders,cookies:e.responseCookies,body_size:Wh(e.responseHeaders)}}};return Ee(i,{type:`auto.http.client.${e.type}`,handled:!1}),i}function Jh(){const e=Ze();return!!e&&Boolean(e.getOptions().sendDefaultPii)}const Yh=a,Xh=(e={})=>{const t=null!=e.frameContextLines?e.frameContextLines:7;return{name:"ContextLines",processEvent:e=>function(e,t){const n=Yh.document,r=Yh.location&&Uo(Yh.location.href);if(!n||!r)return e;const o=e.exception?.values;if(!o?.length)return e;const i=n.documentElement.innerHTML;if(!i)return e;const s=["<!DOCTYPE html>","<html>",...i.split("\n"),"</html>"];return o.forEach(e=>{const n=e.stacktrace;n?.frames&&(n.frames=n.frames.map(e=>function(e,t,n,r){if(e.filename!==n||!e.lineno||!t.length)return e;return function(e,t,n=5){if(void 0===t.lineno)return;const r=e.length,o=Math.max(Math.min(r-1,t.lineno-1),0);t.pre_context=e.slice(Math.max(0,o-n),o).map(e=>ye(e,0));const i=Math.min(r-1,o);t.context_line=ye(e[i],t.colno||0),t.post_context=e.slice(Math.min(o+1,r),o+1+n).map(e=>ye(e,0))}(t,e,r),e}(e,s,r,t)))}),e}(e,t)}};function Qh(e){if(nf(e))return`persisted ${e.operationName}`;if(tf(e)){const{query:t,operationName:n}=e,{operationName:r=n,operationType:o}=function(e){const t=/^(?:\s*)(query|mutation|subscription)(?:\s*)(\w+)(?:\s*)[{(]/,n=/^(?:\s*)(query|mutation|subscription)(?:\s*)[{(]/,r=e.match(t);if(r)return{operationType:r[1],operationName:r[2]};const o=e.match(n);if(o)return{operationType:o[1],operationName:void 0};return{operationType:void 0,operationName:void 0}}(t);return r?`${o} ${r}`:`${o}`}return"unknown"}function Zh(e){let t;if("xhr"in e){const n=e.xhr[Dp];t=n&&zp(n.body)[0]}else{t=zp(Fp(e.input))[0]}return t}function ef(e){return"object"==typeof e&&null!==e}function tf(e){return ef(e)&&"string"==typeof e.query}function nf(e){return ef(e)&&"string"==typeof e.operationName&&ef(e.extensions)&&ef(e.extensions.persistedQuery)&&"string"==typeof e.extensions.persistedQuery.sha256Hash&&"number"==typeof e.extensions.persistedQuery.version}function rf(e){try{const t=JSON.parse(e);return tf(t)||nf(t)?t:void 0}catch{return}}const of=e=>({name:"GraphQLClient",setup(t){!function(e,t){e.on("beforeOutgoingRequestSpan",(e,n)=>{const r=Vt(e).data||{};if(!("http.client"===r[ot]))return;const o=r[ht]||r["http.url"],i=r[pt]||r["http.method"];if(!U(o)||!U(i))return;const{endpoints:s}=t,a=xe(o,s),c=Zh(n);if(a&&c){const t=rf(c);if(t){const n=Qh(t);e.updateName(`${i} ${o} (${n})`),tf(t)&&e.setAttribute("graphql.document",t.query),nf(t)&&(e.setAttribute("graphql.persisted_query.hash.sha256",t.extensions.persistedQuery.sha256Hash),e.setAttribute("graphql.persisted_query.version",t.extensions.persistedQuery.version))}}})}(t,e),function(e,t){e.on("beforeOutgoingRequestBreadcrumb",(e,n)=>{const{category:r,type:o,data:i}=e;if("http"===o&&("fetch"===r||"xhr"===r)){const e=i?.url,{endpoints:r}=t,o=xe(e,r),s=Zh(n);if(o&&i&&s){const e=rf(s);if(!i.graphql&&e){const t=Qh(e);i["graphql.operation"]=t,tf(e)&&(i["graphql.document"]=e.query),nf(e)&&(i["graphql.persisted_query.hash.sha256"]=e.extensions.persistedQuery.sha256Hash,i["graphql.persisted_query.version"]=e.extensions.persistedQuery.version)}}}})}(t,e)}}),sf=a,af="sentryReplaySession",cf="Unable to send Replay",lf=15e4,df=5e3,uf=2e7,pf=36e5;var hf=Object.defineProperty,ff=(e,t,n)=>((e,t,n)=>t in e?hf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),gf=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(gf||{});function mf(e){const t=e?.host;return Boolean(t?.shadowRoot===e)}function vf(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function yf(e){try{const n=e.rules||e.cssRules;return n?((t=Array.from(n,bf).join("")).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t):null}catch(e){return null}var t}function bf(e){let t;if(function(e){return"styleSheet"in e}(e))try{t=yf(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(e){}else if(function(e){return"selectorText"in e}(e)){let t=e.cssText;const n=e.selectorText.includes(":"),r="string"==typeof e.style.all&&e.style.all;if(r&&(t=function(e){let t="";for(let n=0;n<e.style.length;n++){const r=e.style,o=r[n],i=r.getPropertyPriority(o);t+=`${o}:${r.getPropertyValue(o)}${i?" !important":""};`}return`${e.selectorText} { ${t} }`}(e)),n&&(t=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(t)),n||r)return t}return t||e.cssText}class wf{constructor(){ff(this,"idNodeMap",new Map),ff(this,"nodeMetaMap",new WeakMap)}getId(e){if(!e)return-1;const t=this.getMeta(e)?.id;return t??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach(e=>this.removeNodeFromMap(e))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function xf({maskInputOptions:e,tagName:t,type:n}){return"OPTION"===t&&(t="SELECT"),Boolean(e[t.toLowerCase()]||n&&e[n]||"password"===n||"INPUT"===t&&!n&&e.text)}function kf({isMasked:e,element:t,value:n,maskInputFn:r}){let o=n||"";return e?(r&&(o=r(o,t)),"*".repeat(o.length)):o}function _f(e){return e.toLowerCase()}function Sf(e){return e.toUpperCase()}const Cf="__rrweb_original__";function Ef(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?_f(t):null}function Tf(e,t,n){return"INPUT"!==t||"radio"!==n&&"checkbox"!==n?e.value:e.getAttribute("value")||""}function Mf(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(e){return null}const r=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return r?.[1]??null}const If={};function Af(e){const t=If[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"==typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(e){}return If[e]=r.bind(window)}function Rf(...e){return Af("setTimeout")(...e)}function Lf(...e){return Af("clearTimeout")(...e)}function Pf(e){try{return e.contentDocument}catch(e){}}let Of=1;const Df=new RegExp("[^a-z0-9-_:]");function Nf(){return Of++}let Bf,jf;const $f=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,zf=/^(?:[a-z+]+:)?\/\//i,Ff=/^www\..*/i,Hf=/^(data:)([^,]*),(.*)/i;function qf(e,t){return(e||"").replace($f,(e,n,r,o,i,s)=>{const a=r||i||s,c=n||o||"";if(!a)return e;if(zf.test(a)||Ff.test(a))return`url(${c}${a}${c})`;if(Hf.test(a))return`url(${c}${a}${c})`;if("/"===a[0])return`url(${c}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+a}${c})`;const l=t.split("/"),d=a.split("/");l.pop();for(const e of d)"."!==e&&(".."===e?l.pop():l.push(e));return`url(${c}${l.join("/")}${c})`})}const Uf=/^[^ \t\n\r\u000c]+/,Wf=/^[, \t\n\r\u000c]+/;const Vf=new WeakMap;function Kf(e,t){return t&&""!==t.trim()?Jf(e,t):t}function Gf(e){return Boolean("svg"===e.tagName||e.ownerSVGElement)}function Jf(e,t){let n=Vf.get(e);if(n||(n=e.createElement("a"),Vf.set(e,n)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return n.setAttribute("href",t),n.href}function Yf(e,t,n,r,o,i,s){if(!r)return r;if("src"===n||"href"===n&&("use"!==t||"#"!==r[0]))return Kf(e,r);if("xlink:href"===n&&"#"!==r[0])return Kf(e,r);if("background"===n&&("table"===t||"td"===t||"th"===t))return Kf(e,r);if("srcset"===n)return function(e,t){if(""===t.trim())return t;let n=0;function r(e){let r;const o=e.exec(t.substring(n));return o?(r=o[0],n+=r.length,r):""}const o=[];for(;r(Wf),!(n>=t.length);){let i=r(Uf);if(","===i.slice(-1))i=Kf(e,i.substring(0,i.length-1)),o.push(i);else{let r="";i=Kf(e,i);let s=!1;for(;;){const e=t.charAt(n);if(""===e){o.push((i+r).trim());break}if(s)")"===e&&(s=!1);else{if(","===e){n+=1,o.push((i+r).trim());break}"("===e&&(s=!0)}r+=e,n+=1}}}return o.join(", ")}(e,r);if("style"===n){let t=qf(r,Jf(e));return s&&s.size>0&&(t=function(e,t){if(!e||0===t.size)return e;try{const n=e.split(";"),r=[];for(let e of n){if(e=e.trim(),!e)continue;const n=e.indexOf(":");if(-1===n){r.push(e);continue}const o=e.slice(0,n).trim();t.has(o)||r.push(e)}return r.join("; ")+(r.length>0&&e.endsWith(";")?";":"")}catch(t){return e}}(t,s)),t}return"object"===t&&"data"===n?Kf(e,r):"function"==typeof i?i(n,r,o):r}function Xf(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Qf(e,t,n=1/0,r=0){return e?e.nodeType!==e.ELEMENT_NODE||r>n?-1:t(e)?r:Qf(e.parentNode,t,n,r+1):-1}function Zf(e,t){return n=>{const r=n;if(null===r)return!1;try{if(e)if("string"==typeof e){if(r.matches(`.${e}`))return!0}else if(function(e,t){for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}return!1}(r,e))return!0;return!(!t||!r.matches(t))}catch{return!1}}}function eg(e,t,n,r,o,i){try{const s=e.nodeType===e.ELEMENT_NODE?e:e.parentElement;if(null===s)return!1;if("INPUT"===s.tagName){const e=s.getAttribute("autocomplete");if(["current-password","new-password","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc"].includes(e))return!0}let a=-1,c=-1;if(i){if(c=Qf(s,Zf(r,o)),c<0)return!0;a=Qf(s,Zf(t,n),c>=0?c:1/0)}else{if(a=Qf(s,Zf(t,n)),a<0)return!1;c=Qf(s,Zf(r,o),a>=0?a:1/0)}return a>=0?!(c>=0)||a<=c:!(c>=0)&&!!i}catch(e){}return!!i}function tg(e,t){const{doc:n,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskAttributeFn:c,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:p,inlineStylesheet:h,maskInputOptions:f={},maskTextFn:g,maskInputFn:m,dataURLOptions:v={},inlineImages:y,recordCanvas:b,keepIframeSrcFn:w,newlyAddedElement:x=!1,ignoreCSSAttributes:k}=t,_=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,r);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:gf.Document,childNodes:[],compatMode:e.compatMode}:{type:gf.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:gf.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:_};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:r,blockSelector:o,unblockSelector:i,inlineStylesheet:s,maskInputOptions:a={},maskAttributeFn:c,maskInputFn:l,dataURLOptions:d={},inlineImages:u,recordCanvas:p,keepIframeSrcFn:h,newlyAddedElement:f=!1,rootId:g,maskTextClass:m,unmaskTextClass:v,maskTextSelector:y,unmaskTextSelector:b,ignoreCSSAttributes:w}=t,x=function(e,t,n,r){try{if(r&&e.matches(r))return!1;if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}if(n)return e.matches(n)}catch(e){}return!1}(e,r,o,i),k=function(e){if(e instanceof HTMLFormElement)return"form";const t=_f(e.tagName);return Df.test(t)?"div":t}(e);let _={};const S=e.attributes.length;for(let t=0;t<S;t++){const r=e.attributes[t];r.name&&!Xf(k,r.name,r.value)&&(_[r.name]=Yf(n,k,_f(r.name),r.value,e,c,w))}if("link"===k&&s){const t=Array.from(n.styleSheets).find(t=>t.href===e.href);let r=null;t&&(r=yf(t)),r&&(_.rel=null,_.href=null,_.crossorigin=null,_._cssText=qf(r,t.href))}if("style"===k&&e.sheet&&!(e.innerText||e.textContent||"").trim().length){const t=yf(e.sheet);t&&(_._cssText=qf(t,Jf(n)))}if("input"===k||"textarea"===k||"select"===k||"option"===k){const t=e,n=Ef(t),r=Tf(t,Sf(k),n),o=t.checked;if("submit"!==n&&"button"!==n&&r){const e=eg(t,m,y,v,b,xf({type:n,tagName:Sf(k),maskInputOptions:a}));_.value=kf({isMasked:e,element:t,value:r,maskInputFn:l})}o&&(_.checked=o)}"option"===k&&(e.selected&&!a.select?_.selected=!0:delete _.selected);if("canvas"===k&&p)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n<e.width;n+=50)for(let r=0;r<e.height;r+=50){const o=t.getImageData,i=Cf in o?o[Cf]:o;if(new Uint32Array(i.call(t,n,r,Math.min(50,e.width-n),Math.min(50,e.height-r)).data.buffer).some(e=>0!==e))return!1}return!0})(e)||(_.rr_dataURL=e.toDataURL(d.type,d.quality));else if(!("__context"in e)){const t=e.toDataURL(d.type,d.quality),r=n.createElement("canvas");r.width=e.width,r.height=e.height;t!==r.toDataURL(d.type,d.quality)&&(_.rr_dataURL=t)}if("img"===k&&u){Bf||(Bf=n.createElement("canvas"),jf=Bf.getContext("2d"));const t=e,r=(t.currentSrc||t.getAttribute("src"),t.crossOrigin),o=()=>{t.removeEventListener("load",o);try{Bf.width=t.naturalWidth,Bf.height=t.naturalHeight,jf.drawImage(t,0,0),_.rr_dataURL=Bf.toDataURL(d.type,d.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?o():t.addEventListener("load",o))}"anonymous"===t.crossOrigin&&(r?_.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?o():t.addEventListener("load",o)}"audio"!==k&&"video"!==k||(_.rr_mediaState=e.paused?"paused":"played",_.rr_mediaCurrentTime=e.currentTime);f||(e.scrollLeft&&(_.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(_.rr_scrollTop=e.scrollTop));if(x){const{width:t,height:n}=e.getBoundingClientRect();_={class:_.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==k||h(_.src)||(x||Pf(e)||(_.rr_src=_.src),delete _.src);let C;try{customElements.get(k)&&(C=!0)}catch(e){}return{type:gf.Element,tagName:k,attributes:_,childNodes:[],isSVG:Gf(e)||void 0,needBlock:x,rootId:g,isCustom:C}}(e,{doc:n,blockClass:o,blockSelector:i,unblockSelector:s,inlineStylesheet:h,maskAttributeFn:c,maskInputOptions:f,maskInputFn:m,dataURLOptions:v,inlineImages:y,recordCanvas:b,keepIframeSrcFn:w,newlyAddedElement:x,rootId:_,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:p,ignoreCSSAttributes:k});case e.TEXT_NODE:return function(e,t){const{maskAllText:n,maskTextClass:r,unmaskTextClass:o,maskTextSelector:i,unmaskTextSelector:s,maskTextFn:a,maskInputOptions:c,maskInputFn:l,rootId:d}=t,u=e.parentNode&&e.parentNode.tagName;let p=e.textContent;const h="STYLE"===u||void 0,f="SCRIPT"===u||void 0,g="TEXTAREA"===u||void 0;if(h&&p){try{e.nextSibling||e.previousSibling||e.parentNode.sheet?.cssRules&&(p=yf(e.parentNode.sheet))}catch(e){}p=qf(p,Jf(t.doc))}f&&(p="SCRIPT_PLACEHOLDER");const m=eg(e,r,i,o,s,n);h||f||g||!p||!m||(p=a?a(p,e.parentElement):p.replace(/[\S]/g,"*"));g&&p&&(c.textarea||m)&&(p=l?l(p,e.parentNode):p.replace(/[\S]/g,"*"));if("OPTION"===u&&p){p=kf({isMasked:eg(e,r,i,o,s,xf({type:null,tagName:u,maskInputOptions:c})),element:e,value:p,maskInputFn:l})}return{type:gf.Text,textContent:p||"",isStyle:h,rootId:d}}(e,{doc:n,maskAllText:a,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:p,maskTextFn:g,maskInputOptions:f,maskInputFn:m,rootId:_});case e.CDATA_SECTION_NODE:return{type:gf.CDATA,textContent:"",rootId:_};case e.COMMENT_NODE:return{type:gf.Comment,textContent:e.textContent||"",rootId:_};default:return!1}}function ng(e){return null==e?"":e.toLowerCase()}function rg(e,t){const{doc:n,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:p=!1,inlineStylesheet:h=!0,maskInputOptions:f={},maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b={},inlineImages:w=!1,recordCanvas:x=!1,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S=5e3,onBlockedImageLoad:C,onStylesheetLoad:E,stylesheetLoadTimeout:T=5e3,keepIframeSrcFn:M=()=>!1,newlyAddedElement:I=!1,ignoreCSSAttributes:A}=t;let{preserveWhiteSpace:R=!0}=t;const L=tg(e,{doc:n,mirror:r,blockClass:o,blockSelector:i,maskAllText:a,unblockSelector:s,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,dataURLOptions:b,inlineImages:w,recordCanvas:x,keepIframeSrcFn:M,newlyAddedElement:I,ignoreCSSAttributes:A});if(!L)return null;let P;P=r.hasNode(e)?r.getId(e):!function(e,t){if(t.comment&&e.type===gf.Comment)return!0;if(e.type===gf.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Mf(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ng(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ng(e.attributes.name)||"icon"===ng(e.attributes.rel)||"apple-touch-icon"===ng(e.attributes.rel)||"shortcut icon"===ng(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ng(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ng(e.attributes.property).match(/^(og|twitter|fb):/)||ng(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ng(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ng(e.attributes.name)||"googlebot"===ng(e.attributes.name)||"bingbot"===ng(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ng(e.attributes.name)||"generator"===ng(e.attributes.name)||"framework"===ng(e.attributes.name)||"publisher"===ng(e.attributes.name)||"progid"===ng(e.attributes.name)||ng(e.attributes.property).match(/^article:/)||ng(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ng(e.attributes.name)||"yandex-verification"===ng(e.attributes.name)||"csrf-token"===ng(e.attributes.name)||"p:domain_verify"===ng(e.attributes.name)||"verify-v1"===ng(e.attributes.name)||"verification"===ng(e.attributes.name)||"shopify-checkout-api-token"===ng(e.attributes.name)))return!0}}return!1}(L,y)&&(R||L.type!==gf.Text||L.isStyle||L.textContent.replace(/^\s+|\s+$/gm,"").length)?Nf():-2;const O=Object.assign(L,{id:P});if(r.add(e,O),-2===P)return null;k&&k(e);let D=!p;if(O.type===gf.Element){D=D&&!O.needBlock;const t=e.shadowRoot;t&&vf(t)&&(O.isShadowHost=!0)}if((O.type===gf.Document||O.type===gf.Element)&&D){y.headWhitespace&&O.type===gf.Element&&"head"===O.tagName&&(R=!1);const t={doc:n,mirror:r,blockClass:o,blockSelector:i,maskAllText:a,unblockSelector:s,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:p,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b,inlineImages:w,recordCanvas:x,preserveWhiteSpace:R,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S,onBlockedImageLoad:C,onStylesheetLoad:E,stylesheetLoadTimeout:T,keepIframeSrcFn:M,ignoreCSSAttributes:A},I=e.childNodes?Array.from(e.childNodes):[];for(const e of I){const n=rg(e,t);n&&O.childNodes.push(n)}if(function(e){return e.nodeType===e.ELEMENT_NODE}(e)&&e.shadowRoot)for(const n of Array.from(e.shadowRoot.childNodes)){const r=rg(n,t);r&&(vf(e.shadowRoot)&&(r.isShadow=!0),O.childNodes.push(r))}}if(e.parentNode&&mf(e.parentNode)&&vf(e.parentNode)&&(O.isShadow=!0),O.type!==gf.Element||"iframe"!==O.tagName||O.needBlock||function(e,t,n){const r=e.contentWindow;if(!r)return;let o,i=!1;try{o=r.document.readyState}catch(e){return}if("complete"!==o){const r=Rf(()=>{i||(t(),i=!0)},n);return void e.addEventListener("load",()=>{Lf(r),i=!0,t()})}const s="about:blank";if(r.location.href!==s||e.src===s||""===e.src)return Rf(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,()=>{const t=Pf(e);if(t&&_){const n=rg(t,{doc:t,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b,inlineImages:w,recordCanvas:x,preserveWhiteSpace:R,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S,onStylesheetLoad:E,stylesheetLoadTimeout:T,keepIframeSrcFn:M,ignoreCSSAttributes:A});n&&_(e,n)}},S),O.type===gf.Element&&"img"===O.tagName&&!e.complete&&O.needBlock){const t=e,n=()=>{if(t.isConnected&&!t.complete&&C)try{const e=t.getBoundingClientRect();e.width>0&&e.height>0&&C(t,O,e)}catch(e){}t.removeEventListener("load",n)};t.isConnected&&t.addEventListener("load",n)}return O.type===gf.Element&&"link"===O.tagName&&"string"==typeof O.attributes.rel&&("stylesheet"===O.attributes.rel||"preload"===O.attributes.rel&&"string"==typeof O.attributes.href&&"css"===Mf(O.attributes.href))&&function(e,t,n){let r,o=!1;try{r=e.sheet}catch(e){return}if(r)return;const i=Rf(()=>{o||(t(),o=!0)},n);e.addEventListener("load",()=>{Lf(i),o=!0,t()})}(e,()=>{if(E){const t=rg(e,{doc:n,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b,inlineImages:w,recordCanvas:x,preserveWhiteSpace:R,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S,onStylesheetLoad:E,stylesheetLoadTimeout:T,keepIframeSrcFn:M,ignoreCSSAttributes:A});t&&E(e,t)}},T),O.type===gf.Element&&delete O.needBlock,O}function og(e,t,n=document){const r={capture:!0,passive:!0};return n.addEventListener(e,t,r),()=>n.removeEventListener(e,t,r)}let ig={map:{},getId:()=>-1,getNode:()=>null,removeNodeFromMap(){},has:()=>!1,reset(){}};function sg(e,t,n={}){let r=null,o=0;return function(...i){const s=Date.now();o||!1!==n.leading||(o=s);const a=t-(s-o),c=this;a<=0||a>t?(r&&(!function(...e){Eg("clearTimeout")(...e)}(r),r=null),o=s,e.apply(c,i)):r||!1===n.trailing||(r=Tg(()=>{o=!1===n.leading?0:Date.now(),r=null,e.apply(c,i)},a))}}function ag(e,t,n,r,o=window){const i=o.Object.getOwnPropertyDescriptor(e,t);return o.Object.defineProperty(e,t,r?n:{set(e){Tg(()=>{n.set.call(this,e)},0),i&&i.set&&i.set.call(this,e)}}),()=>ag(e,t,i||{},!0)}function cg(e,t,n){try{if(!(t in e))return()=>{};const r=e[t],o=n(r);return"function"==typeof o&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),e[t]=o,()=>{e[t]=r}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ig=new Proxy(ig,{get:(e,t,n)=>Reflect.get(e,t,n)}));let lg=Date.now;function dg(e){const t=e.document;return{left:t.scrollingElement?t.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:t?.documentElement.scrollLeft||t?.body?.parentElement?.scrollLeft||t?.body?.scrollLeft||0,top:t.scrollingElement?t.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:t?.documentElement.scrollTop||t?.body?.parentElement?.scrollTop||t?.body?.scrollTop||0}}function ug(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function pg(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function hg(e){if(!e)return null;try{return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}catch(e){return null}}function fg(e,t,n,r,o){if(!e)return!1;const i=hg(e);if(!i)return!1;const s=Zf(t,n);if(!o){const e=r&&i.matches(r);return s(i)&&!e}const a=Qf(i,s);let c=-1;return!(a<0)&&(r&&(c=Qf(i,Zf(null,r))),a>-1&&c<0||a<c)}function gg(e,t){return-2===t.getId(e)}function mg(e,t){if(mf(e))return!1;const n=t.getId(e);return!t.has(n)||(!e.parentNode||e.parentNode.nodeType!==e.DOCUMENT_NODE)&&(!e.parentNode||mg(e.parentNode,t))}function vg(e){return Boolean(e.changedTouches)}function yg(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function bg(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function wg(e){return Boolean(e?.shadowRoot)}/[1-9][0-9]{12}/.test(Date.now().toString())||(lg=()=>(new Date).getTime());class xg{constructor(){this.id=1,this.styleIDMap=new WeakMap,this.idStyleMap=new Map}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function kg(e){let t=null;return e.getRootNode?.()?.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.getRootNode().host&&(t=e.getRootNode().host),t}function _g(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=kg(n);)n=t;return n}(e);return t.contains(n)}function Sg(e){const t=e.ownerDocument;return!!t&&(t.contains(e)||_g(e))}const Cg={};function Eg(e){const t=Cg[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"==typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(e){}return Cg[e]=r.bind(window)}function Tg(...e){return Eg("setTimeout")(...e)}var Mg=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(Mg||{}),Ig=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(Ig||{}),Ag=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Ag||{}),Rg=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Rg||{}),Lg=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(Lg||{});function Pg(e){try{return e.contentDocument}catch(e){}}function Og(e){return"__ln"in e}class Dg{constructor(){this.length=0,this.head=null,this.tail=null}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n<e;n++)t=t?.next||null;return t}addNode(e){const t={value:e,previous:null,next:null};if(e.__ln=t,e.previousSibling&&Og(e.previousSibling)){const n=e.previousSibling.__ln.next;t.next=n,t.previous=e.previousSibling.__ln,e.previousSibling.__ln.next=t,n&&(n.previous=t)}else if(e.nextSibling&&Og(e.nextSibling)&&e.nextSibling.__ln.previous){const n=e.nextSibling.__ln.previous;t.previous=n,t.next=e.nextSibling.__ln,e.nextSibling.__ln.previous=t,n&&(n.next=t)}else this.head&&(this.head.previous=t),t.next=this.head,this.head=t;null===t.next&&(this.tail=t),this.length++}removeNode(e){const t=e.__ln;this.head&&(t.previous?(t.previous.next=t.next,t.next?t.next.previous=t.previous:this.tail=t.previous):(this.head=t.next,this.head?this.head.previous=null:this.tail=null),e.__ln&&delete e.__ln,this.length--)}}const Ng=(e,t)=>`${e}@${t}`;class Bg{constructor(){this.frozen=!1,this.locked=!1,this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.mapRemoves=[],this.movedMap={},this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.processMutations=e=>{e.forEach(this.processMutation),this.emit()},this.emit=()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Dg,r=e=>{let t=e,n=-2;for(;-2===n;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},o=o=>{if(!o.parentNode||!Sg(o))return;const i=mf(o.parentNode)?this.mirror.getId(kg(o)):this.mirror.getId(o.parentNode),s=r(o);if(-1===i||-1===s)return n.addNode(o);const a=rg(o,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskAllText:this.maskAllText,unblockSelector:this.unblockSelector,maskTextClass:this.maskTextClass,unmaskTextClass:this.unmaskTextClass,maskTextSelector:this.maskTextSelector,unmaskTextSelector:this.unmaskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskAttributeFn:this.maskAttributeFn,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{yg(e,this.mirror)&&!fg(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)&&this.iframeManager.addIframe(e),bg(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),wg(o)&&this.shadowDomManager.addShadowRoot(o.shadowRoot,this.doc)},onIframeLoad:(e,t)=>{fg(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)||(this.iframeManager.attachIframe(e,t),e.contentWindow&&this.canvasManager.addWindow(e.contentWindow),this.shadowDomManager.observeAttachShadow(e))},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},onBlockedImageLoad:(e,t,{width:n,height:r})=>{this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:{style:{width:`${n}px`,height:`${r}px`}}}]})},ignoreCSSAttributes:this.ignoreCSSAttributes});a&&(e.push({parentId:i,nextId:s,node:a}),t.add(a.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const e of this.movedSet)$g(this.removes,e,this.mirror)&&!this.movedSet.has(e.parentNode)||o(e);for(const e of this.addedSet)zg(this.droppedSet,e)||$g(this.removes,e,this.mirror)?zg(this.movedSet,e)?o(e):this.droppedSet.add(e):o(e);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(i.value.parentNode),n=r(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(n.value.parentNode);if(-1===r(n.value))continue;if(-1!==t){e=n;break}{const t=n.value;if(t.parentNode&&t.parentNode.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const r=t.parentNode.host;if(-1!==this.mirror.getId(r)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),o(e.value)}const s={texts:this.texts.map(e=>({id:this.mirror.getId(e.node),value:e.value})).filter(e=>!t.has(e.id)).filter(e=>this.mirror.has(e.id)),attributes:this.attributes.map(e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),r=JSON.stringify(e._unchangedStyles);n.length<t.style.length&&(n+r).split("var(").length===t.style.split("var(").length&&(t.style=e.styleDiff)}return{id:this.mirror.getId(e.node),attributes:t}}).filter(e=>!t.has(e.id)).filter(e=>this.mirror.has(e.id)),removes:this.removes,adds:e};(s.texts.length||s.attributes.length||s.removes.length||s.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.movedMap={},this.mutationCb(s))},this.processMutation=e=>{if(!gg(e.target,this.mirror))switch(e.type){case"characterData":{const t=e.target.textContent;fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||t===e.oldValue||this.texts.push({value:eg(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,this.maskAllText)&&t?this.maskTextFn?this.maskTextFn(t,hg(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const t=e.target;let n=e.attributeName,r=e.target.getAttribute(n);if("value"===n){const n=Ef(t),o=t.tagName;r=Tf(t,o,n);const i=xf({maskInputOptions:this.maskInputOptions,tagName:o,type:n});r=kf({isMasked:eg(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,i),element:t,value:r,maskInputFn:this.maskInputFn})}if(fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||r===e.oldValue)return;let o=this.attributeMap.get(e.target);if("IFRAME"===t.tagName&&"src"===n&&!this.keepIframeSrcFn(r)){if(Pg(t))return;n="rr_src"}if(o||(o={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(o),this.attributeMap.set(e.target,o)),"type"===n&&"INPUT"===t.tagName&&"password"===(e.oldValue||"").toLowerCase()&&t.setAttribute("data-rr-is-password","true"),!Xf(t.tagName,n)&&(o.attributes[n]=Yf(this.doc,_f(t.tagName),_f(n),r,t,this.maskAttributeFn),"style"===n)){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(e){this.unattachedDoc=this.doc}const n=this.unattachedDoc.createElement("span");e.oldValue&&n.setAttribute("style",e.oldValue);for(const e of Array.from(t.style)){const r=t.style.getPropertyValue(e),i=t.style.getPropertyPriority(e);r!==n.style.getPropertyValue(e)||i!==n.style.getPropertyPriority(e)?o.styleDiff[e]=""===i?r:[r,i]:o._unchangedStyles[e]=[r,i]}for(const e of Array.from(n.style))""===t.style.getPropertyValue(e)&&(o.styleDiff[e]=!1)}break}case"childList":if(fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!0))return;e.addedNodes.forEach(t=>this.genAdds(t,e.target)),e.removedNodes.forEach(t=>{const n=this.mirror.getId(t),r=mf(e.target)?this.mirror.getId(e.target.host):this.mirror.getId(e.target);fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||gg(t,this.mirror)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(jg(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||mg(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Ng(n,r)]?jg(this.movedSet,t):this.removes.push({parentId:r,id:n,isShadow:!(!mf(e.target)||!vf(e.target))||void 0})),this.mapRemoves.push(t))})}},this.genAdds=(e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(gg(e,this.mirror))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[Ng(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);fg(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)||(e.childNodes&&e.childNodes.forEach(e=>this.genAdds(e)),wg(e)&&e.shadowRoot.childNodes.forEach(t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)}))}}}init(e){["mutationCb","blockClass","blockSelector","unblockSelector","maskAllText","maskTextClass","unmaskTextClass","maskTextSelector","unmaskTextSelector","inlineStylesheet","maskInputOptions","maskAttributeFn","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager","ignoreCSSAttributes"].forEach(t=>{this[t]=e[t]})}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function jg(e,t){e.delete(t),t.childNodes?.forEach(t=>jg(e,t))}function $g(e,t,n){return 0!==e.length&&function(e,t,n){let r=t.parentNode;for(;r;){const t=n.getId(r);if(e.some(e=>e.id===t))return!0;r=r.parentNode}return!1}(e,t,n)}function zg(e,t){return 0!==e.size&&Fg(e,t)}function Fg(e,t){const{parentNode:n}=t;return!!n&&(!!e.has(n)||Fg(e,n))}let Hg;const qg=e=>{if(!Hg)return e;return(...t)=>{try{return e(...t)}catch(e){if(Hg&&!0===Hg(e))return()=>{};throw e}}},Ug=[];function Wg(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function Vg(e,t){const n=new Bg;Ug.push(n),n.init(e);let r=window.MutationObserver||window.__rrMutationObserver;const o=window?.Zone?.__symbol__?.("MutationObserver");o&&window[o]&&(r=window[o]);const i=new r(qg(t=>{e.onMutation&&!1===e.onMutation(t)||n.processMutations.bind(n)(t)}));return i.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),i}function Kg({mouseInteractionCb:e,doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,sampling:s}){if(!1===s.mouseInteraction)return()=>{};const a=!0===s.mouseInteraction||void 0===s.mouseInteraction?{}:s.mouseInteraction,c=[];let l=null;return Object.keys(Ag).filter(e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e]).forEach(s=>{let a=_f(s);const d=(t=>s=>{const a=Wg(s);if(fg(a,r,o,i,!0))return;let c=null,d=t;if("pointerType"in s){switch(s.pointerType){case"mouse":c=Rg.Mouse;break;case"touch":c=Rg.Touch;break;case"pen":c=Rg.Pen}c===Rg.Touch?Ag[t]===Ag.MouseDown?d="TouchStart":Ag[t]===Ag.MouseUp&&(d="TouchEnd"):Rg.Pen}else vg(s)&&(c=Rg.Touch);null!==c?(l=c,(d.startsWith("Touch")&&c===Rg.Touch||d.startsWith("Mouse")&&c===Rg.Mouse)&&(c=null)):Ag[t]===Ag.Click&&(c=l,l=null);const u=vg(s)?s.changedTouches[0]:s;if(!u)return;const p=n.getId(a),{clientX:h,clientY:f}=u;qg(e)({type:Ag[d],id:p,x:h,y:f,...null!==c&&{pointerType:c}})})(s);if(window.PointerEvent)switch(Ag[s]){case Ag.MouseDown:case Ag.MouseUp:a=a.replace("mouse","pointer");break;case Ag.TouchStart:case Ag.TouchEnd:return}c.push(og(a,d,t))}),qg(()=>{c.forEach(e=>e())})}function Gg({scrollCb:e,doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,sampling:s}){return og("scroll",qg(sg(qg(s=>{const a=Wg(s);if(!a||fg(a,r,o,i,!0))return;const c=n.getId(a);if(a===t&&t.defaultView){const n=dg(t.defaultView);e({id:c,x:n.left,y:n.top})}else e({id:c,x:a.scrollLeft,y:a.scrollTop})}),s.scroll||100)),t)}const Jg=["INPUT","TEXTAREA","SELECT"],Yg=new WeakMap;function Xg({inputCb:e,doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,ignoreClass:s,ignoreSelector:a,maskInputOptions:c,maskInputFn:l,sampling:d,userTriggeredOnInput:u,maskTextClass:p,unmaskTextClass:h,maskTextSelector:f,unmaskTextSelector:g}){function m(e){let n=Wg(e);const d=e.isTrusted,m=n&&Sf(n.tagName);if("OPTION"===m&&(n=n.parentElement),!n||!m||Jg.indexOf(m)<0||fg(n,r,o,i,!0))return;const y=n;if(y.classList.contains(s)||a&&y.matches(a))return;const b=Ef(n);let w=Tf(y,m,b),x=!1;const k=xf({maskInputOptions:c,tagName:m,type:b}),_=eg(n,p,f,h,g,k);"radio"!==b&&"checkbox"!==b||(x=n.checked),w=kf({isMasked:_,element:n,value:w,maskInputFn:l}),v(n,u?{text:w,isChecked:x,userTriggered:d}:{text:w,isChecked:x});const S=n.name;"radio"===b&&S&&x&&t.querySelectorAll(`input[type="radio"][name="${S}"]`).forEach(e=>{if(e!==n){const t=kf({isMasked:_,element:e,value:Tf(e,m,b),maskInputFn:l});v(e,u?{text:t,isChecked:!x,userTriggered:!1}:{text:t,isChecked:!x})}})}function v(t,r){const o=Yg.get(t);if(!o||o.text!==r.text||o.isChecked!==r.isChecked){Yg.set(t,r);const o=n.getId(t);qg(e)({...r,id:o})}}const y=("last"===d.input?["change"]:["input","change"]).map(e=>og(e,qg(m),t)),b=t.defaultView;if(!b)return()=>{y.forEach(e=>e())};const w=b.Object.getOwnPropertyDescriptor(b.HTMLInputElement.prototype,"value"),x=[[b.HTMLInputElement.prototype,"value"],[b.HTMLInputElement.prototype,"checked"],[b.HTMLSelectElement.prototype,"value"],[b.HTMLTextAreaElement.prototype,"value"],[b.HTMLSelectElement.prototype,"selectedIndex"],[b.HTMLOptionElement.prototype,"selected"]];return w&&w.set&&y.push(...x.map(e=>ag(e[0],e[1],{set(){qg(m)({target:this,isTrusted:!1})}},!1,b))),qg(()=>{y.forEach(e=>e())})}function Qg(e){return function(e,t){if(nm("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||nm("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||nm("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||nm("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function Zg(e,t,n){let r,o;return e?(e.ownerNode?r=t.getId(e.ownerNode):o=n.getId(e),{styleId:o,id:r}):{}}function em({mirror:e,stylesheetManager:t},n){let r=null;r="#document"===n.nodeName?e.getId(n):e.getId(n.host);const o="#document"===n.nodeName?n.defaultView?.Document:n.ownerDocument?.defaultView?.ShadowRoot,i=o?.prototype?Object.getOwnPropertyDescriptor(o?.prototype,"adoptedStyleSheets"):void 0;return null!==r&&-1!==r&&o&&i?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:i.configurable,enumerable:i.enumerable,get(){return i.get?.call(this)},set(e){const n=i.set?.call(this,e);if(null!==r&&-1!==r)try{t.adoptStyleSheets(e,r)}catch(e){}return n}}),qg(()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:i.configurable,enumerable:i.enumerable,get:i.get,set:i.set})})):()=>{}}function tm(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let r;e.recordDOM&&(r=Vg(e,e.doc));const o=function({mousemoveCb:e,sampling:t,doc:n,mirror:r}){if(!1===t.mousemove)return()=>{};const o="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let s,a=[];const c=sg(qg(t=>{const n=Date.now()-s;e(a.map(e=>(e.timeOffset-=n,e)),t),a=[],s=null}),i),l=qg(sg(qg(e=>{const t=Wg(e),{clientX:n,clientY:o}=vg(e)?e.changedTouches[0]:e;s||(s=lg()),a.push({x:n,y:o,id:r.getId(t),timeOffset:lg()-s}),c("undefined"!=typeof DragEvent&&e instanceof DragEvent?Ig.Drag:e instanceof MouseEvent?Ig.MouseMove:Ig.TouchMove)}),o,{trailing:!1})),d=[og("mousemove",l,n),og("touchmove",l,n),og("drag",l,n)];return qg(()=>{d.forEach(e=>e())})}(e),i=Kg(e),s=Gg(e),a=function({viewportResizeCb:e},{win:t}){let n=-1,r=-1;return og("resize",qg(sg(qg(()=>{const t=ug(),o=pg();n===t&&r===o||(e({width:Number(o),height:Number(t)}),n=t,r=o)}),200)),t)}(e,{win:n}),c=Xg(e),l=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,unblockSelector:r,mirror:o,sampling:i,doc:s}){const a=qg(s=>sg(qg(i=>{const a=Wg(i);if(!a||fg(a,t,n,r,!0))return;const{currentTime:c,volume:l,muted:d,playbackRate:u}=a;e({type:s,id:o.getId(a),currentTime:c,volume:l,muted:d,playbackRate:u})}),i.media||500)),c=[og("play",a(Lg.Play),s),og("pause",a(Lg.Pause),s),og("seeked",a(Lg.Seeked),s),og("volumechange",a(Lg.VolumeChange),s),og("ratechange",a(Lg.RateChange),s)];return qg(()=>{c.forEach(e=>e())})}(e);let d=()=>{},u=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(d=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:r}){if(!r.CSSStyleSheet||!r.CSSStyleSheet.prototype)return()=>{};const o=r.CSSStyleSheet.prototype.insertRule;r.CSSStyleSheet.prototype.insertRule=new Proxy(o,{apply:qg((r,o,i)=>{const[s,a]=i,{id:c,styleId:l}=Zg(o,t,n.styleMirror);return(c&&-1!==c||l&&-1!==l)&&e({id:c,styleId:l,adds:[{rule:s,index:a}]}),r.apply(o,i)})});const i=r.CSSStyleSheet.prototype.deleteRule;let s,a;r.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,removes:[{index:s}]}),r.apply(o,i)})}),r.CSSStyleSheet.prototype.replace&&(s=r.CSSStyleSheet.prototype.replace,r.CSSStyleSheet.prototype.replace=new Proxy(s,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,replace:s}),r.apply(o,i)})})),r.CSSStyleSheet.prototype.replaceSync&&(a=r.CSSStyleSheet.prototype.replaceSync,r.CSSStyleSheet.prototype.replaceSync=new Proxy(a,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,replaceSync:s}),r.apply(o,i)})}));const c={};rm("CSSGroupingRule")?c.CSSGroupingRule=r.CSSGroupingRule:(rm("CSSMediaRule")&&(c.CSSMediaRule=r.CSSMediaRule),rm("CSSConditionRule")&&(c.CSSConditionRule=r.CSSConditionRule),rm("CSSSupportsRule")&&(c.CSSSupportsRule=r.CSSSupportsRule));const l={};return Object.entries(c).forEach(([r,o])=>{l[r]={insertRule:o.prototype.insertRule,deleteRule:o.prototype.deleteRule},o.prototype.insertRule=new Proxy(l[r].insertRule,{apply:qg((r,o,i)=>{const[s,a]=i,{id:c,styleId:l}=Zg(o.parentStyleSheet,t,n.styleMirror);return(c&&-1!==c||l&&-1!==l)&&e({id:c,styleId:l,adds:[{rule:s,index:[...Qg(o),a||0]}]}),r.apply(o,i)})}),o.prototype.deleteRule=new Proxy(l[r].deleteRule,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o.parentStyleSheet,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,removes:[{index:[...Qg(o),s]}]}),r.apply(o,i)})})}),qg(()=>{r.CSSStyleSheet.prototype.insertRule=o,r.CSSStyleSheet.prototype.deleteRule=i,s&&(r.CSSStyleSheet.prototype.replace=s),a&&(r.CSSStyleSheet.prototype.replaceSync=a),Object.entries(c).forEach(([e,t])=>{t.prototype.insertRule=l[e].insertRule,t.prototype.deleteRule=l[e].deleteRule})})}(e,{win:n}),u=em(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:r},{win:o}){const i=o.CSSStyleDeclaration.prototype.setProperty;o.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:qg((o,s,a)=>{const[c,l,d]=a;if(n.has(c))return i.apply(s,[c,l,d]);const{id:u,styleId:p}=Zg(s.parentRule?.parentStyleSheet,t,r.styleMirror);return(u&&-1!==u||p&&-1!==p)&&e({id:u,styleId:p,set:{property:c,value:l,priority:d},index:Qg(s.parentRule)}),o.apply(s,a)})});const s=o.CSSStyleDeclaration.prototype.removeProperty;return o.CSSStyleDeclaration.prototype.removeProperty=new Proxy(s,{apply:qg((o,i,a)=>{const[c]=a;if(n.has(c))return s.apply(i,[c]);const{id:l,styleId:d}=Zg(i.parentRule?.parentStyleSheet,t,r.styleMirror);return(l&&-1!==l||d&&-1!==d)&&e({id:l,styleId:d,remove:{property:c},index:Qg(i.parentRule)}),o.apply(i,a)})}),qg(()=>{o.CSSStyleDeclaration.prototype.setProperty=i,o.CSSStyleDeclaration.prototype.removeProperty=s})}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const r=[],o=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const r=new i(e,t,n);return o.set(r,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),r};const s=cg(t.fonts,"add",function(t){return function(n){return Tg(qg(()=>{const t=o.get(n);t&&(e(t),o.delete(n))}),0),t.apply(this,[n])}});return r.push(()=>{n.FontFace=i}),r.push(s),qg(()=>{r.forEach(e=>e())})}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,selectionCb:s}=e;let a=!0;const c=qg(()=>{const e=t.getSelection();if(!e||a&&e?.isCollapsed)return;a=e.isCollapsed||!1;const c=[],l=e.rangeCount||0;for(let t=0;t<l;t++){const s=e.getRangeAt(t),{startContainer:a,startOffset:l,endContainer:d,endOffset:u}=s;fg(a,r,o,i,!0)||fg(d,r,o,i,!0)||c.push({start:n.getId(a),startOffset:l,end:n.getId(d),endOffset:u})}s({ranges:c})});return c(),og("selectionchange",c)}(e),g=function({doc:e,customElementCb:t}){const n=e.defaultView;return n&&n.customElements?cg(n.customElements,"define",function(e){return function(n,r,o){try{t({define:{name:n}})}catch(e){}return e.apply(this,[n,r,o])}}):()=>{}}(e),m=[];for(const t of e.plugins)m.push(t.observer(t.callback,n,t.options));return qg(()=>{Ug.forEach(e=>e.reset()),r?.disconnect(),o(),i(),s(),a(),c(),l(),d(),u(),p(),h(),f(),g(),m.forEach(e=>e())})}function nm(e){return void 0!==window[e]}function rm(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class om{constructor(e){this.generateIdFn=e,this.iframeIdToRemoteIdMap=new WeakMap,this.iframeRemoteIdToIdMap=new WeakMap}getId(e,t,n,r){const o=n||this.getIdToRemoteIdMap(e),i=r||this.getRemoteIdToIdMap(e);let s=o.get(t);return s||(s=this.generateIdFn(),o.set(t,s),i.set(s,t)),s}getIds(e,t){const n=this.getIdToRemoteIdMap(e),r=this.getRemoteIdToIdMap(e);return t.map(t=>this.getId(e,t,n,r))}getRemoteId(e,t,n){const r=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const o=r.get(t);return o||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map(t=>this.getRemoteId(e,t,n))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class im{constructor(){this.crossOriginIframeMirror=new om(Nf),this.crossOriginIframeRootIdMap=new WeakMap}addIframe(){}addLoadListener(){}attachIframe(){}}class sm{constructor(e){this.iframes=new WeakMap,this.crossOriginIframeMap=new WeakMap,this.crossOriginIframeMirror=new om(Nf),this.crossOriginIframeRootIdMap=new WeakMap,this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new om(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&e.contentWindow?.addEventListener("message",this.handleMessage.bind(this)),this.loadListener?.(e);const n=Pg(e);n&&n.adoptedStyleSheets&&n.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(n.adoptedStyleSheets,this.mirror.getId(n))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const r=this.transformCrossOriginEvent(n,t.data.event);r&&this.wrappedEmit(r,t.data.isCheckout)}transformCrossOriginEvent(e,t){switch(t.type){case Mg.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:Mg.IncrementalSnapshot,data:{source:Ig.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Mg.Meta:case Mg.Load:case Mg.DomContentLoaded:return!1;case Mg.Plugin:return t;case Mg.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Mg.IncrementalSnapshot:switch(t.data.source){case Ig.Mutation:return t.data.adds.forEach(t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)}),t.data.removes.forEach(t=>{this.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(t=>{this.replaceIds(t,e,["id"])}),t.data.texts.forEach(t=>{this.replaceIds(t,e,["id"])}),t;case Ig.Drag:case Ig.TouchMove:case Ig.MouseMove:return t.data.positions.forEach(t=>{this.replaceIds(t,e,["id"])}),t;case Ig.ViewportResize:return!1;case Ig.MediaInteraction:case Ig.MouseInteraction:case Ig.Scroll:case Ig.CanvasMutation:case Ig.Input:return this.replaceIds(t.data,e,["id"]),t;case Ig.StyleSheetRule:case Ig.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Ig.Font:return t;case Ig.Selection:return t.data.ranges.forEach(t=>{this.replaceIds(t,e,["start","end"])}),t;case Ig.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),t.data.styles?.forEach(t=>{this.replaceStyleIds(t,e,["styleId"])}),t}}return!1}replace(e,t,n,r){for(const o of r)(Array.isArray(t[o])||"number"==typeof t[o])&&(Array.isArray(t[o])?t[o]=e.getIds(n,t[o]):t[o]=e.getId(n,t[o]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(e=>{this.replaceIdOnNode(e,t)})}patchRootIdOnNode(e,t){e.type===gf.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(e=>{this.patchRootIdOnNode(e,t)})}}class am{init(){}addShadowRoot(){}observeAttachShadow(){}reset(){}}class cm{constructor(e){this.shadowDoms=new WeakSet,this.restoreHandlers=[],this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!vf(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e),this.bypassOptions.canvasManager.addShadowRoot(e);const n=Vg({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push(()=>n.disconnect()),this.restoreHandlers.push(Gg({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),Tg(()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(e.host)),this.restoreHandlers.push(em({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))},0)}observeAttachShadow(e){const t=Pg(e),n=function(e){try{return e.contentWindow}catch(e){}}(e);t&&n&&this.patchAttachShadow(n.Element,t)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(cg(e.prototype,"attachShadow",function(e){return function(r){const o=e.call(this,r);return this.shadowRoot&&Sg(this)&&n.addShadowRoot(this.shadowRoot,t),o}}))}reset(){this.restoreHandlers.forEach(e=>{try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet,this.bypassOptions.canvasManager.resetShadowRoots()}}for(var lm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",dm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),um=0;um<64;um++)dm[lm.charCodeAt(um)]=um;class pm{reset(){}freeze(){}unfreeze(){}lock(){}unlock(){}snapshot(){}addWindow(){}addShadowRoot(){}resetShadowRoots(){}}class hm{constructor(e){this.trackedLinkElements=new WeakSet,this.styleMirror=new xg,this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},r=[];for(const t of e){let e;this.styleMirror.has(t)?e=this.styleMirror.getId(t):(e=this.styleMirror.add(t),r.push({styleId:e,rules:Array.from(t.rules||CSSRule,(e,t)=>({rule:bf(e),index:t}))})),n.styleIds.push(e)}r.length>0&&(n.styles=r),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class fm{constructor(){this.nodeMap=new WeakMap,this.active=!1}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some(e=>e!==t)}add(e,t){this.active||(this.active=!0,function(...e){Eg("requestAnimationFrame")(...e)}(()=>{this.nodeMap=new WeakMap,this.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let gm,mm;try{if(2!==Array.from([1],e=>2*e)[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=e.contentWindow?.Array.from||Array.from,document.body.removeChild(e)}}catch(e){}const vm=new wf;function ym(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:r,blockClass:o="rr-block",blockSelector:i=null,unblockSelector:s=null,ignoreClass:a="rr-ignore",ignoreSelector:c=null,maskAllText:l=!1,maskTextClass:d="rr-mask",unmaskTextClass:u=null,maskTextSelector:p=null,unmaskTextSelector:h=null,inlineStylesheet:f=!0,maskAllInputs:g,maskInputOptions:m,slimDOMOptions:v,maskAttributeFn:y,maskInputFn:b,maskTextFn:w,maxCanvasSize:x=null,packFn:k,sampling:_={},dataURLOptions:S={},mousemoveWait:C,recordDOM:E=!0,recordCanvas:T=!1,recordCrossOriginIframes:M=!1,recordAfter:I=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:A=!1,collectFonts:R=!1,inlineImages:L=!1,plugins:P,keepIframeSrcFn:O=()=>!1,ignoreCSSAttributes:D=new Set([]),errorHandler:N,onMutation:B,getCanvasManager:j}=e;Hg=N;const $=!M||window.parent===window;let z=!1;if(!$)try{window.parent.document&&(z=!1)}catch(e){z=!0}if($&&!t)throw new Error("emit function is required");if(!$&&!z)return()=>{};void 0!==C&&void 0===_.mousemove&&(_.mousemove=C),vm.reset();const F=!0===g?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,radio:!0,checkbox:!0}:void 0!==m?m:{},H=!0===v||"all"===v?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===v,headMetaDescKeywords:"all"===v}:v||{};let q;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach),Node.prototype.contains||(Node.prototype.contains=(...e)=>{let t=e[0];if(!(0 in e))throw new TypeError("1 argument is required");do{if(this===t)return!0}while(t=t&&t.parentNode);return!1})}();let U=0;const W=e=>{for(const t of P||[])t.eventProcessor&&(e=t.eventProcessor(e));return k&&!z&&(e=k(e)),e};gm=(e,o)=>{const i=e;if(i.timestamp=lg(),!Ug[0]?.isFrozen()||i.type===Mg.FullSnapshot||i.type===Mg.IncrementalSnapshot&&i.data.source===Ig.Mutation||Ug.forEach(e=>e.unfreeze()),$)t?.(W(i),o);else if(z){const e={type:"rrweb",event:W(i),origin:window.location.origin,isCheckout:o};window.parent.postMessage(e,"*")}if(i.type===Mg.FullSnapshot)q=i,U=0;else if(i.type===Mg.IncrementalSnapshot){if(i.data.source===Ig.Mutation&&i.data.isAttachIframe)return;U++;const e=r&&U>=r,t=n&&q&&i.timestamp-q.timestamp>n;(e||t)&&ee(!0)}};const V=e=>{gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Mutation,...e}})},K=e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Scroll,...e}}),G=e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.CanvasMutation,...e}}),J=new hm({mutationCb:V,adoptedStyleSheetCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.AdoptedStyleSheet,...e}})}),Y="boolean"==typeof __RRWEB_EXCLUDE_IFRAME__&&__RRWEB_EXCLUDE_IFRAME__?new im:new sm({mirror:vm,mutationCb:V,stylesheetManager:J,recordCrossOriginIframes:M,wrappedEmit:gm});for(const e of P||[])e.getMirror&&e.getMirror({nodeMirror:vm,crossOriginIframeMirror:Y.crossOriginIframeMirror,crossOriginIframeStyleMirror:Y.crossOriginIframeStyleMirror});const X=new fm,Q=function(e,t){try{return e?e(t):new pm}catch{return new pm}}(j,{mirror:vm,win:window,mutationCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.CanvasMutation,...e}}),recordCanvas:T,blockClass:o,blockSelector:i,unblockSelector:s,maxCanvasSize:x,sampling:_.canvas,dataURLOptions:S,errorHandler:N}),Z="boolean"==typeof __RRWEB_EXCLUDE_SHADOW_DOM__&&__RRWEB_EXCLUDE_SHADOW_DOM__?new am:new cm({mutationCb:V,scrollCb:K,bypassOptions:{onMutation:B,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:p,unmaskTextSelector:h,inlineStylesheet:f,maskInputOptions:F,dataURLOptions:S,maskAttributeFn:y,maskTextFn:w,maskInputFn:b,recordCanvas:T,inlineImages:L,sampling:_,slimDOMOptions:H,iframeManager:Y,stylesheetManager:J,canvasManager:Q,keepIframeSrcFn:O,processedNodeManager:X,ignoreCSSAttributes:D},mirror:vm}),ee=(e=!1)=>{if(!E)return;gm({type:Mg.Meta,data:{href:window.location.href,width:pg(),height:ug()}},e),J.reset(),Z.init(),Ug.forEach(e=>e.lock());const t=function(e,t){const{mirror:n=new wf,blockClass:r="rr-block",blockSelector:o=null,unblockSelector:i=null,maskAllText:s=!1,maskTextClass:a="rr-mask",unmaskTextClass:c=null,maskTextSelector:l=null,unmaskTextSelector:d=null,inlineStylesheet:u=!0,inlineImages:p=!1,recordCanvas:h=!1,maskAllInputs:f=!1,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOM:y=!1,dataURLOptions:b,preserveWhiteSpace:w,onSerialize:x,onIframeLoad:k,iframeLoadTimeout:_,onBlockedImageLoad:S,onStylesheetLoad:C,stylesheetLoadTimeout:E,keepIframeSrcFn:T=()=>!1,ignoreCSSAttributes:M=new Set([])}=t||{};return rg(e,{doc:e,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,maskAllText:s,maskTextClass:a,unmaskTextClass:c,maskTextSelector:l,unmaskTextSelector:d,skipChild:!1,inlineStylesheet:u,maskInputOptions:!0===f?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0}:!1===f?{}:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:!0===y||"all"===y?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===y,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===y?{}:y,dataURLOptions:b,inlineImages:p,recordCanvas:h,preserveWhiteSpace:w,onSerialize:x,onIframeLoad:k,iframeLoadTimeout:_,onBlockedImageLoad:S,onStylesheetLoad:C,stylesheetLoadTimeout:E,keepIframeSrcFn:T,newlyAddedElement:!1,ignoreCSSAttributes:M})}(document,{mirror:vm,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:p,unmaskTextSelector:h,inlineStylesheet:f,maskAllInputs:F,maskAttributeFn:y,maskInputFn:b,maskTextFn:w,slimDOM:H,dataURLOptions:S,recordCanvas:T,inlineImages:L,onSerialize:e=>{yg(e,vm)&&Y.addIframe(e),bg(e,vm)&&J.trackLinkElement(e),wg(e)&&Z.addShadowRoot(e.shadowRoot,document)},onIframeLoad:(e,t)=>{Y.attachIframe(e,t),e.contentWindow&&Q.addWindow(e.contentWindow),Z.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{J.attachLinkElement(e,t)},onBlockedImageLoad:(e,t,{width:n,height:r})=>{V({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:{style:{width:`${n}px`,height:`${r}px`}}}]})},keepIframeSrcFn:O,ignoreCSSAttributes:D});t&&(gm({type:Mg.FullSnapshot,data:{node:t,initialOffset:dg(window)}}),Ug.forEach(e=>e.unlock()),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&J.adoptStyleSheets(document.adoptedStyleSheets,vm.getId(document)))};mm=ee;try{const e=[],t=e=>qg(tm)({onMutation:B,mutationCb:V,mousemoveCb:(e,t)=>gm({type:Mg.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.MouseInteraction,...e}}),scrollCb:K,viewportResizeCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.ViewportResize,...e}}),inputCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Input,...e}}),mediaInteractionCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.MediaInteraction,...e}}),styleSheetRuleCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.StyleSheetRule,...e}}),styleDeclarationCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.StyleDeclaration,...e}}),canvasMutationCb:G,fontCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Font,...e}}),selectionCb:e=>{gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Selection,...e}})},customElementCb:e=>{gm({type:Mg.IncrementalSnapshot,data:{source:Ig.CustomElement,...e}})},blockClass:o,ignoreClass:a,ignoreSelector:c,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:p,unmaskTextSelector:h,maskInputOptions:F,inlineStylesheet:f,sampling:_,recordDOM:E,recordCanvas:T,inlineImages:L,userTriggeredOnInput:A,collectFonts:R,doc:e,maskAttributeFn:y,maskInputFn:b,maskTextFn:w,keepIframeSrcFn:O,blockSelector:i,unblockSelector:s,slimDOMOptions:H,dataURLOptions:S,mirror:vm,iframeManager:Y,stylesheetManager:J,shadowDomManager:Z,processedNodeManager:X,canvasManager:Q,ignoreCSSAttributes:D,plugins:P?.filter(e=>e.observer)?.map(e=>({observer:e.observer,options:e.options,callback:t=>gm({type:Mg.Plugin,data:{plugin:e.name,payload:t}})}))||[]},{});Y.addLoadListener(n=>{try{e.push(t(n.contentDocument))}catch(e){}});const n=()=>{ee(),e.push(t(document))};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(og("DOMContentLoaded",()=>{gm({type:Mg.DomContentLoaded,data:{}}),"DOMContentLoaded"===I&&n()})),e.push(og("load",()=>{gm({type:Mg.Load,data:{}}),"load"===I&&n()},window))),()=>{e.forEach(e=>e()),X.destroy(),mm=void 0,Hg=void 0}}catch(e){}}var bm,wm;ym.mirror=vm,ym.takeFullSnapshot=function(e){if(!mm)throw new Error("please take full snapshot after start recording");mm(e)},(wm=bm||(bm={}))[wm.NotStarted=0]="NotStarted",wm[wm.Running=1]="Running",wm[wm.Stopped=2]="Stopped";function xm(e){return e>9999999999?e:1e3*e}function km(e){return e>9999999999?e/1e3:e}function _m(e,t){"sentry.transaction"!==t.category&&(["ui.click","ui.input"].includes(t.category)?e.triggerUserActivity():e.checkAndHandleExpiredSession(),e.addUpdate(()=>(e.throttledAddEvent({type:Mg.Custom,timestamp:1e3*(t.timestamp||0),data:{tag:"breadcrumb",payload:bn(t,10,1e3)}}),"console"===t.category)))}function Sm(e){return e.closest("button,a")||e}function Cm(e){const t=Em(e);return t&&t instanceof Element?Sm(t):t}function Em(e){return function(e){return"object"==typeof e&&!!e&&"target"in e}(e)?e.target:e}let Tm;function Mm(e){return Tm||(Tm=[],oe(sf,"open",function(e){return function(...t){if(Tm)try{Tm.forEach(e=>e())}catch{}return e.apply(sf,t)}})),Tm.push(e),()=>{const t=Tm?Tm.indexOf(e):-1;t>-1&&Tm.splice(t,1)}}const Im=new Set([Ig.Mutation,Ig.StyleSheetRule,Ig.StyleDeclaration,Ig.AdoptedStyleSheet,Ig.CanvasMutation,Ig.Selection,Ig.MediaInteraction]);class Am{constructor(e,t,n=_m){this._lastMutation=0,this._lastScroll=0,this._clicks=[],this._timeout=t.timeout/1e3,this._threshold=t.threshold/1e3,this._scrollTimeout=t.scrollTimeout/1e3,this._replay=e,this._ignoreSelector=t.ignoreSelector,this._addBreadcrumbEvent=n}addListeners(){const e=Mm(()=>{this._lastMutation=Lm()});this._teardown=()=>{e(),this._clicks=[],this._lastMutation=0,this._lastScroll=0}}removeListeners(){this._teardown&&this._teardown(),this._checkClickTimeout&&clearTimeout(this._checkClickTimeout)}handleClick(e,t){if(function(e,t){if(!Rm.includes(e.tagName))return!0;if("INPUT"===e.tagName&&!["submit","button"].includes(e.getAttribute("type")||""))return!0;if("A"===e.tagName&&(e.hasAttribute("download")||e.hasAttribute("target")&&"_self"!==e.getAttribute("target")))return!0;if(t&&e.matches(t))return!0;return!1}(t,this._ignoreSelector)||!function(e){return!(!e.data||"number"!=typeof e.data.nodeId||!e.timestamp)}(e))return;const n={timestamp:km(e.timestamp),clickBreadcrumb:e,clickCount:0,node:t};this._clicks.some(e=>e.node===n.node&&Math.abs(e.timestamp-n.timestamp)<1)||(this._clicks.push(n),1===this._clicks.length&&this._scheduleCheckClicks())}registerMutation(e=Date.now()){this._lastMutation=km(e)}registerScroll(e=Date.now()){this._lastScroll=km(e)}registerClick(e){const t=Sm(e);this._handleMultiClick(t)}_handleMultiClick(e){this._getClicks(e).forEach(e=>{e.clickCount++})}_getClicks(e){return this._clicks.filter(t=>t.node===e)}_checkClicks(){const e=[],t=Lm();this._clicks.forEach(n=>{!n.mutationAfter&&this._lastMutation&&(n.mutationAfter=n.timestamp<=this._lastMutation?this._lastMutation-n.timestamp:void 0),!n.scrollAfter&&this._lastScroll&&(n.scrollAfter=n.timestamp<=this._lastScroll?this._lastScroll-n.timestamp:void 0),n.timestamp+this._timeout<=t&&e.push(n)});for(const t of e){const e=this._clicks.indexOf(t);e>-1&&(this._generateBreadcrumbs(t),this._clicks.splice(e,1))}this._clicks.length&&this._scheduleCheckClicks()}_generateBreadcrumbs(e){const t=this._replay,n=e.scrollAfter&&e.scrollAfter<=this._scrollTimeout,r=e.mutationAfter&&e.mutationAfter<=this._threshold,o=!n&&!r,{clickCount:i,clickBreadcrumb:s}=e;if(o){const n=1e3*Math.min(e.mutationAfter||this._timeout,this._timeout),r=n<1e3*this._timeout?"mutation":"timeout",o={type:"default",message:s.message,timestamp:s.timestamp,category:"ui.slowClickDetected",data:{...s.data,url:sf.location.href,route:t.getCurrentRoute(),timeAfterClickMs:n,endReason:r,clickCount:i||1}};return void this._addBreadcrumbEvent(t,o)}if(i>1){const e={type:"default",message:s.message,timestamp:s.timestamp,category:"ui.multiClick",data:{...s.data,url:sf.location.href,route:t.getCurrentRoute(),clickCount:i,metric:!0}};this._addBreadcrumbEvent(t,e)}}_scheduleCheckClicks(){this._checkClickTimeout&&clearTimeout(this._checkClickTimeout),this._checkClickTimeout=Op(()=>this._checkClicks(),1e3)}}const Rm=["A","BUTTON","INPUT"];function Lm(){return Date.now()/1e3}function Pm(e,t){try{if(!function(e){return 3===e.type}(t))return;const{source:n}=t.data;if(Im.has(n)&&e.registerMutation(t.timestamp),n===Ig.Scroll&&e.registerScroll(t.timestamp),function(e){return e.data.source===Ig.MouseInteraction}(t)){const{type:n,id:r}=t.data,o=ym.mirror.getNode(r);o instanceof HTMLElement&&n===Ag.Click&&e.registerClick(o)}}catch{}}function Om(e){return{timestamp:Date.now()/1e3,type:"default",...e}}var Dm=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Dm||{});const Nm=new Set(["id","class","aria-label","role","name","alt","title","data-test-id","data-testid","disabled","aria-disabled","data-sentry-component"]);function Bm(e){const t={};!e["data-sentry-component"]&&e["data-sentry-element"]&&(e["data-sentry-component"]=e["data-sentry-element"]);for(const n in e)if(Nm.has(n)){let r=n;"data-testid"!==n&&"data-test-id"!==n||(r="testId"),t[r]=e[n]}return t}const jm=e=>t=>{if(!e.isEnabled())return;const n=function(e){const{target:t,message:n}=function(e){const t="click"===e.name;let n,r=null;try{r=t?Cm(e.event):Em(e.event),n=ee(r,{maxStringLength:200})||"<unknown>"}catch{n="<unknown>"}return{target:r,message:n}}(e);return Om({category:`ui.${e.name}`,...$m(t,n)})}(t);if(!n)return;const r="click"===t.name,o=r?t.event:void 0;!(r&&e.clickDetector&&o?.target)||o.altKey||o.metaKey||o.ctrlKey||o.shiftKey||function(e,t,n){e.handleClick(t,n)}(e.clickDetector,n,Cm(t.event)),_m(e,n)};function $m(e,t){const n=ym.mirror.getId(e),r=n&&ym.mirror.getNode(n),o=r&&ym.mirror.getMeta(r),i=o&&function(e){return e.type===Dm.Element}(o)?o:null;return{message:t,data:i?{nodeId:n,node:{id:n,tagName:i.tagName,textContent:Array.from(i.childNodes).map(e=>e.type===Dm.Text&&e.textContent).filter(Boolean).map(e=>e.trim()).join(""),attributes:Bm(i.attributes)}}:{}}}function zm(e,t){if(!e.isEnabled())return;e.updateUserActivity();const n=function(e){const{metaKey:t,shiftKey:n,ctrlKey:r,altKey:o,key:i,target:s}=e;if(!s||function(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName||e.isContentEditable}(s)||!i)return null;const a=t||r||o,c=1===i.length;if(!a&&c)return null;const l=ee(s,{maxStringLength:200})||"<unknown>",d=$m(s,l);return Om({category:"ui.keyDown",message:l,data:{...d.data,metaKey:t,shiftKey:n,ctrlKey:r,altKey:o,key:i}})}(t);n&&_m(e,n)}const Fm={resource:function(e){const{entryType:t,initiatorType:n,name:r,responseEnd:o,startTime:i,decodedBodySize:s,encodedBodySize:a,responseStatus:c,transferSize:l}=e;if(["fetch","xmlhttprequest"].includes(n))return null;return{type:`${t}.${n}`,start:Um(i),end:Um(o),name:r,data:{size:l,statusCode:c,decodedBodySize:s,encodedBodySize:a}}},paint:function(e){const{duration:t,entryType:n,name:r,startTime:o}=e,i=Um(o);return{type:n,name:r,start:i,end:i+t,data:void 0}},navigation:function(e){const{entryType:t,name:n,decodedBodySize:r,duration:o,domComplete:i,encodedBodySize:s,domContentLoadedEventStart:a,domContentLoadedEventEnd:c,domInteractive:l,loadEventStart:d,loadEventEnd:u,redirectCount:p,startTime:h,transferSize:f,type:g}=e;if(0===o)return null;return{type:`${t}.${g}`,start:Um(h),end:Um(i),name:n,data:{size:f,decodedBodySize:r,encodedBodySize:s,duration:o,domInteractive:l,domContentLoadedEventStart:a,domContentLoadedEventEnd:c,loadEventStart:d,loadEventEnd:u,domComplete:i,redirectCount:p}}}};function Hm(e,t){return({metric:n})=>{t.replayPerformanceEntries.push(e(n))}}function qm(e){const t=Fm[e.entryType];return t?t(e):null}function Um(e){return((Le()||sf.performance.timeOrigin)+e)/1e3}function Wm(e){const t=e.entries[e.entries.length-1];return Jm(e,"largest-contentful-paint",t?.element?[t.element]:void 0)}function Vm(e){return void 0!==e.sources}function Km(e){const t=[],n=[];for(const r of e.entries)if(Vm(r)){const e=[];for(const t of r.sources)if(t.node){n.push(t.node);const r=ym.mirror.getId(t.node);r&&e.push(r)}t.push({value:r.value,nodeIds:e.length?e:void 0})}return Jm(e,"cumulative-layout-shift",n,t)}function Gm(e){const t=e.entries[e.entries.length-1];return Jm(e,"interaction-to-next-paint",t?.target?[t.target]:void 0)}function Jm(e,t,n,r){const o=e.value,i=e.rating,s=Um(o);return{type:"web-vital",name:t,start:s,end:s,data:{value:o,size:o,rating:i,nodeIds:n?n.map(e=>ym.mirror.getId(e)):void 0,attributions:r}}}const Ym="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;const Xm=["log","warn","error"],Qm="[Replay] ";function Zm(e,t="info"){Qo({category:"console",data:{logger:"replay"},level:t,message:`${Qm}${e}`},{level:t})}const ev=function(){let e=!1,t=!1;const n={exception:()=>{},infoTick:()=>{},setConfig:n=>{e=!!n.captureExceptions,t=!!n.traceInternals}};return Ym?(Xm.forEach(e=>{n[e]=(...n)=>{y[e](Qm,...n),t&&Zm(n.join(""),bi(e))}}),n.exception=(r,...o)=>{o.length&&n.error&&n.error(...o),y.error(Qm,r),e?wr(r,{mechanism:{handled:!0,type:"auto.function.replay.debug"}}):t&&Zm(r,"error")},n.infoTick=(...e)=>{y.log(Qm,...e),t&&setTimeout(()=>Zm(e[0]),0)}):Xm.forEach(e=>{n[e]=()=>{}}),n}();class tv extends Error{constructor(){super("Event buffer exceeded maximum size of 20000000.")}}class nv{constructor(){this.events=[],this._totalSize=0,this.hasCheckout=!1,this.waitForCheckout=!1}get hasEvents(){return this.events.length>0}get type(){return"sync"}destroy(){this.events=[]}async addEvent(e){const t=JSON.stringify(e).length;if(this._totalSize+=t,this._totalSize>uf)throw new tv;this.events.push(e)}finish(){return new Promise(e=>{const t=this.events;this.clear(),e(JSON.stringify(t))})}clear(){this.events=[],this._totalSize=0,this.hasCheckout=!1}getEarliestTimestamp(){const e=this.events.map(e=>e.timestamp).sort()[0];return e?xm(e):null}}class rv{constructor(e){this._worker=e,this._id=0}ensureReady(){return this._ensureReadyPromise||(this._ensureReadyPromise=new Promise((e,t)=>{this._worker.addEventListener("message",({data:n})=>{n.success?e():t()},{once:!0}),this._worker.addEventListener("error",e=>{t(e)},{once:!0})})),this._ensureReadyPromise}destroy(){Ym&&ev.log("Destroying compression worker"),this._worker.terminate()}postMessage(e,t){const n=this._getAndIncrementId();return new Promise((r,o)=>{const i=({data:t})=>{const s=t;if(s.method===e&&s.id===n){if(this._worker.removeEventListener("message",i),!s.success)return Ym&&ev.error("Error in compression worker: ",s.response),void o(new Error("Error in compression worker"));r(s.response)}};this._worker.addEventListener("message",i),this._worker.postMessage({id:n,method:e,arg:t})})}_getAndIncrementId(){return this._id++}}class ov{constructor(e){this._worker=new rv(e),this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1,this.waitForCheckout=!1}get hasEvents(){return!!this._earliestTimestamp}get type(){return"worker"}ensureReady(){return this._worker.ensureReady()}destroy(){this._worker.destroy()}addEvent(e){const t=xm(e.timestamp);(!this._earliestTimestamp||t<this._earliestTimestamp)&&(this._earliestTimestamp=t);const n=JSON.stringify(e);return this._totalSize+=n.length,this._totalSize>uf?Promise.reject(new tv):this._sendEventToWorker(n)}finish(){return this._finishRequest()}clear(){this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1,this._worker.postMessage("clear").then(null,e=>{Ym&&ev.exception(e,'Sending "clear" message to worker failed',e)})}getEarliestTimestamp(){return this._earliestTimestamp}_sendEventToWorker(e){return this._worker.postMessage("addEvent",e)}async _finishRequest(){const e=await this._worker.postMessage("finish");return this._earliestTimestamp=null,this._totalSize=0,e}}class iv{constructor(e){this._fallback=new nv,this._compression=new ov(e),this._used=this._fallback,this._ensureWorkerIsLoadedPromise=this._ensureWorkerIsLoaded()}get waitForCheckout(){return this._used.waitForCheckout}get type(){return this._used.type}get hasEvents(){return this._used.hasEvents}get hasCheckout(){return this._used.hasCheckout}set hasCheckout(e){this._used.hasCheckout=e}set waitForCheckout(e){this._used.waitForCheckout=e}destroy(){this._fallback.destroy(),this._compression.destroy()}clear(){return this._used.clear()}getEarliestTimestamp(){return this._used.getEarliestTimestamp()}addEvent(e){return this._used.addEvent(e)}async finish(){return await this.ensureWorkerIsLoaded(),this._used.finish()}ensureWorkerIsLoaded(){return this._ensureWorkerIsLoadedPromise}async _ensureWorkerIsLoaded(){try{await this._compression.ensureReady()}catch(e){return void(Ym&&ev.exception(e,"Failed to load the compression worker, falling back to simple buffer"))}await this._switchToCompressionWorker()}async _switchToCompressionWorker(){const{events:e,hasCheckout:t,waitForCheckout:n}=this._fallback,r=[];for(const t of e)r.push(this._compression.addEvent(t));this._compression.hasCheckout=t,this._compression.waitForCheckout=n,this._used=this._compression;try{await Promise.all(r),this._fallback.clear()}catch(e){Ym&&ev.exception(e,"Failed to add events when switching buffers.")}}}function sv({useCompression:e,workerUrl:t}){if(e&&window.Worker){const e=function(e){try{const t=e||function(){if("undefined"==typeof __SENTRY_EXCLUDE_REPLAY_WORKER__||!__SENTRY_EXCLUDE_REPLAY_WORKER__)return function(){const e=new Blob(['var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),s=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(t,e){for(var i=new n(31),s=0;s<31;++s)i[s]=e+=1<<t[s-1];var a=new r(i[30]);for(s=1;s<30;++s)for(var o=i[s];o<i[s+1];++o)a[o]=o-i[s]<<5|s;return{b:i,r:a}},o=a(e,2),h=o.b,f=o.r;h[28]=258,f[258]=28;for(var l=a(i,0).r,u=new n(32768),c=0;c<32768;++c){var v=(43690&c)>>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,s=0,a=new n(r);s<i;++s)t[s]&&++a[t[s]-1];var o,h=new n(r);for(s=1;s<r;++s)h[s]=h[s-1]+a[s-1]<<1;if(e){o=new n(1<<r);var f=15-r;for(s=0;s<i;++s)if(t[s])for(var l=s<<4|t[s],c=r-t[s],v=h[t[s]-1]++<<c,d=v|(1<<c)-1;v<=d;++v)o[u[v]>>f]=l}else for(o=new n(i),s=0;s<i;++s)t[s]&&(o[s]=u[h[t[s]-1]++]>>15-t[s]);return o},p=new t(288);for(c=0;c<144;++c)p[c]=8;for(c=144;c<256;++c)p[c]=9;for(c=256;c<280;++c)p[c]=7;for(c=280;c<288;++c)p[c]=8;var g=new t(32);for(c=0;c<32;++c)g[c]=5;var w=d(p,9,0),y=d(g,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},_=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},x=function(r,e){for(var i=[],s=0;s<r.length;++s)r[s]&&i.push({s:s,f:r[s]});var a=i.length,o=i.slice();if(!a)return{t:F,l:0};if(1==a){var h=new t(i[0].s+1);return h[i[0].s]=1,{t:h,l:1}}i.sort(function(t,n){return t.f-n.f}),i.push({s:-1,f:25001});var f=i[0],l=i[1],u=0,c=1,v=2;for(i[0]={s:-1,f:f.f+l.f,l:f,r:l};c!=a-1;)f=i[i[u].f<i[v].f?u++:v++],l=i[u!=c&&i[u].f<i[v].f?u++:v++],i[c++]={s:-1,f:f.f+l.f,l:f,r:l};var d=o[0].s;for(s=1;s<a;++s)o[s].s>d&&(d=o[s].s);var p=new n(d+1),g=A(i[c-1],p,0);if(g>e){s=0;var w=0,y=g-e,m=1<<y;for(o.sort(function(t,n){return p[n.s]-p[t.s]||t.f-n.f});s<a;++s){var b=o[s].s;if(!(p[b]>e))break;w+=m-(1<<g-p[b]),p[b]=e}for(w>>=y;w>0;){var M=o[s].s;p[M]<e?w-=1<<e-p[M]++-1:++s}for(;s>=0&&w;--s){var E=o[s].s;p[E]==e&&(--p[E],++w)}g=e}return{t:new t(p),l:g}},A=function(t,n,r){return-1==t.s?Math.max(A(t.l,n,r+1),A(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,s=t[0],a=1,o=function(t){e[i++]=t},h=1;h<=r;++h)if(t[h]==s&&h!=r)++a;else{if(!s&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(s),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(s);a=1,s=t[h]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},k=function(t,n,r){var e=r.length,i=m(n+2);t[i]=255&e,t[i+1]=e>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s<e;++s)t[i+s+4]=r[s];return 8*(i+4+e)},U=function(t,r,a,o,h,f,l,u,c,v,m){z(r,m++,a),++h[256];for(var b=x(h,15),M=b.t,E=b.l,A=x(f,15),U=A.t,C=A.l,F=D(M),I=F.c,S=F.n,L=D(U),O=L.c,j=L.n,q=new n(19),B=0;B<I.length;++B)++q[31&I[B]];for(B=0;B<O.length;++B)++q[31&O[B]];for(var G=x(q,7),H=G.t,J=G.l,K=19;K>4&&!H[s[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(h,p)+T(f,g)+l,X=T(h,M)+T(f,U)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X<W)),m+=2,X<W){N=d(M,E,0),P=M,Q=d(U,C,0),R=U;var Y=d(H,J,0);z(r,m,S-257),z(r,m+5,j-1),z(r,m+10,K-4),m+=14;for(B=0;B<K;++B)z(r,m+3*B,H[s[B]]);m+=3*K;for(var Z=[I,O],$=0;$<2;++$){var tt=Z[$];for(B=0;B<tt.length;++B){var nt=31&tt[B];z(r,m,Y[nt]),m+=H[nt],nt>15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=w,P=p,Q=y,R=g;for(B=0;B<u;++B){var rt=o[B];if(rt>255){_(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;_(r,m,Q[et]),m+=R[et],et>3&&(_(r,m,rt>>5&8191),m+=i[et])}else _(r,m,N[rt]),m+=P[rt]}return _(r,m,N[256]),m+P[256]},C=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,s=0|r.length,a=0;a!=s;){for(var o=Math.min(a+2655,s);a<o;++a)i+=e+=r[a];e=(65535&e)+15*(e>>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(s,a,o,h,u){if(!u&&(u={l:1},a.dictionary)){var c=a.dictionary.subarray(-32768),v=new t(c.length+s.length);v.set(c),v.set(s,c.length),s=v,u.w=c.length}return function(s,a,o,h,u,c){var v=c.z||s.length,d=new t(h+v+5*(1+Math.ceil(v/7e3))+u),p=d.subarray(h,d.length-u),g=c.l,w=7&(c.r||0);if(a){w&&(p[0]=c.r>>3);for(var y=C[a-1],M=y>>13,E=8191&y,z=(1<<o)-1,_=c.p||new n(32768),x=c.h||new n(z+1),A=Math.ceil(o/3),D=2*A,T=function(t){return(s[t]^s[t+1]<<A^s[t+2]<<D)&z},F=new r(25e3),I=new n(288),S=new n(32),L=0,O=0,j=c.i||0,q=0,B=c.w||0,G=0;j+2<v;++j){var H=T(j),J=32767&j,K=x[H];if(_[J]=K,x[H]=J,B<=j){var N=v-j;if((L>7e3||q>24576)&&(N>423||!g)){w=U(s,p,0,F,I,S,O,q,G,j-G,w),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(s[j+Q]==s[j+Q-W]){for(var $=0;$<Z&&s[j+$]==s[j+$-W];++$);if($>Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;P<tt;++P){var rt=j-W+P&32767,et=rt-_[rt]&32767;et>nt&&(nt=et,K=rt)}}}W+=(J=K)-(K=_[J])&32767}if(R){F[q++]=268435456|f[Q]<<18|l[R];var it=31&f[Q],st=31&l[R];O+=e[it]+i[st],++I[257+it],++S[st],B=j+Q,++L}else F[q++]=s[j],++I[s[j]]}}for(j=Math.max(j,B);j<v;++j)F[q++]=s[j],++I[s[j]];w=U(s,p,g,F,I,S,O,q,G,j-G,w),g||(c.r=7&w|p[w/8|0]<<3,w-=7,c.h=x,c.p=_,c.i=j,c.w=B)}else{for(j=c.w||0;j<v+g;j+=65535){var at=j+65535;at>=v&&(p[w/8|0]=g,at=v),w=k(p,w+1,s.subarray(j,at))}c.i=v}return b(d,0,h+m(w)+u)}(s,null==a.level?6:a.level,null==a.mem?u.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):20:12+a.mem,o,h,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if("function"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var s=this.b.length-this.s.z;this.b.set(n.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(s),32768),this.s.z=n.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n.prototype.flush=function(){this.ondata||E(5),this.s.l&&E(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=I[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,s=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),a=s.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(s,n),O(s,a-8,r.d()),O(s,a-4,e),s}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t.prototype.flush=function(){j.prototype.flush.call(this)},t}(),G="undefined"!=typeof TextEncoder&&new TextEncoder,H="undefined"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(G)return G.encode(n);for(var e=n.length,i=new t(n.length+(n.length>>1)),s=0,a=function(t){i[s++]=t},o=0;o<e;++o){if(s+5>i.length){var h=new t(s+8+(e-o<<1));h.set(i),i=h}var f=n.charCodeAt(o);f<128||r?a(f):f<2048?(a(192|f>>6),a(128|63&f)):f>55295&&f<57344?(a(240|(f=65536+(1047552&f)|1023&n.charCodeAt(++o))>>18),a(128|f>>12&63),a(128|f>>6&63),a(128|63&f)):(a(224|f>>12),a(128|f>>6&63),a(128|63&f))}return b(i,0,s)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error("Adding invalid event");const n=this._hasEvents?",":"";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push("]",!0);const t=function(t){let n=0;for(const r of t)n+=r.length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n<i;n++){const i=t[n];r.set(i,e),e+=i.length}return r}(this._deflatedData);return this._init(),t}_init(){this._hasEvents=!1,this._deflatedData=[],this.deflate=new B,this.deflate.ondata=(t,n)=>{this._deflatedData.push(t)},this.stream=new J((t,n)=>{this.deflate.push(t,n)}),this.stream.push("[")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener("message",function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&"function"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}}),postMessage({id:void 0,method:"init",success:!0,response:void 0});']);return URL.createObjectURL(e)}();return""}();if(!t)return;Ym&&ev.log("Using compression worker"+(e?` from ${e}`:""));const n=new Worker(t);return new iv(n)}catch(e){Ym&&ev.exception(e,"Failed to create compression worker")}}(t);if(e)return e}return Ym&&ev.log("Using simple buffer"),new nv}function av(){try{return"sessionStorage"in sf&&!!sf.sessionStorage}catch{return!1}}function cv(e){!function(){if(!av())return;try{sf.sessionStorage.removeItem(af)}catch{}}(),e.session=void 0}function lv(e){return void 0!==e&&Math.random()<e}function dv(e){if(av())try{sf.sessionStorage.setItem(af,JSON.stringify(e))}catch{}}function uv(e){const t=Date.now();return{id:e.id||ke(),started:e.started||t,lastActivity:e.lastActivity||t,segmentId:e.segmentId||0,sampled:e.sampled,previousSessionId:e.previousSessionId,dirty:e.dirty||!1}}function pv({sessionSampleRate:e,allowBuffering:t,stickySession:n=!1},{previousSessionId:r}={}){const o=function(e,t){return lv(e)?"session":!!t&&"buffer"}(e,t),i=uv({sampled:o,previousSessionId:r});return n&&dv(i),i}function hv(e,t,n=+new Date){return null===e||void 0===t||t<0||0!==t&&e+t<=n}function fv(e,{maxReplayDuration:t,sessionIdleExpire:n,targetTime:r=Date.now()}){return hv(e.started,t,r)||hv(e.lastActivity,n,r)}function gv(e,{sessionIdleExpire:t,maxReplayDuration:n}){return!!fv(e,{sessionIdleExpire:t,maxReplayDuration:n})&&("buffer"!==e.sampled||0!==e.segmentId)}function mv({sessionIdleExpire:e,maxReplayDuration:t,previousSessionId:n},r){const o=r.stickySession&&function(){if(!av())return null;try{const e=sf.sessionStorage.getItem(af);if(!e)return null;const t=JSON.parse(e);return Ym&&ev.infoTick("Loading existing session"),uv(t)}catch{return null}}();return o?gv(o,{sessionIdleExpire:e,maxReplayDuration:t})?(Ym&&ev.infoTick("Session in sessionStorage is expired, creating new one..."),pv(r,{previousSessionId:o.id})):o:(Ym&&ev.infoTick("Creating new session"),pv(r,{previousSessionId:n}))}function vv(e,t,n){return!!bv(e,t)&&(yv(e,t,n),!0)}async function yv(e,t,n){const{eventBuffer:r}=e;if(!r||r.waitForCheckout&&!n)return null;const o="buffer"===e.recordingMode;try{n&&o&&r.clear(),n&&(r.hasCheckout=!0,r.waitForCheckout=!1);const i=function(e,t){try{if("function"==typeof t&&function(e){return e.type===Mg.Custom}(e))return t(e)}catch(e){return Ym&&ev.exception(e,"An error occurred in the `beforeAddRecordingEvent` callback, skipping the event..."),null}return e}(t,e.getOptions().beforeAddRecordingEvent);if(!i)return;return await r.addEvent(i)}catch(t){const n=t&&t instanceof tv,i=n?"addEventSizeExceeded":"addEvent",s=Ze();if(s){const e=n?"buffer_overflow":"internal_sdk_error";s.recordDroppedEvent(e,"replay")}if(n&&o)return r.clear(),r.waitForCheckout=!0,null;e.handleException(t),await e.stop({reason:i})}}function bv(e,t){if(!e.eventBuffer||e.isPaused()||!e.isEnabled())return!1;const n=xm(t.timestamp);return!(n+e.timeouts.sessionIdlePause<Date.now())&&(!(n>e.getContext().initialTimestamp+e.getOptions().maxReplayDuration)||(Ym&&ev.infoTick(`Skipping event with timestamp ${n} because it is after maxReplayDuration`),!1))}function wv(e){return!e.type}function xv(e){return"transaction"===e.type}function kv(e){return"feedback"===e.type}function _v(e){return(t,n)=>{if(!e.isEnabled()||!wv(t)&&!xv(t))return;const r=n.statusCode;!r||r<200||r>=300||(xv(t)?function(e,t){const n=e.getContext();t.contexts?.trace?.trace_id&&n.traceIds.size<100&&n.traceIds.add(t.contexts.trace.trace_id)}(e,t):function(e,t){const n=e.getContext();t.event_id&&n.errorIds.size<100&&n.errorIds.add(t.event_id);if("buffer"!==e.recordingMode||!t.tags||!t.tags.replayId)return;const{beforeErrorSampling:r}=e.getOptions();if("function"==typeof r&&!r(t))return;Op(async()=>{try{await e.sendBufferedReplayOrFlush()}catch(t){e.handleException(t)}})}(e,t))}}function Sv(e){return t=>{e.isEnabled()&&wv(t)&&function(e,t){const n=t.exception?.values?.[0]?.value;if("string"!=typeof n)return;if(n.match(/(reactjs\.org\/docs\/error-decoder\.html\?invariant=|react\.dev\/errors\/)(418|419|422|423|425)/)||n.match(/(does not match server-rendered HTML|Hydration failed because)/i)){_m(e,Om({category:"replay.hydrate-error",data:{url:ne()}}))}}(e,t)}}function Cv(e){const t=Ze();t&&t.on("beforeAddBreadcrumb",t=>function(e,t){if(!e.isEnabled()||!Ev(t))return;const n=function(e){if(!Ev(e)||["fetch","xhr","sentry.event","sentry.transaction"].includes(e.category)||e.category.startsWith("ui."))return null;if("console"===e.category)return function(e){const t=e.data?.arguments;if(!Array.isArray(t)||0===t.length)return Om(e);let n=!1;const r=t.map(e=>{if(!e)return e;if("string"==typeof e)return e.length>df?(n=!0,`${e.slice(0,df)}…`):e;if("object"==typeof e)try{const t=bn(e,7);return JSON.stringify(t).length>df?(n=!0,`${JSON.stringify(t,null,2).slice(0,df)}…`):t}catch{}return e});return Om({...e,data:{...e.data,arguments:r,...n?{_meta:{warnings:["CONSOLE_ARG_TRUNCATED"]}}:{}}})}(e);return Om(e)}(t);n&&_m(e,n)}(e,t))}function Ev(e){return!!e.category}function Tv(){const e=Ge().getPropagationContext().dsc;e&&delete e.replay_id;const t=en();if(t){delete mn(t).replay_id}}function Mv(e){return Object.assign((t,n)=>{if(!e.isEnabled()||e.isPaused())return t;if(function(e){return"replay_event"===e.type}(t))return delete t.breadcrumbs,t;if(!wv(t)&&!xv(t)&&!kv(t))return t;if(!e.checkAndHandleExpiredSession())return Tv(),t;if(kv(t))return e.flush(),t.contexts.feedback.replay_id=e.getSessionId(),function(e,t){e.triggerUserActivity(),e.addUpdate(()=>!t.timestamp||(e.throttledAddEvent({type:Mg.Custom,timestamp:1e3*t.timestamp,data:{tag:"breadcrumb",payload:{timestamp:t.timestamp,type:"default",category:"sentry.feedback",data:{feedbackId:t.event_id}}}}),!1))}(e,t),t;if(function(e,t){return!(e.type||!e.exception?.values?.length||!t.originalException?.__rrweb__)}(t,n)&&!e.getOptions()._experiments.captureExceptions)return Ym&&ev.log("Ignoring error from rrweb internals",t),null;const r=function(e,t){return"buffer"===e.recordingMode&&t.message!==cf&&!(!t.exception||t.type)&&lv(e.getOptions().errorSampleRate)}(e,t);if((r||"session"===e.recordingMode)&&(t.tags={...t.tags,replayId:e.getSessionId()}),r&&"buffer"===e.recordingMode&&"buffer"===e.session?.sampled){const t=e.session;t.dirty=!0,e.getOptions().stickySession&&dv(t)}return t},{id:"Replay"})}function Iv(e,t){return t.map(({type:t,start:n,end:r,name:o,data:i})=>{const s=e.throttledAddEvent({type:Mg.Custom,timestamp:n,data:{tag:"performanceSpan",payload:{op:t,description:o,startTimestamp:n,endTimestamp:r,data:i}}});return"string"==typeof s?Promise.resolve(null):s})}function Av(e){return t=>{if(!e.isEnabled())return;const n=function(e){const{from:t,to:n}=e,r=Date.now()/1e3;return{type:"navigation.push",start:r,end:r,name:n,data:{previous:t}}}(t);null!==n&&(e.getContext().urls.push(n.name),e.triggerUserActivity(),e.addUpdate(()=>(Iv(e,[n]),!1)))}}function Rv(e,t){e.isEnabled()&&null!==t&&(function(e,t){return(!Ym||!e.getOptions()._experiments.traceInternals)&&Wo(t,Ze())}(e,t.name)||e.addUpdate(()=>(Iv(e,[t]),!0)))}function Lv(e){if(!e)return;const t=new TextEncoder;try{if("string"==typeof e)return t.encode(e).length;if(e instanceof URLSearchParams)return t.encode(e.toString()).length;if(e instanceof FormData){const n=$p(e);return t.encode(n).length}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength}catch{}}function Pv(e){if(!e)return;const t=parseInt(e,10);return isNaN(t)?void 0:t}function Ov(e,t){if(!e)return{headers:{},size:void 0,_meta:{warnings:[t]}};const n={...e._meta},r=n.warnings||[];return n.warnings=[...r,t],e._meta=n,e}function Dv(e,t){if(!t)return null;const{startTimestamp:n,endTimestamp:r,url:o,method:i,statusCode:s,request:a,response:c}=t;return{type:e,start:n/1e3,end:r/1e3,name:o,data:{method:i,statusCode:s,request:a,response:c}}}function Nv(e){return{headers:{},size:e,_meta:{warnings:["URL_SKIPPED"]}}}function Bv(e,t,n){if(!t&&0===Object.keys(e).length)return;if(!t)return{headers:e};if(!n)return{headers:e,size:t};const r={headers:e,size:t},{body:o,warnings:i}=function(e){if(!e||"string"!=typeof e)return{body:e};const t=e.length>lf,n=function(e){const t=e[0],n=e[e.length-1];return"["===t&&"]"===n||"{"===t&&"}"===n}(e);if(t){const t=e.slice(0,lf);return n?{body:t,warnings:["MAYBE_JSON_TRUNCATED"]}:{body:`${t}…`,warnings:["TEXT_TRUNCATED"]}}if(n)try{return{body:JSON.parse(e)}}catch{}return{body:e}}(n);return r.body=o,i?.length&&(r._meta={warnings:i}),r}function jv(e,t){return Object.entries(e).reduce((n,[r,o])=>{const i=r.toLowerCase();return t.includes(i)&&e[r]&&(n[i]=o),n},{})}function $v(e,t){const n=function(e,t=sf.document.baseURI){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith(sf.location.origin))return e;const n=new URL(e,t);if(n.origin!==new URL(t).origin)return e;const r=n.href;if(!e.endsWith("/")&&r.endsWith("/"))return r.slice(0,-1);return r}(e);return xe(n,t)}async function zv(e,t,n){try{const r=await async function(e,t,n){const r=Date.now(),{startTimestamp:o=r,endTimestamp:i=r}=t,{url:s,method:a,status_code:c=0,request_body_size:l,response_body_size:d}=e.data,u=$v(s,n.networkDetailAllowUrls)&&!$v(s,n.networkDetailDenyUrls),p=u?function({networkCaptureBodies:e,networkRequestHeaders:t},n,r){const o=n?function(e,t){if(1===e.length&&"string"!=typeof e[0])return Hv(e[0],t);if(2===e.length)return Hv(e[1],t);return{}}(n,t):{};if(!e)return Bv(o,r,void 0);const i=Fp(n),[s,a]=zp(i,ev),c=Bv(o,r,s);if(a)return Ov(c,a);return c}(n,t.input,l):Nv(l),h=await async function(e,{networkCaptureBodies:t,networkResponseHeaders:n},r,o){if(!e&&void 0!==o)return Nv(o);const i=r?Fv(r.headers,n):{};if(!r||!t&&void 0!==o)return Bv(i,o,void 0);const[s,a]=await async function(e){const t=function(e){try{return e.clone()}catch(e){Ym&&ev.exception(e,"Failed to clone response body")}}(e);if(!t)return[void 0,"BODY_PARSE_ERROR"];try{const e=await function(e){return new Promise((t,n)=>{const r=Op(()=>n(new Error("Timeout while trying to read response body")),500);(async function(e){return await e.text()})(e).then(e=>t(e),e=>n(e)).finally(()=>clearTimeout(r))})}(t);return[e]}catch(e){return e instanceof Error&&e.message.indexOf("Timeout")>-1?(Ym&&ev.warn("Parsing text body from response timed out"),[void 0,"BODY_PARSE_TIMEOUT"]):(Ym&&ev.exception(e,"Failed to get text body from response"),[void 0,"BODY_PARSE_ERROR"])}}(r),c=function(e,{networkCaptureBodies:t,responseBodySize:n,captureDetails:r,headers:o}){try{const i=e?.length&&void 0===n?Lv(e):n;return r?Bv(o,i,t?e:void 0):Nv(i)}catch(e){return Ym&&ev.exception(e,"Failed to serialize response body"),Bv(o,n,void 0)}}(s,{networkCaptureBodies:t,responseBodySize:o,captureDetails:e,headers:i});if(a)return Ov(c,a);return c}(u,n,t.response,d);return{startTimestamp:o,endTimestamp:i,url:s,method:a,statusCode:c,request:p,response:h}}(e,t,n),o=Dv("resource.fetch",r);Rv(n.replay,o)}catch(e){Ym&&ev.exception(e,"Failed to capture fetch breadcrumb")}}function Fv(e,t){const n={};return t.forEach(t=>{e.get(t)&&(n[t]=e.get(t))}),n}function Hv(e,t){if(!e)return{};const n=e.headers;return n?n instanceof Headers?Fv(n,t):Array.isArray(n)?{}:jv(n,t):{}}async function qv(e,t,n){try{const r=function(e,t,n){const r=Date.now(),{startTimestamp:o=r,endTimestamp:i=r,input:s,xhr:a}=t,{url:c,method:l,status_code:d=0,request_body_size:u,response_body_size:p}=e.data;if(!c)return null;if(!a||!$v(c,n.networkDetailAllowUrls)||$v(c,n.networkDetailDenyUrls)){return{startTimestamp:o,endTimestamp:i,url:c,method:l,statusCode:d,request:Nv(u),response:Nv(p)}}const h=a[Dp],f=h?jv(h.request_headers,n.networkRequestHeaders):{},g=jv(Hp(a),n.networkResponseHeaders),[m,v]=n.networkCaptureBodies?zp(s,ev):[void 0],[y,b]=n.networkCaptureBodies?function(e){const t=[];try{return[e.responseText]}catch(e){t.push(e)}try{return function(e,t){try{if("string"==typeof e)return[e];if(e instanceof Document)return[e.body.outerHTML];if("json"===t&&e&&"object"==typeof e)return[JSON.stringify(e)];if(!e)return[void 0]}catch(t){return Ym&&ev.exception(t,"Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return Ym&&ev.log("Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}(e.response,e.responseType)}catch(e){t.push(e)}return Ym&&ev.warn("Failed to get xhr response body",...t),[void 0]}(a):[void 0],w=Bv(f,u,m),x=Bv(g,p,y);return{startTimestamp:o,endTimestamp:i,url:c,method:l,statusCode:d,request:v?Ov(w,v):w,response:b?Ov(x,b):x}}(e,t,n),o=Dv("resource.xhr",r);Rv(n.replay,o)}catch(e){Ym&&ev.exception(e,"Failed to capture xhr breadcrumb")}}function Uv(e,t){const{xhr:n,input:r}=t;if(!n)return;const o=Lv(r),i=n.getResponseHeader("content-length")?Pv(n.getResponseHeader("content-length")):function(e,t){try{return Lv("json"===t&&e&&"object"==typeof e?JSON.stringify(e):e)}catch{return}}(n.response,n.responseType);void 0!==o&&(e.data.request_body_size=o),void 0!==i&&(e.data.response_body_size=i)}function Wv(e){const t=Ze();try{const{networkDetailAllowUrls:n,networkDetailDenyUrls:r,networkCaptureBodies:o,networkRequestHeaders:i,networkResponseHeaders:s}=e.getOptions(),a={replay:e,networkDetailAllowUrls:n,networkDetailDenyUrls:r,networkCaptureBodies:o,networkRequestHeaders:i,networkResponseHeaders:s};t&&t.on("beforeAddBreadcrumb",(e,t)=>function(e,t,n){if(!t.data)return;try{(function(e){return"xhr"===e.category})(t)&&function(e){return e?.xhr}(n)&&(Uv(t,n),qv(t,n,e)),function(e){return"fetch"===e.category}(t)&&function(e){return e?.response}(n)&&(!function(e,t){const{input:n,response:r}=t,o=Lv(n?Fp(n):void 0),i=r?Pv(r.headers.get("content-length")):void 0;void 0!==o&&(e.data.request_body_size=o),void 0!==i&&(e.data.response_body_size=i)}(t,n),zv(t,n,e))}catch(e){Ym&&ev.exception(e,"Error when enriching network breadcrumb")}}(a,e,t))}catch{}}function Vv(e){const{jsHeapSizeLimit:t,totalJSHeapSize:n,usedJSHeapSize:r}=e,o=Date.now()/1e3;return{type:"memory",name:"memory",start:o,end:o,data:{memory:{jsHeapSizeLimit:t,totalJSHeapSize:n,usedJSHeapSize:r}}}}function Kv(e,t,n){return function(e,t,n){let r,o,i;const s=n?.maxWait?Math.max(n.maxWait,t):0,a=n?.setTimeoutImpl||setTimeout;function c(){return l(),r=e(),r}function l(){void 0!==o&&clearTimeout(o),void 0!==i&&clearTimeout(i),o=i=void 0}function d(){return o&&clearTimeout(o),o=a(c,t),s&&void 0===i&&(i=a(c,s)),r}return d.cancel=l,d.flush=function(){return void 0!==o||void 0!==i?c():r},d}(e,t,{...n,setTimeoutImpl:Op})}const Gv=a.navigator;function Jv(e){let t=!1;return(n,r)=>{if(!e.checkAndHandleExpiredSession())return void(Ym&&ev.warn("Received replay event after session expired."));const o=r||!t;t=!0,e.clickDetector&&Pm(e.clickDetector,n),e.addUpdate(()=>{if("buffer"===e.recordingMode&&o&&e.setInitialState(),!vv(e,n,o))return!0;if(!o)return!1;const t=e.session;if(function(e,t){if(!t||!e.session||0!==e.session.segmentId)return;vv(e,function(e){const t=e.getOptions();return{type:Mg.Custom,timestamp:Date.now(),data:{tag:"options",payload:{shouldRecordCanvas:e.isRecordingCanvas(),sessionSampleRate:t.sessionSampleRate,errorSampleRate:t.errorSampleRate,useCompressionOption:t.useCompression,blockAllMedia:t.blockAllMedia,maskAllText:t.maskAllText,maskAllInputs:t.maskAllInputs,useCompression:!!e.eventBuffer&&"worker"===e.eventBuffer.type,networkDetailHasUrls:t.networkDetailAllowUrls.length>0,networkCaptureBodies:t.networkCaptureBodies,networkRequestHasHeaders:t.networkRequestHeaders.length>0,networkResponseHasHeaders:t.networkResponseHeaders.length>0}}}}(e),!1)}(e,o),"buffer"===e.recordingMode&&t&&e.eventBuffer&&!t.dirty){const n=e.eventBuffer.getEarliestTimestamp();n&&(Ym&&ev.log(`Updating session start time to earliest event in buffer to ${new Date(n)}`),t.started=n,e.getOptions().stickySession&&dv(t))}return t?.previousSessionId||"session"===e.recordingMode&&e.flush(),!0})}}async function Yv({recordingData:e,replayId:t,segmentId:n,eventContext:r,timestamp:o,session:i}){const s=function({recordingData:e,headers:t}){let n;const r=`${JSON.stringify(t)}\n`;if("string"==typeof e)n=`${r}${e}`;else{const t=(new TextEncoder).encode(r);n=new Uint8Array(t.length+e.length),n.set(t),n.set(e,t.length)}return n}({recordingData:e,headers:{segment_id:n}}),{urls:a,errorIds:c,traceIds:l,initialTimestamp:d}=r,u=Ze(),p=Ge(),h=u?.getTransport(),f=u?.getDsn();if(!(u&&h&&f&&i.sampled))return Promise.resolve({});const g={type:"replay_event",replay_start_timestamp:d/1e3,timestamp:o/1e3,error_ids:c,trace_ids:l,urls:a,replay_id:t,segment_id:n,replay_type:i.sampled},m=await async function({client:e,scope:t,replayId:n,event:r}){const o={event_id:n,integrations:"object"!=typeof e._integrations||null===e._integrations||Array.isArray(e._integrations)?void 0:Object.keys(e._integrations)};e.emit("preprocessEvent",r,o);const i=await vr(e.getOptions(),r,o,t,e,Je());if(!i)return null;e.emit("postprocessEvent",i,o),i.platform=i.platform||"javascript";const s=e.getSdkMetadata(),{name:a,version:c,settings:l}=s?.sdk||{};return i.sdk={...i.sdk,name:a||"sentry.javascript.unknown",version:c||"0.0.0",settings:l},i}({scope:p,client:u,replayId:t,event:g});if(!m)return u.recordDroppedEvent("event_processor","replay"),Ym&&ev.log("An event processor returned `null`, will not send event."),Promise.resolve({});delete m.sdkProcessingMetadata;const v=function(e,t,n,r){return kn(On(e,Pn(e),r,n),[[{type:"replay_event"},e],[{type:"replay_recording",length:"string"==typeof t?(new TextEncoder).encode(t).length:t.length},t]])}(m,s,f,u.getOptions().tunnel);let y;try{y=await h.send(v)}catch(e){const t=new Error(cf);try{t.cause=e}catch{}throw t}if("number"==typeof y.statusCode&&(y.statusCode<200||y.statusCode>=300))throw new Xv(y.statusCode);const b=ho({},y);if(po(b,"replay"))throw new Qv(b);return y}class Xv extends Error{constructor(e){super(`Transport returned status code ${e}`)}}class Qv extends Error{constructor(e){super("Rate limit hit"),this.rateLimits=e}}async function Zv(e,t={count:0,interval:5e3}){const{recordingData:n,onError:r}=e;if(n.length)try{return await Yv(e),!0}catch(n){if(n instanceof Xv||n instanceof Qv)throw n;if(_r("Replays",{_retryCount:t.count}),r&&r(n),t.count>=3){const e=new Error(`${cf} - max retries exceeded`);try{e.cause=n}catch{}throw e}return t.interval*=++t.count,new Promise((n,r)=>{Op(async()=>{try{await Zv(e,t),n(!0)}catch(e){r(e)}},t.interval)})}}const ey="__THROTTLED";function ty(e,t,n){const r=new Map;let o=!1;return(...i)=>{const s=Math.floor(Date.now()/1e3);if((e=>{const t=e-n;r.forEach((e,n)=>{n<t&&r.delete(n)})})(s),[...r.values()].reduce((e,t)=>e+t,0)>=t){const e=o;return o=!0,e?"__SKIPPED":ey}o=!1;const a=r.get(s)||0;return r.set(s,a+1),e(...i)}}class ny{constructor({options:e,recordingOptions:t}){this.eventBuffer=null,this.performanceEntries=[],this.replayPerformanceEntries=[],this.recordingMode="session",this.timeouts={sessionIdlePause:3e5,sessionIdleExpire:9e5},this._lastActivity=Date.now(),this._isEnabled=!1,this._isPaused=!1,this._requiresManualStart=!1,this._hasInitializedCoreListeners=!1,this._context={errorIds:new Set,traceIds:new Set,urls:[],initialTimestamp:Date.now(),initialUrl:""},this._recordingOptions=t,this._options=e,this._debouncedFlush=Kv(()=>this._flush(),this._options.flushMinDelay,{maxWait:this._options.flushMaxDelay}),this._throttledAddEvent=ty((e,t)=>function(e,t,n){return bv(e,t)?yv(e,t,n):Promise.resolve(null)}(this,e,t),300,5);const{slowClickTimeout:n,slowClickIgnoreSelectors:r}=this.getOptions(),o=n?{threshold:Math.min(3e3,n),timeout:n,scrollTimeout:300,ignoreSelector:r?r.join(","):""}:void 0;if(o&&(this.clickDetector=new Am(this,o)),Ym){const t=e._experiments;ev.setConfig({captureExceptions:!!t.captureExceptions,traceInternals:!!t.traceInternals})}this._handleVisibilityChange=()=>{"visible"===sf.document.visibilityState?this._doChangeToForegroundTasks():this._doChangeToBackgroundTasks()},this._handleWindowBlur=()=>{const e=Om({category:"ui.blur"});this._doChangeToBackgroundTasks(e)},this._handleWindowFocus=()=>{const e=Om({category:"ui.focus"});this._doChangeToForegroundTasks(e)},this._handleKeyboardEvent=e=>{zm(this,e)}}getContext(){return this._context}isEnabled(){return this._isEnabled}isPaused(){return this._isPaused}isRecordingCanvas(){return Boolean(this._canvas)}getOptions(){return this._options}handleException(e){Ym&&ev.exception(e),this._options.onError&&this._options.onError(e)}initializeSampling(e){const{errorSampleRate:t,sessionSampleRate:n}=this._options,r=t<=0&&n<=0;this._requiresManualStart=r,r||(this._initializeSessionForSampling(e),this.session?!1!==this.session.sampled&&(this.recordingMode="buffer"===this.session.sampled&&0===this.session.segmentId?"buffer":"session",Ym&&ev.infoTick(`Starting replay in ${this.recordingMode} mode`),this._initializeRecording()):Ym&&ev.exception(new Error("Unable to initialize and create session")))}start(){if(this._isEnabled&&"session"===this.recordingMode)return void(Ym&&ev.log("Recording is already in progress"));if(this._isEnabled&&"buffer"===this.recordingMode)return void(Ym&&ev.log("Buffering is in progress, call `flush()` to save the replay"));Ym&&ev.infoTick("Starting replay in session mode"),this._updateUserActivity();const e=mv({maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire},{stickySession:this._options.stickySession,sessionSampleRate:1,allowBuffering:!1});this.session=e,this.recordingMode="session",this._initializeRecording()}startBuffering(){if(this._isEnabled)return void(Ym&&ev.log("Buffering is in progress, call `flush()` to save the replay"));Ym&&ev.infoTick("Starting replay in buffer mode");const e=mv({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration},{stickySession:this._options.stickySession,sessionSampleRate:0,allowBuffering:!0});this.session=e,this.recordingMode="buffer",this._initializeRecording()}startRecording(){try{const e=this._canvas;this._stopRecording=ym({...this._recordingOptions,..."buffer"===this.recordingMode?{checkoutEveryNms:6e4}:this._options._experiments.continuousCheckout&&{checkoutEveryNms:Math.max(36e4,this._options._experiments.continuousCheckout)},emit:Jv(this),.../iPhone|iPad|iPod/i.test(Gv?.userAgent??"")||/Macintosh/i.test(Gv?.userAgent??"")&&Gv?.maxTouchPoints&&Gv?.maxTouchPoints>1?{sampling:{mousemove:!1}}:{},onMutation:this._onMutationHandler.bind(this),...e?{recordCanvas:e.recordCanvas,getCanvasManager:e.getCanvasManager,sampling:e.sampling,dataURLOptions:e.dataURLOptions}:{}})}catch(e){this.handleException(e)}}stopRecording(){try{return this._stopRecording&&(this._stopRecording(),this._stopRecording=void 0),!0}catch(e){return this.handleException(e),!1}}async stop({forceFlush:e=!1,reason:t}={}){if(this._isEnabled){this._isEnabled=!1,this.recordingMode="buffer";try{Ym&&ev.log("Stopping Replay"+(t?` triggered by ${t}`:"")),Tv(),this._removeListeners(),this.stopRecording(),this._debouncedFlush.cancel(),e&&await this._flush({force:!0}),this.eventBuffer?.destroy(),this.eventBuffer=null,cv(this)}catch(e){this.handleException(e)}}}pause(){this._isPaused||(this._isPaused=!0,this.stopRecording(),Ym&&ev.log("Pausing replay"))}resume(){this._isPaused&&this._checkSession()&&(this._isPaused=!1,this.startRecording(),Ym&&ev.log("Resuming replay"))}async sendBufferedReplayOrFlush({continueRecording:e=!0}={}){if("session"===this.recordingMode)return this.flushImmediate();const t=Date.now();Ym&&ev.log("Converting buffer to session"),await this.flushImmediate();const n=this.stopRecording();e&&n&&"session"!==this.recordingMode&&(this.recordingMode="session",this.session&&(this.session.dirty=!1,this._updateUserActivity(t),this._updateSessionActivity(t),this._maybeSaveSession()),this.startRecording())}addUpdate(e){const t=e();"buffer"!==this.recordingMode&&this._isEnabled&&!0!==t&&this._debouncedFlush()}triggerUserActivity(){if(this._updateUserActivity(),this._stopRecording)this.checkAndHandleExpiredSession(),this._updateSessionActivity();else{if(!this._checkSession())return;this.resume()}}updateUserActivity(){this._updateUserActivity(),this._updateSessionActivity()}conditionalFlush(){return"buffer"===this.recordingMode?Promise.resolve():this.flushImmediate()}flush(){return this._debouncedFlush()}flushImmediate(){return this._debouncedFlush(),this._debouncedFlush.flush()}cancelFlush(){this._debouncedFlush.cancel()}getSessionId(e){if(!e||!1!==this.session?.sampled)return this.session?.id}checkAndHandleExpiredSession(){if(!(this._lastActivity&&hv(this._lastActivity,this.timeouts.sessionIdlePause)&&this.session&&"session"===this.session.sampled))return!!this._checkSession();this.pause()}setInitialState(){const e=`${sf.location.pathname}${sf.location.hash}${sf.location.search}`,t=`${sf.location.origin}${e}`;this.performanceEntries=[],this.replayPerformanceEntries=[],this._clearContext(),this._context.initialUrl=t,this._context.initialTimestamp=Date.now(),this._context.urls.push(t)}throttledAddEvent(e,t){const n=this._throttledAddEvent(e,t);if(n===ey){const e=Om({category:"replay.throttled"});this.addUpdate(()=>!vv(this,{type:5,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e,metric:!0}}))}return n}getCurrentRoute(){const e=this.lastActiveSpan||en(),t=e&&Zt(e),n=(t&&Vt(t).data||{})[tt];if(t&&n&&["route","custom"].includes(n))return Vt(t).description}_initializeRecording(){this.setInitialState(),this._updateSessionActivity(),this.eventBuffer=sv({useCompression:this._options.useCompression,workerUrl:this._options.workerUrl}),this._removeListeners(),this._addListeners(),this._isEnabled=!0,this._isPaused=!1,this.startRecording()}_initializeSessionForSampling(e){const t=this._options.errorSampleRate>0,n=mv({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration,previousSessionId:e},{stickySession:this._options.stickySession,sessionSampleRate:this._options.sessionSampleRate,allowBuffering:t});this.session=n}_checkSession(){if(!this.session)return!1;const e=this.session;return!gv(e,{sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration})||(this._refreshSession(e),!1)}async _refreshSession(e){this._isEnabled&&(await this.stop({reason:"refresh session"}),this.initializeSampling(e.id))}_addListeners(){try{sf.document.addEventListener("visibilitychange",this._handleVisibilityChange),sf.addEventListener("blur",this._handleWindowBlur),sf.addEventListener("focus",this._handleWindowFocus),sf.addEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.addListeners(),this._hasInitializedCoreListeners||(!function(e){const t=Ze();Tp(jm(e)),Ap(Av(e)),Cv(e),Wv(e),Or(Mv(e)),t&&(t.on("beforeSendEvent",Sv(e)),t.on("afterSendEvent",_v(e)),t.on("createDsc",t=>{const n=e.getSessionId();n&&e.isEnabled()&&"session"===e.recordingMode&&e.checkAndHandleExpiredSession()&&(t.replay_id=n)}),t.on("spanStart",t=>{e.lastActiveSpan=t}),t.on("spanEnd",t=>{e.lastActiveSpan=t}),t.on("beforeSendFeedback",async(t,n)=>{const r=e.getSessionId();n?.includeReplay&&e.isEnabled()&&r&&t.contexts?.feedback&&("api"===t.contexts.feedback.source&&await e.sendBufferedReplayOrFlush(),t.contexts.feedback.replay_id=r)}),t.on("openFeedbackWidget",async()=>{await e.sendBufferedReplayOrFlush()}))}(this),this._hasInitializedCoreListeners=!0)}catch(e){this.handleException(e)}this._performanceCleanupCallback=function(e){function t(t){e.performanceEntries.includes(t)||e.performanceEntries.push(t)}function n({entries:e}){e.forEach(t)}const r=[];return["navigation","paint","resource"].forEach(e=>{r.push(Gu(e,n))}),r.push(Vu(Hm(Wm,e)),Wu(Hm(Km,e)),Ku(Hm(Gm,e))),()=>{r.forEach(e=>e())}}(this)}_removeListeners(){try{sf.document.removeEventListener("visibilitychange",this._handleVisibilityChange),sf.removeEventListener("blur",this._handleWindowBlur),sf.removeEventListener("focus",this._handleWindowFocus),sf.removeEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.removeListeners(),this._performanceCleanupCallback&&this._performanceCleanupCallback()}catch(e){this.handleException(e)}}_doChangeToBackgroundTasks(e){if(!this.session)return;fv(this.session,{maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire})||(e&&this._createCustomBreadcrumb(e),this.conditionalFlush())}_doChangeToForegroundTasks(e){if(!this.session)return;this.checkAndHandleExpiredSession()?e&&this._createCustomBreadcrumb(e):Ym&&ev.log("Document has become active, but session has expired")}_updateUserActivity(e=Date.now()){this._lastActivity=e}_updateSessionActivity(e=Date.now()){this.session&&(this.session.lastActivity=e,this._maybeSaveSession())}_createCustomBreadcrumb(e){this.addUpdate(()=>{this.throttledAddEvent({type:Mg.Custom,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e}})})}_addPerformanceEntries(){let e=(t=this.performanceEntries,t.map(qm).filter(Boolean)).concat(this.replayPerformanceEntries);var t;if(this.performanceEntries=[],this.replayPerformanceEntries=[],this._requiresManualStart){const t=this._context.initialTimestamp/1e3;e=e.filter(e=>e.start>=t)}return Promise.all(Iv(this,e))}_clearContext(){this._context.errorIds.clear(),this._context.traceIds.clear(),this._context.urls=[]}_updateInitialTimestampFromEventBuffer(){const{session:e,eventBuffer:t}=this;if(!e||!t||this._requiresManualStart)return;if(e.segmentId)return;const n=t.getEarliestTimestamp();n&&n<this._context.initialTimestamp&&(this._context.initialTimestamp=n)}_popEventContext(){const e={initialTimestamp:this._context.initialTimestamp,initialUrl:this._context.initialUrl,errorIds:Array.from(this._context.errorIds),traceIds:Array.from(this._context.traceIds),urls:this._context.urls};return this._clearContext(),e}async _runFlush(){const e=this.getSessionId();if(this.session&&this.eventBuffer&&e){if(await this._addPerformanceEntries(),this.eventBuffer?.hasEvents&&(await async function(e){try{return Promise.all(Iv(e,[Vv(sf.performance.memory)]))}catch{return[]}}(this),this.eventBuffer&&e===this.getSessionId()))try{this._updateInitialTimestampFromEventBuffer();const t=Date.now();if(t-this._context.initialTimestamp>this._options.maxReplayDuration+3e4)throw new Error("Session is too long, not sending replay");const n=this._popEventContext(),r=this.session.segmentId++;this._maybeSaveSession();const o=await this.eventBuffer.finish();await Zv({replayId:e,recordingData:o,segmentId:r,eventContext:n,session:this.session,timestamp:t,onError:e=>this.handleException(e)})}catch(e){this.handleException(e),this.stop({reason:"sendReplay"});const t=Ze();if(t){const n=e instanceof Qv?"ratelimit_backoff":"send_error";t.recordDroppedEvent(n,"replay")}}}else Ym&&ev.error("No session or eventBuffer found to flush.")}async _flush({force:e=!1}={}){if(!this._isEnabled&&!e)return;if(!this.checkAndHandleExpiredSession())return void(Ym&&ev.error("Attempting to finish replay event after session expired."));if(!this.session)return;const t=this.session.started,n=Date.now()-t;this._debouncedFlush.cancel();const r=n<this._options.minReplayDuration,o=n>this._options.maxReplayDuration+5e3;if(r||o)return Ym&&ev.log(`Session duration (${Math.floor(n/1e3)}s) is too ${r?"short":"long"}, not sending replay.`),void(r&&this._debouncedFlush());const i=this.eventBuffer;i&&0===this.session.segmentId&&!i.hasCheckout&&Ym&&ev.log("Flushing initial segment without checkout.");const s=!!this._flushLock;this._flushLock||(this._flushLock=this._runFlush());try{await this._flushLock}catch(e){this.handleException(e)}finally{this._flushLock=void 0,s&&this._debouncedFlush()}}_maybeSaveSession(){this.session&&this._options.stickySession&&dv(this.session)}_onMutationHandler(e){const{ignoreMutations:t}=this._options._experiments;if(t?.length&&e.some(e=>{const n=function(e){if(!e)return null;try{return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}catch{return null}}(e.target),r=t.join(",");return n?.matches(r)}))return!1;const n=e.length,r=this._options.mutationLimit,o=r&&n>r;if(n>this._options.mutationBreadcrumbLimit||o){const e=Om({category:"replay.mutations",data:{count:n,limit:o}});this._createCustomBreadcrumb(e)}return!o||(this.stop({reason:"mutationLimit",forceFlush:"session"===this.recordingMode}),!1)}}function ry(e,t){return[...e,...t].join(",")}const oy='img,image,svg,video,object,picture,embed,map,audio,link[rel="icon"],link[rel="apple-touch-icon"]',iy=["content-length","content-type","accept"],sy=Symbol.for("sentry__originalRequestBody");let ay=!1,cy=!1;const ly=e=>new dy(e);class dy{constructor({flushMinDelay:e=5e3,flushMaxDelay:t=5500,minReplayDuration:n=4999,maxReplayDuration:r=36e5,stickySession:o=!0,useCompression:i=!0,workerUrl:s,_experiments:a={},maskAllText:c=!0,maskAllInputs:l=!0,blockAllMedia:d=!0,mutationBreadcrumbLimit:u=750,mutationLimit:p=1e4,slowClickTimeout:h=7e3,slowClickIgnoreSelectors:f=[],networkDetailAllowUrls:g=[],networkDetailDenyUrls:m=[],networkCaptureBodies:v=!0,networkRequestHeaders:y=[],networkResponseHeaders:b=[],mask:w=[],maskAttributes:x=["title","placeholder","aria-label"],unmask:k=[],block:_=[],unblock:S=[],ignore:C=[],maskFn:E,beforeAddRecordingEvent:T,beforeErrorSampling:M,onError:I,attachRawBodyFromRequest:A=!1}={}){this.name="Replay";const R=function({mask:e,unmask:t,block:n,unblock:r,ignore:o}){return{maskTextSelector:ry(e,[".sentry-mask","[data-sentry-mask]"]),unmaskTextSelector:ry(t,[]),blockSelector:ry(n,[".sentry-block","[data-sentry-block]","base","iframe[srcdoc]:not([src])"]),unblockSelector:ry(r,[]),ignoreSelector:ry(o,[".sentry-ignore","[data-sentry-ignore]",'input[type="file"]'])}}({mask:w,unmask:k,block:_,unblock:S,ignore:C});if(this._recordingOptions={maskAllInputs:l,maskAllText:c,maskInputOptions:{password:!0},maskTextFn:E,maskInputFn:E,maskAttributeFn:(e,t,n)=>function({el:e,key:t,maskAttributes:n,maskAllText:r,privacyOptions:o,value:i}){return r?o.unmaskTextSelector&&e.matches(o.unmaskTextSelector)?i:n.includes(t)||"value"===t&&"INPUT"===e.tagName&&["submit","button"].includes(e.getAttribute("type")||"")?i.replace(/[\S]/g,"*"):i:i}({maskAttributes:x,maskAllText:c,privacyOptions:R,key:e,value:t,el:n}),...R,slimDOMOptions:"all",inlineStylesheet:!0,inlineImages:!1,collectFonts:!0,errorHandler:e=>{try{e.__rrweb__=!0}catch{}},recordCrossOriginIframes:Boolean(a.recordCrossOriginIframes)},this._initialOptions={flushMinDelay:e,flushMaxDelay:t,minReplayDuration:Math.min(n,5e4),maxReplayDuration:Math.min(r,pf),stickySession:o,useCompression:i,workerUrl:s,blockAllMedia:d,maskAllInputs:l,maskAllText:c,mutationBreadcrumbLimit:u,mutationLimit:p,slowClickTimeout:h,slowClickIgnoreSelectors:f,networkDetailAllowUrls:g,networkDetailDenyUrls:m,networkCaptureBodies:v,networkRequestHeaders:uy(y),networkResponseHeaders:uy(b),beforeAddRecordingEvent:T,beforeErrorSampling:M,onError:I,attachRawBodyFromRequest:A,_experiments:a},this._initialOptions.blockAllMedia&&(this._recordingOptions.blockSelector=this._recordingOptions.blockSelector?`${this._recordingOptions.blockSelector},${oy}`:oy,this._recordingOptions.ignoreCSSAttributes=new Set(["background-image"])),this._isInitialized&&Kc())throw new Error("Multiple Sentry Session Replay instances are not supported");this._isInitialized=!0}get _isInitialized(){return ay}set _isInitialized(e){ay=e}afterAllSetup(e){Kc()&&!this._replay&&(this._initialOptions.attachRawBodyFromRequest&&function(){if("undefined"==typeof Request||cy)return;const e=Request;try{const t=function(t,n){const r=new e(t,n);return null!=n?.body&&(r[sy]=n.body),r};t.prototype=e.prototype,a.Request=t,cy=!0}catch{}}(),this._setup(e),this._initialize(e))}start(){this._replay&&this._replay.start()}startBuffering(){this._replay&&this._replay.startBuffering()}stop(){return this._replay?this._replay.stop({forceFlush:"session"===this._replay.recordingMode}):Promise.resolve()}flush(e){return this._replay?this._replay.isEnabled()?this._replay.sendBufferedReplayOrFlush(e):(this._replay.start(),Promise.resolve()):Promise.resolve()}getReplayId(e){if(this._replay?.isEnabled())return this._replay.getSessionId(e)}getRecordingMode(){if(this._replay?.isEnabled())return this._replay.recordingMode}_initialize(e){this._replay&&(this._maybeLoadFromReplayCanvasIntegration(e),this._replay.initializeSampling())}_setup(e){const t=function(e,t){const n=t.getOptions(),r={sessionSampleRate:0,errorSampleRate:0,...e},o=Ot(n.replaysSessionSampleRate),i=Ot(n.replaysOnErrorSampleRate);null==o&&null==i&&f(()=>{});null!=o&&(r.sessionSampleRate=o);null!=i&&(r.errorSampleRate=i);return r}(this._initialOptions,e);this._replay=new ny({options:t,recordingOptions:this._recordingOptions})}_maybeLoadFromReplayCanvasIntegration(e){try{const t=e.getIntegrationByName("ReplayCanvas");if(!t)return;this._replay._canvas=t.getOptions()}catch{}}}function uy(e){return[...iy,...e.map(e=>e.toLowerCase())]}function py(){const e=Ze();return e?.getIntegrationByName("Replay")}var hy=Object.defineProperty,fy=(e,t,n)=>((e,t,n)=>t in e?hy(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);class gy{constructor(){fy(this,"idNodeMap",new Map),fy(this,"nodeMetaMap",new WeakMap)}getId(e){if(!e)return-1;const t=this.getMeta(e)?.id;return t??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach(e=>this.removeNodeFromMap(e))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function my(e,t,n=1/0,r=0){return e?e.nodeType!==e.ELEMENT_NODE||r>n?-1:t(e)?r:my(e.parentNode,t,n,r+1):-1}function vy(e,t){return n=>{const r=n;if(null===r)return!1;try{if(e)if("string"==typeof e){if(r.matches(`.${e}`))return!0}else if(function(e,t){for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}return!1}(r,e))return!0;return!(!t||!r.matches(t))}catch{return!1}}}let yy={map:{},getId:()=>-1,getNode:()=>null,removeNodeFromMap(){},has:()=>!1,reset(){}};function by(e,t,n,r,o=window){const i=o.Object.getOwnPropertyDescriptor(e,t);return o.Object.defineProperty(e,t,r?n:{set(e){Cy(()=>{n.set.call(this,e)},0),i&&i.set&&i.set.call(this,e)}}),()=>by(e,t,i||{},!0)}function wy(e,t,n){try{if(!(t in e))return()=>{};const r=e[t],o=n(r);return"function"==typeof o&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),e[t]=o,()=>{e[t]=r}}catch{return()=>{}}}function xy(e,t,n,r,o){if(!e)return!1;const i=function(e){if(!e)return null;try{return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}catch(e){return null}}(e);if(!i)return!1;const s=vy(t,n);if(!o){const e=r&&i.matches(r);return s(i)&&!e}const a=my(i,s);let c=-1;return!(a<0)&&(r&&(c=my(i,vy(null,r))),a>-1&&c<0||a<c)}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(yy=new Proxy(yy,{get:(e,t,n)=>Reflect.get(e,t,n)})),Date.now().toString();const ky={};function _y(e){const t=ky[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"==typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(e){}return ky[e]=r.bind(window)}function Sy(...e){return _y("requestAnimationFrame")(...e)}function Cy(...e){return _y("setTimeout")(...e)}var Ey=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Ey||{});let Ty;const My=e=>{if(!Ty)return e;return(...t)=>{try{return e(...t)}catch(e){if(Ty&&!0===Ty(e))return()=>{};throw e}}};for(var Iy="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ay="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ry=0;Ry<64;Ry++)Ay[Iy.charCodeAt(Ry)]=Ry;const Ly=new Map;const Py=(e,t,n)=>{if(!e||!Ny(e,t)&&"object"!=typeof e)return;const r=function(e,t){let n=Ly.get(e);return n||(n=new Map,Ly.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let o=r.indexOf(e);return-1===o&&(o=r.length,r.push(e)),o};function Oy(e,t,n){if(e instanceof Array)return e.map(e=>Oy(e,t,n));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t<r;t+=3)o+=Iy[n[t]>>2],o+=Iy[(3&n[t])<<4|n[t+1]>>4],o+=Iy[(15&n[t+1])<<2|n[t+2]>>6],o+=Iy[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[Oy(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[Oy(e.data,t,n),e.width,e.height]}}if(Ny(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:Py(e,t,n)}}return e}const Dy=(e,t,n)=>e.map(e=>Oy(e,t,n)),Ny=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(e=>"function"==typeof t[e]);return Boolean(n.find(n=>e instanceof t[n]))};function By(e,t,n,r,o){const i=[];try{const s=wy(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i,...s){if(!xy(this,t,n,r,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(i);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(s[0]&&"object"==typeof s[0]){const e=s[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else s.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[i,...s])}});i.push(s)}catch{}return()=>{i.forEach(e=>e())}}function jy(e,t,n,r,o,i,s,a){const c=[],l=Object.getOwnPropertyNames(e);for(const s of l)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(s))try{if("function"!=typeof e[s])continue;const l=wy(e,s,function(e){return function(...c){const l=e.apply(this,c);if(Py(l,a,this),"tagName"in this.canvas&&!xy(this.canvas,r,o,i,!0)){const e=Dy(c,a,this),r={type:t,property:s,args:e};n(this.canvas,r)}return l}});c.push(l)}catch{const r=by(e,s,{set(e){n(this.canvas,{type:t,property:s,args:[e],setter:!0})}});c.push(r)}return c}class $y{constructor(e){this.pendingCanvasMutations=new Map,this.rafStamps={latestId:0,invokeId:null},this.shadowDoms=new Set,this.windowsSet=new WeakSet,this.windows=[],this.restoreHandlers=[],this.frozen=!1,this.locked=!1,this.snapshotInProgressMap=new Map,this.worker=null,this.lastSnapshotTime=0,this.processMutation=(e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)};const{enableManualSnapshot:t,sampling:n="all",win:r,recordCanvas:o,errorHandler:i}=e;e.sampling=n,this.mutationCb=e.mutationCb,this.mirror=e.mirror,this.options=e,i&&(Ty=i),(o&&"number"==typeof n||t)&&(this.worker=this.initFPSWorker()),this.addWindow(r),t||My(()=>{o&&"all"===n&&(this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher()),o&&"number"==typeof n&&this.initCanvasFPSObserver()})()}reset(){this.pendingCanvasMutations.clear(),this.restoreHandlers.forEach(e=>{try{e()}catch(e){}}),this.restoreHandlers=[],this.windowsSet=new WeakSet,this.windows=[],this.shadowDoms=new Set,this.worker?.terminate(),this.worker=null,this.snapshotInProgressMap=new Map}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}addWindow(e){const{sampling:t="all",blockClass:n,blockSelector:r,unblockSelector:o,recordCanvas:i,enableManualSnapshot:s}=this.options;if(!this.windowsSet.has(e)){if(s)return this.windowsSet.add(e),void this.windows.push(new WeakRef(e));My(()=>{if(i&&"all"===t&&this.initCanvasMutationObserver(e,n,r,o),i&&"number"==typeof t){const t=By(e,n,r,o,!0);this.restoreHandlers.push(()=>{t()})}})(),this.windowsSet.add(e),this.windows.push(new WeakRef(e))}}addShadowRoot(e){this.shadowDoms.add(new WeakRef(e))}resetShadowRoots(){this.shadowDoms=new Set}snapshot(e,t){t?.skipRequestAnimationFrame?this.takeSnapshot(performance.now(),!0,e):Sy(t=>this.takeSnapshot(t,!0,e))}initFPSWorker(){const e=new Worker(function(){const e=new Blob(['for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="undefined"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s="";for(a=0;a<r;a+=3)s+=e[n[a]>>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+"=":r%3==1&&(s=s.substring(0,s.length-2)+"=="),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!("OffscreenCanvas"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+"-"+t;if("OffscreenCanvas"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext("2d");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return""}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext("bitmaprenderer"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:"low"});w?.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};']);return URL.createObjectURL(e)}());return e.onmessage=e=>{const t=e.data,{id:n}=t;if(this.snapshotInProgressMap.set(n,!1),!("base64"in t))return;const{base64:r,type:o,width:i,height:s}=t;this.mutationCb({id:n,type:Ey["2D"],commands:[{property:"clearRect",args:[0,0,i,s]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:r}],type:o}]},0,0,i,s]}]})},e}initCanvasFPSObserver(){let e;if(!this.windows.length&&!this.shadowDoms.size)return;const t=n=>{this.takeSnapshot(n,!1),e=Sy(t)};e=Sy(t),this.restoreHandlers.push(()=>{e&&cancelAnimationFrame(e)})}initCanvasMutationObserver(e,t,n,r){const o=By(e,t,n,r,!1),i=function(e,t,n,r,o){const i=[],s=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of s)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const s=wy(t.CanvasRenderingContext2D.prototype,a,function(i){return function(...s){return xy(this.canvas,n,r,o,!0)||Cy(()=>{const n=Dy(s,t,this);e(this.canvas,{type:Ey["2D"],property:a,args:n})},0),i.apply(this,s)}});i.push(s)}catch{const n=by(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:Ey["2D"],property:a,args:[t],setter:!0})}});i.push(n)}return()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n,r),s=function(e,t,n,r,o){const i=[];return i.push(...jy(t.WebGLRenderingContext.prototype,Ey.WebGL,e,n,r,o,0,t)),void 0!==t.WebGL2RenderingContext&&i.push(...jy(t.WebGL2RenderingContext.prototype,Ey.WebGL2,e,n,r,o,0,t)),()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n,r,this.mirror);this.restoreHandlers.push(()=>{o(),i(),s()})}getCanvasElements(e,t,n){const r=[],o=o=>{o.querySelectorAll("canvas").forEach(o=>{xy(o,e,t,n,!0)||r.push(o)})};for(const e of this.windows){const t=e.deref();let n;try{n=t&&t.document}catch{}n&&o(n)}for(const e of this.shadowDoms){const t=e.deref();t&&o(t)}return r}takeSnapshot(e,t,n){const{sampling:r,blockClass:o,blockSelector:i,unblockSelector:s,dataURLOptions:a,maxCanvasSize:c}=this.options,l=1e3/("all"===r?2:r||2);if(this.lastSnapshotTime&&e-this.lastSnapshotTime<l)return!1;this.lastSnapshotTime=e;return(n?[n]:this.getCanvasElements(o,i,s)).forEach(e=>{const n=this.mirror.getId(e);if(this.mirror.hasNode(e)&&e.width&&e.height&&!this.snapshotInProgressMap.get(n)){if(this.snapshotInProgressMap.set(n,!0),!t&&["webgl","webgl2"].includes(e.__context)){const t=e.getContext(e.__context);!1===t?.getContextAttributes()?.preserveDrawingBuffer&&t.clear(t.COLOR_BUFFER_BIT)}createImageBitmap(e).then(t=>{this.worker?.postMessage({id:n,bitmap:t,width:e.width,height:e.height,dataURLOptions:a,maxCanvasSize:c},[t])}).catch(e=>{My(()=>{throw this.snapshotInProgressMap.delete(n),e})()})}}),!0}startPendingCanvasMutationFlusher(){Sy(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,Sy(e)};Sy(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)}),Sy(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const r=n.map(e=>{const{type:t,...n}=e;return n}),{type:o}=n[0];this.mutationCb({id:t,type:o,commands:r}),this.pendingCanvasMutations.delete(e)}}try{if(2!==Array.from([1],e=>2*e)[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=e.contentWindow?.Array.from||Array.from,document.body.removeChild(e)}}catch(e){}var zy;new gy,function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"}(zy||(zy={}));const Fy={low:{sampling:{canvas:1},dataURLOptions:{type:"image/webp",quality:.25}},medium:{sampling:{canvas:2},dataURLOptions:{type:"image/webp",quality:.4}},high:{sampling:{canvas:4},dataURLOptions:{type:"image/webp",quality:.5}}},Hy=1280,qy=(e={})=>{const[t,n]=e.maxCanvasSize||[],r={quality:e.quality||"medium",enableManualSnapshot:e.enableManualSnapshot,maxCanvasSize:[t?Math.min(t,Hy):Hy,n?Math.min(n,Hy):Hy]};let o,i;const s=new Promise(e=>i=e);return{name:"ReplayCanvas",getOptions(){const{quality:e,enableManualSnapshot:t,maxCanvasSize:n}=r;return{enableManualSnapshot:t,recordCanvas:!0,getCanvasManager:e=>{const r=new $y({...e,enableManualSnapshot:t,maxCanvasSize:n,errorHandler:e=>{try{"object"==typeof e&&(e.__rrweb__=!0)}catch{}}});return o=r,i(r),r},...Fy[e]||Fy.medium}},async snapshot(e,t){(o||await s).snapshot(e,t)}}};function Uy(e){try{return new URL(e,Pd.location.origin).href}catch{return}}function Wy(e){try{return new Headers(e)}catch{return}}const Vy=new WeakMap,Ky=new Map,Gy={traceFetch:!0,traceXHR:!0,enableHTTPTimings:!0,trackFetchStreamPerformance:!1};function Jy(e,t){const{traceFetch:n,traceXHR:r,trackFetchStreamPerformance:o,shouldCreateSpanForRequest:i,enableHTTPTimings:s,tracePropagationTargets:a,onRequestSpanStart:c,onRequestSpanEnd:l}={...Gy,...t},d="function"==typeof i?i:e=>!0,u=e=>function(e,t){const n=ne();if(n){let r,o;try{r=new URL(e,n),o=new URL(n).origin}catch{return!1}const i=r.origin===o;return t?xe(r.toString(),t)||i&&xe(r.pathname,t):i}{const n=!!e.match(/^\/(?!\/)/);return t?xe(e,t):n}}(e,a),p={},h=e.getOptions().propagateTraceparent;n&&(e.addEventProcessor(e=>("transaction"===e.type&&e.spans&&e.spans.forEach(e=>{if("http.client"===e.op){const t=Ky.get(e.span_id);t&&(e.timestamp=t/1e3,Ky.delete(e.span_id))}}),e)),o&&function(e){const t="fetch-body-resolved";A(t,e),R(t,()=>Fc(Hc))}(e=>{if(e.response){const t=Vy.get(e.response);t&&e.endTimestamp&&Ky.set(t,e.endTimestamp)}}),zc(e=>{const t=as(e,d,u,p,{propagateTraceparent:h,onRequestSpanEnd:l});if(e.response&&e.fetchData.__span&&Vy.set(e.response,e.fetchData.__span),t){const n=Uy(e.fetchData.url),r=n?qo(n).host:void 0;t.setAttributes({"http.url":n,"server.address":r}),s&&Yy(t),c?.(t,{headers:e.headers})}})),r&&Np(e=>{const t=function(e,t,n,r,o,i){const s=e.xhr,a=s?.[Dp];if(!s||s.__sentry_own_request__||!a)return;const{url:c,method:l}=a,d=sn()&&t(c);if(e.endTimestamp&&d){const t=s.__sentry_xhr_span_id__;if(!t)return;const n=r[t];return void(n&&void 0!==a.status_code&&(mt(n,a.status_code),n.end(),i?.(n,{headers:Wy(Hp(s)),error:e.error}),delete r[t]))}const u=Uy(c),p=qo(u||c),h=Uo(c),f=!!en(),g=d&&f?Un({name:`${l} ${h}`,attributes:{url:c,type:"xhr","http.method":l,"http.url":u,"server.address":p?.host,[it]:"auto.http.browser",[ot]:"http.client",...p?.search&&{"http.query":p?.search},...p?.hash&&{"http.fragment":p?.hash}}}):new yn;s.__sentry_xhr_span_id__=g.spanContext().spanId,r[s.__sentry_xhr_span_id__]=g,n(c)&&function(e,t,n){const{"sentry-trace":r,baggage:o,traceparent:i}=Yo({span:t,propagateTraceparent:n});r&&function(e,t,n,r){const o=e.__sentry_xhr_v3__?.request_headers;if(o?.["sentry-trace"]||!e.setRequestHeader)return;try{if(e.setRequestHeader("sentry-trace",t),r&&!o?.traceparent&&e.setRequestHeader("traceparent",r),n){const t=o?.baggage;t&&t.split(",").some(e=>e.trim().startsWith("sentry-"))||e.setRequestHeader("baggage",n)}}catch{}}(e,r,o,i)}(s,sn()&&f?g:void 0,o);const m=Ze();m&&m.emit("beforeOutgoingRequestSpan",g,e);return g}(e,d,u,p,h,l);t&&(s&&Yy(t),c?.(t,{headers:Wy(e.xhr.__sentry_xhr_v3__?.request_headers)}))})}function Yy(e){const{url:t}=Vt(e).data;if(!t||"string"!=typeof t)return;const n=Gu("resource",({entries:r})=>{r.forEach(r=>{(function(e){return"resource"===e.entryType&&"initiatorType"in e&&"string"==typeof e.nextHopProtocol&&("fetch"===e.initiatorType||"xmlhttprequest"===e.initiatorType)})(r)&&r.name.endsWith(t)&&(e.setAttributes(hp(r)),setTimeout(n))})})}const Xy="sentry_previous_trace",Qy="sentry.previous_trace";function Zy(e,{linkPreviousTrace:t,consistentTraceSampling:n}){const r="session-storage"===t;let o=r?function(){try{const e=Pd.sessionStorage?.getItem(Xy);return JSON.parse(e)}catch{return}}():void 0;e.on("spanStart",e=>{if(Zt(e)!==e)return;const t=Ge().getPropagationContext();o=function(e,t,n){const r=Vt(t);function o(){try{return Number(n.dsc?.sample_rate)??Number(r.data?.[nt])}catch{return 0}}const i={spanContext:t.spanContext(),startTimestamp:r.start_timestamp,sampleRate:o(),sampleRand:n.sampleRand};if(!e)return i;const s=e.spanContext;if(s.traceId===r.trace_id)return e;Date.now()/1e3-e.startTimestamp<=3600&&(Xp&&y.log(`Adding previous_trace \`${JSON.stringify(s)}\` link to span \`${JSON.stringify({op:r.op,...t.spanContext()})}\``),t.addLink({context:s,attributes:{[ft]:"previous_trace"}}),t.setAttribute(Qy,`${s.traceId}-${s.spanId}-${eb(s)?1:0}`));return i}(o,e,t),r&&function(e){try{Pd.sessionStorage.setItem(Xy,JSON.stringify(e))}catch(e){Xp&&y.warn("Could not store previous trace in sessionStorage",e)}}(o)});let i=!0;n&&e.on("beforeSampling",e=>{if(!o)return;const t=Ge(),n=t.getPropagationContext();i&&n.parentSpanId?i=!1:(t.setPropagationContext({...n,dsc:{...n.dsc,sample_rate:String(o.sampleRate),sampled:String(eb(o.spanContext))},sampleRand:o.sampleRand}),e.parentSampled=eb(o.spanContext),e.parentSampleRate=o.sampleRate,e.spanAttributes={...e.spanAttributes,[rt]:o.sampleRate})})}function eb(e){return 1===e.traceFlags}const tb={...tr,instrumentNavigation:!0,instrumentPageLoad:!0,markBackgroundSpan:!0,enableLongTask:!0,enableLongAnimationFrame:!0,enableInp:!0,enableElementTiming:!0,ignoreResourceSpans:[],ignorePerformanceApiSpans:[],detectRedirects:!0,linkPreviousTrace:"in-memory",consistentTraceSampling:!1,enableReportPageLoaded:!1,_experiments:{},...Gy},nb=(e={})=>{const t={name:void 0,source:void 0},n=Pd.document,{enableInp:r,enableElementTiming:o,enableLongTask:i,enableLongAnimationFrame:s,_experiments:{enableInteractions:c,enableStandaloneClsSpans:l,enableStandaloneLcpSpans:d},beforeStartSpan:u,idleTimeout:p,finalTimeout:h,childSpanTimeout:f,markBackgroundSpan:g,traceFetch:m,traceXHR:v,trackFetchStreamPerformance:b,shouldCreateSpanForRequest:w,enableHTTPTimings:x,ignoreResourceSpans:k,ignorePerformanceApiSpans:_,instrumentPageLoad:S,instrumentNavigation:C,detectRedirects:E,linkPreviousTrace:T,consistentTraceSampling:M,enableReportPageLoaded:I,onRequestSpanStart:A,onRequestSpanEnd:R}={...tb,...e};let L,P,O;function D(e,r,o=!0){const i="pageload"===r.op,s=r.name,a=u?u(r):r,c=a.attributes||{};if(s!==a.name&&(c[tt]="custom",a.attributes=c),!o){const e=Me();return void Un({...a,startTime:e}).end(e)}t.name=a.name,t.source=c[tt];const g=nr(a,{idleTimeout:p,finalTimeout:h,childSpanTimeout:f,disableAutoFinish:i,beforeSpanEnd:t=>{L?.(),wp(t,{recordClsOnPageloadSpan:!l,recordLcpOnPageloadSpan:!d,ignoreResourceSpans:k,ignorePerformanceApiSpans:_}),cb(e,void 0);const n=Ge(),r=n.getPropagationContext();n.setPropagationContext({...r,traceId:g.spanContext().traceId,sampled:Kt(g),dsc:mn(t)}),i&&(O=void 0)},trimIdleSpanEndTimestamp:!I});function m(){n&&["interactive","complete"].includes(n.readyState)&&e.emit("idleSpanEnableAutoFinish",g)}i&&I&&(O=g),cb(e,g),i&&!I&&n&&(n.addEventListener("readystatechange",()=>{m()}),m())}return{name:"BrowserTracing",setup(e){if(on(),L=bp({recordClsStandaloneSpans:l||!1,recordLcpStandaloneSpans:d||!1,client:e}),r&&Vp(),o&&sp()&&Le()&&Gu("element",kp),s&&a.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&PerformanceObserver.supportedEntryTypes.includes("long-animation-frame")?new PerformanceObserver(e=>{const t=en();if(t)for(const n of e.getEntries()){if(!n.scripts[0])continue;const e=ap(Le()+n.startTime),{start_timestamp:r,op:o}=Vt(t);if("navigation"===o&&r&&e<r)continue;const i=ap(n.duration),s={[it]:"auto.ui.browser.metrics"},a=n.scripts[0],{invoker:c,invokerType:l,sourceURL:d,sourceFunctionName:u,sourceCharPosition:p}=a;s["browser.script.invoker"]=c,s["browser.script.invoker_type"]=l,d&&(s["code.filepath"]=d),u&&(s["code.function"]=u),-1!==p&&(s["browser.script.source_char_position"]=p),op(t,e,e+i,{name:"Main UI thread blocked",op:"ui.long-animation-frame",attributes:s})}}).observe({type:"long-animation-frame",buffered:!0}):i&&Gu("longtask",({entries:e})=>{const t=en();if(!t)return;const{op:n,start_timestamp:r}=Vt(t);for(const o of e){const e=ap(Le()+o.startTime),i=ap(o.duration);"navigation"===n&&r&&e<r||op(t,e,e+i,{name:"Main UI thread blocked",op:"ui.long-task",attributes:{[it]:"auto.ui.browser.metrics"}})}}),c&&Gu("event",({entries:e})=>{const t=en();if(t)for(const n of e)if("click"===n.name){const e=ap(Le()+n.startTime),r=ap(n.duration),o={name:ee(n.target),op:`ui.interaction.${n.name}`,startTime:e,attributes:{[it]:"auto.ui.browser.metrics"}},i=re(n.target);i&&(o.attributes["ui.component_name"]=i),op(t,e,e+r,o)}}),E&&n){const e=()=>{P=Ae()};addEventListener("click",e,{capture:!0}),addEventListener("keydown",e,{capture:!0,passive:!0})}function t(){const t=ab(e);t&&!Vt(t).timestamp&&(Xp&&y.log(`[Tracing] Finishing current active span with op: ${Vt(t).op}`),t.setAttribute(st,"cancelled"),t.end())}e.on("startNavigationSpan",(n,r)=>{if(Ze()!==e)return;if(r?.isRedirect)return Xp&&y.warn("[Tracing] Detected redirect, navigation span will not be the root span, but a child span."),void D(e,{op:"navigation.redirect",...n},!1);P=void 0,t(),Je().setPropagationContext({traceId:Ne(),sampleRand:Math.random(),propagationSpanId:sn()?void 0:Be()});const o=Ge();o.setPropagationContext({traceId:Ne(),sampleRand:Math.random(),propagationSpanId:sn()?void 0:Be()}),o.setSDKProcessingMetadata({normalizedRequest:void 0}),D(e,{op:"navigation",...n,parentSpan:null,forceTransaction:!0})}),e.on("startPageLoadSpan",(n,r={})=>{if(Ze()!==e)return;t();const o=Nt(r.sentryTrace||ib("sentry-trace"),r.baggage||ib("baggage")),i=Ge();i.setPropagationContext(o),sn()||(i.getPropagationContext().propagationSpanId=Be()),i.setSDKProcessingMetadata({normalizedRequest:Bd()}),D(e,{op:"pageload",...n})}),e.on("endPageloadSpan",()=>{I&&O&&(O.setAttribute(st,"reportPageLoaded"),O.end())})},afterAllSetup(e){let n=ne();if("off"!==T&&Zy(e,{linkPreviousTrace:T,consistentTraceSampling:M}),Pd.location){if(S){const t=Le();rb(e,{name:Pd.location.pathname,startTime:t?t/1e3:void 0,attributes:{[tt]:"url",[it]:"auto.pageload.browser"}})}C&&Ap(({to:t,from:r})=>{if(void 0===r&&-1!==n?.indexOf(t))return void(n=void 0);n=void 0;const o=Fo(t),i=ab(e),s=i&&E&&function(e,t){const n=Vt(e),r=Me(),o=n.start_timestamp;if(r-o>lb)return!1;if(t&&r-t<=lb)return!1;return!0}(i,P);ob(e,{name:o?.pathname||Pd.location.pathname,attributes:{[tt]:"url",[it]:"auto.navigation.browser"}},{url:t,isRedirect:s})})}g&&(Pd.document?Pd.document.addEventListener("visibilitychange",()=>{const e=en();if(!e)return;const t=Zt(e);if(Pd.document.hidden&&t){const e="cancelled",{op:n,status:r}=Vt(t);Xp&&y.log(`[Tracing] Transaction: ${e} -> since tab moved to the background, op: ${n}`),r||t.setStatus({code:2,message:e}),t.setAttribute("sentry.cancellation_reason","document.hidden"),t.end()}}):Xp&&y.warn("[Tracing] Could not set up background tab detection due to lack of global document")),c&&function(e,t,n,r,o){const i=Pd.document;let s;const a=()=>{const i="ui.action.click",a=ab(e);if(a){const e=Vt(a).op;if(["navigation","pageload"].includes(e))return void(Xp&&y.warn(`[Tracing] Did not create ${i} span because a pageload or navigation span is in progress.`))}s&&(s.setAttribute(st,"interactionInterrupted"),s.end(),s=void 0),o.name?s=nr({name:o.name,op:i,attributes:{[tt]:o.source||"url"}},{idleTimeout:t,finalTimeout:n,childSpanTimeout:r}):Xp&&y.warn(`[Tracing] Did not create ${i} transaction because _latestRouteName is missing.`)};i&&addEventListener("click",a,{capture:!0})}(e,p,h,f,t),r&&Jp(),Jy(e,{traceFetch:m,traceXHR:v,trackFetchStreamPerformance:b,tracePropagationTargets:e.getOptions().tracePropagationTargets,shouldCreateSpanForRequest:w,enableHTTPTimings:x,onRequestSpanStart:A,onRequestSpanEnd:R})}}};function rb(e,t,n){e.emit("startPageLoadSpan",t,n),Ge().setTransactionName(t.name);const r=ab(e);return r&&e.emit("afterStartPageLoadSpan",r),r}function ob(e,t,n){const{url:r,isRedirect:o}=n||{};e.emit("beforeStartNavigationSpan",t,{isRedirect:o}),e.emit("startNavigationSpan",t,{isRedirect:o});const i=Ge();return i.setTransactionName(t.name),r&&!o&&i.setSDKProcessingMetadata({normalizedRequest:{...Bd(),url:r}}),ab(e)}function ib(e){const t=Pd.document,n=t?.querySelector(`meta[name=${e}]`);return n?.getAttribute("content")||void 0}const sb="_sentry_idleSpan";function ab(e){return e[sb]}function cb(e,t){ie(e,sb,t)}const lb=1.5;function db(e=Ze()){e?.emit("endPageloadSpan")}function ub(e){const t=en();if(t===e)return;const n=Ge();e.end=new Proxy(e.end,{apply:(e,r,o)=>($e(n,t),Reflect.apply(e,r,o))}),$e(n,e)}function pb(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function hb(e){return pb(e.getAllKeys())}function fb(e){let t;function n(){return null==t&&(t=function(e,t){const n=indexedDB.open(e);n.onupgradeneeded=()=>n.result.createObjectStore(t);const r=pb(n);return e=>r.then(n=>e(n.transaction(t,"readwrite").objectStore(t)))}(e.dbName||"sentry-offline",e.storeName||"queue")),t}return{push:async t=>{try{const r=await Tn(t);await function(e,t,n){return e(e=>hb(e).then(r=>{if(!(r.length>=n))return e.put(t,Math.max(...r,0)+1),pb(e.transaction)}))}(n(),r,e.maxQueueSize||30)}catch{}},unshift:async t=>{try{const r=await Tn(t);await function(e,t,n){return e(e=>hb(e).then(r=>{if(!(r.length>=n))return e.put(t,Math.min(...r,0)-1),pb(e.transaction)}))}(n(),r,e.maxQueueSize||30)}catch{}},shift:async()=>{try{const e=await function(e){return e(e=>hb(e).then(t=>{const n=t[0];if(null!=n)return pb(e.get(n)).then(t=>(e.delete(n),pb(e.transaction).then(()=>t)))}))}(n());if(e)return Mn(e)}catch{}}}}function gb(e=Yp){return function(e){return t=>{const n=e({...t,createStore:fb});return Pd.addEventListener("online",async e=>{await n.flush()}),n}}(No(e))}const mb=1e6,vb="window"in a&&a.window===a&&"undefined"==typeof importScripts,yb=String(0),bb=vb?"main":"worker",wb=Pd.navigator;let xb="",kb="",_b="",Sb=wb?.userAgent||"",Cb="";const Eb=wb?.language||wb?.languages?.[0]||"";const Tb=wb?.userAgentData;var Mb;function Ib(e){return function(e){return!("thread_metadata"in e)}(e)?function(e){let t,n=0;const r={samples:[],stacks:[],frames:[],thread_metadata:{[yb]:{name:bb}}},o=e.samples[0];if(!o)return r;const i=o.timestamp,s=Le(),a="number"==typeof performance.timeOrigin?performance.timeOrigin:s||0,c=a-(s||a);return e.samples.forEach((o,s)=>{if(void 0===o.stackId)return void 0===t&&(t=n,r.stacks[t]=[],n++),void(r.samples[s]={elapsed_since_start_ns:((o.timestamp+c-i)*mb).toFixed(0),stack_id:t,thread_id:yb});let a=e.stacks[o.stackId];const l=[];for(;a;){l.push(a.frameId);const t=e.frames[a.frameId];t&&void 0===r.frames[a.frameId]&&(r.frames[a.frameId]={function:t.name,abs_path:"number"==typeof t.resourceId?e.resources[t.resourceId]:void 0,lineno:t.line,colno:t.column}),a=void 0===a.parentId?void 0:e.stacks[a.parentId]}const d={elapsed_since_start_ns:((o.timestamp+c-i)*mb).toFixed(0),stack_id:n,thread_id:yb};r.stacks[n]=l,r.samples[s]=d,n++}),r}(e):e}function Ab(e,t,n,r){if("transaction"!==r.type)throw new TypeError("Profiling events may only be attached to transactions, this should never occur.");if(null==n)throw new TypeError(`Cannot construct profiling event envelope without a valid profile. Got ${n} instead.`);const o=function(e){const t=e.contexts?.trace?.trace_id;return"string"==typeof t&&32!==t.length&&Xp&&y.log(`[Profiling] Invalid traceId: ${t} on profiled event`),"string"!=typeof t?"":t}(r),i=Ib(n),s=t||("number"==typeof r.start_timestamp?1e3*r.start_timestamp:1e3*Ae()),a="number"==typeof r.timestamp?1e3*r.timestamp:1e3*Ae();return{event_id:e,timestamp:new Date(s).toISOString(),platform:"javascript",version:"1",release:r.release||"",environment:r.environment||un,runtime:{name:"javascript",version:Pd.navigator.userAgent},os:{name:xb,version:kb,build_number:Sb},device:{locale:Eb,model:Cb,manufacturer:Sb,architecture:_b,is_emulator:!1},debug_meta:{images:Pb(n.resources)},profile:i,transactions:[{name:r.transaction||"",id:r.event_id||ke(),trace_id:o,active_thread_id:yb,relative_start_ns:"0",relative_end_ns:(1e6*(a-s)).toFixed(0)}]}}function Rb(e,t,n){if(null==e)throw new TypeError(`Cannot construct profiling event envelope without a valid profile. Got ${e} instead.`);const r=function(e){const t=[];for(let n=0;n<e.frames.length;n++){const r=e.frames[n];r&&(t[n]={function:r.name,abs_path:"number"==typeof r.resourceId?e.resources[r.resourceId]:void 0,lineno:r.line,colno:r.column})}const n=[];for(let t=0;t<e.stacks.length;t++){const r=e.stacks[t];if(!r)continue;const o=[];let i=r;for(;i;)o.push(i.frameId),i=void 0===i.parentId?void 0:e.stacks[i.parentId];n[t]=o}const r=Le(),o="number"==typeof performance.timeOrigin?performance.timeOrigin:r||0,i=o-(r||o),s=[];for(let t=0;t<e.samples.length;t++){const n=e.samples[t];if(!n)continue;const r=(o+(n.timestamp-i))/1e3;s[t]={stack_id:n.stackId??0,thread_id:yb,timestamp:r}}return{frames:t,stacks:n,samples:s,thread_metadata:{[yb]:{name:bb}}}}(e),o=t.getOptions(),i=t.getSdkMetadata?.()?.sdk;return{chunk_id:ke(),client_sdk:{name:i?.name??"sentry.javascript.browser",version:i?.version??"0.0.0"},profiler_id:n||ke(),platform:"javascript",version:"2",release:o.release??"",environment:o.environment??"production",debug_meta:{images:Pb(e.resources)},profile:r}}function Lb(e){return"pageload"===Vt(e).op}function Pb(e){const t=Ze(),n=t?.getOptions(),r=n?.stackParser;return r?function(e,t){const n=pr(e);if(!n)return[];const r=[];for(const e of t)e&&n[e]&&r.push({type:"sourcemap",code_file:e,debug_id:n[e]});return r}(r,e):[]}function Ob(e){return"number"!=typeof e&&"boolean"!=typeof e||"number"==typeof e&&isNaN(e)?(Xp&&y.warn(`[Profiling] Invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(e)} of type ${JSON.stringify(typeof e)}.`),!1):!0===e||!1===e||(!(e<0||e>1)||(Xp&&y.warn(`[Profiling] Invalid sample rate. Sample rate must be between 0 and 1. Got ${e}.`),!1))}"object"==typeof(Mb=Tb)&&null!==Mb&&"getHighEntropyValues"in Mb&&Tb.getHighEntropyValues(["architecture","model","platform","platformVersion","fullVersionList"]).then(e=>{if(xb=e.platform||"",_b=e.architecture||"",Cb=e.model||"",kb=e.platformVersion||"",e.fullVersionList?.length){const t=e.fullVersionList[e.fullVersionList.length-1];Sb=`${t.brand} ${t.version}`}}).catch(e=>{});let Db=!1;function Nb(){const e=Pd.Profiler;if("function"!=typeof e)return void(Xp&&y.log("[Profiling] Profiling is not supported by this browser, Profiler interface missing on window object."));const t=Math.floor(3e3);try{return new e({sampleInterval:10,maxBufferSize:t})}catch(e){Xp&&(y.log("[Profiling] Failed to initialize the Profiling constructor, this is likely due to a missing 'Document-Policy': 'js-profiling' header."),y.log("[Profiling] Disabling profiling for current user session.")),Db=!0}}function Bb(e){if(Db)return Xp&&y.log("[Profiling] Profiling has been disabled for the duration of the current user session."),!1;if(!e.isRecording())return Xp&&y.log("[Profiling] Discarding profile because root span was not sampled."),!1;const t=Ze(),n=t?.getOptions();if(!n)return Xp&&y.log("[Profiling] Profiling disabled, no options found."),!1;const r=n.profilesSampleRate;if(!Ob(r))return Xp&&y.warn("[Profiling] Discarding profile because of invalid sample rate."),!1;if(!r)return Xp&&y.log("[Profiling] Discarding profile because a negative sampling decision was inherited or profileSampleRate is set to 0"),!1;return!!(!0===r||Math.random()<r)||(Xp&&y.log(`[Profiling] Discarding profile because it's not included in the random sample (sampling rate = ${Number(r)})`),!1)}function jb(e){return void 0!==e.profilesSampleRate}function $b(e,t,n,r){return function(e){return e.samples.length<2?(Xp&&y.log("[Profiling] Discarding profile because it contains less than 2 samples"),!1):!!e.frames.length||(Xp&&y.log("[Profiling] Discarding profile because it contains no frames"),!1)}(n)?Ab(e,t,n,r):null}const zb=new Map;function Fb(e){const t=zb.get(e);return t&&zb.delete(e),t}function Hb(e){let t;Lb(e)&&(t=1e3*Ae());const n=Nb();if(!n)return;Xp&&y.log(`[Profiling] started profiling span: ${Vt(e).description}`);const r=ke();let o=null;async function i(){if(e&&n){if(!o)return n.stop().then(t=>{s&&(Pd.clearTimeout(s),s=void 0),Xp&&y.log(`[Profiling] stopped profiling of span: ${Vt(e).description}`),t?(o=t,function(e,t){if(zb.set(e,t),zb.size>30){const e=zb.keys().next().value;void 0!==e&&zb.delete(e)}}(r,t)):Xp&&y.log(`[Profiling] profiler returned null profile for: ${Vt(e).description}`,"this may indicate an overlapping span or a call to stopProfiling with a profile title that was never started")}).catch(e=>{Xp&&y.log("[Profiling] error while stopping profiler:",e)});Xp&&y.log("[Profiling] profile for:",Vt(e).description,"already exists, returning early")}}Ge().setContext("profile",{profile_id:r,start_timestamp:t});let s=Pd.setTimeout(()=>{Xp&&y.log("[Profiling] max profile duration elapsed, stopping profiling for:",Vt(e).description),i()},3e4);const a=e.end.bind(e);e.end=function(){return e?(i().then(()=>{a()},()=>{a()}),e):a()}}class qb{constructor(){this._client=void 0,this._profiler=void 0,this._chunkTimer=void 0,this._profilerId=void 0,this._isRunning=!1,this._sessionSampled=!1,this._lifecycleMode=void 0,this._activeRootSpanIds=new Set,this._rootSpanTimeouts=new Map}initialize(e){const t=e.getOptions().profileLifecycle,n=function(e){if(Db)return Xp&&y.log("[Profiling] Profiling has been disabled for the duration of the current user session as the JS Profiler could not be started."),!1;if("trace"!==e.profileLifecycle&&"manual"!==e.profileLifecycle)return Xp&&y.warn("[Profiling] Session not sampled. Invalid `profileLifecycle` option."),!1;const t=e.profileSessionSampleRate;return Ob(t)?t?Math.random()<=t:(Xp&&y.log("[Profiling] Discarding profile because profileSessionSampleRate is not defined or set to 0"),!1):(Xp&&y.warn("[Profiling] Discarding profile because of invalid profileSessionSampleRate."),!1)}(e.getOptions());Xp&&y.log(`[Profiling] Initializing profiler (lifecycle='${t}').`),n||Xp&&y.log("[Profiling] Session not sampled. Skipping lifecycle profiler initialization."),this._profilerId=ke(),this._client=e,this._sessionSampled=n,this._lifecycleMode=t,"trace"===t&&this._setupTraceLifecycleListeners(e)}start(){"trace"!==this._lifecycleMode?this._isRunning?Xp&&y.warn("[Profiling] Profile session is already running, `uiProfiler.start()` is a no-op."):this._sessionSampled?this._beginProfiling():Xp&&y.warn("[Profiling] Session is not sampled, `uiProfiler.start()` is a no-op."):Xp&&y.warn('[Profiling] `profileLifecycle` is set to "trace". Calls to `uiProfiler.start()` are ignored in trace mode.')}stop(){"trace"!==this._lifecycleMode?this._isRunning?this._endProfiling():Xp&&y.warn("[Profiling] Profiler is not running, `uiProfiler.stop()` is a no-op."):Xp&&y.warn('[Profiling] `profileLifecycle` is set to "trace". Calls to `uiProfiler.stop()` are ignored in trace mode.')}notifyRootSpanActive(e){if("trace"!==this._lifecycleMode||!this._sessionSampled)return;const t=e.spanContext().spanId;if(!t||this._activeRootSpanIds.has(t))return;this._registerTraceRootSpan(t);const n=this._activeRootSpanIds.size;1===n&&(Xp&&y.log("[Profiling] Detected already active root span during setup. Active root spans now:",n),this._beginProfiling())}_beginProfiling(){if(!this._isRunning){if(this._isRunning=!0,Xp&&y.log("[Profiling] Started profiling with profiler ID:",this._profilerId),Ye().setContext("profile",{profiler_id:this._profilerId}),this._startProfilerInstance(),!this._profiler)return Xp&&y.log("[Profiling] Failed to start JS Profiler; stopping."),void this._resetProfilerInfo();this._startPeriodicChunking()}}_endProfiling(){this._isRunning&&(this._isRunning=!1,this._chunkTimer&&(clearTimeout(this._chunkTimer),this._chunkTimer=void 0),this._clearAllRootSpanTimeouts(),this._collectCurrentChunk().catch(e=>{Xp&&y.error("[Profiling] Failed to collect current profile chunk on `stop()`:",e)}),"manual"===this._lifecycleMode&&Ye().setContext("profile",{}))}_setupTraceLifecycleListeners(e){e.on("spanStart",e=>{if(!this._sessionSampled)return void(Xp&&y.log("[Profiling] Span not profiled because of negative sampling decision for user session."));if(e!==Zt(e))return;if(!e.isRecording())return void(Xp&&y.log("[Profiling] Discarding profile because root span was not sampled."));const t=e.spanContext().spanId;if(!t||this._activeRootSpanIds.has(t))return;this._registerTraceRootSpan(t);const n=this._activeRootSpanIds.size;1===n&&(Xp&&y.log(`[Profiling] Root span ${t} started. Profiling active while there are active root spans (count=${n}).`),this._beginProfiling())}),e.on("spanEnd",e=>{if(!this._sessionSampled)return;const t=e.spanContext().spanId;if(!t||!this._activeRootSpanIds.has(t))return;this._activeRootSpanIds.delete(t);const n=this._activeRootSpanIds.size;Xp&&y.log(`[Profiling] Root span with ID ${t} ended. Will continue profiling for as long as there are active root spans (currently: ${n}).`),0===n&&(this._collectCurrentChunk().catch(e=>{Xp&&y.error("[Profiling] Failed to collect current profile chunk on last `spanEnd`:",e)}),this._endProfiling())})}_resetProfilerInfo(){this._isRunning=!1,Ye().setContext("profile",{})}_clearAllRootSpanTimeouts(){this._rootSpanTimeouts.forEach(e=>clearTimeout(e)),this._rootSpanTimeouts.clear()}_registerTraceRootSpan(e){this._activeRootSpanIds.add(e);const t=setTimeout(()=>this._onRootSpanTimeout(e),3e5);this._rootSpanTimeouts.set(e,t)}_startProfilerInstance(){if(!1===this._profiler?.stopped)return;const e=Nb();e?this._profiler=e:Xp&&y.log("[Profiling] Failed to start JS Profiler.")}_startPeriodicChunking(){this._isRunning&&(this._chunkTimer=setTimeout(()=>{if(this._collectCurrentChunk().catch(e=>{Xp&&y.error("[Profiling] Failed to collect current profile chunk during periodic chunking:",e)}),this._isRunning){if(this._startProfilerInstance(),!this._profiler)return void this._resetProfilerInfo();this._startPeriodicChunking()}},6e4))}_onRootSpanTimeout(e){this._rootSpanTimeouts.has(e)&&(this._rootSpanTimeouts.delete(e),this._activeRootSpanIds.has(e)&&(Xp&&y.log(`[Profiling] Reached 5-minute timeout for root span ${e}. You likely started a manual root span that never called \`.end()\`.`),this._activeRootSpanIds.delete(e),0===this._activeRootSpanIds.size&&this._endProfiling()))}async _collectCurrentChunk(){const e=this._profiler;if(this._profiler=void 0,e)try{const t=Rb(await e.stop(),this._client,this._profilerId),n=function(e){try{if(!e||"object"!=typeof e)return{reason:"chunk is not an object"};const t=e=>"string"==typeof e&&/^[a-f0-9]{32}$/.test(e);if(!t(e.profiler_id))return{reason:"missing or invalid profiler_id"};if(!t(e.chunk_id))return{reason:"missing or invalid chunk_id"};if(!e.client_sdk)return{reason:"missing client_sdk metadata"};const n=e.profile;return n?Array.isArray(n.frames)&&n.frames.length?Array.isArray(n.stacks)&&n.stacks.length?Array.isArray(n.samples)&&n.samples.length?{valid:!0}:{reason:"profile has no samples"}:{reason:"profile has no stacks"}:{reason:"profile has no frames"}:{reason:"missing profile data"}}catch(e){return{reason:`unknown validation error: ${e}`}}}(t);if("reason"in n)return void(Xp&&y.log("[Profiling] Discarding invalid profile chunk (this is probably a bug in the SDK):",n.reason));this._sendProfileChunk(t),Xp&&y.log("[Profiling] Collected browser profile chunk.")}catch(e){Xp&&y.log("[Profiling] Error while stopping JS Profiler for chunk:",e)}}_sendProfileChunk(e){const t=this._client,n=Pn(t.getSdkMetadata?.()),r=t.getDsn(),o=t.getOptions().tunnel,i=kn({event_id:ke(),sent_at:(new Date).toISOString(),...n&&{sdk:n},...!!o&&r&&{dsn:It(r)}},[[{type:"profile_chunk"},e]]);t.sendEnvelope(i).then(null,e=>{Xp&&y.error("Error while sending profile chunk envelope:",e)})}}const Ub=()=>({name:"BrowserProfiling",setup(e){const t=e.getOptions(),n=new qb;if(jb(t)||t.profileLifecycle||(t.profileLifecycle="manual"),jb(t)&&!t.profilesSampleRate)return void(Xp&&y.log("[Profiling] Profiling disabled, no profiling options found."));const r=en(),o=r&&Zt(r);if(jb(t)&&void 0!==t.profileSessionSampleRate&&Xp&&y.warn("[Profiling] Both legacy profiling (`profilesSampleRate`) and UI profiling settings are defined. `profileSessionSampleRate` has no effect when legacy profiling is enabled."),jb(t))o&&Lb(o)&&Bb(o)&&Hb(o),e.on("spanStart",e=>{e===Zt(e)&&Bb(e)&&Hb(e)}),e.on("beforeEnvelope",e=>{if(!zb.size)return;const t=function(e){const t=[];return Sn(e,(e,n)=>{if("transaction"===n)for(let n=1;n<e.length;n++){const r=e[n];r?.contexts?.profile?.profile_id&&t.push(e[n])}}),t}(e);if(!t.length)return;const n=[];for(const e of t){const t=e?.contexts,r=t?.profile?.profile_id,o=t?.profile?.start_timestamp;if("string"!=typeof r){Xp&&y.log("[Profiling] cannot find profile for a span without a profile context");continue}if(!r){Xp&&y.log("[Profiling] cannot find profile for a span without a profile context");continue}t?.profile&&delete t.profile;const i=Fb(r);if(!i){Xp&&y.log(`[Profiling] Could not retrieve profile for span: ${r}`);continue}const s=$b(r,o,i,e);s&&n.push(s)}!function(e,t){if(!t.length)return e;for(const n of t)e[1].push([{type:"profile"},n])}(e,n)});else{const r=t.profileLifecycle;if(e.on("startUIProfiler",()=>n.start()),e.on("stopUIProfiler",()=>n.stop()),"manual"===r)n.initialize(e);else if("trace"===r){if(!sn(t))return void(Xp&&y.warn("[Profiling] `profileLifecycle` is 'trace' but tracing is disabled. Set a `tracesSampleRate` or `tracesSampler` to enable span tracing."));n.initialize(e),o&&n.notifyRootSpanActive(o),Pd.setTimeout(()=>{const e=en(),t=e&&Zt(e);t&&n.notifyRootSpanActive(t)},0)}}},processEvent:e=>function(e){return e?.contexts?.profile&&e.contexts?(e.contexts.trace={...e.contexts?.trace??{},data:{...e.contexts?.trace?.data??{},"thread.id":yb,"thread.name":bb}},e.spans?.forEach(e=>{e.data={...e.data||{},"thread.id":yb,"thread.name":bb}}),e):e}(e)}),Wb=()=>({name:"LaunchDarkly",processEvent:(e,t,n)=>ts(e)});function Vb(){return{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:(e,t,n)=>{ns(e,t.value),rs(e,t.value)}}}const Kb=()=>({name:"OpenFeature",processEvent:(e,t,n)=>ts(e)});class Gb{after(e,t){ns(t.flagKey,t.value),rs(t.flagKey,t.value)}error(e,t,n){ns(e.flagKey,e.defaultValue),rs(e.flagKey,e.defaultValue)}}const Jb=({featureFlagClientClass:e})=>({name:"Unleash",setupOnce(){oe(e.prototype,"isEnabled",Yb)},processEvent:(e,t,n)=>ts(e)});function Yb(e){return function(...t){const n=t[0],r=e.apply(this,t);return"string"==typeof n&&"boolean"==typeof r?(ns(n,r),rs(n,r)):Xp&&y.error(`[Feature Flags] UnleashClient.isEnabled does not match expected signature. arg0: ${n} (${typeof n}), result: ${r} (${typeof r})`),r}}const Xb=({growthbookClass:e})=>is({growthbookClass:e}),Qb=({featureFlagClient:e})=>({name:"Statsig",setup(t){e.on("gate_evaluation",e=>{ns(e.gate.name,e.gate.value),rs(e.gate.name,e.gate.value)})},processEvent:(e,t,n)=>ts(e)});async function Zb(){const e=Ze();if(!e)return"no-client-active";if(!e.getDsn())return"no-dsn-configured";const t=e.getOptions().tunnel||"https://o447951.ingest.sentry.io/api/4509632503087104/envelope/?sentry_version=7&sentry_key=c1dfb07d783ad5325c245c1fd3725390&sentry_client=sentry.javascript.browser%2F1.33.7";try{await Kn(()=>fetch(t,{body:"{}",method:"POST",mode:"cors",credentials:"omit"}))}catch{return"sentry-unreachable"}}const ew=({worker:e})=>({name:"WebWorker",setupOnce:()=>{(Array.isArray(e)?e:[e]).forEach(e=>tw(e))},addWorker:e=>tw(e)});function tw(e){e.addEventListener("message",e=>{(function(e){if(!K(e)||!0!==e._sentryMessage)return!1;const t="_sentryDebugIds"in e,n="_sentryModuleMetadata"in e,r="_sentryWorkerError"in e;if(!t&&!n&&!r)return!1;if(t&&!K(e._sentryDebugIds)&&void 0!==e._sentryDebugIds)return!1;if(n&&!K(e._sentryModuleMetadata)&&void 0!==e._sentryModuleMetadata)return!1;if(r&&!K(e._sentryWorkerError))return!1;return!0})(e.data)&&(e.stopImmediatePropagation(),e.data._sentryDebugIds&&(Xp&&y.log("Sentry debugId web worker message received",e.data),Pd._sentryDebugIds={...e.data._sentryDebugIds,...Pd._sentryDebugIds}),e.data._sentryModuleMetadata&&(Xp&&y.log("Sentry module metadata web worker message received",e.data),Pd._sentryModuleMetadata={...e.data._sentryModuleMetadata,...Pd._sentryModuleMetadata}),e.data._sentryWorkerError&&(Xp&&y.log("Sentry worker rejection message received",e.data._sentryWorkerError),function(e){const t=Ze();if(!t)return;const n=t.getOptions().stackParser,r=t.getOptions().attachStacktrace,o=e.reason,i=V(o)?Mh(o):Zd(n,o,void 0,r,!0);i.level="error",e.filename&&(i.contexts={...i.contexts,worker:{filename:e.filename}});kr(i,{originalException:o,mechanism:{handled:!1,type:"auto.browser.web_worker.onunhandledrejection"}}),Xp&&y.log("Captured worker unhandled rejection",o)}(e.data._sentryWorkerError)))})}function nw({self:e}){e.postMessage({_sentryMessage:!0,_sentryDebugIds:e._sentryDebugIds??void 0,_sentryModuleMetadata:e._sentryModuleMetadata??void 0}),e.addEventListener("unhandledrejection",t=>{const n={reason:Th(t),filename:e.location?.href};e.postMessage({_sentryMessage:!0,_sentryWorkerError:n}),Xp&&y.log("[Sentry Worker] Forwarding unhandled rejection to parent",n)}),Xp&&y.log("[Sentry Worker] Registered worker with unhandled rejection handling")}function rw(){}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};n.r(r),n.d(r,{Decoder:()=>Ot,Encoder:()=>Pt,PacketType:()=>Lt,isPacketValid:()=>jt,protocol:()=>Rt});const o="undefined"!=typeof window&&("localhost"===window.location.hostname||"127.0.0.1"===window.location.hostname||"3001"===window.location.port||window.location.search.includes("debug=true"));let i=null;const s=()=>{if(!i)try{i=n(725).Sentry}catch(e){}return i},a=(...e)=>{},c=(...e)=>{},l=(...e)=>{if(o);else{const t=s();t&&t.captureMessage(e.join(" "),"warning")}},d=(...e)=>{const t=s();t&&(e[0]instanceof Error?t.captureException(e[0]):t.captureMessage(e.join(" "),"error"))},u='/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",\n "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",\n "Courier New", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-700: oklch(55.4% 0.135 66.442);\n --color-green-400: oklch(79.2% 0.209 151.711);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-emerald-50: oklch(97.9% 0.021 166.113);\n --color-emerald-200: oklch(90.5% 0.093 164.15);\n --color-emerald-500: oklch(69.6% 0.17 162.48);\n --color-emerald-600: oklch(59.6% 0.145 163.225);\n --color-emerald-700: oklch(50.8% 0.118 165.612);\n --color-sky-50: oklch(97.7% 0.013 236.62);\n --color-sky-200: oklch(90.1% 0.058 230.902);\n --color-sky-500: oklch(68.5% 0.169 237.323);\n --color-sky-700: oklch(50% 0.134 242.749);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-violet-50: oklch(96.9% 0.016 293.756);\n --color-violet-200: oklch(89.4% 0.057 293.283);\n --color-violet-500: oklch(60.6% 0.25 292.717);\n --color-violet-700: oklch(49.1% 0.27 292.581);\n --color-rose-50: oklch(96.9% 0.015 12.422);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-700: oklch(51.4% 0.222 16.935);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-600: oklch(44.6% 0.03 256.802);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-neutral-50: oklch(98.5% 0 0);\n --color-neutral-200: oklch(92.2% 0 0);\n --color-neutral-700: oklch(37.1% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --radius-2xl: 1rem;\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --blur-sm: 8px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::-moz-placeholder {\n opacity: 1;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::-moz-placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {\n -webkit-appearance: button;\n -moz-appearance: button;\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .collapse {\n visibility: collapse;\n }\n .invisible {\n visibility: hidden;\n }\n .visible {\n visibility: visible;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3\\/5 {\n top: calc(3/5 * 100%);\n }\n .top-full {\n top: 100%;\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-6 {\n right: calc(var(--spacing) * 6);\n }\n .bottom-6 {\n bottom: calc(var(--spacing) * 6);\n }\n .bottom-24 {\n bottom: calc(var(--spacing) * 24);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .z-\\[10000\\] {\n z-index: 10000;\n }\n .z-\\[10001\\] {\n z-index: 10001;\n }\n .z-\\[999998\\] {\n z-index: 999998;\n }\n .z-\\[999999\\] {\n z-index: 999999;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .mx-auto {\n margin-inline: auto;\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-4\\.5 {\n height: calc(var(--spacing) * 4.5);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-\\[95vh\\] {\n height: 95vh;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-auto {\n height: auto;\n }\n .h-full {\n height: 100%;\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .max-h-\\[95vh\\] {\n max-height: 95vh;\n }\n .max-h-\\[calc\\(80vh-8rem\\)\\] {\n max-height: calc(80vh - 8rem);\n }\n .max-h-\\[calc\\(100vh-8rem\\)\\] {\n max-height: calc(100vh - 8rem);\n }\n .max-h-full {\n max-height: 100%;\n }\n .min-h-\\[100px\\] {\n min-height: 100px;\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-auto {\n width: auto;\n }\n .w-full {\n width: 100%;\n }\n .w-xs {\n width: var(--container-xs);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-\\[80\\%\\] {\n max-width: 80%;\n }\n .max-w-\\[calc\\(100vw-3rem\\)\\] {\n max-width: calc(100vw - 3rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .origin-\\[70\\%_70\\%\\] {\n transform-origin: 70% 70%;\n }\n .-translate-y-2\\/3 {\n --tw-translate-y: calc(calc(2/3 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-row {\n flex-direction: row;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .-space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .divide-x {\n :where(& > :not(:last-child)) {\n --tw-divide-x-reverse: 0;\n border-inline-style: var(--tw-border-style);\n border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));\n border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n }\n }\n .divide-border {\n :where(& > :not(:last-child)) {\n border-color: var(--color-border);\n }\n }\n .self-end {\n align-self: flex-end;\n }\n .self-start {\n align-self: flex-start;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-t-md {\n border-top-left-radius: var(--radius-md);\n border-top-right-radius: var(--radius-md);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-accent\\/30 {\n border-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-border\\/50 {\n border-color: var(--color-border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 50%, transparent);\n }\n }\n .border-gray-100 {\n border-color: var(--color-gray-100);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-input {\n border-color: var(--color-input);\n }\n .border-primary {\n border-color: var(--color-primary);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .bg-accent {\n background-color: var(--color-accent);\n }\n .bg-accent\\/20 {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 20%, transparent);\n }\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-500 {\n background-color: var(--color-amber-500);\n }\n .bg-background {\n background-color: var(--color-background);\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-card {\n background-color: var(--color-card);\n }\n .bg-emerald-50 {\n background-color: var(--color-emerald-50);\n }\n .bg-emerald-500 {\n background-color: var(--color-emerald-500);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-400 {\n background-color: var(--color-gray-400);\n }\n .bg-green-400 {\n background-color: var(--color-green-400);\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-muted\\/20 {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 20%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n .bg-neutral-50 {\n background-color: var(--color-neutral-50);\n }\n .bg-popover {\n background-color: var(--color-popover);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-primary\\/10 {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-rose-50 {\n background-color: var(--color-rose-50);\n }\n .bg-sky-50 {\n background-color: var(--color-sky-50);\n }\n .bg-sky-500 {\n background-color: var(--color-sky-500);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-violet-50 {\n background-color: var(--color-violet-50);\n }\n .bg-violet-500 {\n background-color: var(--color-violet-500);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-linear-to-t {\n --tw-gradient-position: to top;\n @supports (background-image: linear-gradient(in lab, red, red)) {\n --tw-gradient-position: to top in oklab;\n }\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-transparent {\n --tw-gradient-from: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-primary {\n --tw-gradient-to: var(--color-primary);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n }\n .object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-5 {\n padding-top: calc(var(--spacing) * 5);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-10 {\n padding-bottom: calc(var(--spacing) * 10);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .text-\\[15px\\] {\n font-size: 15px;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .text-accent-foreground {\n color: var(--color-accent-foreground);\n }\n .text-amber-400 {\n color: var(--color-amber-400);\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-card-foreground {\n color: var(--color-card-foreground);\n }\n .text-emerald-600 {\n color: var(--color-emerald-600);\n }\n .text-emerald-700 {\n color: var(--color-emerald-700);\n }\n .text-foreground {\n color: var(--color-foreground);\n }\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n .text-gray-600 {\n color: var(--color-gray-600);\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-green-400 {\n color: var(--color-green-400);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-neutral-700 {\n color: var(--color-neutral-700);\n }\n .text-popover-foreground {\n color: var(--color-popover-foreground);\n }\n .text-primary {\n color: var(--color-primary);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-primary-foreground\\/80 {\n color: var(--color-primary-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary-foreground) 80%, transparent);\n }\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-rose-700 {\n color: var(--color-rose-700);\n }\n .text-sky-700 {\n color: var(--color-sky-700);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-violet-700 {\n color: var(--color-violet-700);\n }\n .text-white {\n color: var(--color-white);\n }\n .text-white\\/90 {\n color: color-mix(in srgb, #fff 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 90%, transparent);\n }\n }\n .text-yellow-700 {\n color: var(--color-yellow-700);\n }\n .underline {\n text-decoration-line: underline;\n }\n .opacity-25 {\n opacity: 25%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-75 {\n opacity: 75%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-amber-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(92.4% 0.12 95.746) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-amber-200) 60%, transparent);\n }\n }\n .ring-emerald-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(90.5% 0.093 164.15) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-emerald-200) 60%, transparent);\n }\n }\n .ring-gray-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(92.8% 0.006 264.531) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-gray-200) 60%, transparent);\n }\n }\n .ring-indigo-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(87% 0.065 274.039) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-indigo-200) 60%, transparent);\n }\n }\n .ring-neutral-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(92.2% 0 0) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-neutral-200) 60%, transparent);\n }\n }\n .ring-red-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(88.5% 0.062 18.334) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-red-200) 60%, transparent);\n }\n }\n .ring-rose-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(89.2% 0.058 10.001) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-rose-200) 60%, transparent);\n }\n }\n .ring-sky-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(90.1% 0.058 230.902) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-sky-200) 60%, transparent);\n }\n }\n .ring-violet-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(89.4% 0.057 293.283) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-violet-200) 60%, transparent);\n }\n }\n .ring-yellow-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(94.5% 0.129 101.54) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-yellow-200) 60%, transparent);\n }\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n .group-hover\\:translate-x-1 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\:text-primary {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-primary);\n }\n }\n }\n .placeholder\\:text-gray-400 {\n &::-moz-placeholder {\n color: var(--color-gray-400);\n }\n &::placeholder {\n color: var(--color-gray-400);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-\\[1\\.01\\] {\n &:hover {\n @media (hover: hover) {\n scale: 1.01;\n }\n }\n }\n .hover\\:border-blue-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-300);\n }\n }\n }\n .hover\\:border-primary\\/20 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n }\n }\n .hover\\:border-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-background {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-background);\n }\n }\n }\n .hover\\:bg-destructive\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-red-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--color-destructive);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-foreground);\n }\n }\n }\n .hover\\:no-underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: none;\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .hover\\:shadow-lg {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-xl {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-primary {\n &:focus {\n --tw-ring-color: var(--color-primary);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--color-ring);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-ring {\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n }\n }\n .focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .sm\\:text-sm {\n @media (width >= 40rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .\\[\\&_img\\]\\:size-12 {\n & img {\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_img\\]\\:shrink-0 {\n & img {\n flex-shrink: 0;\n }\n }\n .\\[\\&_img\\]\\:rounded-full {\n & img {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&_img\\]\\:object-cover {\n & img {\n -o-object-fit: cover;\n object-fit: cover;\n }\n }\n .\\[\\&_img\\]\\:ring-2 {\n & img {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .\\[\\&_img\\]\\:ring-background {\n & img {\n --tw-ring-color: var(--color-background);\n }\n }\n .\\[\\&\\[aria-selected\\=\\\'true\\\'\\]\\]\\:bg-primary {\n &[aria-selected=\'true\'] {\n background-color: var(--color-primary);\n }\n }\n .\\[\\&\\[aria-selected\\=\\\'true\\\'\\]\\]\\:text-primary-foreground {\n &[aria-selected=\'true\'] {\n color: var(--color-primary-foreground);\n }\n }\n .\\[\\&\\[aria-selected\\=\\\'true\\\'\\]\\]\\:shadow-sm {\n &[aria-selected=\'true\'] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n}\n:root {\n --radius: 0.625rem;\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n --sidebar-width: 16rem;\n --sidebar-mobile-width: 18rem;\n --scrollbar-track: transparent;\n --scrollbar-thumb: rgba(0, 0, 0, 0.3);\n --scrollbar-width: 6px;\n --scrollbar-radius: 6px;\n --chevron-down-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.556 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --chevron-down-icon-50: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.556 0 0 / 0.5)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --check-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.556 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check-icon lucide-check"><path d="M20 6 9 17l-5-5"/></svg>\');\n}\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.269 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.922 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.371 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --border: oklch(1 0 0 / 10%);\n --input: oklch(1 0 0 / 15%);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.488 0.243 264.376);\n --chart-2: oklch(0.696 0.17 162.48);\n --chart-3: oklch(0.769 0.188 70.08);\n --chart-4: oklch(0.627 0.265 303.9);\n --chart-5: oklch(0.645 0.246 16.439);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(1 0 0 / 10%);\n --sidebar-ring: oklch(0.439 0 0);\n --scrollbar-thumb: rgba(255, 255, 255, 0.3);\n --chevron-down-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.708 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --chevron-down-icon-50: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.708 0 0 / 0.5)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --check-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.708 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check-icon lucide-check"><path d="M20 6 9 17l-5-5"/></svg>\');\n color-scheme: dark;\n}\n@layer base {\n * {\n border-color: var(--color-border);\n outline-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n html {\n scroll-behavior: smooth;\n }\n body {\n overscroll-behavior: none;\n background-color: var(--color-background);\n color: var(--color-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);\n &::-webkit-scrollbar {\n width: var(--scrollbar-width);\n }\n &::-webkit-scrollbar-track {\n background: var(--scrollbar-track);\n }\n &::-webkit-scrollbar-thumb {\n background: var(--scrollbar-thumb);\n border-radius: var(--scrollbar-radius);\n }\n }\n}\n@layer components {\n .alert, .alert-destructive {\n position: relative;\n display: grid;\n width: 100%;\n grid-template-columns: 0 1fr;\n align-items: flex-start;\n row-gap: calc(var(--spacing) * 0.5);\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n &:has(>svg) {\n grid-template-columns: calc(var(--spacing) * 4) 1fr;\n }\n &:has(>svg) {\n -moz-column-gap: calc(var(--spacing) * 3);\n column-gap: calc(var(--spacing) * 3);\n }\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &>svg {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &>svg {\n color: currentcolor;\n }\n > h2, > h3, > h4, > h5, > h6, > strong, > [data-title] {\n grid-column-start: 2;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n min-height: calc(var(--spacing) * 4);\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n > section {\n grid-column-start: 2;\n display: grid;\n justify-items: start;\n gap: calc(var(--spacing) * 1);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n & p {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n ul {\n list-style-position: inside;\n list-style-type: disc;\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n }\n .alert {\n background-color: var(--color-card);\n color: var(--color-card-foreground);\n }\n .alert-destructive {\n background-color: var(--color-card);\n color: var(--color-destructive);\n &>svg {\n color: currentcolor;\n }\n > section {\n color: var(--color-destructive);\n }\n }\n}\n@layer components {\n .badge, .badge-primary, .badge-secondary, .badge-destructive, .badge-outline {\n display: inline-flex;\n width: -moz-fit-content;\n width: fit-content;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 1);\n overflow: hidden;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 0.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &>svg {\n pointer-events: none;\n }\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .badge, .badge-primary {\n border-color: transparent;\n background-color: var(--color-primary);\n color: var(--color-primary-foreground);\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n }\n .badge-secondary {\n border-color: transparent;\n background-color: var(--color-secondary);\n color: var(--color-secondary-foreground);\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .badge-destructive {\n border-color: transparent;\n background-color: var(--color-destructive);\n color: var(--color-white);\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);\n }\n }\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .badge-outline {\n color: var(--color-foreground);\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n}\n@layer components {\n .btn, .btn-primary, .btn-secondary, .btn-outline, .btn-ghost, .btn-link, .btn-destructive, .btn-sm, .btn-sm-primary, .btn-sm-secondary, .btn-sm-outline, .btn-sm-ghost, .btn-sm-link, .btn-sm-destructive, .btn-lg, .btn-lg-primary, .btn-lg-secondary, .btn-lg-outline, .btn-lg-ghost, .btn-lg-link, .btn-lg-destructive, .btn-icon, .btn-icon-primary, .btn-icon-secondary, .btn-icon-outline, .btn-icon-ghost, .btn-icon-link, .btn-icon-destructive, .btn-sm-icon, .btn-sm-icon-primary, .btn-sm-icon-secondary, .btn-sm-icon-outline, .btn-sm-icon-ghost, .btn-sm-icon-link, .btn-sm-icon-destructive, .btn-lg-icon, .btn-lg-icon-primary, .btn-lg-icon-secondary, .btn-lg-icon-outline, .btn-lg-icon-ghost, .btn-lg-icon-link, .btn-lg-icon-destructive {\n display: inline-flex;\n flex-shrink: 0;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .btn, .btn-primary, .btn-secondary, .btn-outline, .btn-ghost, .btn-link, .btn-destructive {\n height: calc(var(--spacing) * 9);\n gap: calc(var(--spacing) * 2);\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 2);\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .btn-icon, .btn-icon-primary, .btn-icon-secondary, .btn-icon-outline, .btn-icon-ghost, .btn-icon-link, .btn-icon-destructive {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .btn-sm, .btn-sm-primary, .btn-sm-secondary, .btn-sm-outline, .btn-sm-ghost, .btn-sm-link, .btn-sm-destructive {\n height: calc(var(--spacing) * 8);\n gap: calc(var(--spacing) * 1.5);\n padding-inline: calc(var(--spacing) * 3);\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .btn-sm-icon, .btn-sm-icon-primary, .btn-sm-icon-secondary, .btn-sm-icon-outline, .btn-sm-icon-ghost, .btn-sm-icon-link, .btn-sm-icon-destructive {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .btn-lg, .btn-lg-primary, .btn-lg-secondary, .btn-lg-outline, .btn-lg-ghost, .btn-lg-link, .btn-lg-destructive {\n height: calc(var(--spacing) * 10);\n gap: calc(var(--spacing) * 2);\n padding-inline: calc(var(--spacing) * 6);\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .btn-lg-icon, .btn-lg-icon-primary, .btn-lg-icon-secondary, .btn-lg-icon-outline, .btn-lg-icon-ghost, .btn-lg-icon-link, .btn-lg-icon-destructive {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .btn, .btn-primary, .btn-sm, .btn-sm-primary, .btn-lg, .btn-lg-primary, .btn-icon, .btn-icon-primary, .btn-sm-icon, .btn-sm-icon-primary, .btn-lg-icon, .btn-lg-icon-primary {\n background-color: var(--color-primary);\n color: var(--color-primary-foreground);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n &[aria-pressed=\'true\'] {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n .btn-secondary, .btn-sm-secondary, .btn-lg-secondary, .btn-icon-secondary, .btn-sm-icon-secondary, .btn-lg-icon-secondary {\n background-color: var(--color-secondary);\n color: var(--color-secondary-foreground);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n .btn-outline, .btn-sm-outline, .btn-lg-outline, .btn-icon-outline, .btn-sm-icon-outline, .btn-lg-icon-outline {\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-background);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:is(.dark *) {\n border-color: var(--color-input);\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n &:is(.dark *) {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .btn-ghost, .btn-sm-ghost, .btn-lg-ghost, .btn-icon-ghost, .btn-sm-icon-ghost, .btn-lg-icon-ghost {\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n &:is(.dark *) {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .btn-link, .btn-sm-link, .btn-lg-link, .btn-icon-link, .btn-sm-icon-link, .btn-lg-icon-link {\n color: var(--color-primary);\n text-underline-offset: 4px;\n &:hover, &[aria-pressed=\'true\'] {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n }\n .btn-destructive, .btn-sm-destructive, .btn-lg-destructive, .btn-icon-destructive, .btn-sm-icon-destructive, .btn-lg-icon-destructive {\n background-color: var(--color-destructive);\n color: var(--color-white);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);\n }\n }\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n &:is(.dark *) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);\n }\n }\n }\n }\n}\n@layer components {\n .button-group {\n isolation: isolate;\n display: inline-flex;\n width: -moz-fit-content;\n width: fit-content;\n align-items: stretch;\n > *:focus-visible, > :is(.dropdown-menu, .popover, .select) > button:focus-visible {\n position: relative;\n z-index: 10;\n }\n > hr[role=\'separator\'] {\n margin: calc(var(--spacing) * 0);\n height: auto;\n width: calc(var(--spacing) * 0);\n flex-shrink: 0;\n align-self: stretch;\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n }\n &:not([data-orientation=\'vertical\']) {\n > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n &[data-orientation=\'vertical\'] {\n flex-direction: column;\n > hr[role=\'separator\'] {\n height: 1px;\n width: auto;\n }\n > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n }\n}\n@layer components {\n .card {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 6);\n border-radius: var(--radius-xl);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-card);\n padding-block: calc(var(--spacing) * 6);\n color: var(--color-card-foreground);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n > header {\n container-type: inline-size;\n container-name: card-header;\n display: grid;\n grid-auto-rows: min-content;\n grid-template-rows: auto auto;\n align-items: flex-start;\n gap: calc(var(--spacing) * 1.5);\n padding-inline: calc(var(--spacing) * 6);\n &:has(*[data-slot="card-action"]) {\n grid-template-columns: 1fr auto;\n }\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n h2 {\n --tw-leading: 1;\n line-height: 1;\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n p {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n }\n }\n > section {\n padding-inline: calc(var(--spacing) * 6);\n }\n > footer {\n display: flex;\n align-items: center;\n padding-inline: calc(var(--spacing) * 6);\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'checkbox\']:not([role=\'switch\']), .input[type=\'checkbox\']:not([role=\'switch\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: 4px;\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:checked {\n border-color: var(--color-primary);\n }\n &:checked {\n background-color: var(--color-primary);\n }\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &:checked {\n background-color: var(--color-primary);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &:checked:after {\n display: block;\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n background-color: var(--color-primary-foreground);\n --tw-content: \'\';\n content: var(--tw-content);\n -webkit-mask-image: var(--check-icon);\n mask-image: var(--check-icon);\n -webkit-mask-size: 0.875rem;\n mask-size: 0.875rem;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n }\n }\n}\n@layer components {\n details {\n &::details-content {\n block-size: 0;\n display: block;\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n }\n &[open]::details-content {\n block-size: auto;\n block-size: calc-size(auto, size);\n opacity: 100%;\n }\n summary {\n display: inline-flex;\n cursor: pointer;\n align-items: center;\n }\n }\n details > summary::-webkit-details-marker {\n display: none;\n }\n}\n@layer components {\n .command-dialog {\n inset-block: calc(var(--spacing) * 0);\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n &:is([open],:popover-open) {\n opacity: 100%;\n &::backdrop {\n opacity: 100%;\n }\n > * {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n @starting-style {\n opacity: 0%;\n &::backdrop {\n opacity: 0%;\n }\n > * {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n &::backdrop {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n }\n > * {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: 50;\n display: flex;\n max-height: min(640px, calc(100% - 2rem));\n width: 100%;\n max-width: calc(100% - 2rem);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n flex-direction: column;\n overflow: hidden;\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-background);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n > button, > form[method=\'dialog\'] {\n position: absolute;\n top: calc(var(--spacing) * 4);\n right: calc(var(--spacing) * 4);\n }\n > button, > form[method=\'dialog\'] > button {\n border-radius: var(--radius-xs);\n opacity: 70%;\n --tw-ring-offset-color: var(--color-background);\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus {\n --tw-ring-color: var(--color-ring);\n }\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n &:disabled {\n pointer-events: none;\n }\n &[data-state="open"] {\n background-color: var(--color-accent);\n }\n &[data-state="open"] {\n color: var(--color-muted-foreground);\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n }\n .command {\n > header input {\n height: calc(var(--spacing) * 12);\n }\n [role=\'menu\'] {\n padding-inline: calc(var(--spacing) * 2);\n [role=\'menuitem\'] {\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 3);\n & svg {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n }\n [role=\'heading\'] {\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-muted-foreground);\n }\n }\n }\n }\n .command {\n > header {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n padding-inline: calc(var(--spacing) * 3);\n svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n opacity: 50%;\n }\n input {\n display: flex;\n height: calc(var(--spacing) * 10);\n width: 100%;\n border-radius: var(--radius-md);\n background-color: transparent;\n padding-block: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n }\n }\n [role=\'menu\'] {\n max-height: 300px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: calc(var(--spacing) * 1);\n [role=\'menuitem\'] {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-sm);\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &[aria-hidden="true"] {\n display: none;\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n & svg:not([class*=\'text-\']) {\n color: var(--color-muted-foreground);\n }\n &.active {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n }\n }\n [role=\'heading\'] {\n display: flex;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-muted-foreground);\n }\n [role=\'group\']:not(:has([role=\'menuitem\']:not([aria-hidden=\'true\']))) {\n display: none;\n }\n [role=\'separator\'] {\n margin-inline: calc(var(--spacing) * -1);\n margin-block: calc(var(--spacing) * 1);\n border-color: var(--color-border);\n }\n &:not(:has([role=\'menuitem\']:not([aria-hidden=\'true\'])))::before {\n margin: calc(var(--spacing) * -1);\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 6);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &[data-empty]:not(:has([role=\'menuitem\']:not([aria-hidden=\'true\'])))::before {\n --tw-content: attr(data-empty);\n content: var(--tw-content);\n }\n &:not([data-empty]):not(:has([role=\'menuitem\']:not([aria-hidden=\'true\'])))::before {\n --tw-content: \'No results found\';\n content: var(--tw-content);\n }\n }\n &:not([data-command-initialized]) [role=\'menuitem\'] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n &:has(> header input:not(:-moz-placeholder)) [role=\'separator\'] {\n display: none;\n }\n &:has(> header input:not(:placeholder-shown)) [role=\'separator\'] {\n display: none;\n }\n }\n}\n@layer components {\n .dialog {\n inset-block: calc(var(--spacing) * 0);\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n &:is([open],:popover-open) {\n opacity: 100%;\n &::backdrop {\n opacity: 100%;\n }\n > * {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n @starting-style {\n opacity: 0%;\n &::backdrop {\n opacity: 0%;\n }\n > * {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n &::backdrop {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n }\n > * {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: 50;\n display: flex;\n max-height: calc(100% - 2rem);\n width: 100%;\n max-width: calc(100% - 2rem);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n flex-direction: column;\n gap: calc(var(--spacing) * 4);\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-background);\n padding: calc(var(--spacing) * 6);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n > header {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n text-align: center;\n @media (width >= 40rem) {\n text-align: left;\n }\n > h2 {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n --tw-leading: 1;\n line-height: 1;\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n > p {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n }\n }\n > section {\n margin-inline: calc(var(--spacing) * -6);\n flex: 1;\n padding-inline: calc(var(--spacing) * 6);\n }\n > footer {\n display: flex;\n flex-direction: column-reverse;\n gap: calc(var(--spacing) * 2);\n @media (width >= 40rem) {\n flex-direction: row;\n }\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n > button, > form[method=\'dialog\'] {\n position: absolute;\n top: calc(var(--spacing) * 4);\n right: calc(var(--spacing) * 4);\n }\n > button, > form[method=\'dialog\'] > button {\n border-radius: var(--radius-xs);\n opacity: 70%;\n --tw-ring-offset-color: var(--color-background);\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus {\n --tw-ring-color: var(--color-ring);\n }\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n &:disabled {\n pointer-events: none;\n }\n &[data-state="open"] {\n background-color: var(--color-accent);\n }\n &[data-state="open"] {\n color: var(--color-muted-foreground);\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n }\n }\n}\n@layer components {\n .dropdown-menu {\n position: relative;\n display: inline-flex;\n [data-popover] {\n padding: calc(var(--spacing) * 1);\n min-width: anchor-size(width);\n [role=\'menuitem\'], [role=\'menuitemcheckbox\'], [role=\'menuitemradio\'] {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-sm);\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &[aria-hidden="true"] {\n display: none;\n }\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n & svg {\n flex-shrink: 0;\n }\n & svg {\n color: var(--color-muted-foreground);\n }\n &:not([aria-disabled=\'true\']) {\n &:focus-visible {\n background-color: var(--color-accent);\n }\n &:focus-visible {\n color: var(--color-accent-foreground);\n }\n }\n &.active {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n }\n }\n [role=\'menu\'] [role=\'heading\'] {\n display: flex;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n [role=\'separator\'] {\n margin-inline: calc(var(--spacing) * -1);\n margin-block: calc(var(--spacing) * 1);\n border-color: var(--color-border);\n }\n }\n &:not([data-dropdown-menu-initialized]) [data-popover] {\n [role=\'menuitem\'], [role=\'menuitemcheckbox\'], [role=\'menuitemradio\'] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n }\n}\n@layer components {\n .fieldset {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 6);\n > legend {\n margin-bottom: calc(var(--spacing) * 3);\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .field {\n display: flex;\n width: 100%;\n flex-direction: column;\n gap: calc(var(--spacing) * 3);\n &[data-invalid="true"] {\n color: var(--color-destructive);\n }\n &>* {\n width: 100%;\n }\n &>.sr-only {\n width: auto;\n }\n h2, h3 {\n display: flex;\n width: -moz-fit-content;\n width: fit-content;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n [role="alert"] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n color: var(--color-destructive);\n ul {\n margin-left: calc(var(--spacing) * 4);\n display: flex;\n list-style-type: disc;\n flex-direction: column;\n gap: calc(var(--spacing) * 1);\n }\n }\n section {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: calc(var(--spacing) * 1.5);\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n &[data-orientation=\'horizontal\'] {\n flex-direction: row;\n align-items: center;\n &:has(>section) {\n align-items: flex-start;\n }\n & p {\n text-wrap: balance;\n }\n &:has(>section) {\n &>[type=checkbox],[type=radio] {\n margin-top: 1px;\n }\n }\n &>label {\n flex: auto;\n }\n }\n }\n .fieldset legend + p, .field > p, .field section > p {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n color: var(--color-muted-foreground);\n &>a {\n text-decoration-line: underline;\n }\n &>a {\n text-underline-offset: 4px;\n }\n &>a:hover {\n color: var(--color-primary);\n }\n }\n .fieldset legend + p {\n margin-top: calc(var(--spacing) * -1.5);\n }\n .field > p {\n &:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n &:nth-last-child(2) {\n margin-top: calc(var(--spacing) * -1);\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'text\']:not(:is(.select [data-popover] > header input[role=\'combobox\'], .command > header input, .dialog > * > header input)), :is(.form, .field) input[type=\'email\'], :is(.form, .field) input[type=\'password\'], :is(.form, .field) input[type=\'number\'], :is(.form, .field) input[type=\'file\'], :is(.form, .field) input[type=\'tel\'], :is(.form, .field) input[type=\'url\'], :is(.form, .field) input[type=\'search\']:not(:is(.select [data-popover] > header input[role=\'combobox\'], .command > header input, .dialog > * > header input)), :is(.form, .field) input[type=\'date\'], :is(.form, .field) input[type=\'datetime-local\'], :is(.form, .field) input[type=\'month\'], :is(.form, .field) input[type=\'week\'], :is(.form, .field) input[type=\'time\'], .input[type=\'text\'], .input[type=\'email\'], .input[type=\'password\'], .input[type=\'number\'], .input[type=\'file\'], .input[type=\'tel\'], .input[type=\'url\'], .input[type=\'search\'], .input[type=\'date\'], .input[type=\'datetime-local\'], .input[type=\'month\'], .input[type=\'week\'], .input[type=\'time\'] {\n display: flex;\n height: calc(var(--spacing) * 9);\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n & *::-moz-selection {\n background-color: var(--color-primary);\n }\n & *::selection {\n background-color: var(--color-primary);\n }\n &::-moz-selection {\n background-color: var(--color-primary);\n }\n &::selection {\n background-color: var(--color-primary);\n }\n & *::-moz-selection {\n color: var(--color-primary-foreground);\n }\n & *::selection {\n color: var(--color-primary-foreground);\n }\n &::-moz-selection {\n color: var(--color-primary-foreground);\n }\n &::selection {\n color: var(--color-primary-foreground);\n }\n &::file-selector-button {\n display: inline-flex;\n }\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n &::file-selector-button {\n background-color: transparent;\n }\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n &::file-selector-button {\n color: var(--color-foreground);\n }\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n}\n@layer components {\n .kbd {\n pointer-events: none;\n display: inline-flex;\n height: calc(var(--spacing) * 5);\n width: -moz-fit-content;\n width: fit-content;\n min-width: calc(var(--spacing) * 5);\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 1);\n border-radius: var(--radius-sm);\n background-color: var(--color-muted);\n padding-inline: calc(var(--spacing) * 1);\n font-family: var(--font-sans);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-muted-foreground);\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n}\n@layer components {\n :is(.form, .field) label, .label {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-leading: 1;\n line-height: 1;\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:is(:where(.peer):disabled ~ *) {\n pointer-events: none;\n }\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n &:has(>*:disabled), &:has(+*:disabled) {\n pointer-events: none;\n opacity: 50%;\n }\n }\n}\n@layer components {\n [data-popover] {\n visibility: visible;\n position: absolute;\n z-index: 50;\n width: -moz-max-content;\n width: max-content;\n min-width: 100%;\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n overflow-x: hidden;\n overflow-y: auto;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-popover);\n color: var(--color-popover-foreground);\n opacity: 100%;\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &[aria-hidden=\'true\'] {\n visibility: hidden;\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n opacity: 0%;\n &:not([data-side]), &[data-side=\'bottom\'] {\n --tw-translate-y: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &[data-side=\'top\'] {\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &[data-side=\'left\'] {\n --tw-translate-x: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &[data-side=\'right\'] {\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n &:not([data-side]), &[data-side=\'bottom\'] {\n top: 100%;\n margin-top: calc(var(--spacing) * 1);\n }\n &[data-side=\'top\'] {\n bottom: 100%;\n margin-bottom: calc(var(--spacing) * 1);\n }\n &[data-side=\'left\'] {\n right: 100%;\n margin-right: calc(var(--spacing) * 1);\n }\n &[data-side=\'right\'] {\n left: 100%;\n margin-left: calc(var(--spacing) * 1);\n }\n &:not([data-side]), &[data-side=\'bottom\'], &[data-side=\'top\'] {\n &:not([data-align]), &[data-align=\'start\'] {\n left: calc(var(--spacing) * 0);\n }\n &[data-align=\'end\'] {\n right: calc(var(--spacing) * 0);\n }\n &[data-align=\'center\'] {\n left: calc(1/2 * 100%);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n &[data-side=\'left\'], &[data-side=\'right\'] {\n &:not([data-align]), &[data-align=\'start\'] {\n top: calc(var(--spacing) * 0);\n }\n &[data-align=\'end\'] {\n bottom: calc(var(--spacing) * 0);\n }\n &[data-align=\'center\'] {\n top: calc(1/2 * 100%);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .popover {\n position: relative;\n display: inline-flex;\n [data-popover] {\n padding: calc(var(--spacing) * 4);\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'radio\'], .input[type=\'radio\'] {\n position: relative;\n aspect-ratio: 1 / 1;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n color: var(--color-primary);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &:checked:before {\n position: absolute;\n top: calc(1/2 * 100%);\n left: calc(1/2 * 100%);\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n border-radius: calc(infinity * 1px);\n background-color: var(--color-primary);\n --tw-content: \'\';\n content: var(--tw-content);\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'range\'], .input[type=\'range\'] {\n display: flex;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n align-items: center;\n padding: calc(var(--spacing) * 0);\n --tw-outline-style: none;\n outline-style: none;\n --slider-value: 20%;\n &:hover, &:focus-visible {\n &::-webkit-slider-thumb {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &::-moz-range-thumb {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &::-ms-thumb {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n &::-webkit-slider-thumb {\n margin-top: calc(var(--spacing) * -1.25);\n display: block;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -webkit-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-primary);\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &::-webkit-slider-runnable-track {\n height: calc(var(--spacing) * 1.5);\n width: 100%;\n -webkit-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value));\n }\n &::-moz-range-thumb {\n margin-top: calc(var(--spacing) * -1.25);\n display: block;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -moz-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-primary);\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &::-moz-range-track {\n height: calc(var(--spacing) * 1.5);\n width: 100%;\n -moz-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value));\n }\n &::-ms-thumb {\n margin-top: calc(var(--spacing) * -1.25);\n display: block;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-primary);\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &::-ms-track {\n height: calc(var(--spacing) * 1.5);\n width: 100%;\n appearance: none;\n border-radius: calc(infinity * 1px);\n }\n &::-ms-fill-lower {\n border-radius: calc(infinity * 1px);\n background-color: var(--color-primary);\n }\n &::-ms-fill-upper {\n border-radius: calc(infinity * 1px);\n background-color: var(--color-muted);\n }\n }\n}\n@layer components {\n :is(.form, .field) select, select.select {\n display: flex;\n height: calc(var(--spacing) * 9);\n width: -moz-fit-content;\n width: fit-content;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 2);\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n background-color: transparent;\n padding-block: calc(var(--spacing) * 2);\n padding-right: calc(var(--spacing) * 9);\n padding-left: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n white-space: nowrap;\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 50%, transparent);\n }\n }\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n background-image: var(--chevron-down-icon-50);\n background-size: 1rem;\n background-position: center right 0.75rem;\n background-repeat: no-repeat;\n option, optgroup {\n background-color: var(--color-popover);\n color: var(--color-popover-foreground);\n }\n }\n *:not(select).select {\n position: relative;\n display: inline-flex;\n [data-popover] {\n padding: calc(var(--spacing) * 1);\n [role=\'option\'] {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-sm);\n padding-block: calc(var(--spacing) * 1.5);\n padding-right: calc(var(--spacing) * 7.5);\n padding-left: calc(var(--spacing) * 2);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &[aria-hidden="true"] {\n display: none;\n }\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n & svg {\n flex-shrink: 0;\n }\n & svg {\n color: var(--color-muted-foreground);\n }\n &[aria-selected=\'true\'] {\n background-image: var(--check-icon);\n background-size: 0.875rem;\n background-position: center right 0.5rem;\n background-repeat: no-repeat;\n }\n &.active, &:focus-visible {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n }\n }\n [role=\'listbox\'] [role=\'heading\'] {\n display: flex;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: var(--color-muted-foreground);\n }\n [role=\'listbox\'] [role=\'group\']:not(:has([role=\'option\']:not([aria-hidden=\'true\']))) {\n display: none;\n }\n [role=\'separator\'] {\n margin-inline: calc(var(--spacing) * -1);\n margin-block: calc(var(--spacing) * 1);\n border-color: var(--color-border);\n }\n > header {\n margin-inline: calc(var(--spacing) * -1);\n margin-top: calc(var(--spacing) * -1);\n margin-bottom: calc(var(--spacing) * 1);\n display: flex;\n height: calc(var(--spacing) * 9);\n align-items: center;\n gap: calc(var(--spacing) * 2);\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n padding-inline: calc(var(--spacing) * 3);\n svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n opacity: 50%;\n }\n input[role=\'combobox\'] {\n display: flex;\n height: calc(var(--spacing) * 10);\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n flex: 1;\n border-radius: var(--radius-md);\n background-color: transparent;\n padding-block: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n }\n }\n [role=\'listbox\']:not(:has([data-value]:not([aria-hidden=\'true\'])))::before {\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: calc(var(--spacing) * 6);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n [role=\'listbox\'][data-empty]:not(:has([data-value]:not([aria-hidden=\'true\'])))::before {\n --tw-content: attr(data-empty);\n content: var(--tw-content);\n }\n [role=\'listbox\']:not([data-empty]):not(:has([data-value]:not([aria-hidden=\'true\'])))::before {\n --tw-content: \'No results found\';\n content: var(--tw-content);\n }\n }\n [data-popover]:has(> header input:not(:-moz-placeholder)) [role=\'separator\'] {\n display: none;\n }\n [data-popover]:has(> header input:not(:placeholder-shown)) [role=\'separator\'] {\n display: none;\n }\n &:not([data-select-initialized]) [data-popover] [role=\'option\'] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n}\n@layer components {\n .sidebar {\n &:not([data-sidebar-initialized]) {\n @media (width < 48rem) {\n display: none;\n }\n }\n &:not([aria-hidden]), &[aria-hidden=false] {\n @media (width < 48rem) {\n position: fixed;\n }\n @media (width < 48rem) {\n inset: calc(var(--spacing) * 0);\n }\n @media (width < 48rem) {\n z-index: 40;\n }\n @media (width < 48rem) {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n }\n nav {\n position: fixed;\n inset-block: calc(var(--spacing) * 0);\n z-index: 50;\n display: flex;\n width: var(--sidebar-mobile-width);\n flex-direction: column;\n background-color: var(--color-sidebar);\n color: var(--color-sidebar-foreground);\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n @media (width >= 48rem) {\n width: var(--sidebar-width);\n }\n }\n & + * {\n transition-property: margin;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n &:not([data-side]), &[data-side=left] {\n nav {\n left: calc(var(--spacing) * 0);\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n & + * {\n position: relative;\n @media (width >= 48rem) {\n margin-left: var(--sidebar-width);\n }\n }\n &[aria-hidden=true] {\n nav {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n & + * {\n @media (width >= 48rem) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n }\n &[data-side=right] {\n nav {\n right: calc(var(--spacing) * 0);\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n & + * {\n position: relative;\n @media (width >= 48rem) {\n margin-right: var(--sidebar-width);\n }\n }\n &[aria-hidden=true] {\n nav {\n --tw-translate-x: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n & + * {\n @media (width >= 48rem) {\n margin-right: calc(var(--spacing) * 0);\n }\n }\n }\n }\n nav {\n > header, > footer {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n padding: calc(var(--spacing) * 2);\n }\n [role=separator] {\n margin-inline: calc(var(--spacing) * 2);\n width: auto;\n border-color: var(--color-sidebar-border);\n }\n > section {\n display: flex;\n min-height: calc(var(--spacing) * 0);\n flex: 1;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n overflow-y: auto;\n > [role=group] {\n position: relative;\n display: flex;\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n flex-direction: column;\n padding: calc(var(--spacing) * 2);\n }\n h3 {\n display: flex;\n height: calc(var(--spacing) * 8);\n flex-shrink: 0;\n align-items: center;\n border-radius: var(--radius-md);\n padding-inline: calc(var(--spacing) * 2);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-sidebar-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-sidebar-foreground) 70%, transparent);\n }\n --tw-ring-color: var(--color-sidebar-ring);\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n --tw-ease: linear;\n transition-timing-function: linear;\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &>svg {\n flex-shrink: 0;\n }\n }\n ul {\n display: flex;\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n flex-direction: column;\n gap: calc(var(--spacing) * 1);\n li {\n position: relative;\n > a, > details > summary {\n display: flex;\n width: 100%;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n border-radius: var(--radius-md);\n padding: calc(var(--spacing) * 2);\n text-align: left;\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-ring-color: var(--color-sidebar-ring);\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-sidebar-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-sidebar-accent-foreground);\n }\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:active {\n background-color: var(--color-sidebar-accent);\n }\n &:active {\n color: var(--color-sidebar-accent-foreground);\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &>svg {\n flex-shrink: 0;\n }\n &[aria-current=page] {\n background-color: var(--color-sidebar-accent);\n }\n &[aria-current=page] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n &[aria-current=page] {\n color: var(--color-sidebar-accent-foreground);\n }\n &:not([data-variant]), &[data-variant=default] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-sidebar-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-sidebar-accent-foreground);\n }\n }\n }\n &[data-variant=outline] {\n background-color: var(--color-background);\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-sidebar-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-sidebar-accent-foreground);\n }\n }\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n &:not([data-size]), &[data-size=default] {\n height: calc(var(--spacing) * 8);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &[data-size=sm] {\n height: calc(var(--spacing) * 7);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n &[data-size=lg] {\n height: calc(var(--spacing) * 12);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n &:is(:where(.group)[data-collapsible="icon"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n }\n > details {\n &:not([open]) {\n > summary {\n &::after {\n rotate: calc(90deg * -1);\n }\n }\n }\n > summary {\n &::after {\n margin-left: auto;\n display: block;\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n background-color: var(--color-primary);\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-ease: linear;\n transition-timing-function: linear;\n --tw-content: \'\';\n content: var(--tw-content);\n -webkit-mask-image: var(--chevron-down-icon);\n mask-image: var(--chevron-down-icon);\n -webkit-mask-size: 1rem;\n mask-size: 1rem;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n }\n }\n &::details-content {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n }\n }\n ul {\n display: flex;\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n flex-direction: column;\n gap: calc(var(--spacing) * 1);\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n border-color: var(--color-sidebar-border);\n padding-inline: calc(var(--spacing) * 2.5);\n padding-block: calc(var(--spacing) * 0.5);\n }\n }\n }\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'checkbox\'][role=\'switch\'], .input[type=\'checkbox\'][role=\'switch\'] {\n display: inline-flex;\n height: 1.15rem;\n width: calc(var(--spacing) * 8);\n flex-shrink: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n align-items: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: transparent;\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n background-color: var(--color-input);\n &:checked {\n background-color: var(--color-primary);\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 80%, transparent);\n }\n }\n &:is(.dark *) {\n &:checked {\n background-color: var(--color-primary);\n }\n }\n &::before {\n content: var(--tw-content);\n pointer-events: none;\n }\n &::before {\n content: var(--tw-content);\n display: block;\n }\n &::before {\n content: var(--tw-content);\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &::before {\n content: var(--tw-content);\n border-radius: calc(infinity * 1px);\n }\n &::before {\n content: var(--tw-content);\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &::before {\n content: var(--tw-content);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n &::before {\n --tw-content: \'\';\n content: var(--tw-content);\n }\n &::before {\n content: var(--tw-content);\n background-color: var(--color-background);\n }\n &:is(.dark *) {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-foreground);\n }\n }\n &:checked {\n &::before {\n content: var(--tw-content);\n margin-inline-start: calc(var(--spacing) * 3.5);\n }\n }\n &:is(.dark *) {\n &:checked {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-primary-foreground);\n }\n }\n }\n }\n}\n@layer components {\n .table {\n width: 100%;\n caption-side: bottom;\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n thead {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n tbody {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n tfoot {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n }\n th {\n height: calc(var(--spacing) * 10);\n padding-inline: calc(var(--spacing) * 2);\n text-align: left;\n vertical-align: middle;\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n color: var(--color-foreground);\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n td {\n padding: calc(var(--spacing) * 2);\n vertical-align: middle;\n white-space: nowrap;\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n caption {\n margin-top: calc(var(--spacing) * 4);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n }\n }\n}\n@layer components {\n .tabs {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n [role=\'tablist\'] {\n display: inline-flex;\n height: calc(var(--spacing) * 9);\n width: -moz-fit-content;\n width: fit-content;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-lg);\n background-color: var(--color-muted);\n padding: 3px;\n color: var(--color-muted-foreground);\n [role=\'tab\'] {\n display: inline-flex;\n height: calc(100% - 1px);\n flex: 1;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 1.5);\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: transparent;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n color: var(--color-foreground);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n &:focus-visible {\n outline-color: var(--color-ring);\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &:is(.dark *) {\n color: var(--color-muted-foreground);\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &[aria-selected=\'true\'] {\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:is(.dark *) {\n border-color: var(--color-input);\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n color: var(--color-foreground);\n }\n }\n }\n }\n [role=\'tabpanel\'] {\n flex: 1;\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n}\n@layer components {\n :is(.form, .field) textarea, .textarea {\n display: flex;\n field-sizing: content;\n min-height: calc(var(--spacing) * 16);\n width: 100%;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 2);\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n}\n@layer components {\n .toaster {\n pointer-events: none;\n position: fixed;\n bottom: calc(var(--spacing) * 0);\n z-index: 50;\n display: flex;\n width: 100%;\n flex-direction: column-reverse;\n padding: calc(var(--spacing) * 4);\n @media (width >= 40rem) {\n max-width: calc(var(--spacing) * 90);\n }\n &:not([data-align]), &[data-align=\'end\'] {\n right: calc(var(--spacing) * 0);\n }\n &[data-align=\'start\'] {\n left: calc(var(--spacing) * 0);\n }\n &[data-align=\'center\'] {\n left: calc(1/2 * 100%);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .toast {\n pointer-events: auto;\n margin-top: calc(var(--spacing) * 4);\n display: grid;\n width: 100%;\n animation: toast-up 0.3s ease-in-out;\n grid-template-rows: 1fr;\n transition-property: grid-template-rows,opacity,margin;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n .toast-content {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2.5);\n overflow: hidden;\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-popover);\n padding: calc(var(--spacing) * 3);\n font-size: 13px;\n color: var(--color-popover-foreground);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n }\n section {\n h2 {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n p {\n word-break: break-all;\n color: var(--color-muted-foreground);\n }\n }\n footer {\n margin-left: auto;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n [data-toast-action], [data-toast-cancel] {\n height: calc(var(--spacing) * 6);\n padding-inline: calc(var(--spacing) * 2.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n }\n &[aria-hidden=\'true\'] {\n margin: calc(var(--spacing) * 0);\n grid-template-rows: 0fr;\n overflow: hidden;\n border-style: var(--tw-border-style);\n border-width: 0px;\n padding: calc(var(--spacing) * 0);\n opacity: 0%;\n .toast-content {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n }\n }\n}\n@keyframes toast-up {\n from {\n opacity: 0;\n transform: translateY(100%);\n }\n}\n@layer components {\n [data-tooltip] {\n position: relative;\n &:before {\n pointer-events: none;\n visibility: hidden;\n position: absolute;\n z-index: 60;\n width: -moz-fit-content;\n width: fit-content;\n max-width: var(--container-xs);\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-md);\n background-color: var(--color-primary);\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: var(--color-primary-foreground);\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-content: attr(data-tooltip);\n content: var(--tw-content);\n }\n &:hover:before {\n visibility: visible;\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n opacity: 100%;\n }\n &:focus-visible:not(:hover):before {\n display: none;\n }\n &:not([data-side]), &[data-side=\'top\'] {\n &::before {\n content: var(--tw-content);\n bottom: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &[data-side=\'bottom\'] {\n &::before {\n content: var(--tw-content);\n top: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-top: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &:not([data-side]), &[data-side=\'top\'], &[data-side=\'bottom\'] {\n &[data-align=\'start\'] {\n &::before {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n &[data-align=\'end\'] {\n &::before {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n &:not([data-align]), &[data-align=\'center\'] {\n &::before {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n &[data-side=\'left\'] {\n &::before {\n content: var(--tw-content);\n right: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-right: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &[data-side=\'right\'] {\n &::before {\n content: var(--tw-content);\n left: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-left: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &[data-side=\'left\'], &[data-side=\'right\'] {\n &[data-align=\'start\'] {\n &::before {\n content: var(--tw-content);\n top: calc(var(--spacing) * 0);\n }\n }\n &[data-align=\'end\'] {\n &::before {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n &:not([data-align]), &[data-align=\'center\'] {\n &::before {\n content: var(--tw-content);\n top: calc(1/2 * 100%);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n}\n:host {\n --radius: 0.65rem;\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n}\n:host(.dark) {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.205 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.922 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.269 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --border: oklch(1 0 0 / 10%);\n --input: oklch(1 0 0 / 15%);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.488 0.243 264.376);\n --chart-2: oklch(0.696 0.17 162.48);\n --chart-3: oklch(0.769 0.188 70.08);\n --chart-4: oklch(0.627 0.265 303.9);\n --chart-5: oklch(0.645 0.246 16.439);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(1 0 0 / 10%);\n --sidebar-ring: oklch(0.556 0 0);\n}\n@keyframes commentBoxSlideIn {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popoverSlideIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.animate-comment-box-slide-in {\n animation: commentBoxSlideIn 0.2s ease-out forwards;\n}\n.animate-fade-in {\n animation: fadeIn 0.2s ease-out forwards;\n}\n.animate-popover-slide-in {\n animation: popoverSlideIn 0.25s ease-out forwards;\n}\n@keyframes wave {\n 0% {\n transform: rotate(0deg);\n }\n 10% {\n transform: rotate(14deg);\n }\n 20% {\n transform: rotate(-8deg);\n }\n 30% {\n transform: rotate(14deg);\n }\n 40% {\n transform: rotate(-4deg);\n }\n 50% {\n transform: rotate(10deg);\n }\n 60% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n}\n.animate-wave {\n animation: wave 2.5s ease-in-out infinite;\n}\n.ff-chat-button {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border: none;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s, box-shadow 0.2s;\n z-index: 999999;\n}\n.ff-chat-button:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);\n}\n.ff-chat-button:active {\n transform: scale(0.95);\n}\n.ff-chat-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n background: #ef4444;\n color: white;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n.ff-chat-panel {\n position: fixed;\n bottom: 90px;\n right: 20px;\n width: 380px;\n max-width: calc(100vw - 40px);\n height: 600px;\n max-height: calc(100vh - 120px);\n background: white;\n border-radius: 16px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n z-index: 999998;\n animation: slideUp 0.3s ease-out;\n}\n@keyframes slideUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@media (max-width: 768px) {\n .ff-chat-panel {\n bottom: 0;\n right: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n max-width: none;\n }\n .ff-chat-button {\n bottom: 16px;\n right: 16px;\n }\n}\n.ff-chat-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n.ff-chat-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n}\n.ff-chat-subtitle {\n margin: 4px 0 0 0;\n font-size: 13px;\n opacity: 0.9;\n}\n.ff-chat-close {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n border-radius: 8px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background 0.2s;\n color: white;\n}\n.ff-chat-close:hover {\n background: rgba(255, 255, 255, 0.3);\n}\n.ff-chat-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #f9fafb;\n}\n.ff-offline-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef3c7;\n border-bottom: 1px solid #fde68a;\n color: #92400e;\n font-size: 14px;\n}\n.ff-offline-banner svg {\n flex-shrink: 0;\n}\n.ff-message-list-container {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n.ff-message-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.ff-message {\n display: flex;\n flex-direction: column;\n max-width: 80%;\n animation: messageIn 0.2s ease-out;\n}\n@keyframes messageIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.ff-message-customer {\n align-self: flex-start;\n}\n.ff-message-widget_user {\n align-self: flex-end;\n}\n.ff-message-content {\n padding: 10px 14px;\n border-radius: 12px;\n word-wrap: break-word;\n white-space: pre-wrap;\n line-height: 1.5;\n}\n.ff-message-customer .ff-message-content {\n background: #e5e7eb;\n color: #1f2937;\n border-bottom-left-radius: 4px;\n}\n.ff-message-widget_user .ff-message-content {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-bottom-right-radius: 4px;\n}\n.ff-message-meta {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px 0;\n font-size: 11px;\n color: #6b7280;\n}\n.ff-message-widget_user .ff-message-meta {\n justify-content: flex-end;\n}\n.ff-message-status {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n line-height: 1;\n}\n.ff-message-status svg {\n display: block;\n}\n.ff-typing-indicator {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n}\n.ff-typing-dots {\n display: flex;\n gap: 4px;\n}\n.ff-typing-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #9ca3af;\n animation: typingDot 1.4s infinite;\n}\n.ff-typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n}\n.ff-typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n}\n@keyframes typingDot {\n 0%, 60%, 100% {\n transform: scale(1);\n opacity: 0.5;\n }\n 30% {\n transform: scale(1.2);\n opacity: 1;\n }\n}\n.ff-typing-text {\n font-size: 13px;\n color: #6b7280;\n font-style: italic;\n}\n.ff-chat-footer {\n border-top: 1px solid #e5e7eb;\n background: white;\n padding: 16px;\n}\n.ff-message-input {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n.ff-message-textarea {\n flex: 1;\n padding: 10px 12px;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n font-size: 14px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n resize: none;\n outline: none;\n transition: border-color 0.2s;\n max-height: 120px;\n}\n.ff-message-textarea:focus {\n border-color: #667eea;\n}\n.ff-message-textarea::-moz-placeholder {\n color: #9ca3af;\n}\n.ff-message-textarea::placeholder {\n color: #9ca3af;\n}\n.ff-send-button {\n width: 40px;\n height: 40px;\n border-radius: 10px;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.2s, opacity 0.2s;\n}\n.ff-send-button:hover:not(:disabled) {\n transform: scale(1.05);\n}\n.ff-send-button:active:not(:disabled) {\n transform: scale(0.95);\n}\n.ff-send-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.ff-message-list-container::-webkit-scrollbar {\n width: 6px;\n}\n.ff-message-list-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.ff-message-list-container::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 3px;\n}\n.ff-message-list-container::-webkit-scrollbar-thumb:hover {\n background: #9ca3af;\n}\n@media (prefers-color-scheme: dark) {\n .ff-chat-panel {\n background: #1f2937;\n }\n .ff-chat-body {\n background: #111827;\n }\n .ff-message-customer .ff-message-content {\n background: #374151;\n color: #f3f4f6;\n }\n .ff-chat-footer {\n background: #1f2937;\n border-top-color: #374151;\n }\n .ff-message-textarea {\n background: #374151;\n border-color: #4b5563;\n color: #f3f4f6;\n }\n .ff-message-textarea:focus {\n border-color: #667eea;\n }\n .ff-message-time {\n color: #9ca3af;\n }\n}\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: "*";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: "<length>";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-blur {\n syntax: "*";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: "*";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: "*";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: "*";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-invert {\n syntax: "*";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: "*";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: "*";\n inherits: false;\n}\n@property --tw-duration {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ease {\n syntax: "*";\n inherits: false;\n}\n@property --tw-scale-x {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-content {\n syntax: "*";\n inherits: false;\n initial-value: "";\n}\n@property --tw-outline-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@layer properties {\n :host, *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-x-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-content: "";\n --tw-outline-style: solid;\n }\n}\r\n';class p{constructor(){this.shadowHost=null,this.shadowRoot=null,this.styleElement=null,this.backdropClickHandler=null,this.createShadowDOM()}createShadowDOM(){this.shadowHost=document.createElement("div"),this.shadowHost.id="feedbackfun-shadow-host",this.shadowHost.style.cssText="position: fixed; top: 0; left: 0; pointer-events: none; z-index: 10000; width: 100vw; height: 100vh; background: transparent; opacity: 0; transition: opacity 0.2s ease;",this.shadowRoot=this.shadowHost.attachShadow({mode:"open"}),document.body.appendChild(this.shadowHost),this.injectBaseStyles(),c("Shadow DOM created successfully")}injectBaseStyles(){this.shadowRoot&&(this.styleElement=document.createElement("style"),this.styleElement.textContent=u,this.shadowRoot.appendChild(this.styleElement),this.showWidget())}updateThemeVariables(e){if(!this.styleElement)return;let t="\n/* Theme variables */\n:host {\n";for(const[n,r]of Object.entries(e))t+=` ${n}: ${r};\n`;t+="}\n",this.styleElement.textContent=u+t}appendCSS(e){this.styleElement&&(this.styleElement.textContent+="\n"+e)}getShadowRoot(){return this.shadowRoot}getShadowHost(){return this.shadowHost}createElement(e,t,n){if(!this.shadowRoot)throw new Error("Shadow DOM not initialized");const r=document.createElement(e);return t&&(r.className=t),n&&(r.innerHTML=n),r.style.pointerEvents="auto",r}getWidgetContainer(){if(!this.shadowRoot)throw new Error("Shadow DOM not initialized");let e=this.shadowRoot.getElementById("feedbackfun-widget-container");return e||(e=this.createElement("div","feedbackfun-widget-container"),e.id="feedbackfun-widget-container",e.style.cssText="position: relative; pointer-events: none; width: 100%; height: 100%; background: transparent;",this.shadowRoot.appendChild(e)),e}getViewportPosition(e,t){return{x:e,y:t}}showWidget(){this.shadowHost&&(this.shadowHost.style.opacity="1")}enableBackdrop(e){this.shadowHost&&(this.shadowHost.style.background="rgba(0, 0, 0, 0.3)",this.shadowHost.style.pointerEvents="auto",e&&(this.backdropClickHandler=t=>{t.target===this.shadowHost&&e()},this.shadowHost.addEventListener("click",this.backdropClickHandler)))}disableBackdrop(){this.shadowHost&&(this.shadowHost.style.background="transparent",this.shadowHost.style.pointerEvents="none",this.backdropClickHandler&&(this.shadowHost.removeEventListener("click",this.backdropClickHandler),this.backdropClickHandler=null))}destroy(){this.shadowHost&&(this.shadowHost.remove(),this.shadowHost=null,this.shadowRoot=null,this.styleElement=null)}}class h{constructor(e,t){this.toggleButton=null,this.isActive=!1,this.onToggle=e,this.shadowDomManager=t}create(e){this.toggleButton=this.shadowDomManager.createElement("button"),this.toggleButton.className="fixed bottom-6 right-6 w-14 h-14 bg-background border border-border text-muted-foreground rounded-full cursor-pointer z-[999999] flex items-center justify-center transition-all duration-300 select-none shadow-lg hover:scale-105 hover:shadow-xl hover:bg-muted/50 hover:border-border-accent pointer-events-auto",this.toggleButton.title="Open feedback",this.toggleButton.innerHTML='\n <div class="flex items-center justify-center">\n <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">\n <path d="M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z"/>\n </svg>\n </div>\n ',this.toggleButton.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.isActive=!this.isActive,this.updateState(this.isActive),this.onToggle()});return(e||this.shadowDomManager.getWidgetContainer()).appendChild(this.toggleButton),this.toggleButton}updateState(e=this.isActive){if(this.isActive=e,!this.toggleButton)return;const t=this.toggleButton.querySelector("div");t&&(this.isActive?(this.toggleButton.className="fixed bottom-6 right-6 w-14 h-14 bg-primary border border-primary text-primary-foreground rounded-full cursor-pointer z-[999999] flex items-center justify-center transition-all duration-300 select-none shadow-lg hover:scale-105 hover:shadow-xl hover:bg-primary/90 hover:border-primary/90 pointer-events-auto",t.className="flex items-center justify-center",t.innerHTML='\n <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">\n <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>\n </svg>\n '):(this.toggleButton.className="fixed bottom-6 right-6 w-14 h-14 bg-primary border border-border text-primary-foreground rounded-full cursor-pointer z-[999999] flex items-center justify-center transition-all duration-300 select-none shadow-lg hover:scale-105 hover:shadow-xl hover:bg-primary/50 hover:border-border-accent pointer-events-auto",t.className="flex items-center justify-center",t.innerHTML='\n <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">\n <path d="M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z"/>\n </svg>\n '))}remove(){this.toggleButton&&(this.toggleButton.remove(),this.toggleButton=null)}getElement(){return this.toggleButton}getActiveState(){return this.isActive}destroy(){this.remove()}}class f{constructor(e,t,n,r,o,i,s,a=!1,c){this.onSubmit=e,this.onRoadmapClick=t,this.onClose=n,this.onClickPageMode=r,this.toggleButton=o,this.planStatus=i,this.shadowDomManager=s,this.hideClickMode=a,this.parentContainer=c,this.popover=null,this.selectedTab="feature",this.selectedPrivacy="public",this.displayMode="popover",this.scrollHandler=null}create(e="popover"){this.displayMode=e,this.popover=this.shadowDomManager.createElement("div"),"dialog"===e?(this.popover.className="fixed top-0 left-0 w-full h-full backdrop-blur-sm z-[10001] flex items-center justify-center animate-fade-in",this.popover.style.backgroundColor="rgba(0, 0, 0, 0.5)"):this.popover.className="fixed z-[10001] flex items-end justify-end p-4 animate-popover-slide-in",this.popover.innerHTML=this.getPopoverHTML(),"dialog"===e?this.setupDialogPosition():this.setupPopoverPosition();return(this.parentContainer||this.shadowDomManager.getWidgetContainer()).appendChild(this.popover),this.addEventListeners(),this.popover}getPopoverHTML(){return`\n <div class="card w-full max-w-sm bg-card border border-border shadow-xl backdrop-blur-sm">\n <div class="card-body px-4 space-y-4">\n \x3c!-- Header --\x3e\n <div class="flex items-start justify-between">\n <div class="flex-1 pr-4">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Send feedback</h2>\n <p class="text-sm text-muted-foreground leading-relaxed">Tell us what to improve. We read everything and respond to most.</p>\n </div>\n <button id="closeBtn" class="btn-icon-outline">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>\n </svg>\n </button>\n </div>\n\n \x3c!-- Feedback Type Tabs --\x3e\n <div class="tabs w-full" id="feedback-tabs">\n <nav role="tablist" aria-orientation="horizontal" class="w-full">\n <button type="button" \n role="tab" \n id="feedback-tab-feature" \n aria-controls="feedback-panel-feature" \n aria-selected="true" \n data-type="feature" \n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected='true']]:bg-primary [&[aria-selected='true']]:text-primary-foreground [&[aria-selected='true']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>\n </svg>\n Feature\n </button>\n <button type="button" \n role="tab" \n id="feedback-tab-bug" \n aria-controls="feedback-panel-bug" \n aria-selected="false" \n data-type="bug" \n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected='true']]:bg-primary [&[aria-selected='true']]:text-primary-foreground [&[aria-selected='true']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 \n 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>\n </svg>\n Bug\n </button>\n <button type="button" \n role="tab" \n id="feedback-tab-other" \n aria-controls="feedback-panel-other" \n aria-selected="false" \n data-type="other" \n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected='true']]:bg-primary [&[aria-selected='true']]:text-primary-foreground [&[aria-selected='true']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 8h10m-5 4h5M7 16h5m6 0a2 2 0 \n 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2h2l4 4 4-4h2z"></path>\n </svg>\n Other\n </button>\n </nav>\n </div>\n\n \x3c!-- Textarea Input --\x3e\n <div class="space-y-2">\n <textarea\n id="feedback"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Share your idea, bug report, or feedback..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="hint" class="text-muted-foreground">Minimum 10 characters required</span>\n <span id="counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="relative">\n <button type="button" id="privacyBtn" class="cursor-pointer w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors" aria-haspopup="menu" aria-expanded="false">\n <div class="flex items-center gap-1.5">\n <svg id="privacyIcon" class="w-3.5 h-3.5 text-muted-foreground cursor-pointer" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacyLabel" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground cursor-pointer" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacyMenu" class="absolute top-full left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden w-56">\n <div class="p-1">\n <button type="button" data-privacy="public" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n ${this.hideClickMode?"":'\x3c!-- Click Feature Highlight --\x3e\n <div class="bg-accent/20 border border-accent/30 rounded-lg p-3 space-y-2">\n <div class="flex items-center justify-between">\n <div class="flex items-center gap-2">\n\n <h3 class="text-sm font-medium text-accent-foreground">💡 Try Click Mode</h3>\n </div>\n <button id="clickBtn" class="cursor-pointer inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-accent-foreground bg-accent hover:bg-accent/80 rounded transition-colors">\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"/>\n </svg>\n Start Clicking\n </button>\n </div>\n <p class="text-xs text-muted-foreground">Click anywhere on the page to leave contextual feedback and screenshots</p>\n </div>'}\n\n \x3c!-- Actions --\x3e\n <div class="grid grid-cols-2 gap-3">\n <button id="roadmapBtn" class="cursor-pointer inline-flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium text-muted-foreground hover:text-foreground hover:bg-muted/50 border border-border rounded transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v4a2 2 0 01-2 2h-2a2 2 0 00-2 2z"/>\n </svg>\n View Roadmap\n </button>\n\n <button id="submitBtn" class="cursor-pointer inline-flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium text-primary-foreground bg-primary hover:bg-primary/90 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed" disabled>\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n Submit\n </button>\n </div>\n\n \x3c!-- Footer --\x3e\n ${"free"===this.planStatus?'\n <div class="border-t border-border pt-4">\n <p class="text-xs text-center text-muted-foreground">\n Powered by <a href="https://feedbackfun.com" class="text-primary hover:underline">feedbackfun</a>\n </p>\n </div>\n ':""}\n </div>\n </div>\n `}setupPopoverPosition(){this.popover&&(this.popover.style.position="fixed",this.popover.style.bottom="75px",this.popover.style.width="100%",this.popover.style.height="100%",this.popover.style.zIndex="10001")}setupDialogPosition(){this.popover&&(this.popover.style.position="fixed",this.popover.style.top="0",this.popover.style.left="0",this.popover.style.width="100%",this.popover.style.height="100%",this.popover.style.zIndex="10001")}addEventListeners(){if(!this.popover)return;const e=this.popover.querySelectorAll("[data-type]"),t=this.popover.querySelector("#feedback"),n=this.popover.querySelector("#submitBtn"),r=this.popover.querySelector("#roadmapBtn"),o=this.popover.querySelector("#clickBtn"),i=this.popover.querySelector("#closeBtn"),s=this.popover.querySelector("#hint"),a=this.popover.querySelector("#counter"),c=this.popover.querySelector("#privacyBtn"),l=this.popover.querySelector("#privacyMenu"),d=this.popover.querySelector("#privacyLabel"),u=this.popover.querySelector("#privacyIcon");e.forEach(t=>{t.addEventListener("click",()=>{const n=t.getAttribute("data-type");this.selectedTab=n,e.forEach(e=>{e.setAttribute("aria-selected","false")}),t.setAttribute("aria-selected","true")})});const p=()=>{l.classList.add("hidden"),c.setAttribute("aria-expanded","false")};c.addEventListener("click",e=>{e.stopPropagation();const t=l.classList.contains("hidden");p(),t&&(l.classList.remove("hidden"),c.setAttribute("aria-expanded","true"))}),l.addEventListener("click",e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.closest("button[data-privacy]");if(!n)return;const r=n.getAttribute("data-privacy");this.selectedPrivacy=r,"public"===r?(d.textContent="Public",u.innerHTML='\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n '):"admin_only"===r&&(d.textContent="Admin Only",u.innerHTML='\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n '),p()}),document.addEventListener("click",p),t.placeholder="Share your idea, bug report, or feedback...";const h=()=>{const e=t.value.trim().length>=10;n.disabled=!e,s.textContent=e?"Looks good — ready to send":"Minimum 10 characters required",s.className=e?"text-xs text-emerald-600":"text-xs text-slate-500",a.textContent=`${t.value.length} / 500`};t.addEventListener("input",h),t.addEventListener("keydown",e=>{if((e.ctrlKey||e.metaKey)&&"Enter"===e.key){e.preventDefault();t.value.trim().length>=10&&!n.disabled&&n.click()}}),h(),n.addEventListener("click",async()=>{const e=t.value.trim();if(e.length>=10&&!n.disabled){t.disabled=!0,n.disabled=!0,n.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path d="M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z"/>\n </svg>\n <span>Sending...</span>\n ';try{await this.onSubmit(e,this.selectedTab,this.selectedPrivacy)}catch(e){throw t.disabled=!1,n.disabled=!1,n.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n Submit\n ',e}}}),r.addEventListener("click",()=>{this.onRoadmapClick()}),o&&o.addEventListener("click",()=>{this.onClickPageMode()}),i.addEventListener("click",()=>{this.onClose()})}remove(){if(this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler,!0),window.removeEventListener("resize",this.scrollHandler),this.scrollHandler=null),this.popover){const e=()=>{var e,t;const n=null===(e=this.popover)||void 0===e?void 0:e.querySelector("#privacyMenu"),r=null===(t=this.popover)||void 0===t?void 0:t.querySelector("#privacyBtn");n&&r&&(n.classList.add("hidden"),r.setAttribute("aria-expanded","false"))};document.removeEventListener("click",e),this.popover.remove(),this.popover=null}}getElement(){return this.popover}isClick(e){var t,n;return null!==(n=null===(t=this.popover)||void 0===t?void 0:t.contains(e))&&void 0!==n&&n}getSelectedTab(){return this.selectedTab}getSelectedPrivacy(){return this.selectedPrivacy}}class g{constructor(e,t,n,r,o){this.onSubmit=e,this.getProjectDomain=t,this.selectedTab=n,this.shadowDomManager=r,this.parentContainer=o,this.commentBox=null,this.scrollY=0,this.scrollPreventionHandler=null,this.preventScrollKeys=e=>{e.target;["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"].includes(e.key)&&e.preventDefault()}}show(e){this.remove(),this.preventScroll(),this.shadowDomManager.enableBackdrop(()=>this.remove()),this.commentBox=this.shadowDomManager.createElement("div"),this.commentBox.className="fixed z-[10001] w-xs max-w-2xl animate-comment-box-slide-in",this.commentBox.innerHTML='\n <div class="card w-full max-w-sm bg-card border border-border shadow-xl">\n <div class="card-body px-4 space-y-4">\n \x3c!-- Header --\x3e\n <div class="flex items-start justify-between">\n <div class="flex-1 pr-4">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Send feedback</h2>\n </div>\n <button id="closeBtn">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>\n </svg>\n </button>\n </div>\n\n \x3c!-- Feedback Type Tabs --\x3e\n <div class="tabs w-full" id="feedback-tabs">\n <nav role="tablist" aria-orientation="horizontal" class="w-full">\n <button type="button"\n role="tab"\n id="feedback-tab-feature"\n aria-controls="feedback-panel-feature"\n aria-selected="false"\n data-type="feature"\n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected=\'true\']]:bg-primary [&[aria-selected=\'true\']]:text-primary-foreground [&[aria-selected=\'true\']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>\n </svg>\n Feature\n </button>\n <button type="button"\n role="tab"\n id="feedback-tab-bug"\n aria-controls="feedback-panel-bug"\n aria-selected="false"\n data-type="bug"\n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected=\'true\']]:bg-primary [&[aria-selected=\'true\']]:text-primary-foreground [&[aria-selected=\'true\']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 \n 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>\n </svg>\n Bug\n </button>\n <button type="button"\n role="tab"\n id="feedback-tab-other"\n aria-controls="feedback-panel-other"\n aria-selected="false"\n data-type="other"\n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected=\'true\']]:bg-primary [&[aria-selected=\'true\']]:text-primary-foreground [&[aria-selected=\'true\']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 8h10m-5 4h5M7 16h5m6 0a2 2 0 \n 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2h2l4 4 4-4h2z"></path>\n </svg>\n Other\n </button>\n </nav>\n </div>\n\n \x3c!-- Textarea Input --\x3e\n <div class="space-y-2">\n <textarea\n id="feedbackText"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Share your idea, bug report, or feedback..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="hint" class="text-muted-foreground">Minimum 10 characters required</span>\n <span id="counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="relative">\n <button id="privacyBtn" class="cursor-pointer w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors" aria-haspopup="menu" aria-expanded="false">\n <div class="flex items-center gap-1.5">\n <svg id="privacyIcon" class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacyLabel" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacyMenu" class="absolute left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden w-56">\n <div class="p-1">\n <button type="button" data-privacy="public" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n \x3c!-- Actions --\x3e\n <div class="grid grid-cols-1 gap-2">\n <button id="sendBtn" class="w-full inline-flex items-center justify-center gap-2 px-4 py-2 text-sm font-medium text-white bg-primary hover:bg-primary/90 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n <span>Send feedback</span>\n </button>\n </div>\n </div>\n </div>\n ';const t=function(e,t){const n=30,r=window.innerWidth,o=window.innerHeight;let i=e+n,s=t-25;return i+320>r-n&&(i=e-320-n,i<n&&(i=r-320-n)),i<n&&(i=n),s+400>o-n&&(s=o-400-n),s<n&&(s=n),400>o-60&&(s=n),{left:i,top:s}}(e.clickX,e.clickY);this.commentBox.style.position="fixed",this.commentBox.style.left=t.left+"px",this.commentBox.style.top=t.top+"px",this.commentBox.style.zIndex="10000";(this.parentContainer||this.shadowDomManager.getWidgetContainer()).appendChild(this.commentBox),this.commentBox.addEventListener("click",e=>{e.stopPropagation()});const n=this.commentBox.querySelector("#feedbackText"),r=this.commentBox.querySelector("#sendBtn"),o=this.commentBox.querySelector("#closeBtn"),i=this.commentBox.querySelector("#counter"),s=this.commentBox.querySelector("#hint"),a=this.commentBox.querySelector("#privacyBtn"),c=this.commentBox.querySelector("#privacyMenu"),l=this.commentBox.querySelector("#privacyLabel"),d=this.commentBox.querySelector("#privacyIcon");function u(){c.classList.add("hidden"),a.setAttribute("aria-expanded","false")}a.addEventListener("click",e=>{e.stopPropagation(),e.preventDefault();const t=c.classList.contains("hidden");u(),t&&(c.classList.remove("hidden"),a.setAttribute("aria-expanded","true"))}),c.addEventListener("click",e=>{var t;e.stopPropagation(),e.preventDefault();const n=null===(t=e.target)||void 0===t?void 0:t.closest("button[data-privacy]");if(!n)return;const r=n.getAttribute("data-privacy");"public"===r?(l.textContent="Public",d.innerHTML='\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n '):"admin_only"===r&&(l.textContent="Admin Only",d.innerHTML='\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n '),u()}),document.addEventListener("click",e=>{a.contains(e.target)||c.contains(e.target)||u()});const p=this.commentBox.querySelectorAll("[data-type]");p.forEach(e=>{e.getAttribute("data-type")===this.selectedTab?e.setAttribute("aria-selected","true"):e.setAttribute("aria-selected","false")}),p.forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-type");this.selectedTab=t,p.forEach(e=>{e.setAttribute("aria-selected","false")}),e.setAttribute("aria-selected","true")})}),o.addEventListener("click",e=>{e.stopPropagation(),this.remove()}),n.focus();const h=()=>{const e=n.value.length,t=e>=10;r.disabled=!t,i.textContent=`${e} / 500`,0===e?(s.textContent="Minimum 10 characters required",s.className="text-muted-foreground"):e<10?(s.textContent=10-e+" more characters needed",s.className="text-muted-foreground"):(s.textContent="Ready to send!",s.className="text-green-600")};h(),n.addEventListener("input",h),r.addEventListener("click",async()=>{const t=n.value.trim();if(t.length>=10&&!r.disabled){n.disabled=!0,r.disabled=!0,r.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path d="M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z"/>\n </svg>\n <span>Sending...</span>\n ',await new Promise(e=>setTimeout(e,100));try{await this.submitComment(t,{x:e.clickX,y:e.clickY})}catch(e){throw n.disabled=!1,r.disabled=!1,r.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n <span>Send feedback</span>\n ',e}}});const f=e=>{"Escape"===e.key?this.remove():"Enter"===e.key&&e.target===n&&(e.preventDefault(),r.disabled||r.click())};n.addEventListener("keydown",f),this.commentBox.keyDownHandler=f}remove(){if(this.commentBox){const e=this.commentBox.keyDownHandler,t=this.commentBox.querySelector("#feedbackText");e&&t&&t.removeEventListener("keydown",e),this.commentBox.remove(),this.commentBox=null}this.shadowDomManager.disableBackdrop(),this.restoreScroll()}async submitComment(e,t){var n;if(!this.commentBox)return;const r=(null===(n=this.commentBox.querySelector("#privacyLabel").textContent)||void 0===n?void 0:n.trim())||"Public",o=this.selectedTab;let i;if("Admin Only"===r)i="admin_only";else i="public";this.restoreScrollForScreenshot();try{await this.onSubmit({content:e,type:o,feedbackPrivacy:i},t)}catch(e){}}getElement(){return this.commentBox}isClick(e){return null!==this.commentBox&&(this.commentBox.contains(e)||this.commentBox===e)}preventScroll(){this.scrollY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,this.scrollPreventionHandler=e=>{e.preventDefault(),e.stopPropagation(),window.scrollTo(0,this.scrollY)},window.addEventListener("scroll",this.scrollPreventionHandler,{passive:!1}),window.addEventListener("wheel",this.scrollPreventionHandler,{passive:!1}),window.addEventListener("touchmove",this.scrollPreventionHandler,{passive:!1}),document.addEventListener("keydown",this.preventScrollKeys,!1)}restoreScroll(){this.scrollPreventionHandler&&(window.removeEventListener("scroll",this.scrollPreventionHandler),window.removeEventListener("wheel",this.scrollPreventionHandler),window.removeEventListener("touchmove",this.scrollPreventionHandler),this.scrollPreventionHandler=null),document.removeEventListener("keydown",this.preventScrollKeys)}restoreScrollForScreenshot(){this.scrollPreventionHandler&&(window.removeEventListener("scroll",this.scrollPreventionHandler),window.removeEventListener("wheel",this.scrollPreventionHandler),window.removeEventListener("touchmove",this.scrollPreventionHandler)),document.removeEventListener("keydown",this.preventScrollKeys),window.scrollTo(0,this.scrollY)}}function m(e){if(null==e?void 0:e.id){const t=`user-${e.id}`;localStorage.setItem("feedbackfun-user-id",t);const n={id:e.id,email:e.email,name:e.name};return Object.keys(e).forEach(t=>{["id","email","name"].includes(t)||(n[t]=e[t])}),localStorage.setItem("feedbackfun-user-info",JSON.stringify(n)),c("User identifier set from provided user",{identifier:t}),t}let t=localStorage.getItem("feedbackfun-user-id");return t||(t="user-"+Math.random().toString(36).substring(2,15),localStorage.setItem("feedbackfun-user-id",t),c("Generated random user identifier",{identifier:t}),t)}function v(e){try{const t=Array.from(e);localStorage.setItem("feedbackfun-user-votes",JSON.stringify(t))}catch(e){d("Error saving user votes:",e)}}class y{static getInstance(){return y.instance||(y.instance=new y),y.instance}constructor(){this.cache=new Map,this.CACHE_TTL=36e5,this.listeners=new Map}get(e){const t=this.getCacheKey(e),n=this.cache.get(t);if(!n)return null;return Date.now()-n.timestamp>this.CACHE_TTL?(this.cache.delete(t),null):(c("Serving roadmap data from cache for domain:",e),[...n.data])}set(e,t){const n=this.getCacheKey(e);this.cache.set(n,{data:[...t],timestamp:Date.now()}),c(`Cached ${t.length} roadmap items for domain:`,e),this.notifyListeners(e)}addItem(e,t){const n=this.getCacheKey(e),r=this.cache.get(n);if(!r)return void this.set(e,[t]);const o=[t,...r.data];this.cache.set(n,{data:o,timestamp:r.timestamp}),c("Added new roadmap item to cache for domain:",e),this.notifyListeners(e)}removeItem(e,t){const n=this.getCacheKey(e),r=this.cache.get(n);if(!r)return;const o=r.data.filter(e=>e.id!==t);this.cache.set(n,{data:o,timestamp:r.timestamp}),c(`Removed roadmap item ${t} from cache for domain:`,e),this.notifyListeners(e)}updateVoteCount(e,t,n){const r=this.getCacheKey(e),o=this.cache.get(r);if(!o)return;const i=o.data.map(e=>e.id===t?Object.assign(Object.assign({},e),{voteCount:n}):e);this.cache.set(r,{data:i,timestamp:o.timestamp}),c(`Updated vote count for item ${t} in cache for domain:`,e),this.notifyListeners(e)}updateItemId(e,t,n){const r=this.getCacheKey(e),o=this.cache.get(r);if(!o)return;const i=o.data.map(e=>e.id===t?Object.assign(Object.assign({},e),{id:n}):e);this.cache.set(r,{data:i,timestamp:o.timestamp}),c(`Updated item ID from ${t} to ${n} in cache for domain:`,e),this.notifyListeners(e)}has(e){const t=this.getCacheKey(e);return this.cache.has(t)}getStale(e){const t=this.getCacheKey(e),n=this.cache.get(t);return n?[...n.data]:null}invalidate(e){const t=this.getCacheKey(e);this.cache.delete(t),c("Invalidated roadmap cache for domain:",e)}clear(){this.cache.clear(),c("Cleared all roadmap cache data")}getCacheKey(e){return`roadmap:${e}`}subscribe(e,t){const n=this.getCacheKey(e);this.listeners.has(n)||this.listeners.set(n,new Set),this.listeners.get(n).add(t),c("Subscribed to cache changes for domain:",e)}unsubscribe(e,t){const n=this.getCacheKey(e),r=this.listeners.get(n);r&&(r.delete(t),0===r.size&&this.listeners.delete(n)),c("Unsubscribed from cache changes for domain:",e)}notifyListeners(e){const t=this.getCacheKey(e),n=this.listeners.get(t);if(n&&n.size>0){const t=this.get(e)||this.getStale(e)||[];c(`Notifying ${n.size} listeners of cache change for domain:`,e),n.forEach(e=>{try{e(t)}catch(e){d("Error in cache change listener:",e)}})}}}y.instance=null;class b{constructor(e,t,n,r,o){this.apiUrl=e,this.apiKey=t,this.getProjectDomain=n,this.onClose=r,this.shadowDomManager=o,this.roadmapDialog=null,this.userVotes=new Set,this.currentItems=[],this.currentSort="date",this.cacheUpdateHandler=null,this.roadmapCache=y.getInstance()}create(){this.userVotes=function(){try{const e=localStorage.getItem("feedbackfun-user-votes");if(e){const t=JSON.parse(e);return new Set(t)}}catch(e){d("Error loading user votes:",e)}return new Set}(),this.roadmapDialog=this.shadowDomManager.createElement("dialog"),this.roadmapDialog.className="dialog w-full max-w-6xl max-h-[90vh] p-0 overflow-hidden",this.roadmapDialog.setAttribute("aria-labelledby","roadmap-dialog-title"),this.roadmapDialog.setAttribute("aria-describedby","roadmap-dialog-description"),this.roadmapDialog.innerHTML='\n <article class="h-full max-w-6xl flex flex-col">\n <header>\n <h2 id="roadmap-dialog-title">Roadmap</h2>\n <p id="roadmap-dialog-description">Track progress across Request, Development, and Done</p>\n </header>\n\n <div class="flex items-center justify-end">\n <div class="flex items-center gap-2">\n <div class="text-sm text-muted-foreground">Sort by</div>\n <div role="tablist" aria-label="Sort items" class="inline-flex rounded-lg bg-muted p-1">\n <button \n type="button" \n data-sort="date" \n aria-pressed="true" \n class="inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors hover:bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"\n >\n <svg class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">\n <rect x="3" y="4" width="18" height="18" rx="2"></rect>\n <path d="M16 2v4M8 2v4M3 10h18"></path>\n </svg>\n Date\n </button>\n <button \n type="button" \n data-sort="votes" \n aria-pressed="false" \n class="inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-background hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"\n >\n <svg class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">\n <path d="m7 11 5-5 5 5"></path>\n <path d="M12 6v12"></path>\n </svg>\n Votes\n </button>\n </div>\n </div>\n </div>\n\n <section class="flex-1 overflow-y-auto">\n <div class="grid h-full grid-cols-1 divide-x divide-border md:grid-cols-3">\n \x3c!-- Column: Request --\x3e\n <div data-column="request" class="flex h-full flex-col">\n <div class="flex items-center justify-between border-b border-border bg-muted/50 p-4">\n <h3 class="font-medium text-foreground">Request</h3>\n <span class="inline-flex h-6 w-6 items-center justify-center rounded-full bg-background text-xs font-medium">\n <span class="count">0</span>\n </span>\n </div>\n <ul class="flex-1 space-y-4 overflow-y-auto p-4">\n \x3c!-- Loading/empty state will be populated here --\x3e\n </ul>\n </div>\n\n \x3c!-- Column: Development --\x3e\n <div data-column="development" class="flex h-full flex-col">\n <div class="flex items-center justify-between border-b border-border bg-muted/50 p-4">\n <h3 class="font-medium text-foreground">Development</h3>\n <span class="inline-flex h-6 w-6 items-center justify-center rounded-full bg-background text-xs font-medium">\n <span class="count">0</span>\n </span>\n </div>\n <ul class="flex-1 space-y-4 overflow-y-auto p-4">\n \x3c!-- Loading/empty state will be populated here --\x3e\n </ul>\n </div>\n\n \x3c!-- Column: Done --\x3e\n <div data-column="done" class="flex h-full flex-col">\n <div class="flex items-center justify-between border-b border-border bg-muted/50 p-4">\n <h3 class="font-medium text-foreground">Done</h3>\n <span class="inline-flex h-6 w-6 items-center justify-center rounded-full bg-background text-xs font-medium">\n <span class="count">0</span>\n </span>\n </div>\n <ul class="flex-1 space-y-4 overflow-y-auto p-4">\n \x3c!-- Loading/empty state will be populated here --\x3e\n </ul>\n </div>\n </div>\n </section>\n\n <button type="button" aria-label="Close dialog" onclick="this.closest(\'dialog\').close()">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x">\n <path d="M18 6 6 18" />\n <path d="m6 6 12 12" />\n </svg>\n </button>\n \n ';this.shadowDomManager.getWidgetContainer().appendChild(this.roadmapDialog),this.addEventListeners(),this.updateSortButtonStyles(),this.setupCacheSubscription(),this.roadmapDialog.showModal();const e=this.getProjectDomain(),t=this.roadmapCache.get(e)||this.roadmapCache.getStale(e);return a("Roadmap dialog opening for domain:",e),a("Initial cached data found:",t),this.currentItems=t||[],this.currentItems.length>0?this.sortAndDisplayItems():this.showEmptyState(),this.roadmapDialog}addEventListeners(){if(!this.roadmapDialog)return;const e=this.roadmapDialog,t=this.roadmapDialog.querySelector(".feedbackfun-roadmap-close");null==t||t.addEventListener("click",()=>{e.close(),this.onClose()}),e.addEventListener("click",t=>{t.target===e&&(e.close(),this.onClose())});this.roadmapDialog.querySelectorAll("[data-sort]").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-sort");this.handleSort(t)})}),e.addEventListener("close",()=>{this.onClose()})}displayRoadmapItems(e){if(!this.roadmapDialog)return;Array.isArray(e)||(l("displayRoadmapItems: items is not an array, defaulting to empty array"),e=[]);const t=this.roadmapDialog.querySelector('[data-column="request"] ul'),n=this.roadmapDialog.querySelector('[data-column="development"] ul'),r=this.roadmapDialog.querySelector('[data-column="done"] ul');if(!t||!n||!r)return;t.innerHTML="",n.innerHTML="",r.innerHTML="";let o=0,i=0,s=0;if(e&&e.length>0){e.filter(e=>"public"===e.feedbackPrivacy).forEach(e=>{e.status=e.status||"pending";const a=this.createRoadmapItemElement(e);"in_progress"===e.status?(n.appendChild(a),i++):"done"===e.status?(r.appendChild(a),s++):(t.appendChild(a),o++)})}this.updateColumnCounts(o,i,s)}updateColumnCounts(e,t,n){if(!this.roadmapDialog)return;const r=this.roadmapDialog.querySelector('[data-column="request"] .count');r&&(r.textContent=e.toString());const o=this.roadmapDialog.querySelector('[data-column="development"] .count');o&&(o.textContent=t.toString());const i=this.roadmapDialog.querySelector('[data-column="done"] .count');i&&(i.textContent=n.toString())}createRoadmapItemElement(e){const t=document.createElement("li");t.className="group card border border-border bg-card p-4 hover:border-border-accent focus-within:border-border-accent",t.setAttribute("data-type",e.type),t.setAttribute("data-date",e.createdAt||""),t.setAttribute("data-votes",(e.voteCount||0).toString());const n=e.createdAt?new Date(e.createdAt).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"",r=this.getSimpleTypeBadge(e.type),o=this.getSimpleStatusBadge(e.status||"pending"),i=e.screenshotBase64?`<div class="feedbackfun-roadmap-item-screenshot mt-2">\n <img src="${e.screenshotBase64}" alt="Screenshot for ${e.content||"feedback item"}"\n class="w-full h-24 object-cover rounded-lg border border-border cursor-pointer hover:border-border-accent transition-colors shadow-sm hover:shadow-md" />\n </div>`:"",s=m(),c=e.userIdentifier===s;a("isOwnItem",c),a("userIdentifier",s),a("item.userIdentifier",e.userIdentifier);const l=c?'<button type="button" data-delete aria-label="Delete feedback" class="inline-flex items-center justify-center rounded-full p-1.5 text-muted-foreground hover:text-destructive hover:bg-destructive/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring transition-colors cursor-pointer">\n <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" data-delete-icon viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">\n <path d="M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6"/>\n </svg>\n <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 hidden animate-spin" data-delete-spinner viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">\n <path d="M21 12a9 9 0 1 1-6.219-8.56"/>\n </svg>\n </button>':"";return t.innerHTML=`\n <div class="flex flex-col gap-3">\n <p class="text-[15px] text-card-foreground">\n ${e.content||"No description available"}\n </p>\n <div class="flex items-center gap-2">\n ${r}\n ${o}\n </div>\n ${i}\n <div class="flex items-center justify-between">\n <span class="text-xs text-muted-foreground">${n}</span>\n <div class="flex items-center gap-2">\n <button type="button" data-upvote aria-pressed="false" class="group hover:like:bg-muted/100 inline-flex items-center gap-1.5 rounded-full bg-muted/50 px-3 py-1.5 text-sm font-medium text-muted-foreground hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring">\n <svg xmlns="http://www.w3.org/2000/svg" class="h-4.5 w-4.5 group-hover:like:text-foreground" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">\n <path d="M7 10l5-5 5 5M12 5v14"/>\n </svg>\n <span class="text-xs" data-count>${e.voteCount||0}</span>\n </button>\n ${l}\n </div>\n </div>\n </div>\n `,this.addItemEventListeners(t,e),this.applyLikedState(t,e),t}addItemEventListeners(e,t){const n=e.querySelector(".feedbackfun-roadmap-see-more");n&&t.content&&n.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.toggleDescriptionExpansion(e,t.content,n)});const r=e.querySelector(".feedbackfun-roadmap-item-screenshot img");r&&t.screenshotBase64&&r.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.showScreenshotModal(t.screenshotBase64,t.content||"")});const o=e.querySelector("[data-upvote]");o&&o.addEventListener("click",async n=>{n.preventDefault(),n.stopPropagation(),await this.handleLike(e,t)});const i=e.querySelector("[data-delete]");i&&i.addEventListener("click",async n=>{n.preventDefault(),n.stopPropagation(),await this.handleDelete(e,t)})}getStatusDotColor(e){const t={pending:"bg-amber-500",approved:"bg-sky-500",in_progress:"bg-violet-500",done:"bg-emerald-500"};return t[e]||t.pending}getUserTierBadge(e){if(!e.username)return"";const t={pro:'\n <span class="inline-flex items-center gap-1 rounded-full bg-amber-50 px-1.5 py-0.5 text-[11px] font-medium text-amber-700 ring-1 ring-amber-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="currentColor" class="text-amber-500">\n <path d="M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.62L12 2 9.19 8.62 2 9.24l5.46 4.73L5.82 21z"/>\n </svg>\n Pro\n </span>',free:'\n <span class="inline-flex items-center gap-1 rounded-full bg-gray-50 px-1.5 py-0.5 text-[11px] font-medium text-gray-700 ring-1 ring-gray-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n </svg>\n Free\n </span>'};return t[e.plan||"free"]||t.free}getTypeBadgeNew(e){const t={feature:'\n <span class="inline-flex items-center gap-1 rounded-full bg-emerald-50 px-2 py-1 text-xs font-medium text-emerald-700 ring-1 ring-emerald-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <circle cx="12" cy="12" r="3"/>\n <path d="M12 1v6M12 17v6M4.22 4.22l4.24 4.24M15.54 15.54l4.24 4.24M1 12h6M17 12h6M4.22 19.78l4.24-4.24M15.54 8.46l4.24-4.24"/>\n </svg>\n Feature Request\n </span>',bug:'\n <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 ring-1 ring-red-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M8 2v4M16 2v4M8 18v4M16 18v4M3 8h4M3 16h4M17 8h4M17 16h4"/>\n <rect x="8" y="8" width="8" height="8" rx="2"/>\n </svg>\n Bug Report\n </span>',other:'\n <span class="inline-flex items-center gap-1 rounded-full bg-neutral-50 px-2 py-1 text-xs font-medium text-neutral-700 ring-1 ring-neutral-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>\n </svg>\n Feedback\n </span>'};return t[e]||t.other}getStatusBadgeNew(e){const t={pending:'\n <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 ring-1 ring-yellow-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <circle cx="12" cy="12" r="3"/>\n </svg>\n Under Review\n </span>',approved:'\n <span class="inline-flex items-center gap-1 rounded-full bg-sky-50 px-2 py-1 text-xs font-medium text-sky-700 ring-1 ring-sky-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M9 12l2 2 4-4"/>\n <circle cx="12" cy="12" r="10"/>\n </svg>\n Planned\n </span>',in_progress:'\n <span class="inline-flex items-center gap-1 rounded-full bg-violet-50 px-2 py-1 text-xs font-medium text-violet-700 ring-1 ring-violet-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>\n </svg>\n In Development\n </span>',done:'\n <span class="inline-flex items-center gap-1 rounded-full bg-emerald-50 px-2 py-1 text-xs font-medium text-emerald-700 ring-1 ring-emerald-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/>\n <polyline points="22,4 12,14.01 9,11.01"/>\n </svg>\n Completed\n </span>'};return t[e]||t.pending}getSimpleTypeBadge(e){const t={feature:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-violet-700 ring-1 ring-violet-200/60">Feature</span>',bug:'<span class="inline-flex items-center rounded-full bg-rose-50 px-2 py-0.5 text-[11px] font-medium text-rose-700 ring-1 ring-rose-200/60">Bug</span>',other:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-violet-700 ring-1 ring-violet-200/60">Other</span>'};return t[e]||t.other}getSimpleStatusBadge(e){return{pending:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-indigo-700 ring-1 ring-indigo-200/60">Pending Review</span>',approved:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-violet-700 ring-1 ring-violet-200/60">Planned</span>',in_progress:'<span class="inline-flex items-center rounded-full bg-amber-50 px-2 py-0.5 text-[11px] font-medium text-amber-400 ring-1 ring--200/60">In Progress</span>',done:'<span class="inline-flex items-center rounded-full bg-emerald-50 px-2 py-0.5 text-[11px] font-medium text-emerald-700 ring-1 ring-emerald-200/60">Done</span>'}[e]||""}applyLikedState(e,t){const n=e.querySelector("[data-upvote]"),r=e.querySelector("[data-count]");if(!n||!r)return;if(this.userVotes.has(t.id)){n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground");const e=t.voteCount||0;r.textContent=e.toString()}else{n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground");const e=t.voteCount||0;r.textContent=e.toString()}}async handleLike(e,t){const n=e.querySelector("[data-upvote]"),r=e.querySelector("[data-count]");if(!n||!r)return;const o=m(),i=this.userVotes.has(t.id),s=parseInt(r.textContent||"0");if(i){this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground");const e=Math.max(0,s-1);r.textContent=e.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,e)}else{this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground");const e=s+1;r.textContent=e.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,e)}v(this.userVotes),n.style.pointerEvents="none",n.style.opacity="0.8";try{const e=await fetch(`${this.apiUrl}/api/roadmap/${t.id}/vote`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({userIdentifier:o,ipAddress:null})});if(e.ok){const o=await e.json();o.voted?(this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground")):(this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground")),r.textContent=o.voteCount.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,o.voteCount),v(this.userVotes)}else d("Vote API error:",e.status),i?(this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)):(this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)),v(this.userVotes)}catch(e){d("Vote request failed:",e),i?(this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)):(this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)),v(this.userVotes)}finally{n.style.pointerEvents="auto",n.style.opacity="1"}}async handleDelete(e,t){const n=e.querySelector("[data-delete]");if(!n)return;const r=n.querySelector("[data-delete-icon]"),o=n.querySelector("[data-delete-spinner]"),i=m();if(confirm("Are you sure you want to delete this feedback?")){r&&r.classList.add("hidden"),o&&o.classList.remove("hidden"),n.disabled=!0,n.style.pointerEvents="none",n.style.opacity="0.7";try{const s=await fetch(`${this.apiUrl}/api/roadmap/${t.id}`,{method:"DELETE",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({userIdentifier:i})});if(s.ok)e.style.transition="all 0.3s ease-out",e.style.opacity="0",e.style.transform="translateY(-10px)",e.style.maxHeight=e.offsetHeight+"px",setTimeout(()=>{e.style.maxHeight="0",e.style.marginBottom="0",e.style.paddingTop="0",e.style.paddingBottom="0"},150),setTimeout(()=>{e.remove(),this.currentItems=this.currentItems.filter(e=>e.id!==t.id),this.roadmapCache.removeItem(this.getProjectDomain(),t.id);const n=this.currentItems.filter(e=>"public"===e.feedbackPrivacy),r=n.filter(e=>"pending"===e.status||"approved"===e.status).length,o=n.filter(e=>"in_progress"===e.status).length,i=n.filter(e=>"done"===e.status).length;this.updateColumnCounts(r,o,i),c("Feedback deleted successfully")},450);else{const e=await s.json();d("Delete API error:",s.status,e),r&&r.classList.remove("hidden"),o&&o.classList.add("hidden"),n.disabled=!1,n.style.pointerEvents="auto",n.style.opacity="1",alert(e.error||"Failed to delete feedback. Please try again.")}}catch(e){d("Delete request failed:",e),r&&r.classList.remove("hidden"),o&&o.classList.add("hidden"),n.disabled=!1,n.style.pointerEvents="auto",n.style.opacity="1",alert("Network error. Please check your connection and try again.")}}}toggleDescriptionExpansion(e,t,n){const r=e.querySelector(".feedbackfun-roadmap-item-description");if(!r)return;if("true"===r.getAttribute("data-expanded")){const e=t.length>100?t.substring(0,100)+"...":t;r.textContent=e,r.setAttribute("data-expanded","false"),n.textContent="Show more"}else r.textContent=t,r.setAttribute("data-expanded","true"),n.textContent="Show less"}showScreenshotModal(e,t){const n=this.shadowDomManager.createElement("dialog");n.className="dialog w-full max-w-7xl max-h-[95vh] p-0 overflow-hidden",n.setAttribute("aria-labelledby","screenshot-dialog-title"),n.innerHTML=`\n <article class="h-[95vh] max-w-7xl flex flex-col">\n <header class="border-b border-border px-6 py-4 bg-background">\n <div class="flex items-center justify-between">\n <div class="flex items-center gap-3">\n <svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>\n </svg>\n <div>\n <h2 id="screenshot-dialog-title" class="text-lg font-semibold text-foreground">Screenshot Preview</h2>\n ${t?`<p class="text-sm text-muted-foreground mt-1">${t}</p>`:""}\n </div>\n </div>\n <button\n type="button"\n class="btn btn-ghost btn-icon"\n aria-label="Close screenshot dialog"\n >\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M18 6L6 18M6 6l12 12"/>\n </svg>\n </button>\n </div>\n </header>\n\n <section class="flex-1 overflow-auto p-6 bg-muted/20">\n <div class="flex items-center justify-center max-w-7xl">\n <div class="max-w-full max-h-full">\n <img\n src="${e}"\n alt="Screenshot for ${t}"\n class="max-w-full max-h-[calc(80vh-8rem)] w-auto h-auto block rounded-lg shadow-2xl border border-border bg-card"\n style="object-fit: contain;"\n />\n </div>\n </div>\n </section>\n </article>\n `;const r=n.querySelector("button"),o=n;null==r||r.addEventListener("click",()=>{o.close(),n.remove()}),o.addEventListener("click",e=>{const t=o.getBoundingClientRect();t.top<=e.clientY&&e.clientY<=t.top+t.height&&t.left<=e.clientX&&e.clientX<=t.left+t.width||(o.close(),n.remove())}),o.addEventListener("close",()=>{n.remove()});this.shadowDomManager.getWidgetContainer().appendChild(n),o.showModal()}remove(){if(this.cleanupCacheSubscription(),this.roadmapDialog){this.roadmapDialog.close(),this.roadmapDialog.remove(),this.roadmapDialog=null}}handleSort(e){this.currentSort=e,this.updateSortButtonStyles(),this.sortAndDisplayItems()}updateSortButtonStyles(){if(!this.roadmapDialog)return;this.roadmapDialog.querySelectorAll("[data-sort]").forEach(e=>{const t=e.getAttribute("data-sort")===this.currentSort;e.setAttribute("aria-pressed",t.toString()),t?(e.classList.add("bg-muted","text-foreground"),e.classList.remove("text-muted-foreground")):(e.classList.remove("bg-muted","text-foreground"),e.classList.add("text-muted-foreground"))})}sortAndDisplayItems(){if(!this.currentItems.length)return void this.showEmptyState();const e=[...this.currentItems].sort((e,t)=>{if("votes"===this.currentSort)return(t.voteCount||0)-(e.voteCount||0);{const n=e.createdAt?new Date(e.createdAt).getTime():0;return(t.createdAt?new Date(t.createdAt).getTime():0)-n}});this.displayRoadmapItems(e)}showEmptyState(){if(!this.roadmapDialog)return;[{key:"request",title:"No items planned",icon:"📋"},{key:"development",title:"Nothing in development",icon:"⚡"},{key:"done",title:"No completed items",icon:"✅"}].forEach(({key:e,title:t,icon:n})=>{const r=this.roadmapDialog.querySelector(`[data-column="${e}"] ul`);r&&(r.innerHTML=`\n <li class="p-8 text-center">\n <div class="text-2xl mb-2">${n}</div>\n <div class="text-sm text-muted-foreground">${t}</div>\n </li>\n `)}),this.updateColumnCounts(0,0,0)}getElement(){return this.roadmapDialog}setupCacheSubscription(){const e=this.getProjectDomain();this.cacheUpdateHandler=e=>{c("Roadmap dialog received cache update with",e.length,"items"),this.currentItems=e,e.length>0?this.sortAndDisplayItems():this.showEmptyState()},this.roadmapCache.subscribe(e,this.cacheUpdateHandler)}cleanupCacheSubscription(){if(this.cacheUpdateHandler){const e=this.getProjectDomain();this.roadmapCache.unsubscribe(e,this.cacheUpdateHandler),this.cacheUpdateHandler=null}}static addToCache(e,t){y.getInstance().addItem(e,t)}}class w{constructor(e){this.shadowDomManager=e,this.messages=[],this.autoScroll=!0,this.isUserScrolling=!1,this.container=this.createContainer(),this.setupScrollListener()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="flex flex-col gap-1 overflow-y-auto p-4 h-full",e.setAttribute("role","log"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","false"),e}setupScrollListener(){this.container.addEventListener("scroll",()=>{const{scrollTop:e,scrollHeight:t,clientHeight:n}=this.container;t-e-n<50?(this.isUserScrolling=!1,this.autoScroll=!0):(this.isUserScrolling=!0,this.autoScroll=!1)})}addMessage(e){this.removeLatestMarker(),this.messages.push(e),this.renderMessage(e,!0),this.autoScroll&&this.scrollToBottom()}addMessages(e){e.forEach(e=>this.addMessage(e))}prependMessages(e){const t=this.container.scrollHeight;e.reverse().forEach(e=>{this.messages.unshift(e),this.prependMessage(e)}),requestAnimationFrame(()=>{const e=this.container.scrollHeight;this.container.scrollTop=e-t})}prependMessage(e){const t=this.createMessageElement(e);this.container.insertBefore(t,this.container.firstChild)}renderMessage(e,t=!1){const n=this.createMessageElement(e,t);this.container.appendChild(n)}removeLatestMarker(){const e=this.container.querySelector('[data-is-latest="true"]');if(e){e.removeAttribute("data-is-latest");const t=e.querySelector('[data-meta="true"]');t&&t.remove()}}createMessageElement(e,t=!1){var n;const r=this.shadowDomManager.createElement("article");r.className="flex flex-col gap-1 max-w-[80%] "+("widget_user"===e.senderType?"self-end items-end":"self-start items-start"),r.setAttribute("data-message-id",(null===(n=e.id)||void 0===n?void 0:n.toString())||e.tempId||""),t&&r.setAttribute("data-is-latest","true");const o=this.shadowDomManager.createElement("div");if(o.className="px-3 py-2 rounded-lg text-sm break-words "+("widget_user"===e.senderType?"bg-primary text-primary-foreground":"bg-muted text-foreground"),o.textContent=e.content,r.appendChild(o),t){const t=this.shadowDomManager.createElement("div");t.className="flex items-center gap-1.5 text-xs text-muted-foreground px-1",t.setAttribute("data-meta","true");const n=this.shadowDomManager.createElement("span");if(n.textContent=this.formatTime(e.createdAt),t.appendChild(n),e.deliveryStatus&&"widget_user"===e.senderType){const n=this.shadowDomManager.createElement("span");n.className="inline-flex items-center",n.setAttribute("data-status","true"),n.innerHTML=this.getStatusIcon(e.deliveryStatus),n.setAttribute("aria-label",e.deliveryStatus),t.appendChild(n)}r.appendChild(t)}return r}updateMessageStatus(e,t){const n=this.container.querySelector(`[data-message-id="${e}"]`);if(n){const e=n.querySelector('[data-status="true"]');e&&(e.innerHTML=this.getStatusIcon(t),e.setAttribute("aria-label",t))}}updateMessageId(e,t){const n=this.container.querySelector(`[data-message-id="${e}"]`);if(n){n.setAttribute("data-message-id",t.toString());const r=this.messages.find(t=>t.tempId===e);r&&(r.id=t,delete r.tempId)}}getStatusIcon(e){switch(e){case"sent":return'<svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M13 4L6 11L3 8" stroke="#9ca3af" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';case"delivered":return'<svg width="16" height="14" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M16 4L9 11L6 8" stroke="#9ca3af" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M11 4L4 11L1 8" stroke="#9ca3af" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';case"read":return'<svg width="16" height="14" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M16 4L9 11L6 8" stroke="#3b82f6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M11 4L4 11L1 8" stroke="#3b82f6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';default:return""}}formatTime(e){const t=(new Date).getTime()-e.getTime(),n=Math.floor(t/6e4);if(n<1)return"Just now";if(n<60)return`${n}m ago`;const r=Math.floor(n/60);return r<24?`${r}h ago`:e.toLocaleDateString(void 0,{month:"short",day:"numeric"})}scrollToBottom(){requestAnimationFrame(()=>{this.container.scrollTop=this.container.scrollHeight})}render(e){e.appendChild(this.container)}clear(){this.messages=[],this.container.innerHTML=""}getMessages(){return this.messages}destroy(){this.container.remove()}}class x{constructor(e){this.shadowDomManager=e,this.isDisabled=!1,this.container=this.createContainer(),this.input=this.createInput(),this.sendButton=this.createSendButton(),this.setupEventListeners()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="flex items-center space-x-2 p-4",e}createInput(){const e=this.shadowDomManager.createElement("input");return e.type="text",e.className="input flex-1",e.placeholder="Send us a message...",e}createSendButton(){const e=this.shadowDomManager.createElement("button");return e.className="btn",e.disabled=!0,e.type="button",e.innerHTML='\n <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2 10l16-8-8 16-2-6-6-2z" fill="currentColor"/>\n </svg>\n ',e.setAttribute("aria-label","Send message"),e}setupEventListeners(){this.input.addEventListener("input",()=>{this.sendButton.disabled=0===this.input.value.trim().length||this.isDisabled,this.onTypingCallback&&(this.onTypingCallback(!0),clearTimeout(this.typingTimeout),this.typingTimeout=setTimeout(()=>{var e;null===(e=this.onTypingCallback)||void 0===e||e.call(this,!1)},1e3))}),this.input.addEventListener("keydown",e=>{"Enter"===e.key&&(e.preventDefault(),this.handleSend())}),this.sendButton.addEventListener("click",()=>this.handleSend()),this.container.addEventListener("submit",e=>{e.preventDefault(),this.handleSend()})}handleSend(){const e=this.input.value.trim();e&&this.onSendCallback&&!this.isDisabled&&(this.onSendCallback(e),this.input.value="",this.sendButton.disabled=!0,this.onTypingCallback&&(clearTimeout(this.typingTimeout),this.onTypingCallback(!1)))}onSend(e){this.onSendCallback=e}onTyping(e){this.onTypingCallback=e}focus(){this.input.focus()}disable(){this.isDisabled=!0,this.input.disabled=!0,this.sendButton.disabled=!0,this.input.placeholder="Connecting..."}enable(){this.isDisabled=!1,this.input.disabled=!1,this.sendButton.disabled=0===this.input.value.trim().length,this.input.placeholder="Send us a message..."}render(e){this.container.appendChild(this.input),this.container.appendChild(this.sendButton),e.appendChild(this.container)}destroy(){clearTimeout(this.typingTimeout),this.container.remove()}}class k{constructor(e){this.shadowDomManager=e,this.isVisible=!1,this.container=this.createContainer()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="ff-typing-indicator",e.style.display="none",e.innerHTML='\n <div class="ff-typing-dots">\n <span class="ff-typing-dot"></span>\n <span class="ff-typing-dot"></span>\n <span class="ff-typing-dot"></span>\n </div>\n <span class="ff-typing-text">Agent is typing...</span>\n ',e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e}show(e="customer"){if(!this.isVisible){const t="customer"===e?"Agent is typing...":"User is typing...",n=this.container.querySelector(".ff-typing-text");n&&(n.textContent=t),this.container.style.display="flex",this.isVisible=!0}}hide(){this.isVisible&&(this.container.style.display="none",this.isVisible=!1)}render(e){e.appendChild(this.container)}destroy(){this.container.remove()}}class _{constructor(e){this.shadowDomManager=e,this.isVisible=!1,this.banner=this.createBanner()}createBanner(){const e=this.shadowDomManager.createElement("div");return e.className="ff-offline-banner",e.style.display="none",e.innerHTML='\n <svg width="16" height="16" viewBox="0 0 16 16" fill="none">\n <path d="M8 1L1 8l7 7 7-7-7-7z" fill="currentColor" opacity="0.2"/>\n <path d="M8 5v4M8 11v.01" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>\n </svg>\n <span>Connection lost. Trying to reconnect...</span>\n ',e.setAttribute("role","alert"),e.setAttribute("aria-live","assertive"),e}show(){this.isVisible||(this.banner.style.display="flex",this.isVisible=!0)}hide(){this.isVisible&&(this.banner.style.display="none",this.isVisible=!1)}render(e){e.appendChild(this.banner)}destroy(){this.banner.remove()}}class S{constructor(e){this.shadowDomManager=e,this.isOnline=!0,this.container=this.createContainer(),this.updateDisplay()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="ff-presence-indicator",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e}setOnline(){this.isOnline=!0,this.updateDisplay()}setOffline(){this.isOnline=!1,this.updateDisplay()}updateDisplay(){this.container.style.display="flex",this.isOnline?(this.container.innerHTML='\n <span class="inline-flex items-center gap-1.5 text-xs text-green-400">\n <span class="w-2 h-2 bg-green-400 rounded-full"></span>\n Online\n </span>\n ',this.container.setAttribute("aria-label","Admin is online")):(this.container.innerHTML='\n <span class="inline-flex items-center gap-1.5 text-xs text-gray-400">\n <span class="w-2 h-2 bg-gray-400 rounded-full"></span>\n Offline, will be back soon\n </span>\n ',this.container.setAttribute("aria-label","Admin is offline and will be back soon"))}render(e){e.appendChild(this.container)}destroy(){this.container.remove()}}class C{constructor(e,t,n){this.config=e,this.shadowDomManager=t,this.callbacks=n,this.panel=null,this.currentView="home",this.isVisible=!1,this.selectedPrivacy="public",this.selectedRoadmapTab="request",this.featureScreenshot=null,this.bugScreenshot=null,this.featureMarkPosition=!1,this.bugMarkPosition=!1,this.messageList=new w(this.shadowDomManager),this.messageInput=new x(this.shadowDomManager),this.typingIndicator=new k(this.shadowDomManager),this.offlineBanner=new _(this.shadowDomManager),this.presenceIndicator=new S(this.shadowDomManager)}create(){this.panel=this.shadowDomManager.createElement("div"),this.panel.className="fixed bottom-24 right-6 w-96 max-w-[calc(100vw-3rem)] h-[600px] max-h-[calc(100vh-8rem)] z-[999998] bg-card overflow-hidden animate-popover-slide-in shadow-2xl border-2 border-gray-200 rounded-xl",this.panel.innerHTML=this.getPanelHTML();return this.shadowDomManager.getWidgetContainer().appendChild(this.panel),this.addEventListeners(),this.renderView(this.currentView),this.isVisible=!0,this.panel}getPanelHTML(){return'\n <div class="flex flex-col h-full w-full">\n \x3c!-- Content Area --\x3e\n <div id="view-container" class="flex-1 overflow-hidden">\n \x3c!-- Views will be rendered here --\x3e\n </div>\n\n <div class="flex items-center justify-center gap-1 py-2 border-t border-border/50">\n <span class="text-xs text-muted-foreground">Powered by \n <a href="https://feedbackfun.com" target="_blank" class="underline hover:no-underline">feedbackfun</a></span>\n </div>\n </div>\n '}renderView(e){var t;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#view-container");if(!n)return;let r="";switch(e){case"home":r=this.getHomeViewHTML();break;case"messages":r=this.getMessagesViewHTML();break;case"request-feature":r=this.getRequestFeatureViewHTML();break;case"report-bug":r=this.getReportBugViewHTML();break;case"roadmap":r=this.getRoadmapViewHTML()}n.innerHTML=r,this.addViewEventListeners(e)}getAdminAvatars(){return this.config.adminAvatars&&this.config.adminAvatars.length>0?this.config.adminAvatars:[]}getHomeViewHTML(){const e=this.getAdminAvatars(),t=e.map((e,t)=>`<img alt="Admin ${t+1}" src="${e}" />`).join("\n ");return`\n <div class="flex flex-col h-full">\n \x3c!-- Gradient Header Section --\x3e\n <div class="bg-linear-to-t from-transparent to-primary px-5 pt-6 pb-10 h-full">\n \x3c!-- Top Navigation --\x3e\n <div class="flex flex-row items-center justify-center gap-12 mb-3">\n <div class="flex -space-x-2 [&_img]:ring-background [&_img]:ring-2 [&_img]:size-12 [&_img]:shrink-0 [&_img]:object-cover [&_img]:rounded-full">\n ${t}\n </div>\n </div>\n\n \x3c!-- Greeting --\x3e\n <div class="text-center">\n <h1 class="text-2xl font-bold text-white mb-2 tracking-tight">\n Hi there,\n <span class="inline-block animate-wave origin-[70%_70%]">👋</span>\n </h1>\n <p class="text-base text-white/90 font-medium">\n How can we help you today?\n </p>\n </div>\n </div>\n\n \x3c!-- Content Cards --\x3e\n <div class="absolute top-3/5 left-0 right-0 -translate-y-2/3 flex flex-col px-5 space-y-3 overflow-y-auto">\n \x3c!-- Send Message Card --\x3e\n <button id="home-send-btn" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <div>\n <span class="text-base font-medium text-gray-800">Send us a message</span>\n <div class="ff-presence-indicator-container mt-2 text-sm text-gray-600"></div>\n </div>\n ${e[0]?`\n <div class="w-8 h-8 flex items-center justify-center">\n <div class="flex [&_img]:ring-background [&_img]:ring-2 [&_img]:shrink-0 [&_img]:object-cover [&_img]:rounded-full">\n <img alt="Admin" src="${e[0]}" />\n </div>\n </div>\n `:""}\n </button>\n\n \x3c!-- Request Feature Card --\x3e\n <button id="request-feature-btn" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <span class="text-base font-medium text-gray-800">Request a Feature</span>\n <svg class="w-5 h-5 text-gray-600 group-hover:translate-x-1 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lightbulb-icon lucide-lightbulb"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg>\n </button>\n\n \x3c!-- Report Bug Card --\x3e\n <button id="report-bug-btn" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <span class="text-base font-medium text-gray-800">Report a Bug</span>\n \n <svg class="w-5 h-5 text-gray-600 group-hover:translate-x-1 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug-icon lucide-bug"><path d="M12 20v-9"/><path d="M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z"/><path d="M14.12 3.88 16 2"/><path d="M21 21a4 4 0 0 0-3.81-4"/><path d="M21 5a4 4 0 0 1-3.55 3.97"/><path d="M22 13h-4"/><path d="M3 21a4 4 0 0 1 3.81-4"/><path d="M3 5a4 4 0 0 0 3.55 3.97"/><path d="M6 13H2"/><path d="m8 2 1.88 1.88"/><path d="M9 7.13V6a3 3 0 1 1 6 0v1.13"/></svg>\n </button>\n\n \x3c!-- Roadmap Card --\x3e\n <button id="roadmap-btn-home" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <span class="text-base font-medium text-gray-800">View Roadmap</span>\n <svg class="w-5 h-5 text-gray-600 group-hover:translate-x-1 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-locate-fixed-icon lucide-locate-fixed"><line x1="2" x2="5" y1="12" y2="12"/><line x1="19" x2="22" y1="12" y2="12"/><line x1="12" x2="12" y1="2" y2="5"/><line x1="12" x2="12" y1="19" y2="22"/><circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="3"/></svg>\n </button>\n </div>\n </div>\n `}getMessagesViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="bg-primary px-3 py-4">\n <div class="flex items-center gap-3">\n <button type="button" id="back-to-home" class="text-primary-foreground hover:opacity-80 transition-opacity">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1 text-center">\n <h2 class="text-md font-semibold text-primary-foreground">Messages</h2>\n <p class="text-xs text-primary-foreground/80 mt-0.5">We typically reply within a few minutes</p>\n </div>\n <div class="w-5"></div>\n </div>\n </div>\n\n \x3c!-- Chat Body --\x3e\n <div class="flex-1 flex flex-col overflow-hidden">\n \x3c!-- Offline Banner Container --\x3e\n <div class="ff-offline-banner-container"></div>\n\n \x3c!-- Message List Container --\x3e\n <div class="ff-message-list-container flex-1 overflow-hidden"></div>\n\n \x3c!-- Typing Indicator Container --\x3e\n <div class="ff-typing-indicator-container"></div>\n </div>\n\n \x3c!-- Message Input Container --\x3e\n <div class="ff-message-input-container border-t border-border"></div>\n </div>\n '}getRequestFeatureViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="flex items-start gap-3 p-5 border-b border-border">\n <button type="button" id="back-to-home" class="text-muted-foreground hover:text-foreground transition-colors mt-1">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Request a Feature</h2>\n <p class="text-sm text-muted-foreground leading-relaxed">Share your ideas to help us improve</p>\n </div>\n </div>\n\n \x3c!-- Content --\x3e\n <div class="flex-1 overflow-y-auto p-5 space-y-4">\n \x3c!-- Textarea --\x3e\n <div class="space-y-2">\n <textarea\n id="feature-textarea"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Describe the feature you\'d like to see..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="feature-hint" class="text-muted-foreground">What would make your experience better?</span>\n <span id="feature-counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Screenshot Section --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Screenshot (Optional, Max 5MB)</label>\n <div class="flex items-center gap-2 mb-2">\n <input type="checkbox" id="feature-mark-position" class="w-4 h-4 rounded border-input text-primary focus:ring-2 focus:ring-primary" />\n <label for="feature-mark-position" class="text-sm text-foreground cursor-pointer">Mark specific position on screenshot</label>\n </div>\n <div class="flex gap-2">\n <button type="button" id="feature-capture-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n Screenshot\n </button>\n <button type="button" id="feature-upload-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>\n </svg>\n Attach File\n </button>\n <input type="file" id="feature-file-input" accept="image/*" class="hidden" />\n </div>\n <div id="feature-screenshot-preview" class="hidden mt-3 relative">\n <img id="feature-screenshot-img" src="" alt="Screenshot preview" class="w-full rounded-lg border border-border" />\n <button type="button" id="feature-remove-screenshot" class="absolute top-2 right-2 p-1.5 bg-red-500 text-white rounded-full hover:bg-red-600 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>\n </svg>\n </button>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Who can see your feedback?</label>\n <div class="relative">\n <button type="button" id="privacy-btn" class="w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors">\n <div class="flex items-center gap-1.5">\n <svg id="privacy-icon" class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacy-label" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacy-menu" class="absolute top-full left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden">\n <div class="p-1">\n <button type="button" data-privacy="public" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- Submit Button --\x3e\n <button id="feature-submit-btn" disabled class="w-full bg-primary text-primary-foreground font-medium py-2.5 rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">\n Submit feature request\n </button>\n\n </div>\n </div>\n '}getReportBugViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="flex items-start gap-3 p-5 border-b border-border">\n <button type="button" id="back-to-home" class="text-muted-foreground hover:text-foreground transition-colors mt-1">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Report a Bug</h2>\n <p class="text-sm text-muted-foreground leading-relaxed">Help us fix issues and improve quality</p>\n </div>\n </div>\n\n \x3c!-- Content --\x3e\n <div class="flex-1 overflow-y-auto p-5 space-y-4">\n \x3c!-- Textarea --\x3e\n <div class="space-y-2">\n <textarea\n id="bug-textarea"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Describe the issue you\'re experiencing..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="bug-hint" class="text-muted-foreground">What went wrong and when did it happen?</span>\n <span id="bug-counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Screenshot Section --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Screenshot (Optional, Max 5MB)</label>\n <div class="flex items-center gap-2 mb-2">\n <input type="checkbox" id="bug-mark-position" class="w-4 h-4 rounded border-input text-primary focus:ring-2 focus:ring-primary" />\n <label for="bug-mark-position" class="text-sm text-foreground cursor-pointer">Mark specific position on screenshot</label>\n </div>\n <div class="flex gap-2">\n <button type="button" id="bug-capture-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n Screenshot\n </button>\n <button type="button" id="bug-upload-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>\n </svg>\n Attach File\n </button>\n <input type="file" id="bug-file-input" accept="image/*" class="hidden" />\n </div>\n <div id="bug-screenshot-preview" class="hidden mt-3 relative">\n <img id="bug-screenshot-img" src="" alt="Screenshot preview" class="w-full rounded-lg border border-border" />\n <button type="button" id="bug-remove-screenshot" class="absolute top-2 right-2 p-1.5 bg-red-500 text-white rounded-full hover:bg-red-600 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>\n </svg>\n </button>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Who can see your feedback?</label>\n <div class="relative">\n <button type="button" id="privacy-btn" class="w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors">\n <div class="flex items-center gap-1.5">\n <svg id="privacy-icon" class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacy-label" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacy-menu" class="absolute top-full left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden">\n <div class="p-1">\n <button type="button" data-privacy="public" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- Submit Button --\x3e\n <button id="bug-submit-btn" disabled class="w-full bg-primary text-primary-foreground font-medium py-2.5 rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">\n Submit bug report\n </button>\n\n </div>\n </div>\n '}getRoadmapViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="flex items-start gap-3 px-5 pt-5 pb-4">\n <button type="button" id="back-to-home" class="text-muted-foreground hover:text-foreground transition-colors mt-1">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1">\n <h2 class="text-xl font-semibold text-card-foreground mb-1">Roadmap</h2>\n <p class="text-sm text-muted-foreground">See what we\'re building and what\'s coming next</p>\n </div>\n </div>\n\n \x3c!-- Tabs --\x3e\n <div class="border-b border-border px-5">\n <nav role="tablist" aria-orientation="horizontal" class="flex gap-1">\n <button\n type="button"\n role="tab"\n id="tab-request"\n data-tab="request"\n aria-selected="true"\n class="roadmap-tab relative px-4 py-2.5 text-sm font-medium transition-colors rounded-t-md"\n >\n <span class="relative z-10">Request</span>\n </button>\n <button\n type="button"\n role="tab"\n id="tab-development"\n data-tab="development"\n aria-selected="false"\n class="roadmap-tab relative px-4 py-2.5 text-sm font-medium transition-colors rounded-t-md"\n >\n <span class="relative z-10">Development</span>\n </button>\n <button\n type="button"\n role="tab"\n id="tab-done"\n data-tab="done"\n aria-selected="false"\n class="roadmap-tab relative px-4 py-2.5 text-sm font-medium transition-colors rounded-t-md"\n >\n <span class="relative z-10">Done</span>\n </button>\n </nav>\n </div>\n\n \x3c!-- Tab Content --\x3e\n <div class="flex-1 overflow-y-auto p-5">\n <div id="roadmap-content" class="space-y-3">\n \x3c!-- Roadmap items will be rendered here --\x3e\n <div class="text-center py-12 text-muted-foreground">\n <svg class="w-12 h-12 mx-auto mb-3 opacity-50" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z"/>\n </svg>\n <p class="text-sm">No roadmap items yet</p>\n <p class="text-xs mt-1">Items will appear here as they are added</p>\n </div>\n </div>\n </div>\n </div>\n '}addEventListeners(){this.panel}addViewEventListeners(e){if(this.panel)switch(e){case"home":this.addHomeViewListeners();break;case"messages":this.addMessagesViewListeners();break;case"request-feature":this.addRequestFeatureViewListeners();break;case"report-bug":this.addReportBugViewListeners();break;case"roadmap":this.addRoadmapViewListeners()}}addHomeViewListeners(){var e,t,n,r,o;const i=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#home-send-btn"),s=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#request-feature-btn"),a=null===(n=this.panel)||void 0===n?void 0:n.querySelector("#report-bug-btn"),c=null===(r=this.panel)||void 0===r?void 0:r.querySelector("#roadmap-btn-home");null==i||i.addEventListener("click",()=>{this.callbacks.onOpenChat(),this.switchView("messages")}),null==s||s.addEventListener("click",()=>{this.switchView("request-feature")}),null==a||a.addEventListener("click",()=>{this.switchView("report-bug")}),null==c||c.addEventListener("click",()=>{this.switchView("roadmap")});const l=null===(o=this.panel)||void 0===o?void 0:o.querySelector(".ff-presence-indicator-container");l&&this.presenceIndicator.render(l)}addMessagesViewListeners(){if(!this.panel)return;const e=this.panel.querySelector("#back-to-home");null==e||e.addEventListener("click",()=>{this.switchView("home")});const t=this.panel.querySelector(".ff-offline-banner-container"),n=this.panel.querySelector(".ff-message-list-container"),r=this.panel.querySelector(".ff-typing-indicator-container"),o=this.panel.querySelector(".ff-message-input-container"),i=this.panel.querySelector(".ff-presence-indicator-container");t&&this.offlineBanner.render(t),n&&this.messageList.render(n),r&&this.typingIndicator.render(r),o&&this.messageInput.render(o),i&&this.presenceIndicator.render(i),this.callbacks.onOpenChat()}addRequestFeatureViewListeners(){var e,t,n,r,o,i,s,a,c,l,d,u,p,h,f,g;const m=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#back-to-home");null==m||m.addEventListener("click",()=>{this.switchView("home")});const v=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#feature-textarea"),y=null===(n=this.panel)||void 0===n?void 0:n.querySelector("#feature-counter"),b=null===(r=this.panel)||void 0===r?void 0:r.querySelector("#feature-hint"),w=null===(o=this.panel)||void 0===o?void 0:o.querySelector("#feature-submit-btn");null==v||v.addEventListener("input",()=>{const e=v.value.length;y&&(y.textContent=`${e} / 500`),e>=10?(w.disabled=!1,b&&(b.textContent="Great! Tell us more.")):(w.disabled=!0,b&&(b.textContent="What would make your experience better?"))});const x=null===(i=this.panel)||void 0===i?void 0:i.querySelector("#privacy-btn"),k=null===(s=this.panel)||void 0===s?void 0:s.querySelector("#privacy-menu"),_=null===(a=this.panel)||void 0===a?void 0:a.querySelectorAll(".privacy-option");null==x||x.addEventListener("click",e=>{e.stopPropagation(),null==k||k.classList.toggle("hidden")}),null==_||_.forEach(e=>{e.addEventListener("click",e=>{e.stopPropagation();const t=e.currentTarget.dataset.privacy;this.selectPrivacy(t),null==k||k.classList.add("hidden")})});const S=e=>{const t=e.target;(null==x?void 0:x.contains(t))||(null==k?void 0:k.contains(t))||null==k||k.classList.add("hidden")};setTimeout(()=>{var e;null===(e=this.panel)||void 0===e||e.addEventListener("click",S)},0);const C=null===(c=this.panel)||void 0===c?void 0:c.querySelector("#feature-mark-position"),E=null===(l=this.panel)||void 0===l?void 0:l.querySelector("#feature-capture-btn"),T=null===(d=this.panel)||void 0===d?void 0:d.querySelector("#feature-upload-btn"),M=null===(u=this.panel)||void 0===u?void 0:u.querySelector("#feature-file-input"),I=null===(p=this.panel)||void 0===p?void 0:p.querySelector("#feature-screenshot-preview"),A=null===(h=this.panel)||void 0===h?void 0:h.querySelector("#feature-screenshot-img"),R=null===(f=this.panel)||void 0===f?void 0:f.querySelector("#feature-remove-screenshot");null==C||C.addEventListener("change",()=>{this.featureMarkPosition=C.checked}),null==E||E.addEventListener("click",()=>{null==I||I.classList.remove("hidden"),A&&(A.src="",A.style.display="none");const e=this.createLoadingSpinner();null==I||I.appendChild(e);const t=E;t.disabled=!0,this.featureMarkPosition?E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5"/>\n </svg>\n <span class="ml-2">Click on page...</span>\n ':E.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>\n <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>\n </svg>\n <span class="ml-2">Capturing...</span>\n ';(this.featureMarkPosition?this.callbacks.onCaptureScreenshotWithPosition():this.callbacks.onCaptureScreenshot()).then(t=>{null==e||e.remove(),t?(this.featureScreenshot=t,A&&(A.src=t,A.style.display="block")):(I&&this.showScreenshotError(I,"Failed to capture screenshot. Please try again."),null==I||I.classList.add("hidden"))}).catch(t=>{null==e||e.remove(),I&&this.showScreenshotError(I,"Error capturing screenshot. Please try again."),null==I||I.classList.add("hidden")}).finally(()=>{t.disabled=!1,E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n <span class="ml-2">Screenshot</span>\n '})}),null==T||T.addEventListener("click",()=>{null==M||M.click()}),null==M||M.addEventListener("change",e=>{var t;const n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(n){if(n.size>5242880)return void alert("File size must be less than 5MB");const e=new FileReader;e.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;this.featureScreenshot=n,A&&(A.src=n),null==I||I.classList.remove("hidden")},e.readAsDataURL(n)}}),null==R||R.addEventListener("click",()=>{this.featureScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}),null==w||w.addEventListener("click",async()=>{const e=null==v?void 0:v.value.trim();if(e&&e.length>=10){w.disabled=!0,w.textContent="Submitting...";try{await this.callbacks.onSubmitFeedback(e,"feature",this.selectedPrivacy,this.featureScreenshot||void 0),v&&(v.value=""),y&&(y.textContent="0 / 500"),b&&(b.textContent="What would make your experience better?"),w.textContent="Submit feature request",this.featureScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}catch(e){w.disabled=!1,w.textContent="Submit feature request"}}});const L=null===(g=this.panel)||void 0===g?void 0:g.querySelector("#roadmap-btn");null==L||L.addEventListener("click",()=>{this.callbacks.onOpenRoadmap()})}addReportBugViewListeners(){var e,t,n,r,o,i,s,a,c,l,d,u,p,h,f,g;const m=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#back-to-home");null==m||m.addEventListener("click",()=>{this.switchView("home")});const v=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#bug-textarea"),y=null===(n=this.panel)||void 0===n?void 0:n.querySelector("#bug-counter"),b=null===(r=this.panel)||void 0===r?void 0:r.querySelector("#bug-hint"),w=null===(o=this.panel)||void 0===o?void 0:o.querySelector("#bug-submit-btn");null==v||v.addEventListener("input",()=>{const e=v.value.length;y&&(y.textContent=`${e} / 500`),e>=10?(w.disabled=!1,b&&(b.textContent="Thanks for helping us improve!")):(w.disabled=!0,b&&(b.textContent="What went wrong and when did it happen?"))});const x=null===(i=this.panel)||void 0===i?void 0:i.querySelector("#privacy-btn"),k=null===(s=this.panel)||void 0===s?void 0:s.querySelector("#privacy-menu"),_=null===(a=this.panel)||void 0===a?void 0:a.querySelectorAll(".privacy-option");null==x||x.addEventListener("click",e=>{e.stopPropagation(),null==k||k.classList.toggle("hidden")}),null==_||_.forEach(e=>{e.addEventListener("click",e=>{e.stopPropagation();const t=e.currentTarget.dataset.privacy;this.selectPrivacy(t),null==k||k.classList.add("hidden")})});const S=e=>{const t=e.target;(null==x?void 0:x.contains(t))||(null==k?void 0:k.contains(t))||null==k||k.classList.add("hidden")};setTimeout(()=>{var e;null===(e=this.panel)||void 0===e||e.addEventListener("click",S)},0);const C=null===(c=this.panel)||void 0===c?void 0:c.querySelector("#bug-mark-position"),E=null===(l=this.panel)||void 0===l?void 0:l.querySelector("#bug-capture-btn"),T=null===(d=this.panel)||void 0===d?void 0:d.querySelector("#bug-upload-btn"),M=null===(u=this.panel)||void 0===u?void 0:u.querySelector("#bug-file-input"),I=null===(p=this.panel)||void 0===p?void 0:p.querySelector("#bug-screenshot-preview"),A=null===(h=this.panel)||void 0===h?void 0:h.querySelector("#bug-screenshot-img"),R=null===(f=this.panel)||void 0===f?void 0:f.querySelector("#bug-remove-screenshot");null==C||C.addEventListener("change",()=>{this.bugMarkPosition=C.checked}),null==E||E.addEventListener("click",()=>{null==I||I.classList.remove("hidden"),A&&(A.src="",A.style.display="none");const e=this.createLoadingSpinner();null==I||I.appendChild(e);const t=E;t.disabled=!0,this.bugMarkPosition?E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5"/>\n </svg>\n <span class="ml-2">Click on page...</span>\n ':E.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>\n <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>\n </svg>\n <span class="ml-2">Capturing...</span>\n ';(this.bugMarkPosition?this.callbacks.onCaptureScreenshotWithPosition():this.callbacks.onCaptureScreenshot()).then(t=>{null==e||e.remove(),t?(this.bugScreenshot=t,A&&(A.src=t,A.style.display="block")):(I&&this.showScreenshotError(I,"Failed to capture screenshot. Please try again."),null==I||I.classList.add("hidden"))}).catch(t=>{null==e||e.remove(),I&&this.showScreenshotError(I,"Error capturing screenshot. Please try again."),null==I||I.classList.add("hidden")}).finally(()=>{t.disabled=!1,E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n <span class="ml-2">Screenshot</span>\n '})}),null==T||T.addEventListener("click",()=>{null==M||M.click()}),null==M||M.addEventListener("change",e=>{var t;const n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(n){if(n.size>5242880)return void alert("File size must be less than 5MB");const e=new FileReader;e.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;this.bugScreenshot=n,A&&(A.src=n),null==I||I.classList.remove("hidden")},e.readAsDataURL(n)}}),null==R||R.addEventListener("click",()=>{this.bugScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}),null==w||w.addEventListener("click",async()=>{const e=null==v?void 0:v.value.trim();if(e&&e.length>=10){w.disabled=!0,w.textContent="Submitting...";try{await this.callbacks.onSubmitFeedback(e,"bug",this.selectedPrivacy,this.bugScreenshot||void 0),v&&(v.value=""),y&&(y.textContent="0 / 500"),b&&(b.textContent="What went wrong and when did it happen?"),w.textContent="Submit bug report",this.bugScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}catch(e){w.disabled=!1,w.textContent="Submit bug report"}}});const L=null===(g=this.panel)||void 0===g?void 0:g.querySelector("#roadmap-btn");null==L||L.addEventListener("click",()=>{this.callbacks.onOpenRoadmap()})}addRoadmapViewListeners(){var e,t;const n=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#back-to-home");null==n||n.addEventListener("click",()=>{this.switchView("home")});const r=null===(t=this.panel)||void 0===t?void 0:t.querySelectorAll(".roadmap-tab");null==r||r.forEach(e=>{e.addEventListener("click",e=>{const t=e.currentTarget.dataset.tab;this.selectRoadmapTab(t)})}),this.selectRoadmapTab(this.selectedRoadmapTab)}selectRoadmapTab(e){var t;this.selectedRoadmapTab=e;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelectorAll(".roadmap-tab");null==n||n.forEach(t=>{const n=t.getAttribute("data-tab")===e;t.setAttribute("aria-selected",n.toString()),n?(t.classList.remove("text-muted-foreground","hover:bg-muted/50"),t.classList.add("bg-muted","text-foreground","border-b-2","border-primary")):(t.classList.remove("bg-muted","text-foreground","border-b-2","border-primary"),t.classList.add("text-muted-foreground","hover:bg-muted/50"))}),this.renderRoadmapContent(e)}async renderRoadmapContent(e){var t;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#roadmap-content");if(!n)return;const r={request:"pending",development:"in_progress",done:"done"}[e];n.innerHTML=this.getLoadingStateHTML();try{const t=await this.callbacks.onFetchRoadmapItems(r);if(0===t.length)n.innerHTML=this.getEmptyStateHTML(e);else{const e=t.map(e=>this.getRoadmapItemHTML(e)).join("");n.innerHTML=e}}catch(e){n.innerHTML=this.getErrorStateHTML()}}getRoadmapItemHTML(e){const t={feature:'<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"/>\n </svg>',bug:'<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>\n </svg>',other:'<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"/>\n </svg>'},n=e.screenshotBase64?`<div class="mt-3 rounded-lg overflow-hidden border border-border bg-gray-50">\n <img src="${e.screenshotBase64}" alt="Screenshot" class="w-full h-auto max-h-48 object-contain" />\n </div>`:"",r=e.username||e.userIdentifier?`<div class="flex items-center gap-2 mt-2">\n ${e.avatar?`<img src="${e.avatar}" alt="${e.username||"User"}" class="w-5 h-5 rounded-full" />`:`<div class="w-5 h-5 rounded-full bg-primary/10 flex items-center justify-center">\n <span class="text-xs font-medium text-primary">${(e.username||e.userIdentifier||"A")[0].toUpperCase()}</span>\n </div>`}\n <span class="text-xs text-muted-foreground">${this.escapeHtml(e.username||e.userIdentifier||"Anonymous")}</span>\n </div>`:"";return`\n <div class="bg-white border border-border rounded-xl p-4 hover:shadow-lg hover:border-primary/20 transition-all duration-200 cursor-pointer">\n <div class="flex gap-3">\n \x3c!-- Vote button on left --\x3e\n <button class="flex flex-col items-center gap-0.5 px-2.5 py-1.5 rounded-md border border-input bg-background hover:bg-muted/50 transition-colors group shrink-0 self-start">\n <svg class="w-4 h-4 text-muted-foreground group-hover:text-primary transition-colors" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M5 15l7-7 7 7"/>\n </svg>\n <span class="text-sm font-medium text-foreground group-hover:text-primary transition-colors">${e.voteCount}</span>\n </button>\n\n \x3c!-- Content area --\x3e\n <div class="flex-1 min-w-0">\n \x3c!-- Type badge --\x3e\n <span class="inline-flex items-center gap-1 px-2 py-0.5 rounded-md border text-xs font-medium ${{feature:"bg-blue-50 text-blue-700 border-blue-200",bug:"bg-red-50 text-red-700 border-red-200",other:"bg-gray-50 text-gray-700 border-gray-200"}[e.type]} mb-2">\n ${t[e.type]}\n ${{feature:"Feature",bug:"Bug",other:"Feedback"}[e.type]}\n </span>\n\n \x3c!-- Content --\x3e\n <h3 class="text-base font-semibold text-foreground mb-2 leading-snug">${this.escapeHtml(e.content)}</h3>\n\n ${r}\n ${n}\n </div>\n </div>\n </div>\n `}getLoadingStateHTML(){return'\n <div class="text-center py-12">\n <div class="inline-block w-8 h-8 border-4 border-primary border-t-transparent rounded-full animate-spin"></div>\n <p class="text-sm text-muted-foreground mt-3">Loading roadmap items...</p>\n </div>\n '}getEmptyStateHTML(e){let t="";switch(e){case"request":t="No feature requests yet";break;case"development":t="Nothing in development";break;case"done":t="No completed items"}return`\n <div class="text-center py-12 text-muted-foreground">\n <svg class="w-12 h-12 mx-auto mb-3 opacity-50" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z"/>\n </svg>\n <p class="text-sm font-medium">${t}</p>\n <p class="text-xs mt-1">Items will appear here as they are added</p>\n </div>\n `}getErrorStateHTML(){return'\n <div class="text-center py-12 text-muted-foreground">\n <svg class="w-12 h-12 mx-auto mb-3 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"/>\n </svg>\n <p class="text-sm font-medium">Failed to load roadmap items</p>\n <p class="text-xs mt-1">Please try again later</p>\n </div>\n '}escapeHtml(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}createLoadingSpinner(){const e=this.shadowDomManager.createElement("div");return e.className="flex flex-col items-center justify-center py-8",this.featureMarkPosition&&(e.innerHTML='<div class="w-10 h-10 border-4 border-primary border-t-transparent rounded-full animate-spin"></div>\n <p class="text-sm text-muted-foreground mt-3">Capturing screenshot...</p>'),this.bugMarkPosition&&(e.innerHTML='<div class="w-10 h-10 border-4 border-primary border-t-transparent rounded-full animate-spin"></div>\n <p class="text-sm text-muted-foreground mt-3">Click anywhere on the page to select position</p>'),e}showScreenshotError(e,t){if(!e)return;const n=this.shadowDomManager.createElement("div");n.className="bg-red-50 border border-red-200 rounded-lg p-3 mt-2",n.innerHTML=`\n <div class="flex items-start gap-2">\n <svg class="w-5 h-5 text-red-500 shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>\n </svg>\n <p class="text-sm text-red-700">${t}</p>\n </div>\n `,e.appendChild(n),setTimeout(()=>n.remove(),3e3)}selectPrivacy(e){var t;this.selectedPrivacy=e;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#privacy-label");n&&(n.textContent="public"===e?"Public":"Admin Only")}switchView(e){this.currentView=e,this.renderView(e)}show(){this.panel&&(this.panel.style.display="flex",this.isVisible=!0)}hide(){this.panel&&(this.panel.style.display="none",this.isVisible=!1)}remove(){this.panel&&(this.panel.remove(),this.panel=null,this.isVisible=!1)}isOpen(){return this.isVisible}getElement(){return this.panel}getCurrentView(){return this.currentView}setView(e){this.switchView(e)}getMessageList(){return this.messageList}getMessageInput(){return this.messageInput}showOfflineBanner(){this.offlineBanner.show(),this.messageInput.disable()}hideOfflineBanner(){this.offlineBanner.hide(),this.messageInput.enable()}showTyping(e){this.typingIndicator.show(e)}hideTyping(){this.typingIndicator.hide()}setPresenceOnline(){this.presenceIndicator.setOnline()}setPresenceOffline(){this.presenceIndicator.setOffline()}}function E(){const e=window.innerWidth;return e<=768?"mobile":e<=1024?"tablet":"desktop"}function T(){const e=document.createElement("div");e.className="feedbackfun-message feedbackfun-error",e.innerHTML="❌ Failed to submit comment. Please try again.",document.body.appendChild(e),setTimeout(()=>{e.remove()},4e3)}const M=(()=>{let e=0;return()=>(e+=1,`u${`0000${(Math.random()*36**4|0).toString(36)}`.slice(-4)}${e}`)})();function I(e){const t=[];for(let n=0,r=e.length;n<r;n++)t.push(e[n]);return t}let A=null;function R(e={}){return A||(e.includeStyleProperties?(A=e.includeStyleProperties,A):(A=I(window.getComputedStyle(document.documentElement)),A))}function L(e,t){const n=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return n?parseFloat(n.replace("px","")):0}function P(e,t={}){return{width:t.width||function(e){const t=L(e,"border-left-width"),n=L(e,"border-right-width");return e.clientWidth+t+n}(e),height:t.height||function(e){const t=L(e,"border-top-width"),n=L(e,"border-bottom-width");return e.clientHeight+t+n}(e)}}const O=16384;function D(e){return new Promise((t,n)=>{const r=new Image;r.onload=()=>{r.decode().then(()=>{requestAnimationFrame(()=>t(r))})},r.onerror=n,r.crossOrigin="anonymous",r.decoding="async",r.src=e})}async function N(e,t,n){const r="http://www.w3.org/2000/svg",o=document.createElementNS(r,"svg"),i=document.createElementNS(r,"foreignObject");return o.setAttribute("width",`${t}`),o.setAttribute("height",`${n}`),o.setAttribute("viewBox",`0 0 ${t} ${n}`),i.setAttribute("width","100%"),i.setAttribute("height","100%"),i.setAttribute("x","0"),i.setAttribute("y","0"),i.setAttribute("externalResourcesRequired","true"),o.appendChild(i),i.appendChild(e),async function(e){return Promise.resolve().then(()=>(new XMLSerializer).serializeToString(e)).then(encodeURIComponent).then(e=>`data:image/svg+xml;charset=utf-8,${e}`)}(o)}const B=(e,t)=>{if(e instanceof t)return!0;const n=Object.getPrototypeOf(e);return null!==n&&(n.constructor.name===t.name||B(n,t))};function j(e,t,n,r){const o=`.${e}:${t}`,i=n.cssText?function(e){const t=e.getPropertyValue("content");return`${e.cssText} content: '${t.replace(/'|"/g,"")}';`}(n):function(e,t){return R(t).map(t=>`${t}: ${e.getPropertyValue(t)}${e.getPropertyPriority(t)?" !important":""};`).join(" ")}(n,r);return document.createTextNode(`${o}{${i}}`)}function $(e,t,n,r){const o=window.getComputedStyle(e,n),i=o.getPropertyValue("content");if(""===i||"none"===i)return;const s=M();try{t.className=`${t.className} ${s}`}catch(e){return}const a=document.createElement("style");a.appendChild(j(s,n,o,r)),t.appendChild(a)}const z="application/font-woff",F="image/jpeg",H={woff:z,woff2:z,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:F,jpeg:F,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function q(e){const t=function(e){const t=/\.([^./]*?)$/g.exec(e);return t?t[1]:""}(e).toLowerCase();return H[t]||""}function U(e){return-1!==e.search(/^(data:)/)}function W(e,t){return`data:${t};base64,${e}`}async function V(e,t,n){const r=await fetch(e,t);if(404===r.status)throw new Error(`Resource "${r.url}" not found`);const o=await r.blob();return new Promise((e,t)=>{const i=new FileReader;i.onerror=t,i.onloadend=()=>{try{e(n({res:r,result:i.result}))}catch(e){t(e)}},i.readAsDataURL(o)})}const K={};async function G(e,t,n){const r=function(e,t,n){let r=e.replace(/\?.*/,"");return n&&(r=e),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,"")),t?`[${t}]${r}`:r}(e,t,n.includeQueryParams);if(null!=K[r])return K[r];let o;n.cacheBust&&(e+=(/\?/.test(e)?"&":"?")+(new Date).getTime());try{const r=await V(e,n.fetchRequestInit,({res:e,result:n})=>(t||(t=e.headers.get("Content-Type")||""),function(e){return e.split(/,/)[1]}(n)));o=W(r,t)}catch(t){o=n.imagePlaceholder||"";let r=`Failed to fetch resource: ${e}`;t&&(r="string"==typeof t?t:t.message)}return K[r]=o,o}async function J(e,t){return B(e,HTMLCanvasElement)?async function(e){const t=e.toDataURL();return"data:,"===t?e.cloneNode(!1):D(t)}(e):B(e,HTMLVideoElement)?async function(e,t){if(e.currentSrc){const t=document.createElement("canvas"),n=t.getContext("2d");return t.width=e.clientWidth,t.height=e.clientHeight,null==n||n.drawImage(e,0,0,t.width,t.height),D(t.toDataURL())}const n=e.poster,r=q(n);return D(await G(n,r,t))}(e,t):B(e,HTMLIFrameElement)?async function(e,t){var n;try{if(null===(n=null==e?void 0:e.contentDocument)||void 0===n?void 0:n.body)return await Z(e.contentDocument.body,t,!0)}catch(e){}return e.cloneNode(!1)}(e,t):e.cloneNode(X(e))}const Y=e=>null!=e.tagName&&"SLOT"===e.tagName.toUpperCase(),X=e=>null!=e.tagName&&"SVG"===e.tagName.toUpperCase();function Q(e,t,n){return B(t,Element)&&(function(e,t,n){const r=t.style;if(!r)return;const o=window.getComputedStyle(e);o.cssText?(r.cssText=o.cssText,r.transformOrigin=o.transformOrigin):R(n).forEach(n=>{let i=o.getPropertyValue(n);if("font-size"===n&&i.endsWith("px")){const e=Math.floor(parseFloat(i.substring(0,i.length-2)))-.1;i=`${e}px`}B(e,HTMLIFrameElement)&&"display"===n&&"inline"===i&&(i="block"),"d"===n&&t.getAttribute("d")&&(i=`path(${t.getAttribute("d")})`),r.setProperty(n,i,o.getPropertyPriority(n))})}(e,t,n),function(e,t,n){$(e,t,":before",n),$(e,t,":after",n)}(e,t,n),function(e,t){B(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),B(e,HTMLInputElement)&&t.setAttribute("value",e.value)}(e,t),function(e,t){if(B(e,HTMLSelectElement)){const n=t,r=Array.from(n.children).find(t=>e.value===t.getAttribute("value"));r&&r.setAttribute("selected","")}}(e,t)),t}async function Z(e,t,n){return n||!t.filter||t.filter(e)?Promise.resolve(e).then(e=>J(e,t)).then(n=>async function(e,t,n){var r,o;if(X(t))return t;let i=[];return i=Y(e)&&e.assignedNodes?I(e.assignedNodes()):B(e,HTMLIFrameElement)&&(null===(r=e.contentDocument)||void 0===r?void 0:r.body)?I(e.contentDocument.body.childNodes):I((null!==(o=e.shadowRoot)&&void 0!==o?o:e).childNodes),0===i.length||B(e,HTMLVideoElement)||await i.reduce((e,r)=>e.then(()=>Z(r,n)).then(e=>{e&&t.appendChild(e)}),Promise.resolve()),t}(e,n,t)).then(n=>Q(e,n,t)).then(e=>async function(e,t){const n=e.querySelectorAll?e.querySelectorAll("use"):[];if(0===n.length)return e;const r={};for(let o=0;o<n.length;o++){const i=n[o].getAttribute("xlink:href");if(i){const n=e.querySelector(i),o=document.querySelector(i);n||!o||r[i]||(r[i]=await Z(o,t,!0))}}const o=Object.values(r);if(o.length){const t="http://www.w3.org/1999/xhtml",n=document.createElementNS(t,"svg");n.setAttribute("xmlns",t),n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",n.style.display="none";const r=document.createElementNS(t,"defs");n.appendChild(r);for(let e=0;e<o.length;e++)r.appendChild(o[e]);e.appendChild(n)}return e}(e,t)):null}const ee=/url\((['"]?)([^'"]+?)\1\)/g,te=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,ne=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;async function re(e,t,n,r,o){try{const i=n?function(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;const n=document.implementation.createHTMLDocument(),r=n.createElement("base"),o=n.createElement("a");return n.head.appendChild(r),n.body.appendChild(o),t&&(r.href=t),o.href=e,o.href}(t,n):t,s=q(t);let a;if(o){a=W(await o(i),s)}else a=await G(i,s,r);return e.replace(function(e){const t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,"g")}(t),`$1${a}$3`)}catch(e){}return e}function oe(e){return-1!==e.search(ee)}async function ie(e,t,n){if(!oe(e))return e;const r=function(e,{preferredFontFormat:t}){return t?e.replace(ne,e=>{for(;;){const[n,,r]=te.exec(e)||[];if(!r)return"";if(r===t)return`src: ${n};`}}):e}(e,n),o=function(e){const t=[];return e.replace(ee,(e,n,r)=>(t.push(r),e)),t.filter(e=>!U(e))}(r);return o.reduce((e,r)=>e.then(e=>re(e,r,t,n)),Promise.resolve(r))}async function se(e,t,n){var r;const o=null===(r=t.style)||void 0===r?void 0:r.getPropertyValue(e);if(o){const r=await ie(o,null,n);return t.style.setProperty(e,r,t.style.getPropertyPriority(e)),!0}return!1}async function ae(e,t){B(e,Element)&&(await async function(e,t){await se("background",e,t)||await se("background-image",e,t),await se("mask",e,t)||await se("-webkit-mask",e,t)||await se("mask-image",e,t)||await se("-webkit-mask-image",e,t)}(e,t),await async function(e,t){const n=B(e,HTMLImageElement);if((!n||U(e.src))&&(!B(e,SVGImageElement)||U(e.href.baseVal)))return;const r=n?e.src:e.href.baseVal,o=await G(r,q(r),t);await new Promise((r,i)=>{e.onload=r,e.onerror=t.onImageErrorHandler?(...e)=>{try{r(t.onImageErrorHandler(...e))}catch(e){i(e)}}:i;const s=e;s.decode&&(s.decode=r),"lazy"===s.loading&&(s.loading="eager"),n?(e.srcset="",e.src=o):e.href.baseVal=o})}(e,t),await async function(e,t){const n=I(e.childNodes).map(e=>ae(e,t));await Promise.all(n).then(()=>e)}(e,t))}const ce={};async function le(e){let t=ce[e];if(null!=t)return t;const n=await fetch(e);return t={url:e,cssText:await n.text()},ce[e]=t,t}async function de(e,t){let n=e.cssText;const r=/url\(["']?([^"')]+)["']?\)/g,o=(n.match(/url\([^)]+\)/g)||[]).map(async o=>{let i=o.replace(r,"$1");return i.startsWith("https://")||(i=new URL(i,e.url).href),V(i,t.fetchRequestInit,({result:e})=>(n=n.replace(o,`url(${e})`),[o,e]))});return Promise.all(o).then(()=>n)}function ue(e){if(null==e)return[];const t=[];let n=e.replace(/(\/\*[\s\S]*?\*\/)/gi,"");const r=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const e=r.exec(n);if(null===e)break;t.push(e[0])}n=n.replace(r,"");const o=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,i=new RegExp("((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})","gi");for(;;){let e=o.exec(n);if(null===e){if(e=i.exec(n),null===e)break;o.lastIndex=i.lastIndex}else i.lastIndex=o.lastIndex;t.push(e[0])}return t}async function pe(e,t){if(null==e.ownerDocument)throw new Error("Provided element is not within a Document");const n=I(e.ownerDocument.styleSheets),r=await async function(e,t){const n=[],r=[];return e.forEach(n=>{if("cssRules"in n)try{I(n.cssRules||[]).forEach((e,o)=>{if(e.type===CSSRule.IMPORT_RULE){let i=o+1;const s=le(e.href).then(e=>de(e,t)).then(e=>ue(e).forEach(e=>{try{n.insertRule(e,e.startsWith("@import")?i+=1:n.cssRules.length)}catch(e){}})).catch(e=>{});r.push(s)}})}catch(o){const i=e.find(e=>null==e.href)||document.styleSheets[0];null!=n.href&&r.push(le(n.href).then(e=>de(e,t)).then(e=>ue(e).forEach(e=>{i.insertRule(e,i.cssRules.length)})).catch(e=>{}))}}),Promise.all(r).then(()=>(e.forEach(e=>{if("cssRules"in e)try{I(e.cssRules||[]).forEach(e=>{n.push(e)})}catch(e){}}),n))}(n,t);return function(e){return e.filter(e=>e.type===CSSRule.FONT_FACE_RULE).filter(e=>oe(e.style.getPropertyValue("src")))}(r)}function he(e){return e.trim().replace(/["']/g,"")}async function fe(e,t){const n=await pe(e,t),r=function(e){const t=new Set;return function e(n){(n.style.fontFamily||getComputedStyle(n).fontFamily).split(",").forEach(e=>{t.add(he(e))}),Array.from(n.children).forEach(t=>{t instanceof HTMLElement&&e(t)})}(e),t}(e);return(await Promise.all(n.filter(e=>r.has(he(e.style.fontFamily))).map(e=>{const n=e.parentStyleSheet?e.parentStyleSheet.href:null;return ie(e.cssText,n,t)}))).join("\n")}async function ge(e,t={}){const{width:n,height:r}=P(e,t),o=await Z(e,t,!0);await async function(e,t){const n=null!=t.fontEmbedCSS?t.fontEmbedCSS:t.skipFonts?null:await fe(e,t);if(n){const t=document.createElement("style"),r=document.createTextNode(n);t.appendChild(r),e.firstChild?e.insertBefore(t,e.firstChild):e.appendChild(t)}}(o,t),await ae(o,t),function(e,t){const{style:n}=e;t.backgroundColor&&(n.backgroundColor=t.backgroundColor),t.width&&(n.width=`${t.width}px`),t.height&&(n.height=`${t.height}px`);const r=t.style;null!=r&&Object.keys(r).forEach(e=>{n[e]=r[e]})}(o,t);return await N(o,n,r)}async function me(e,t={}){const{width:n,height:r}=P(e,t),o=await ge(e,t),i=await D(o),s=document.createElement("canvas"),a=s.getContext("2d"),c=t.pixelRatio||function(){let e,t;try{t=process}catch(e){}const n=t&&t.env?t.env.devicePixelRatio:null;return n&&(e=parseInt(n,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}(),l=t.canvasWidth||n,d=t.canvasHeight||r;return s.width=l*c,s.height=d*c,t.skipAutoScale||function(e){(e.width>O||e.height>O)&&(e.width>O&&e.height>O?e.width>e.height?(e.height*=O/e.width,e.width=O):(e.width*=O/e.height,e.height=O):e.width>O?(e.height*=O/e.width,e.width=O):(e.width*=O/e.height,e.height=O))}(s),s.style.width=`${l}`,s.style.height=`${d}`,t.backgroundColor&&(a.fillStyle=t.backgroundColor,a.fillRect(0,0,s.width,s.height)),a.drawImage(i,0,0,s.width,s.height),s}const ve="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";class ye{isCrossOrigin(e){if(!e||e.startsWith("data:")||e.startsWith("blob:"))return!1;try{return new URL(e,window.location.href).origin!==window.location.origin}catch(e){return!0}}sanitizeCrossOriginImages(e){let t=0;const n=e.getElementsByTagName("img");Array.from(n).forEach(e=>{if(this.isCrossOrigin(e.src)){const n=e.offsetWidth||e.naturalWidth||100,r=e.offsetHeight||e.naturalHeight||100;e.src=ve,e.style.width=`${n}px`,e.style.height=`${r}px`,e.style.backgroundColor="#f0f0f0",e.removeAttribute("srcset"),t++}});const r=e.getElementsByTagName("*");Array.from(r).forEach(e=>{const n=e;try{const r=window.getComputedStyle(e).backgroundImage;if(r&&"none"!==r){const e=r.match(/url\(['"]?(.*?)['"]?\)/);e&&e[1]&&this.isCrossOrigin(e[1])&&(n.style.backgroundImage="none",n.style.backgroundColor="#f0f0f0",t++)}}catch(e){}});const o=e.getElementsByTagName("source");return Array.from(o).forEach(e=>{e.srcset&&this.isCrossOrigin(e.srcset.split(",")[0].trim().split(" ")[0])&&(e.remove(),t++)}),t}async captureWithTimeout(e=1e4){return Promise.race([this.capture(),new Promise(t=>{setTimeout(()=>{l("Screenshot capture timed out"),t(null)},e)})])}async capture(){var e,t,r,o;const i=document.createElement("div");try{c("Starting screenshot capture...");const e={captureWidth:window.innerWidth,captureHeight:window.innerHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,deviceType:E()},t=window.pageXOffset||document.documentElement.scrollLeft,n=window.pageYOffset||document.documentElement.scrollTop;c(`Viewport position: x=${t}, y=${n}, width=${e.captureWidth}, height=${e.captureHeight}`),i.style.cssText=`\n position: fixed;\n top: 0;\n left: 0;\n width: ${e.captureWidth}px;\n height: ${e.captureHeight}px;\n z-index: 9999;\n pointer-events: none;\n overflow: hidden;\n `;const r=document.body.cloneNode(!0);r.style.cssText=`\n position: absolute;\n top: -${n}px;\n left: -${t}px;\n width: ${document.body.scrollWidth}px;\n height: ${document.body.scrollHeight}px;\n margin: 0;\n padding: 0;\n transform: none;\n `;const o=this.sanitizeCrossOriginImages(r);o>0&&c(`Replaced ${o} cross-origin image(s) with placeholders`),i.appendChild(r),document.body.appendChild(i);const s={quality:.8,pixelRatio:1,cacheBust:!1,backgroundColor:"#ffffff",height:e.captureHeight,width:e.captureWidth,filter:e=>{if(["VIDEO","AUDIO","IFRAME","OBJECT","EMBED"].includes(e.tagName))return!1;if("CANVAS"===e.tagName)try{e.toDataURL()}catch(e){return l("Excluding tainted CANVAS element from screenshot"),!1}if("IMG"===e.tagName){const t=e;if(t.src&&this.isCrossOrigin(t.src))return l("Filter excluded cross-origin IMG:",t.src.substring(0,100)),!1}return!0},onclone:e=>{const t=e.getElementsByTagName("img");let n=0;Array.from(t).forEach(e=>{e.src&&this.isCrossOrigin(e.src)&&(e.src=ve,e.style.backgroundColor="#f0f0f0",n++)}),n>0&&c(`onclone safety net: cleaned ${n} cross-origin image(s)`)}};c("Capturing viewport screenshot with html-to-image...");const a=await async function(e,t={}){return(await me(e,t)).toDataURL("image/jpeg",t.quality||1)}(i,s);i.remove(),this.showWidgetElementsAfterCapture();const d=.75*a.length/1024;return c(`Screenshot captured successfully. Size: ${Math.round(d)}KB`),d>1024?(l("Screenshot too large, skipping capture"),null):{screenshot:a,metadata:e}}catch(s){let a={},c=!1;if(s instanceof Error)a={name:s.name,message:s.message,stack:s.stack};else if(s instanceof Event){c="error"===s.type&&s.target instanceof HTMLImageElement;const n=s.target;a={type:s.type,targetType:null===(t=null===(e=s.target)||void 0===e?void 0:e.constructor)||void 0===t?void 0:t.name,targetTagName:null===(r=s.target)||void 0===r?void 0:r.tagName,targetSrc:null==n?void 0:n.src,targetOrigin:(null==n?void 0:n.src)?new URL(n.src).origin:"unknown",currentOrigin:window.location.origin,isCrossOrigin:!!(null==n?void 0:n.src)&&!n.src.startsWith(window.location.origin),isTrusted:s.isTrusted,timeStamp:s.timeStamp}}else a="object"==typeof s&&null!==s?Object.assign({toString:s.toString(),constructor:null===(o=s.constructor)||void 0===o?void 0:o.name,keys:Object.keys(s)},s):{value:String(s),type:typeof s};const l={url:window.location.href,domain:window.location.hostname,viewport:`${window.innerWidth}x${window.innerHeight}`,externalImageCount:Array.from(document.querySelectorAll("img")).filter(e=>e.src&&!e.src.startsWith(window.location.origin)).length};if(d("Error capturing screenshot:",Object.assign(Object.assign({},a),{isCorsError:c,pageContext:l})),c)try{const{Sentry:e}=n(725);e&&e.captureException(new Error("Screenshot capture failed due to CORS"),{level:"warning",tags:{error_type:"cors_image_error",component:"screenshot_capture",image_origin:a.targetOrigin},contexts:{screenshot:a,page:l}})}catch(e){}return i.remove(),this.showWidgetElementsAfterCapture(),null}}createChatBubble(e,t){const n=document.createElement("div"),r=t.x-4,o=t.y-28,i=window.innerWidth,s=Math.max(0,Math.min(r,i-32)),a=Math.max(0,o);return n.style.cssText=`\n position: fixed;\n left: ${s}px;\n top: ${a}px;\n width: 32px;\n height: 32px;\n z-index: 10001;\n pointer-events: none;\n `,n.innerHTML='\n <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">\n <defs>\n <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">\n <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.3)"/>\n </filter>\n </defs>\n \x3c!-- Teardrop: rounded rectangle with 3 corners at 50% radius, bottom-left sharp --\x3e\n <path d="M 4 16 \n A 12 12 0 0 1 16 4 \n A 12 12 0 0 1 28 16 \n A 12 12 0 0 1 16 28 \n L 4 28 \n Z" \n fill="#1E90FF" \n filter="url(#shadow)"/>\n </svg>\n ',document.body.appendChild(n),n}showWidgetElementsAfterCapture(){document.querySelectorAll('[class*="fixed"][class*="top-"]').forEach(e=>{e.style.display=""})}}function be(){const e=document.documentElement.attributes;for(let t=0;t<e.length;t++){const n=e[t].value.toLowerCase();if(n.includes("dark"))return{theme:"dark"};if(n.includes("light"))return{theme:"light"}}return{theme:"light"}}var we=n(725);const xe=Object.create(null);xe.open="0",xe.close="1",xe.ping="2",xe.pong="3",xe.message="4",xe.upgrade="5",xe.noop="6";const ke=Object.create(null);Object.keys(xe).forEach(e=>{ke[xe[e]]=e});const _e={type:"error",data:"parser error"},Se="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Ce="function"==typeof ArrayBuffer,Ee=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Te=({type:e,data:t},n,r)=>Se&&t instanceof Blob?n?r(t):Me(t,r):Ce&&(t instanceof ArrayBuffer||Ee(t))?n?r(t):Me(new Blob([t]),r):r(xe[e]+(t||"")),Me=(e,t)=>{const n=new FileReader;return n.onload=function(){const e=n.result.split(",")[1];t("b"+(e||""))},n.readAsDataURL(e)};function Ie(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Ae;const Re="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Le="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)Le[Re.charCodeAt(e)]=e;const Pe="function"==typeof ArrayBuffer,Oe=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Ne(e,t)};const n=e.charAt(0);if("b"===n)return{type:"message",data:De(e.substring(1),t)};return ke[n]?e.length>1?{type:ke[n],data:e.substring(1)}:{type:ke[n]}:_e},De=(e,t)=>{if(Pe){const n=(e=>{let t,n,r,o,i,s=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(s--,"="===e[e.length-2]&&s--);const l=new ArrayBuffer(s),d=new Uint8Array(l);for(t=0;t<a;t+=4)n=Le[e.charCodeAt(t)],r=Le[e.charCodeAt(t+1)],o=Le[e.charCodeAt(t+2)],i=Le[e.charCodeAt(t+3)],d[c++]=n<<2|r>>4,d[c++]=(15&r)<<4|o>>2,d[c++]=(3&o)<<6|63&i;return l})(e);return Ne(n,t)}return{base64:!0,data:e}},Ne=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Be=String.fromCharCode(30);function je(){return new TransformStream({transform(e,t){!function(e,t){Se&&e.data instanceof Blob?e.data.arrayBuffer().then(Ie).then(t):Ce&&(e.data instanceof ArrayBuffer||Ee(e.data))?t(Ie(e.data)):Te(e,!1,e=>{Ae||(Ae=new TextEncoder),t(Ae.encode(e))})}(e,n=>{const r=n.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const e=new DataView(o.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{o=new Uint8Array(9);const e=new DataView(o.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&"string"!=typeof e.data&&(o[0]|=128),t.enqueue(o),t.enqueue(n)})}})}let $e;function ze(e){return e.reduce((e,t)=>e+t.length,0)}function Fe(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let o=0;o<t;o++)n[o]=e[0][r++],r===e[0].length&&(e.shift(),r=0);return e.length&&r<e[0].length&&(e[0]=e[0].slice(r)),n}function He(e){if(e)return function(e){for(var t in He.prototype)e[t]=He.prototype[t];return e}(e)}He.prototype.on=He.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},He.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},He.prototype.off=He.prototype.removeListener=He.prototype.removeAllListeners=He.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+e];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var o=0;o<r.length;o++)if((n=r[o])===t||n.fn===t){r.splice(o,1);break}return 0===r.length&&delete this._callbacks["$"+e],this},He.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),n=this._callbacks["$"+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(n){r=0;for(var o=(n=n.slice(0)).length;r<o;++r)n[r].apply(this,t)}return this},He.prototype.emitReserved=He.prototype.emit,He.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},He.prototype.hasListeners=function(e){return!!this.listeners(e).length};const qe="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Ue="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function We(e,...t){return t.reduce((t,n)=>(e.hasOwnProperty(n)&&(t[n]=e[n]),t),{})}const Ve=Ue.setTimeout,Ke=Ue.clearTimeout;function Ge(e,t){t.useNativeTimers?(e.setTimeoutFn=Ve.bind(Ue),e.clearTimeoutFn=Ke.bind(Ue)):(e.setTimeoutFn=Ue.setTimeout.bind(Ue),e.clearTimeoutFn=Ue.clearTimeout.bind(Ue))}function Je(e){return"string"==typeof e?function(e){let t=0,n=0;for(let r=0,o=e.length;r<o;r++)t=e.charCodeAt(r),t<128?n+=1:t<2048?n+=2:t<55296||t>=57344?n+=3:(r++,n+=4);return n}(e):Math.ceil(1.33*(e.byteLength||e.size))}function Ye(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}class Xe extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type="TransportError"}}class Qe extends He{constructor(e){super(),this.writable=!1,Ge(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,n){return super.emitReserved("error",new Xe(e,t,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=Oe(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}(e);return t.length?"?"+t:""}}class Ze extends Qe{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let e=0;this._polling&&(e++,this.once("pollComplete",function(){--e||t()})),this.writable||(e++,this.once("drain",function(){--e||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const n=e.split(Be),r=[];for(let e=0;e<n.length;e++){const o=Oe(n[e],t);if(r.push(o),"error"===o.type)break}return r})(e,this.socket.binaryType).forEach(e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)}),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const n=e.length,r=new Array(n);let o=0;e.forEach((e,i)=>{Te(e,!1,e=>{r[i]=e,++o===n&&t(r.join(Be))})})})(e,e=>{this.doWrite(e,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=Ye()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}}let et=!1;try{et="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}const tt=et;function nt(){}class rt extends Ze{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let n=location.port;n||(n=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||n!==e.port}}doWrite(e,t){const n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",(e,t)=>{this.onError("xhr post error",e,t)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e,t)=>{this.onError("xhr poll error",e,t)}),this.pollXhr=e}}class ot extends He{constructor(e,t,n){super(),this.createRequest=e,Ge(this,n),this._opts=n,this._method=n.method||"GET",this._uri=t,this._data=void 0!==n.data?n.data:null,this._create()}_create(){var e;const t=We(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(t);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let e in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(e)&&n.setRequestHeader(e,this._opts.extraHeaders[e])}}catch(e){}if("POST"===this._method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{n.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this._opts.cookieJar)||void 0===e||e.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var e;3===n.readyState&&(null===(e=this._opts.cookieJar)||void 0===e||e.parseCookies(n.getResponseHeader("set-cookie"))),4===n.readyState&&(200===n.status||1223===n.status?this._onLoad():this.setTimeoutFn(()=>{this._onError("number"==typeof n.status?n.status:0)},0))},n.send(this._data)}catch(e){return void this.setTimeoutFn(()=>{this._onError(e)},0)}"undefined"!=typeof document&&(this._index=ot.requestsCount++,ot.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=nt,e)try{this._xhr.abort()}catch(e){}"undefined"!=typeof document&&delete ot.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}if(ot.requestsCount=0,ot.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",it);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Ue?"pagehide":"unload",it,!1)}function it(){for(let e in ot.requests)ot.requests.hasOwnProperty(e)&&ot.requests[e].abort()}const st=function(){const e=at({xdomain:!1});return e&&null!==e.responseType}();function at(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||tt))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Ue[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}const ct="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class lt extends Qe{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,n=ct?{}:We(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,n)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const n=e[t],r=t===e.length-1;Te(n,this.supportsBinary,e=>{try{this.doWrite(n,e)}catch(e){}r&&qe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){void 0!==this.ws&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=Ye()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const dt=Ue.WebSocket||Ue.MozWebSocket;const ut={websocket:class extends lt{createSocket(e,t,n){return ct?new dt(e,t,n):t?new dt(e,t):new dt(e)}doWrite(e,t){this.ws.send(t)}},webtransport:class extends Qe{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const t=function(e,t){$e||($e=new TextDecoder);const n=[];let r=0,o=-1,i=!1;return new TransformStream({transform(s,a){for(n.push(s);;){if(0===r){if(ze(n)<1)break;const e=Fe(n,1);i=!(128&~e[0]),o=127&e[0],r=o<126?3:126===o?1:2}else if(1===r){if(ze(n)<2)break;const e=Fe(n,2);o=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(2===r){if(ze(n)<8)break;const e=Fe(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),i=t.getUint32(0);if(i>Math.pow(2,21)-1){a.enqueue(_e);break}o=i*Math.pow(2,32)+t.getUint32(4),r=3}else{if(ze(n)<o)break;const e=Fe(n,o);a.enqueue(Oe(i?e:$e.decode(e),t)),r=0}if(0===o||o>e){a.enqueue(_e);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=je();r.readable.pipeTo(e.writable),this._writer=r.writable.getWriter();const o=()=>{n.read().then(({done:e,value:t})=>{e||(this.onPacket(t),o())}).catch(e=>{})};o();const i={type:"open"};this.query.sid&&(i.data=`{"sid":"${this.query.sid}"}`),this._writer.write(i).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const n=e[t],r=t===e.length-1;this._writer.write(n).then(()=>{r&&qe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;null===(e=this._transport)||void 0===e||e.close()}},polling:class extends rt{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=st&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new ot(at,this.uri(),e)}}},pt=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,ht=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function ft(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");-1!=n&&-1!=r&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let o=pt.exec(e||""),i={},s=14;for(;s--;)i[ht[s]]=o[s]||"";return-1!=n&&-1!=r&&(i.source=t,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=function(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||r.splice(0,1);"/"==t.slice(-1)&&r.splice(r.length-1,1);return r}(0,i.path),i.queryKey=function(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(e,t,r){t&&(n[t]=r)}),n}(0,i.query),i}const gt="function"==typeof addEventListener&&"function"==typeof removeEventListener,mt=[];gt&&addEventListener("offline",()=>{mt.forEach(e=>e())},!1);class vt extends He{constructor(e,t){if(super(),this.binaryType="arraybuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&"object"==typeof e&&(t=e,e=null),e){const n=ft(e);t.hostname=n.host,t.secure="https"===n.protocol||"wss"===n.protocol,t.port=n.port,n.query&&(t.query=n.query)}else t.host&&(t.hostname=ft(t.host).host);Ge(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(e=>{const t=e.prototype.name;this.transports.push(t),this._transportsByName[t]=e}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},n=e.split("&");for(let e=0,r=n.length;e<r;e++){let r=n[e].split("=");t[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return t}(this.opts.query)),gt&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},mt.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](n)}_open(){if(0===this.transports.length)return void this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);const e=this.opts.rememberUpgrade&&vt.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",e=>this._onClose("transport close",e))}onOpen(){this.readyState="open",vt.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t<this.writeBuffer.length;t++){const n=this.writeBuffer[t].data;if(n&&(e+=Je(n)),t>0&&e>this._maxPayload)return this.writeBuffer.slice(0,t);e+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,qe(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,n){return this._sendPacket("message",e,t,n),this}send(e,t,n){return this._sendPacket("message",e,t,n),this}_sendPacket(e,t,n,r){if("function"==typeof t&&(r=t,t=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const o={type:e,data:t,options:n};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?n():e()}):this.upgrading?n():e()),this}_onError(e){if(vt.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),gt&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const e=mt.indexOf(this._offlineEventListener);-1!==e&&mt.splice(e,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}vt.protocol=4;class yt extends vt{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),n=!1;vt.priorWebsocketSuccess=!1;const r=()=>{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",e=>{if(!n)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;vt.priorWebsocketSuccess="websocket"===t.name,this.transport.pause(()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}}))};function o(){n||(n=!0,l(),t.close(),t=null)}const i=e=>{const n=new Error("probe error: "+e);n.transport=t.name,o(),this.emitReserved("upgradeError",n)};function s(){i("transport closed")}function a(){i("socket closed")}function c(e){t&&e.name!==t.name&&o()}const l=()=>{t.removeListener("open",r),t.removeListener("error",i),t.removeListener("close",s),this.off("close",a),this.off("upgrading",c)};t.once("open",r),t.once("error",i),t.once("close",s),this.once("close",a),this.once("upgrading",c),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn(()=>{n||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let n=0;n<e.length;n++)~this.transports.indexOf(e[n])&&t.push(e[n]);return t}}class bt extends yt{constructor(e,t={}){const n="object"==typeof e?e:t;(!n.transports||n.transports&&"string"==typeof n.transports[0])&&(n.transports=(n.transports||["polling","websocket","webtransport"]).map(e=>ut[e]).filter(e=>!!e)),super(e,n)}}const wt="function"==typeof ArrayBuffer,xt=Object.prototype.toString,kt="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===xt.call(Blob),_t="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===xt.call(File);function St(e){return wt&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||kt&&e instanceof Blob||_t&&e instanceof File}function Ct(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t<n;t++)if(Ct(e[t]))return!0;return!1}if(St(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Ct(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Ct(e[t]))return!0;return!1}function Et(e){const t=[],n=e.data,r=e;return r.data=Tt(n,t),r.attachments=t.length,{packet:r,buffers:t}}function Tt(e,t){if(!e)return e;if(St(e)){const n={_placeholder:!0,num:t.length};return t.push(e),n}if(Array.isArray(e)){const n=new Array(e.length);for(let r=0;r<e.length;r++)n[r]=Tt(e[r],t);return n}if("object"==typeof e&&!(e instanceof Date)){const n={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=Tt(e[r],t));return n}return e}function Mt(e,t){return e.data=It(e.data,t),delete e.attachments,e}function It(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let n=0;n<e.length;n++)e[n]=It(e[n],t);else if("object"==typeof e)for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]=It(e[n],t));return e}const At=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],Rt=5;var Lt;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Lt||(Lt={}));class Pt{constructor(e){this.replacer=e}encode(e){return e.type!==Lt.EVENT&&e.type!==Lt.ACK||!Ct(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Lt.EVENT?Lt.BINARY_EVENT:Lt.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Lt.BINARY_EVENT&&e.type!==Lt.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Et(e),n=this.encodeAsString(t.packet),r=t.buffers;return r.unshift(n),r}}class Ot extends He{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const n=t.type===Lt.BINARY_EVENT;n||t.type===Lt.BINARY_ACK?(t.type=n?Lt.EVENT:Lt.ACK,this.reconstructor=new Dt(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!St(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const n={type:Number(e.charAt(0))};if(void 0===Lt[n.type])throw new Error("unknown packet type "+n.type);if(n.type===Lt.BINARY_EVENT||n.type===Lt.BINARY_ACK){const r=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const o=e.substring(r,t);if(o!=Number(o)||"-"!==e.charAt(t))throw new Error("Illegal attachments");n.attachments=Number(o)}if("/"===e.charAt(t+1)){const r=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}n.nsp=e.substring(r,t)}else n.nsp="/";const r=e.charAt(t+1);if(""!==r&&Number(r)==r){const r=t+1;for(;++t;){const n=e.charAt(t);if(null==n||Number(n)!=n){--t;break}if(t===e.length)break}n.id=Number(e.substring(r,t+1))}if(e.charAt(++t)){const r=this.tryParse(e.substr(t));if(!Ot.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Lt.CONNECT:return Bt(t);case Lt.DISCONNECT:return void 0===t;case Lt.CONNECT_ERROR:return"string"==typeof t||Bt(t);case Lt.EVENT:case Lt.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===At.indexOf(t[0]));case Lt.ACK:case Lt.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Dt{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Mt(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Nt=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e};function Bt(e){return"[object Object]"===Object.prototype.toString.call(e)}function jt(e){return"string"==typeof e.nsp&&(void 0===(t=e.id)||Nt(t))&&function(e,t){switch(e){case Lt.CONNECT:return void 0===t||Bt(t);case Lt.DISCONNECT:return void 0===t;case Lt.EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===At.indexOf(t[0]));case Lt.ACK:return Array.isArray(t);case Lt.CONNECT_ERROR:return"string"==typeof t||Bt(t);default:return!1}}(e.type,e.data);var t}function $t(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const zt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Ft extends He{constructor(e,t,n){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,n&&n.auth&&(this.auth=n.auth),this._opts=Object.assign({},n),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[$t(e,"open",this.onopen.bind(this)),$t(e,"packet",this.onpacket.bind(this)),$t(e,"error",this.onerror.bind(this)),$t(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var n,r,o;if(zt.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const i={type:Lt.EVENT,data:t,options:{}};if(i.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,n=t.pop();this._registerAckCallback(e,n),i.id=e}const s=null===(r=null===(n=this.io.engine)||void 0===n?void 0:n.transport)||void 0===r?void 0:r.writable,a=this.connected&&!(null===(o=this.io.engine)||void 0===o?void 0:o._hasPingExpired());return this.flags.volatile&&!s||(a?(this.notifyOutgoingListeners(i),this.packet(i)):this.sendBuffer.push(i)),this.flags={},this}_registerAckCallback(e,t){var n;const r=null!==(n=this.flags.timeout)&&void 0!==n?n:this._opts.ackTimeout;if(void 0===r)return void(this.acks[e]=t);const o=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))},r),i=(...e)=>{this.io.clearTimeoutFn(o),t.apply(this,e)};i.withError=!0,this.acks[e]=i}emitWithAck(e,...t){return new Promise((n,r)=>{const o=(e,t)=>e?r(e):n(t);o.withError=!0,t.push(o),this.emit(e,...t)})}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((e,...r)=>{this._queue[0];return null!==e?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...r)),n.pending=!1,this._drainQueue()}),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Lt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(t=>String(t.id)===e)){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Lt.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Lt.EVENT:case Lt.BINARY_EVENT:this.onevent(e);break;case Lt.ACK:case Lt.BINARY_ACK:this.onack(e);break;case Lt.DISCONNECT:this.ondisconnect();break;case Lt.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let n=!1;return function(...r){n||(n=!0,t.packet({type:Lt.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Lt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const n of t)n.apply(this,e.data)}}}function Ht(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Ht.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this.max)},Ht.prototype.reset=function(){this.attempts=0},Ht.prototype.setMin=function(e){this.ms=e},Ht.prototype.setMax=function(e){this.max=e},Ht.prototype.setJitter=function(e){this.jitter=e};class qt extends He{constructor(e,t){var n;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Ge(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(n=t.randomizationFactor)&&void 0!==n?n:.5),this.backoff=new Ht({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const o=t.parser||r;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new bt(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=$t(t,"open",function(){n.onopen(),e&&e()}),o=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},i=$t(t,"error",o);if(!1!==this._timeout){const e=this._timeout,n=this.setTimeoutFn(()=>{r(),o(new Error("timeout")),t.close()},e);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}return this.subs.push(r),this.subs.push(i),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push($t(e,"ping",this.onping.bind(this)),$t(e,"data",this.ondata.bind(this)),$t(e,"error",this.onerror.bind(this)),$t(e,"close",this.onclose.bind(this)),$t(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){qe(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new Ft(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;n<t.length;n++)this.engine.write(t[n],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var n;this.cleanup(),null===(n=this.engine)||void 0===n||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open(t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()}))},t);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Ut={};function Wt(e,t){"object"==typeof e&&(t=e,e=void 0);const n=function(e,t="",n){let r=e;n=n||"undefined"!=typeof location&&location,null==e&&(e=n.protocol+"//"+n.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==n?n.protocol+"//"+e:"https://"+e),r=ft(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const o=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port+t,r.href=r.protocol+"://"+o+(n&&n.port===r.port?"":":"+r.port),r}(e,(t=t||{}).path||"/socket.io"),r=n.source,o=n.id,i=n.path,s=Ut[o]&&i in Ut[o].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||s?a=new qt(r,t):(Ut[o]||(Ut[o]=new qt(r,t)),a=Ut[o]),n.query&&!t.query&&(t.query=n.queryKey),a.socket(n.path,t)}Object.assign(Wt,{Manager:qt,Socket:Ft,io:Wt,connect:Wt});class Vt{constructor(){this.queue=[],this.STORAGE_KEY="ff_message_queue",this.MAX_QUEUE_SIZE=50,this.MAX_AGE_MS=864e5,this.loadFromStorage(),this.cleanExpiredMessages()}enqueue(e){const t=Object.assign(Object.assign({},e),{timestamp:Date.now()});this.queue.push(t),this.queue.length>this.MAX_QUEUE_SIZE&&this.queue.shift(),this.saveToStorage()}dequeueAll(){const e=[...this.queue];return this.queue=[],this.saveToStorage(),e}peek(){return[...this.queue]}size(){return this.queue.length}clear(){this.queue=[];try{localStorage.removeItem(this.STORAGE_KEY)}catch(e){}}cleanExpiredMessages(){const e=Date.now();this.queue=this.queue.filter(t=>e-t.timestamp<this.MAX_AGE_MS),this.queue.length>0&&this.saveToStorage()}loadFromStorage(){try{const e=localStorage.getItem(this.STORAGE_KEY);e&&(this.queue=JSON.parse(e))}catch(e){this.queue=[]}}saveToStorage(){try{localStorage.setItem(this.STORAGE_KEY,JSON.stringify(this.queue))}catch(e){}}}function Kt(){const e=window.innerWidth,t=navigator.userAgent.toLowerCase(),n=(/android|webos|iphone|ipod|blackberry|iemobile|opera mini/i.test(t),/ipad|android(?!.*mobile)|tablet/i.test(t));return e<768?"mobile":e<1024||n?"tablet":"desktop"}function Gt(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){return"Unknown"}}class Jt{constructor(e,t){this.socketUrl=e,this.auth=t,this.socket=null,this.isConnected=!1,this.listeners=new Map,this.reconnectAttempts=0,this.MAX_RECONNECT_ATTEMPTS=10,this.messageQueue=new Vt,c("SocketClient initialized",{socketUrl:e})}connect(){var e;(null===(e=this.socket)||void 0===e?void 0:e.connected)?l("[WIDGET SOCKET] ⚠️ Socket already connected"):(c("[WIDGET SOCKET] 🚀 Connecting to Socket.io server...",{url:this.socketUrl,auth:this.auth}),this.socket=Wt(this.socketUrl,{auth:this.auth,transports:["websocket","polling"],reconnection:!0,reconnectionDelay:1e3,reconnectionDelayMax:5e3,reconnectionAttempts:this.MAX_RECONNECT_ATTEMPTS,timeout:2e4}),c("[WIDGET SOCKET] 📡 Socket instance created, waiting for connection event..."),this.setupEventHandlers())}setupEventHandlers(){this.socket&&(this.socket.on("connect",()=>{var e;c("Socket.io connected",{id:null===(e=this.socket)||void 0===e?void 0:e.id}),this.isConnected=!0,this.reconnectAttempts=0,this.emit("connection:status",{connected:!0}),this.flushMessageQueue()}),this.socket.on("disconnect",e=>{l("Socket.io disconnected",{reason:e}),this.isConnected=!1,this.emit("connection:status",{connected:!1,reason:e})}),this.socket.on("connect_error",e=>{this.reconnectAttempts++,d("Socket.io connection error",{error:e.message,attempts:this.reconnectAttempts}),this.emit("connection:error",{error:e.message,attempts:this.reconnectAttempts})}),this.socket.on("reconnect_attempt",e=>{c("Socket.io reconnect attempt",{attempt:e}),this.emit("reconnect:attempt",{attempt:e})}),this.socket.on("reconnect_failed",()=>{d("Socket.io reconnection failed"),this.emit("reconnect:failed",{})}),this.socket.on("message:new",e=>{c("[WIDGET] ✅ Received message:new event",e),this.emit("message:new",e)}),this.socket.on("message:acked",e=>{a("Received message:acked",e),this.emit("message:acked",e)}),this.socket.on("message:status",e=>{a("Received message:status",e),this.emit("message:status",e)}),this.socket.on("message:read",e=>{a("Received message:read",e),this.emit("message:read",e)}),this.socket.on("message:error",e=>{d("Received message:error",e),this.emit("message:error",e)}),this.socket.on("room:joined",e=>{c("[WIDGET] ✅ Room joined successfully",e),this.emit("room:joined",e)}),this.socket.on("room:error",e=>{d("[WIDGET] ❌ Room join error",e),this.emit("room:error",e)}),this.socket.on("user:joined",e=>{a("User joined",e),this.emit("user:joined",e)}),this.socket.on("user:left",e=>{a("User left",e),this.emit("user:left",e)}),this.socket.on("typing:start",e=>{a("Typing started",e),this.emit("typing:start",e)}),this.socket.on("typing:stop",e=>{a("Typing stopped",e),this.emit("typing:stop",e)}),this.socket.on("admin:online",e=>{c("Admin came online",e),this.emit("admin:online",e)}),this.socket.on("admin:offline",e=>{c("Admin went offline",e),this.emit("admin:offline",e)}))}joinRoom(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.connected)?(c("[WIDGET] 🚀 Emitting chat:join",{conversationId:e,socketId:this.socket.id}),this.socket.emit("chat:join",{conversationId:e})):l("[WIDGET] ⚠️ Cannot join room - socket not connected",{conversationId:e,socketExists:!!this.socket})}leaveRoom(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.connected)&&(c("Leaving room",{conversationId:e}),this.socket.emit("chat:leave",{conversationId:e}))}sendMessage(e,t,n){const r={pageUrl:window.location.href,referrer:document.referrer||"Direct",userAgent:navigator.userAgent,deviceType:Kt(),screenResolution:`${window.screen.width}x${window.screen.height}`,timezone:Gt()};c("[WIDGET] 📍 Captured browser context:",r);const o={conversationId:e,content:t,tempId:n,context:{pageUrl:r.pageUrl,referrer:r.referrer,userAgent:r.userAgent,deviceType:r.deviceType,screenResolution:r.screenResolution,timezone:r.timezone}};this.isConnected&&this.socket?(c("[WIDGET] 📤 Sending message with context to server"),this.socket.emit("message:send",o)):(c("[WIDGET] 📥 Queueing message (offline)",{tempId:n,isConnected:this.isConnected}),this.messageQueue.enqueue(o),this.emit("message:queued",{tempId:n}))}sendTyping(e,t){var n;if(!(null===(n=this.socket)||void 0===n?void 0:n.connected))return;const r=t?"typing:start":"typing:stop";this.socket.emit(r,{conversationId:e})}markDelivered(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.connected)&&this.socket.emit("message:delivered",{messageId:e})}markRead(e,t){var n;(null===(n=this.socket)||void 0===n?void 0:n.connected)&&this.socket.emit("message:read",{conversationId:e,messageIds:t})}flushMessageQueue(){const e=this.messageQueue.size();if(0===e)return;c("Flushing message queue",{count:e});this.messageQueue.dequeueAll().forEach(e=>{this.socket&&(this.socket.emit("message:send",e),this.emit("message:sent-from-queue",{tempId:e.tempId}))})}on(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}off(e,t){if(!t)return void this.listeners.delete(e);const n=this.listeners.get(e);if(n){const r=n.filter(e=>e!==t);r.length>0?this.listeners.set(e,r):this.listeners.delete(e)}}emit(e,t){(this.listeners.get(e)||[]).forEach(n=>{try{n(t)}catch(t){d("Error in event callback",{event:e,error:t})}})}isSocketConnected(){return this.isConnected}getQueueSize(){return this.messageQueue.size()}disconnect(){var e;c("Disconnecting socket"),null===(e=this.socket)||void 0===e||e.disconnect(),this.isConnected=!1}destroy(){c("Destroying socket client"),this.disconnect(),this.listeners.clear(),this.messageQueue.clear(),this.socket=null}}class Yt{constructor(e,t,n){this.apiUrl=e,this.apiKey=t,this.devDomain=n}async getOrCreateConversation(e,t){try{c("Getting or creating conversation",{projectId:e,userIdentifier:t});const n=await fetch(`${this.apiUrl}/api/conversations`,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":this.apiKey},body:JSON.stringify({projectId:e,userIdentifier:t})});if(!n.ok)throw new Error(`Failed to get/create conversation: ${n.statusText}`);const r=await n.json();return c("Conversation ready",{conversationId:r.id}),r}catch(e){throw d("Failed to get/create conversation",e),e}}async updateConversationMetadata(e,t){try{c("Updating conversation metadata",{conversationId:e,userId:t.id});const n={};Object.keys(t).forEach(e=>{["id","email","name"].includes(e)||(n[e]=t[e])});const r=await fetch(`${this.apiUrl}/api/conversations/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json","X-API-Key":this.apiKey},body:JSON.stringify({userEmail:t.email,userName:t.name,userMetadata:Object.keys(n).length>0?JSON.stringify(n):void 0})});if(!r.ok)throw new Error(`Failed to update conversation metadata: ${r.statusText}`);c("Conversation metadata updated successfully")}catch(e){throw d("Failed to update conversation metadata",e),e}}async fetchMessages(e,t=50,n=0){try{a("Fetching messages",{conversationId:e,limit:t,offset:n});const r=new URL(`${this.apiUrl}/api/conversations/${e}/messages`);r.searchParams.append("limit",t.toString()),r.searchParams.append("offset",n.toString());const o=await fetch(r.toString(),{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!o.ok)throw new Error(`Failed to fetch messages: ${o.statusText}`);const i=await o.json();return a("Messages fetched",{count:(null==i?void 0:i.length)||0}),{messages:Array.isArray(i)?i:[],hasMore:!1}}catch(e){throw d("Failed to fetch messages",e),e}}async fetchPendingMessages(e,t){var n;try{a("Fetching pending messages",{conversationId:e,lastMessageId:t});const r=new URL(`${this.apiUrl}/api/chat/conversations/${e}/messages/pending`);r.searchParams.append("lastMessageId",t.toString());const o=await fetch(r.toString(),{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!o.ok)throw new Error(`Failed to fetch pending messages: ${o.statusText}`);const i=await o.json();return a("Pending messages fetched",{count:(null===(n=i.messages)||void 0===n?void 0:n.length)||0}),i.messages||[]}catch(e){return d("Failed to fetch pending messages",e),[]}}async getProjectInfo(){const e=await fetch(`${this.apiUrl}/api/projects`,{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!e.ok)throw new Error(`Failed to get project info: ${e.statusText}`);const t=await e.json();if(!t.projects||!Array.isArray(t.projects)||0===t.projects.length)throw new Error("No projects found for this API key");const n=this.devDomain||window.location.hostname,r=t.projects.find(e=>e.domain===n);if(!r)throw d("No project found matching domain",{currentDomain:n}),new Error(`No project found for domain: ${n}`);return{id:r.id,name:r.name}}async getAdminPresence(e){try{a("Fetching admin presence",{projectId:e});const t=new URL(`${this.apiUrl}/api/chat/admin-presence`);t.searchParams.append("projectId",e.toString());const n=await fetch(t.toString(),{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!n.ok)throw new Error(`Failed to fetch admin presence: ${n.statusText}`);const r=await n.json();return a("Admin presence fetched",{isOnline:r.isOnline}),{isOnline:r.isOnline}}catch(e){return d("Failed to fetch admin presence",e),{isOnline:!1}}}}class Xt{constructor(e,t){this.chatService=e,this.socketClient=t,this.conversation=null,this.currentUserIdentifier=null}waitForConnection(){return new Promise((e,t)=>{c("[CONVERSATION SERVICE] ⏳ Waiting for socket connection...");let n=0;const r=setTimeout(()=>{d("[CONVERSATION SERVICE] ❌ Socket connection timeout after 10 seconds"),t(new Error("Socket connection timeout"))},1e4),o=()=>{n++;const t=this.socketClient.isSocketConnected();n%10==0&&c(`[CONVERSATION SERVICE] Still waiting... (${100*n}ms, connected: ${t})`),t?(clearTimeout(r),c(`[CONVERSATION SERVICE] ✅ Socket connected after ${100*n}ms, proceeding to join room`),e()):setTimeout(o,100)};o()})}async initializeConversation(e,t){try{return c("Initializing conversation",{projectId:e,userIdentifier:t}),this.currentUserIdentifier=t,this.conversation=await this.chatService.getOrCreateConversation(e,t),this.socketClient.connect(),await this.waitForConnection(),this.socketClient.joinRoom(this.conversation.id),c("Conversation initialized",{conversationId:this.conversation.id}),this.conversation}catch(e){throw d("Failed to initialize conversation",e),e}}async loadMessageHistory(e=50,t=0){if(!this.conversation)throw new Error("Conversation not initialized");try{const n=await this.chatService.fetchMessages(this.conversation.id,e,t);return n.messages.map(e=>({id:e.id,content:e.content,senderType:e.senderType,createdAt:new Date(e.createdAt),deliveryStatus:e.deliveryStatus}))}catch(e){return d("Failed to load message history",e),[]}}sendMessage(e){if(!this.conversation)throw new Error("Conversation not initialized");const t=`temp-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;return this.socketClient.sendMessage(this.conversation.id,e,t),t}sendTyping(e){this.conversation&&this.socketClient.sendTyping(this.conversation.id,e)}markMessagesAsRead(e){this.conversation&&0!==e.length&&this.socketClient.markRead(this.conversation.id,e)}getConversation(){return this.conversation}getConversationId(){var e;return(null===(e=this.conversation)||void 0===e?void 0:e.id)||null}getUserIdentifier(){return this.currentUserIdentifier}isInitialized(){return null!==this.conversation}destroy(){this.conversation&&this.socketClient.leaveRoom(this.conversation.id),this.conversation=null,this.currentUserIdentifier=null}}class Qt{constructor(e,t,n){this.apiKey=e,this.apiUrl=t,this.config=n,this.mainPanel=null,this.socketClient=null,this.conversationService=null,this.projectId=null,this.isInitialized=!1,this.currentPresenceStatus=null,this.userIdentifier=m(),c("ChatManager initialized",{userIdentifier:this.userIdentifier}),this.chatService=new Yt(this.apiUrl,this.apiKey,this.config.devDomain)}setMainPanel(e){this.mainPanel=e,this.setupEventHandlers(),this.isInitialized&&(c("Reloading messages into new MainPanel"),this.loadMessageHistory(),null!==this.currentPresenceStatus&&(c("Restoring presence state",{status:this.currentPresenceStatus}),"online"===this.currentPresenceStatus?this.mainPanel.setPresenceOnline():this.mainPanel.setPresenceOffline()))}async initialize(){var e,t,n;if(this.isInitialized)l("Chat already initialized");else try{c("Initializing chat...");const r=await this.chatService.getProjectInfo();this.projectId=r.id;const i=o?"http://localhost:3002":"https://feedbackfunsocket-server-production.up.railway.app";this.socketClient=new Jt(i,{apiKey:this.apiKey,projectId:this.projectId,userIdentifier:this.userIdentifier}),this.conversationService=new Xt(this.chatService,this.socketClient),this.setupSocketEventHandlers(),a(r),await this.conversationService.initializeConversation(this.projectId,this.userIdentifier),await this.loadMessageHistory();try{const{isOnline:n}=await this.chatService.getAdminPresence(this.projectId);this.currentPresenceStatus=n?"online":"offline",n?null===(e=this.mainPanel)||void 0===e||e.setPresenceOnline():null===(t=this.mainPanel)||void 0===t||t.setPresenceOffline()}catch(e){d("Failed to fetch admin presence",e),this.currentPresenceStatus="offline",null===(n=this.mainPanel)||void 0===n||n.setPresenceOffline()}this.isInitialized=!0,c("Chat initialized successfully")}catch(e){throw d("Failed to initialize chat",e),e}}async updateConversationMetadata(e){if(this.conversationService)try{const t=this.conversationService.conversation;if(!t)return void l("Cannot update metadata - no active conversation");await this.chatService.updateConversationMetadata(t.id,e),c("Conversation metadata updated via ChatManager")}catch(e){throw d("Failed to update conversation metadata via ChatManager",e),e}else l("Cannot update metadata - conversation not initialized")}setupEventHandlers(){if(!this.mainPanel)return;const e=this.mainPanel.getMessageInput();e.onSend(e=>{this.sendMessage(e)}),e.onTyping(e=>{this.conversationService&&this.conversationService.sendTyping(e)})}setupSocketEventHandlers(){this.socketClient&&this.mainPanel&&(this.socketClient.on("connection:status",e=>{this.mainPanel&&(e.connected?(this.mainPanel.hideOfflineBanner(),c("Socket connected")):(this.mainPanel.showOfflineBanner(),l("Socket disconnected")))}),this.socketClient.on("message:new",e=>{if(!this.mainPanel)return;c("[WIDGET CHAT MANAGER] 📨 Received message:new event",e);const t=this.mainPanel.getMessageList(),n=t.getMessages();if(n.some(t=>t.id===e.id))return void c("[WIDGET CHAT MANAGER] ⏭️ Message already exists (by ID), skipping",{id:e.id});const r=n.findIndex(t=>t.tempId&&t.content===e.content&&t.senderType===e.senderType&&new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()<5e3);if(-1!==r)return c("[WIDGET CHAT MANAGER] 🔄 Replacing optimistic message with real message",{tempId:n[r].tempId,realId:e.id}),t.updateMessageId(n[r].tempId,e.id),t.updateMessageStatus(e.id,"delivered"),void(this.socketClient&&this.socketClient.markDelivered(e.id));const o={id:e.id,content:e.content,senderType:e.senderType,createdAt:new Date(e.createdAt),deliveryStatus:"delivered"};c("[WIDGET CHAT MANAGER] 📝 Adding new message to UI",o),t.addMessage(o),"messages"!==this.mainPanel.getCurrentView()&&e.senderType,this.socketClient&&this.socketClient.markDelivered(e.id),c("[WIDGET CHAT MANAGER] ✅ Message processed successfully",{id:e.id})}),this.socketClient.on("message:acked",e=>{this.mainPanel&&(e.tempId&&this.mainPanel.getMessageList().updateMessageId(e.tempId,e.messageId),a("Message acknowledged",e))}),this.socketClient.on("message:status",e=>{this.mainPanel&&(this.mainPanel.getMessageList().updateMessageStatus(e.messageId,e.status),a("Message status updated",e))}),this.socketClient.on("typing:start",e=>{this.mainPanel&&(c("[WIDGET CHAT MANAGER] ⌨️ Typing started",e),this.mainPanel.showTyping(e.userType))}),this.socketClient.on("typing:stop",e=>{this.mainPanel&&(c("[WIDGET CHAT MANAGER] ⌨️ Typing stopped",e),this.mainPanel.hideTyping())}),this.socketClient.on("admin:online",()=>{c("[WIDGET CHAT MANAGER] 🟢 Admin came online"),this.currentPresenceStatus="online",this.mainPanel&&this.mainPanel.setPresenceOnline()}),this.socketClient.on("admin:offline",()=>{c("[WIDGET CHAT MANAGER] 🔴 Admin went offline"),this.currentPresenceStatus="offline",this.mainPanel&&this.mainPanel.setPresenceOffline()}),this.socketClient.on("room:joined",e=>{c("Room joined",e)}),this.socketClient.on("room:error",e=>{d("Room error",e)}),this.socketClient.on("message:error",e=>{d("Message error",e)}))}async loadMessageHistory(){if(this.conversationService&&this.mainPanel)try{const e=await this.conversationService.loadMessageHistory();e.forEach(e=>{var t;null===(t=this.mainPanel)||void 0===t||t.getMessageList().addMessage(e)}),c("Message history loaded",{count:e.length})}catch(e){d("Failed to load message history",e)}}sendMessage(e){if(!this.conversationService||!this.mainPanel)return void d("Cannot send message - conversation not initialized");const t=this.conversationService.sendMessage(e),n={id:0,content:e,senderType:"widget_user",createdAt:new Date,deliveryStatus:"sent",tempId:t};this.mainPanel.getMessageList().addMessage(n),a("Message sent (optimistic)",{tempId:t})}destroy(){this.socketClient&&this.socketClient.destroy(),this.conversationService&&this.conversationService.destroy(),c("Chat manager destroyed")}}class Zt{constructor(e,t="https://feedbackfun.com",n={}){this.isCommentMode=!1,this.planStatus="unknown",this.selectedTab="feature",this.displayMode="popover",this.clickHandler=null,this.customTriggerHandler=null,this.lastClickedTrigger=null,this.escKeyHandler=null,this.popover=null,this.commentBox=null,this.roadmapDialog=null,this.mainPanel=null,this.chatManager=null,this.apiKey=e,this.apiUrl=t,this.config=n,this.userConfig=n.user;try{(0,we.initSentry)()}catch(e){}this.shadowDomManager=new p,this.screenshotCapture=new ye,this.roadmapCache=y.getInstance(),this.toggleButton=new h(()=>this.toggleMainPanel(),this.shadowDomManager),o&&setTimeout(()=>{var e;null===(e=this.toggleButton.getElement())||void 0===e||e.click()},1e3),this.init()}openChat(){this.chatManager?this.chatManager.isInitialized||this.chatManager.initialize().catch(e=>{d("Failed to initialize chat",e)}):d("Chat manager not initialized")}getProjectDomain(){return function(e){if(e)return e;try{return new URL(window.location.href).hostname}catch(e){return d("Error extracting domain:",e),window.location.hostname||"localhost"}}(this.config.devDomain)}init(){m(this.userConfig),this.config.triggerSelector||this.toggleButton.create(this.shadowDomManager.getWidgetContainer()),this.applyUserTheme(),this.config.triggerSelector&&this.setupCustomTriggers(),this.initializeChat(),this.checkPlanStatusAndShowBranding(),this.preloadRoadmapData()}initializeChat(){try{c("Initializing chat feature"),this.chatManager=new Qt(this.apiKey,this.apiUrl,this.config),c("Chat manager created successfully")}catch(e){d("Failed to initialize chat",e)}}enableCommentMode(){this.isCommentMode||(this.isCommentMode=!0,this.addEscKeyHandler(),this.config.triggerSelector||this.toggleButton.updateState(!0),this.showFeedbackForm())}disableCommentMode(){this.isCommentMode&&(this.isCommentMode=!1,this.removeClickListeners(),this.removeExistingCommentBox(),this.removeExistingPopover(),this.removeGlobalCursorHide(),this.removeEscKeyHandler(),this.config.triggerSelector||this.toggleButton.updateState(!1))}toggleCommentMode(){this.isCommentMode?this.disableCommentMode():this.enableCommentMode()}setupCustomTriggers(){this.config.triggerSelector&&(this.customTriggerHandler=e=>{e.preventDefault(),e.stopPropagation();let t=e.target;for(;t&&t!==document.body&&(!t.matches||!t.matches(this.config.triggerSelector));)t=t.parentElement;this.lastClickedTrigger=t,this.toggleCommentMode()},document.addEventListener("click",e=>{let t=e.target;for(;t&&t!==document.body;){if(t.matches&&t.matches(this.config.triggerSelector))return void this.customTriggerHandler(e);t=t.parentElement}}))}addEscKeyHandler(){this.escKeyHandler||(this.escKeyHandler=e=>{"Escape"===e.key&&this.isCommentMode&&(e.preventDefault(),this.disableCommentMode())},document.addEventListener("keydown",this.escKeyHandler))}removeEscKeyHandler(){this.escKeyHandler&&(document.removeEventListener("keydown",this.escKeyHandler),this.escKeyHandler=null)}switchToClickPageMode(){if(this.popover){const e=this.popover.getElement();e&&(e.style.display="none")}this.addClickListeners(),this.applyGlobalCursorHide()}showFeedbackForm(){this.removeExistingPopover();const e=this.lastClickedTrigger||this.toggleButton.getElement();this.popover=new f((e,t,n)=>this.submitFeedbackItem({content:e,type:t,feedbackPrivacy:n}),()=>this.showRoadmapDialog(),()=>this.disableCommentMode(),()=>this.switchToClickPageMode(),e,this.planStatus,this.shadowDomManager,this.config.hideClickMode||!1,this.shadowDomManager.getWidgetContainer());const t=e?this.displayMode:"dialog";this.popover.create(t),this.selectedTab=this.popover.getSelectedTab()}removeExistingPopover(){this.popover&&(this.popover.remove(),this.popover=null)}toggleMainPanel(){this.mainPanel?this.closeMainPanel():this.showMainPanel()}showMainPanel(){this.removeExistingMainPanel(),this.mainPanel=new C(this.config,this.shadowDomManager,{onClose:()=>this.closeMainPanel(),onOpenChat:()=>this.openChat(),onOpenRoadmap:()=>this.showRoadmapDialog(),onSubmitFeedback:(e,t,n,r)=>this.submitFeedbackItem({content:e,type:t,feedbackPrivacy:n,screenshotBase64:r}),onRequestFeature:()=>this.openRequestFeature(),onFetchRoadmapItems:e=>this.fetchRoadmapItems(e),onCaptureScreenshot:()=>this.captureScreenshot(),onCaptureScreenshotWithPosition:()=>this.captureScreenshotWithPosition()}),this.mainPanel.create(),this.chatManager&&(this.chatManager.setMainPanel(this.mainPanel),this.chatManager.isInitialized||this.chatManager.initialize().catch(e=>{d("Failed to initialize chat",e)}))}removeExistingMainPanel(){this.mainPanel&&(this.mainPanel.remove(),this.mainPanel=null)}closeMainPanel(){this.removeExistingMainPanel(),this.toggleButton.updateState(!1)}openRequestFeature(){c("Opening request feature - switch to feedback tab"),this.mainPanel&&this.mainPanel.setView("request-feature")}addClickListeners(){this.clickHandler||(this.clickHandler=e=>{if(this.isCommentMode){const t=e.target;if(t&&(this.isCommentBoxClick(t)||this.isToggleButtonClick(t)||this.isPopoverClick(t)))return;if(t===this.shadowDomManager.getShadowHost())return;e.preventDefault(),e.stopPropagation(),this.handleAnywhereClick(e)}},document.addEventListener("click",this.clickHandler,!0))}removeClickListeners(){this.clickHandler&&(document.removeEventListener("click",this.clickHandler,!0),this.clickHandler=null)}isCommentBoxClick(e){if(!this.commentBox)return!1;const t=this.shadowDomManager.getShadowHost(),n=this.shadowDomManager.getShadowRoot();return!(!n||!t)&&(e===t?null!==this.commentBox.getElement():!!n.contains(e)&&this.commentBox.isClick(e))}isToggleButtonClick(e){const t=this.toggleButton.getElement();if(!t)return!1;if(e===t)return!0;if(t.contains(e))return!0;this.shadowDomManager.getShadowHost();return!1}isPopoverClick(e){if(!this.popover)return!1;const t=this.shadowDomManager.getShadowRoot();return!!t&&(!!t.contains(e)&&this.popover.isClick(e))}handleAnywhereClick(e){const t=e.clientX,n=e.clientY;this.showCommentBox({clickX:t,clickY:n})}showCommentBox(e){this.removeExistingCommentBox(),this.commentBox=new g(({content:e,type:t,feedbackPrivacy:n},r)=>this.submitFeedbackItem({content:e,type:t,feedbackPrivacy:n},r),()=>this.getProjectDomain(),this.selectedTab,this.shadowDomManager,this.shadowDomManager.getWidgetContainer()),this.commentBox.show(e)}removeExistingCommentBox(){this.commentBox&&(this.commentBox.remove(),this.commentBox=null)}async submitFeedbackItem(e,t){const n=Date.now();document.body.classList.add("feedbackfun-loading");try{const n={projectDomain:this.getProjectDomain(),pageUrl:window.location.href,content:e.content,type:e.type,userIdentifier:m(),feedbackPrivacy:e.feedbackPrivacy||"public",screenshotBase64:e.screenshotBase64,screenshotMetadata:e.screenshotMetadata};if(t){c("Capturing screenshot for click-anywhere comment..."),this.removeExistingCommentBox();const e=this.screenshotCapture.createChatBubble(n.content,t),r=await this.screenshotCapture.captureWithTimeout(3e4);e&&e.remove(),r?(n.screenshotBase64=r.screenshot,n.screenshotMetadata=r.metadata,c("Screenshot captured and added to comment data")):(l("Screenshot capture failed or timed out, submitting without screenshot"),document.dispatchEvent(new CustomEvent("basecoat:toast",{detail:{config:{category:"warning",title:"Screenshot Unavailable",description:"Screenshot capture failed, but your feedback will still be submitted.",cancel:{label:"Dismiss"}}}})))}o&&this.config.devDomain&&(n.isDevelopment=!0);const r=fetch(`${this.apiUrl}/api/roadmap`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(n)});t||this.removeExistingPopover();const i=await r;if(!i.ok){const e=await i.json().catch(()=>({error:"Unknown error"}));throw T(),new Error(e.error||"Failed to submit feedback")}{const e=await i.json();if(null==e?void 0:e.roadmapItem){const t={id:e.roadmapItem.id,content:e.roadmapItem.content||n.content,type:e.roadmapItem.type||n.type,status:e.roadmapItem.status||"pending",createdAt:e.roadmapItem.createdAt||(new Date).toISOString(),voteCount:e.roadmapItem.voteCount||0,userIdentifier:e.roadmapItem.userIdentifier||n.userIdentifier,screenshotBase64:n.screenshotBase64,feedbackPrivacy:e.roadmapItem.feedbackPrivacy||n.feedbackPrivacy};this.roadmapCache.addItem(this.getProjectDomain(),t)}this.mainPanel||this.showMainPanel(),this.mainPanel&&this.mainPanel.setView("roadmap"),function(e="public"){const t="admin_only"===e?"Private Feedback Submitted":"Feedback Submitted",n="admin_only"===e?"Your submission is private and visible only to admins.":"Your feedback has been submitted successfully!",r=document.createElement("div");r.style.cssText='\n position: fixed;\n top: 20px;\n right: 20px;\n background: #ffffff;\n color: black;\n padding: 16px 20px;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 999999;\n max-width: 400px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;\n animation: slideIn 0.3s ease-out;\n ',r.innerHTML=`\n <div style="display: flex; align-items: start; gap: 12px;">\n <svg style="width: 20px; height: 20px; flex-shrink: 0; margin-top: 2px;" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>\n </svg>\n <div style="flex: 1;">\n <div style="font-weight: 600; font-size: 14px; margin-bottom: 4px;">${t}</div>\n <div style="font-size: 13px; opacity: 0.95;">${n}</div>\n </div>\n </div>\n `;const o=document.createElement("style");o.textContent="\n @keyframes slideIn {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n @keyframes slideOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(400px);\n opacity: 0;\n }\n }\n ",document.head.appendChild(o),document.body.appendChild(r),setTimeout(()=>{r.style.animation="slideOut 0.3s ease-in",setTimeout(()=>{r.remove(),o.remove()},300)},4e3)}(n.feedbackPrivacy)}}catch(e){throw d("Error submitting feedback:",e),this.roadmapCache.removeItem(this.getProjectDomain(),n),this.mainPanel&&"roadmap"===this.mainPanel.getCurrentView()&&this.mainPanel.setView("roadmap"),T(),e}finally{document.body.classList.remove("feedbackfun-loading"),t&&this.disableCommentMode()}}applyGlobalCursorHide(){const e=document.createElement("style");e.id="feedbackfun-global-cursor-hide";const t=`data:image/svg+xml;base64,${btoa('\n <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">\n <defs>\n <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">\n <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.3)"/>\n </filter>\n </defs>\n \x3c!-- Larger teardrop: rounded rectangle with 3 corners at 50% radius, bottom-left sharp --\x3e\n <path d="M 4 16 \n A 12 12 0 0 1 16 4 \n A 12 12 0 0 1 28 16 \n A 12 12 0 0 1 16 28 \n L 4 28 \n Z" \n fill="#1E90FF" \n filter="url(#shadow)"/>\n </svg>\n ')}`;e.textContent=`\n /* Apply custom teardrop cursor everywhere during comment mode, except loading state */\n body:not(.feedbackfun-loading), \n body:not(.feedbackfun-loading) * {\n cursor: url("${t}") 4 28, auto !important;\n }\n \n /* Normal cursor for inputs and text areas */\n body input,\n body textarea,\n body [contenteditable] {\n cursor: text !important;\n }\n \n /* Pointer cursor for buttons and interactive elements */\n body button,\n body a,\n body [role="button"],\n body [onclick] {\n cursor: pointer !important;\n }\n `,this.shadowDomManager.appendCSS('\n /* Widget elements inside shadow DOM use normal cursors */\n .feedbackfun-toggle-button,\n button[title*="Exit feedback mode"],\n .feedbackfun-popover *,\n .feedbackfun-dialog *,\n .feedbackfun-comment-box * {\n cursor: auto !important;\n }\n\n /* Pointer cursor for interactive widget elements */\n .feedbackfun-toggle-button,\n button[title*="Exit feedback mode"],\n .feedbackfun-tab,\n .feedbackfun-submit-btn,\n .feedbackfun-popover-submit-btn,\n .feedbackfun-roadmap-btn,\n .feedbackfun-click-page-btn,\n .feedbackfun-popover-close,\n .feedbackfun-upvote-button,\n .feedbackfun-roadmap-close {\n cursor: pointer !important;\n }\n \n /* Text cursor for input fields */\n .feedbackfun-popover-content-input,\n .feedbackfun-comment-content-input {\n cursor: text !important;\n }\n \n /* Disabled state cursor */\n .feedbackfun-submit-btn:disabled,\n .feedbackfun-popover-submit-btn:disabled {\n cursor: not-allowed !important;\n }\n '),document.head.appendChild(e)}removeGlobalCursorHide(){const e=document.getElementById("feedbackfun-global-cursor-hide");e&&e.remove()}async checkPlanStatusAndShowBranding(){try{const e=await fetch(`${this.apiUrl}/api/plan-status`,{method:"GET",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}});if(e.ok){const t=await e.json();this.planStatus=t.isPaid&&t.isActive?"paid":"free"}else this.planStatus="free"}catch(e){d("Error checking plan status:",e),this.planStatus="free"}this.updateBrandingVisibility()}updateBrandingVisibility(){this.popover&&(this.removeExistingPopover(),this.showFeedbackForm())}showRoadmapDialog(){this.removeExistingRoadmapDialog(),this.roadmapDialog=new b(this.apiUrl,this.apiKey,()=>this.getProjectDomain(),()=>this.removeExistingRoadmapDialog(),this.shadowDomManager),this.roadmapDialog.create(),this.isCommentMode&&this.disableCommentMode()}removeExistingRoadmapDialog(){this.roadmapDialog&&(this.roadmapDialog.remove(),this.roadmapDialog=null)}applyUserTheme(){const e=this.shadowDomManager.getShadowRoot();if(!(e&&e.host instanceof HTMLElement))return;const t=e.host,n=be();"dark"===n.theme?t.classList.add("dark"):t.classList.remove("dark"),"dark"===n.theme?(this.config.darkPrimary&&t.style.setProperty("--primary",this.config.darkPrimary),this.config.darkPrimaryForeground&&t.style.setProperty("--primary-foreground",this.config.darkPrimaryForeground)):(this.config.primaryColor&&t.style.setProperty("--primary",this.config.primaryColor),this.config.primaryForeground&&t.style.setProperty("--primary-foreground",this.config.primaryForeground)),this.setupThemeChangeMonitoring()}setupThemeChangeMonitoring(){new MutationObserver(()=>{const e=this.shadowDomManager.getShadowRoot();if(!(e&&e.host instanceof HTMLElement))return;const t=be(),n=e.host;"dark"===t.theme?(n.classList.add("dark"),this.config.darkPrimary&&n.style.setProperty("--primary",this.config.darkPrimary),this.config.darkPrimaryForeground&&n.style.setProperty("--primary-foreground",this.config.darkPrimaryForeground)):(n.classList.remove("dark"),this.config.primaryColor&&n.style.setProperty("--primary",this.config.primaryColor),this.config.primaryForeground&&n.style.setProperty("--primary-foreground",this.config.primaryForeground))}).observe(document.documentElement,{attributes:!0});window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{const e=this.shadowDomManager.getShadowRoot();if(!(e&&e.host instanceof HTMLElement))return;const t=be(),n=e.host;"dark"===t.theme?(n.classList.add("dark"),this.config.darkPrimary&&n.style.setProperty("--primary",this.config.darkPrimary),this.config.darkPrimaryForeground&&n.style.setProperty("--primary-foreground",this.config.darkPrimaryForeground)):(n.classList.remove("dark"),this.config.primaryColor&&n.style.setProperty("--primary",this.config.primaryColor),this.config.primaryForeground&&n.style.setProperty("--primary-foreground",this.config.primaryForeground))})}setPrimaryColor(e){"dark"===be().theme?this.config.darkPrimary=e:this.config.primaryColor=e;const t=this.shadowDomManager.getShadowRoot();t&&t.host instanceof HTMLElement&&t.host.style.setProperty("--primary",e)}setPrimaryForeground(e){"dark"===be().theme?this.config.darkPrimaryForeground=e:this.config.primaryForeground=e;const t=this.shadowDomManager.getShadowRoot();t&&t.host instanceof HTMLElement&&t.host.style.setProperty("--primary-foreground",e)}setDisplayMode(e){this.displayMode=e}getDisplayMode(){return this.displayMode}async captureScreenshot(){try{await new Promise(e=>setTimeout(e,100));const e=await this.screenshotCapture.captureWithTimeout(3e4);return this.mainPanel&&this.mainPanel.show(),e?e.screenshot:null}catch(e){return d("Error capturing screenshot:",e),this.mainPanel&&this.mainPanel.show(),null}}async captureScreenshotWithPosition(){try{await new Promise(e=>setTimeout(e,100));const e=document.createElement("div");e.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 999999;\n cursor: crosshair;\n ";const t='\n <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" style="pointer-events: none;">\n <defs>\n <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">\n <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.3)"/>\n </filter>\n </defs>\n <path d="M 4 16 A 12 12 0 0 1 16 4 A 12 12 0 0 1 28 16 A 12 12 0 0 1 16 28 L 4 28 Z"\n fill="#1E90FF" filter="url(#shadow)"/>\n </svg>\n ',n=document.createElement("div");n.style.cssText="\n position: fixed;\n width: 32px;\n height: 32px;\n pointer-events: none;\n z-index: 1000000;\n display: none;\n ",n.innerHTML=t,document.body.appendChild(e),document.body.appendChild(n);const r=e=>{n.style.left=e.clientX-4+"px",n.style.top=e.clientY-28+"px",n.style.display="block"};e.addEventListener("mousemove",r);const o=await new Promise(t=>{e.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),t({x:e.clientX,y:e.clientY})},{once:!0})});e.remove(),n.remove();const i=this.screenshotCapture.createChatBubble("",o);await new Promise(e=>setTimeout(e,100));const s=await this.screenshotCapture.captureWithTimeout(3e4);return i.remove(),this.mainPanel&&this.mainPanel.show(),s?s.screenshot:null}catch(e){return d("Error capturing screenshot with position:",e),this.mainPanel&&this.mainPanel.show(),null}}async fetchRoadmapItems(e){try{const t=await fetch(`${this.apiUrl}/api/roadmap?projectDomain=${encodeURIComponent(this.getProjectDomain())}&status=${e}`,{method:"GET",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}});if(t.ok){const e=await t.json(),n=e.items||e.roadmapItems||e||[];return Array.isArray(n)?n:[]}return d("Failed to fetch roadmap items:",t.status,t.statusText),[]}catch(e){return d("Error fetching roadmap items:",e),[]}}async preloadRoadmapData(){try{const e=this.roadmapCache.get(this.getProjectDomain());if(e&&e.length>0)return void c("Roadmap data already cached, skipping preload");const t=await fetch(`${this.apiUrl}/api/roadmap?projectDomain=${encodeURIComponent(this.getProjectDomain())}`,{method:"GET",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}});if(t.ok){const e=await t.json(),n=e.items||e.roadmapItems||e||[],r=Array.isArray(n)?n:[];this.roadmapCache.set(this.getProjectDomain(),r),c(`Preloaded ${r.length} roadmap items into cache`)}else l("Failed to preload roadmap data:",t.status,t.statusText)}catch(e){l("Background roadmap preload failed:",e)}}setUserInfo(e){c("Setting user info",{userId:e.id}),this.userConfig=e,m(e),this.chatManager&&this.chatManager.updateConversationMetadata(e).catch(e=>{d("Failed to update conversation metadata",e)})}clearUserInfo(){c("Clearing user info"),this.userConfig=void 0,localStorage.removeItem("feedbackfun-user-id"),localStorage.removeItem("feedbackfun-user-info"),c("User data cleared"),m()}destroy(){this.chatManager&&(this.chatManager.destroy(),this.chatManager=null),this.shadowDomManager.destroy(),this.toggleButton.remove(),this.removeExistingPopover(),this.removeExistingCommentBox(),this.removeExistingRoadmapDialog(),this.removeExistingMainPanel(),this.removeClickListeners(),this.removeGlobalCursorHide(),this.removeEscKeyHandler()}}let en=null;const tn={init:async function(e){en&&(en.destroy(),en=null);const{apiKey:t,projectId:n}=e,r=o?"http://localhost:3000":"https://feedbackfun.com";let i={};const s=await async function(e,t,n){try{const r=await fetch(`${e}/api/widget-config/${n}`,{method:"GET",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"}});return r.ok?(await r.json()).config:(l("Failed to fetch widget config:",r.status,r.statusText),null)}catch(e){return l("Error fetching widget config:",e),null}}(r,t,n);return s&&(i=function(e){var t;return{primaryColor:e.primaryColor,primaryForeground:e.primaryForegroundColor,darkPrimary:e.darkPrimaryColor,darkPrimaryForeground:e.darkPrimaryForegroundColor,displayMode:e.displayMode,triggerSelector:e.triggerSelector||void 0,hideClickMode:e.hideClickMode,hidePoweredBy:e.hidePoweredBy,adminAvatars:(null===(t=e.adminAvatars)||void 0===t?void 0:t.map(e=>e.url))||[],adminPresence:e.adminPresence,enableDevMode:e.enableDevMode,devDomain:o?e.projectDomain:void 0}}(s)),en=new Zt(t,r,i),en},getInstance:function(){return en},destroy:function(){en&&(en.destroy(),en=null)},setPrimaryColor:function(e){en&&en.setPrimaryColor(e)},setPrimaryForeground:function(e){en&&en.setPrimaryForeground(e)},setUserInfo:function(e){en&&en.setUserInfo(e)},clearUserInfo:function(){en&&en.clearUserInfo()}};export{tn as default};
|
|
1
|
+
var e={725(e,t,n){n.d(t,{Sentry:()=>i,initSentry:()=>rw}),n.r(t);var r={};n.r(r),n.d(r,{debug:()=>fs,error:()=>vs,fatal:()=>ys,fmt:()=>Go,info:()=>gs,trace:()=>hs,warn:()=>ms});var o={};n.r(o),n.d(o,{count:()=>Ss,distribution:()=>Es,gauge:()=>Cs});var i={};n.r(i),n.d(i,{BrowserClient:()=>nu,MULTIPLEXED_TRANSPORT_EXTRA_KEY:()=>Bo,OpenFeatureIntegrationHook:()=>Gb,SDK_VERSION:()=>c,SEMANTIC_ATTRIBUTE_SENTRY_OP:()=>ot,SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN:()=>it,SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE:()=>nt,SEMANTIC_ATTRIBUTE_SENTRY_SOURCE:()=>tt,Scope:()=>Fe,WINDOW:()=>Pd,addBreadcrumb:()=>Qo,addEventProcessor:()=>Or,addIntegration:()=>Wr,breadcrumbsIntegration:()=>bh,browserApiErrorsIntegration:()=>xh,browserProfilingIntegration:()=>Ub,browserSessionIntegration:()=>Ch,browserTracingIntegration:()=>nb,buildLaunchDarklyFlagUsedHandler:()=>Vb,captureConsoleIntegration:()=>wi,captureEvent:()=>kr,captureException:()=>wr,captureFeedback:()=>us,captureMessage:()=>xr,captureSession:()=>jr,chromeStackLineParser:()=>oh,close:()=>Rr,consoleLoggingIntegration:()=>ks,contextLinesIntegration:()=>Xh,continueTrace:()=>Wn,createConsolaReporter:()=>Ms,createLangChainCallbackHandler:()=>Mc,createTransport:()=>fo,createUserFeedbackEnvelope:()=>vh,dedupeIntegration:()=>xi,defaultRequestInstrumentationOptions:()=>Gy,defaultStackLineParsers:()=>fh,defaultStackParser:()=>gh,diagnoseSdkConnectivity:()=>Zb,endSession:()=>Nr,eventFiltersIntegration:()=>ri,eventFromException:()=>Xd,eventFromMessage:()=>Qd,exceptionFromError:()=>qd,extraErrorDataIntegration:()=>Ci,featureFlagsIntegration:()=>os,feedbackAsyncIntegration:()=>Fd,feedbackIntegration:()=>Hd,feedbackSyncIntegration:()=>Hd,flush:()=>Ar,forceLoad:()=>Bh,functionToStringIntegration:()=>ti,geckoStackLineParser:()=>ah,getActiveSpan:()=>en,getClient:()=>Ze,getCurrentScope:()=>Ge,getDefaultIntegrations:()=>Dh,getFeedback:()=>cl,getGlobalScope:()=>Ye,getIsolationScope:()=>Je,getReplay:()=>py,getRootSpan:()=>Zt,getSpanDescendants:()=>Qt,getSpanStatusFromHttpCode:()=>gt,getTraceData:()=>Yo,globalHandlersIntegration:()=>Eh,graphqlClientIntegration:()=>of,growthbookIntegration:()=>Xb,httpClientIntegration:()=>qh,httpContextIntegration:()=>Rh,inboundFiltersIntegration:()=>oi,init:()=>Nh,instrumentAnthropicAiClient:()=>ic,instrumentGoogleGenAIClient:()=>gc,instrumentLangGraph:()=>Oc,instrumentOpenAiClient:()=>Ja,instrumentOutgoingRequests:()=>Jy,instrumentSupabaseClient:()=>qi,isEnabled:()=>Pr,isInitialized:()=>Lr,lastEventId:()=>Ir,launchDarklyIntegration:()=>Wb,lazyLoadIntegration:()=>zd,linkedErrorsIntegration:()=>Lh,logger:()=>r,makeBrowserOfflineTransport:()=>gb,makeFetchTransport:()=>Yp,makeMultiplexedTransport:()=>$o,metrics:()=>o,moduleMetadataIntegration:()=>mi,onLoad:()=>jh,openFeatureIntegration:()=>Kb,opera10StackLineParser:()=>uh,opera11StackLineParser:()=>hh,parameterize:()=>Ko,registerSpanErrorInstrumentation:()=>on,registerWebWorker:()=>nw,replayCanvasIntegration:()=>qy,replayIntegration:()=>ly,reportPageLoaded:()=>db,reportingObserverIntegration:()=>Hh,rewriteFramesIntegration:()=>Li,sendFeedback:()=>Qc,setActiveSpanInBrowser:()=>ub,setContext:()=>_r,setCurrentClient:()=>Oo,setExtra:()=>Cr,setExtras:()=>Sr,setHttpStatus:()=>mt,setMeasurement:()=>Dn,setTag:()=>Tr,setTags:()=>Er,setUser:()=>Mr,showReportDialog:()=>$h,spanToBaggageHeader:()=>vn,spanToJSON:()=>Vt,spanToTraceHeader:()=>Ht,spotlightBrowserIntegration:()=>Ph,startBrowserTracingNavigationSpan:()=>ob,startBrowserTracingPageLoadSpan:()=>rb,startInactiveSpan:()=>Un,startNewTrace:()=>Gn,startSession:()=>Dr,startSpan:()=>Hn,startSpanManual:()=>qn,statsigIntegration:()=>Qb,supabaseIntegration:()=>Ui,suppressTracing:()=>Kn,thirdPartyErrorFilterIntegration:()=>Yi,uiProfiler:()=>Qp,unleashIntegration:()=>Jb,updateSpanName:()=>nn,webWorkerIntegration:()=>ew,winjsStackLineParser:()=>lh,withActiveSpan:()=>Vn,withIsolationScope:()=>Qe,withScope:()=>Xe,zodErrorsIntegration:()=>Ji});const s="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__,a=globalThis,c="10.34.0";function l(){return d(a),a}function d(e){const t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||c,t[c]=t[c]||{}}function u(e,t,n=a){const r=n.__SENTRY__=n.__SENTRY__||{},o=r[c]=r[c]||{};return o[e]||(o[e]=t())}const p=["debug","info","warn","error","log","assert","trace"],h={};function f(e){if(!("console"in a))return e();const t=a.console,n={},r=Object.keys(h);r.forEach(e=>{const r=h[e];n[e]=t[e],t[e]=r});try{return e()}finally{r.forEach(e=>{t[e]=n[e]})}}function g(){return v().enabled}function m(e,...t){s&&g()&&f(()=>{a.console[e](`Sentry Logger [${e}]:`,...t)})}function v(){return s?u("loggerSettings",()=>({enabled:!1})):{enabled:!1}}const y={enable:function(){v().enabled=!0},disable:function(){v().enabled=!1},isEnabled:g,log:function(...e){m("log",...e)},warn:function(...e){m("warn",...e)},error:function(...e){m("error",...e)}},b="?",w=/\(error: (.*)\)/,x=/captureMessage|captureException/;function k(...e){const t=e.sort((e,t)=>e[0]-t[0]).map(e=>e[1]);return(e,n=0,r=0)=>{const o=[],i=e.split("\n");for(let e=n;e<i.length;e++){let n=i[e];n.length>1024&&(n=n.slice(0,1024));const s=w.test(n)?n.replace(w,"$1"):n;if(!s.match(/\S*Error: /)){for(const e of t){const t=e(s);if(t){o.push(t);break}}if(o.length>=50+r)break}}return function(e){if(!e.length)return[];const t=Array.from(e);/sentryWrapped/.test(_(t).function||"")&&t.pop();t.reverse(),x.test(_(t).function||"")&&(t.pop(),x.test(_(t).function||"")&&t.pop());return t.slice(0,50).map(e=>({...e,filename:e.filename||_(t).filename,function:e.function||b}))}(o.slice(r))}}function _(e){return e[e.length-1]||{}}const S="<anonymous>";function C(e){try{return e&&"function"==typeof e&&e.name||S}catch{return S}}function E(e){const t=e.exception;if(t){const e=[];try{return t.values.forEach(t=>{t.stacktrace.frames&&e.push(...t.stacktrace.frames)}),e}catch{return}}}function T(e){return"__v_isVNode"in e&&e.__v_isVNode?"[VueVNode]":"[VueViewModel]"}const M={},I={};function A(e,t){M[e]=M[e]||[],M[e].push(t)}function R(e,t){if(!I[e]){I[e]=!0;try{t()}catch(t){s&&y.error(`Error while instrumenting ${e}`,t)}}}function L(e,t){const n=e&&M[e];if(n)for(const r of n)try{r(t)}catch(t){s&&y.error(`Error while triggering instrumentation handler.\nType: ${e}\nName: ${C(r)}\nError:`,t)}}let P=null;function O(e){const t="error";A(t,e),R(t,D)}function D(){P=a.onerror,a.onerror=function(e,t,n,r,o){return L("error",{column:r,error:o,line:n,msg:e,url:t}),!!P&&P.apply(this,arguments)},a.onerror.__SENTRY_INSTRUMENTED__=!0}let N=null;function B(e){const t="unhandledrejection";A(t,e),R(t,j)}function j(){N=a.onunhandledrejection,a.onunhandledrejection=function(e){return L("unhandledrejection",e),!N||N.apply(this,arguments)},a.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}const $=Object.prototype.toString;function z(e){switch($.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return Y(e,Error)}}function F(e,t){return $.call(e)===`[object ${t}]`}function H(e){return F(e,"ErrorEvent")}function q(e){return F(e,"DOMError")}function U(e){return F(e,"String")}function W(e){return"object"==typeof e&&null!==e&&"__sentry_template_string__"in e&&"__sentry_template_values__"in e}function V(e){return null===e||W(e)||"object"!=typeof e&&"function"!=typeof e}function K(e){return F(e,"Object")}function G(e){return"undefined"!=typeof Event&&Y(e,Event)}function J(e){return Boolean(e?.then&&"function"==typeof e.then)}function Y(e,t){try{return e instanceof t}catch{return!1}}function X(e){return!("object"!=typeof e||null===e||!(e.__isVue||e._isVue||e.__v_isVNode))}function Q(e){return"undefined"!=typeof Request&&Y(e,Request)}const Z=a;function ee(e,t={}){if(!e)return"<unknown>";try{let n=e;const r=5,o=[];let i=0,s=0;const a=" > ",c=a.length;let l;const d=Array.isArray(t)?t:t.keyAttrs,u=!Array.isArray(t)&&t.maxStringLength||80;for(;n&&i++<r&&(l=te(n,d),!("html"===l||i>1&&s+o.length*c+l.length>=u));)o.push(l),s+=l.length,n=n.parentNode;return o.reverse().join(a)}catch{return"<unknown>"}}function te(e,t){const n=e,r=[];if(!n?.tagName)return"";if(Z.HTMLElement&&n instanceof HTMLElement&&n.dataset){if(n.dataset.sentryComponent)return n.dataset.sentryComponent;if(n.dataset.sentryElement)return n.dataset.sentryElement}r.push(n.tagName.toLowerCase());const o=t?.length?t.filter(e=>n.getAttribute(e)).map(e=>[e,n.getAttribute(e)]):null;if(o?.length)o.forEach(e=>{r.push(`[${e[0]}="${e[1]}"]`)});else{n.id&&r.push(`#${n.id}`);const e=n.className;if(e&&U(e)){const t=e.split(/\s+/);for(const e of t)r.push(`.${e}`)}}const i=["aria-label","type","name","title","alt"];for(const e of i){const t=n.getAttribute(e);t&&r.push(`[${e}="${t}"]`)}return r.join("")}function ne(){try{return Z.document.location.href}catch{return""}}function re(e){if(!Z.HTMLElement)return null;let t=e;for(let e=0;e<5;e++){if(!t)return null;if(t instanceof HTMLElement){if(t.dataset.sentryComponent)return t.dataset.sentryComponent;if(t.dataset.sentryElement)return t.dataset.sentryElement}t=t.parentNode}return null}function oe(e,t,n){if(!(t in e))return;const r=e[t];if("function"!=typeof r)return;const o=n(r);"function"==typeof o&&se(o,r);try{e[t]=o}catch{s&&y.log(`Failed to replace method "${t}" in object`,e)}}function ie(e,t,n){try{Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}catch{s&&y.log(`Failed to add non-enumerable property "${t}" to object`,e)}}function se(e,t){try{const n=t.prototype||{};e.prototype=t.prototype=n,ie(e,"__sentry_original__",t)}catch{}}function ae(e){return e.__sentry_original__}function ce(e){if(z(e))return{message:e.message,name:e.name,stack:e.stack,...de(e)};if(G(e)){const t={type:e.type,target:le(e.target),currentTarget:le(e.currentTarget),...de(e)};return"undefined"!=typeof CustomEvent&&Y(e,CustomEvent)&&(t.detail=e.detail),t}return e}function le(e){try{return t=e,"undefined"!=typeof Element&&Y(t,Element)?ee(e):Object.prototype.toString.call(e)}catch{return"<unknown>"}var t}function de(e){if("object"==typeof e&&null!==e){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}return{}}function ue(e){const t=Object.keys(ce(e));return t.sort(),t[0]?t.join(", "):"[object has no keys]"}let pe,he;function fe(e){if(void 0!==pe)return pe?pe(e):e();const t=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),n=a;return t in n&&"function"==typeof n[t]?(pe=n[t],pe(e)):(pe=null,e())}function ge(){return fe(()=>Math.random())}function me(){return fe(()=>Date.now())}function ve(e,t=0){return"string"!=typeof e||0===t||e.length<=t?e:`${e.slice(0,t)}...`}function ye(e,t){let n=e;const r=n.length;if(r<=150)return n;t>r&&(t=r);let o=Math.max(t-60,0);o<5&&(o=0);let i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n=`'{snip} ${n}`),i<r&&(n+=" {snip}"),n}function be(e,t){if(!Array.isArray(e))return"";const n=[];for(let t=0;t<e.length;t++){const r=e[t];try{X(r)?n.push(T(r)):n.push(String(r))}catch{n.push("[value cannot be serialized]")}}return n.join(t)}function we(e,t,n=!1){return!!U(e)&&(F(t,"RegExp")?t.test(e):!!U(t)&&(n?e===t:e.includes(t)))}function xe(e,t=[],n=!1){return t.some(t=>we(e,t,n))}function ke(e=function(){const e=a;return e.crypto||e.msCrypto}()){try{if(e?.randomUUID)return fe(()=>e.randomUUID()).replace(/-/g,"")}catch{}return he||(he=[1e7]+1e3+4e3+8e3+1e11),he.replace(/[018]/g,e=>(e^(16*ge()&15)>>e/4).toString(16))}function _e(e){return e.exception?.values?.[0]}function Se(e){const{message:t,event_id:n}=e;if(t)return t;const r=_e(e);return r?r.type&&r.value?`${r.type}: ${r.value}`:r.type||r.value||n||"<unknown>":n||"<unknown>"}function Ce(e,t,n){const r=e.exception=e.exception||{},o=r.values=r.values||[],i=o[0]=o[0]||{};i.value||(i.value=t||""),i.type||(i.type=n||"Error")}function Ee(e,t){const n=_e(e);if(!n)return;const r=n.mechanism;if(n.mechanism={type:"generic",handled:!0,...r,...t},t&&"data"in t){const e={...r?.data,...t.data};n.mechanism.data=e}}function Te(e){if(function(e){try{return e.__sentry_captured__}catch{}}(e))return!0;try{ie(e,"__sentry_captured__",!0)}catch{}return!1}function Me(){return me()/1e3}let Ie;function Ae(){return(Ie??(Ie=function(){const{performance:e}=a;if(!e?.now||!e.timeOrigin)return Me;const t=e.timeOrigin;return()=>(t+fe(()=>e.now()))/1e3}()))()}let Re=null;function Le(){return null===Re&&(Re=function(){const{performance:e}=a;if(!e?.now)return;const t=3e5,n=fe(()=>e.now()),r=me(),o=e.timeOrigin;if("number"==typeof o&&Math.abs(o+n-r)<t)return o;const i=e.timing?.navigationStart;if("number"==typeof i&&Math.abs(i+n-r)<t)return i;return r-n}()),Re}function Pe(e){const t=Ae(),n={sid:ke(),init:!0,timestamp:t,started:t,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>function(e){return{sid:`${e.sid}`,init:e.init,started:new Date(1e3*e.started).toISOString(),timestamp:new Date(1e3*e.timestamp).toISOString(),status:e.status,errors:e.errors,did:"number"==typeof e.did||"string"==typeof e.did?`${e.did}`:void 0,duration:e.duration,abnormal_mechanism:e.abnormal_mechanism,attrs:{release:e.release,environment:e.environment,ip_address:e.ipAddress,user_agent:e.userAgent}}}(n)};return e&&Oe(n,e),n}function Oe(e,t={}){if(t.user&&(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),e.did||t.did||(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||Ae(),t.abnormal_mechanism&&(e.abnormal_mechanism=t.abnormal_mechanism),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=32===t.sid.length?t.sid:ke()),void 0!==t.init&&(e.init=t.init),!e.did&&t.did&&(e.did=`${t.did}`),"number"==typeof t.started&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if("number"==typeof t.duration)e.duration=t.duration;else{const t=e.timestamp-e.started;e.duration=t>=0?t:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),"number"==typeof t.errors&&(e.errors=t.errors),t.status&&(e.status=t.status)}function De(e,t,n=2){if(!t||"object"!=typeof t||n<=0)return t;if(e&&0===Object.keys(t).length)return e;const r={...e};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=De(r[e],t[e],n-1));return r}function Ne(){return ke()}function Be(){return ke().substring(16)}const je="_sentrySpan";function $e(e,t){t?ie(e,je,t):delete e[je]}function ze(e){return e[je]}class Fe{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:Ne(),sampleRand:ge()}}clone(){const e=new Fe;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._attributes={...this._attributes},e._extra={...this._extra},e._contexts={...this._contexts},this._contexts.flags&&(e._contexts.flags={values:[...this._contexts.flags.values]}),e._user=this._user,e._level=this._level,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e._lastEventId=this._lastEventId,$e(e,ze(this)),e}setClient(e){this._client=e}setLastEventId(e){this._lastEventId=e}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session&&Oe(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this.setTags({[e]:t})}setAttributes(e){return this._attributes={...this._attributes,...e},this._notifyScopeListeners(),this}setAttribute(e,t){return this.setAttributes({[e]:t})}removeAttribute(e){return e in this._attributes&&(delete this._attributes[e],this._notifyScopeListeners()),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return null===t?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t="function"==typeof e?e(this):e,n=t instanceof Fe?t.getScopeData():K(t)?e:void 0,{tags:r,attributes:o,extra:i,user:s,contexts:a,level:c,fingerprint:l=[],propagationContext:d}=n||{};return this._tags={...this._tags,...r},this._attributes={...this._attributes,...o},this._extra={...this._extra,...i},this._contexts={...this._contexts,...a},s&&Object.keys(s).length&&(this._user=s),c&&(this._level=c),l.length&&(this._fingerprint=l),d&&(this._propagationContext=d),this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,$e(this,void 0),this._attachments=[],this.setPropagationContext({traceId:Ne(),sampleRand:ge()}),this._notifyScopeListeners(),this}addBreadcrumb(e,t){const n="number"==typeof t?t:100;if(n<=0)return this;const r={timestamp:Me(),...e,message:e.message?ve(e.message,2048):e.message};return this._breadcrumbs.push(r),this._breadcrumbs.length>n&&(this._breadcrumbs=this._breadcrumbs.slice(-n),this._client?.recordDroppedEvent("buffer_overflow","log_item")),this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:ze(this)}}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata=De(this._sdkProcessingMetadata,e,2),this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const n=t?.event_id||ke();if(!this._client)return s&&y.warn("No client configured on scope - will not capture exception!"),n;const r=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:n},this),n}captureMessage(e,t,n){const r=n?.event_id||ke();if(!this._client)return s&&y.warn("No client configured on scope - will not capture message!"),r;const o=n?.syntheticException??new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:o,...n,event_id:r},this),r}captureEvent(e,t){const n=t?.event_id||ke();return this._client?(this._client.captureEvent(e,{...t,event_id:n},this),n):(s&&y.warn("No client configured on scope - will not capture event!"),n)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(e=>{e(this)}),this._notifyingListeners=!1)}}class He{constructor(e,t){let n,r;n=e||new Fe,r=t||new Fe,this._stack=[{scope:n}],this._isolationScope=r}withScope(e){const t=this._pushScope();let n;try{n=e(t)}catch(e){throw this._popScope(),e}return J(n)?n.then(e=>(this._popScope(),e),e=>{throw this._popScope(),e}):(this._popScope(),n)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){const e=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:e}),e}_popScope(){return!(this._stack.length<=1)&&!!this._stack.pop()}}function qe(){const e=d(l());return e.stack=e.stack||new He(u("defaultCurrentScope",()=>new Fe),u("defaultIsolationScope",()=>new Fe))}function Ue(e){return qe().withScope(e)}function We(e,t){const n=qe();return n.withScope(()=>(n.getStackTop().scope=e,t(e)))}function Ve(e){return qe().withScope(()=>e(qe().getIsolationScope()))}function Ke(e){const t=d(e);return t.acs?t.acs:{withIsolationScope:Ve,withScope:Ue,withSetScope:We,withSetIsolationScope:(e,t)=>Ve(t),getCurrentScope:()=>qe().getScope(),getIsolationScope:()=>qe().getIsolationScope()}}function Ge(){return Ke(l()).getCurrentScope()}function Je(){return Ke(l()).getIsolationScope()}function Ye(){return u("globalScope",()=>new Fe)}function Xe(...e){const t=Ke(l());if(2===e.length){const[n,r]=e;return n?t.withSetScope(n,r):t.withScope(r)}return t.withScope(e[0])}function Qe(...e){const t=Ke(l());if(2===e.length){const[n,r]=e;return n?t.withSetIsolationScope(n,r):t.withIsolationScope(r)}return t.withIsolationScope(e[0])}function Ze(){return Ge().getClient()}function et(e){const t=e.getPropagationContext(),{traceId:n,parentSpanId:r,propagationSpanId:o}=t,i={trace_id:n,span_id:o||Be()};return r&&(i.parent_span_id=r),i}const tt="sentry.source",nt="sentry.sample_rate",rt="sentry.previous_trace_sample_rate",ot="sentry.op",it="sentry.origin",st="sentry.idle_span_finish_reason",at="sentry.measurement_unit",ct="sentry.measurement_value",lt="sentry.custom_span_name",dt="sentry.profile_id",ut="sentry.exclusive_time",pt="http.request.method",ht="url.full",ft="sentry.link.type";function gt(e){if(e<400&&e>=100)return{code:1};if(e>=400&&e<500)switch(e){case 401:return{code:2,message:"unauthenticated"};case 403:return{code:2,message:"permission_denied"};case 404:return{code:2,message:"not_found"};case 409:return{code:2,message:"already_exists"};case 413:return{code:2,message:"failed_precondition"};case 429:return{code:2,message:"resource_exhausted"};case 499:return{code:2,message:"cancelled"};default:return{code:2,message:"invalid_argument"}}if(e>=500&&e<600)switch(e){case 501:return{code:2,message:"unimplemented"};case 503:return{code:2,message:"unavailable"};case 504:return{code:2,message:"deadline_exceeded"};default:return{code:2,message:"internal_error"}}return{code:2,message:"internal_error"}}function mt(e,t){e.setAttribute("http.response.status_code",t);const n=gt(t);"unknown_error"!==n.message&&e.setStatus(n)}const vt="_sentryScope",yt="_sentryIsolationScope";function bt(e){if(e){if("object"==typeof e&&"deref"in e&&"function"==typeof e.deref)try{return e.deref()}catch{return}return e}}function wt(e,t,n){e&&(ie(e,yt,function(e){try{const t=a.WeakRef;if("function"==typeof t)return new t(e)}catch{}return e}(n)),ie(e,vt,t))}function xt(e){const t=e;return{scope:t[vt],isolationScope:bt(t[yt])}}const kt="sentry-",_t=/^sentry-/;function St(e){const t=function(e){if(!e||!U(e)&&!Array.isArray(e))return;if(Array.isArray(e))return e.reduce((e,t)=>{const n=Et(t);return Object.entries(n).forEach(([t,n])=>{e[t]=n}),e},{});return Et(e)}(e);if(!t)return;const n=Object.entries(t).reduce((e,[t,n])=>{if(t.match(_t)){e[t.slice(7)]=n}return e},{});return Object.keys(n).length>0?n:void 0}function Ct(e){if(!e)return;return function(e){if(0===Object.keys(e).length)return;return Object.entries(e).reduce((e,[t,n],r)=>{const o=`${encodeURIComponent(t)}=${encodeURIComponent(n)}`,i=0===r?o:`${e},${o}`;return i.length>8192?(s&&y.warn(`Not adding key: ${t} with val: ${n} to baggage header due to exceeding baggage size limits.`),e):i},"")}(Object.entries(e).reduce((e,[t,n])=>(n&&(e[`${kt}${t}`]=n),e),{}))}function Et(e){return e.split(",").map(e=>{const t=e.indexOf("=");if(-1===t)return[];return[e.slice(0,t),e.slice(t+1)].map(e=>{try{return decodeURIComponent(e.trim())}catch{return}})}).reduce((e,[t,n])=>(t&&n&&(e[t]=n),e),{})}const Tt=/^o(\d+)\./,Mt=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function It(e,t=!1){const{host:n,path:r,pass:o,port:i,projectId:s,protocol:a,publicKey:c}=e;return`${a}://${c}${t&&o?`:${o}`:""}@${n}${i?`:${i}`:""}/${r?`${r}/`:r}${s}`}function At(e){const t=Mt.exec(e);if(!t)return void f(()=>{});const[n,r,o="",i="",s="",a=""]=t.slice(1);let c="",l=a;const d=l.split("/");if(d.length>1&&(c=d.slice(0,-1).join("/"),l=d.pop()),l){const e=l.match(/^\d+/);e&&(l=e[0])}return Rt({host:i,pass:o,path:c,projectId:l,port:s,protocol:n,publicKey:r})}function Rt(e){return{protocol:e.protocol,publicKey:e.publicKey||"",pass:e.pass||"",host:e.host,port:e.port||"",path:e.path||"",projectId:e.projectId}}function Lt(e){const t=e.getOptions(),{host:n}=e.getDsn()||{};let r;return t.orgId?r=String(t.orgId):n&&(r=function(e){const t=e.match(Tt);return t?.[1]}(n)),r}function Pt(e){const t="string"==typeof e?At(e):Rt(e);if(t&&function(e){if(!s)return!0;const{port:t,projectId:n,protocol:r}=e;return!(["protocol","publicKey","host","projectId"].find(t=>!e[t]&&(y.error(`Invalid Sentry Dsn: ${t} missing`),!0))||(n.match(/^\d+$/)?function(e){return"http"===e||"https"===e}(r)?t&&isNaN(parseInt(t,10))&&(y.error(`Invalid Sentry Dsn: Invalid port ${t}`),1):(y.error(`Invalid Sentry Dsn: Invalid protocol ${r}`),1):(y.error(`Invalid Sentry Dsn: Invalid projectId ${n}`),1)))}(t))return t}function Ot(e){if("boolean"==typeof e)return Number(e);const t="string"==typeof e?parseFloat(e):e;return"number"!=typeof t||isNaN(t)||t<0||t>1?void 0:t}const Dt=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function Nt(e,t){const n=function(e){if(!e)return;const t=e.match(Dt);if(!t)return;let n;return"1"===t[3]?n=!0:"0"===t[3]&&(n=!1),{traceId:t[1],parentSampled:n,parentSpanId:t[2]}}(e),r=St(t);if(!n?.traceId)return{traceId:Ne(),sampleRand:ge()};const o=function(e,t){const n=Ot(t?.sample_rand);if(void 0!==n)return n;const r=Ot(t?.sample_rate);return r&&void 0!==e?.parentSampled?e.parentSampled?ge()*r:r+ge()*(1-r):ge()}(n,r);r&&(r.sample_rand=o.toString());const{traceId:i,parentSpanId:s,parentSampled:a}=n;return{traceId:i,parentSpanId:s,sampled:a,dsc:r||{},sampleRand:o}}function Bt(e=Ne(),t=Be(),n){let r="";return void 0!==n&&(r=n?"-1":"-0"),`${e}-${t}${r}`}function jt(e=Ne(),t=Be(),n){return`00-${e}-${t}-${n?"01":"00"}`}let $t=!1;function zt(e){const{spanId:t,traceId:n}=e.spanContext(),{data:r,op:o,parent_span_id:i,status:s,origin:a,links:c}=Vt(e);return{parent_span_id:i,span_id:t,trace_id:n,data:r,op:o,status:s,origin:a,links:c}}function Ft(e){const{spanId:t,traceId:n,isRemote:r}=e.spanContext(),o=r?t:Vt(e).parent_span_id,i=xt(e).scope;return{parent_span_id:o,span_id:r?i?.getPropagationContext().propagationSpanId||Be():t,trace_id:n}}function Ht(e){const{traceId:t,spanId:n}=e.spanContext();return Bt(t,n,Kt(e))}function qt(e){return e&&e.length>0?e.map(({context:{spanId:e,traceId:t,traceFlags:n,...r},attributes:o})=>({span_id:e,trace_id:t,sampled:1===n,attributes:o,...r})):void 0}function Ut(e){return"number"==typeof e?Wt(e):Array.isArray(e)?e[0]+e[1]/1e9:e instanceof Date?Wt(e.getTime()):Ae()}function Wt(e){return e>9999999999?e/1e3:e}function Vt(e){if(function(e){return"function"==typeof e.getSpanJSON}(e))return e.getSpanJSON();const{spanId:t,traceId:n}=e.spanContext();if(function(e){const t=e;return!!(t.attributes&&t.startTime&&t.name&&t.endTime&&t.status)}(e)){const{attributes:r,startTime:o,name:i,endTime:s,status:a,links:c}=e;return{span_id:t,trace_id:n,data:r,description:i,parent_span_id:"parentSpanId"in e?e.parentSpanId:"parentSpanContext"in e?e.parentSpanContext?.spanId:void 0,start_timestamp:Ut(o),timestamp:Ut(s)||void 0,status:Gt(a),op:r[ot],origin:r[it],links:qt(c)}}return{span_id:t,trace_id:n,start_timestamp:0,data:{}}}function Kt(e){const{traceFlags:t}=e.spanContext();return 1===t}function Gt(e){if(e&&0!==e.code)return 1===e.code?"ok":e.message||"internal_error"}const Jt="_sentryChildSpans",Yt="_sentryRootSpan";function Xt(e,t){const n=e[Yt]||e;ie(t,Yt,n),e[Jt]?e[Jt].add(t):ie(e,Jt,new Set([t]))}function Qt(e){const t=new Set;return function e(n){if(!t.has(n)&&Kt(n)){t.add(n);const r=n[Jt]?Array.from(n[Jt]):[];for(const t of r)e(t)}}(e),Array.from(t)}function Zt(e){return e[Yt]||e}function en(){const e=Ke(l());return e.getActiveSpan?e.getActiveSpan():ze(Ge())}function tn(){$t||(f(()=>{}),$t=!0)}function nn(e,t){e.updateName(t),e.setAttributes({[tt]:"custom",[lt]:t})}let rn=!1;function on(){function e(){const e=en(),t=e&&Zt(e);if(t){const e="internal_error";s&&y.log(`[Tracing] Root span: ${e} -> Global error occurred`),t.setStatus({code:2,message:e})}}rn||(e.tag="sentry_tracingErrorCallback",rn=!0,O(e),B(e))}function sn(e){if("boolean"==typeof __SENTRY_TRACING__&&!__SENTRY_TRACING__)return!1;const t=e||Ze()?.getOptions();return!(!t||null==t.tracesSampleRate&&!t.tracesSampler)}function an(e){y.log(`Ignoring span ${e.op} - ${e.description} because it matches \`ignoreSpans\`.`)}function cn(e,t){if(!t?.length||!e.description)return!1;for(const n of t){if(dn(n)){if(we(e.description,n))return s&&an(e),!0;continue}if(!n.name&&!n.op)continue;const t=!n.name||we(e.description,n.name),r=!n.op||e.op&&we(e.op,n.op);if(t&&r)return s&&an(e),!0}return!1}function ln(e,t){const n=t.parent_span_id,r=t.span_id;if(n)for(const t of e)t.parent_span_id===r&&(t.parent_span_id=n)}function dn(e){return"string"==typeof e||e instanceof RegExp}const un="production",pn="_frozenDsc";function hn(e,t){ie(e,pn,t)}function fn(e,t){const n=t.getOptions(),{publicKey:r}=t.getDsn()||{},o={environment:n.environment||un,release:n.release,public_key:r,trace_id:e,org_id:Lt(t)};return t.emit("createDsc",o),o}function gn(e,t){const n=t.getPropagationContext();return n.dsc||fn(n.traceId,e)}function mn(e){const t=Ze();if(!t)return{};const n=Zt(e),r=Vt(n),o=r.data,i=n.spanContext().traceState,s=i?.get("sentry.sample_rate")??o[nt]??o[rt];function a(e){return"number"!=typeof s&&"string"!=typeof s||(e.sample_rate=`${s}`),e}const c=n[pn];if(c)return a(c);const l=i?.get("sentry.dsc"),d=l&&St(l);if(d)return a(d);const u=fn(e.spanContext().traceId,t),p=o[tt],h=r.description;return"url"!==p&&h&&(u.transaction=h),sn()&&(u.sampled=String(Kt(n)),u.sample_rand=i?.get("sentry.sample_rand")??xt(n).scope?.getPropagationContext().sampleRand.toString()),a(u),t.emit("createDsc",u,n),u}function vn(e){return Ct(mn(e))}class yn{constructor(e={}){this._traceId=e.traceId||Ne(),this._spanId=e.spanId||Be()}spanContext(){return{spanId:this._spanId,traceId:this._traceId,traceFlags:0}}end(e){}setAttribute(e,t){return this}setAttributes(e){return this}setStatus(e){return this}updateName(e){return this}isRecording(){return!1}addEvent(e,t,n){return this}addLink(e){return this}addLinks(e){return this}recordException(e,t){}}function bn(e,t=100,n=1/0){try{return xn("",e,t,n)}catch(e){return{ERROR:`**non-serializable** (${e})`}}}function wn(e,t=3,n=102400){const r=bn(e,t);return function(e){return function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(e))}(r)>n?wn(e,t-1,n):r}function xn(e,t,r=1/0,o=1/0,i=function(){const e=new WeakSet;function t(t){return!!e.has(t)||(e.add(t),!1)}function n(t){e.delete(t)}return[t,n]}()){const[s,a]=i;if(null==t||["boolean","string"].includes(typeof t)||"number"==typeof t&&Number.isFinite(t))return t;const c=function(e,t){try{if("domain"===e&&t&&"object"==typeof t&&t._events)return"[Domain]";if("domainEmitter"===e)return"[DomainEmitter]";if(void 0!==n.g&&t===n.g)return"[Global]";if("undefined"!=typeof window&&t===window)return"[Window]";if("undefined"!=typeof document&&t===document)return"[Document]";if(X(t))return T(t);if(K(r=t)&&"nativeEvent"in r&&"preventDefault"in r&&"stopPropagation"in r)return"[SyntheticEvent]";if("number"==typeof t&&!Number.isFinite(t))return`[${t}]`;if("function"==typeof t)return`[Function: ${C(t)}]`;if("symbol"==typeof t)return`[${String(t)}]`;if("bigint"==typeof t)return`[BigInt: ${String(t)}]`;const o=function(e){const t=Object.getPrototypeOf(e);return t?.constructor?t.constructor.name:"null prototype"}(t);return/^HTML(\w*)Element$/.test(o)?`[HTMLElement: ${o}]`:`[object ${o}]`}catch(e){return`**non-serializable** (${e})`}var r}(e,t);if(!c.startsWith("[object "))return c;if(t.__sentry_skip_normalization__)return t;const l="number"==typeof t.__sentry_override_normalization_depth__?t.__sentry_override_normalization_depth__:r;if(0===l)return c.replace("object ","");if(s(t))return"[Circular ~]";const d=t;if(d&&"function"==typeof d.toJSON)try{return xn("",d.toJSON(),l-1,o,i)}catch{}const u=Array.isArray(t)?[]:{};let p=0;const h=ce(t);for(const e in h){if(!Object.prototype.hasOwnProperty.call(h,e))continue;if(p>=o){u[e]="[MaxProperties ~]";break}const t=h[e];u[e]=xn(e,t,l-1,o,i),p++}return a(t),u}function kn(e,t=[]){return[e,t]}function _n(e,t){const[n,r]=e;return[n,[...r,t]]}function Sn(e,t){const n=e[1];for(const e of n){if(t(e,e[0].type))return!0}return!1}function Cn(e,t){return Sn(e,(e,n)=>t.includes(n))}function En(e){const t=d(a);return t.encodePolyfill?t.encodePolyfill(e):(new TextEncoder).encode(e)}function Tn(e){const[t,n]=e;let r=JSON.stringify(t);function o(e){"string"==typeof r?r="string"==typeof e?r+e:[En(r),e]:r.push("string"==typeof e?En(e):e)}for(const e of n){const[t,n]=e;if(o(`\n${JSON.stringify(t)}\n`),"string"==typeof n||n instanceof Uint8Array)o(n);else{let e;try{e=JSON.stringify(n)}catch{e=JSON.stringify(bn(n))}o(e)}}return"string"==typeof r?r:function(e){const t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.length;return n}(r)}function Mn(e){let t="string"==typeof e?En(e):e;function n(e){const n=t.subarray(0,e);return t=t.subarray(e+1),n}function r(){let e=t.indexOf(10);return e<0&&(e=t.length),JSON.parse(function(e){const t=d(a);return t.decodePolyfill?t.decodePolyfill(e):(new TextDecoder).decode(e)}(n(e)))}const o=r(),i=[];for(;t.length;){const e=r(),t="number"==typeof e.length?e.length:void 0;i.push([e,t?n(t):r()])}return[o,i]}function In(e){return[{type:"span"},e]}function An(e){const t="string"==typeof e.data?En(e.data):e.data;return[{type:"attachment",length:t.length,filename:e.filename,content_type:e.contentType,attachment_type:e.attachmentType},t]}const Rn={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",raw_security:"security",log:"log_item",metric:"metric",trace_metric:"metric"};function Ln(e){return Rn[e]}function Pn(e){if(!e?.sdk)return;const{name:t,version:n}=e.sdk;return{name:t,version:n}}function On(e,t,n,r){const o=e.sdkProcessingMetadata?.dynamicSamplingContext;return{event_id:e.event_id,sent_at:(new Date).toISOString(),...t&&{sdk:t},...!!n&&r&&{dsn:It(r)},...o&&{trace:o}}}function Dn(e,t,n,r=en()){const o=r&&Zt(r);o&&(s&&y.log(`[Measurement] Setting measurement on root span: ${e} = ${t} ${n}`),o.addEvent(e,{[ct]:t,[at]:n}))}function Nn(e){if(!e||0===e.length)return;const t={};return e.forEach(e=>{const n=e.attributes||{},r=n[at],o=n[ct];"string"==typeof r&&"number"==typeof o&&(t[e.name]={value:o,unit:r})}),t}class Bn{constructor(e={}){this._traceId=e.traceId||Ne(),this._spanId=e.spanId||Be(),this._startTime=e.startTimestamp||Ae(),this._links=e.links,this._attributes={},this.setAttributes({[it]:"manual",[ot]:e.op,...e.attributes}),this._name=e.name,e.parentSpanId&&(this._parentSpanId=e.parentSpanId),"sampled"in e&&(this._sampled=e.sampled),e.endTimestamp&&(this._endTime=e.endTimestamp),this._events=[],this._isStandaloneSpan=e.isStandalone,this._endTime&&this._onSpanEnded()}addLink(e){return this._links?this._links.push(e):this._links=[e],this}addLinks(e){return this._links?this._links.push(...e):this._links=e,this}recordException(e,t){}spanContext(){const{_spanId:e,_traceId:t,_sampled:n}=this;return{spanId:e,traceId:t,traceFlags:n?1:0}}setAttribute(e,t){return void 0===t?delete this._attributes[e]:this._attributes[e]=t,this}setAttributes(e){return Object.keys(e).forEach(t=>this.setAttribute(t,e[t])),this}updateStartTime(e){this._startTime=Ut(e)}setStatus(e){return this._status=e,this}updateName(e){return this._name=e,this.setAttribute(tt,"custom"),this}end(e){this._endTime||(this._endTime=Ut(e),function(e){if(!s)return;const{description:t="< unknown name >",op:n="< unknown op >"}=Vt(e),{spanId:r}=e.spanContext(),o=`[Tracing] Finishing "${n}" ${Zt(e)===e?"root ":""}span "${t}" with ID ${r}`;y.log(o)}(this),this._onSpanEnded())}getSpanJSON(){return{data:this._attributes,description:this._name,op:this._attributes[ot],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:Gt(this._status),timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[it],profile_id:this._attributes[dt],exclusive_time:this._attributes[ut],measurements:Nn(this._events),is_segment:this._isStandaloneSpan&&Zt(this)===this||void 0,segment_id:this._isStandaloneSpan?Zt(this).spanContext().spanId:void 0,links:qt(this._links)}}isRecording(){return!this._endTime&&!!this._sampled}addEvent(e,t,n){s&&y.log("[Tracing] Adding an event to span:",e);const r=jn(t)?t:n||Ae(),o=jn(t)?{}:t||{},i={name:e,time:Ut(r),attributes:o};return this._events.push(i),this}isStandaloneSpan(){return!!this._isStandaloneSpan}_onSpanEnded(){const e=Ze();e&&e.emit("spanEnd",this);if(!(this._isStandaloneSpan||this===Zt(this)))return;if(this._isStandaloneSpan)return void(this._sampled?function(e){const t=Ze();if(!t)return;const n=e[1];if(!n||0===n.length)return void t.recordDroppedEvent("before_send","span");t.sendEnvelope(e)}(function(e,t){const n=mn(e[0]),r=t?.getDsn(),o=t?.getOptions().tunnel,i={sent_at:(new Date).toISOString(),...function(e){return!!e.trace_id&&!!e.public_key}(n)&&{trace:n},...!!o&&r&&{dsn:It(r)}},{beforeSendSpan:s,ignoreSpans:a}=t?.getOptions()||{},c=a?.length?e.filter(e=>!cn(Vt(e),a)):e,l=e.length-c.length;l&&t?.recordDroppedEvent("before_send","span",l);const d=s?e=>{const t=Vt(e);return s(t)||(tn(),t)}:Vt,u=[];for(const e of c){const t=d(e);t&&u.push(In(t))}return kn(i,u)}([this],e)):(s&&y.log("[Tracing] Discarding standalone span because its trace was not chosen to be sampled."),e&&e.recordDroppedEvent("sample_rate","span")));const t=this._convertSpanToTransaction();if(t){(xt(this).scope||Ge()).captureEvent(t)}}_convertSpanToTransaction(){if(!$n(Vt(this)))return;this._name||(s&&y.warn("Transaction has no name, falling back to `<unlabeled transaction>`."),this._name="<unlabeled transaction>");const{scope:e,isolationScope:t}=xt(this),n=e?.getScopeData().sdkProcessingMetadata?.normalizedRequest;if(!0!==this._sampled)return;const r=Qt(this).filter(e=>e!==this&&!function(e){return e instanceof Bn&&e.isStandaloneSpan()}(e)).map(e=>Vt(e)).filter($n),o=this._attributes[tt];delete this._attributes[lt],r.forEach(e=>{delete e.data[lt]});const i={contexts:{trace:zt(this)},spans:r.length>1e3?r.sort((e,t)=>e.start_timestamp-t.start_timestamp).slice(0,1e3):r,start_timestamp:this._startTime,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:e,capturedSpanIsolationScope:t,dynamicSamplingContext:mn(this)},request:n,...o&&{transaction_info:{source:o}}},a=Nn(this._events);return a&&Object.keys(a).length&&(s&&y.log("[Measurements] Adding measurements to transaction event",JSON.stringify(a,void 0,2)),i.measurements=a),i}}function jn(e){return e&&"number"==typeof e||e instanceof Date||Array.isArray(e)}function $n(e){return!!(e.start_timestamp&&e.timestamp&&e.span_id&&e.trace_id)}function zn(e,t,n=()=>{},r=()=>{}){let o;try{o=e()}catch(e){throw t(e),n(),e}return function(e,t,n,r){if(J(e))return e.then(e=>(n(),r(e),e),e=>{throw t(e),n(),e});return n(),r(e),e}(o,t,n,r)}const Fn="__SENTRY_SUPPRESS_TRACING__";function Hn(e,t){const n=Xn();if(n.startSpan)return n.startSpan(e,t);const r=Yn(e),{forceTransaction:o,parentSpan:i,scope:s}=e,a=s?.clone();return Xe(a,()=>er(i)(()=>{const n=Ge(),s=Zn(n,i),a=e.onlyIfParent&&!s?new yn:Jn({parentSpan:s,spanArguments:r,forceTransaction:o,scope:n});return $e(n,a),zn(()=>t(a),()=>{const{status:e}=Vt(a);!a.isRecording()||e&&"ok"!==e||a.setStatus({code:2,message:"internal_error"})},()=>{a.end()})}))}function qn(e,t){const n=Xn();if(n.startSpanManual)return n.startSpanManual(e,t);const r=Yn(e),{forceTransaction:o,parentSpan:i,scope:s}=e,a=s?.clone();return Xe(a,()=>er(i)(()=>{const n=Ge(),s=Zn(n,i),a=e.onlyIfParent&&!s?new yn:Jn({parentSpan:s,spanArguments:r,forceTransaction:o,scope:n});return $e(n,a),zn(()=>t(a,()=>a.end()),()=>{const{status:e}=Vt(a);!a.isRecording()||e&&"ok"!==e||a.setStatus({code:2,message:"internal_error"})})}))}function Un(e){const t=Xn();if(t.startInactiveSpan)return t.startInactiveSpan(e);const n=Yn(e),{forceTransaction:r,parentSpan:o}=e;return(e.scope?t=>Xe(e.scope,t):void 0!==o?e=>Vn(o,e):e=>e())(()=>{const t=Ge(),i=Zn(t,o);return e.onlyIfParent&&!i?new yn:Jn({parentSpan:i,spanArguments:n,forceTransaction:r,scope:t})})}const Wn=(e,t)=>{const n=Ke(l());if(n.continueTrace)return n.continueTrace(e,t);const{sentryTrace:r,baggage:o}=e,i=Ze(),s=St(o);return i&&!function(e,t){const n=Lt(e);return t&&n&&t!==n?(y.log(`Won't continue trace because org IDs don't match (incoming baggage: ${t}, SDK options: ${n})`),!1):!e.getOptions().strictTraceContinuation||!(t&&!n||!t&&n)||(y.log(`Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${t}, Sentry client: ${n})`),!1)}(i,s?.org_id)?Gn(t):Xe(e=>{const n=Nt(r,o);return e.setPropagationContext(n),$e(e,void 0),t()})};function Vn(e,t){const n=Xn();return n.withActiveSpan?n.withActiveSpan(e,t):Xe(n=>($e(n,e||void 0),t(n)))}function Kn(e){const t=Xn();return t.suppressTracing?t.suppressTracing(e):Xe(t=>{t.setSDKProcessingMetadata({[Fn]:!0});const n=e();return t.setSDKProcessingMetadata({[Fn]:void 0}),n})}function Gn(e){return Xe(t=>(t.setPropagationContext({traceId:Ne(),sampleRand:ge()}),s&&y.log(`Starting a new trace with id ${t.getPropagationContext().traceId}`),Vn(null,e)))}function Jn({parentSpan:e,spanArguments:t,forceTransaction:n,scope:r}){if(!sn()){const r=new yn;if(n||!e){hn(r,{sampled:"false",sample_rate:"0",transaction:t.name,...mn(r)})}return r}const o=Je();let i;if(e&&!n)i=function(e,t,n){const{spanId:r,traceId:o}=e.spanContext(),i=!t.getScopeData().sdkProcessingMetadata[Fn]&&Kt(e),s=i?new Bn({...n,parentSpanId:r,traceId:o,sampled:i}):new yn({traceId:o});Xt(e,s);const a=Ze();a&&(a.emit("spanStart",s),n.endTimestamp&&a.emit("spanEnd",s));return s}(e,r,t),Xt(e,i);else if(e){const n=mn(e),{traceId:o,spanId:s}=e.spanContext(),a=Kt(e);i=Qn({traceId:o,parentSpanId:s,...t},r,a),hn(i,n)}else{const{traceId:e,dsc:n,parentSpanId:s,sampled:a}={...o.getPropagationContext(),...r.getPropagationContext()};i=Qn({traceId:e,parentSpanId:s,...t},r,a),n&&hn(i,n)}return function(e){if(!s)return;const{description:t="< unknown name >",op:n="< unknown op >",parent_span_id:r}=Vt(e),{spanId:o}=e.spanContext(),i=Kt(e),a=Zt(e),c=a===e,l=`[Tracing] Starting ${i?"sampled":"unsampled"} ${c?"root ":""}span`,d=[`op: ${n}`,`name: ${t}`,`ID: ${o}`];if(r&&d.push(`parent ID: ${r}`),!c){const{op:e,description:t}=Vt(a);d.push(`root ID: ${a.spanContext().spanId}`),e&&d.push(`root op: ${e}`),t&&d.push(`root description: ${t}`)}y.log(`${l}\n ${d.join("\n ")}`)}(i),wt(i,r,o),i}function Yn(e){const t={isStandalone:(e.experimental||{}).standalone,...e};if(e.startTime){const n={...t};return n.startTimestamp=Ut(e.startTime),delete n.startTime,n}return t}function Xn(){return Ke(l())}function Qn(e,t,n){const r=Ze(),o=r?.getOptions()||{},{name:i=""}=e,a={spanAttributes:{...e.attributes},spanName:i,parentSampled:n};r?.emit("beforeSampling",a,{decision:!1});const c=a.parentSampled??n,l=a.spanAttributes,d=t.getPropagationContext(),[u,p,h]=t.getScopeData().sdkProcessingMetadata[Fn]?[!1]:function(e,t,n){if(!sn(e))return[!1];let r,o;"function"==typeof e.tracesSampler?(o=e.tracesSampler({...t,inheritOrSampleWith:e=>"number"==typeof t.parentSampleRate?t.parentSampleRate:"boolean"==typeof t.parentSampled?Number(t.parentSampled):e}),r=!0):void 0!==t.parentSampled?o=t.parentSampled:void 0!==e.tracesSampleRate&&(o=e.tracesSampleRate,r=!0);const i=Ot(o);if(void 0===i)return s&&y.warn(`[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(o)} of type ${JSON.stringify(typeof o)}.`),[!1];if(!i)return s&&y.log("[Tracing] Discarding transaction because "+("function"==typeof e.tracesSampler?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0")),[!1,i,r];const a=n<i;return a||s&&y.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(o)})`),[a,i,r]}(o,{name:i,parentSampled:c,attributes:l,parentSampleRate:Ot(d.dsc?.sample_rate)},d.sampleRand),f=new Bn({...e,attributes:{[tt]:"custom",[nt]:void 0!==p&&h?p:void 0,...l},sampled:u});return!u&&r&&(s&&y.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),r.recordDroppedEvent("sample_rate","transaction")),r&&r.emit("spanStart",f),f}function Zn(e,t){if(t)return t;if(null===t)return;const n=ze(e);if(!n)return;const r=Ze();return(r?r.getOptions():{}).parentSpanIsAlwaysRootSpan?Zt(n):n}function er(e){return void 0!==e?t=>Vn(e,t):e=>e()}const tr={idleTimeout:1e3,finalTimeout:3e4,childSpanTimeout:15e3};function nr(e,t={}){const n=new Map;let r,o=!1,i="externalFinish",a=!t.disableAutoFinish;const c=[],{idleTimeout:l=tr.idleTimeout,finalTimeout:d=tr.finalTimeout,childSpanTimeout:u=tr.childSpanTimeout,beforeSpanEnd:p,trimIdleSpanEndTimestamp:h=!0}=t,f=Ze();if(!f||!sn()){const e=new yn;return hn(e,{sample_rate:"0",sampled:"false",...mn(e)}),e}const g=Ge(),m=en(),v=function(e){const t=Un(e);return $e(Ge(),t),s&&y.log("[Tracing] Started span is an idle span"),t}(e);function b(){r&&(clearTimeout(r),r=void 0)}function w(e){b(),r=setTimeout(()=>{!o&&0===n.size&&a&&(i="idleTimeout",v.end(e))},l)}function x(e){r=setTimeout(()=>{!o&&a&&(i="heartbeatFailed",v.end(e))},u)}function k(e){o=!0,n.clear(),c.forEach(e=>e()),$e(g,m);const t=Vt(v),{start_timestamp:r}=t;if(!r)return;t.data[st]||v.setAttribute(st,i);const a=t.status;a&&"unknown"!==a||v.setStatus({code:1}),y.log(`[Tracing] Idle span "${t.op}" finished`);const u=Qt(v).filter(e=>e!==v);let p=0;u.forEach(t=>{t.isRecording()&&(t.setStatus({code:2,message:"cancelled"}),t.end(e),s&&y.log("[Tracing] Cancelling span since span ended early",JSON.stringify(t,void 0,2)));const n=Vt(t),{timestamp:r=0,start_timestamp:o=0}=n,i=o<=e,a=r-o<=(d+l)/1e3;if(s){const e=JSON.stringify(t,void 0,2);i?a||y.log("[Tracing] Discarding span since it finished after idle span final timeout",e):y.log("[Tracing] Discarding span since it happened after idle span was finished",e)}a&&i||(!function(e,t){e[Jt]&&e[Jt].delete(t)}(v,t),p++)}),p>0&&v.setAttribute("sentry.idle_span_discarded_spans",p)}return v.end=new Proxy(v.end,{apply(e,t,n){if(p&&p(v),t instanceof yn)return;const[r,...o]=n,i=Ut(r||Ae()),s=Qt(v).filter(e=>e!==v),a=Vt(v);if(!s.length||!h)return k(i),Reflect.apply(e,t,[i,...o]);const c=f.getOptions().ignoreSpans,l=s?.reduce((e,t)=>{const n=Vt(t);return n.timestamp?c&&cn(n,c)?e:e?Math.max(e,n.timestamp):n.timestamp:e},void 0),u=a.start_timestamp,g=Math.min(u?u+d/1e3:1/0,Math.max(u||-1/0,Math.min(i,l||1/0)));return k(g),Reflect.apply(e,t,[g,...o])}}),c.push(f.on("spanStart",e=>{if(o||e===v||Vt(e).timestamp||e instanceof Bn&&e.isStandaloneSpan())return;var t;Qt(v).includes(e)&&(t=e.spanContext().spanId,b(),n.set(t,!0),x(Ae()+u/1e3))})),c.push(f.on("spanEnd",e=>{var t;o||(t=e.spanContext().spanId,n.has(t)&&n.delete(t),0===n.size&&w(Ae()+l/1e3))})),c.push(f.on("idleSpanEnableAutoFinish",e=>{e===v&&(a=!0,w(),n.size&&x())})),t.disableAutoFinish||w(),setTimeout(()=>{o||(v.setStatus({code:2,message:"deadline_exceeded"}),i="finalTimeout",v.end())},d),v}function rr(e){return new ir(t=>{t(e)})}function or(e){return new ir((t,n)=>{n(e)})}class ir{constructor(e){this._state=0,this._handlers=[],this._runExecutor(e)}then(e,t){return new ir((n,r)=>{this._handlers.push([!1,t=>{if(e)try{n(e(t))}catch(e){r(e)}else n(t)},e=>{if(t)try{n(t(e))}catch(e){r(e)}else r(e)}]),this._executeHandlers()})}catch(e){return this.then(e=>e,e)}finally(e){return new ir((t,n)=>{let r,o;return this.then(t=>{o=!1,r=t,e&&e()},t=>{o=!0,r=t,e&&e()}).then(()=>{o?n(r):t(r)})})}_executeHandlers(){if(0===this._state)return;const e=this._handlers.slice();this._handlers=[],e.forEach(e=>{e[0]||(1===this._state&&e[1](this._value),2===this._state&&e[2](this._value),e[0]=!0)})}_runExecutor(e){const t=(e,t)=>{0===this._state&&(J(t)?t.then(n,r):(this._state=e,this._value=t,this._executeHandlers()))},n=e=>{t(1,e)},r=e=>{t(2,e)};try{e(n,r)}catch(e){r(e)}}}function sr(e,t,n,r=0){try{const o=ar(t,n,e,r);return J(o)?o:rr(o)}catch(e){return or(e)}}function ar(e,t,n,r){const o=n[r];if(!e||!o)return e;const i=o({...e},t);return s&&null===i&&y.log(`Event processor "${o.id||"?"}" dropped event`),J(i)?i.then(e=>ar(e,t,n,r+1)):ar(i,t,n,r+1)}let cr,lr,dr,ur;function pr(e){const t=a._sentryDebugIds,n=a._debugIds;if(!t&&!n)return{};const r=t?Object.keys(t):[],o=n?Object.keys(n):[];if(ur&&r.length===lr&&o.length===dr)return ur;lr=r.length,dr=o.length,ur={},cr||(cr={});const i=(t,n)=>{for(const r of t){const t=n[r],o=cr?.[r];if(o&&ur&&t)ur[o[0]]=t,cr&&(cr[r]=[o[0],t]);else if(t){const n=e(r);for(let e=n.length-1;e>=0;e--){const o=n[e],i=o?.filename;if(i&&ur&&cr){ur[i]=t,cr[r]=[i,t];break}}}}};return t&&i(r,t),n&&i(o,n),ur}function hr(e,t){const{fingerprint:n,span:r,breadcrumbs:o,sdkProcessingMetadata:i}=t;!function(e,t){const{extra:n,tags:r,user:o,contexts:i,level:s,transactionName:a}=t;Object.keys(n).length&&(e.extra={...n,...e.extra});Object.keys(r).length&&(e.tags={...r,...e.tags});Object.keys(o).length&&(e.user={...o,...e.user});Object.keys(i).length&&(e.contexts={...i,...e.contexts});s&&(e.level=s);a&&"transaction"!==e.type&&(e.transaction=a)}(e,t),r&&function(e,t){e.contexts={trace:Ft(t),...e.contexts},e.sdkProcessingMetadata={dynamicSamplingContext:mn(t),...e.sdkProcessingMetadata};const n=Zt(t),r=Vt(n).description;r&&!e.transaction&&"transaction"===e.type&&(e.transaction=r)}(e,r),function(e,t){e.fingerprint=e.fingerprint?Array.isArray(e.fingerprint)?e.fingerprint:[e.fingerprint]:[],t&&(e.fingerprint=e.fingerprint.concat(t));e.fingerprint.length||delete e.fingerprint}(e,n),function(e,t){const n=[...e.breadcrumbs||[],...t];e.breadcrumbs=n.length?n:void 0}(e,o),function(e,t){e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...t}}(e,i)}function fr(e,t){const{extra:n,tags:r,attributes:o,user:i,contexts:s,level:a,sdkProcessingMetadata:c,breadcrumbs:l,fingerprint:d,eventProcessors:u,attachments:p,propagationContext:h,transactionName:f,span:g}=t;gr(e,"extra",n),gr(e,"tags",r),gr(e,"attributes",o),gr(e,"user",i),gr(e,"contexts",s),e.sdkProcessingMetadata=De(e.sdkProcessingMetadata,c,2),a&&(e.level=a),f&&(e.transactionName=f),g&&(e.span=g),l.length&&(e.breadcrumbs=[...e.breadcrumbs,...l]),d.length&&(e.fingerprint=[...e.fingerprint,...d]),u.length&&(e.eventProcessors=[...e.eventProcessors,...u]),p.length&&(e.attachments=[...e.attachments,...p]),e.propagationContext={...e.propagationContext,...h}}function gr(e,t,n){e[t]=De(e[t],n,1)}function mr(e,t){const n=Ye().getScopeData();return e&&fr(n,e.getScopeData()),t&&fr(n,t.getScopeData()),n}function vr(e,t,n,r,o,i){const{normalizeDepth:s=3,normalizeMaxBreadth:a=1e3}=e,c={...t,event_id:t.event_id||n.event_id||ke(),timestamp:t.timestamp||Me()},l=n.integrations||e.integrations.map(e=>e.name);!function(e,t){const{environment:n,release:r,dist:o,maxValueLength:i}=t;e.environment=e.environment||n||un,!e.release&&r&&(e.release=r);!e.dist&&o&&(e.dist=o);const s=e.request;s?.url&&i&&(s.url=ve(s.url,i));i&&e.exception?.values?.forEach(e=>{e.value&&(e.value=ve(e.value,i))})}(c,e),function(e,t){t.length>0&&(e.sdk=e.sdk||{},e.sdk.integrations=[...e.sdk.integrations||[],...t])}(c,l),o&&o.emit("applyFrameMetadata",t),void 0===t.type&&function(e,t){const n=pr(t);e.exception?.values?.forEach(e=>{e.stacktrace?.frames?.forEach(e=>{e.filename&&(e.debug_id=n[e.filename])})})}(c,e.stackParser);const d=function(e,t){if(!t)return e;const n=e?e.clone():new Fe;return n.update(t),n}(r,n.captureContext);n.mechanism&&Ee(c,n.mechanism);const u=o?o.getEventProcessors():[],p=mr(i,d),h=[...n.attachments||[],...p.attachments];h.length&&(n.attachments=h),hr(c,p);return sr([...u,...p.eventProcessors],c,n).then(e=>(e&&function(e){const t={};if(e.exception?.values?.forEach(e=>{e.stacktrace?.frames?.forEach(e=>{e.debug_id&&(e.abs_path?t[e.abs_path]=e.debug_id:e.filename&&(t[e.filename]=e.debug_id),delete e.debug_id)})}),0===Object.keys(t).length)return;e.debug_meta=e.debug_meta||{},e.debug_meta.images=e.debug_meta.images||[];const n=e.debug_meta.images;Object.entries(t).forEach(([e,t])=>{n.push({type:"sourcemap",code_file:e,debug_id:t})})}(e),"number"==typeof s&&s>0?function(e,t,n){if(!e)return null;const r={...e,...e.breadcrumbs&&{breadcrumbs:e.breadcrumbs.map(e=>({...e,...e.data&&{data:bn(e.data,t,n)}}))},...e.user&&{user:bn(e.user,t,n)},...e.contexts&&{contexts:bn(e.contexts,t,n)},...e.extra&&{extra:bn(e.extra,t,n)}};e.contexts?.trace&&r.contexts&&(r.contexts.trace=e.contexts.trace,e.contexts.trace.data&&(r.contexts.trace.data=bn(e.contexts.trace.data,t,n)));e.spans&&(r.spans=e.spans.map(e=>({...e,...e.data&&{data:bn(e.data,t,n)}})));e.contexts?.flags&&r.contexts&&(r.contexts.flags=bn(e.contexts.flags,3,n));return r}(e,s,a):e))}function yr(e){if(e)return function(e){return e instanceof Fe||"function"==typeof e}(e)||function(e){return Object.keys(e).some(e=>br.includes(e))}(e)?{captureContext:e}:e}const br=["user","level","extra","contexts","tags","fingerprint","propagationContext"];function wr(e,t){return Ge().captureException(e,yr(t))}function xr(e,t){const n="string"==typeof t?t:void 0,r="string"!=typeof t?{captureContext:t}:void 0;return Ge().captureMessage(e,n,r)}function kr(e,t){return Ge().captureEvent(e,t)}function _r(e,t){Je().setContext(e,t)}function Sr(e){Je().setExtras(e)}function Cr(e,t){Je().setExtra(e,t)}function Er(e){Je().setTags(e)}function Tr(e,t){Je().setTag(e,t)}function Mr(e){Je().setUser(e)}function Ir(){return Je().lastEventId()}async function Ar(e){const t=Ze();return t?t.flush(e):(s&&y.warn("Cannot flush events. No client defined."),Promise.resolve(!1))}async function Rr(e){const t=Ze();return t?t.close(e):(s&&y.warn("Cannot flush events and disable SDK. No client defined."),Promise.resolve(!1))}function Lr(){return!!Ze()}function Pr(){const e=Ze();return!1!==e?.getOptions().enabled&&!!e?.getTransport()}function Or(e){Je().addEventProcessor(e)}function Dr(e){const t=Je(),n=Ge(),{userAgent:r}=a.navigator||{},o=Pe({user:n.getUser()||t.getUser(),...r&&{userAgent:r},...e}),i=t.getSession();return"ok"===i?.status&&Oe(i,{status:"exited"}),Nr(),t.setSession(o),o}function Nr(){const e=Je(),t=Ge().getSession()||e.getSession();t&&function(e,t){let n={};t?n={status:t}:"ok"===e.status&&(n={status:"exited"}),Oe(e,n)}(t),Br(),e.setSession()}function Br(){const e=Je(),t=Ze(),n=e.getSession();n&&t&&t.captureSession(n)}function jr(e=!1){e?Nr():Br()}function $r(e){const t=e.protocol?`${e.protocol}:`:"",n=e.port?`:${e.port}`:"";return`${t}//${e.host}${n}${e.path?`/${e.path}`:""}/api/`}function zr(e,t,n){return t||`${function(e){return`${$r(e)}${e.projectId}/envelope/`}(e)}?${function(e,t){const n={sentry_version:"7"};return e.publicKey&&(n.sentry_key=e.publicKey),t&&(n.sentry_client=`${t.name}/${t.version}`),new URLSearchParams(n).toString()}(e,n)}`}const Fr=[];function Hr(e){const t=e.defaultIntegrations||[],n=e.integrations;let r;if(t.forEach(e=>{e.isDefaultInstance=!0}),Array.isArray(n))r=[...t,...n];else if("function"==typeof n){const e=n(t);r=Array.isArray(e)?e:[e]}else r=t;return function(e){const t={};return e.forEach(e=>{const{name:n}=e,r=t[n];r&&!r.isDefaultInstance&&e.isDefaultInstance||(t[n]=e)}),Object.values(t)}(r)}function qr(e,t){for(const n of t)n?.afterAllSetup&&n.afterAllSetup(e)}function Ur(e,t,n){if(n[t.name])s&&y.log(`Integration skipped because it was already installed: ${t.name}`);else{if(n[t.name]=t,Fr.includes(t.name)||"function"!=typeof t.setupOnce||(t.setupOnce(),Fr.push(t.name)),t.setup&&"function"==typeof t.setup&&t.setup(e),"function"==typeof t.preprocessEvent){const n=t.preprocessEvent.bind(t);e.on("preprocessEvent",(t,r)=>n(t,r,e))}if("function"==typeof t.processEvent){const n=t.processEvent.bind(t),r=Object.assign((t,r)=>n(t,r,e),{id:t.name});e.addEventProcessor(r)}s&&y.log(`Integration installed: ${t.name}`)}}function Wr(e){const t=Ze();t?t.addIntegration(e):s&&y.warn(`Cannot add integration "${e.name}" because no SDK Client is available.`)}function Vr(e,t){const{value:n,unit:r}="object"==typeof(o=e)&&null!=o&&!Array.isArray(o)&&Object.keys(o).includes("value")?e:{value:e,unit:void 0};var o;const i=function(e){const t="string"==typeof e?"string":"boolean"==typeof e?"boolean":"number"!=typeof e||Number.isNaN(e)?null:Number.isInteger(e)?"integer":"double";if(t)return{value:e,type:t}}(n),s=r&&"string"==typeof r?{unit:r}:{};if(i)return{...i,...s};if(!t||"skip-undefined"===t&&void 0===n)return;let a="";try{a=JSON.stringify(n)??""}catch{}return{value:a,type:"string",...s}}function Kr(e,t=!1){const n={};for(const[r,o]of Object.entries(e??{})){const e=Vr(o,t);e&&(n[r]=e)}return n}function Gr(e,t){return t?Xe(t,()=>{const n=en(),r=n?Ft(n):et(t);return[n?mn(n):gn(e,t),r]}):[void 0,void 0]}const Jr={trace:1,debug:5,info:9,warn:13,error:17,fatal:21};function Yr(e,t,n,r=!0){!n||e[t]&&!r||(e[t]=n)}function Xr(e,t){const n=to(),r=eo(e);void 0===r?n.set(e,[t]):r.length>=100?(Zr(e,r),n.set(e,[t])):n.set(e,[...r,t])}function Qr(e,t=Ge(),n=Xr){const r=t?.getClient()??Ze();if(!r)return void(s&&y.warn("No client available to capture log."));const{release:o,environment:i,enableLogs:a=!1,beforeSendLog:c}=r.getOptions();if(!a)return void(s&&y.warn("logging option not enabled, log will not be captured."));const[,l]=Gr(r,t),d={...e.attributes},{user:{id:u,email:p,username:h},attributes:g={}}=mr(Je(),t);Yr(d,"user.id",u,!1),Yr(d,"user.email",p,!1),Yr(d,"user.name",h,!1),Yr(d,"sentry.release",o),Yr(d,"sentry.environment",i);const{name:m,version:v}=r.getSdkMetadata()?.sdk??{};Yr(d,"sentry.sdk.name",m),Yr(d,"sentry.sdk.version",v);const b=r.getIntegrationByName("Replay"),w=b?.getReplayId(!0);Yr(d,"sentry.replay_id",w),w&&"buffer"===b?.getRecordingMode()&&Yr(d,"sentry._internal.replay_is_buffering",!0);const x=e.message;if(W(x)){const{__sentry_template_string__:e,__sentry_template_values__:t=[]}=x;t?.length&&(d["sentry.message.template"]=e),t.forEach((e,t)=>{d[`sentry.message.parameter.${t}`]=e})}const k=ze(t);Yr(d,"sentry.trace.parent_span_id",k?.spanContext().spanId);const _={...e,attributes:d};r.emit("beforeCaptureLog",_);const S=c?f(()=>c(_)):_;if(!S)return r.recordDroppedEvent("before_send","log_item",1),void(s&&y.warn("beforeSendLog returned null, log will not be captured."));const{level:C,message:E,attributes:T={},severityNumber:M}=S;n(r,{timestamp:Ae(),level:C,body:E,trace_id:l?.trace_id,severity_number:M??Jr[C],attributes:{...Kr(g),...Kr(T,!0)}}),r.emit("afterCaptureLog",S)}function Zr(e,t){const n=t??eo(e)??[];if(0===n.length)return;const r=e.getOptions(),o=function(e,t,n,r){const o={};return t?.sdk&&(o.sdk={name:t.sdk.name,version:t.sdk.version}),n&&r&&(o.dsn=It(r)),kn(o,[(i=e,[{type:"log",item_count:i.length,content_type:"application/vnd.sentry.items.log+json"},{items:i}])]);var i}(n,r._metadata,r.tunnel,e.getDsn());to().set(e,[]),e.emit("flushLogs"),e.sendEnvelope(o)}function eo(e){return to().get(e)}function to(){return u("clientToLogBufferMap",()=>new WeakMap)}function no(e,t,n,r=!0){!n||!r&&t in e||(e[t]=n)}function ro(e,t){const n=ao(),r=so(e);void 0===r?n.set(e,[t]):r.length>=1e3?(io(e,r),n.set(e,[t])):n.set(e,[...r,t])}function oo(e,t){const n=t?.scope??Ge(),r=t?.captureSerializedMetric??ro,o=n?.getClient()??Ze();if(!o)return void(s&&y.warn("No client available to capture metric."));const{_experiments:i,enableMetrics:a,beforeSendMetric:c}=o.getOptions();if(!(a??i?.enableMetrics??!0))return void(s&&y.warn("metrics option not enabled, metric will not be captured."));const{user:l,attributes:d}=mr(Je(),n),u=function(e,t,n){const{release:r,environment:o}=t.getOptions(),i={...e.attributes};no(i,"user.id",n.id,!1),no(i,"user.email",n.email,!1),no(i,"user.name",n.username,!1),no(i,"sentry.release",r),no(i,"sentry.environment",o);const{name:s,version:a}=t.getSdkMetadata()?.sdk??{};no(i,"sentry.sdk.name",s),no(i,"sentry.sdk.version",a);const c=t.getIntegrationByName("Replay"),l=c?.getReplayId(!0);return no(i,"sentry.replay_id",l),l&&"buffer"===c?.getRecordingMode()&&no(i,"sentry._internal.replay_is_buffering",!0),{...e,attributes:i}}(e,o,l);o.emit("processMetric",u);const p=c||i?.beforeSendMetric,h=p?p(u):u;if(!h)return void(s&&y.log("`beforeSendMetric` returned `null`, will not send metric."));const f=function(e,t,n,r){const[,o]=Gr(t,n),i=ze(n),s=i?i.spanContext().traceId:o?.trace_id,a=i?i.spanContext().spanId:void 0;return{timestamp:Ae(),trace_id:s??"",span_id:a,name:e.name,type:e.type,unit:e.unit,value:e.value,attributes:{...Kr(r),...Kr(e.attributes,"skip-undefined")}}}(h,o,n,d);s&&y.log("[Metric]",f),r(o,f),o.emit("afterCaptureMetric",h)}function io(e,t){const n=t??so(e)??[];if(0===n.length)return;const r=e.getOptions(),o=function(e,t,n,r){const o={};return t?.sdk&&(o.sdk={name:t.sdk.name,version:t.sdk.version}),n&&r&&(o.dsn=It(r)),kn(o,[(i=e,[{type:"trace_metric",item_count:i.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:i}])]);var i}(n,r._metadata,r.tunnel,e.getDsn());ao().set(e,[]),e.emit("flushMetrics"),e.sendEnvelope(o)}function so(e){return ao().get(e)}function ao(){return u("clientToMetricBufferMap",()=>new WeakMap)}const co=Symbol.for("SentryBufferFullError");function lo(e=100){const t=new Set;function n(e){t.delete(e)}return{get $(){return Array.from(t)},add:function(r){if(!(t.size<e))return or(co);const o=r();return t.add(o),o.then(()=>n(o),()=>n(o)),o},drain:function(e){if(!t.size)return rr(!0);const n=Promise.allSettled(Array.from(t)).then(()=>!0);if(!e)return n;const r=[n,new Promise(t=>setTimeout(()=>t(!1),e))];return Promise.race(r)}}}function uo(e,t=me()){const n=parseInt(`${e}`,10);if(!isNaN(n))return 1e3*n;const r=Date.parse(`${e}`);return isNaN(r)?6e4:r-t}function po(e,t,n=me()){return function(e,t){return e[t]||e.all||0}(e,t)>n}function ho(e,{statusCode:t,headers:n},r=me()){const o={...e},i=n?.["x-sentry-rate-limits"],s=n?.["retry-after"];if(i)for(const e of i.trim().split(",")){const[t,n,,,i]=e.split(":",5),s=parseInt(t,10),a=1e3*(isNaN(s)?60:s);if(n)for(const e of n.split(";"))"metric_bucket"===e&&i&&!i.split(";").includes("custom")||(o[e]=r+a);else o.all=r+a}else s?o.all=r+uo(s,r):429===t&&(o.all=r+6e4);return o}function fo(e,t,n=lo(e.bufferSize||64)){let r={};return{send:function(o){const i=[];if(Sn(o,(t,n)=>{const o=Ln(n);po(r,o)?e.recordDroppedEvent("ratelimit_backoff",o):i.push(t)}),0===i.length)return Promise.resolve({});const a=kn(o[0],i),c=t=>{Cn(a,["client_report"])?s&&y.warn(`Dropping client report. Will not send outcomes (reason: ${t}).`):Sn(a,(n,r)=>{e.recordDroppedEvent(t,Ln(r))})};return n.add(()=>t({body:Tn(a)}).then(e=>(void 0!==e.statusCode&&(e.statusCode<200||e.statusCode>=300)&&s&&y.warn(`Sentry responded with status code ${e.statusCode} to sent event.`),r=ho(r,e),e),e=>{throw c("network_error"),s&&y.error("Encountered error running transport request:",e),e})).then(e=>e,e=>{if(e===co)return s&&y.error("Skipped sending event because buffer is full."),c("queue_overflow"),Promise.resolve({});throw e})},flush:e=>n.drain(e)}}function go(e){const t=[];e.message&&t.push(e.message);try{const n=e.exception.values[e.exception.values.length-1];n?.value&&(t.push(n.value),n.type&&t.push(`${n.type}: ${n.value}`))}catch{}return t}const mo="Not capturing exception because it's already been captured.",vo="Discarded session because of missing or non-string release",yo=Symbol.for("SentryInternalError"),bo=Symbol.for("SentryDoNotSendEventError");function wo(e){return{message:e,[yo]:!0}}function xo(e){return{message:e,[bo]:!0}}function ko(e){return!!e&&"object"==typeof e&&yo in e}function _o(e){return!!e&&"object"==typeof e&&bo in e}function So(e,t,n,r,o){let i,s=0,a=!1;e.on(n,()=>{s=0,clearTimeout(i),a=!1}),e.on(t,t=>{s+=r(t),s>=8e5?o(e):a||(a=!0,i=setTimeout(()=>{o(e)},5e3))}),e.on("flush",()=>{o(e)})}class Co{constructor(e){if(this._options=e,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=lo(e.transportOptions?.bufferSize??64),e.dsn?this._dsn=Pt(e.dsn):s&&y.warn("No DSN provided, client will not send events."),this._dsn){const t=zr(this._dsn,e.tunnel,e._metadata?e._metadata.sdk:void 0);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:t})}this._options.enableLogs=this._options.enableLogs??this._options._experiments?.enableLogs,this._options.enableLogs&&So(this,"afterCaptureLog","flushLogs",Ao,Zr);(this._options.enableMetrics??this._options._experiments?.enableMetrics??!0)&&So(this,"afterCaptureMetric","flushMetrics",Io,io)}captureException(e,t,n){const r=ke();if(Te(e))return s&&y.log(mo),r;const o={event_id:r,...t};return this._process(()=>this.eventFromException(e,o).then(e=>this._captureEvent(e,o,n)).then(e=>e),"error"),o.event_id}captureMessage(e,t,n,r){const o={event_id:ke(),...n},i=W(e)?e:String(e),s=V(e),a=s?this.eventFromMessage(i,t,o):this.eventFromException(e,o);return this._process(()=>a.then(e=>this._captureEvent(e,o,r)),s?"unknown":"error"),o.event_id}captureEvent(e,t,n){const r=ke();if(t?.originalException&&Te(t.originalException))return s&&y.log(mo),r;const o={event_id:r,...t},i=e.sdkProcessingMetadata||{},a=i.capturedSpanScope,c=i.capturedSpanIsolationScope,l=Eo(e.type);return this._process(()=>this._captureEvent(e,o,a||n,c),l),o.event_id}captureSession(e){this.sendSession(e),Oe(e,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(e){const t=this._transport;if(!t)return!0;this.emit("flush");const n=await this._isClientDoneProcessing(e),r=await t.flush(e);return n&&r}async close(e){const t=await this.flush(e);return this.getOptions().enabled=!1,this.emit("close"),t}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}init(){(this._isEnabled()||this._options.integrations.some(({name:e})=>e.startsWith("Spotlight")))&&this._setupIntegrations()}getIntegrationByName(e){return this._integrations[e]}addIntegration(e){const t=this._integrations[e.name];Ur(this,e,this._integrations),t||qr(this,[e])}sendEvent(e,t={}){this.emit("beforeSendEvent",e,t);let n=function(e,t,n,r){const o=Pn(n),i=e.type&&"replay_event"!==e.type?e.type:"event";!function(e,t){if(!t)return e;const n=e.sdk||{};e.sdk={...n,name:n.name||t.name,version:n.version||t.version,integrations:[...e.sdk?.integrations||[],...t.integrations||[]],packages:[...e.sdk?.packages||[],...t.packages||[]],settings:e.sdk?.settings||t.settings?{...e.sdk?.settings,...t.settings}:void 0}}(e,n?.sdk);const s=On(e,o,r,t);return delete e.sdkProcessingMetadata,kn(s,[[{type:i},e]])}(e,this._dsn,this._options._metadata,this._options.tunnel);for(const e of t.attachments||[])n=_n(n,An(e));this.sendEnvelope(n).then(t=>this.emit("afterSendEvent",e,t))}sendSession(e){const{release:t,environment:n=un}=this._options;if("aggregates"in e){const r=e.attrs||{};if(!r.release&&!t)return void(s&&y.warn(vo));r.release=r.release||t,r.environment=r.environment||n,e.attrs=r}else{if(!e.release&&!t)return void(s&&y.warn(vo));e.release=e.release||t,e.environment=e.environment||n}this.emit("beforeSendSession",e);const r=function(e,t,n,r){const o=Pn(n);return kn({sent_at:(new Date).toISOString(),...o&&{sdk:o},...!!r&&t&&{dsn:It(t)}},["aggregates"in e?[{type:"sessions"},e]:[{type:"session"},e.toJSON()]])}(e,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(r)}recordDroppedEvent(e,t,n=1){if(this._options.sendClientReports){const r=`${e}:${t}`;s&&y.log(`Recording outcome: "${r}"${n>1?` (${n} times)`:""}`),this._outcomes[r]=(this._outcomes[r]||0)+n}}on(e,t){const n=this._hooks[e]=this._hooks[e]||new Set,r=(...e)=>t(...e);return n.add(r),()=>{n.delete(r)}}emit(e,...t){const n=this._hooks[e];n&&n.forEach(e=>e(...t))}async sendEnvelope(e){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)try{return await this._transport.send(e)}catch(e){return s&&y.error("Error while sending envelope:",e),{}}return s&&y.error("Transport disabled"),{}}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=function(e,t){const n={};return t.forEach(t=>{t&&Ur(e,t,n)}),n}(this,e),qr(this,e)}_updateSessionFromEvent(e,t){let n="fatal"===t.level,r=!1;const o=t.exception?.values;if(o){r=!0,n=!1;for(const e of o)if(!1===e.mechanism?.handled){n=!0;break}}const i="ok"===e.status;(i&&0===e.errors||i&&n)&&(Oe(e,{...n&&{status:"crashed"},errors:e.errors||Number(r||n)}),this.captureSession(e))}async _isClientDoneProcessing(e){let t=0;for(;!e||t<e;){if(await new Promise(e=>setTimeout(e,1)),!this._numProcessing)return!0;t++}return!1}_isEnabled(){return!1!==this.getOptions().enabled&&void 0!==this._transport}_prepareEvent(e,t,n,r){const o=this.getOptions(),i=Object.keys(this._integrations);return!t.integrations&&i?.length&&(t.integrations=i),this.emit("preprocessEvent",e,t),e.type||r.setLastEventId(e.event_id||t.event_id),vr(o,e,t,n,this,r).then(e=>{if(null===e)return e;this.emit("postprocessEvent",e,t),e.contexts={trace:et(n),...e.contexts};const r=gn(this,n);return e.sdkProcessingMetadata={dynamicSamplingContext:r,...e.sdkProcessingMetadata},e})}_captureEvent(e,t={},n=Ge(),r=Je()){return s&&To(e)&&y.log(`Captured error event \`${go(e)[0]||"<unknown>"}\``),this._processEvent(e,t,n,r).then(e=>e.event_id,e=>{s&&(_o(e)?y.log(e.message):ko(e)?y.warn(e.message):y.warn(e))})}_processEvent(e,t,n,r){const o=this.getOptions(),{sampleRate:i}=o,s=Mo(e),a=To(e),c=`before send for type \`${e.type||"error"}\``,l=void 0===i?void 0:Ot(i);if(a&&"number"==typeof l&&ge()>l)return this.recordDroppedEvent("sample_rate","error"),or(xo(`Discarding event because it's not included in the random sample (sampling rate = ${i})`));const d=Eo(e.type);return this._prepareEvent(e,t,n,r).then(e=>{if(null===e)throw this.recordDroppedEvent("event_processor",d),xo("An event processor returned `null`, will not send event.");if(t.data&&!0===t.data.__sentry__)return e;const n=function(e,t,n,r){const{beforeSend:o,beforeSendTransaction:i,beforeSendSpan:s,ignoreSpans:a}=t;let c=n;if(To(c)&&o)return o(c,r);if(Mo(c)){if(s||a){const t=function(e){const{trace_id:t,parent_span_id:n,span_id:r,status:o,origin:i,data:s,op:a}=e.contexts?.trace??{};return{data:s??{},description:e.transaction,op:a,parent_span_id:n,span_id:r??"",start_timestamp:e.start_timestamp??0,status:o,timestamp:e.timestamp,trace_id:t??"",origin:i,profile_id:s?.[dt],exclusive_time:s?.[ut],measurements:e.measurements,is_segment:!0}}(c);if(a?.length&&cn(t,a))return null;if(s){const e=s(t);e?c=De(n,{type:"transaction",timestamp:(l=e).timestamp,start_timestamp:l.start_timestamp,transaction:l.description,contexts:{trace:{trace_id:l.trace_id,span_id:l.span_id,parent_span_id:l.parent_span_id,op:l.op,status:l.status,origin:l.origin,data:{...l.data,...l.profile_id&&{[dt]:l.profile_id},...l.exclusive_time&&{[ut]:l.exclusive_time}}}},measurements:l.measurements}):tn()}if(c.spans){const t=[],n=c.spans;for(const e of n)if(a?.length&&cn(e,a))ln(n,e);else if(s){const n=s(e);n?t.push(n):(tn(),t.push(e))}else t.push(e);const r=c.spans.length-t.length;r&&e.recordDroppedEvent("before_send","span",r),c.spans=t}}if(i){if(c.spans){const e=c.spans.length;c.sdkProcessingMetadata={...n.sdkProcessingMetadata,spanCountBeforeProcessing:e}}return i(c,r)}}var l;return c}(this,o,e,t);return function(e,t){const n=`${t} must return \`null\` or a valid event.`;if(J(e))return e.then(e=>{if(!K(e)&&null!==e)throw wo(n);return e},e=>{throw wo(`${t} rejected with ${e}`)});if(!K(e)&&null!==e)throw wo(n);return e}(n,c)}).then(o=>{if(null===o){if(this.recordDroppedEvent("before_send",d),s){const t=1+(e.spans||[]).length;this.recordDroppedEvent("before_send","span",t)}throw xo(`${c} returned \`null\`, will not send event.`)}const i=n.getSession()||r.getSession();if(a&&i&&this._updateSessionFromEvent(i,o),s){const e=(o.sdkProcessingMetadata?.spanCountBeforeProcessing||0)-(o.spans?o.spans.length:0);e>0&&this.recordDroppedEvent("before_send","span",e)}const l=o.transaction_info;if(s&&l&&o.transaction!==e.transaction){const e="custom";o.transaction_info={...l,source:e}}return this.sendEvent(o,t),o}).then(null,e=>{if(_o(e)||ko(e))throw e;throw this.captureException(e,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:e}),wo(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ${e}`)})}_process(e,t){this._numProcessing++,this._promiseBuffer.add(e).then(e=>(this._numProcessing--,e),e=>(this._numProcessing--,e===co&&this.recordDroppedEvent("queue_overflow",t),e))}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.entries(e).map(([e,t])=>{const[n,r]=e.split(":");return{reason:n,category:r,quantity:t}})}_flushOutcomes(){s&&y.log("Flushing outcomes...");const e=this._clearOutcomes();if(0===e.length)return void(s&&y.log("No outcomes to send"));if(!this._dsn)return void(s&&y.log("No dsn provided, will not send outcomes"));s&&y.log("Sending outcomes:",e);const t=(n=e,kn((r=this._options.tunnel&&It(this._dsn))?{dsn:r}:{},[[{type:"client_report"},{timestamp:o||Me(),discarded_events:n}]]));var n,r,o;this.sendEnvelope(t)}}function Eo(e){return"replay_event"===e?"replay":e||"error"}function To(e){return void 0===e.type}function Mo(e){return"transaction"===e.type}function Io(e){let t=0;return e.name&&(t+=2*e.name.length),t+=8,t+Ro(e.attributes)}function Ao(e){let t=0;return e.message&&(t+=2*e.message.length),t+Ro(e.attributes)}function Ro(e){if(!e)return 0;let t=0;return Object.values(e).forEach(e=>{Array.isArray(e)?t+=e.length*Lo(e[0]):V(e)?t+=Lo(e):t+=100}),t}function Lo(e){return"string"==typeof e?2*e.length:"number"==typeof e?8:"boolean"==typeof e?4:0}function Po(e){return function(e){return z(e)&&"__sentry_fetch_url_host__"in e&&"string"==typeof e.__sentry_fetch_url_host__}(e)?`${e.message} (${e.__sentry_fetch_url_host__})`:e.message}function Oo(e){Ge().setClient(e)}const Do=5e3;function No(e){function t(...e){s&&y.log("[Offline]:",...e)}return n=>{const r=e(n);if(!n.createStore)throw new Error("No `createStore` function was provided");const o=n.createStore(n);let i,s=Do;function a(e){i&&clearTimeout(i),i=setTimeout(async()=>{i=void 0;const e=await o.shift();e&&(t("Attempting to send previously queued event"),e[0].sent_at=(new Date).toISOString(),l(e,!0).catch(e=>{t("Failed to retry sending",e)}))},e),"number"!=typeof i&&i.unref&&i.unref()}function c(){i||(a(s),s=Math.min(2*s,36e5))}async function l(e,i=!1){if(!i&&Cn(e,["replay_event","replay_recording"]))return await o.push(e),a(100),{};try{if(n.shouldSend&&!1===await n.shouldSend(e))throw new Error("Envelope not sent because `shouldSend` callback returned false");const t=await r.send(e);let o=100;if(t)if(t.headers?.["retry-after"])o=uo(t.headers["retry-after"]);else if(t.headers?.["x-sentry-rate-limits"])o=6e4;else if((t.statusCode||0)>=400)return t;return a(o),s=Do,t}catch(r){if(await function(e,t,r){return!Cn(e,["client_report"])&&(!n.shouldStore||n.shouldStore(e,t,r))}(e,r,s))return i?await o.unshift(e):await o.push(e),c(),t("Error sending. Event queued.",r),{};throw r}}return n.flushAtStartup&&c(),{send:l,flush:e=>(void 0===e&&(s=Do,a(100)),r.flush(e))}}}const Bo="MULTIPLEXED_TRANSPORT_EXTRA_KEY";function jo(e,t){let n;return Sn(e,(e,r)=>(t.includes(r)&&(n=Array.isArray(e)?e[1]:void 0),!!n)),n}function $o(e,t){return n=>{const r=e(n),o=new Map,i=t||(e=>{const t=e.getEvent();return t?.extra?.[Bo]&&Array.isArray(t.extra[Bo])?t.extra[Bo]:[]});function s(t,r){const i=r?`${t}:${r}`:t;let s=o.get(i);if(!s){const a=At(t);if(!a)return;const c=zr(a,n.tunnel);s=r?function(e,t){return n=>{const r=e(n);return{...r,send:async e=>{const n=jo(e,["event","transaction","profile","replay_event"]);return n&&(n.release=t),r.send(e)}}}}(e,r)({...n,url:c}):e({...n,url:c}),o.set(i,s)}return[t,s]}return{send:async function(e){const t=i({envelope:e,getEvent:function(t){return jo(e,t?.length?t:["event"])}}).map(e=>"string"==typeof e?s(e,void 0):s(e.dsn,e.release)).filter(e=>!!e),n=t.length?t:[["",r]];return(await Promise.all(n.map(([t,n])=>n.send(function(e,t){return kn(t?{...e[0],dsn:t}:e[0],e[1])}(e,t)))))[0]},flush:async function(e){const t=[...o.values(),r];return(await Promise.all(t.map(t=>t.flush(e)))).every(e=>e)}}}}new Set;function zo(e){return"isRelative"in e}function Fo(e,t){const n=e.indexOf("://")<=0&&0!==e.indexOf("//"),r=t??(n?"thismessage:/":void 0);try{if("canParse"in URL&&!URL.canParse(e,r))return;const t=new URL(e,r);return n?{isRelative:n,pathname:t.pathname,search:t.search,hash:t.hash}:t}catch{}}function Ho(e){if(zo(e))return e.pathname;const t=new URL(e);return t.search="",t.hash="",["80","443"].includes(t.port)&&(t.port=""),t.password&&(t.password="%filtered%"),t.username&&(t.username="%filtered%"),t.toString()}function qo(e){if(!e)return{};const t=e.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};const n=t[6]||"",r=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],search:n,hash:r,relative:t[5]+n+r}}function Uo(e){return e.split(/[?#]/,1)[0]}function Wo(e,t){const n=t?.getDsn(),r=t?.getOptions().tunnel;return function(e,t){const n=Fo(e);if(!n||zo(n))return!1;return!!t&&(n.host.includes(t.host)&&/(^|&|\?)sentry_key=/.test(n.search))}(e,n)||function(e,t){if(!t)return!1;return Vo(e)===Vo(t)}(e,r)}function Vo(e){return"/"===e[e.length-1]?e.slice(0,-1):e}function Ko(e,...t){const n=new String(String.raw(e,...t));return n.__sentry_template_string__=e.join("\0").replace(/%/g,"%%").replace(/\0/g,"%s"),n.__sentry_template_values__=t,n}const Go=Ko;function Jo(e){"aggregates"in e?void 0===e.attrs?.ip_address&&(e.attrs={...e.attrs,ip_address:"{{auto}}"}):void 0===e.ipAddress&&(e.ipAddress="{{auto}}")}function Yo(e={}){const t=e.client||Ze();if(!Pr()||!t)return{};const n=Ke(l());if(n.getTraceData)return n.getTraceData(e);const r=e.scope||Ge(),o=e.span||en(),i=o?Ht(o):function(e){const{traceId:t,sampled:n,propagationSpanId:r}=e.getPropagationContext();return Bt(t,r,n)}(r),s=Ct(o?mn(o):gn(t,r));if(!Dt.test(i))return y.warn("Invalid sentry-trace data. Cannot generate trace data"),{};const a={"sentry-trace":i,baggage:s};return e.propagateTraceparent&&(a.traceparent=o?function(e){const{traceId:t,spanId:n}=e.spanContext();return jt(t,n,Kt(e))}(o):function(e){const{traceId:t,sampled:n,propagationSpanId:r}=e.getPropagationContext();return jt(t,r,n)}(r)),a}const Xo=100;function Qo(e,t){const n=Ze(),r=Je();if(!n)return;const{beforeBreadcrumb:o=null,maxBreadcrumbs:i=Xo}=n.getOptions();if(i<=0)return;const s={timestamp:Me(),...e},a=o?f(()=>o(s,t)):s;null!==a&&(n.emit&&n.emit("beforeAddBreadcrumb",a,t),r.addBreadcrumb(a,i))}let Zo;const ei=new WeakMap,ti=()=>({name:"FunctionToString",setupOnce(){Zo=Function.prototype.toString;try{Function.prototype.toString=function(...e){const t=ae(this),n=ei.has(Ze())&&void 0!==t?t:this;return Zo.apply(n,e)}}catch{}},setup(e){ei.set(e,!0)}}),ni=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,'can\'t redefine non-configurable property "solana"',"vv().getRestrictions is not a function. (In 'vv().getRestrictions(1,a)', 'vv().getRestrictions' is undefined)","Can't find variable: _AutofillCallbackHandler",/^Non-Error promise rejection captured with value: Object Not Found Matching Id:\d+, MethodName:simulateEvent, ParamCount:\d+$/,/^Java exception was raised during method invocation$/],ri=(e={})=>{let t;return{name:"EventFilters",setup(n){const r=n.getOptions();t=ii(e,r)},processEvent(n,r,o){if(!t){const n=o.getOptions();t=ii(e,n)}return function(e,t){if(e.type){if("transaction"===e.type&&function(e,t){if(!t?.length)return!1;const n=e.transaction;return!!n&&xe(n,t)}(e,t.ignoreTransactions))return s&&y.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.\nEvent: ${Se(e)}`),!0}else{if(function(e,t){if(!t?.length)return!1;return go(e).some(e=>xe(e,t))}(e,t.ignoreErrors))return s&&y.warn(`Event dropped due to being matched by \`ignoreErrors\` option.\nEvent: ${Se(e)}`),!0;if(function(e){if(!e.exception?.values?.length)return!1;return!e.message&&!e.exception.values.some(e=>e.stacktrace||e.type&&"Error"!==e.type||e.value)}(e))return s&&y.warn(`Event dropped due to not having an error message, error type or stacktrace.\nEvent: ${Se(e)}`),!0;if(function(e,t){if(!t?.length)return!1;const n=si(e);return!!n&&xe(n,t)}(e,t.denyUrls))return s&&y.warn(`Event dropped due to being matched by \`denyUrls\` option.\nEvent: ${Se(e)}.\nUrl: ${si(e)}`),!0;if(!function(e,t){if(!t?.length)return!0;const n=si(e);return!n||xe(n,t)}(e,t.allowUrls))return s&&y.warn(`Event dropped due to not being matched by \`allowUrls\` option.\nEvent: ${Se(e)}.\nUrl: ${si(e)}`),!0}return!1}(n,t)?null:n}}},oi=(e={})=>({...ri(e),name:"InboundFilters"});function ii(e={},t={}){return{allowUrls:[...e.allowUrls||[],...t.allowUrls||[]],denyUrls:[...e.denyUrls||[],...t.denyUrls||[]],ignoreErrors:[...e.ignoreErrors||[],...t.ignoreErrors||[],...e.disableErrorDefaults?[]:ni],ignoreTransactions:[...e.ignoreTransactions||[],...t.ignoreTransactions||[]]}}function si(e){try{const t=[...e.exception?.values??[]].reverse().find(e=>void 0===e.mechanism?.parent_id&&e.stacktrace?.frames?.length),n=t?.stacktrace?.frames;return n?function(e=[]){for(let t=e.length-1;t>=0;t--){const n=e[t];if(n&&"<anonymous>"!==n.filename&&"[native code]"!==n.filename)return n.filename||null}return null}(n):null}catch{return s&&y.error(`Cannot extract url for event ${Se(e)}`),null}}function ai(e,t,n,r,o,i){if(!o.exception?.values||!i||!Y(i.originalException,Error))return;const s=o.exception.values.length>0?o.exception.values[o.exception.values.length-1]:void 0;s&&(o.exception.values=ci(e,t,r,i.originalException,n,o.exception.values,s,0))}function ci(e,t,n,r,o,i,s,a){if(i.length>=n+1)return i;let c=[...i];if(Y(r[o],Error)){li(s,a);const i=e(t,r[o]),l=c.length;di(i,o,l,a),c=ci(e,t,n,r[o],o,[i,...c],i,l)}return Array.isArray(r.errors)&&r.errors.forEach((r,i)=>{if(Y(r,Error)){li(s,a);const l=e(t,r),d=c.length;di(l,`errors[${i}]`,d,a),c=ci(e,t,n,r,o,[l,...c],l,d)}}),c}function li(e,t){e.mechanism={handled:!0,type:"auto.core.linked_errors",...e.mechanism,..."AggregateError"===e.type&&{is_exception_group:!0},exception_id:t}}function di(e,t,n,r){e.mechanism={handled:!0,...e.mechanism,type:"chained",source:t,exception_id:n,parent_id:r}}const ui=new Map,pi=new Set;function hi(e,t){return function(e){if(a._sentryModuleMetadata)for(const t of Object.keys(a._sentryModuleMetadata)){const n=a._sentryModuleMetadata[t];if(pi.has(t))continue;pi.add(t);const r=e(t);for(const e of r.reverse())if(e.filename){ui.set(e.filename,n);break}}}(e),ui.get(t)}function fi(e,t){t.exception?.values?.forEach(t=>{t.stacktrace?.frames?.forEach(t=>{if(!t.filename||t.module_metadata)return;const n=hi(e,t.filename);n&&(t.module_metadata=n)})})}function gi(e){e.exception?.values?.forEach(e=>{e.stacktrace?.frames?.forEach(e=>{delete e.module_metadata})})}const mi=()=>({name:"ModuleMetadata",setup(e){e.on("beforeEnvelope",e=>{Sn(e,(e,t)=>{if("event"===t){const t=Array.isArray(e)?e[1]:void 0;t&&(gi(t),e[1]=t)}})}),e.on("applyFrameMetadata",t=>{if(t.type)return;fi(e.getOptions().stackParser,t)})}});function vi(e){const t="console";A(t,e),R(t,yi)}function yi(){"console"in a&&p.forEach(function(e){e in a.console&&oe(a.console,e,function(t){return h[e]=t,function(...t){L("console",{args:t,level:e});const n=h[e];n?.apply(a.console,t)}})})}function bi(e){return"warn"===e?"warning":["fatal","error","warning","log","info","debug"].includes(e)?e:"log"}const wi=(e={})=>{const t=e.levels||p,n=e.handled??!0;return{name:"CaptureConsole",setup(e){"console"in a&&vi(({args:r,level:o})=>{Ze()===e&&t.includes(o)&&function(e,t,n){const r=bi(t),o=new Error,i={level:bi(t),extra:{arguments:e}};Xe(s=>{if(s.addEventProcessor(e=>(e.logger="console",Ee(e,{handled:n,type:"auto.core.capture_console"}),e)),"assert"===t){if(!e[0]){const t=`Assertion failed: ${be(e.slice(1)," ")||"console.assert"}`;s.setExtra("arguments",e.slice(1)),s.captureMessage(t,r,{captureContext:i,syntheticException:o})}return}const a=e.find(e=>e instanceof Error);if(a)return void wr(a,i);const c=be(e," ");s.captureMessage(c,r,{captureContext:i,syntheticException:o})})}(r,o,n)})}}};const xi=()=>{let e;return{name:"Dedupe",processEvent(t){if(t.type)return t;try{if(function(e,t){if(!t)return!1;if(function(e,t){const n=e.message,r=t.message;if(!n&&!r)return!1;if(n&&!r||!n&&r)return!1;if(n!==r)return!1;if(!_i(e,t))return!1;if(!ki(e,t))return!1;return!0}(e,t))return!0;if(function(e,t){const n=Si(t),r=Si(e);if(!n||!r)return!1;if(n.type!==r.type||n.value!==r.value)return!1;if(!_i(e,t))return!1;if(!ki(e,t))return!1;return!0}(e,t))return!0;return!1}(t,e))return s&&y.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return e=t}}};function ki(e,t){let n=E(e),r=E(t);if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;if(r.length!==n.length)return!1;for(let e=0;e<r.length;e++){const t=r[e],o=n[e];if(t.filename!==o.filename||t.lineno!==o.lineno||t.colno!==o.colno||t.function!==o.function)return!1}return!0}function _i(e,t){let n=e.fingerprint,r=t.fingerprint;if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;try{return!(n.join("")!==r.join(""))}catch{return!1}}function Si(e){return e.exception?.values?.[0]}const Ci=(e={})=>{const{depth:t=3,captureErrorCause:n=!0}=e;return{name:"ExtraErrorData",processEvent(e,r,o){const{maxValueLength:i}=o.getOptions();return function(e,t={},n,r,o){if(!t.originalException||!z(t.originalException))return e;const i=t.originalException.name||t.originalException.constructor.name,s=Ei(t.originalException,r,o);if(s){const t={...e.contexts},r=bn(s,n);return K(r)&&(ie(r,"__sentry_skip_normalization__",!0),t[i]=r),{...e,contexts:t}}return e}(e,r,t,n,i)}}};function Ei(e,t,n){try{const r=["name","message","stack","line","column","fileName","lineNumber","columnNumber","toJSON"],o={};for(const t of Object.keys(e)){if(-1!==r.indexOf(t))continue;const i=e[t];o[t]=z(i)||"string"==typeof i?n?ve(`${i}`,n):`${i}`:i}if(t&&void 0!==e.cause)if(z(e.cause)){const t=e.cause.name||e.cause.constructor.name;o.cause={[t]:Ei(e.cause,!1,n)}}else o.cause=e.cause;if("function"==typeof e.toJSON){const t=e.toJSON();for(const e of Object.keys(t)){const n=t[e];o[e]=z(n)?n.toString():n}}return o}catch(e){s&&y.error("Unable to extract extra data from the Error object:",e)}return null}function Ti(e,t){let n=0;for(let t=e.length-1;t>=0;t--){const r=e[t];"."===r?e.splice(t,1):".."===r?(e.splice(t,1),n++):n&&(e.splice(t,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}const Mi=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function Ii(e){const t=e.length>1024?`<truncated>${e.slice(-1024)}`:e,n=Mi.exec(t);return n?n.slice(1):[]}function Ai(...e){let t="",n=!1;for(let r=e.length-1;r>=-1&&!n;r--){const o=r>=0?e[r]:"/";o&&(t=`${o}/${t}`,n="/"===o.charAt(0))}return t=Ti(t.split("/").filter(e=>!!e),!n).join("/"),(n?"/":"")+t||"."}function Ri(e){let t=0;for(;t<e.length&&""===e[t];t++);let n=e.length-1;for(;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}const Li=(e={})=>{const t=e.root,n=e.prefix||"app:///",r="window"in a&&!!a.window,o=e.iteratee||function({isBrowser:e,root:t,prefix:n}){return r=>{if(!r.filename)return r;const o=/^[a-zA-Z]:\\/.test(r.filename)||r.filename.includes("\\")&&!r.filename.includes("/"),i=/^\//.test(r.filename);if(e){if(t){const e=r.filename;0===e.indexOf(t)&&(r.filename=e.replace(t,n))}}else if(o||i){const e=o?r.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):r.filename,i=t?function(e,t){e=Ai(e).slice(1),t=Ai(t).slice(1);const n=Ri(e.split("/")),r=Ri(t.split("/")),o=Math.min(n.length,r.length);let i=o;for(let e=0;e<o;e++)if(n[e]!==r[e]){i=e;break}let s=[];for(let e=i;e<n.length;e++)s.push("..");return s=s.concat(r.slice(i)),s.join("/")}(t,e):function(e,t){let n=Ii(e)[2]||"";return t&&n.slice(-1*t.length)===t&&(n=n.slice(0,n.length-t.length)),n}(e);r.filename=`${n}${i}`}return r}}({isBrowser:r,root:t,prefix:n});return{name:"RewriteFrames",processEvent(e){let t=e;return e.exception&&Array.isArray(e.exception.values)&&(t=function(e){try{return{...e,exception:{...e.exception,values:e.exception.values.map(e=>{return{...e,...e.stacktrace&&{stacktrace:(t=e.stacktrace,{...t,frames:t?.frames?.map(e=>o(e))})}};var t})}}}catch{return e}}(t)),t}}};const Pi=["reauthenticate","signInAnonymously","signInWithOAuth","signInWithIdToken","signInWithOtp","signInWithPassword","signInWithSSO","signOut","signUp","verifyOtp"],Oi=["createUser","deleteUser","listUsers","getUserById","updateUserById","inviteUserByEmail"],Di={eq:"eq",neq:"neq",gt:"gt",gte:"gte",lt:"lt",lte:"lte",like:"like","like(all)":"likeAllOf","like(any)":"likeAnyOf",ilike:"ilike","ilike(all)":"ilikeAllOf","ilike(any)":"ilikeAnyOf",is:"is",in:"in",cs:"contains",cd:"containedBy",sr:"rangeGt",nxl:"rangeGte",sl:"rangeLt",nxr:"rangeLte",adj:"rangeAdjacent",ov:"overlaps",fts:"",plfts:"plain",phfts:"phrase",wfts:"websearch",not:"not"},Ni=["select","insert","upsert","update","delete"];function Bi(e){try{e.__SENTRY_INSTRUMENTED__=!0}catch{}}function ji(e){try{return e.__SENTRY_INSTRUMENTED__}catch{return!1}}function $i(e,t){if(""===t||"*"===t)return"select(*)";if("select"===e)return`select(${t})`;if("or"===e||e.endsWith(".or"))return`${e}${t}`;const[n,...r]=t.split(".");let o;return o=n?.startsWith("fts")?"textSearch":n?.startsWith("plfts")?"textSearch[plain]":n?.startsWith("phfts")?"textSearch[phrase]":n?.startsWith("wfts")?"textSearch[websearch]":n&&Di[n]||"filter",`${o}(${e}, ${r.join(".")})`}function zi(e,t=!1){return new Proxy(e,{apply:(n,r,o)=>Hn({name:`auth ${t?"(admin) ":""}${e.name}`,attributes:{[it]:"auto.db.supabase",[ot]:"db","db.system":"postgresql","db.operation":`auth.${t?"admin.":""}${e.name}`}},e=>Reflect.apply(n,r,o).then(t=>(t&&"object"==typeof t&&"error"in t&&t.error?(e.setStatus({code:2}),wr(t.error,{mechanism:{handled:!1,type:"auto.db.supabase.auth"}})):e.setStatus({code:1}),e.end(),t)).catch(t=>{throw e.setStatus({code:2}),e.end(),wr(t,{mechanism:{handled:!1,type:"auto.db.supabase.auth"}}),t}).then(...o))})}function Fi(e){ji(e.prototype.from)||(e.prototype.from=new Proxy(e.prototype.from,{apply(e,t,n){const r=Reflect.apply(e,t,n);return function(e){for(const t of Ni)ji(e.prototype[t])||(e.prototype[t]=new Proxy(e.prototype[t],{apply(e,n,r){const o=Reflect.apply(e,n,r),i=o.constructor;return s&&y.log(`Instrumenting ${t} operation's PostgRESTFilterBuilder`),Hi(i),o}}),Bi(e.prototype[t]))}(r.constructor),r}}),Bi(e.prototype.from))}function Hi(e){ji(e.prototype.then)||(e.prototype.then=new Proxy(e.prototype.then,{apply(e,t,n){const r=Ni,o=t,i=function(e,t={}){switch(e){case"GET":return"select";case"POST":return t.Prefer?.includes("resolution=")?"upsert":"insert";case"PATCH":return"update";case"DELETE":return"delete";default:return"<unknown-op>"}}(o.method,o.headers);if(!r.includes(i))return Reflect.apply(e,t,n);if(!o?.url?.pathname||"string"!=typeof o.url.pathname)return Reflect.apply(e,t,n);const s=o.url.pathname.split("/"),a=s.length>0?s[s.length-1]:"",c=[];for(const[e,t]of o.url.searchParams.entries())c.push($i(e,t));const l=Object.create(null);if(K(o.body))for(const[e,t]of Object.entries(o.body))l[e]=t;const d=`${"select"===i?"":`${i}${l?"(...) ":""}`}${c.join(" ")} from(${a})`,u={"db.table":a,"db.schema":o.schema,"db.url":o.url.origin,"db.sdk":o.headers["X-Client-Info"],"db.system":"postgresql","db.operation":i,[it]:"auto.db.supabase",[ot]:"db"};return c.length&&(u["db.query"]=c),Object.keys(l).length&&(u["db.body"]=l),Hn({name:d,attributes:u},r=>Reflect.apply(e,t,[]).then(e=>{if(r&&(e&&"object"==typeof e&&"status"in e&&mt(r,e.status||500),r.end()),e.error){const t=new Error(e.error.message);e.error.code&&(t.code=e.error.code),e.error.details&&(t.details=e.error.details);const n={};c.length&&(n.query=c),Object.keys(l).length&&(n.body=l),wr(t,e=>(e.addEventProcessor(e=>(Ee(e,{handled:!1,type:"auto.db.supabase.postgres"}),e)),e.setContext("supabase",n),e))}const t={type:"supabase",category:`db.${i}`,message:d},n={};return c.length&&(n.query=c),Object.keys(l).length&&(n.body=l),Object.keys(n).length&&(t.data=n),Qo(t),e},e=>{throw r&&(mt(r,500),r.end()),e}).then(...n))}}),Bi(e.prototype.then))}const qi=e=>{if(!e)return void(s&&y.warn("Supabase integration was not installed because no Supabase client was provided."));Fi(e.constructor===Function?e:e.constructor),function(e){const t=e.auth;if(t&&!ji(e.auth)){for(const n of Pi){const r=t[n];r&&"function"==typeof e.auth[n]&&(e.auth[n]=zi(r))}for(const n of Oi){const r=t.admin[n];r&&"function"==typeof e.auth.admin[n]&&(e.auth.admin[n]=zi(r,!0))}Bi(e.auth)}}(e)},Ui=e=>{return t=e.supabaseClient,{setupOnce(){qi(t)},name:"Supabase"};var t};function Wi(e){return{...e,path:"path"in e&&Array.isArray(e.path)?e.path.join("."):void 0,keys:"keys"in e?JSON.stringify(e.keys):void 0,unionErrors:"unionErrors"in e?JSON.stringify(e.unionErrors):void 0}}function Vi(e){return e.map(e=>"number"==typeof e?"<array>":e).join(".")}function Ki(e){const t=new Set;for(const n of e.issues){const e=Vi(n.path);e.length>0&&t.add(e)}const n=Array.from(t);if(0===n.length){let t="variable";if(e.issues.length>0){const n=e.issues[0];void 0!==n&&"expected"in n&&"string"==typeof n.expected&&(t=n.expected)}return`Failed to validate ${t}`}return`Failed to validate keys: ${ve(n.join(", "),100)}`}function Gi(e,t=!1,n,r){if(!(n.exception?.values&&r.originalException&&(o=r.originalException,z(o)&&"ZodError"===o.name&&Array.isArray(o.issues))&&0!==r.originalException.issues.length))return n;var o;try{const o=(t?r.originalException.issues:r.originalException.issues.slice(0,e)).map(Wi);return t&&(Array.isArray(r.attachments)||(r.attachments=[]),r.attachments.push({filename:"zod_issues.json",data:JSON.stringify({issues:o})})),{...n,exception:{...n.exception,values:[{...n.exception.values[0],value:Ki(r.originalException)},...n.exception.values.slice(1)]},extra:{...n.extra,"zoderror.issues":o.slice(0,e)}}}catch(e){return{...n,extra:{...n.extra,"zoderrors sentry integration parse error":{message:"an exception was thrown while processing ZodError within applyZodErrorsToEvent()",error:e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:"unknown"}}}}}const Ji=(e={})=>{const t=e.limit??10;return{name:"ZodErrors",processEvent:(n,r)=>Gi(t,e.saveZodIssuesAsAttachment,n,r)}},Yi=e=>({name:"ThirdPartyErrorsFilter",setup(e){e.on("beforeEnvelope",e=>{Sn(e,(e,t)=>{if("event"===t){const t=Array.isArray(e)?e[1]:void 0;t&&(gi(t),e[1]=t)}})}),e.on("applyFrameMetadata",t=>{if(t.type)return;fi(e.getOptions().stackParser,t)})},processEvent(t){const n=function(e,t){const n=E(e);if(!n)return;return n.filter((e,n)=>!!e.filename&&((null!=e.lineno||null!=e.colno||null!=e.instruction_addr)&&(!t||!function(e,t){if(0!==t||!e.context_line||!e.filename)return!1;if(!e.filename.includes("sentry")||!e.filename.includes("helpers")||!e.context_line.includes(Zi))return!1;if(e.pre_context){const t=e.pre_context.length;for(let n=0;n<t;n++)if(e.pre_context[n]?.includes(Qi))return!0}return!1}(e,n)))).map(e=>e.module_metadata?Object.keys(e.module_metadata).filter(e=>e.startsWith(Xi)).map(e=>e.slice(Xi.length)):[])}(t,e.ignoreSentryInternalFrames);if(n){const r=n["drop-error-if-contains-third-party-frames"===e.behaviour||"apply-tag-if-contains-third-party-frames"===e.behaviour?"some":"every"](t=>!t.some(t=>e.filterKeys.includes(t)));if(r){if("drop-error-if-contains-third-party-frames"===e.behaviour||"drop-error-if-exclusively-contains-third-party-frames"===e.behaviour)return null;t.tags={...t.tags,third_party_code:!0}}}return t}});const Xi="_sentryBundlerPluginAppKey:",Qi="Attempt to invoke user-land function",Zi="fn.apply(this, wrappedArguments)";const es="flag.evaluation.";function ts(e){const t=Ge().getScopeData().contexts.flags,n=t?t.values:[];return n.length?(void 0===e.contexts&&(e.contexts={}),e.contexts.flags={values:[...n]},e):e}function ns(e,t,n=100){const r=Ge().getScopeData().contexts;r.flags||(r.flags={values:[]});!function(e,t,n,r){if("boolean"!=typeof n)return;if(e.length>r)return void(s&&y.error(`[Feature Flags] insertToFlagBuffer called on a buffer larger than maxSize=${r}`));const o=e.findIndex(e=>e.flag===t);-1!==o&&e.splice(o,1);e.length===r&&e.shift();e.push({flag:t,result:n})}(r.flags.values,e,t,n)}function rs(e,t,n=10){if("boolean"!=typeof t)return;const r=en();if(!r)return;const o=Vt(r).data;if(`${es}${e}`in o)return void r.setAttribute(`${es}${e}`,t);Object.keys(o).filter(e=>e.startsWith(es)).length<n&&r.setAttribute(`${es}${e}`,t)}const os=()=>({name:"FeatureFlags",processEvent:(e,t,n)=>ts(e),addFeatureFlag(e,t){ns(e,t),rs(e,t)}}),is=({growthbookClass:e})=>({name:"GrowthBook",setupOnce(){const t=e.prototype;"function"==typeof t.isOn&&oe(t,"isOn",ss),"function"==typeof t.getFeatureValue&&oe(t,"getFeatureValue",ss)},processEvent:(e,t,n)=>ts(e)});function ss(e){return function(...t){const n=t[0],r=e.apply(this,t);return"string"==typeof n&&"boolean"==typeof r&&(ns(n,r),rs(n,r)),r}}function as(e,t,n,r,o){if(!e.fetchData)return;const{method:i,url:s}=e.fetchData,a=sn()&&t(s);if(e.endTimestamp&&a){const t=e.fetchData.__span;if(!t)return;const n=r[t];return void(n&&(!function(e,t){if(t.response){mt(e,t.response.status);const n=t.response?.headers?.get("content-length");if(n){const t=parseInt(n);t>0&&e.setAttribute("http.response_content_length",t)}}else t.error&&e.setStatus({code:2,message:"internal_error"});e.end()}(n,e),function(e,t,n){const r="object"==typeof n&&null!==n?n.onRequestSpanEnd:void 0;r?.(e,{headers:t.response?.headers,error:t.error})}(n,e,o),delete r[t]))}const{spanOrigin:c="auto.http.browser",propagateTraceparent:l=!1}="object"==typeof o?o:{spanOrigin:o},d=!!en(),u=a&&d?Un(function(e,t,n){const r=Fo(e);return{name:r?`${t} ${Ho(r)}`:t,attributes:ls(e,r,t,n)}}(s,i,c)):new yn;if(e.fetchData.__span=u.spanContext().spanId,r[u.spanContext().spanId]=u,n(e.fetchData.url)){const t=e.args[0],n=e.args[1]||{},r=function(e,t,n,r){const o=Yo({span:n,propagateTraceparent:r}),i=o["sentry-trace"],s=o.baggage,a=o.traceparent;if(!i)return;const c=t.headers||(Q(e)?e.headers:void 0);if(c){if(function(e){return"undefined"!=typeof Headers&&Y(e,Headers)}(c)){const e=new Headers(c);if(e.get("sentry-trace")||e.set("sentry-trace",i),r&&a&&!e.get("traceparent")&&e.set("traceparent",a),s){const t=e.get("baggage");t?cs(t)||e.set("baggage",`${t},${s}`):e.set("baggage",s)}return e}if(Array.isArray(c)){const e=[...c];c.find(e=>"sentry-trace"===e[0])||e.push(["sentry-trace",i]),r&&a&&!c.find(e=>"traceparent"===e[0])&&e.push(["traceparent",a]);const t=c.find(e=>"baggage"===e[0]&&cs(e[1]));return s&&!t&&e.push(["baggage",s]),e}{const e="sentry-trace"in c?c["sentry-trace"]:void 0,t="traceparent"in c?c.traceparent:void 0,n="baggage"in c?c.baggage:void 0,o=n?Array.isArray(n)?[...n]:[n]:[],l=n&&(Array.isArray(n)?n.find(e=>cs(e)):cs(n));s&&!l&&o.push(s);const d={...c,"sentry-trace":e??i,baggage:o.length>0?o.join(","):void 0};return r&&a&&!t&&(d.traceparent=a),d}}return{...o}}(t,n,sn()&&d?u:void 0,l);r&&(e.args[1]=n,n.headers=r)}const p=Ze();if(p){const t={input:e.args,response:e.response,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp};p.emit("beforeOutgoingRequestSpan",u,t)}return u}function cs(e){return e.split(",").some(e=>e.trim().startsWith(kt))}function ls(e,t,n,r){const o={url:e,type:"fetch","http.method":n,[it]:r,[ot]:"http.client"};return t&&(zo(t)||(o["http.url"]=t.href,o["server.address"]=t.host),t.search&&(o["http.query"]=t.search),t.hash&&(o["http.fragment"]=t.hash)),o}const ds="mcp.resource.uri";new WeakMap;new WeakMap;new Set(["client.address","client.port",ds]);new WeakSet;function us(e,t={},n=Ge()){const{message:r,name:o,email:i,url:s,source:a,associatedEventId:c,tags:l}=e,d={contexts:{feedback:{contact_email:i,name:o,message:r,url:s,source:a,associated_event_id:c}},type:"feedback",level:"info",tags:l},u=n?.getClient()||Ze();u&&u.emit("beforeSendFeedback",d,t);return n.captureEvent(d,t)}function ps(e,t,n,r,o){Qr({level:e,message:t,attributes:n,severityNumber:o},r)}function hs(e,t,{scope:n}={}){ps("trace",e,t,n)}function fs(e,t,{scope:n}={}){ps("debug",e,t,n)}function gs(e,t,{scope:n}={}){ps("info",e,t,n)}function ms(e,t,{scope:n}={}){ps("warn",e,t,n)}function vs(e,t,{scope:n}={}){ps("error",e,t,n)}function ys(e,t,{scope:n}={}){ps("fatal",e,t,n)}function bs(e,t,n){return"util"in a&&"function"==typeof a.util.format?a.util.format(...e):function(e,t,n){return e.map(e=>V(e)?String(e):JSON.stringify(bn(e,t,n))).join(" ")}(e,t,n)}function ws(e,t){const n={},r=new Array(t.length).fill("{}").join(" ");return n["sentry.message.template"]=`${e} ${r}`,t.forEach((e,t)=>{n[`sentry.message.parameter.${t}`]=e}),n}const xs={[it]:"auto.log.console"},ks=(e={})=>{const t=e.levels||p;return{name:"ConsoleLogs",setup(e){const{enableLogs:n,normalizeDepth:r=3,normalizeMaxBreadth:o=1e3}=e.getOptions();n?vi(({args:n,level:i})=>{if(Ze()!==e||!t.includes(i))return;const s=n[0],a=n.slice(1);if("assert"===i){if(!s){Qr({level:"error",message:a.length>0?`Assertion failed: ${bs(a,r,o)}`:"Assertion failed",attributes:xs})}return}const c="log"===i,l=n.length>1&&"string"==typeof n[0]&&(d=n[0],!/%[sdifocO]/.test(d));var d;const u={...xs,...l?ws(s,a):{}};Qr({level:c?"info":i,message:bs(n,r,o),severityNumber:c?10:void 0,attributes:u})}):s&&y.warn("`enableLogs` is not enabled, ConsoleLogs integration disabled")}}};function _s(e,t,n,r){oo({type:e,name:t,value:n,unit:r?.unit,attributes:r?.attributes},{scope:r?.scope})}function Ss(e,t=1,n){_s("counter",e,t,n)}function Cs(e,t,n){_s("gauge",e,t,n)}function Es(e,t,n){_s("distribution",e,t,n)}const Ts=["trace","debug","info","warn","error","fatal"];function Ms(e={}){const t=new Set(e.levels??Ts),n=e.client;return{log(e){const{type:r,level:o,message:i,args:s,tag:a,date:c,...l}=e,d=n||Ze();if(!d)return;const u=function(e,t){if("verbose"===e)return"debug";if("silent"===e)return"trace";if(e){const t=Is[e];if(t)return t}if("number"==typeof t){const e=As[t];if(e)return e}return"info"}(r,o);if(!t.has(u))return;const{normalizeDepth:p=3,normalizeMaxBreadth:h=1e3}=d.getOptions(),f=[];i&&f.push(i),s&&s.length>0&&f.push(bs(s,p,h));const g=f.join(" ");l["sentry.origin"]="auto.log.consola",a&&(l["consola.tag"]=a),r&&(l["consola.type"]=r),null!=o&&"number"==typeof o&&(l["consola.level"]=o),Qr({level:u,message:g,attributes:l})}}}const Is={silent:"trace",fatal:"fatal",error:"error",warn:"warn",log:"info",info:"info",success:"info",fail:"error",ready:"info",start:"info",box:"info",debug:"debug",trace:"trace",verbose:"debug",critical:"fatal",notice:"info"},As={0:"fatal",1:"warn",2:"info",3:"info",4:"debug",5:"trace"};const Rs="gen_ai.prompt",Ls="gen_ai.system",Ps="gen_ai.request.model",Os="gen_ai.request.stream",Ds="gen_ai.request.temperature",Ns="gen_ai.request.max_tokens",Bs="gen_ai.request.frequency_penalty",js="gen_ai.request.presence_penalty",$s="gen_ai.request.top_p",zs="gen_ai.request.top_k",Fs="gen_ai.response.finish_reasons",Hs="gen_ai.response.model",qs="gen_ai.response.id",Us="gen_ai.usage.input_tokens",Ws="gen_ai.usage.output_tokens",Vs="gen_ai.usage.total_tokens",Ks="gen_ai.operation.name",Gs="gen_ai.request.messages.original_length",Js="gen_ai.request.messages",Ys="gen_ai.response.text",Xs="gen_ai.request.available_tools",Qs="gen_ai.response.streaming",Zs="gen_ai.response.tool_calls",ea="gen_ai.agent.name",ta="gen_ai.pipeline.name",na="gen_ai.conversation.id",ra="gen_ai.invoke_agent",oa="openai.response.id",ia="openai.response.model",sa="openai.response.timestamp",aa="openai.usage.completion_tokens",ca="openai.usage.prompt_tokens",la="chat",da="responses",ua="embeddings",pa="conversations",ha="anthropic.response.timestamp",fa=(new Map,e=>(new TextEncoder).encode(e).length),ga=e=>fa(JSON.stringify(e));function ma(e,t){if(fa(e)<=t)return e;let n=0,r=e.length,o="";for(;n<=r;){const i=Math.floor((n+r)/2),s=e.slice(0,i);fa(s)<=t?(o=s,n=i+1):r=i-1}return o}function va(e){return"string"==typeof e?e:"text"in e?e.text:""}function ya(e,t){return"string"==typeof e?t:{...e,text:t}}function ba(e){return!(!e||"object"!=typeof e)&&(function(e){return"type"in e&&"string"==typeof e.type&&"source"in e&&ba(e.source)}(e)||wa(e)||"media_type"in e&&"string"==typeof e.media_type&&"data"in e||"image_url"in e&&"string"==typeof e.image_url&&e.image_url.startsWith("data:")||"type"in e&&("blob"===e.type||"base64"===e.type)||"b64_json"in e||"type"in e&&"result"in e&&"image_generation"===e.type||"uri"in e&&"string"==typeof e.uri&&e.uri.startsWith("data:"))}function wa(e){return"inlineData"in e&&!!e.inlineData&&"object"==typeof e.inlineData&&"data"in e.inlineData&&"string"==typeof e.inlineData.data}function xa(e){return null!==e&&"object"==typeof e&&"parts"in e&&Array.isArray(e.parts)&&e.parts.length>0}function ka(e,t){return e&&"object"==typeof e?function(e){return null!==e&&"object"==typeof e&&"content"in e&&"string"==typeof e.content}(e)?function(e,t){const n={...e,content:""},r=t-ga(n);if(r<=0)return[];const o=ma(e.content,r);return[{...e,content:o}]}(e,t):xa(e)?function(e,t){const{parts:n}=e,r=n.map(e=>ya(e,""));let o=t-ga({...e,parts:r});if(o<=0)return[];const i=[];for(const e of n){const t=va(e),n=fa(t);if(!(n<=o)){if(0===i.length){const n=ma(t,o);n&&i.push(ya(e,n));break}break}i.push(e),o-=n}return i.length<=0?[]:[{...e,parts:i}]}(e,t):[]:[]}const _a="[Filtered]",Sa=["image_url","data","content","b64_json","result","uri"];function Ca(e){const t={...e};ba(t.source)&&(t.source=Ca(t.source)),wa(e)&&(t.inlineData={...e.inlineData,data:_a});for(const e of Sa)"string"==typeof t[e]&&(t[e]=_a);return t}function Ea(e){return e.map(e=>{let t;return e&&"object"==typeof e&&(!function(e){return null!==e&&"object"==typeof e&&"content"in e&&Array.isArray(e.content)}(e)?"content"in e&&ba(e.content)&&(t={...e,content:Ca(e.content)}):t={...e,content:Ea(e.content)},xa(e)&&(t={...t??e,parts:Ea(e.parts)}),ba(t)?t=Ca(t):ba(e)&&(t=Ca(e))),t??e})}function Ta(e){return function(e,t){if(!Array.isArray(e)||0===e.length)return e;const n=Ea(e);if(ga(n)<=t)return n;const r=n.map(ga);let o=0,i=n.length;for(let e=n.length-1;e>=0;e--){const n=r[e];if(n&&o+n>t)break;n&&(o+=n),i=e}if(i===n.length)return ka(n[n.length-1],t);return n.slice(i)}(e,2e4)}function Ma(e){return e.includes("messages")?"messages":e.includes("completions")?"completions":e.includes("models")?"models":e.includes("chat")?"chat":e.split(".").pop()||"unknown"}function Ia(e){return`gen_ai.${Ma(e)}`}function Aa(e,t){return e?`${e}.${t}`:t}function Ra(e,t,n,r,o){if(void 0!==t&&e.setAttributes({[Us]:t}),void 0!==n&&e.setAttributes({[Ws]:n}),void 0!==t||void 0!==n||void 0!==r||void 0!==o){const i=(t??0)+(n??0)+(r??0)+(o??0);e.setAttributes({[Vs]:i})}}function La(e){if("string"==typeof e)return ma(e,2e4);if(Array.isArray(e)){const t=Ta(e);return JSON.stringify(t)}return JSON.stringify(e)}const Pa=["responses.create","chat.completions.create","embeddings.create","conversations.create"],Oa=["response.created","response.in_progress","response.failed","response.completed","response.incomplete","response.queued","response.output_text.delta","response.output_item.added","response.function_call_arguments.delta","response.function_call_arguments.done","response.output_item.done"];function Da(e){return e.includes("chat.completions")?la:e.includes("responses")?da:e.includes("embeddings")?ua:e.includes("conversations")?pa:e.split(".").pop()||"unknown"}function Na(e){return`gen_ai.${Da(e)}`}function Ba(e){return null!==e&&"object"==typeof e&&"type"in e&&"string"==typeof e.type&&e.type.startsWith("response.")}function ja(e){return null!==e&&"object"==typeof e&&"object"in e&&"chat.completion.chunk"===e.object}function $a(e,t,n,r){void 0!==t&&e.setAttributes({[ca]:t,[Us]:t}),void 0!==n&&e.setAttributes({[aa]:n,[Ws]:n}),void 0!==r&&e.setAttributes({[Vs]:r})}function za(e,t,n,r){e.setAttributes({[oa]:t,[qs]:t}),e.setAttributes({[ia]:n,[Hs]:n}),e.setAttributes({[sa]:new Date(1e3*r).toISOString()})}function Fa(e,t){for(const n of e){const e=n.index;if(void 0!==e&&n.function)if(e in t.chatCompletionToolCalls){const r=t.chatCompletionToolCalls[e];n.function.arguments&&r?.function&&(r.function.arguments+=n.function.arguments)}else t.chatCompletionToolCalls[e]={...n,function:{name:n.function.name,arguments:n.function.arguments||""}}}}function Ha(e,t,n){t.responseId=e.id??t.responseId,t.responseModel=e.model??t.responseModel,t.responseTimestamp=e.created??t.responseTimestamp,e.usage&&(t.promptTokens=e.usage.prompt_tokens,t.completionTokens=e.usage.completion_tokens,t.totalTokens=e.usage.total_tokens);for(const r of e.choices??[])n&&(r.delta?.content&&t.responseTexts.push(r.delta.content),r.delta?.tool_calls&&Fa(r.delta.tool_calls,t)),r.finish_reason&&t.finishReasons.push(r.finish_reason)}function qa(e,t,n,r){if(!e||"object"!=typeof e)return void t.eventTypes.push("unknown:non-object");if(e instanceof Error)return r.setStatus({code:2,message:"internal_error"}),void wr(e,{mechanism:{handled:!1,type:"auto.ai.openai.stream-response"}});if(!("type"in e))return;const o=e;if(Oa.includes(o.type)){if(n&&("response.output_item.done"===o.type&&"item"in o&&t.responsesApiToolCalls.push(o.item),"response.output_text.delta"===o.type&&"delta"in o&&o.delta))t.responseTexts.push(o.delta);else if("response"in o){const{response:e}=o;t.responseId=e.id??t.responseId,t.responseModel=e.model??t.responseModel,t.responseTimestamp=e.created_at??t.responseTimestamp,e.usage&&(t.promptTokens=e.usage.input_tokens,t.completionTokens=e.usage.output_tokens,t.totalTokens=e.usage.total_tokens),e.status&&t.finishReasons.push(e.status),n&&e.output_text&&t.responseTexts.push(e.output_text)}}else t.eventTypes.push(o.type)}function Ua(e,t){const n={[Ls]:"openai",[Ks]:Da(t),[it]:"auto.ai.openai"};if(e.length>0&&"object"==typeof e[0]&&null!==e[0]){const t=e[0],r=function(e){const t=[...Array.isArray(e.tools)?e.tools:[],...e.web_search_options&&"object"==typeof e.web_search_options?[{type:"web_search_options",...e.web_search_options}]:[]];return t.length>0?JSON.stringify(t):void 0}(t);r&&(n[Xs]=r),Object.assign(n,function(e){const t={[Ps]:e.model??"unknown"};"temperature"in e&&(t[Ds]=e.temperature),"top_p"in e&&(t[$s]=e.top_p),"frequency_penalty"in e&&(t[Bs]=e.frequency_penalty),"presence_penalty"in e&&(t[js]=e.presence_penalty),"stream"in e&&(t[Os]=e.stream),"encoding_format"in e&&(t["gen_ai.request.encoding_format"]=e.encoding_format),"dimensions"in e&&(t["gen_ai.request.dimensions"]=e.dimensions);const n=function(e){return"conversation"in e&&"string"==typeof e.conversation?e.conversation:"previous_response_id"in e&&"string"==typeof e.previous_response_id?e.previous_response_id:void 0}(e);return n&&(t[na]=n),t}(t))}else n[Ps]="unknown";return n}function Wa(e,t,n){if(!t||"object"!=typeof t)return;const r=t;if(function(e){return null!==e&&"object"==typeof e&&"object"in e&&"chat.completion"===e.object}(r)){if(function(e,t,n){if(za(e,t.id,t.model,t.created),t.usage&&$a(e,t.usage.prompt_tokens,t.usage.completion_tokens,t.usage.total_tokens),Array.isArray(t.choices)){const r=t.choices.map(e=>e.finish_reason).filter(e=>null!==e);if(r.length>0&&e.setAttributes({[Fs]:JSON.stringify(r)}),n){const n=t.choices.map(e=>e.message?.tool_calls).filter(e=>Array.isArray(e)&&e.length>0).flat();n.length>0&&e.setAttributes({[Zs]:JSON.stringify(n)})}}}(e,r,n),n&&r.choices?.length){const t=r.choices.map(e=>e.message?.content||"");e.setAttributes({[Ys]:JSON.stringify(t)})}}else!function(e){return null!==e&&"object"==typeof e&&"object"in e&&"response"===e.object}(r)?function(e){if(null===e||"object"!=typeof e||!("object"in e))return!1;const t=e;return"list"===t.object&&"string"==typeof t.model&&t.model.toLowerCase().includes("embedding")}(r)?function(e,t){e.setAttributes({[ia]:t.model,[Hs]:t.model}),t.usage&&$a(e,t.usage.prompt_tokens,void 0,t.usage.total_tokens)}(e,r):function(e){return null!==e&&"object"==typeof e&&"object"in e&&"conversation"===e.object}(r)&&function(e,t){const{id:n,created_at:r}=t;e.setAttributes({[oa]:n,[qs]:n,[na]:n}),r&&e.setAttributes({[sa]:new Date(1e3*r).toISOString()})}(e,r):(!function(e,t,n){if(za(e,t.id,t.model,t.created_at),t.status&&e.setAttributes({[Fs]:JSON.stringify([t.status])}),t.usage&&$a(e,t.usage.input_tokens,t.usage.output_tokens,t.usage.total_tokens),n){const n=t;if(Array.isArray(n.output)&&n.output.length>0){const t=n.output.filter(e=>"object"==typeof e&&null!==e&&"function_call"===e.type);t.length>0&&e.setAttributes({[Zs]:JSON.stringify(t)})}}}(e,r,n),n&&r.output_text&&e.setAttributes({[Ys]:r.output_text}))}function Va(e,t){const n="input"in t?t.input:"messages"in t?t.messages:void 0,r=Array.isArray(n)?n.length:void 0;if(n&&0!==r){const t=La(n);e.setAttribute(Js,t),r&&e.setAttribute(Gs,r)}}function Ka(e,t,n,r){return async function(...o){const i=Ua(o,t),s=i[Ps]||"unknown",a=Da(t),c=o[0];return c&&"object"==typeof c&&!0===c.stream?qn({name:`${a} ${s} stream-response`,op:Na(t),attributes:i},async i=>{try{r.recordInputs&&c&&Va(i,c);return async function*(e,t,n){const r={eventTypes:[],responseTexts:[],finishReasons:[],responseId:"",responseModel:"",responseTimestamp:0,promptTokens:void 0,completionTokens:void 0,totalTokens:void 0,chatCompletionToolCalls:{},responsesApiToolCalls:[]};try{for await(const o of e)ja(o)?Ha(o,r,n):Ba(o)&&qa(o,r,n,t),yield o}finally{za(t,r.responseId,r.responseModel,r.responseTimestamp),$a(t,r.promptTokens,r.completionTokens,r.totalTokens),t.setAttributes({[Qs]:!0}),r.finishReasons.length&&t.setAttributes({[Fs]:JSON.stringify(r.finishReasons)}),n&&r.responseTexts.length&&t.setAttributes({[Ys]:r.responseTexts.join("")});const e=[...Object.values(r.chatCompletionToolCalls),...r.responsesApiToolCalls];e.length>0&&t.setAttributes({[Zs]:JSON.stringify(e)}),t.end()}}(await e.apply(n,o),i,r.recordOutputs??!1)}catch(e){throw i.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.openai.stream",data:{function:t}}}),i.end(),e}}):Hn({name:`${a} ${s}`,op:Na(t),attributes:i},async i=>{try{r.recordInputs&&c&&Va(i,c);const t=await e.apply(n,o);return Wa(i,t,r.recordOutputs),t}catch(e){throw wr(e,{mechanism:{handled:!1,type:"auto.ai.openai",data:{function:t}}}),e}})}}function Ga(e,t="",n){return new Proxy(e,{get(e,r){const o=e[r],i=function(e,t){return e?`${e}.${t}`:t}(t,String(r));return"function"==typeof o&&function(e){return Pa.includes(e)}(i)?Ka(o,i,e,n):"function"==typeof o?o.bind(e):o&&"object"==typeof o?Ga(o,i,n):o}})}function Ja(e,t){const n=Boolean(Ze()?.getOptions().sendDefaultPii);return Ga(e,"",{recordInputs:n,recordOutputs:n,...t})}function Ya(e,t,n,r){if(!e||"object"!=typeof e)return;const o=function(e,t){return"type"in e&&"string"==typeof e.type&&"error"===e.type&&(t.setStatus({code:2,message:e.error?.type??"internal_error"}),wr(e.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}}),!0)}(e,r);o||(function(e,t){if("message_delta"===e.type&&e.usage&&"output_tokens"in e.usage&&"number"==typeof e.usage.output_tokens&&(t.completionTokens=e.usage.output_tokens),e.message){const n=e.message;n.id&&(t.responseId=n.id),n.model&&(t.responseModel=n.model),n.stop_reason&&t.finishReasons.push(n.stop_reason),n.usage&&("number"==typeof n.usage.input_tokens&&(t.promptTokens=n.usage.input_tokens),"number"==typeof n.usage.cache_creation_input_tokens&&(t.cacheCreationInputTokens=n.usage.cache_creation_input_tokens),"number"==typeof n.usage.cache_read_input_tokens&&(t.cacheReadInputTokens=n.usage.cache_read_input_tokens))}}(e,t),function(e,t){"content_block_start"===e.type&&"number"==typeof e.index&&e.content_block&&("tool_use"!==e.content_block.type&&"server_tool_use"!==e.content_block.type||(t.activeToolBlocks[e.index]={id:e.content_block.id,name:e.content_block.name,inputJsonParts:[]}))}(e,t),function(e,t,n){if("content_block_delta"===e.type&&e.delta){if("number"==typeof e.index&&"partial_json"in e.delta&&"string"==typeof e.delta.partial_json){const n=t.activeToolBlocks[e.index];n&&n.inputJsonParts.push(e.delta.partial_json)}n&&"string"==typeof e.delta.text&&t.responseTexts.push(e.delta.text)}}(e,t,n),function(e,t){if("content_block_stop"!==e.type||"number"!=typeof e.index)return;const n=t.activeToolBlocks[e.index];if(!n)return;const r=n.inputJsonParts.join("");let o;try{o=r?JSON.parse(r):{}}catch{o={__unparsed:r}}t.toolCalls.push({type:"tool_use",id:n.id,name:n.name,input:o}),delete t.activeToolBlocks[e.index]}(e,t))}function Xa(e,t,n){const r={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};return e.on("streamEvent",e=>{Ya(e,r,n,t)}),e.on("message",()=>{!function(e,t,n){t.isRecording()&&(e.responseId&&t.setAttributes({[qs]:e.responseId}),e.responseModel&&t.setAttributes({[Hs]:e.responseModel}),Ra(t,e.promptTokens,e.completionTokens,e.cacheCreationInputTokens,e.cacheReadInputTokens),t.setAttributes({[Qs]:!0}),e.finishReasons.length>0&&t.setAttributes({[Fs]:JSON.stringify(e.finishReasons)}),n&&e.responseTexts.length>0&&t.setAttributes({[Ys]:e.responseTexts.join("")}),n&&e.toolCalls.length>0&&t.setAttributes({[Zs]:JSON.stringify(e.toolCalls)}),t.end())}(r,t,n)}),e.on("error",e=>{wr(e,{mechanism:{handled:!1,type:"auto.ai.anthropic.stream_error"}}),t.isRecording()&&(t.setStatus({code:2,message:"stream_error"}),t.end())}),e}const Qa=["messages.create","messages.stream","messages.countTokens","models.get","completions.create","models.retrieve","beta.messages.create"];function Za(e,t){const n=function(e){const{system:t,messages:n,input:r}=e,o="string"==typeof t?[{role:"system",content:e.system}]:[],i=Array.isArray(r)?r:null!=r?[r]:void 0,s=Array.isArray(n)?n:null!=n?[n]:[];return[...o,...i??s]}(t);!function(e,t){const n=Array.isArray(t)?t.length:void 0;0!==n&&e.setAttributes({[Js]:La(t),[Gs]:n})}(e,n),"prompt"in t&&e.setAttributes({[Rs]:JSON.stringify(t.prompt)})}function ec(e,t,n){t&&"object"==typeof t&&("type"in t&&"error"===t.type?function(e,t){t.error&&(e.setStatus({code:2,message:t.error.type||"internal_error"}),wr(t.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}}))}(e,t):(n&&function(e,t){if("content"in t&&Array.isArray(t.content)){e.setAttributes({[Ys]:t.content.map(e=>e.text).filter(e=>!!e).join("")});const n=[];for(const e of t.content)"tool_use"!==e.type&&"server_tool_use"!==e.type||n.push(e);n.length>0&&e.setAttributes({[Zs]:JSON.stringify(n)})}"completion"in t&&e.setAttributes({[Ys]:t.completion}),"input_tokens"in t&&e.setAttributes({[Ys]:JSON.stringify(t.input_tokens)})}(e,t),function(e,t){"id"in t&&"model"in t&&(e.setAttributes({[qs]:t.id,[Hs]:t.model}),"created"in t&&"number"==typeof t.created&&e.setAttributes({[ha]:new Date(1e3*t.created).toISOString()}),"created_at"in t&&"number"==typeof t.created_at&&e.setAttributes({[ha]:new Date(1e3*t.created_at).toISOString()}),"usage"in t&&t.usage&&Ra(e,t.usage.input_tokens,t.usage.output_tokens,t.usage.cache_creation_input_tokens,t.usage.cache_read_input_tokens))}(e,t)))}function tc(e,t,n){throw wr(e,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:n}}}),t.isRecording()&&(t.setStatus({code:2,message:"internal_error"}),t.end()),e}function nc(e,t,n,r,o,i,s,a,c,l,d){const u={name:`${i} ${o[Ps]??"unknown"} stream-response`,op:Ia(s),attributes:o};return qn(u,l&&!d?async t=>{try{c.recordInputs&&a&&Za(t,a);return async function*(e,t,n){const r={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};try{for await(const o of e)Ya(o,r,n,t),yield o}finally{r.responseId&&t.setAttributes({[qs]:r.responseId}),r.responseModel&&t.setAttributes({[Hs]:r.responseModel}),Ra(t,r.promptTokens,r.completionTokens,r.cacheCreationInputTokens,r.cacheReadInputTokens),t.setAttributes({[Qs]:!0}),r.finishReasons.length>0&&t.setAttributes({[Fs]:JSON.stringify(r.finishReasons)}),n&&r.responseTexts.length>0&&t.setAttributes({[Ys]:r.responseTexts.join("")}),n&&r.toolCalls.length>0&&t.setAttributes({[Zs]:JSON.stringify(r.toolCalls)}),t.end()}}(await e.apply(n,r),t,c.recordOutputs??!1)}catch(e){return tc(e,t,s)}}:e=>{try{c.recordInputs&&a&&Za(e,a);return Xa(t.apply(n,r),e,c.recordOutputs??!1)}catch(t){return tc(t,e,s)}})}function rc(e,t,n,r){return new Proxy(e,{apply(o,i,s){const a=function(e,t){const n={[Ls]:"anthropic",[Ks]:Ma(t),[it]:"auto.ai.anthropic"};if(e.length>0&&"object"==typeof e[0]&&null!==e[0]){const t=e[0];t.tools&&Array.isArray(t.tools)&&(n[Xs]=JSON.stringify(t.tools)),n[Ps]=t.model??"unknown","temperature"in t&&(n[Ds]=t.temperature),"top_p"in t&&(n[$s]=t.top_p),"stream"in t&&(n[Os]=t.stream),"top_k"in t&&(n[zs]=t.top_k),"frequency_penalty"in t&&(n[Bs]=t.frequency_penalty),"max_tokens"in t&&(n[Ns]=t.max_tokens)}else n[Ps]="models.retrieve"===t||"models.get"===t?e[0]:"unknown";return n}(s,t),c=a[Ps]??"unknown",l=Ma(t),d="object"==typeof s[0]?s[0]:void 0,u=Boolean(d?.stream),p="messages.stream"===t;return u||p?nc(e,o,n,s,a,l,t,d,r,u,p):Hn({name:`${l} ${c}`,op:Ia(t),attributes:a},e=>(r.recordInputs&&d&&Za(e,d),zn(()=>o.apply(n,s),e=>{wr(e,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:t}}})},()=>{},t=>ec(e,t,r.recordOutputs))))}})}function oc(e,t="",n){return new Proxy(e,{get(e,r){const o=e[r],i=Aa(t,String(r));return"function"==typeof o&&function(e){return Qa.includes(e)}(i)?rc(o,i,e,n):"function"==typeof o?o.bind(e):o&&"object"==typeof o?oc(o,i,n):o}})}function ic(e,t){const n=Boolean(Ze()?.getOptions().sendDefaultPii);return oc(e,"",{recordInputs:n,recordOutputs:n,...t})}const sc=["models.generateContent","models.generateContentStream","chats.create","sendMessage","sendMessageStream"],ac="chats.create";function cc(e,t,n,r){e&&!function(e,t){const n=e?.promptFeedback;if(n?.blockReason){const e=n.blockReasonMessage??n.blockReason;return t.setStatus({code:2,message:`Content blocked: ${e}`}),wr(`Content blocked: ${e}`,{mechanism:{handled:!1,type:"auto.ai.google_genai"}}),!0}return!1}(e,r)&&(function(e,t){"string"==typeof e.responseId&&(t.responseId=e.responseId),"string"==typeof e.modelVersion&&(t.responseModel=e.modelVersion);const n=e.usageMetadata;n&&("number"==typeof n.promptTokenCount&&(t.promptTokens=n.promptTokenCount),"number"==typeof n.candidatesTokenCount&&(t.completionTokens=n.candidatesTokenCount),"number"==typeof n.totalTokenCount&&(t.totalTokens=n.totalTokenCount))}(e,t),function(e,t,n){Array.isArray(e.functionCalls)&&t.toolCalls.push(...e.functionCalls);for(const r of e.candidates??[]){r?.finishReason&&!t.finishReasons.includes(r.finishReason)&&t.finishReasons.push(r.finishReason);for(const e of r?.content?.parts??[])n&&e.text&&t.responseTexts.push(e.text),e.functionCall&&t.toolCalls.push({type:"function",id:e.functionCall.id,name:e.functionCall.name,arguments:e.functionCall.args})}}(e,t,n))}function lc(e,t="user"){return"string"==typeof e?[{role:t,content:e}]:Array.isArray(e)?e.flatMap(e=>lc(e,t)):"object"==typeof e&&e?"role"in e&&"string"==typeof e.role?[e]:"parts"in e?[{...e,role:t}]:[{role:t,content:e}]:[]}function dc(e,t){if("model"in e&&"string"==typeof e.model)return e.model;if(t&&"object"==typeof t){const e=t;if("model"in e&&"string"==typeof e.model)return e.model;if("modelVersion"in e&&"string"==typeof e.modelVersion)return e.modelVersion}return"unknown"}function uc(e,t,n){const r={[Ls]:"google_genai",[Ks]:Ma(e),[it]:"auto.ai.google_genai"};if(t){if(r[Ps]=dc(t,n),"config"in t&&"object"==typeof t.config&&t.config){const e=t.config;if(Object.assign(r,function(e){const t={};return"temperature"in e&&"number"==typeof e.temperature&&(t[Ds]=e.temperature),"topP"in e&&"number"==typeof e.topP&&(t[$s]=e.topP),"topK"in e&&"number"==typeof e.topK&&(t[zs]=e.topK),"maxOutputTokens"in e&&"number"==typeof e.maxOutputTokens&&(t[Ns]=e.maxOutputTokens),"frequencyPenalty"in e&&"number"==typeof e.frequencyPenalty&&(t[Bs]=e.frequencyPenalty),"presencePenalty"in e&&"number"==typeof e.presencePenalty&&(t[js]=e.presencePenalty),t}(e)),"tools"in e&&Array.isArray(e.tools)){const t=e.tools.flatMap(e=>e.functionDeclarations);r[Xs]=JSON.stringify(t)}}}else r[Ps]=dc({},n);return r}function pc(e,t){const n=[];"config"in t&&t.config&&"object"==typeof t.config&&"systemInstruction"in t.config&&t.config.systemInstruction&&n.push(...lc(t.config.systemInstruction,"system")),"history"in t&&n.push(...lc(t.history,"user")),"contents"in t&&n.push(...lc(t.contents,"user")),"message"in t&&n.push(...lc(t.message,"user")),Array.isArray(n)&&n.length&&e.setAttributes({[Gs]:n.length,[Js]:JSON.stringify(Ta(n))})}function hc(e,t,n,r){const o=t===ac;return new Proxy(e,{apply(e,i,s){const a=s[0],c=uc(t,a,n),l=c[Ps]??"unknown",d=Ma(t);return function(e){return e.includes("Stream")}(t)?qn({name:`${d} ${l} stream-response`,op:Ia(t),attributes:c},async o=>{try{r.recordInputs&&a&&pc(o,a);return async function*(e,t,n){const r={responseTexts:[],finishReasons:[],toolCalls:[]};try{for await(const o of e)cc(o,r,n,t),yield o}finally{const e={[Qs]:!0};r.responseId&&(e[qs]=r.responseId),r.responseModel&&(e[Hs]=r.responseModel),void 0!==r.promptTokens&&(e[Us]=r.promptTokens),void 0!==r.completionTokens&&(e[Ws]=r.completionTokens),void 0!==r.totalTokens&&(e[Vs]=r.totalTokens),r.finishReasons.length&&(e[Fs]=JSON.stringify(r.finishReasons)),n&&r.responseTexts.length&&(e[Ys]=r.responseTexts.join("")),n&&r.toolCalls.length&&(e[Zs]=JSON.stringify(r.toolCalls)),t.setAttributes(e),t.end()}}(await e.apply(n,s),o,Boolean(r.recordOutputs))}catch(e){throw o.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:t}}}),o.end(),e}}):Hn({name:o?`${d} ${l} create`:`${d} ${l}`,op:Ia(t),attributes:c},i=>(r.recordInputs&&a&&pc(i,a),zn(()=>e.apply(n,s),e=>{wr(e,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:t}}})},()=>{},e=>{o||function(e,t,n){if(t&&"object"==typeof t){if(t.modelVersion&&e.setAttribute(Hs,t.modelVersion),t.usageMetadata&&"object"==typeof t.usageMetadata){const n=t.usageMetadata;"number"==typeof n.promptTokenCount&&e.setAttributes({[Us]:n.promptTokenCount}),"number"==typeof n.candidatesTokenCount&&e.setAttributes({[Ws]:n.candidatesTokenCount}),"number"==typeof n.totalTokenCount&&e.setAttributes({[Vs]:n.totalTokenCount})}if(n&&Array.isArray(t.candidates)&&t.candidates.length>0){const n=t.candidates.map(e=>e.content?.parts&&Array.isArray(e.content.parts)?e.content.parts.map(e=>"string"==typeof e.text?e.text:"").filter(e=>e.length>0).join(""):"").filter(e=>e.length>0);n.length>0&&e.setAttributes({[Ys]:n.join("")})}if(n&&t.functionCalls){const n=t.functionCalls;Array.isArray(n)&&n.length>0&&e.setAttributes({[Zs]:JSON.stringify(n)})}}}(i,e,r.recordOutputs)})))}})}function fc(e,t="",n){return new Proxy(e,{get:(e,r,o)=>{const i=Reflect.get(e,r,o),s=Aa(t,String(r));if("function"==typeof i&&function(e){if(sc.includes(e))return!0;const t=e.split(".").pop();return sc.includes(t)}(s)){if(s===ac){const t=hc(i,s,e,n);return function(...e){const r=t(...e);return r&&"object"==typeof r?fc(r,"chat",n):r}}return hc(i,s,e,n)}return"function"==typeof i?i.bind(e):i&&"object"==typeof i?fc(i,s,n):i}})}function gc(e,t){const n=Boolean(Ze()?.getOptions().sendDefaultPii);return fc(e,"",{recordInputs:n,recordOutputs:n,...t})}const mc="auto.ai.langchain",vc={human:"user",ai:"assistant",assistant:"assistant",system:"system",function:"function",tool:"tool"},yc=(e,t,n)=>{null!=n&&(e[t]=n)},bc=(e,t,n)=>{const r=Number(n);Number.isNaN(r)||(e[t]=r)};function wc(e){if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}function xc(e){const t=e.toLowerCase();return vc[t]??t}function kc(e){return e.includes("System")?"system":e.includes("Human")?"user":e.includes("AI")||e.includes("Assistant")?"assistant":e.includes("Function")?"function":e.includes("Tool")?"tool":"user"}function _c(e){if(e&&!Array.isArray(e))return e.invocation_params}function Sc(e){return e.map(e=>{const t=e._getType;if("function"==typeof t){return{role:xc(t.call(e)),content:wc(e.content)}}const n=e.constructor?.name;if(n)return{role:xc(kc(n)),content:wc(e.content)};if(e.type){return{role:xc(String(e.type).toLowerCase()),content:wc(e.content)}}if(e.role)return{role:xc(String(e.role)),content:wc(e.content)};if(1===e.lc&&e.kwargs){const t=e.id,n=Array.isArray(t)&&t.length>0?t[t.length-1]:"";return{role:xc("string"==typeof n?kc(n):"user"),content:wc(e.kwargs?.content)}}return{role:"user",content:wc(e.content)}})}function Cc(e,t,n){const r={},o="kwargs"in e?e.kwargs:void 0;bc(r,Ds,t?.temperature??n?.ls_temperature??o?.temperature);bc(r,Ns,t?.max_tokens??n?.ls_max_tokens??o?.max_tokens);bc(r,$s,t?.top_p??o?.top_p);const i=t?.frequency_penalty;bc(r,Bs,i);const s=t?.presence_penalty;return bc(r,js,s),t&&"stream"in t&&yc(r,Os,Boolean(t.stream)),r}function Ec(e,t,n,r,o,i){return{[Ls]:wc(e??"langchain"),[Ks]:n,[Ps]:wc(t),[it]:mc,...Cc(r,o,i)}}function Tc(e,t){if(!e)return;const n={};if(Array.isArray(e.generations)){const r=e.generations.flat().map(e=>e.generationInfo?.finish_reason?e.generationInfo.finish_reason:e.generation_info?.finish_reason?e.generation_info.finish_reason:null).filter(e=>"string"==typeof e);if(r.length>0&&yc(n,Fs,wc(r)),function(e,t){const n=[],r=e.flat();for(const e of r){const t=e.message?.content;if(Array.isArray(t))for(const e of t){const t=e;"tool_use"===t.type&&n.push(t)}}n.length>0&&yc(t,Zs,wc(n))}(e.generations,n),t){const t=e.generations.flat().map(e=>e.text??e.message?.content).filter(e=>"string"==typeof e);t.length>0&&yc(n,Ys,wc(t))}}!function(e,t){if(!e)return;const n=e.tokenUsage,r=e.usage;if(n)bc(t,Us,n.promptTokens),bc(t,Ws,n.completionTokens),bc(t,Vs,n.totalTokens);else if(r){bc(t,Us,r.input_tokens),bc(t,Ws,r.output_tokens);const e=Number(r.input_tokens),n=Number(r.output_tokens),o=(Number.isNaN(e)?0:e)+(Number.isNaN(n)?0:n);o>0&&bc(t,Vs,o),void 0!==r.cache_creation_input_tokens&&bc(t,"gen_ai.usage.cache_creation_input_tokens",r.cache_creation_input_tokens),void 0!==r.cache_read_input_tokens&&bc(t,"gen_ai.usage.cache_read_input_tokens",r.cache_read_input_tokens)}}(e.llmOutput,n);const r=e.llmOutput,o=e.generations?.[0]?.[0],i=o?.message,s=r?.model_name??r?.model??i?.response_metadata?.model_name;s&&yc(n,Hs,s);const a=r?.id??i?.id;a&&yc(n,qs,a);const c=r?.stop_reason??i?.response_metadata?.finish_reason;return c&&yc(n,"gen_ai.response.stop_reason",wc(c)),n}function Mc(e={}){const t=e.recordInputs??!1,n=e.recordOutputs??!1,r=new Map,o=e=>{const t=r.get(e);t?.isRecording()&&(t.end(),r.delete(e))},i={lc_serializable:!1,lc_namespace:["langchain_core","callbacks","sentry"],lc_secrets:void 0,lc_attributes:void 0,lc_aliases:void 0,lc_serializable_keys:void 0,lc_id:["langchain_core","callbacks","sentry"],lc_kwargs:{},name:"SentryCallbackHandler",ignoreLLM:!1,ignoreChain:!1,ignoreAgent:!1,ignoreRetriever:!1,ignoreCustomEvent:!1,raiseError:!1,awaitHandlers:!0,handleLLMStart(e,n,o,i,s,a,c,l){const d=_c(a),u=function(e,t,n,r,o){const i=o?.ls_provider,s=Ec(i,r?.model??o?.ls_model_name??"unknown","pipeline",e,r,o);if(n&&Array.isArray(t)&&t.length>0){yc(s,Gs,t.length);const e=t.map(e=>({role:"user",content:e}));yc(s,Js,wc(e))}return s}(e,n,t,d,c),p=u[Ps];qn({name:`${u[Ks]} ${p}`,op:"gen_ai.pipeline",attributes:{...u,[ot]:"gen_ai.pipeline"}},e=>(r.set(o,e),e))},handleChatModelStart(e,n,o,i,s,a,c,l){const d=_c(a),u=function(e,t,n,r,o){const i=Ec(o?.ls_provider??e.id?.[2],r?.model??o?.ls_model_name??"unknown","chat",e,r,o);if(n&&Array.isArray(t)&&t.length>0){const e=Sc(t.flat());yc(i,Gs,e.length);const n=Ta(e);yc(i,Js,wc(n))}return i}(e,n,t,d,c),p=u[Ps];qn({name:`${u[Ks]} ${p}`,op:"gen_ai.chat",attributes:{...u,[ot]:"gen_ai.chat"}},e=>(r.set(o,e),e))},handleLLMEnd(e,t,i,s,a){const c=r.get(t);if(c?.isRecording()){const r=Tc(e,n);r&&c.setAttributes(r),o(t)}},handleLLMError(e,t){const n=r.get(t);n?.isRecording()&&(n.setStatus({code:2,message:"llm_error"}),o(t)),wr(e,{mechanism:{handled:!1,type:`${mc}.llm_error_handler`}})},handleChainStart(e,n,o,i){const s=e.name||"unknown_chain",a={[it]:"auto.ai.langchain","langchain.chain.name":s};t&&(a["langchain.chain.inputs"]=JSON.stringify(n)),qn({name:`chain ${s}`,op:"gen_ai.invoke_agent",attributes:{...a,[ot]:"gen_ai.invoke_agent"}},e=>(r.set(o,e),e))},handleChainEnd(e,t){const i=r.get(t);i?.isRecording()&&(n&&i.setAttributes({"langchain.chain.outputs":JSON.stringify(e)}),o(t))},handleChainError(e,t){const n=r.get(t);n?.isRecording()&&(n.setStatus({code:2,message:"chain_error"}),o(t)),wr(e,{mechanism:{handled:!1,type:`${mc}.chain_error_handler`}})},handleToolStart(e,n,o,i){const s=e.name||"unknown_tool",a={[it]:mc,"gen_ai.tool.name":s};t&&(a["gen_ai.tool.input"]=n),qn({name:`execute_tool ${s}`,op:"gen_ai.execute_tool",attributes:{...a,[ot]:"gen_ai.execute_tool"}},e=>(r.set(o,e),e))},handleToolEnd(e,t){const i=r.get(t);i?.isRecording()&&(n&&i.setAttributes({"gen_ai.tool.output":JSON.stringify(e)}),o(t))},handleToolError(e,t){const n=r.get(t);n?.isRecording()&&(n.setStatus({code:2,message:"tool_error"}),o(t)),wr(e,{mechanism:{handled:!1,type:`${mc}.tool_error_handler`}})},copy:()=>i,toJSON:()=>({lc:1,type:"not_implemented",id:i.lc_id}),toJSONNotImplemented:()=>({lc:1,type:"not_implemented",id:i.lc_id})};return i}const Ic="auto.ai.langgraph";function Ac(e){const t=e;let n=0,r=0,o=0;if(t.usage_metadata&&"object"==typeof t.usage_metadata){const e=t.usage_metadata;return"number"==typeof e.input_tokens&&(n=e.input_tokens),"number"==typeof e.output_tokens&&(r=e.output_tokens),"number"==typeof e.total_tokens&&(o=e.total_tokens),{inputTokens:n,outputTokens:r,totalTokens:o}}if(t.response_metadata&&"object"==typeof t.response_metadata){const e=t.response_metadata;if(e.tokenUsage&&"object"==typeof e.tokenUsage){const t=e.tokenUsage;"number"==typeof t.promptTokens&&(n=t.promptTokens),"number"==typeof t.completionTokens&&(r=t.completionTokens),"number"==typeof t.totalTokens&&(o=t.totalTokens)}}return{inputTokens:n,outputTokens:r,totalTokens:o}}function Rc(e,t){const n=t;if(n.response_metadata&&"object"==typeof n.response_metadata){const t=n.response_metadata;t.model_name&&"string"==typeof t.model_name&&e.setAttribute(Hs,t.model_name),t.finish_reason&&"string"==typeof t.finish_reason&&e.setAttribute(Fs,[t.finish_reason])}}function Lc(e,t,n){const r=n,o=r?.messages;if(!o||!Array.isArray(o))return;const i=t?.length??0,s=o.length>i?o.slice(i):[];if(0===s.length)return;const a=function(e){if(!e||0===e.length)return null;const t=[];for(const n of e)if(n&&"object"==typeof n){const e=n.tool_calls;e&&Array.isArray(e)&&t.push(...e)}return t.length>0?t:null}(s);a&&e.setAttribute(Zs,JSON.stringify(a));const c=Sc(s);e.setAttribute(Ys,JSON.stringify(c));let l=0,d=0,u=0;for(const t of s){const n=Ac(t);l+=n.inputTokens,d+=n.outputTokens,u+=n.totalTokens,Rc(e,t)}l>0&&e.setAttribute(Us,l),d>0&&e.setAttribute(Ws,d),u>0&&e.setAttribute(Vs,u)}function Pc(e,t){return new Proxy(e,{apply:(e,n,r)=>Hn({op:"gen_ai.create_agent",name:"create_agent",attributes:{[it]:Ic,[ot]:"gen_ai.create_agent",[Ks]:"create_agent"}},o=>{try{const i=Reflect.apply(e,n,r),s=r.length>0?r[0]:{};s?.name&&"string"==typeof s.name&&(o.setAttribute(ea,s.name),o.updateName(`create_agent ${s.name}`));const a=i.invoke;return a&&"function"==typeof a&&(i.invoke=function(e,t,n,r){return new Proxy(e,{apply:(e,o,i)=>Hn({op:"gen_ai.invoke_agent",name:"invoke_agent",attributes:{[it]:Ic,[ot]:ra,[Ks]:"invoke_agent"}},async s=>{try{const a=n?.name;a&&"string"==typeof a&&(s.setAttribute(ta,a),s.setAttribute(ea,a),s.updateName(`invoke_agent ${a}`));const c=i.length>1?i[1]:void 0,l=c?.configurable,d=l?.thread_id;d&&"string"==typeof d&&s.setAttribute(na,d);const u=function(e){if(!e.builder?.nodes?.tools?.runnable?.tools)return null;const t=e.builder?.nodes?.tools?.runnable?.tools;return t&&Array.isArray(t)&&0!==t.length?t.map(e=>({name:e.lc_kwargs?.name,description:e.lc_kwargs?.description,schema:e.lc_kwargs?.schema})):null}(t);u&&s.setAttribute(Xs,JSON.stringify(u));const p=r.recordInputs,h=r.recordOutputs,f=i.length>0?i[0].messages??[]:[];if(f&&p){const e=Sc(f),t=Ta(e);s.setAttributes({[Js]:JSON.stringify(t),[Gs]:e.length})}const g=await Reflect.apply(e,o,i);return h&&Lc(s,f??null,g),g}catch(e){throw s.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),e}})})}(a.bind(i),i,s,t)),i}catch(e){throw o.setStatus({code:2,message:"internal_error"}),wr(e,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),e}})})}function Oc(e,t){const n=t||{};return e.compile=Pc(e.compile.bind(e),n),e}function Dc(e){return void 0===e?void 0:e>=400&&e<500?"warning":e>=500?"error":void 0}Error;const Nc=a;function Bc(){if(!("fetch"in Nc))return!1;try{return new Headers,new Request("data:,"),new Response,!0}catch{return!1}}function jc(e){return e&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(e.toString())}function $c(){if("string"==typeof EdgeRuntime)return!0;if(!Bc())return!1;if(jc(Nc.fetch))return!0;let e=!1;const t=Nc.document;if(t&&"function"==typeof t.createElement)try{const n=t.createElement("iframe");n.hidden=!0,t.head.appendChild(n),n.contentWindow?.fetch&&(e=jc(n.contentWindow.fetch)),t.head.removeChild(n)}catch(e){s&&y.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",e)}return e}function zc(e,t){const n="fetch";A(n,e),R(n,()=>Fc(void 0,t))}function Fc(e,t=!1){t&&!$c()||oe(a,"fetch",function(t){return function(...n){const r=new Error,{method:o,url:i}=function(e){if(0===e.length)return{method:"GET",url:""};if(2===e.length){const[t,n]=e;return{url:Uc(t),method:qc(n,"method")?String(n.method).toUpperCase():Q(t)&&qc(t,"method")?String(t.method).toUpperCase():"GET"}}const t=e[0];return{url:Uc(t),method:qc(t,"method")?String(t.method).toUpperCase():"GET"}}(n),s={args:n,fetchData:{method:o,url:i},startTimestamp:1e3*Ae(),virtualError:r,headers:Wc(n)};return e||L("fetch",{...s}),t.apply(a,n).then(async t=>(e?e(t):L("fetch",{...s,endTimestamp:1e3*Ae(),response:t}),t),e=>{L("fetch",{...s,endTimestamp:1e3*Ae(),error:e}),z(e)&&void 0===e.stack&&(e.stack=r.stack,ie(e,"framesToPop",1));const t=Ze(),n=t?.getOptions().enhanceFetchErrorMessages??"always";if(!1!==n&&e instanceof TypeError&&("Failed to fetch"===e.message||"Load failed"===e.message||"NetworkError when attempting to fetch resource."===e.message))try{const t=new URL(s.fetchData.url).host;"always"===n?e.message=`${e.message} (${t})`:ie(e,"__sentry_fetch_url_host__",t)}catch{}throw e})}})}function Hc(e){let t;try{t=e.clone()}catch{return}!async function(e,t){if(e?.body){const n=e.body,r=n.getReader(),o=setTimeout(()=>{n.cancel().then(null,()=>{})},9e4);let i=!0;for(;i;){let e;try{e=setTimeout(()=>{n.cancel().then(null,()=>{})},5e3);const{done:o}=await r.read();clearTimeout(e),o&&(t(),i=!1)}catch{i=!1}finally{clearTimeout(e)}}clearTimeout(o),r.releaseLock(),n.cancel().then(null,()=>{})}}(t,()=>{L("fetch-body-resolved",{endTimestamp:1e3*Ae(),response:e})})}function qc(e,t){return!!e&&"object"==typeof e&&!!e[t]}function Uc(e){return"string"==typeof e?e:e?qc(e,"url")?e.url:e.toString?e.toString():"":""}function Wc(e){const[t,n]=e;try{if("object"==typeof n&&null!==n&&"headers"in n&&n.headers)return new Headers(n.headers);if(Q(t))return new Headers(t.headers)}catch{}}function Vc(){return!("undefined"!=typeof __SENTRY_BROWSER_BUNDLE__&&__SENTRY_BROWSER_BUNDLE__)&&"[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0)}function Kc(){return"undefined"!=typeof window&&(!Vc()||function(){const e=a.process;return"renderer"===e?.type}())}const Gc=a,Jc=Gc.document,Yc=Gc.navigator,Xc="Report a Bug",Qc=(e,t={includeReplay:!0})=>{if(!e.message)throw new Error("Unable to submit feedback with empty message");const n=Ze();if(!n)throw new Error("No client setup, cannot send feedback.");e.tags&&Object.keys(e.tags).length&&Ge().setTags(e.tags);const r=us({source:"api",url:ne(),...e},t);return new Promise((e,t)=>{const o=setTimeout(()=>t("Unable to determine if Feedback was correctly sent."),3e4),i=n.on("afterSendEvent",(n,s)=>{if(n.event_id===r)return clearTimeout(o),i(),s?.statusCode&&s.statusCode>=200&&s.statusCode<300?e(r):t(403===s?.statusCode?"Unable to send feedback. This could be because this domain is not in your list of allowed domains.":"Unable to send feedback. This could be because of network issues, or because you are using an ad-blocker.")})})},Zc="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;function el(e,t){return{...e,...t,tags:{...e.tags,...t.tags},onFormOpen:()=>{t.onFormOpen?.(),e.onFormOpen?.()},onFormClose:()=>{t.onFormClose?.(),e.onFormClose?.()},onSubmitSuccess:(n,r)=>{t.onSubmitSuccess?.(n,r),e.onSubmitSuccess?.(n,r)},onSubmitError:n=>{t.onSubmitError?.(n),e.onSubmitError?.(n)},onFormSubmitted:()=>{t.onFormSubmitted?.(),e.onFormSubmitted?.()},themeDark:{...e.themeDark,...t.themeDark},themeLight:{...e.themeLight,...t.themeLight}}}function tl(e,t){return Object.entries(t).forEach(([t,n])=>{e.setAttributeNS(null,t,n)}),e}function nl({triggerLabel:e,triggerAriaLabel:t,shadow:n,styleNonce:r}){const o=Jc.createElement("button");if(o.type="button",o.className="widget__actor",o.ariaHidden="false",o.ariaLabel=t||e||Xc,o.appendChild(function(){const e=e=>Gc.document.createElementNS("http://www.w3.org/2000/svg",e),t=tl(e("svg"),{width:"20",height:"20",viewBox:"0 0 20 20",fill:"var(--actor-color, var(--foreground))"}),n=tl(e("g"),{clipPath:"url(#clip0_57_80)"}),r=tl(e("path"),{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M15.6622 15H12.3997C12.2129 14.9959 12.031 14.9396 11.8747 14.8375L8.04965 12.2H7.49956V19.1C7.4875 19.3348 7.3888 19.5568 7.22256 19.723C7.05632 19.8892 6.83435 19.9879 6.59956 20H2.04956C1.80193 19.9968 1.56535 19.8969 1.39023 19.7218C1.21511 19.5467 1.1153 19.3101 1.11206 19.0625V12.2H0.949652C0.824431 12.2017 0.700142 12.1783 0.584123 12.1311C0.468104 12.084 0.362708 12.014 0.274155 11.9255C0.185602 11.8369 0.115689 11.7315 0.0685419 11.6155C0.0213952 11.4995 -0.00202913 11.3752 -0.00034808 11.25V3.75C-0.00900498 3.62067 0.0092504 3.49095 0.0532651 3.36904C0.0972798 3.24712 0.166097 3.13566 0.255372 3.04168C0.344646 2.94771 0.452437 2.87327 0.571937 2.82307C0.691437 2.77286 0.82005 2.74798 0.949652 2.75H8.04965L11.8747 0.1625C12.031 0.0603649 12.2129 0.00407221 12.3997 0H15.6622C15.9098 0.00323746 16.1464 0.103049 16.3215 0.278167C16.4966 0.453286 16.5964 0.689866 16.5997 0.9375V3.25269C17.3969 3.42959 18.1345 3.83026 18.7211 4.41679C19.5322 5.22788 19.9878 6.32796 19.9878 7.47502C19.9878 8.62209 19.5322 9.72217 18.7211 10.5333C18.1345 11.1198 17.3969 11.5205 16.5997 11.6974V14.0125C16.6047 14.1393 16.5842 14.2659 16.5395 14.3847C16.4948 14.5035 16.4268 14.6121 16.3394 14.7042C16.252 14.7962 16.147 14.8698 16.0307 14.9206C15.9144 14.9714 15.7891 14.9984 15.6622 15ZM1.89695 10.325H1.88715V4.625H8.33715C8.52423 4.62301 8.70666 4.56654 8.86215 4.4625L12.6872 1.875H14.7247V13.125H12.6872L8.86215 10.4875C8.70666 10.3835 8.52423 10.327 8.33715 10.325H2.20217C2.15205 10.3167 2.10102 10.3125 2.04956 10.3125C1.9981 10.3125 1.94708 10.3167 1.89695 10.325ZM2.98706 12.2V18.1625H5.66206V12.2H2.98706ZM16.5997 9.93612V5.01393C16.6536 5.02355 16.7072 5.03495 16.7605 5.04814C17.1202 5.13709 17.4556 5.30487 17.7425 5.53934C18.0293 5.77381 18.2605 6.06912 18.4192 6.40389C18.578 6.73866 18.6603 7.10452 18.6603 7.47502C18.6603 7.84552 18.578 8.21139 18.4192 8.54616C18.2605 8.88093 18.0293 9.17624 17.7425 9.41071C17.4556 9.64518 17.1202 9.81296 16.7605 9.90191C16.7072 9.91509 16.6536 9.9265 16.5997 9.93612Z"});t.appendChild(n).appendChild(r);const o=e("defs"),i=tl(e("clipPath"),{id:"clip0_57_80"}),s=tl(e("rect"),{width:"20",height:"20",fill:"white"});return i.appendChild(s),o.appendChild(i),t.appendChild(o).appendChild(i).appendChild(s),t}()),e){const t=Jc.createElement("span");t.appendChild(Jc.createTextNode(e)),o.appendChild(t)}const i=function(e){const t=Jc.createElement("style");return t.textContent='\n.widget__actor {\n position: fixed;\n z-index: var(--z-index);\n margin: var(--page-margin);\n inset: var(--actor-inset);\n\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n\n font-family: inherit;\n font-size: var(--font-size);\n font-weight: 600;\n line-height: 1.14em;\n text-decoration: none;\n\n background: var(--actor-background, var(--background));\n border-radius: var(--actor-border-radius, 1.7em/50%);\n border: var(--actor-border, var(--border));\n box-shadow: var(--actor-box-shadow, var(--box-shadow));\n color: var(--actor-color, var(--foreground));\n fill: var(--actor-color, var(--foreground));\n cursor: pointer;\n opacity: 1;\n transition: transform 0.2s ease-in-out;\n transform: translate(0, 0) scale(1);\n}\n.widget__actor[aria-hidden="true"] {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n transform: translate(0, 16px) scale(0.98);\n}\n\n.widget__actor:hover {\n background: var(--actor-hover-background, var(--background));\n filter: var(--interactive-filter);\n}\n\n.widget__actor svg {\n width: 1.14em;\n height: 1.14em;\n}\n\n@media (max-width: 600px) {\n .widget__actor span {\n display: none;\n }\n}\n',e&&t.setAttribute("nonce",e),t}(r);return{el:o,appendToDom(){n.appendChild(i),n.appendChild(o)},removeFromDom(){o.remove(),i.remove()},show(){o.ariaHidden="false"},hide(){o.ariaHidden="true"}}}const rl="rgba(88, 74, 192, 1)",ol={foreground:"#2b2233",background:"#ffffff",accentForeground:"white",accentBackground:rl,successColor:"#268d75",errorColor:"#df3338",border:"1.5px solid rgba(41, 35, 47, 0.13)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(95%)"},il={foreground:"#ebe6ef",background:"#29232f",accentForeground:"white",accentBackground:rl,successColor:"#2da98c",errorColor:"#f55459",border:"1.5px solid rgba(235, 230, 239, 0.15)",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",outline:"1px auto var(--accent-background)",interactiveFilter:"brightness(150%)"};function sl(e){return`\n --foreground: ${e.foreground};\n --background: ${e.background};\n --accent-foreground: ${e.accentForeground};\n --accent-background: ${e.accentBackground};\n --success-color: ${e.successColor};\n --error-color: ${e.errorColor};\n --border: ${e.border};\n --box-shadow: ${e.boxShadow};\n --outline: ${e.outline};\n --interactive-filter: ${e.interactiveFilter};\n `}const al=({lazyLoadIntegration:e,getModalIntegration:t,getScreenshotIntegration:n})=>({id:r="sentry-feedback",autoInject:o=!0,showBranding:i=!0,isEmailRequired:s=!1,isNameRequired:a=!1,showEmail:c=!0,showName:l=!0,enableScreenshot:d=!0,useSentryUser:u={email:"email",name:"username"},tags:p,styleNonce:h,scriptNonce:f,colorScheme:g="system",themeLight:m={},themeDark:v={},addScreenshotButtonLabel:b="Add a screenshot",cancelButtonLabel:w="Cancel",confirmButtonLabel:x="Confirm",emailLabel:k="Email",emailPlaceholder:_="your.email@example.org",formTitle:S="Report a Bug",isRequiredLabel:C="(required)",messageLabel:E="Description",messagePlaceholder:T="What's the bug? What did you expect?",nameLabel:M="Name",namePlaceholder:I="Your Name",removeScreenshotButtonLabel:A="Remove screenshot",submitButtonLabel:R="Send Bug Report",successMessageText:L="Thank you for your report!",triggerLabel:P=Xc,triggerAriaLabel:O="",highlightToolText:D="Highlight",hideToolText:N="Hide",removeHighlightText:B="Remove",onFormOpen:j,onFormClose:$,onSubmitSuccess:z,onSubmitError:F,onFormSubmitted:H}={})=>{const q={id:r,autoInject:o,showBranding:i,isEmailRequired:s,isNameRequired:a,showEmail:c,showName:l,enableScreenshot:d,useSentryUser:u,tags:p,styleNonce:h,scriptNonce:f,colorScheme:g,themeDark:v,themeLight:m,triggerLabel:P,triggerAriaLabel:O,cancelButtonLabel:w,submitButtonLabel:R,confirmButtonLabel:x,formTitle:S,emailLabel:k,emailPlaceholder:_,messageLabel:E,messagePlaceholder:T,nameLabel:M,namePlaceholder:I,successMessageText:L,isRequiredLabel:C,addScreenshotButtonLabel:b,removeScreenshotButtonLabel:A,highlightToolText:D,hideToolText:N,removeHighlightText:B,onFormClose:$,onFormOpen:j,onSubmitError:F,onSubmitSuccess:z,onFormSubmitted:H};let U=null,W=[];const V=e=>{if(!U){const t=Jc.createElement("div");t.id=String(e.id),Jc.body.appendChild(t),U=t.attachShadow({mode:"open"}),U.appendChild(function({colorScheme:e,themeDark:t,themeLight:n,styleNonce:r}){const o=Jc.createElement("style");return o.textContent=`\n:host {\n --font-family: system-ui, 'Helvetica Neue', Arial, sans-serif;\n --font-size: 14px;\n --z-index: 100000;\n\n --page-margin: 16px;\n --inset: auto 0 0 auto;\n --actor-inset: var(--inset);\n\n font-family: var(--font-family);\n font-size: var(--font-size);\n\n ${"system"!==e?`color-scheme: only ${e};`:""}\n\n ${sl("dark"===e?{...il,...t}:{...ol,...n})}\n}\n\n${"system"===e?`\n@media (prefers-color-scheme: dark) {\n :host {\n color-scheme: only dark;\n\n ${sl({...il,...t})}\n }\n}`:""}\n`,r&&o.setAttribute("nonce",r),o}(e))}return U},K=async r=>{const o=r.enableScreenshot&&!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(Yc.userAgent)||/Macintosh/i.test(Yc.userAgent)&&Yc.maxTouchPoints&&Yc.maxTouchPoints>1||!isSecureContext);let i,s;try{i=(t?t():await e("feedbackModalIntegration",f))(),Wr(i)}catch{throw Zc&&y.error("[Feedback] Error when trying to load feedback integrations. Try using `feedbackSyncIntegration` in your `Sentry.init`."),new Error("[Feedback] Missing feedback modal integration!")}try{const t=o?n?n():await e("feedbackScreenshotIntegration",f):void 0;t&&(s=t(),Wr(s))}catch{Zc&&y.error("[Feedback] Missing feedback screenshot integration. Proceeding without screenshots.")}const a=i.createDialog({options:{...r,onFormClose:()=>{a?.close(),r.onFormClose?.()},onFormSubmitted:()=>{a?.close(),r.onFormSubmitted?.()}},screenshotIntegration:s,sendFeedback:Qc,shadow:V(r)});return a},G=(e,t={})=>{const n=el(q,t),r="string"==typeof e?Jc.querySelector(e):"function"==typeof e.addEventListener?e:null;if(!r)throw Zc&&y.error("[Feedback] Unable to attach to target element"),new Error("Unable to attach to target element");let o=null;const i=async()=>{o||(o=await K({...n,onFormSubmitted:()=>{o?.removeFromDom(),n.onFormSubmitted?.()}})),o.appendToDom(),o.open()};r.addEventListener("click",i);const s=()=>{W=W.filter(e=>e!==s),o?.removeFromDom(),o=null,r.removeEventListener("click",i)};return W.push(s),s},J=(e={})=>{const t=el(q,e),n=V(t),r=nl({triggerLabel:t.triggerLabel,triggerAriaLabel:t.triggerAriaLabel,shadow:n,styleNonce:h});return G(r.el,{...t,onFormOpen(){r.hide()},onFormClose(){r.show()},onFormSubmitted(){r.show()}}),r};return{name:"Feedback",setupOnce(){Kc()&&q.autoInject&&("loading"===Jc.readyState?Jc.addEventListener("DOMContentLoaded",()=>J().appendToDom()):J().appendToDom())},attachTo:G,createWidget(e={}){const t=J(el(q,e));return t.appendToDom(),t},createForm:async(e={})=>K(el(q,e)),remove(){U&&(U.parentElement?.remove(),U=null),W.forEach(e=>e()),W=[]}}};function cl(){const e=Ze();return e?.getIntegrationByName("Feedback")}var ll,dl,ul,pl,hl,fl,gl,ml={},vl=[],yl=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,bl=Array.isArray;function wl(e,t){for(var n in t)e[n]=t[n];return e}function xl(e){var t=e.parentNode;t&&t.removeChild(e)}function kl(e,t,n){var r,o,i,s={};for(i in t)"key"==i?r=t[i]:"ref"==i?o=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?ll.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===s[i]&&(s[i]=e.defaultProps[i]);return _l(e,s,r,o,null)}function _l(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==o?++ul:o,__i:-1,__u:0};return null==o&&null!=dl.vnode&&dl.vnode(i),i}function Sl(e){return e.children}function Cl(e,t){this.props=e,this.context=t}function El(e,t){if(null==t)return e.__?El(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?El(e):null}function Tl(e,t,n){var r,o=e.__v,i=o.__e,s=e.__P;if(s)return(r=wl({},o)).__v=o.__v+1,dl.vnode&&dl.vnode(r),jl(s,r,o,e.__n,void 0!==s.ownerSVGElement,32&o.__u?[i]:null,t,null==i?El(o):i,!!(32&o.__u),n),r.__.__k[r.__i]=r,r.__d=void 0,r.__e!=i&&Ml(r),r}function Ml(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return Ml(e)}}function Il(e){(!e.__d&&(e.__d=!0)&&pl.push(e)&&!Al.__r++||hl!==dl.debounceRendering)&&((hl=dl.debounceRendering)||fl)(Al)}function Al(){var e,t,n,r=[],o=[];for(pl.sort(gl);e=pl.shift();)e.__d&&(n=pl.length,t=Tl(e,r,o)||t,0===n||pl.length>n?($l(r,t,o),o.length=r.length=0,t=void 0,pl.sort(gl)):t&&dl.__c&&dl.__c(t,vl));t&&$l(r,t,o),Al.__r=0}function Rl(e,t,n,r,o,i,s,a,c,l,d){var u,p,h,f,g,m=r&&r.__k||vl,v=t.length;for(n.__d=c,function(e,t,n){var r,o,i,s,a,c=t.length,l=n.length,d=l,u=0;for(e.__k=[],r=0;r<c;r++)null!=(o=e.__k[r]=null==(o=t[r])||"boolean"==typeof o||"function"==typeof o?null:"string"==typeof o||"number"==typeof o||"bigint"==typeof o||o.constructor==String?_l(null,o,null,null,o):bl(o)?_l(Sl,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?_l(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o)?(o.__=e,o.__b=e.__b+1,a=Pl(o,n,s=r+u,d),o.__i=a,i=null,-1!==a&&(d--,(i=n[a])&&(i.__u|=131072)),null==i||null===i.__v?(-1==a&&u--,"function"!=typeof o.type&&(o.__u|=65536)):a!==s&&(a===s+1?u++:a>s?d>c-s?u+=a-s:u--:u=a<s&&a==s-1?a-s:0,a!==r+u&&(o.__u|=65536))):(i=n[r])&&null==i.key&&i.__e&&(i.__e==e.__d&&(e.__d=El(i)),Hl(i,i,!1),n[r]=null,d--);if(d)for(r=0;r<l;r++)null!=(i=n[r])&&!(131072&i.__u)&&(i.__e==e.__d&&(e.__d=El(i)),Hl(i,i))}(n,t,m),c=n.__d,u=0;u<v;u++)null!=(h=n.__k[u])&&"boolean"!=typeof h&&"function"!=typeof h&&(p=-1===h.__i?ml:m[h.__i]||ml,h.__i=u,jl(e,h,p,o,i,s,a,c,l,d),f=h.__e,h.ref&&p.ref!=h.ref&&(p.ref&&Fl(p.ref,null,h),d.push(h.ref,h.__c||f,h)),null==g&&null!=f&&(g=f),65536&h.__u||p.__k===h.__k?c=Ll(h,c,e):"function"==typeof h.type&&void 0!==h.__d?c=h.__d:f&&(c=f.nextSibling),h.__d=void 0,h.__u&=-196609);n.__d=c,n.__e=g}function Ll(e,t,n){var r,o;if("function"==typeof e.type){for(r=e.__k,o=0;r&&o<r.length;o++)r[o]&&(r[o].__=e,t=Ll(r[o],t,n));return t}e.__e!=t&&(n.insertBefore(e.__e,t||null),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8===t.nodeType);return t}function Pl(e,t,n,r){var o=e.key,i=e.type,s=n-1,a=n+1,c=t[n];if(null===c||c&&o==c.key&&i===c.type)return n;if(r>(null==c||131072&c.__u?0:1))for(;s>=0||a<t.length;){if(s>=0){if((c=t[s])&&!(131072&c.__u)&&o==c.key&&i===c.type)return s;s--}if(a<t.length){if((c=t[a])&&!(131072&c.__u)&&o==c.key&&i===c.type)return a;a++}}return-1}function Ol(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||yl.test(t)?n:n+"px"}function Dl(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Ol(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||Ol(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/(PointerCapture)$|Capture$/i,"$1")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n.u=r.u:(n.u=Date.now(),e.addEventListener(t,i?Bl:Nl,i)):e.removeEventListener(t,i?Bl:Nl,i);else{if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&"rowSpan"!==t&&"colSpan"!==t&&"role"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function Nl(e){if(this.l){var t=this.l[e.type+!1];if(e.t){if(e.t<=t.u)return}else e.t=Date.now();return t(dl.event?dl.event(e):e)}}function Bl(e){if(this.l)return this.l[e.type+!0](dl.event?dl.event(e):e)}function jl(e,t,n,r,o,i,s,a,c,l){var d,u,p,h,f,g,m,v,y,b,w,x,k,_,S,C=t.type;if(void 0!==t.constructor)return null;128&n.__u&&(c=!!(32&n.__u),i=[a=t.__e=n.__e]),(d=dl.__b)&&d(t);e:if("function"==typeof C)try{if(v=t.props,y=(d=C.contextType)&&r[d.__c],b=d?y?y.props.value:d.__:r,n.__c?m=(u=t.__c=n.__c).__=u.__E:("prototype"in C&&C.prototype.render?t.__c=u=new C(v,b):(t.__c=u=new Cl(v,b),u.constructor=C,u.render=ql),y&&y.sub(u),u.props=v,u.state||(u.state={}),u.context=b,u.__n=r,p=u.__d=!0,u.__h=[],u._sb=[]),null==u.__s&&(u.__s=u.state),null!=C.getDerivedStateFromProps&&(u.__s==u.state&&(u.__s=wl({},u.__s)),wl(u.__s,C.getDerivedStateFromProps(v,u.__s))),h=u.props,f=u.state,u.__v=t,p)null==C.getDerivedStateFromProps&&null!=u.componentWillMount&&u.componentWillMount(),null!=u.componentDidMount&&u.__h.push(u.componentDidMount);else{if(null==C.getDerivedStateFromProps&&v!==h&&null!=u.componentWillReceiveProps&&u.componentWillReceiveProps(v,b),!u.__e&&(null!=u.shouldComponentUpdate&&!1===u.shouldComponentUpdate(v,u.__s,b)||t.__v===n.__v)){for(t.__v!==n.__v&&(u.props=v,u.state=u.__s,u.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.forEach(function(e){e&&(e.__=t)}),w=0;w<u._sb.length;w++)u.__h.push(u._sb[w]);u._sb=[],u.__h.length&&s.push(u);break e}null!=u.componentWillUpdate&&u.componentWillUpdate(v,u.__s,b),null!=u.componentDidUpdate&&u.__h.push(function(){u.componentDidUpdate(h,f,g)})}if(u.context=b,u.props=v,u.__P=e,u.__e=!1,x=dl.__r,k=0,"prototype"in C&&C.prototype.render){for(u.state=u.__s,u.__d=!1,x&&x(t),d=u.render(u.props,u.state,u.context),_=0;_<u._sb.length;_++)u.__h.push(u._sb[_]);u._sb=[]}else do{u.__d=!1,x&&x(t),d=u.render(u.props,u.state,u.context),u.state=u.__s}while(u.__d&&++k<25);u.state=u.__s,null!=u.getChildContext&&(r=wl(wl({},r),u.getChildContext())),p||null==u.getSnapshotBeforeUpdate||(g=u.getSnapshotBeforeUpdate(h,f)),Rl(e,bl(S=null!=d&&d.type===Sl&&null==d.key?d.props.children:d)?S:[S],t,n,r,o,i,s,a,c,l),u.base=t.__e,t.__u&=-161,u.__h.length&&s.push(u),m&&(u.__E=u.__=null)}catch(e){t.__v=null,c||null!=i?(t.__e=a,t.__u|=c?160:32,i[i.indexOf(a)]=null):(t.__e=n.__e,t.__k=n.__k),dl.__e(e,t,n)}else null==i&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=zl(n.__e,t,n,r,o,i,s,c,l);(d=dl.diffed)&&d(t)}function $l(e,t,n){for(var r=0;r<n.length;r++)Fl(n[r],n[++r],n[++r]);dl.__c&&dl.__c(t,e),e.some(function(t){try{e=t.__h,t.__h=[],e.some(function(e){e.call(t)})}catch(e){dl.__e(e,t.__v)}})}function zl(e,t,n,r,o,i,s,a,c){var l,d,u,p,h,f,g,m=n.props,v=t.props,y=t.type;if("svg"===y&&(o=!0),null!=i)for(l=0;l<i.length;l++)if((h=i[l])&&"setAttribute"in h==!!y&&(y?h.localName===y:3===h.nodeType)){e=h,i[l]=null;break}if(null==e){if(null===y)return document.createTextNode(v);e=o?document.createElementNS("http://www.w3.org/2000/svg",y):document.createElement(y,v.is&&v),i=null,a=!1}if(null===y)m===v||a&&e.data===v||(e.data=v);else{if(i=i&&ll.call(e.childNodes),m=n.props||ml,!a&&null!=i)for(m={},l=0;l<e.attributes.length;l++)m[(h=e.attributes[l]).name]=h.value;for(l in m)h=m[l],"children"==l||("dangerouslySetInnerHTML"==l?u=h:"key"===l||l in v||Dl(e,l,null,h,o));for(l in v)h=v[l],"children"==l?p=h:"dangerouslySetInnerHTML"==l?d=h:"value"==l?f=h:"checked"==l?g=h:"key"===l||a&&"function"!=typeof h||m[l]===h||Dl(e,l,h,m[l],o);if(d)a||u&&(d.__html===u.__html||d.__html===e.innerHTML)||(e.innerHTML=d.__html),t.__k=[];else if(u&&(e.innerHTML=""),Rl(e,bl(p)?p:[p],t,n,r,o&&"foreignObject"!==y,i,s,i?i[0]:n.__k&&El(n,0),a,c),null!=i)for(l=i.length;l--;)null!=i[l]&&xl(i[l]);a||(l="value",void 0!==f&&(f!==e[l]||"progress"===y&&!f||"option"===y&&f!==m[l])&&Dl(e,l,f,m[l],!1),l="checked",void 0!==g&&g!==e[l]&&Dl(e,l,g,m[l],!1))}return e}function Fl(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){dl.__e(e,n)}}function Hl(e,t,n){var r,o;if(dl.unmount&&dl.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||Fl(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){dl.__e(e,t)}r.base=r.__P=null,e.__c=void 0}if(r=e.__k)for(o=0;o<r.length;o++)r[o]&&Hl(r[o],t,n||"function"!=typeof e.type);n||null==e.__e||xl(e.__e),e.__=e.__e=e.__d=void 0}function ql(e,t,n){return this.constructor(e,n)}ll=vl.slice,dl={__e:function(e,t,n,r){for(var o,i,s;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&null!=i.getDerivedStateFromError&&(o.setState(i.getDerivedStateFromError(e)),s=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),s=o.__d),s)return o.__E=o}catch(t){e=t}throw e}},ul=0,Cl.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=wl({},this.state),"function"==typeof e&&(e=e(wl({},n),this.props)),e&&wl(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),Il(this))},Cl.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Il(this))},Cl.prototype.render=Sl,pl=[],fl="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,gl=function(e,t){return e.__v.__b-t.__v.__b},Al.__r=0;var Ul,Wl,Vl,Kl,Gl=0,Jl=[],Yl=[],Xl=dl,Ql=Xl.__b,Zl=Xl.__r,ed=Xl.diffed,td=Xl.__c,nd=Xl.unmount,rd=Xl.__;function od(e,t){Xl.__h&&Xl.__h(Wl,e,Gl||t),Gl=0;var n=Wl.__H||(Wl.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({__V:Yl}),n.__[e]}function id(e){return Gl=1,sd(md,e)}function sd(e,t,n){var r=od(Ul++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):md(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=Wl,!Wl.u)){var o=function(e,t,n){if(!r.__c.__H)return!0;var o=r.__c.__H.__.filter(function(e){return!!e.__c});if(o.every(function(e){return!e.__N}))return!i||i.call(this,e,t,n);var s=!1;return o.forEach(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(s=!0)}}),!(!s&&r.__c.props===e)&&(!i||i.call(this,e,t,n))};Wl.u=!0;var i=Wl.shouldComponentUpdate,s=Wl.componentWillUpdate;Wl.componentWillUpdate=function(e,t,n){if(this.__e){var r=i;i=void 0,o(e,t,n),i=r}s&&s.call(this,e,t,n)},Wl.shouldComponentUpdate=o}return r.__N||r.__}function ad(e,t){var n=od(Ul++,4);!Xl.__s&&gd(n.__H,t)&&(n.__=e,n.i=t,Wl.__h.push(n))}function cd(e,t){var n=od(Ul++,7);return gd(n.__H,t)?(n.__V=e(),n.i=t,n.__h=e,n.__V):n.__}function ld(e,t){return Gl=8,cd(function(){return e},t)}function dd(){for(var e;e=Jl.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(hd),e.__H.__h.forEach(fd),e.__H.__h=[]}catch(t){e.__H.__h=[],Xl.__e(t,e.__v)}}Xl.__b=function(e){Wl=null,Ql&&Ql(e)},Xl.__=function(e,t){t.__k&&t.__k.__m&&(e.__m=t.__k.__m),rd&&rd(e,t)},Xl.__r=function(e){Zl&&Zl(e),Ul=0;var t=(Wl=e.__c).__H;t&&(Vl===Wl?(t.__h=[],Wl.__h=[],t.__.forEach(function(e){e.__N&&(e.__=e.__N),e.__V=Yl,e.__N=e.i=void 0})):(t.__h.forEach(hd),t.__h.forEach(fd),t.__h=[],Ul=0)),Vl=Wl},Xl.diffed=function(e){ed&&ed(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Jl.push(t)&&Kl===Xl.requestAnimationFrame||((Kl=Xl.requestAnimationFrame)||pd)(dd)),t.__H.__.forEach(function(e){e.i&&(e.__H=e.i),e.__V!==Yl&&(e.__=e.__V),e.i=void 0,e.__V=Yl})),Vl=Wl=null},Xl.__c=function(e,t){t.some(function(e){try{e.__h.forEach(hd),e.__h=e.__h.filter(function(e){return!e.__||fd(e)})}catch(n){t.some(function(e){e.__h&&(e.__h=[])}),t=[],Xl.__e(n,e.__v)}}),td&&td(e,t)},Xl.unmount=function(e){nd&&nd(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(e){try{hd(e)}catch(e){t=e}}),n.__H=void 0,t&&Xl.__e(t,n.__v))};var ud="function"==typeof requestAnimationFrame;function pd(e){var t,n=function(){clearTimeout(r),ud&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);ud&&(t=requestAnimationFrame(n))}function hd(e){var t=Wl,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Wl=t}function fd(e){var t=Wl;e.__c=e.__(),Wl=t}function gd(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function md(e,t){return"function"==typeof t?t(e):t}const vd=Object.defineProperty({__proto__:null,useCallback:ld,useContext:function(e){var t=Wl.context[e.__c],n=od(Ul++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(Wl)),t.props.value):e.__},useDebugValue:function(e,t){Xl.useDebugValue&&Xl.useDebugValue(t?t(e):e)},useEffect:function(e,t){var n=od(Ul++,3);!Xl.__s&&gd(n.__H,t)&&(n.__=e,n.i=t,Wl.__H.__h.push(n))},useErrorBoundary:function(e){var t=od(Ul++,10),n=id();return t.__=e,Wl.componentDidCatch||(Wl.componentDidCatch=function(e,r){t.__&&t.__(e,r),n[1](e)}),[n[0],function(){n[1](void 0)}]},useId:function(){var e=od(Ul++,11);if(!e.__){for(var t=Wl.__v;null!==t&&!t.__m&&null!==t.__;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__},useImperativeHandle:function(e,t,n){Gl=6,ad(function(){return"function"==typeof e?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},null==n?n:n.concat(e))},useLayoutEffect:ad,useMemo:cd,useReducer:sd,useRef:function(e){return Gl=5,cd(function(){return{current:e}},[])},useState:id},Symbol.toStringTag,{value:"Module"});function yd(){const e=e=>Jc.createElementNS("http://www.w3.org/2000/svg",e),t=tl(e("svg"),{width:"32",height:"30",viewBox:"0 0 72 66",fill:"inherit"}),n=tl(e("path"),{transform:"translate(11, 11)",d:"M29,2.26a4.67,4.67,0,0,0-8,0L14.42,13.53A32.21,32.21,0,0,1,32.17,40.19H27.55A27.68,27.68,0,0,0,12.09,17.47L6,28a15.92,15.92,0,0,1,9.23,12.17H4.62A.76.76,0,0,1,4,39.06l2.94-5a10.74,10.74,0,0,0-3.36-1.9l-2.91,5a4.54,4.54,0,0,0,1.69,6.24A4.66,4.66,0,0,0,4.62,44H19.15a19.4,19.4,0,0,0-8-17.31l2.31-4A23.87,23.87,0,0,1,23.76,44H36.07a35.88,35.88,0,0,0-16.41-31.8l4.67-8a.77.77,0,0,1,1.05-.27c.53.29,20.29,34.77,20.66,35.17a.76.76,0,0,1-.68,1.13H40.6q.09,1.91,0,3.81h4.78A4.59,4.59,0,0,0,50,39.43a4.49,4.49,0,0,0-.62-2.28Z"});return t.appendChild(n),t}function bd({options:e}){const t=cd(()=>({__html:yd().outerHTML}),[]);return kl("h2",{class:"dialog__header"},kl("span",{class:"dialog__title"},e.formTitle),e.showBranding?kl("a",{class:"brand-link",target:"_blank",href:"https://sentry.io/welcome/",title:"Powered by Sentry",rel:"noopener noreferrer",dangerouslySetInnerHTML:t}):null)}function wd(e,t){const n=e.get(t);return"string"==typeof n?n.trim():""}function xd({options:e,defaultEmail:t,defaultName:n,onFormClose:r,onSubmit:o,onSubmitSuccess:i,onSubmitError:s,showEmail:a,showName:c,screenshotInput:l}){const{tags:d,addScreenshotButtonLabel:u,removeScreenshotButtonLabel:p,cancelButtonLabel:h,emailLabel:f,emailPlaceholder:g,isEmailRequired:m,isNameRequired:v,messageLabel:b,messagePlaceholder:w,nameLabel:x,namePlaceholder:k,submitButtonLabel:_,isRequiredLabel:S}=e,[C,E]=id(!1),[T,M]=id(null),[I,A]=id(!1),R=l?.input,[L,P]=id(null),O=ld(e=>{P(e),A(!1)},[]),D=ld(e=>{const t=function(e,t){const n=[];return t.isNameRequired&&!e.name&&n.push(t.nameLabel),t.isEmailRequired&&!e.email&&n.push(t.emailLabel),e.message||n.push(t.messageLabel),n}(e,{emailLabel:f,isEmailRequired:m,isNameRequired:v,messageLabel:b,nameLabel:x});return t.length>0?M(`Please enter in the following required fields: ${t.join(", ")}`):M(null),0===t.length},[f,m,v,b,x]),N=ld(async e=>{E(!0);try{if(e.preventDefault(),!(e.target instanceof HTMLFormElement))return;const t=new FormData(e.target),n=await(l&&I?l.value():void 0),r={name:wd(t,"name"),email:wd(t,"email"),message:wd(t,"message"),attachments:n?[n]:void 0};if(!D(r))return;try{const e=await o({name:r.name,email:r.email,message:r.message,source:"widget",tags:d},{attachments:r.attachments});i(r,e)}catch(e){Zc&&y.error(e),M(e),s(e)}}finally{E(!1)}},[l&&I,i,s]);return kl("form",{class:"form",onSubmit:N},R&&I?kl(R,{onError:O}):null,kl("fieldset",{class:"form__right","data-sentry-feedback":!0,disabled:C},kl("div",{class:"form__top"},T?kl("div",{class:"form__error-container"},T):null,c?kl("label",{for:"name",class:"form__label"},kl(kd,{label:x,isRequiredLabel:S,isRequired:v}),kl("input",{class:"form__input",defaultValue:n,id:"name",name:"name",placeholder:k,required:v,type:"text"})):kl("input",{"aria-hidden":!0,value:n,name:"name",type:"hidden"}),a?kl("label",{for:"email",class:"form__label"},kl(kd,{label:f,isRequiredLabel:S,isRequired:m}),kl("input",{class:"form__input",defaultValue:t,id:"email",name:"email",placeholder:g,required:m,type:"email"})):kl("input",{"aria-hidden":!0,value:t,name:"email",type:"hidden"}),kl("label",{for:"message",class:"form__label"},kl(kd,{label:b,isRequiredLabel:S,isRequired:!0}),kl("textarea",{autoFocus:!0,class:"form__input form__input--textarea",id:"message",name:"message",placeholder:w,required:!0,rows:5})),R?kl("label",{for:"screenshot",class:"form__label"},kl("button",{class:"btn btn--default",disabled:C,type:"button",onClick:()=>{P(null),A(e=>!e)}},I?p:u),L?kl("div",{class:"form__error-container"},L.message):null):null),kl("div",{class:"btn-group"},kl("button",{class:"btn btn--primary",disabled:C,type:"submit"},_),kl("button",{class:"btn btn--default",disabled:C,type:"button",onClick:r},h))))}function kd({label:e,isRequired:t,isRequiredLabel:n}){return kl("span",{class:"form__label__text"},e,t&&kl("span",{class:"form__label__text--required"},n))}function _d(){const e=e=>Gc.document.createElementNS("http://www.w3.org/2000/svg",e),t=tl(e("svg"),{width:"16",height:"17",viewBox:"0 0 16 17",fill:"inherit"}),n=tl(e("g"),{clipPath:"url(#clip0_57_156)"}),r=tl(e("path"),{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.55544 15.1518C4.87103 16.0308 6.41775 16.5 8 16.5C10.1217 16.5 12.1566 15.6571 13.6569 14.1569C15.1571 12.6566 16 10.6217 16 8.5C16 6.91775 15.5308 5.37103 14.6518 4.05544C13.7727 2.73985 12.5233 1.71447 11.0615 1.10897C9.59966 0.503466 7.99113 0.34504 6.43928 0.653721C4.88743 0.962403 3.46197 1.72433 2.34315 2.84315C1.22433 3.96197 0.462403 5.38743 0.153721 6.93928C-0.15496 8.49113 0.00346625 10.0997 0.608967 11.5615C1.21447 13.0233 2.23985 14.2727 3.55544 15.1518ZM4.40546 3.1204C5.46945 2.40946 6.72036 2.03 8 2.03C9.71595 2.03 11.3616 2.71166 12.575 3.92502C13.7883 5.13838 14.47 6.78405 14.47 8.5C14.47 9.77965 14.0905 11.0306 13.3796 12.0945C12.6687 13.1585 11.6582 13.9878 10.476 14.4775C9.29373 14.9672 7.99283 15.0953 6.73777 14.8457C5.48271 14.596 4.32987 13.9798 3.42502 13.075C2.52018 12.1701 1.90397 11.0173 1.65432 9.76224C1.40468 8.50718 1.5328 7.20628 2.0225 6.02404C2.5122 4.8418 3.34148 3.83133 4.40546 3.1204Z"}),o=tl(e("path"),{d:"M6.68775 12.4297C6.78586 12.4745 6.89218 12.4984 7 12.5C7.11275 12.4955 7.22315 12.4664 7.32337 12.4145C7.4236 12.3627 7.51121 12.2894 7.58 12.2L12 5.63999C12.0848 5.47724 12.1071 5.28902 12.0625 5.11098C12.0178 4.93294 11.9095 4.77744 11.7579 4.67392C11.6064 4.57041 11.4221 4.52608 11.24 4.54931C11.0579 4.57254 10.8907 4.66173 10.77 4.79999L6.88 10.57L5.13 8.56999C5.06508 8.49566 4.98613 8.43488 4.89768 8.39111C4.80922 8.34735 4.713 8.32148 4.61453 8.31498C4.51605 8.30847 4.41727 8.32147 4.32382 8.35322C4.23038 8.38497 4.14413 8.43484 4.07 8.49999C3.92511 8.63217 3.83692 8.81523 3.82387 9.01092C3.81083 9.2066 3.87393 9.39976 4 9.54999L6.43 12.24C6.50187 12.3204 6.58964 12.385 6.68775 12.4297Z"});t.appendChild(n).append(o,r);const i=e("defs"),s=tl(e("clipPath"),{id:"clip0_57_156"}),a=tl(e("rect"),{width:"16",height:"16",fill:"white",transform:"translate(0 0.5)"});return s.appendChild(a),i.appendChild(s),t.appendChild(i).appendChild(s).appendChild(a),t}function Sd({open:e,onFormSubmitted:t,...n}){const r=n.options,o=cd(()=>({__html:_d().outerHTML}),[]),[i,s]=id(null),a=ld(()=>{i&&(clearTimeout(i),s(null)),t()},[i]),c=ld((e,r)=>{n.onSubmitSuccess(e,r),s(setTimeout(()=>{t(),s(null)},5e3))},[t]);return kl(Sl,null,i?kl("div",{class:"success__position",onClick:a},kl("div",{class:"success__content"},r.successMessageText,kl("span",{class:"success__icon",dangerouslySetInnerHTML:o}))):kl("dialog",{class:"dialog",onClick:r.onFormClose,open:e},kl("div",{class:"dialog__position"},kl("div",{class:"dialog__content",onClick:e=>{e.stopPropagation()}},kl(bd,{options:r}),kl(xd,{...n,onSubmitSuccess:c})))))}const Cd=()=>({name:"FeedbackModal",setupOnce(){},createDialog:({options:e,screenshotIntegration:t,sendFeedback:n,shadow:r})=>{const o=r,i=e.useSentryUser,s=function(){const e=Ge().getUser(),t=Je().getUser(),n=Ye().getUser();return e&&Object.keys(e).length?e:t&&Object.keys(t).length?t:n}(),a=Jc.createElement("div"),c=function(e){const t=Jc.createElement("style");return t.textContent="\n:host {\n --dialog-inset: var(--inset);\n}\n\n\n.dialog {\n position: fixed;\n z-index: var(--z-index);\n margin: 0;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n height: 100vh;\n width: 100vw;\n\n color: var(--dialog-color, var(--foreground));\n fill: var(--dialog-color, var(--foreground));\n line-height: 1.75em;\n\n background-color: rgba(0, 0, 0, 0.05);\n border: none;\n inset: 0;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n}\n\n.dialog__position {\n position: fixed;\n z-index: var(--z-index);\n inset: var(--dialog-inset);\n padding: var(--page-margin);\n display: flex;\n max-height: calc(100vh - (2 * var(--page-margin)));\n}\n@media (max-width: 600px) {\n .dialog__position {\n inset: var(--page-margin);\n padding: 0;\n }\n}\n\n.dialog__position:has(.editor) {\n inset: var(--page-margin);\n padding: 0;\n}\n\n.dialog:not([open]) {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.dialog:not([open]) .dialog__content {\n transform: translate(0, -16px) scale(0.98);\n}\n\n.dialog__content {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: var(--dialog-padding, 24px);\n max-width: 100%;\n width: 100%;\n max-height: 100%;\n overflow: auto;\n\n background: var(--dialog-background, var(--background));\n border-radius: var(--dialog-border-radius, 20px);\n border: var(--dialog-border, var(--border));\n box-shadow: var(--dialog-box-shadow, var(--box-shadow));\n transform: translate(0, 0) scale(1);\n transition: transform 0.2s ease-in-out;\n}\n\n\n\n.dialog__header {\n display: flex;\n gap: 4px;\n justify-content: space-between;\n font-weight: var(--dialog-header-weight, 600);\n margin: 0;\n}\n.dialog__title {\n align-self: center;\n width: var(--form-width, 272px);\n}\n\n@media (max-width: 600px) {\n .dialog__title {\n width: auto;\n }\n}\n\n.dialog__position:has(.editor) .dialog__title {\n width: auto;\n}\n\n\n.brand-link {\n display: inline-flex;\n}\n.brand-link:focus-visible {\n outline: var(--outline);\n}\n\n\n.form {\n display: flex;\n overflow: auto;\n flex-direction: row;\n gap: 16px;\n flex: 1 0;\n}\n\n.form fieldset {\n border: none;\n margin: 0;\n padding: 0;\n}\n\n.form__right {\n flex: 0 0 auto;\n display: flex;\n overflow: auto;\n flex-direction: column;\n justify-content: space-between;\n gap: 20px;\n width: var(--form-width, 100%);\n}\n\n.dialog__position:has(.editor) .form__right {\n width: var(--form-width, 272px);\n}\n\n.form__top {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form__error-container {\n color: var(--error-color);\n fill: var(--error-color);\n}\n\n.form__label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin: 0px;\n}\n\n.form__label__text {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.form__label__text--required {\n font-size: 0.85em;\n}\n\n.form__input {\n font-family: inherit;\n line-height: inherit;\n background: transparent;\n box-sizing: border-box;\n border: var(--input-border, var(--border));\n border-radius: var(--input-border-radius, 6px);\n color: var(--input-color, inherit);\n fill: var(--input-color, inherit);\n font-size: var(--input-font-size, inherit);\n font-weight: var(--input-font-weight, 500);\n padding: 6px 12px;\n}\n\n.form__input::placeholder {\n opacity: 0.65;\n color: var(--input-placeholder-color, inherit);\n filter: var(--interactive-filter);\n}\n\n.form__input:focus-visible {\n outline: var(--input-focus-outline, var(--outline));\n}\n\n.form__input--textarea {\n font-family: inherit;\n resize: vertical;\n}\n\n.error {\n color: var(--error-color);\n fill: var(--error-color);\n}\n\n\n.btn-group {\n display: grid;\n gap: 8px;\n}\n\n.btn {\n line-height: inherit;\n border: var(--button-border, var(--border));\n border-radius: var(--button-border-radius, 6px);\n cursor: pointer;\n font-family: inherit;\n font-size: var(--button-font-size, inherit);\n font-weight: var(--button-font-weight, 600);\n padding: var(--button-padding, 6px 16px);\n}\n.btn[disabled] {\n opacity: 0.6;\n pointer-events: none;\n}\n\n.btn--primary {\n color: var(--button-primary-color, var(--accent-foreground));\n fill: var(--button-primary-color, var(--accent-foreground));\n background: var(--button-primary-background, var(--accent-background));\n border: var(--button-primary-border, var(--border));\n border-radius: var(--button-primary-border-radius, 6px);\n font-weight: var(--button-primary-font-weight, 500);\n}\n.btn--primary:hover {\n color: var(--button-primary-hover-color, var(--accent-foreground));\n fill: var(--button-primary-hover-color, var(--accent-foreground));\n background: var(--button-primary-hover-background, var(--accent-background));\n filter: var(--interactive-filter);\n}\n.btn--primary:focus-visible {\n background: var(--button-primary-hover-background, var(--accent-background));\n filter: var(--interactive-filter);\n outline: var(--button-primary-focus-outline, var(--outline));\n}\n\n.btn--default {\n color: var(--button-color, var(--foreground));\n fill: var(--button-color, var(--foreground));\n background: var(--button-background, var(--background));\n border: var(--button-border, var(--border));\n border-radius: var(--button-border-radius, 6px);\n font-weight: var(--button-font-weight, 500);\n}\n.btn--default:hover {\n color: var(--button-color, var(--foreground));\n fill: var(--button-color, var(--foreground));\n background: var(--button-hover-background, var(--background));\n filter: var(--interactive-filter);\n}\n.btn--default:focus-visible {\n background: var(--button-hover-background, var(--background));\n filter: var(--interactive-filter);\n outline: var(--button-focus-outline, var(--outline));\n}\n\n\n.success__position {\n position: fixed;\n inset: var(--dialog-inset);\n padding: var(--page-margin);\n z-index: var(--z-index);\n}\n.success__content {\n background: var(--success-background, var(--background));\n border: var(--success-border, var(--border));\n border-radius: var(--success-border-radius, 1.7em/50%);\n box-shadow: var(--success-box-shadow, var(--box-shadow));\n font-weight: var(--success-font-weight, 600);\n color: var(--success-color);\n fill: var(--success-color);\n padding: 12px 24px;\n line-height: 1.75em;\n\n display: grid;\n align-items: center;\n grid-auto-flow: column;\n gap: 6px;\n cursor: default;\n}\n\n.success__icon {\n display: flex;\n}\n\n",e&&t.setAttribute("nonce",e),t}(e.styleNonce);let l="";const d={get el(){return a},appendToDom(){o.contains(c)||o.contains(a)||(o.appendChild(c),o.appendChild(a))},removeFromDom(){a.remove(),c.remove(),Jc.body.style.overflow=l},open(){p(!0),e.onFormOpen?.(),Ze()?.emit("openFeedbackWidget"),l=Jc.body.style.overflow,Jc.body.style.overflow="hidden"},close(){p(!1),Jc.body.style.overflow=l}},u=t?.createInput({h:kl,hooks:vd,dialog:d,options:e}),p=t=>{!function(e,t){var n,r,o;dl.__&&dl.__(e,t),n=t.__k,r=[],o=[],jl(t,e=t.__k=kl(Sl,null,[e]),n||ml,ml,void 0!==t.ownerSVGElement,n?null:t.firstChild?ll.call(t.childNodes):null,r,n?n.__e:t.firstChild,!1,o),e.__d=void 0,$l(r,e,o)}(kl(Sd,{options:e,screenshotInput:u,showName:e.showName||e.isNameRequired,showEmail:e.showEmail||e.isEmailRequired,defaultName:String(i&&s?.[i.name]||""),defaultEmail:String(i&&s?.[i.email]||""),onFormClose:()=>{p(!1),e.onFormClose?.()},onSubmit:n,onSubmitSuccess:(t,n)=>{p(!1),e.onSubmitSuccess?.(t,n)},onSubmitError:t=>{e.onSubmitError?.(t)},onFormSubmitted:()=>{e.onFormSubmitted?.()},open:t}),a)};return d}});function Ed(e){const t=Jc.createElement("style"),n="#1A141F",r="#302735";return t.textContent=`\n.editor {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n}\n\n.editor__image-container {\n justify-items: center;\n padding: 15px;\n position: relative;\n height: 100%;\n border-radius: var(--menu-border-radius, 6px);\n\n background-color: ${n};\n background-image: repeating-linear-gradient(\n -145deg,\n transparent,\n transparent 8px,\n ${n} 8px,\n ${n} 11px\n ),\n repeating-linear-gradient(\n -45deg,\n transparent,\n transparent 15px,\n ${r} 15px,\n ${r} 16px\n );\n}\n\n.editor__canvas-container {\n width: 100%;\n height: 100%;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.editor__canvas-container > * {\n object-fit: contain;\n position: absolute;\n}\n\n.editor__tool-container {\n padding-top: 8px;\n display: flex;\n justify-content: center;\n}\n\n.editor__tool-bar {\n display: flex;\n gap: 8px;\n}\n\n.editor__tool {\n display: flex;\n padding: 8px 12px;\n justify-content: center;\n align-items: center;\n border: var(--button-border, var(--border));\n border-radius: var(--button-border-radius, 6px);\n background: var(--button-background, var(--background));\n color: var(--button-color, var(--foreground));\n}\n\n.editor__tool--active {\n background: var(--button-primary-background, var(--accent-background));\n color: var(--button-primary-color, var(--accent-foreground));\n}\n\n.editor__rect {\n position: absolute;\n z-index: 2;\n}\n\n.editor__rect button {\n opacity: 0;\n position: absolute;\n top: -12px;\n right: -12px;\n cursor: pointer;\n padding: 0;\n z-index: 3;\n border: none;\n background: none;\n}\n\n.editor__rect:hover button {\n opacity: 1;\n}\n`,e&&t.setAttribute("nonce",e),t}function Td({hooks:e}){return function({onBeforeScreenshot:t,onScreenshot:n,onAfterScreenshot:r,onError:o}){const i=function(){const[t,n]=e.useState(Gc.devicePixelRatio??1);return e.useEffect(()=>{const e=()=>{n(Gc.devicePixelRatio)},t=matchMedia(`(resolution: ${Gc.devicePixelRatio}dppx)`);return t.addEventListener("change",e),()=>{t.removeEventListener("change",e)}},[]),t}();e.useEffect(()=>{(async()=>{t();const e=await Yc.mediaDevices.getDisplayMedia({video:{width:Gc.innerWidth*i,height:Gc.innerHeight*i},audio:!1,monitorTypeSurfaces:"exclude",preferCurrentTab:!0,selfBrowserSurface:"include",surfaceSwitching:"exclude"}),o=Jc.createElement("video");await new Promise((t,r)=>{o.srcObject=e,o.onloadedmetadata=()=>{n(o,i),e.getTracks().forEach(e=>e.stop()),t()},o.play().catch(r)}),r()})().catch(o)},[])}}function Md(e,t,n){if(!e)return;const r=e.getContext("2d",t);r&&n(e,r)}function Id(e,t){Md(e,{alpha:!0},(e,n)=>{n.drawImage(t,0,0,t.width,t.height,0,0,e.width,e.height)})}function Ad(e,t,n){Md(e,{alpha:!0},(e,r)=>{n.length&&(r.fillStyle="rgba(0, 0, 0, 0.25)",r.fillRect(0,0,e.width,e.height)),n.forEach(e=>{!function(e,t,n){switch(e.type){case"highlight":t.shadowColor="rgba(0, 0, 0, 0.7)",t.shadowBlur=50,t.fillStyle=n,t.fillRect(e.x-1,e.y-1,e.w+2,e.h+2),t.clearRect(e.x,e.y,e.w,e.h);break;case"hide":t.fillStyle="rgb(0, 0, 0)",t.fillRect(e.x,e.y,e.w,e.h)}}(e,r,t)})})}function Rd({h:e,hooks:t,outputBuffer:n,dialog:r,options:o}){const i=Td({hooks:t}),s=function({h:e}){return function({action:t,setAction:n,options:r}){return e("div",{class:"editor__tool-container"},e("div",{class:"editor__tool-bar"},e("button",{type:"button",class:"editor__tool "+("highlight"===t?"editor__tool--active":""),onClick:()=>{n("highlight"===t?"":"highlight")}},r.highlightToolText),e("button",{type:"button",class:"editor__tool "+("hide"===t?"editor__tool--active":""),onClick:()=>{n("hide"===t?"":"hide")}},r.hideToolText)))}}({h:e}),a=function({h:e}){return function(){return e("svg",{"data-test-id":"icon-close",viewBox:"0 0 16 16",fill:"#2B2233",height:"25px",width:"25px"},e("circle",{r:"7",cx:"8",cy:"8",fill:"white"}),e("path",{strokeWidth:"1.5",d:"M8,16a8,8,0,1,1,8-8A8,8,0,0,1,8,16ZM8,1.53A6.47,6.47,0,1,0,14.47,8,6.47,6.47,0,0,0,8,1.53Z"}),e("path",{strokeWidth:"1.5",d:"M5.34,11.41a.71.71,0,0,1-.53-.22.74.74,0,0,1,0-1.06l5.32-5.32a.75.75,0,0,1,1.06,1.06L5.87,11.19A.74.74,0,0,1,5.34,11.41Z"}),e("path",{strokeWidth:"1.5",d:"M10.66,11.41a.74.74,0,0,1-.53-.22L4.81,5.87A.75.75,0,0,1,5.87,4.81l5.32,5.32a.74.74,0,0,1,0,1.06A.71.71,0,0,1,10.66,11.41Z"}))}}({h:e}),c={__html:Ed(o.styleNonce).innerText},l=r.el.style,d=({screenshot:r})=>{const[i,l]=t.useState("highlight"),[d,u]=t.useState([]),p=t.useRef(null),h=t.useRef(null),f=t.useRef(null),g=t.useRef(null),[m,v]=t.useState(1),y=t.useMemo(()=>{const e=Jc.getElementById(o.id);if(!e)return"white";const t=getComputedStyle(e);return t.getPropertyValue("--button-primary-background")||t.getPropertyValue("--accent-background")},[o.id]);t.useLayoutEffect(()=>{const e=()=>{const t=p.current;t&&(Md(r.canvas,{alpha:!1},e=>{const n=Math.min(t.clientWidth/e.width,t.clientHeight/e.height);v(n)}),0!==t.clientHeight&&0!==t.clientWidth||setTimeout(e,0))};return e(),Gc.addEventListener("resize",e),()=>{Gc.removeEventListener("resize",e)}},[r]);const b=t.useCallback((e,t)=>{Md(e,{alpha:!0},(e,n)=>{n.scale(t,t),e.width=r.canvas.width,e.height=r.canvas.height})},[r]);t.useEffect(()=>{b(h.current,r.dpi),Id(h.current,r.canvas)},[r]),t.useEffect(()=>{b(f.current,r.dpi),Md(f.current,{alpha:!0},(e,t)=>{t.clearRect(0,0,e.width,e.height)}),Ad(f.current,y,d)},[d,y]),t.useEffect(()=>{b(n,r.dpi),Id(n,r.canvas),Md(Jc.createElement("canvas"),{alpha:!0},(e,t)=>{t.scale(r.dpi,r.dpi),e.width=r.canvas.width,e.height=r.canvas.height,Ad(e,y,d),Id(n,e)})},[d,r,y]);const w=t.useCallback(e=>t=>{t.preventDefault(),t.stopPropagation(),u(t=>{const n=[...t];return n.splice(e,1),n})},[]),x={width:r.canvas.width*m+"px",height:r.canvas.height*m+"px"},k=e=>{e.stopPropagation()};return e("div",{class:"editor"},e("style",{nonce:o.styleNonce,dangerouslySetInnerHTML:c}),e("div",{class:"editor__image-container"},e("div",{class:"editor__canvas-container",ref:p},e("canvas",{ref:h,id:"background",style:x}),e("canvas",{ref:f,id:"foreground",style:x}),e("div",{ref:g,onMouseDown:e=>{if(!i||!g.current)return;const t=g.current.getBoundingClientRect(),n={type:i,x:e.offsetX/m,y:e.offsetY/m},r=(e,n)=>{const r=(n.clientX-t.x)/m,o=(n.clientY-t.y)/m;return{type:e.type,x:Math.min(e.x,r),y:Math.min(e.y,o),w:Math.abs(r-e.x),h:Math.abs(o-e.y)}},o=e=>{Md(f.current,{alpha:!0},(e,t)=>{t.clearRect(0,0,e.width,e.height)}),Ad(f.current,y,[...d,r(n,e)])},s=e=>{const t=r(n,e);t.w*m>=1&&t.h*m>=1&&u(e=>[...e,t]),Jc.removeEventListener("mousemove",o),Jc.removeEventListener("mouseup",s)};Jc.addEventListener("mousemove",o),Jc.addEventListener("mouseup",s)},style:x},d.map((t,n)=>e("div",{key:n,class:"editor__rect",style:{top:t.y*m+"px",left:t.x*m+"px",width:t.w*m+"px",height:t.h*m+"px"}},e("button",{"aria-label":o.removeHighlightText,onClick:w(n),onMouseDown:k,onMouseUp:k,type:"button"},e(a,null))))))),e(s,{options:o,action:i,setAction:l}))};return function({onError:r}){const[o,s]=t.useState();return i({onBeforeScreenshot:t.useCallback(()=>{l.display="none"},[]),onScreenshot:t.useCallback((e,t)=>{Md(Jc.createElement("canvas"),{alpha:!1},(n,r)=>{r.scale(t,t),n.width=e.videoWidth,n.height=e.videoHeight,r.drawImage(e,0,0,n.width,n.height),s({canvas:n,dpi:t})}),n.width=e.videoWidth,n.height=e.videoHeight},[]),onAfterScreenshot:t.useCallback(()=>{l.display="block"},[]),onError:t.useCallback(e=>{l.display="block",r(e)},[])}),o?e(d,{screenshot:o}):e("div",null)}}const Ld=()=>({name:"FeedbackScreenshot",setupOnce(){},createInput:({h:e,hooks:t,dialog:n,options:r})=>{const o=Jc.createElement("canvas");return{input:Rd({h:e,hooks:t,outputBuffer:o,dialog:n,options:r}),value:async()=>{const e=await new Promise(e=>{o.toBlob(e,"image/png")});if(e){return{data:new Uint8Array(await e.arrayBuffer()),filename:"screenshot.png",contentType:"application/png"}}}}}}),Pd=a;let Od=0;function Dd(){return Od>0}function Nd(e,t={}){if(!function(e){return"function"==typeof e}(e))return e;try{const t=e.__sentry_wrapped__;if(t)return"function"==typeof t?t:e;if(ae(e))return e}catch{return e}const n=function(...n){try{const r=n.map(e=>Nd(e,t));return e.apply(this,r)}catch(e){throw Od++,setTimeout(()=>{Od--}),Xe(r=>{r.addEventProcessor(e=>(t.mechanism&&(Ce(e,void 0,void 0),Ee(e,t.mechanism)),e.extra={...e.extra,arguments:n},e)),wr(e)}),e}};try{for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t])}catch{}se(n,e),ie(e,"__sentry_wrapped__",n);try{Object.getOwnPropertyDescriptor(n,"name").configurable&&Object.defineProperty(n,"name",{get:()=>e.name})}catch{}return n}function Bd(){const e=ne(),{referrer:t}=Pd.document||{},{userAgent:n}=Pd.navigator||{};return{url:e,headers:{...t&&{Referer:t},...n&&{"User-Agent":n}}}}const jd={replayIntegration:"replay",replayCanvasIntegration:"replay-canvas",feedbackIntegration:"feedback",feedbackModalIntegration:"feedback-modal",feedbackScreenshotIntegration:"feedback-screenshot",captureConsoleIntegration:"captureconsole",contextLinesIntegration:"contextlines",linkedErrorsIntegration:"linkederrors",dedupeIntegration:"dedupe",extraErrorDataIntegration:"extraerrordata",graphqlClientIntegration:"graphqlclient",httpClientIntegration:"httpclient",reportingObserverIntegration:"reportingobserver",rewriteFramesIntegration:"rewriteframes",browserProfilingIntegration:"browserprofiling",moduleMetadataIntegration:"modulemetadata",instrumentAnthropicAiClient:"instrumentanthropicaiclient",instrumentOpenAiClient:"instrumentopenaiclient",instrumentGoogleGenAIClient:"instrumentgooglegenaiclient",instrumentLangGraph:"instrumentlanggraph",createLangChainCallbackHandler:"createlangchaincallbackhandler"},$d=Pd;async function zd(e,t){const n=jd[e],r=$d.Sentry=$d.Sentry||{};if(!n)throw new Error(`Cannot lazy load integration: ${e}`);const o=r[e];if("function"==typeof o&&!("_isShim"in o))return o;const i=function(e){const t=Ze(),n=t?.getOptions()?.cdnBaseUrl||"https://browser.sentry-cdn.com";return new URL(`/${c}/${e}.min.js`,n).toString()}(n),s=Pd.document.createElement("script");s.src=i,s.crossOrigin="anonymous",s.referrerPolicy="strict-origin",t&&s.setAttribute("nonce",t);const a=new Promise((e,t)=>{s.addEventListener("load",()=>e()),s.addEventListener("error",t)}),l=Pd.document.currentScript,d=Pd.document.body||Pd.document.head||l?.parentElement;if(!d)throw new Error(`Could not find parent element to insert lazy-loaded ${e} script`);d.appendChild(s);try{await a}catch{throw new Error(`Error when loading integration: ${e}`)}const u=r[e];if("function"!=typeof u)throw new Error(`Could not load integration: ${e}`);return u}const Fd=al({lazyLoadIntegration:zd}),Hd=al({getModalIntegration:()=>Cd,getScreenshotIntegration:()=>Ld});function qd(e,t){const n=Vd(e,t),r={type:Jd(t),value:Yd(t)};return n.length&&(r.stacktrace={frames:n}),void 0===r.type&&""===r.value&&(r.value="Unrecoverable error caught"),r}function Ud(e,t,n,r){const o=Ze(),i=o?.getOptions().normalizeDepth,s=function(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const n=e[t];if(n instanceof Error)return n}return}(t),a={__serialized__:wn(t,i)};if(s)return{exception:{values:[qd(e,s)]},extra:a};const c={exception:{values:[{type:G(t)?t.constructor.name:r?"UnhandledRejection":"Error",value:tu(t,{isUnhandledRejection:r})}]},extra:a};if(n){const t=Vd(e,n);t.length&&(c.exception.values[0].stacktrace={frames:t})}return c}function Wd(e,t){return{exception:{values:[qd(e,t)]}}}function Vd(e,t){const n=t.stacktrace||t.stack||"",r=function(e){if(e&&Kd.test(e.message))return 1;return 0}(t),o=function(e){if("number"==typeof e.framesToPop)return e.framesToPop;return 0}(t);try{return e(n,r,o)}catch{}return[]}const Kd=/Minified React error #\d+;/i;function Gd(e){return"undefined"!=typeof WebAssembly&&void 0!==WebAssembly.Exception&&e instanceof WebAssembly.Exception}function Jd(e){const t=e?.name;if(!t&&Gd(e)){return e.message&&Array.isArray(e.message)&&2==e.message.length?e.message[0]:"WebAssembly.Exception"}return t}function Yd(e){const t=e?.message;return Gd(e)?Array.isArray(e.message)&&2==e.message.length?e.message[1]:"wasm exception":t?t.error&&"string"==typeof t.error.message?Po(t.error):Po(e):"No error message"}function Xd(e,t,n,r){const o=Zd(e,t,n?.syntheticException||void 0,r);return Ee(o),o.level="error",n?.event_id&&(o.event_id=n.event_id),rr(o)}function Qd(e,t,n="info",r,o){const i=eu(e,t,r?.syntheticException||void 0,o);return i.level=n,r?.event_id&&(i.event_id=r.event_id),rr(i)}function Zd(e,t,n,r,o){let i;if(H(t)&&t.error){return Wd(e,t.error)}if(q(t)||F(t,"DOMException")){const o=t;if("stack"in t)i=Wd(e,t);else{const t=o.name||(q(o)?"DOMError":"DOMException"),s=o.message?`${t}: ${o.message}`:t;i=eu(e,s,n,r),Ce(i,s)}return"code"in o&&(i.tags={...i.tags,"DOMException.code":`${o.code}`}),i}if(z(t))return Wd(e,t);if(K(t)||G(t)){return i=Ud(e,t,n,o),Ee(i,{synthetic:!0}),i}return i=eu(e,t,n,r),Ce(i,`${t}`,void 0),Ee(i,{synthetic:!0}),i}function eu(e,t,n,r){const o={};if(r&&n){const r=Vd(e,n);r.length&&(o.exception={values:[{value:t,stacktrace:{frames:r}}]}),Ee(o,{synthetic:!0})}if(W(t)){const{__sentry_template_string__:e,__sentry_template_values__:n}=t;return o.logentry={message:e,params:n},o}return o.message=t,o}function tu(e,{isUnhandledRejection:t}){const n=ue(e),r=t?"promise rejection":"exception";if(H(e))return`Event \`ErrorEvent\` captured as ${r} with message \`${e.message}\``;if(G(e)){return`Event \`${function(e){try{const t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch{}}(e)}\` (type=${e.type}) captured as ${r}`}return`Object captured as ${r} with keys: ${n}`}class nu extends Co{constructor(e){const t=(n=e,{release:"string"==typeof __SENTRY_RELEASE__?__SENTRY_RELEASE__:Pd.SENTRY_RELEASE?.id,sendClientReports:!0,parentSpanIsAlwaysRootSpan:!0,...n});var n;!function(e,t,n=[t],r="npm"){const o=e._metadata||{};o.sdk||(o.sdk={name:`sentry.javascript.${t}`,packages:n.map(e=>({name:`${r}:@sentry/${e}`,version:c})),version:c}),e._metadata=o}(t,"browser",["browser"],Pd.SENTRY_SDK_SOURCE||"npm"),t._metadata?.sdk&&(t._metadata.sdk.settings={infer_ip:t.sendDefaultPii?"auto":"never",...t._metadata.sdk.settings}),super(t);const{sendDefaultPii:r,sendClientReports:o,enableLogs:i,_experiments:s,enableMetrics:a}=this._options,l=a??s?.enableMetrics??!0;Pd.document&&(o||i||l)&&Pd.document.addEventListener("visibilitychange",()=>{"hidden"===Pd.document.visibilityState&&(o&&this._flushOutcomes(),i&&Zr(this),l&&io(this))}),r&&this.on("beforeSendSession",Jo)}eventFromException(e,t){return Xd(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e,t="info",n){return Qd(this._options.stackParser,e,t,n,this._options.attachStacktrace)}_prepareEvent(e,t,n,r){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,n,r)}}const ru="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__,ou=a,iu=(e,t,n,r)=>{let o,i;return s=>{t.value>=0&&(s||r)&&(i=t.value-(o??0),(i||void 0===o)&&(o=t.value,t.delta=i,t.rating=((e,t)=>e>t[1]?"poor":e>t[0]?"needs-improvement":"good")(t.value,n),e(t)))}},su=(e=!0)=>{const t=ou.performance?.getEntriesByType?.("navigation")[0];if(!e||t&&t.responseStart>0&&t.responseStart<performance.now())return t},au=()=>{const e=su();return e?.activationStart??0};function cu(e,t,n){ou.document&&ou.addEventListener(e,t,n)}function lu(e,t,n){ou.document&&ou.removeEventListener(e,t,n)}let du=-1;const uu=new Set,pu=e=>{if(function(e){return"pagehide"===e.type||"hidden"===ou.document?.visibilityState}(e)&&du>-1){if("visibilitychange"===e.type||"pagehide"===e.type)for(const e of uu)e();isFinite(du)||(du="visibilitychange"===e.type?e.timeStamp:0,lu("prerenderingchange",pu,!0))}},hu=()=>{if(ou.document&&du<0){const e=au(),t=ou.document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(t=>"hidden"===t.name&&t.startTime>e)[0]?.startTime;du=t??("hidden"!==ou.document?.visibilityState||ou.document?.prerendering?1/0:0),cu("visibilitychange",pu,!0),cu("pagehide",pu,!0),cu("prerenderingchange",pu,!0)}return{get firstHiddenTime(){return du},onHidden(e){uu.add(e)}}};const fu=(e,t=-1)=>{const n=su();let r="navigate";n&&(ou.document?.prerendering||au()>0?r="prerender":ou.document?.wasDiscarded?r="restore":n.type&&(r=n.type.replace(/_/g,"-")));return{name:e,value:t,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},gu=new WeakMap;function mu(e,t){try{return gu.get(e)||gu.set(e,new t),gu.get(e)}catch(e){return new t}}class vu{constructor(){vu.prototype.__init.call(this),vu.prototype.__init2.call(this)}__init(){this._sessionValue=0}__init2(){this._sessionEntries=[]}_processEntry(e){if(e.hadRecentInput)return;const t=this._sessionEntries[0],n=this._sessionEntries[this._sessionEntries.length-1];this._sessionValue&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this._sessionValue+=e.value,this._sessionEntries.push(e)):(this._sessionValue=e.value,this._sessionEntries=[e]),this._onAfterProcessingUnexpectedShift?.(e)}}const yu=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const r=new PerformanceObserver(e=>{Promise.resolve().then(()=>{t(e.getEntries())})});return r.observe({type:e,buffered:!0,...n}),r}}catch{}},bu=e=>{let t=!1;return()=>{t||(e(),t=!0)}},wu=e=>{ou.document?.prerendering?addEventListener("prerenderingchange",()=>e(),!0):e()},xu=[1800,3e3],ku=[.1,.25],_u=(e,t={})=>{((e,t={})=>{wu(()=>{const n=hu(),r=fu("FCP");let o;const i=yu("paint",e=>{for(const t of e)"first-contentful-paint"===t.name&&(i.disconnect(),t.startTime<n.firstHiddenTime&&(r.value=Math.max(t.startTime-au(),0),r.entries.push(t),o(!0)))});i&&(o=iu(e,r,xu,t.reportAllChanges))})})(bu(()=>{const n=fu("CLS",0);let r;const o=hu(),i=mu(t,vu),s=e=>{for(const t of e)i._processEntry(t);i._sessionValue>n.value&&(n.value=i._sessionValue,n.entries=i._sessionEntries,r())},a=yu("layout-shift",s);a&&(r=iu(e,n,ku,t.reportAllChanges),o.onHidden(()=>{s(a.takeRecords()),r(!0)}),ou?.setTimeout?.(r))}))};let Su=0,Cu=1/0,Eu=0;const Tu=e=>{e.forEach(e=>{e.interactionId&&(Cu=Math.min(Cu,e.interactionId),Eu=Math.max(Eu,e.interactionId),Su=Eu?(Eu-Cu)/7+1:0)})};let Mu;const Iu=()=>Mu?Su:performance.interactionCount||0,Au=()=>{"interactionCount"in performance||Mu||(Mu=yu("event",Tu,{type:"event",buffered:!0,durationThreshold:0}))};let Ru=0;class Lu{constructor(){Lu.prototype.__init.call(this),Lu.prototype.__init2.call(this)}__init(){this._longestInteractionList=[]}__init2(){this._longestInteractionMap=new Map}_resetInteractions(){Ru=Iu(),this._longestInteractionList.length=0,this._longestInteractionMap.clear()}_estimateP98LongestInteraction(){const e=Math.min(this._longestInteractionList.length-1,Math.floor((Iu()-Ru)/50));return this._longestInteractionList[e]}_processEntry(e){if(this._onBeforeProcessingEntry?.(e),!e.interactionId&&"first-input"!==e.entryType)return;const t=this._longestInteractionList.at(-1);let n=this._longestInteractionMap.get(e.interactionId);if(n||this._longestInteractionList.length<10||e.duration>t._latency){if(n?e.duration>n._latency?(n.entries=[e],n._latency=e.duration):e.duration===n._latency&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],_latency:e.duration},this._longestInteractionMap.set(n.id,n),this._longestInteractionList.push(n)),this._longestInteractionList.sort((e,t)=>t._latency-e._latency),this._longestInteractionList.length>10){const e=this._longestInteractionList.splice(10);for(const t of e)this._longestInteractionMap.delete(t.id)}this._onAfterProcessingINPCandidate?.(n)}}}const Pu=e=>{const t=ou.requestIdleCallback||ou.setTimeout;"hidden"===ou.document?.visibilityState?e():(cu("visibilitychange",e=bu(e),{once:!0,capture:!0}),cu("pagehide",e,{once:!0,capture:!0}),t(()=>{e(),lu("visibilitychange",e,{capture:!0}),lu("pagehide",e,{capture:!0})}))},Ou=[200,500];class Du{_processEntry(e){this._onBeforeProcessingEntry?.(e)}}const Nu=[2500,4e3],Bu=[800,1800],ju=e=>{ou.document?.prerendering?wu(()=>ju(e)):"complete"!==ou.document?.readyState?addEventListener("load",()=>ju(e),!0):setTimeout(e)},$u={},zu={};let Fu,Hu,qu,Uu;function Wu(e,t=!1){return ep("cls",e,Yu,Fu,t)}function Vu(e,t=!1){return ep("lcp",e,Xu,Hu,t)}function Ku(e){return ep("inp",e,Zu,Uu)}function Gu(e,t){return tp(e,t),zu[e]||(!function(e){const t={};"event"===e&&(t.durationThreshold=0);yu(e,t=>{Ju(e,{entries:t})},t)}(e),zu[e]=!0),np(e,t)}function Ju(e,t){const n=$u[e];if(n?.length)for(const r of n)try{r(t)}catch(t){ru&&y.error(`Error while triggering instrumentation handler.\nType: ${e}\nName: ${C(r)}\nError:`,t)}}function Yu(){return _u(e=>{Ju("cls",{metric:e}),Fu=e},{reportAllChanges:!0})}function Xu(){return((e,t={})=>{wu(()=>{const n=hu(),r=fu("LCP");let o;const i=mu(t,Du),s=e=>{t.reportAllChanges||(e=e.slice(-1));for(const t of e)i._processEntry(t),t.startTime<n.firstHiddenTime&&(r.value=Math.max(t.startTime-au(),0),r.entries=[t],o())},a=yu("largest-contentful-paint",s);if(a){o=iu(e,r,Nu,t.reportAllChanges);const n=bu(()=>{s(a.takeRecords()),a.disconnect(),o(!0)}),i=e=>{e.isTrusted&&(Pu(n),lu(e.type,i,{capture:!0}))};for(const e of["keydown","click","visibilitychange"])cu(e,i,{capture:!0})}})})(e=>{Ju("lcp",{metric:e}),Hu=e},{reportAllChanges:!0})}function Qu(){return((e,t={})=>{const n=fu("TTFB"),r=iu(e,n,Bu,t.reportAllChanges);ju(()=>{const e=su();e&&(n.value=Math.max(e.responseStart-au(),0),n.entries=[e],r(!0))})})(e=>{Ju("ttfb",{metric:e}),qu=e})}function Zu(){return((e,t={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;const n=hu();wu(()=>{Au();const r=fu("INP");let o;const i=mu(t,Lu),s=e=>{Pu(()=>{for(const t of e)i._processEntry(t);const t=i._estimateP98LongestInteraction();t&&t._latency!==r.value&&(r.value=t._latency,r.entries=t.entries,o())})},a=yu("event",s,{durationThreshold:t.durationThreshold??40});o=iu(e,r,Ou,t.reportAllChanges),a&&(a.observe({type:"first-input",buffered:!0}),n.onHidden(()=>{s(a.takeRecords()),o(!0)}))})})(e=>{Ju("inp",{metric:e}),Uu=e})}function ep(e,t,n,r,o=!1){let i;return tp(e,t),zu[e]||(i=n(),zu[e]=!0),r&&t({metric:r}),np(e,t,o?i:void 0)}function tp(e,t){$u[e]=$u[e]||[],$u[e].push(t)}function np(e,t,n){return()=>{n&&n();const r=$u[e];if(!r)return;const o=r.indexOf(t);-1!==o&&r.splice(o,1)}}function rp(e){return"number"==typeof e&&isFinite(e)}function op(e,t,n,{...r}){const o=Vt(e).start_timestamp;return o&&o>t&&"function"==typeof e.updateStartTime&&e.updateStartTime(t),Vn(e,()=>{const e=Un({startTime:t,...r});return e&&e.end(n),e})}function ip(e){const t=Ze();if(!t)return;const{name:n,transaction:r,attributes:o,startTime:i}=e,{release:s,environment:a,sendDefaultPii:c}=t.getOptions(),l=t.getIntegrationByName("Replay"),d=l?.getReplayId(),u=Ge(),p=u.getUser(),h=void 0!==p?p.email||p.id||p.ip_address:void 0;let f;try{f=u.getScopeData().contexts.profile.profile_id}catch{}return Un({name:n,attributes:{release:s,environment:a,user:h||void 0,profile_id:f||void 0,replay_id:d||void 0,transaction:r,"user_agent.original":ou.navigator?.userAgent,"client.address":c?"{{auto}}":void 0,...o},startTime:i,experimental:{standalone:!0}})}function sp(){return ou.addEventListener&&ou.performance}function ap(e){return e/1e3}function cp(e){try{return PerformanceObserver.supportedEntryTypes.includes(e)}catch{return!1}}function lp(e,t){let n,r=!1;function o(e){!r&&n&&t(e,n),r=!0}(e=>{const t=t=>{"pagehide"!==t.type&&"hidden"!==ou.document?.visibilityState||e(t)};cu("visibilitychange",t,{capture:!0,once:!0}),cu("pagehide",t,{capture:!0,once:!0})})(()=>{o("pagehide")});const i=e.on("beforeStartNavigationSpan",(e,t)=>{t?.isRedirect||(o("navigation"),i(),s())}),s=e.on("afterStartPageLoadSpan",e=>{n=e.spanContext().spanId,s()})}function dp(e){let t,n=0;if(!cp("layout-shift"))return;const r=Wu(({metric:e})=>{const r=e.entries[e.entries.length-1];r&&(n=e.value,t=r)},!0);lp(e,(e,o)=>{!function(e,t,n,r){ru&&y.log(`Sending CLS span (${e})`);const o=t?ap((Le()||0)+t.startTime):Ae(),i=Ge().getScopeData().transactionName,s=t?ee(t.sources[0]?.node):"Layout shift",a={[it]:"auto.http.browser.cls",[ot]:"ui.webvital.cls",[ut]:0,"sentry.pageload.span_id":n,"sentry.report_event":r};t?.sources&&t.sources.forEach((e,t)=>{a[`cls.source.${t+1}`]=ee(e.node)});const c=ip({name:s,transaction:i,attributes:a,startTime:o});c&&(c.addEvent("cls",{[at]:"",[ct]:e}),c.end(o))}(n,t,o,e),r()})}function up(e){let t,n=0;if(!cp("largest-contentful-paint"))return;const r=Vu(({metric:e})=>{const r=e.entries[e.entries.length-1];r&&(n=e.value,t=r)},!0);lp(e,(e,o)=>{!function(e,t,n,r){ru&&y.log(`Sending LCP span (${e})`);const o=ap((Le()||0)+(t?.startTime||0)),i=Ge().getScopeData().transactionName,s=t?ee(t.element):"Largest contentful paint",a={[it]:"auto.http.browser.lcp",[ot]:"ui.webvital.lcp",[ut]:0,"sentry.pageload.span_id":n,"sentry.report_event":r};t&&(t.element&&(a["lcp.element"]=ee(t.element)),t.id&&(a["lcp.id"]=t.id),t.url&&(a["lcp.url"]=t.url),null!=t.loadTime&&(a["lcp.loadTime"]=t.loadTime),null!=t.renderTime&&(a["lcp.renderTime"]=t.renderTime),null!=t.size&&(a["lcp.size"]=t.size));const c=ip({name:s,transaction:i,attributes:a,startTime:o});c&&(c.addEvent("lcp",{[at]:"millisecond",[ct]:e}),c.end(o))}(n,t,o,e),r()})}function pp(e){return e?((Le()||performance.timeOrigin)+e)/1e3:e}function hp(e){const t={};if(null!=e.nextHopProtocol){const{name:n,version:r}=function(e){let t="unknown",n="unknown",r="";for(const o of e){if("/"===o){[t,n]=e.split("/");break}if(!isNaN(Number(o))){t="h"===r?"http":r,n=e.split(r)[1];break}r+=o}return r===e&&(t=r),{name:t,version:n}}(e.nextHopProtocol);t["network.protocol.version"]=r,t["network.protocol.name"]=n}return Le()||sp()?.timeOrigin?(n={...t,"http.request.redirect_start":pp(e.redirectStart),"http.request.redirect_end":pp(e.redirectEnd),"http.request.worker_start":pp(e.workerStart),"http.request.fetch_start":pp(e.fetchStart),"http.request.domain_lookup_start":pp(e.domainLookupStart),"http.request.domain_lookup_end":pp(e.domainLookupEnd),"http.request.connect_start":pp(e.connectStart),"http.request.secure_connection_start":pp(e.secureConnectionStart),"http.request.connection_end":pp(e.connectEnd),"http.request.request_start":pp(e.requestStart),"http.request.response_start":pp(e.responseStart),"http.request.response_end":pp(e.responseEnd),"http.request.time_to_first_byte":null!=e.responseStart?e.responseStart/1e3:void 0},Object.fromEntries(Object.entries(n).filter(([,e])=>null!=e))):t;var n}const fp=2147483647;let gp,mp,vp=0,yp={};function bp({recordClsStandaloneSpans:e,recordLcpStandaloneSpans:t,client:n}){const r=sp();if(r&&Le()){r.mark&&ou.performance.mark("sentry-tracing-init");const o=t?up(n):Vu(({metric:e})=>{const t=e.entries[e.entries.length-1];t&&(yp.lcp={value:e.value,unit:"millisecond"},gp=t)},!0),i=ep("ttfb",({metric:e})=>{e.entries[e.entries.length-1]&&(yp.ttfb={value:e.value,unit:"millisecond"})},Qu,qu),s=e?dp(n):Wu(({metric:e})=>{const t=e.entries[e.entries.length-1];t&&(yp.cls={value:e.value,unit:""},mp=t)},!0);return()=>{o?.(),i(),s?.()}}return()=>{}}function wp(e,t){const n=sp(),r=Le();if(!n?.getEntries||!r)return;const o=ap(r),i=n.getEntries(),{op:s,start_timestamp:a}=Vt(e);i.slice(vp).forEach(n=>{const r=ap(n.startTime),i=ap(Math.max(0,n.duration));if(!("navigation"===s&&a&&o+r<a))switch(n.entryType){case"navigation":!function(e,t,n){["unloadEvent","redirect","domContentLoadedEvent","loadEvent","connect"].forEach(r=>{xp(e,t,r,n)}),xp(e,t,"secureConnection",n,"TLS/SSL"),xp(e,t,"fetch",n,"cache"),xp(e,t,"domainLookup",n,"DNS"),function(e,t,n){const r=n+ap(t.requestStart),o=n+ap(t.responseEnd),i=n+ap(t.responseStart);t.responseEnd&&(op(e,r,o,{op:"browser.request",name:t.name,attributes:{[it]:"auto.ui.browser.metrics"}}),op(e,i,o,{op:"browser.response",name:t.name,attributes:{[it]:"auto.ui.browser.metrics"}}))}(e,t,n)}(e,n,o);break;case"mark":case"paint":case"measure":{!function(e,t,n,r,o,i){if(function(e){if("measure"!==e?.entryType)return;try{return"Components ⚛"===e.detail.devtools.track}catch{return}}(t))return;if(["mark","measure"].includes(t.entryType)&&xe(t.name,i))return;const s=su(!1),a=ap(s?s.requestStart:0),c=o+Math.max(n,a),l=o+n,d=l+r,u={[it]:"auto.resource.browser.metrics"};c!==l&&(u["sentry.browser.measure_happened_before_request"]=!0,u["sentry.browser.measure_start_time"]=c);(function(e,t){try{const n=t.detail;if(!n)return;if("object"==typeof n){for(const[t,r]of Object.entries(n))if(r&&V(r))e[`sentry.browser.measure.detail.${t}`]=r;else if(void 0!==r)try{e[`sentry.browser.measure.detail.${t}`]=JSON.stringify(r)}catch{}return}if(V(n))return void(e["sentry.browser.measure.detail"]=n);try{e["sentry.browser.measure.detail"]=JSON.stringify(n)}catch{}}catch{}})(u,t),c<=d&&op(e,c,d,{name:t.name,op:t.entryType,attributes:u})}(e,n,r,i,o,t.ignorePerformanceApiSpans);const s=hu(),a=n.startTime<s.firstHiddenTime;"first-paint"===n.name&&a&&(yp.fp={value:n.startTime,unit:"millisecond"}),"first-contentful-paint"===n.name&&a&&(yp.fcp={value:n.startTime,unit:"millisecond"});break}case"resource":!function(e,t,n,r,o,i,s){if("xmlhttprequest"===t.initiatorType||"fetch"===t.initiatorType)return;const a=t.initiatorType?`resource.${t.initiatorType}`:"resource.other";if(s?.includes(a))return;const c={[it]:"auto.resource.browser.metrics"},l=qo(n);l.protocol&&(c["url.scheme"]=l.protocol.split(":").pop());l.host&&(c["server.address"]=l.host);c["url.same_origin"]=n.includes(ou.location.origin),function(e,t,n){n.forEach(([n,r])=>{const o=e[n];null!=o&&("number"==typeof o&&o<fp||"string"==typeof o)&&(t[r]=o)})}(t,c,[["responseStatus","http.response.status_code"],["transferSize","http.response_transfer_size"],["encodedBodySize","http.response_content_length"],["decodedBodySize","http.decoded_response_content_length"],["renderBlockingStatus","resource.render_blocking_status"],["deliveryType","http.response_delivery_type"]]);const d={...c,...hp(t)},u=i+r,p=u+o;op(e,u,p,{name:n.replace(ou.location.origin,""),op:a,attributes:d})}(e,n,n.name,r,i,o,t.ignoreResourceSpans)}}),vp=Math.max(i.length-1,0),function(e){const t=ou.navigator;if(!t)return;const n=t.connection;n&&(n.effectiveType&&e.setAttribute("effectiveConnectionType",n.effectiveType),n.type&&e.setAttribute("connectionType",n.type),rp(n.rtt)&&(yp["connection.rtt"]={value:n.rtt,unit:"millisecond"}));rp(t.deviceMemory)&&e.setAttribute("deviceMemory",`${t.deviceMemory} GB`);rp(t.hardwareConcurrency)&&e.setAttribute("hardwareConcurrency",String(t.hardwareConcurrency))}(e),"pageload"===s&&(function(e){const t=su(!1);if(!t)return;const{responseStart:n,requestStart:r}=t;r<=n&&(e["ttfb.requestTime"]={value:n-r,unit:"millisecond"})}(yp),t.recordClsOnPageloadSpan||delete yp.cls,t.recordLcpOnPageloadSpan||delete yp.lcp,Object.entries(yp).forEach(([e,t])=>{Dn(e,t.value,t.unit)}),e.setAttribute("performance.timeOrigin",o),e.setAttribute("performance.activationStart",au()),function(e,t){gp&&t.recordLcpOnPageloadSpan&&(gp.element&&e.setAttribute("lcp.element",ee(gp.element)),gp.id&&e.setAttribute("lcp.id",gp.id),gp.url&&e.setAttribute("lcp.url",gp.url.trim().slice(0,200)),null!=gp.loadTime&&e.setAttribute("lcp.loadTime",gp.loadTime),null!=gp.renderTime&&e.setAttribute("lcp.renderTime",gp.renderTime),e.setAttribute("lcp.size",gp.size));mp?.sources&&t.recordClsOnPageloadSpan&&mp.sources.forEach((t,n)=>e.setAttribute(`cls.source.${n+1}`,ee(t.node)))}(e,t)),gp=void 0,mp=void 0,yp={}}function xp(e,t,n,r,o=n){const i=function(e){if("secureConnection"===e)return"connectEnd";if("fetch"===e)return"domainLookupStart";return`${e}End`}(n),s=t[i],a=t[`${n}Start`];a&&s&&op(e,r+ap(a),r+ap(s),{op:`browser.${o}`,name:t.name,attributes:{[it]:"auto.ui.browser.metrics",..."redirect"===n&&null!=t.redirectCount?{"http.redirect_count":t.redirectCount}:{}}})}const kp=({entries:e})=>{const t=en(),n=t?Zt(t):void 0,r=n?Vt(n).description:Ge().getScopeData().transactionName;e.forEach(e=>{const t=e;if(!t.identifier)return;const n=t.name,o=t.renderTime,i=t.loadTime,[s,a]=i?[ap(i),"load-time"]:o?[ap(o),"render-time"]:[Ae(),"entry-emission"],c="image-paint"===n?ap(Math.max(0,(o??0)-(i??0))):0,l={[it]:"auto.ui.browser.elementtiming",[ot]:"ui.elementtiming",[tt]:"component","sentry.span_start_time_source":a,"sentry.transaction_name":r,"element.id":t.id,"element.type":t.element?.tagName?.toLowerCase()||"unknown","element.size":t.naturalWidth&&t.naturalHeight?`${t.naturalWidth}x${t.naturalHeight}`:void 0,"element.render_time":o,"element.load_time":i,"element.url":t.url||void 0,"element.identifier":t.identifier,"element.paint_type":n};Hn({name:`element[${t.identifier}]`,attributes:l,startTime:s,onlyIfParent:!0},e=>{e.end(s+c)})})};let _p,Sp,Cp,Ep;function Tp(e){A("dom",e),R("dom",Mp)}function Mp(){if(!ou.document)return;const e=L.bind(null,"dom"),t=Ip(e,!0);ou.document.addEventListener("click",t,!1),ou.document.addEventListener("keypress",t,!1),["EventTarget","Node"].forEach(t=>{const n=ou,r=n[t]?.prototype;r?.hasOwnProperty?.("addEventListener")&&(oe(r,"addEventListener",function(t){return function(n,r,o){if("click"===n||"keypress"==n)try{const r=this.__sentry_instrumentation_handlers__=this.__sentry_instrumentation_handlers__||{},i=r[n]=r[n]||{refCount:0};if(!i.handler){const r=Ip(e);i.handler=r,t.call(this,n,r,o)}i.refCount++}catch{}return t.call(this,n,r,o)}}),oe(r,"removeEventListener",function(e){return function(t,n,r){if("click"===t||"keypress"==t)try{const n=this.__sentry_instrumentation_handlers__||{},o=n[t];o&&(o.refCount--,o.refCount<=0&&(e.call(this,t,o.handler,r),o.handler=void 0,delete n[t]),0===Object.keys(n).length&&delete this.__sentry_instrumentation_handlers__)}catch{}return e.call(this,t,n,r)}}))})}function Ip(e,t=!1){return n=>{if(!n||n._sentryCaptured)return;const r=function(e){try{return e.target}catch{return null}}(n);if(function(e,t){return"keypress"===e&&(!t?.tagName||"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&!t.isContentEditable)}(n.type,r))return;ie(n,"_sentryCaptured",!0),r&&!r._sentryId&&ie(r,"_sentryId",ke());const o="keypress"===n.type?"input":n.type;if(!function(e){if(e.type!==Sp)return!1;try{if(!e.target||e.target._sentryId!==Cp)return!1}catch{}return!0}(n)){e({event:n,name:o,global:t}),Sp=n.type,Cp=r?r._sentryId:void 0}clearTimeout(_p),_p=ou.setTimeout(()=>{Cp=void 0,Sp=void 0},1e3)}}function Ap(e){const t="history";A(t,e),R(t,Rp)}function Rp(){function e(e){return function(...t){const n=t.length>2?t[2]:void 0;if(n){const r=Ep,o=function(e){try{return new URL(e,ou.location.origin).toString()}catch{return e}}(String(n));if(Ep=o,r===o)return e.apply(this,t);L("history",{from:r,to:o})}return e.apply(this,t)}}ou.addEventListener("popstate",()=>{const e=ou.location.href,t=Ep;if(Ep=e,t===e)return;L("history",{from:t,to:e})}),"history"in Nc&&Nc.history&&(oe(ou.history,"pushState",e),oe(ou.history,"replaceState",e))}const Lp={};function Pp(e){const t=Lp[e];if(t)return t;let n=ou[e];if(jc(n))return Lp[e]=n.bind(ou);const r=ou.document;if(r&&"function"==typeof r.createElement)try{const t=r.createElement("iframe");t.hidden=!0,r.head.appendChild(t);const o=t.contentWindow;o?.[e]&&(n=o[e]),r.head.removeChild(t)}catch(t){ru&&y.warn(`Could not create sandbox iframe for ${e} check, bailing to window.${e}: `,t)}return n?Lp[e]=n.bind(ou):n}function Op(...e){return Pp("setTimeout")(...e)}const Dp="__sentry_xhr_v3__";function Np(e){A("xhr",e),R("xhr",Bp)}function Bp(){if(!ou.XMLHttpRequest)return;const e=XMLHttpRequest.prototype;e.open=new Proxy(e.open,{apply(e,t,n){const r=new Error,o=1e3*Ae(),i=U(n[0])?n[0].toUpperCase():void 0,s=function(e){if(U(e))return e;try{return e.toString()}catch{}return}(n[1]);if(!i||!s)return e.apply(t,n);t[Dp]={method:i,url:s,request_headers:{}},"POST"===i&&s.match(/sentry_key/)&&(t.__sentry_own_request__=!0);const a=()=>{const e=t[Dp];if(e&&4===t.readyState){try{e.status_code=t.status}catch{}L("xhr",{endTimestamp:1e3*Ae(),startTimestamp:o,xhr:t,virtualError:r})}};return"onreadystatechange"in t&&"function"==typeof t.onreadystatechange?t.onreadystatechange=new Proxy(t.onreadystatechange,{apply:(e,t,n)=>(a(),e.apply(t,n))}):t.addEventListener("readystatechange",a),t.setRequestHeader=new Proxy(t.setRequestHeader,{apply(e,t,n){const[r,o]=n,i=t[Dp];return i&&U(r)&&U(o)&&(i.request_headers[r.toLowerCase()]=o),e.apply(t,n)}}),e.apply(t,n)}}),e.send=new Proxy(e.send,{apply(e,t,n){const r=t[Dp];if(!r)return e.apply(t,n);void 0!==n[0]&&(r.body=n[0]);return L("xhr",{startTimestamp:1e3*Ae(),xhr:t}),e.apply(t,n)}})}const jp=Symbol.for("sentry__originalRequestBody");function $p(e){return new URLSearchParams(e).toString()}function zp(e,t=y){try{if("string"==typeof e)return[e];if(e instanceof URLSearchParams)return[e.toString()];if(e instanceof FormData)return[$p(e)];if(!e)return[void 0]}catch(n){return ru&&t.error(n,"Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return ru&&t.log("Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}function Fp(e=[]){if(e.length>=2&&e[1]&&"object"==typeof e[1]&&"body"in e[1])return e[1].body;if(e.length>=1&&e[0]instanceof Request){const t=e[0][jp];return void 0!==t?t:void 0}}function Hp(e){let t;try{t=e.getAllResponseHeaders()}catch(t){return ru&&y.error(t,"Failed to get xhr response headers",e),{}}return t?t.split("\r\n").reduce((e,t)=>{const[n,r]=t.split(": ");return r&&(e[n.toLowerCase()]=r),e},{}):{}}const qp=[],Up=new Map,Wp=new Map;function Vp(){if(sp()&&Le()){const e=Ku(Gp);return()=>{e()}}return()=>{}}const Kp={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"};const Gp=({metric:e})=>{if(null==e.value)return;const t=ap(e.value);if(t>60)return;const n=e.entries.find(t=>t.duration===e.value&&Kp[t.name]);if(!n)return;const{interactionId:r}=n,o=Kp[n.name],i=ap(Le()+n.startTime),s=en(),a=s?Zt(s):void 0,c=null!=r?Up.get(r):void 0,l=c?.span||a,d=l?Vt(l).description:Ge().getScopeData().transactionName,u=ip({name:c?.elementName||ee(n.target),transaction:d,attributes:{[it]:"auto.http.browser.inp",[ot]:`ui.interaction.${o}`,[ut]:n.duration},startTime:i});u&&(u.addEvent("inp",{[at]:"millisecond",[ct]:e.value}),u.end(i+t))};function Jp(){const e=Object.keys(Kp);function t(e){const t=e.target;if(!t)return;const n=ee(t),r=Math.round(e.timeStamp);if(Wp.set(r,n),Wp.size>50){const e=Wp.keys().next().value;void 0!==e&&Wp.delete(e)}}Kc()&&e.forEach(e=>{ou.addEventListener(e,t,{capture:!0,passive:!0})});const n=({entries:e})=>{const t=en(),n=t&&Zt(t);e.forEach(e=>{if(!function(e){return"duration"in e}(e))return;const t=e.interactionId;if(null==t)return;if(Up.has(t))return;const r=e.target?ee(e.target):function(e){const t=Math.round(e.startTime);let n=Wp.get(t);if(!n)for(let e=-5;e<=5;e++){const r=Wp.get(t+e);if(r){n=r;break}}return n||"<unknown>"}(e);if(qp.length>10){const e=qp.shift();Up.delete(e)}qp.push(t),Up.set(t,{span:n,elementName:r})})};Gu("event",n),Gu("first-input",n)}function Yp(e,t=Pp("fetch")){let n=0,r=0;return fo(e,async function(o){const i=o.body.length;n+=i,r++;const s={body:o.body,method:"POST",referrerPolicy:"strict-origin",headers:e.headers,keepalive:n<=6e4&&r<15,...e.fetchOptions};try{const n=await t(e.url,s);return{statusCode:n.status,headers:{"x-sentry-rate-limits":n.headers.get("X-Sentry-Rate-Limits"),"retry-after":n.headers.get("Retry-After")}}}catch(e){throw Lp["fetch"]=void 0,e}finally{n-=i,r--}},lo(e.bufferSize||40))}const Xp="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;const Qp={startProfiler:function(){const e=Ze();if(!e)return void(Xp&&y.warn("No Sentry client available, profiling is not started"));e.getIntegrationByName("BrowserProfiling")?e.emit("startUIProfiler"):Xp&&y.warn("BrowserProfiling integration is not available")},stopProfiler:function(){const e=Ze();if(!e)return void(Xp&&y.warn("No Sentry client available, profiling is not started"));e.getIntegrationByName("BrowserProfiling")?e.emit("stopUIProfiler"):Xp&&y.warn("ProfilingIntegration is not available")}};function Zp(e,t,n,r){const o={filename:e,function:"<anonymous>"===t?b:t,in_app:!0};return void 0!==n&&(o.lineno=n),void 0!==r&&(o.colno=r),o}const eh=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,th=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,nh=/\((\S*)(?::(\d+))(?::(\d+))\)/,rh=/at (.+?) ?\(data:(.+?),/,oh=[30,e=>{const t=e.match(rh);if(t)return{filename:`<data:${t[2]}>`,function:t[1]};const n=eh.exec(e);if(n){const[,e,t,r]=n;return Zp(e,b,+t,+r)}const r=th.exec(e);if(r){if(r[2]&&0===r[2].indexOf("eval")){const e=nh.exec(r[2]);e&&(r[2]=e[1],r[3]=e[2],r[4]=e[3])}const[e,t]=mh(r[1]||b,r[2]);return Zp(t,e,r[3]?+r[3]:void 0,r[4]?+r[4]:void 0)}}],ih=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,sh=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ah=[50,e=>{const t=ih.exec(e);if(t){if(t[3]&&t[3].indexOf(" > eval")>-1){const e=sh.exec(t[3]);e&&(t[1]=t[1]||"eval",t[3]=e[1],t[4]=e[2],t[5]="")}let e=t[3],n=t[1]||b;return[n,e]=mh(n,e),Zp(e,n,t[4]?+t[4]:void 0,t[5]?+t[5]:void 0)}}],ch=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,lh=[40,e=>{const t=ch.exec(e);return t?Zp(t[2],t[1]||b,+t[3],t[4]?+t[4]:void 0):void 0}],dh=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,uh=[10,e=>{const t=dh.exec(e);return t?Zp(t[2],t[3]||b,+t[1]):void 0}],ph=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,hh=[20,e=>{const t=ph.exec(e);return t?Zp(t[5],t[3]||t[4]||b,+t[1],+t[2]):void 0}],fh=[oh,ah],gh=k(...fh),mh=(e,t)=>{const n=-1!==e.indexOf("safari-extension"),r=-1!==e.indexOf("safari-web-extension");return n||r?[-1!==e.indexOf("@")?e.split("@")[0]:b,n?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};function vh(e,{metadata:t,tunnel:n,dsn:r}){const o={event_id:e.event_id,sent_at:(new Date).toISOString(),...t?.sdk&&{sdk:{name:t.sdk.name,version:t.sdk.version}},...!!n&&!!r&&{dsn:It(r)}},i=function(e){return[{type:"user_report"},e]}(e);return kn(o,[i])}const yh=1024,bh=(e={})=>{const t={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...e};return{name:"Breadcrumbs",setup(e){t.console&&vi(function(e){return function(t){if(Ze()!==e)return;const n={category:"console",data:{arguments:t.args,logger:"console"},level:bi(t.level),message:be(t.args," ")};if("assert"===t.level){if(!1!==t.args[0])return;n.message=`Assertion failed: ${be(t.args.slice(1)," ")||"console.assert"}`,n.data.arguments=t.args.slice(1)}Qo(n,{input:t.args,level:t.level})}}(e)),t.dom&&Tp(function(e,t){return function(n){if(Ze()!==e)return;let r,o,i="object"==typeof t?t.serializeAttribute:void 0,s="object"==typeof t&&"number"==typeof t.maxStringLength?t.maxStringLength:void 0;s&&s>yh&&(Xp&&y.warn(`\`dom.maxStringLength\` cannot exceed 1024, but a value of ${s} was configured. Sentry will use 1024 instead.`),s=yh),"string"==typeof i&&(i=[i]);try{const e=n.event,t=function(e){return!!e&&!!e.target}(e)?e.target:e;r=ee(t,{keyAttrs:i,maxStringLength:s}),o=re(t)}catch{r="<unknown>"}if(0===r.length)return;const a={category:`ui.${n.name}`,message:r};o&&(a.data={"ui.component_name":o}),Qo(a,{event:n.event,name:n.name,global:n.global})}}(e,t.dom)),t.xhr&&Np(function(e){return function(t){if(Ze()!==e)return;const{startTimestamp:n,endTimestamp:r}=t,o=t.xhr[Dp];if(!n||!r||!o)return;const{method:i,url:s,status_code:a,body:c}=o,l={method:i,url:s,status_code:a},d={xhr:t.xhr,input:c,startTimestamp:n,endTimestamp:r},u={category:"xhr",data:l,type:"http",level:Dc(a)};e.emit("beforeOutgoingRequestBreadcrumb",u,d),Qo(u,d)}}(e)),t.fetch&&zc(function(e){return function(t){if(Ze()!==e)return;const{startTimestamp:n,endTimestamp:r}=t;if(r&&(!t.fetchData.url.match(/sentry_key/)||"POST"!==t.fetchData.method))if(t.fetchData.method,t.fetchData.url,t.error){const o=t.fetchData,i={data:t.error,input:t.args,startTimestamp:n,endTimestamp:r},s={category:"fetch",data:o,level:"error",type:"http"};e.emit("beforeOutgoingRequestBreadcrumb",s,i),Qo(s,i)}else{const o=t.response,i={...t.fetchData,status_code:o?.status};t.fetchData.request_body_size,t.fetchData.response_body_size;const s={input:t.args,response:o,startTimestamp:n,endTimestamp:r},a={category:"fetch",data:i,type:"http",level:Dc(i.status_code)};e.emit("beforeOutgoingRequestBreadcrumb",a,s),Qo(a,s)}}}(e)),t.history&&Ap(function(e){return function(t){if(Ze()!==e)return;let n=t.from,r=t.to;const o=qo(Pd.location.href);let i=n?qo(n):void 0;const s=qo(r);i?.path||(i=o),o.protocol===s.protocol&&o.host===s.host&&(r=s.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),Qo({category:"navigation",data:{from:n,to:r}})}}(e)),t.sentry&&e.on("beforeSendEvent",function(e){return function(t){Ze()===e&&Qo({category:"sentry."+("transaction"===t.type?"transaction":"event"),event_id:t.event_id,level:t.level,message:Se(t)},{event:t})}}(e))}}};const wh=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","BroadcastChannel","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","SharedWorker","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],xh=(e={})=>{const t={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,unregisterOriginalCallbacks:!1,...e};return{name:"BrowserApiErrors",setupOnce(){t.setTimeout&&oe(Pd,"setTimeout",kh),t.setInterval&&oe(Pd,"setInterval",kh),t.requestAnimationFrame&&oe(Pd,"requestAnimationFrame",_h),t.XMLHttpRequest&&"XMLHttpRequest"in Pd&&oe(XMLHttpRequest.prototype,"send",Sh);const e=t.eventTarget;if(e){(Array.isArray(e)?e:wh).forEach(e=>function(e,t){const n=Pd,r=n[e]?.prototype;if(!r?.hasOwnProperty?.("addEventListener"))return;oe(r,"addEventListener",function(n){return function(r,o,i){try{"function"==typeof o.handleEvent&&(o.handleEvent=Nd(o.handleEvent,{mechanism:{data:{handler:C(o),target:e},handled:!1,type:"auto.browser.browserapierrors.handleEvent"}}))}catch{}return t.unregisterOriginalCallbacks&&function(e,t,n){e&&"object"==typeof e&&"removeEventListener"in e&&"function"==typeof e.removeEventListener&&e.removeEventListener(t,n)}(this,r,o),n.apply(this,[r,Nd(o,{mechanism:{data:{handler:C(o),target:e},handled:!1,type:"auto.browser.browserapierrors.addEventListener"}}),i])}}),oe(r,"removeEventListener",function(e){return function(t,n,r){try{const o=n.__sentry_wrapped__;o&&e.call(this,t,o,r)}catch{}return e.call(this,t,n,r)}})}(e,t))}}}};function kh(e){return function(...t){const n=t[0];return t[0]=Nd(n,{mechanism:{handled:!1,type:`auto.browser.browserapierrors.${C(e)}`}}),e.apply(this,t)}}function _h(e){return function(t){return e.apply(this,[Nd(t,{mechanism:{data:{handler:C(e)},handled:!1,type:"auto.browser.browserapierrors.requestAnimationFrame"}})])}}function Sh(e){return function(...t){const n=this;return["onload","onerror","onprogress","onreadystatechange"].forEach(e=>{e in n&&"function"==typeof n[e]&&oe(n,e,function(t){const n={mechanism:{data:{handler:C(t)},handled:!1,type:`auto.browser.browserapierrors.xhr.${e}`}},r=ae(t);return r&&(n.mechanism.data.handler=C(r)),Nd(t,n)})}),e.apply(this,t)}}const Ch=()=>({name:"BrowserSession",setupOnce(){void 0!==Pd.document?(Dr({ignoreDuration:!0}),jr(),Ap(({from:e,to:t})=>{void 0!==e&&e!==t&&(Dr({ignoreDuration:!0}),jr())})):Xp&&y.warn("Using the `browserSessionIntegration` in non-browser environments is not supported.")}}),Eh=(e={})=>{const t={onerror:!0,onunhandledrejection:!0,...e};return{name:"GlobalHandlers",setupOnce(){Error.stackTraceLimit=50},setup(e){t.onerror&&(!function(e){O(t=>{const{stackParser:n,attachStacktrace:r}=Ah();if(Ze()!==e||Dd())return;const{msg:o,url:i,line:s,column:a,error:c}=t,l=function(e,t,n,r){const o=e.exception=e.exception||{},i=o.values=o.values||[],s=i[0]=i[0]||{},a=s.stacktrace=s.stacktrace||{},c=a.frames=a.frames||[],l=r,d=n,u=function(e){if(!U(e)||0===e.length)return;if(e.startsWith("data:")){const t=e.match(/^data:([^;]+)/);return`<data:${t?t[1]:"text/javascript"}${e.includes("base64,")?",base64":""}>`}return e}(t)??ne();0===c.length&&c.push({colno:l,filename:u,function:b,in_app:!0,lineno:d});return e}(Zd(n,c||o,void 0,r,!1),i,s,a);l.level="error",kr(l,{originalException:c,mechanism:{handled:!1,type:"auto.browser.global_handlers.onerror"}})})}(e),Ih("onerror")),t.onunhandledrejection&&(!function(e){B(t=>{const{stackParser:n,attachStacktrace:r}=Ah();if(Ze()!==e||Dd())return;const o=Th(t),i=V(o)?Mh(o):Zd(n,o,void 0,r,!0);i.level="error",kr(i,{originalException:o,mechanism:{handled:!1,type:"auto.browser.global_handlers.onunhandledrejection"}})})}(e),Ih("onunhandledrejection"))}}};function Th(e){if(V(e))return e;try{if("reason"in e)return e.reason;if("detail"in e&&"reason"in e.detail)return e.detail.reason}catch{}return e}function Mh(e){return{exception:{values:[{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(e)}`}]}}}function Ih(e){Xp&&y.log(`Global Handler attached: ${e}`)}function Ah(){const e=Ze();return e?.getOptions()||{stackParser:()=>[],attachStacktrace:!1}}const Rh=()=>({name:"HttpContext",preprocessEvent(e){if(!Pd.navigator&&!Pd.location&&!Pd.document)return;const t=Bd(),n={...t.headers,...e.request?.headers};e.request={...t,...e.request,headers:n}}}),Lh=(e={})=>{const t=e.limit||5,n=e.key||"cause";return{name:"LinkedErrors",preprocessEvent(e,r,o){ai(qd,o.getOptions().stackParser,n,t,e,r)}}};const Ph=(e={})=>{const t=e.sidecarUrl||"http://localhost:8969/stream";return{name:"SpotlightBrowser",setup:()=>{Xp&&y.log("Using Sidecar URL",t)},processEvent:e=>function(e){return Boolean("transaction"===e.type&&e.spans&&e.contexts?.trace&&"ui.action.click"===e.contexts.trace.op&&e.spans.some(({description:e})=>e?.includes("#sentry-spotlight")))}(e)?null:e,afterAllSetup:e=>{!function(e,t){const n=Pp("fetch");let r=0;e.on("beforeEnvelope",e=>{r>3?y.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests:",r):n(t,{method:"POST",body:Tn(e),headers:{"Content-Type":"application/x-sentry-envelope"},mode:"cors"}).then(e=>{e.status>=200&&e.status<400&&(r=0)},e=>{r++,y.error("Sentry SDK can't connect to Sidecar is it running? See: https://spotlightjs.com/sidecar/npx/",e)})})}(e,t)}}};function Oh(){return!!function(){if(void 0===Pd.window)return!1;const e=Pd;if(e.nw)return!1;const t=e.chrome||e.browser;if(!t?.runtime?.id)return!1;const n=ne(),r=["chrome-extension","moz-extension","ms-browser-extension","safari-web-extension"],o=Pd===Pd.top&&r.some(e=>n.startsWith(`${e}://`));return!o}()&&(Xp&&f(()=>{}),!0)}function Dh(e){return[oi(),ti(),xh(),bh(),Eh(),Lh(),xi(),Rh(),Ch()]}function Nh(e={}){const t=!e.skipBrowserExtensionCheck&&Oh();let n=null==e.defaultIntegrations?Dh():e.defaultIntegrations;const r={...e,enabled:!t&&e.enabled,stackParser:(o=e.stackParser||gh,Array.isArray(o)?k(...o):o),integrations:Hr({integrations:e.integrations,defaultIntegrations:n}),transport:e.transport||Yp};var o;return function(e,t){!0===t.debug&&(s?y.enable():f(()=>{})),Ge().update(t.initialScope);const n=new e(t);return Oo(n),n.init(),n}(nu,r)}function Bh(){}function jh(e){e()}function $h(e={}){const t=Pd.document,n=t?.head||t?.body;if(!n)return void(Xp&&y.error("[showReportDialog] Global document not defined"));const r=Ge(),o=Ze(),i=o?.getDsn();if(!i)return void(Xp&&y.error("[showReportDialog] DSN not configured"));const s={...e,user:{...r.getUser(),...e.user},eventId:e.eventId||Ir()},a=Pd.document.createElement("script");a.async=!0,a.crossOrigin="anonymous",a.src=function(e,t){const n=Pt(e);if(!n)return"";const r=`${$r(n)}embed/error-page/`;let o=`dsn=${It(n)}`;for(const e in t)if("dsn"!==e&&"onClose"!==e)if("user"===e){const e=t.user;if(!e)continue;e.name&&(o+=`&name=${encodeURIComponent(e.name)}`),e.email&&(o+=`&email=${encodeURIComponent(e.email)}`)}else o+=`&${encodeURIComponent(e)}=${encodeURIComponent(t[e])}`;return`${r}?${o}`}(i,s);const{onLoad:c,onClose:l}=s;if(c&&(a.onload=c),l){const e=t=>{if("__sentry_reportdialog_closed__"===t.data)try{l()}finally{Pd.removeEventListener("message",e)}};Pd.addEventListener("message",e)}n.appendChild(a)}const zh=a,Fh=new WeakMap,Hh=(e={})=>{const t=e.types||["crash","deprecation","intervention"];function n(e){if(Fh.has(Ze()))for(const t of e)Xe(e=>{e.setExtra("url",t.url);const n=`ReportingObserver [${t.type}]`;let r="No details available";if(t.body){const n={};for(const e in t.body)n[e]=t.body[e];if(e.setExtra("body",n),"crash"===t.type){const e=t.body;r=[e.crashId||"",e.reason||""].join(" ").trim()||r}else{r=t.body.message||r}}xr(`${n}: ${r}`)})}return{name:"ReportingObserver",setupOnce(){if(!("ReportingObserver"in Nc))return;new zh.ReportingObserver(n,{buffered:!0,types:t}).observe()},setup(e){Fh.set(e,!0)}}},qh=(e={})=>{const t={failedRequestStatusCodes:[[500,599]],failedRequestTargets:[/.*/],...e};return{name:"HttpClient",setup(e){!function(e,t){if(!$c())return;zc(n=>{if(Ze()!==e)return;const{response:r,args:o,error:i,virtualError:s}=n,[a,c]=o;r&&function(e,t,n,r,o){if(Kh(e,n.status,n.url)){const e=function(e,t){if(!t&&e instanceof Request)return e;if(e instanceof Request&&e.bodyUsed)return e;return new Request(e,t)}(t,r);let i,s,a,c;Jh()&&([i,a]=Uh("Cookie",e),[s,c]=Uh("Set-Cookie",n));kr(Gh({url:e.url,method:e.method,status:n.status,requestHeaders:i,responseHeaders:s,requestCookies:a,responseCookies:c,error:o,type:"fetch"}))}}(t,a,r,c,i||s)},!1)}(e,t),function(e,t){if(!("XMLHttpRequest"in a))return;Np(n=>{if(Ze()!==e)return;const{error:r,virtualError:o}=n,i=n.xhr,s=i[Dp];if(!s)return;const{method:a,request_headers:c}=s;try{!function(e,t,n,r,o){if(Kh(e,t.status,t.responseURL)){let e,i,s;if(Jh()){try{const e=t.getResponseHeader("Set-Cookie")||t.getResponseHeader("set-cookie")||void 0;e&&(i=Vh(e))}catch{}try{s=function(e){const t=e.getAllResponseHeaders();if(!t)return{};return t.split("\r\n").reduce((e,t)=>{const[n,r]=t.split(": ");return n&&r&&(e[n]=r),e},{})}(t)}catch{}e=r}kr(Gh({url:t.responseURL,method:n,status:t.status,requestHeaders:e,responseHeaders:s,responseCookies:i,error:o,type:"xhr"}))}}(t,i,a,c,r||o)}catch(e){Xp&&y.warn("Error while extracting response event form XHR response",e)}})}(e,t)}}};function Uh(e,t){const n=function(e){const t={};return e.forEach((e,n)=>{t[n]=e}),t}(t.headers);let r;try{const t=n[e]||n[e.toLowerCase()]||void 0;t&&(r=Vh(t))}catch{}return[n,r]}function Wh(e){if(e){const t=e["Content-Length"]||e["content-length"];if(t)return parseInt(t,10)}}function Vh(e){return e.split("; ").reduce((e,t)=>{const[n,r]=t.split("=");return n&&r&&(e[n]=r),e},{})}function Kh(e,t,n){return function(e,t){return e.some(e=>"number"==typeof e?e===t:t>=e[0]&&t<=e[1])}(e.failedRequestStatusCodes,t)&&(r=e.failedRequestTargets,o=n,r.some(e=>"string"==typeof e?o.includes(e):e.test(o)))&&!Wo(n,Ze());var r,o}function Gh(e){const t=Ze(),n=t&&e.error&&e.error instanceof Error?e.error.stack:void 0,r=n&&t?t.getOptions().stackParser(n,0,1):void 0,o=`HTTP Client Error with status code: ${e.status}`,i={message:o,exception:{values:[{type:"Error",value:o,stacktrace:r?{frames:r}:void 0}]},request:{url:e.url,method:e.method,headers:e.requestHeaders,cookies:e.requestCookies},contexts:{response:{status_code:e.status,headers:e.responseHeaders,cookies:e.responseCookies,body_size:Wh(e.responseHeaders)}}};return Ee(i,{type:`auto.http.client.${e.type}`,handled:!1}),i}function Jh(){const e=Ze();return!!e&&Boolean(e.getOptions().sendDefaultPii)}const Yh=a,Xh=(e={})=>{const t=null!=e.frameContextLines?e.frameContextLines:7;return{name:"ContextLines",processEvent:e=>function(e,t){const n=Yh.document,r=Yh.location&&Uo(Yh.location.href);if(!n||!r)return e;const o=e.exception?.values;if(!o?.length)return e;const i=n.documentElement.innerHTML;if(!i)return e;const s=["<!DOCTYPE html>","<html>",...i.split("\n"),"</html>"];return o.forEach(e=>{const n=e.stacktrace;n?.frames&&(n.frames=n.frames.map(e=>function(e,t,n,r){if(e.filename!==n||!e.lineno||!t.length)return e;return function(e,t,n=5){if(void 0===t.lineno)return;const r=e.length,o=Math.max(Math.min(r-1,t.lineno-1),0);t.pre_context=e.slice(Math.max(0,o-n),o).map(e=>ye(e,0));const i=Math.min(r-1,o);t.context_line=ye(e[i],t.colno||0),t.post_context=e.slice(Math.min(o+1,r),o+1+n).map(e=>ye(e,0))}(t,e,r),e}(e,s,r,t)))}),e}(e,t)}};function Qh(e){if(nf(e))return`persisted ${e.operationName}`;if(tf(e)){const{query:t,operationName:n}=e,{operationName:r=n,operationType:o}=function(e){const t=/^(?:\s*)(query|mutation|subscription)(?:\s*)(\w+)(?:\s*)[{(]/,n=/^(?:\s*)(query|mutation|subscription)(?:\s*)[{(]/,r=e.match(t);if(r)return{operationType:r[1],operationName:r[2]};const o=e.match(n);if(o)return{operationType:o[1],operationName:void 0};return{operationType:void 0,operationName:void 0}}(t);return r?`${o} ${r}`:`${o}`}return"unknown"}function Zh(e){let t;if("xhr"in e){const n=e.xhr[Dp];t=n&&zp(n.body)[0]}else{t=zp(Fp(e.input))[0]}return t}function ef(e){return"object"==typeof e&&null!==e}function tf(e){return ef(e)&&"string"==typeof e.query}function nf(e){return ef(e)&&"string"==typeof e.operationName&&ef(e.extensions)&&ef(e.extensions.persistedQuery)&&"string"==typeof e.extensions.persistedQuery.sha256Hash&&"number"==typeof e.extensions.persistedQuery.version}function rf(e){try{const t=JSON.parse(e);return tf(t)||nf(t)?t:void 0}catch{return}}const of=e=>({name:"GraphQLClient",setup(t){!function(e,t){e.on("beforeOutgoingRequestSpan",(e,n)=>{const r=Vt(e).data||{};if(!("http.client"===r[ot]))return;const o=r[ht]||r["http.url"],i=r[pt]||r["http.method"];if(!U(o)||!U(i))return;const{endpoints:s}=t,a=xe(o,s),c=Zh(n);if(a&&c){const t=rf(c);if(t){const n=Qh(t);e.updateName(`${i} ${o} (${n})`),tf(t)&&e.setAttribute("graphql.document",t.query),nf(t)&&(e.setAttribute("graphql.persisted_query.hash.sha256",t.extensions.persistedQuery.sha256Hash),e.setAttribute("graphql.persisted_query.version",t.extensions.persistedQuery.version))}}})}(t,e),function(e,t){e.on("beforeOutgoingRequestBreadcrumb",(e,n)=>{const{category:r,type:o,data:i}=e;if("http"===o&&("fetch"===r||"xhr"===r)){const e=i?.url,{endpoints:r}=t,o=xe(e,r),s=Zh(n);if(o&&i&&s){const e=rf(s);if(!i.graphql&&e){const t=Qh(e);i["graphql.operation"]=t,tf(e)&&(i["graphql.document"]=e.query),nf(e)&&(i["graphql.persisted_query.hash.sha256"]=e.extensions.persistedQuery.sha256Hash,i["graphql.persisted_query.version"]=e.extensions.persistedQuery.version)}}}})}(t,e)}}),sf=a,af="sentryReplaySession",cf="Unable to send Replay",lf=15e4,df=5e3,uf=2e7,pf=36e5;var hf=Object.defineProperty,ff=(e,t,n)=>((e,t,n)=>t in e?hf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n),gf=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(gf||{});function mf(e){const t=e?.host;return Boolean(t?.shadowRoot===e)}function vf(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function yf(e){try{const n=e.rules||e.cssRules;return n?((t=Array.from(n,bf).join("")).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),t):null}catch(e){return null}var t}function bf(e){let t;if(function(e){return"styleSheet"in e}(e))try{t=yf(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import",`url(${JSON.stringify(e.href)})`];return""===e.layerName?n.push("layer"):e.layerName&&n.push(`layer(${e.layerName})`),e.supportsText&&n.push(`supports(${e.supportsText})`),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(e){}else if(function(e){return"selectorText"in e}(e)){let t=e.cssText;const n=e.selectorText.includes(":"),r="string"==typeof e.style.all&&e.style.all;if(r&&(t=function(e){let t="";for(let n=0;n<e.style.length;n++){const r=e.style,o=r[n],i=r.getPropertyPriority(o);t+=`${o}:${r.getPropertyValue(o)}${i?" !important":""};`}return`${e.selectorText} { ${t} }`}(e)),n&&(t=function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(t)),n||r)return t}return t||e.cssText}class wf{constructor(){ff(this,"idNodeMap",new Map),ff(this,"nodeMetaMap",new WeakMap)}getId(e){if(!e)return-1;const t=this.getMeta(e)?.id;return t??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach(e=>this.removeNodeFromMap(e))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function xf({maskInputOptions:e,tagName:t,type:n}){return"OPTION"===t&&(t="SELECT"),Boolean(e[t.toLowerCase()]||n&&e[n]||"password"===n||"INPUT"===t&&!n&&e.text)}function kf({isMasked:e,element:t,value:n,maskInputFn:r}){let o=n||"";return e?(r&&(o=r(o,t)),"*".repeat(o.length)):o}function _f(e){return e.toLowerCase()}function Sf(e){return e.toUpperCase()}const Cf="__rrweb_original__";function Ef(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?_f(t):null}function Tf(e,t,n){return"INPUT"!==t||"radio"!==n&&"checkbox"!==n?e.value:e.getAttribute("value")||""}function Mf(e,t){let n;try{n=new URL(e,t??window.location.href)}catch(e){return null}const r=n.pathname.match(/\.([0-9a-z]+)(?:$)/i);return r?.[1]??null}const If={};function Af(e){const t=If[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"==typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(e){}return If[e]=r.bind(window)}function Rf(...e){return Af("setTimeout")(...e)}function Lf(...e){return Af("clearTimeout")(...e)}function Pf(e){try{return e.contentDocument}catch(e){}}let Of=1;const Df=new RegExp("[^a-z0-9-_:]");function Nf(){return Of++}let Bf,jf;const $f=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,zf=/^(?:[a-z+]+:)?\/\//i,Ff=/^www\..*/i,Hf=/^(data:)([^,]*),(.*)/i;function qf(e,t){return(e||"").replace($f,(e,n,r,o,i,s)=>{const a=r||i||s,c=n||o||"";if(!a)return e;if(zf.test(a)||Ff.test(a))return`url(${c}${a}${c})`;if(Hf.test(a))return`url(${c}${a}${c})`;if("/"===a[0])return`url(${c}${function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+a}${c})`;const l=t.split("/"),d=a.split("/");l.pop();for(const e of d)"."!==e&&(".."===e?l.pop():l.push(e));return`url(${c}${l.join("/")}${c})`})}const Uf=/^[^ \t\n\r\u000c]+/,Wf=/^[, \t\n\r\u000c]+/;const Vf=new WeakMap;function Kf(e,t){return t&&""!==t.trim()?Jf(e,t):t}function Gf(e){return Boolean("svg"===e.tagName||e.ownerSVGElement)}function Jf(e,t){let n=Vf.get(e);if(n||(n=e.createElement("a"),Vf.set(e,n)),t){if(t.startsWith("blob:")||t.startsWith("data:"))return t}else t="";return n.setAttribute("href",t),n.href}function Yf(e,t,n,r,o,i,s){if(!r)return r;if("src"===n||"href"===n&&("use"!==t||"#"!==r[0]))return Kf(e,r);if("xlink:href"===n&&"#"!==r[0])return Kf(e,r);if("background"===n&&("table"===t||"td"===t||"th"===t))return Kf(e,r);if("srcset"===n)return function(e,t){if(""===t.trim())return t;let n=0;function r(e){let r;const o=e.exec(t.substring(n));return o?(r=o[0],n+=r.length,r):""}const o=[];for(;r(Wf),!(n>=t.length);){let i=r(Uf);if(","===i.slice(-1))i=Kf(e,i.substring(0,i.length-1)),o.push(i);else{let r="";i=Kf(e,i);let s=!1;for(;;){const e=t.charAt(n);if(""===e){o.push((i+r).trim());break}if(s)")"===e&&(s=!1);else{if(","===e){n+=1,o.push((i+r).trim());break}"("===e&&(s=!0)}r+=e,n+=1}}}return o.join(", ")}(e,r);if("style"===n){let t=qf(r,Jf(e));return s&&s.size>0&&(t=function(e,t){if(!e||0===t.size)return e;try{const n=e.split(";"),r=[];for(let e of n){if(e=e.trim(),!e)continue;const n=e.indexOf(":");if(-1===n){r.push(e);continue}const o=e.slice(0,n).trim();t.has(o)||r.push(e)}return r.join("; ")+(r.length>0&&e.endsWith(";")?";":"")}catch(t){return e}}(t,s)),t}return"object"===t&&"data"===n?Kf(e,r):"function"==typeof i?i(n,r,o):r}function Xf(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function Qf(e,t,n=1/0,r=0){return e?e.nodeType!==e.ELEMENT_NODE||r>n?-1:t(e)?r:Qf(e.parentNode,t,n,r+1):-1}function Zf(e,t){return n=>{const r=n;if(null===r)return!1;try{if(e)if("string"==typeof e){if(r.matches(`.${e}`))return!0}else if(function(e,t){for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}return!1}(r,e))return!0;return!(!t||!r.matches(t))}catch{return!1}}}function eg(e,t,n,r,o,i){try{const s=e.nodeType===e.ELEMENT_NODE?e:e.parentElement;if(null===s)return!1;if("INPUT"===s.tagName){const e=s.getAttribute("autocomplete");if(["current-password","new-password","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc"].includes(e))return!0}let a=-1,c=-1;if(i){if(c=Qf(s,Zf(r,o)),c<0)return!0;a=Qf(s,Zf(t,n),c>=0?c:1/0)}else{if(a=Qf(s,Zf(t,n)),a<0)return!1;c=Qf(s,Zf(r,o),a>=0?a:1/0)}return a>=0?!(c>=0)||a<=c:!(c>=0)&&!!i}catch(e){}return!!i}function tg(e,t){const{doc:n,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskAttributeFn:c,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:p,inlineStylesheet:h,maskInputOptions:f={},maskTextFn:g,maskInputFn:m,dataURLOptions:v={},inlineImages:y,recordCanvas:b,keepIframeSrcFn:w,newlyAddedElement:x=!1,ignoreCSSAttributes:k}=t,_=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,r);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:gf.Document,childNodes:[],compatMode:e.compatMode}:{type:gf.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:gf.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:_};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:r,blockSelector:o,unblockSelector:i,inlineStylesheet:s,maskInputOptions:a={},maskAttributeFn:c,maskInputFn:l,dataURLOptions:d={},inlineImages:u,recordCanvas:p,keepIframeSrcFn:h,newlyAddedElement:f=!1,rootId:g,maskTextClass:m,unmaskTextClass:v,maskTextSelector:y,unmaskTextSelector:b,ignoreCSSAttributes:w}=t,x=function(e,t,n,r){try{if(r&&e.matches(r))return!1;if("string"==typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}if(n)return e.matches(n)}catch(e){}return!1}(e,r,o,i),k=function(e){if(e instanceof HTMLFormElement)return"form";const t=_f(e.tagName);return Df.test(t)?"div":t}(e);let _={};const S=e.attributes.length;for(let t=0;t<S;t++){const r=e.attributes[t];r.name&&!Xf(k,r.name,r.value)&&(_[r.name]=Yf(n,k,_f(r.name),r.value,e,c,w))}if("link"===k&&s){const t=Array.from(n.styleSheets).find(t=>t.href===e.href);let r=null;t&&(r=yf(t)),r&&(_.rel=null,_.href=null,_.crossorigin=null,_._cssText=qf(r,t.href))}if("style"===k&&e.sheet&&!(e.innerText||e.textContent||"").trim().length){const t=yf(e.sheet);t&&(_._cssText=qf(t,Jf(n)))}if("input"===k||"textarea"===k||"select"===k||"option"===k){const t=e,n=Ef(t),r=Tf(t,Sf(k),n),o=t.checked;if("submit"!==n&&"button"!==n&&r){const e=eg(t,m,y,v,b,xf({type:n,tagName:Sf(k),maskInputOptions:a}));_.value=kf({isMasked:e,element:t,value:r,maskInputFn:l})}o&&(_.checked=o)}"option"===k&&(e.selected&&!a.select?_.selected=!0:delete _.selected);if("canvas"===k&&p)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n<e.width;n+=50)for(let r=0;r<e.height;r+=50){const o=t.getImageData,i=Cf in o?o[Cf]:o;if(new Uint32Array(i.call(t,n,r,Math.min(50,e.width-n),Math.min(50,e.height-r)).data.buffer).some(e=>0!==e))return!1}return!0})(e)||(_.rr_dataURL=e.toDataURL(d.type,d.quality));else if(!("__context"in e)){const t=e.toDataURL(d.type,d.quality),r=n.createElement("canvas");r.width=e.width,r.height=e.height;t!==r.toDataURL(d.type,d.quality)&&(_.rr_dataURL=t)}if("img"===k&&u){Bf||(Bf=n.createElement("canvas"),jf=Bf.getContext("2d"));const t=e,r=(t.currentSrc||t.getAttribute("src"),t.crossOrigin),o=()=>{t.removeEventListener("load",o);try{Bf.width=t.naturalWidth,Bf.height=t.naturalHeight,jf.drawImage(t,0,0),_.rr_dataURL=Bf.toDataURL(d.type,d.quality)}catch(e){if("anonymous"!==t.crossOrigin)return t.crossOrigin="anonymous",void(t.complete&&0!==t.naturalWidth?o():t.addEventListener("load",o))}"anonymous"===t.crossOrigin&&(r?_.crossOrigin=r:t.removeAttribute("crossorigin"))};t.complete&&0!==t.naturalWidth?o():t.addEventListener("load",o)}"audio"!==k&&"video"!==k||(_.rr_mediaState=e.paused?"paused":"played",_.rr_mediaCurrentTime=e.currentTime);f||(e.scrollLeft&&(_.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(_.rr_scrollTop=e.scrollTop));if(x){const{width:t,height:n}=e.getBoundingClientRect();_={class:_.class,rr_width:`${t}px`,rr_height:`${n}px`}}"iframe"!==k||h(_.src)||(x||Pf(e)||(_.rr_src=_.src),delete _.src);let C;try{customElements.get(k)&&(C=!0)}catch(e){}return{type:gf.Element,tagName:k,attributes:_,childNodes:[],isSVG:Gf(e)||void 0,needBlock:x,rootId:g,isCustom:C}}(e,{doc:n,blockClass:o,blockSelector:i,unblockSelector:s,inlineStylesheet:h,maskAttributeFn:c,maskInputOptions:f,maskInputFn:m,dataURLOptions:v,inlineImages:y,recordCanvas:b,keepIframeSrcFn:w,newlyAddedElement:x,rootId:_,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:p,ignoreCSSAttributes:k});case e.TEXT_NODE:return function(e,t){const{maskAllText:n,maskTextClass:r,unmaskTextClass:o,maskTextSelector:i,unmaskTextSelector:s,maskTextFn:a,maskInputOptions:c,maskInputFn:l,rootId:d}=t,u=e.parentNode&&e.parentNode.tagName;let p=e.textContent;const h="STYLE"===u||void 0,f="SCRIPT"===u||void 0,g="TEXTAREA"===u||void 0;if(h&&p){try{e.nextSibling||e.previousSibling||e.parentNode.sheet?.cssRules&&(p=yf(e.parentNode.sheet))}catch(e){}p=qf(p,Jf(t.doc))}f&&(p="SCRIPT_PLACEHOLDER");const m=eg(e,r,i,o,s,n);h||f||g||!p||!m||(p=a?a(p,e.parentElement):p.replace(/[\S]/g,"*"));g&&p&&(c.textarea||m)&&(p=l?l(p,e.parentNode):p.replace(/[\S]/g,"*"));if("OPTION"===u&&p){p=kf({isMasked:eg(e,r,i,o,s,xf({type:null,tagName:u,maskInputOptions:c})),element:e,value:p,maskInputFn:l})}return{type:gf.Text,textContent:p||"",isStyle:h,rootId:d}}(e,{doc:n,maskAllText:a,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:p,maskTextFn:g,maskInputOptions:f,maskInputFn:m,rootId:_});case e.CDATA_SECTION_NODE:return{type:gf.CDATA,textContent:"",rootId:_};case e.COMMENT_NODE:return{type:gf.Comment,textContent:e.textContent||"",rootId:_};default:return!1}}function ng(e){return null==e?"":e.toLowerCase()}function rg(e,t){const{doc:n,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:p=!1,inlineStylesheet:h=!0,maskInputOptions:f={},maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b={},inlineImages:w=!1,recordCanvas:x=!1,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S=5e3,onBlockedImageLoad:C,onStylesheetLoad:E,stylesheetLoadTimeout:T=5e3,keepIframeSrcFn:M=()=>!1,newlyAddedElement:I=!1,ignoreCSSAttributes:A}=t;let{preserveWhiteSpace:R=!0}=t;const L=tg(e,{doc:n,mirror:r,blockClass:o,blockSelector:i,maskAllText:a,unblockSelector:s,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,dataURLOptions:b,inlineImages:w,recordCanvas:x,keepIframeSrcFn:M,newlyAddedElement:I,ignoreCSSAttributes:A});if(!L)return null;let P;P=r.hasNode(e)?r.getId(e):!function(e,t){if(t.comment&&e.type===gf.Comment)return!0;if(e.type===gf.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"==typeof e.attributes.href&&"js"===Mf(e.attributes.href)))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(ng(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===ng(e.attributes.name)||"icon"===ng(e.attributes.rel)||"apple-touch-icon"===ng(e.attributes.rel)||"shortcut icon"===ng(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&ng(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(ng(e.attributes.property).match(/^(og|twitter|fb):/)||ng(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===ng(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===ng(e.attributes.name)||"googlebot"===ng(e.attributes.name)||"bingbot"===ng(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===ng(e.attributes.name)||"generator"===ng(e.attributes.name)||"framework"===ng(e.attributes.name)||"publisher"===ng(e.attributes.name)||"progid"===ng(e.attributes.name)||ng(e.attributes.property).match(/^article:/)||ng(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===ng(e.attributes.name)||"yandex-verification"===ng(e.attributes.name)||"csrf-token"===ng(e.attributes.name)||"p:domain_verify"===ng(e.attributes.name)||"verify-v1"===ng(e.attributes.name)||"verification"===ng(e.attributes.name)||"shopify-checkout-api-token"===ng(e.attributes.name)))return!0}}return!1}(L,y)&&(R||L.type!==gf.Text||L.isStyle||L.textContent.replace(/^\s+|\s+$/gm,"").length)?Nf():-2;const O=Object.assign(L,{id:P});if(r.add(e,O),-2===P)return null;k&&k(e);let D=!p;if(O.type===gf.Element){D=D&&!O.needBlock;const t=e.shadowRoot;t&&vf(t)&&(O.isShadowHost=!0)}if((O.type===gf.Document||O.type===gf.Element)&&D){y.headWhitespace&&O.type===gf.Element&&"head"===O.tagName&&(R=!1);const t={doc:n,mirror:r,blockClass:o,blockSelector:i,maskAllText:a,unblockSelector:s,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:p,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b,inlineImages:w,recordCanvas:x,preserveWhiteSpace:R,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S,onBlockedImageLoad:C,onStylesheetLoad:E,stylesheetLoadTimeout:T,keepIframeSrcFn:M,ignoreCSSAttributes:A},I=e.childNodes?Array.from(e.childNodes):[];for(const e of I){const n=rg(e,t);n&&O.childNodes.push(n)}if(function(e){return e.nodeType===e.ELEMENT_NODE}(e)&&e.shadowRoot)for(const n of Array.from(e.shadowRoot.childNodes)){const r=rg(n,t);r&&(vf(e.shadowRoot)&&(r.isShadow=!0),O.childNodes.push(r))}}if(e.parentNode&&mf(e.parentNode)&&vf(e.parentNode)&&(O.isShadow=!0),O.type!==gf.Element||"iframe"!==O.tagName||O.needBlock||function(e,t,n){const r=e.contentWindow;if(!r)return;let o,i=!1;try{o=r.document.readyState}catch(e){return}if("complete"!==o){const r=Rf(()=>{i||(t(),i=!0)},n);return void e.addEventListener("load",()=>{Lf(r),i=!0,t()})}const s="about:blank";if(r.location.href!==s||e.src===s||""===e.src)return Rf(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,()=>{const t=Pf(e);if(t&&_){const n=rg(t,{doc:t,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b,inlineImages:w,recordCanvas:x,preserveWhiteSpace:R,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S,onStylesheetLoad:E,stylesheetLoadTimeout:T,keepIframeSrcFn:M,ignoreCSSAttributes:A});n&&_(e,n)}},S),O.type===gf.Element&&"img"===O.tagName&&!e.complete&&O.needBlock){const t=e,n=()=>{if(t.isConnected&&!t.complete&&C)try{const e=t.getBoundingClientRect();e.width>0&&e.height>0&&C(t,O,e)}catch(e){}t.removeEventListener("load",n)};t.isConnected&&t.addEventListener("load",n)}return O.type===gf.Element&&"link"===O.tagName&&"string"==typeof O.attributes.rel&&("stylesheet"===O.attributes.rel||"preload"===O.attributes.rel&&"string"==typeof O.attributes.href&&"css"===Mf(O.attributes.href))&&function(e,t,n){let r,o=!1;try{r=e.sheet}catch(e){return}if(r)return;const i=Rf(()=>{o||(t(),o=!0)},n);e.addEventListener("load",()=>{Lf(i),o=!0,t()})}(e,()=>{if(E){const t=rg(e,{doc:n,mirror:r,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:h,maskInputOptions:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:y,dataURLOptions:b,inlineImages:w,recordCanvas:x,preserveWhiteSpace:R,onSerialize:k,onIframeLoad:_,iframeLoadTimeout:S,onStylesheetLoad:E,stylesheetLoadTimeout:T,keepIframeSrcFn:M,ignoreCSSAttributes:A});t&&E(e,t)}},T),O.type===gf.Element&&delete O.needBlock,O}function og(e,t,n=document){const r={capture:!0,passive:!0};return n.addEventListener(e,t,r),()=>n.removeEventListener(e,t,r)}let ig={map:{},getId:()=>-1,getNode:()=>null,removeNodeFromMap(){},has:()=>!1,reset(){}};function sg(e,t,n={}){let r=null,o=0;return function(...i){const s=Date.now();o||!1!==n.leading||(o=s);const a=t-(s-o),c=this;a<=0||a>t?(r&&(!function(...e){Eg("clearTimeout")(...e)}(r),r=null),o=s,e.apply(c,i)):r||!1===n.trailing||(r=Tg(()=>{o=!1===n.leading?0:Date.now(),r=null,e.apply(c,i)},a))}}function ag(e,t,n,r,o=window){const i=o.Object.getOwnPropertyDescriptor(e,t);return o.Object.defineProperty(e,t,r?n:{set(e){Tg(()=>{n.set.call(this,e)},0),i&&i.set&&i.set.call(this,e)}}),()=>ag(e,t,i||{},!0)}function cg(e,t,n){try{if(!(t in e))return()=>{};const r=e[t],o=n(r);return"function"==typeof o&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),e[t]=o,()=>{e[t]=r}}catch{return()=>{}}}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(ig=new Proxy(ig,{get:(e,t,n)=>Reflect.get(e,t,n)}));let lg=Date.now;function dg(e){const t=e.document;return{left:t.scrollingElement?t.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:t?.documentElement.scrollLeft||t?.body?.parentElement?.scrollLeft||t?.body?.scrollLeft||0,top:t.scrollingElement?t.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:t?.documentElement.scrollTop||t?.body?.parentElement?.scrollTop||t?.body?.scrollTop||0}}function ug(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function pg(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function hg(e){if(!e)return null;try{return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}catch(e){return null}}function fg(e,t,n,r,o){if(!e)return!1;const i=hg(e);if(!i)return!1;const s=Zf(t,n);if(!o){const e=r&&i.matches(r);return s(i)&&!e}const a=Qf(i,s);let c=-1;return!(a<0)&&(r&&(c=Qf(i,Zf(null,r))),a>-1&&c<0||a<c)}function gg(e,t){return-2===t.getId(e)}function mg(e,t){if(mf(e))return!1;const n=t.getId(e);return!t.has(n)||(!e.parentNode||e.parentNode.nodeType!==e.DOCUMENT_NODE)&&(!e.parentNode||mg(e.parentNode,t))}function vg(e){return Boolean(e.changedTouches)}function yg(e,t){return Boolean("IFRAME"===e.nodeName&&t.getMeta(e))}function bg(e,t){return Boolean("LINK"===e.nodeName&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&"stylesheet"===e.getAttribute("rel")&&t.getMeta(e))}function wg(e){return Boolean(e?.shadowRoot)}/[1-9][0-9]{12}/.test(Date.now().toString())||(lg=()=>(new Date).getTime());class xg{constructor(){this.id=1,this.styleIDMap=new WeakMap,this.idStyleMap=new Map}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function kg(e){let t=null;return e.getRootNode?.()?.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.getRootNode().host&&(t=e.getRootNode().host),t}function _g(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=kg(n);)n=t;return n}(e);return t.contains(n)}function Sg(e){const t=e.ownerDocument;return!!t&&(t.contains(e)||_g(e))}const Cg={};function Eg(e){const t=Cg[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"==typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(e){}return Cg[e]=r.bind(window)}function Tg(...e){return Eg("setTimeout")(...e)}var Mg=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(Mg||{}),Ig=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(Ig||{}),Ag=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(Ag||{}),Rg=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(Rg||{}),Lg=(e=>(e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e))(Lg||{});function Pg(e){try{return e.contentDocument}catch(e){}}function Og(e){return"__ln"in e}class Dg{constructor(){this.length=0,this.head=null,this.tail=null}get(e){if(e>=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;n<e;n++)t=t?.next||null;return t}addNode(e){const t={value:e,previous:null,next:null};if(e.__ln=t,e.previousSibling&&Og(e.previousSibling)){const n=e.previousSibling.__ln.next;t.next=n,t.previous=e.previousSibling.__ln,e.previousSibling.__ln.next=t,n&&(n.previous=t)}else if(e.nextSibling&&Og(e.nextSibling)&&e.nextSibling.__ln.previous){const n=e.nextSibling.__ln.previous;t.previous=n,t.next=e.nextSibling.__ln,e.nextSibling.__ln.previous=t,n&&(n.next=t)}else this.head&&(this.head.previous=t),t.next=this.head,this.head=t;null===t.next&&(this.tail=t),this.length++}removeNode(e){const t=e.__ln;this.head&&(t.previous?(t.previous.next=t.next,t.next?t.next.previous=t.previous:this.tail=t.previous):(this.head=t.next,this.head?this.head.previous=null:this.tail=null),e.__ln&&delete e.__ln,this.length--)}}const Ng=(e,t)=>`${e}@${t}`;class Bg{constructor(){this.frozen=!1,this.locked=!1,this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.mapRemoves=[],this.movedMap={},this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.processMutations=e=>{e.forEach(this.processMutation),this.emit()},this.emit=()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new Dg,r=e=>{let t=e,n=-2;for(;-2===n;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},o=o=>{if(!o.parentNode||!Sg(o))return;const i=mf(o.parentNode)?this.mirror.getId(kg(o)):this.mirror.getId(o.parentNode),s=r(o);if(-1===i||-1===s)return n.addNode(o);const a=rg(o,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskAllText:this.maskAllText,unblockSelector:this.unblockSelector,maskTextClass:this.maskTextClass,unmaskTextClass:this.unmaskTextClass,maskTextSelector:this.maskTextSelector,unmaskTextSelector:this.unmaskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskAttributeFn:this.maskAttributeFn,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{yg(e,this.mirror)&&!fg(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)&&this.iframeManager.addIframe(e),bg(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),wg(o)&&this.shadowDomManager.addShadowRoot(o.shadowRoot,this.doc)},onIframeLoad:(e,t)=>{fg(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)||(this.iframeManager.attachIframe(e,t),e.contentWindow&&this.canvasManager.addWindow(e.contentWindow),this.shadowDomManager.observeAttachShadow(e))},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)},onBlockedImageLoad:(e,t,{width:n,height:r})=>{this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:{style:{width:`${n}px`,height:`${r}px`}}}]})},ignoreCSSAttributes:this.ignoreCSSAttributes});a&&(e.push({parentId:i,nextId:s,node:a}),t.add(a.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const e of this.movedSet)$g(this.removes,e,this.mirror)&&!this.movedSet.has(e.parentNode)||o(e);for(const e of this.addedSet)zg(this.droppedSet,e)||$g(this.removes,e,this.mirror)?zg(this.movedSet,e)?o(e):this.droppedSet.add(e):o(e);let i=null;for(;n.length;){let e=null;if(i){const t=this.mirror.getId(i.value.parentNode),n=r(i.value);-1!==t&&-1!==n&&(e=i)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(n.value.parentNode);if(-1===r(n.value))continue;if(-1!==t){e=n;break}{const t=n.value;if(t.parentNode&&t.parentNode.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const r=t.parentNode.host;if(-1!==this.mirror.getId(r)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}i=e.previous,n.removeNode(e.value),o(e.value)}const s={texts:this.texts.map(e=>({id:this.mirror.getId(e.node),value:e.value})).filter(e=>!t.has(e.id)).filter(e=>this.mirror.has(e.id)),attributes:this.attributes.map(e=>{const{attributes:t}=e;if("string"==typeof t.style){const n=JSON.stringify(e.styleDiff),r=JSON.stringify(e._unchangedStyles);n.length<t.style.length&&(n+r).split("var(").length===t.style.split("var(").length&&(t.style=e.styleDiff)}return{id:this.mirror.getId(e.node),attributes:t}}).filter(e=>!t.has(e.id)).filter(e=>this.mirror.has(e.id)),removes:this.removes,adds:e};(s.texts.length||s.attributes.length||s.removes.length||s.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.movedMap={},this.mutationCb(s))},this.processMutation=e=>{if(!gg(e.target,this.mirror))switch(e.type){case"characterData":{const t=e.target.textContent;fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||t===e.oldValue||this.texts.push({value:eg(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,this.maskAllText)&&t?this.maskTextFn?this.maskTextFn(t,hg(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const t=e.target;let n=e.attributeName,r=e.target.getAttribute(n);if("value"===n){const n=Ef(t),o=t.tagName;r=Tf(t,o,n);const i=xf({maskInputOptions:this.maskInputOptions,tagName:o,type:n});r=kf({isMasked:eg(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,i),element:t,value:r,maskInputFn:this.maskInputFn})}if(fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||r===e.oldValue)return;let o=this.attributeMap.get(e.target);if("IFRAME"===t.tagName&&"src"===n&&!this.keepIframeSrcFn(r)){if(Pg(t))return;n="rr_src"}if(o||(o={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(o),this.attributeMap.set(e.target,o)),"type"===n&&"INPUT"===t.tagName&&"password"===(e.oldValue||"").toLowerCase()&&t.setAttribute("data-rr-is-password","true"),!Xf(t.tagName,n)&&(o.attributes[n]=Yf(this.doc,_f(t.tagName),_f(n),r,t,this.maskAttributeFn),"style"===n)){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(e){this.unattachedDoc=this.doc}const n=this.unattachedDoc.createElement("span");e.oldValue&&n.setAttribute("style",e.oldValue);for(const e of Array.from(t.style)){const r=t.style.getPropertyValue(e),i=t.style.getPropertyPriority(e);r!==n.style.getPropertyValue(e)||i!==n.style.getPropertyPriority(e)?o.styleDiff[e]=""===i?r:[r,i]:o._unchangedStyles[e]=[r,i]}for(const e of Array.from(n.style))""===t.style.getPropertyValue(e)&&(o.styleDiff[e]=!1)}break}case"childList":if(fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!0))return;e.addedNodes.forEach(t=>this.genAdds(t,e.target)),e.removedNodes.forEach(t=>{const n=this.mirror.getId(t),r=mf(e.target)?this.mirror.getId(e.target.host):this.mirror.getId(e.target);fg(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||gg(t,this.mirror)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(jg(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||mg(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[Ng(n,r)]?jg(this.movedSet,t):this.removes.push({parentId:r,id:n,isShadow:!(!mf(e.target)||!vf(e.target))||void 0})),this.mapRemoves.push(t))})}},this.genAdds=(e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(gg(e,this.mirror))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[Ng(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);fg(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)||(e.childNodes&&e.childNodes.forEach(e=>this.genAdds(e)),wg(e)&&e.shadowRoot.childNodes.forEach(t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)}))}}}init(e){["mutationCb","blockClass","blockSelector","unblockSelector","maskAllText","maskTextClass","unmaskTextClass","maskTextSelector","unmaskTextSelector","inlineStylesheet","maskInputOptions","maskAttributeFn","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager","ignoreCSSAttributes"].forEach(t=>{this[t]=e[t]})}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function jg(e,t){e.delete(t),t.childNodes?.forEach(t=>jg(e,t))}function $g(e,t,n){return 0!==e.length&&function(e,t,n){let r=t.parentNode;for(;r;){const t=n.getId(r);if(e.some(e=>e.id===t))return!0;r=r.parentNode}return!1}(e,t,n)}function zg(e,t){return 0!==e.size&&Fg(e,t)}function Fg(e,t){const{parentNode:n}=t;return!!n&&(!!e.has(n)||Fg(e,n))}let Hg;const qg=e=>{if(!Hg)return e;return(...t)=>{try{return e(...t)}catch(e){if(Hg&&!0===Hg(e))return()=>{};throw e}}},Ug=[];function Wg(e){try{if("composedPath"in e){const t=e.composedPath();if(t.length)return t[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function Vg(e,t){const n=new Bg;Ug.push(n),n.init(e);let r=window.MutationObserver||window.__rrMutationObserver;const o=window?.Zone?.__symbol__?.("MutationObserver");o&&window[o]&&(r=window[o]);const i=new r(qg(t=>{e.onMutation&&!1===e.onMutation(t)||n.processMutations.bind(n)(t)}));return i.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),i}function Kg({mouseInteractionCb:e,doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,sampling:s}){if(!1===s.mouseInteraction)return()=>{};const a=!0===s.mouseInteraction||void 0===s.mouseInteraction?{}:s.mouseInteraction,c=[];let l=null;return Object.keys(Ag).filter(e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==a[e]).forEach(s=>{let a=_f(s);const d=(t=>s=>{const a=Wg(s);if(fg(a,r,o,i,!0))return;let c=null,d=t;if("pointerType"in s){switch(s.pointerType){case"mouse":c=Rg.Mouse;break;case"touch":c=Rg.Touch;break;case"pen":c=Rg.Pen}c===Rg.Touch?Ag[t]===Ag.MouseDown?d="TouchStart":Ag[t]===Ag.MouseUp&&(d="TouchEnd"):Rg.Pen}else vg(s)&&(c=Rg.Touch);null!==c?(l=c,(d.startsWith("Touch")&&c===Rg.Touch||d.startsWith("Mouse")&&c===Rg.Mouse)&&(c=null)):Ag[t]===Ag.Click&&(c=l,l=null);const u=vg(s)?s.changedTouches[0]:s;if(!u)return;const p=n.getId(a),{clientX:h,clientY:f}=u;qg(e)({type:Ag[d],id:p,x:h,y:f,...null!==c&&{pointerType:c}})})(s);if(window.PointerEvent)switch(Ag[s]){case Ag.MouseDown:case Ag.MouseUp:a=a.replace("mouse","pointer");break;case Ag.TouchStart:case Ag.TouchEnd:return}c.push(og(a,d,t))}),qg(()=>{c.forEach(e=>e())})}function Gg({scrollCb:e,doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,sampling:s}){return og("scroll",qg(sg(qg(s=>{const a=Wg(s);if(!a||fg(a,r,o,i,!0))return;const c=n.getId(a);if(a===t&&t.defaultView){const n=dg(t.defaultView);e({id:c,x:n.left,y:n.top})}else e({id:c,x:a.scrollLeft,y:a.scrollTop})}),s.scroll||100)),t)}const Jg=["INPUT","TEXTAREA","SELECT"],Yg=new WeakMap;function Xg({inputCb:e,doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,ignoreClass:s,ignoreSelector:a,maskInputOptions:c,maskInputFn:l,sampling:d,userTriggeredOnInput:u,maskTextClass:p,unmaskTextClass:h,maskTextSelector:f,unmaskTextSelector:g}){function m(e){let n=Wg(e);const d=e.isTrusted,m=n&&Sf(n.tagName);if("OPTION"===m&&(n=n.parentElement),!n||!m||Jg.indexOf(m)<0||fg(n,r,o,i,!0))return;const y=n;if(y.classList.contains(s)||a&&y.matches(a))return;const b=Ef(n);let w=Tf(y,m,b),x=!1;const k=xf({maskInputOptions:c,tagName:m,type:b}),_=eg(n,p,f,h,g,k);"radio"!==b&&"checkbox"!==b||(x=n.checked),w=kf({isMasked:_,element:n,value:w,maskInputFn:l}),v(n,u?{text:w,isChecked:x,userTriggered:d}:{text:w,isChecked:x});const S=n.name;"radio"===b&&S&&x&&t.querySelectorAll(`input[type="radio"][name="${S}"]`).forEach(e=>{if(e!==n){const t=kf({isMasked:_,element:e,value:Tf(e,m,b),maskInputFn:l});v(e,u?{text:t,isChecked:!x,userTriggered:!1}:{text:t,isChecked:!x})}})}function v(t,r){const o=Yg.get(t);if(!o||o.text!==r.text||o.isChecked!==r.isChecked){Yg.set(t,r);const o=n.getId(t);qg(e)({...r,id:o})}}const y=("last"===d.input?["change"]:["input","change"]).map(e=>og(e,qg(m),t)),b=t.defaultView;if(!b)return()=>{y.forEach(e=>e())};const w=b.Object.getOwnPropertyDescriptor(b.HTMLInputElement.prototype,"value"),x=[[b.HTMLInputElement.prototype,"value"],[b.HTMLInputElement.prototype,"checked"],[b.HTMLSelectElement.prototype,"value"],[b.HTMLTextAreaElement.prototype,"value"],[b.HTMLSelectElement.prototype,"selectedIndex"],[b.HTMLOptionElement.prototype,"selected"]];return w&&w.set&&y.push(...x.map(e=>ag(e[0],e[1],{set(){qg(m)({target:this,isTrusted:!1})}},!1,b))),qg(()=>{y.forEach(e=>e())})}function Qg(e){return function(e,t){if(nm("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||nm("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||nm("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||nm("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function Zg(e,t,n){let r,o;return e?(e.ownerNode?r=t.getId(e.ownerNode):o=n.getId(e),{styleId:o,id:r}):{}}function em({mirror:e,stylesheetManager:t},n){let r=null;r="#document"===n.nodeName?e.getId(n):e.getId(n.host);const o="#document"===n.nodeName?n.defaultView?.Document:n.ownerDocument?.defaultView?.ShadowRoot,i=o?.prototype?Object.getOwnPropertyDescriptor(o?.prototype,"adoptedStyleSheets"):void 0;return null!==r&&-1!==r&&o&&i?(Object.defineProperty(n,"adoptedStyleSheets",{configurable:i.configurable,enumerable:i.enumerable,get(){return i.get?.call(this)},set(e){const n=i.set?.call(this,e);if(null!==r&&-1!==r)try{t.adoptStyleSheets(e,r)}catch(e){}return n}}),qg(()=>{Object.defineProperty(n,"adoptedStyleSheets",{configurable:i.configurable,enumerable:i.enumerable,get:i.get,set:i.set})})):()=>{}}function tm(e,t={}){const n=e.doc.defaultView;if(!n)return()=>{};let r;e.recordDOM&&(r=Vg(e,e.doc));const o=function({mousemoveCb:e,sampling:t,doc:n,mirror:r}){if(!1===t.mousemove)return()=>{};const o="number"==typeof t.mousemove?t.mousemove:50,i="number"==typeof t.mousemoveCallback?t.mousemoveCallback:500;let s,a=[];const c=sg(qg(t=>{const n=Date.now()-s;e(a.map(e=>(e.timeOffset-=n,e)),t),a=[],s=null}),i),l=qg(sg(qg(e=>{const t=Wg(e),{clientX:n,clientY:o}=vg(e)?e.changedTouches[0]:e;s||(s=lg()),a.push({x:n,y:o,id:r.getId(t),timeOffset:lg()-s}),c("undefined"!=typeof DragEvent&&e instanceof DragEvent?Ig.Drag:e instanceof MouseEvent?Ig.MouseMove:Ig.TouchMove)}),o,{trailing:!1})),d=[og("mousemove",l,n),og("touchmove",l,n),og("drag",l,n)];return qg(()=>{d.forEach(e=>e())})}(e),i=Kg(e),s=Gg(e),a=function({viewportResizeCb:e},{win:t}){let n=-1,r=-1;return og("resize",qg(sg(qg(()=>{const t=ug(),o=pg();n===t&&r===o||(e({width:Number(o),height:Number(t)}),n=t,r=o)}),200)),t)}(e,{win:n}),c=Xg(e),l=function({mediaInteractionCb:e,blockClass:t,blockSelector:n,unblockSelector:r,mirror:o,sampling:i,doc:s}){const a=qg(s=>sg(qg(i=>{const a=Wg(i);if(!a||fg(a,t,n,r,!0))return;const{currentTime:c,volume:l,muted:d,playbackRate:u}=a;e({type:s,id:o.getId(a),currentTime:c,volume:l,muted:d,playbackRate:u})}),i.media||500)),c=[og("play",a(Lg.Play),s),og("pause",a(Lg.Pause),s),og("seeked",a(Lg.Seeked),s),og("volumechange",a(Lg.VolumeChange),s),og("ratechange",a(Lg.RateChange),s)];return qg(()=>{c.forEach(e=>e())})}(e);let d=()=>{},u=()=>{},p=()=>{},h=()=>{};e.recordDOM&&(d=function({styleSheetRuleCb:e,mirror:t,stylesheetManager:n},{win:r}){if(!r.CSSStyleSheet||!r.CSSStyleSheet.prototype)return()=>{};const o=r.CSSStyleSheet.prototype.insertRule;r.CSSStyleSheet.prototype.insertRule=new Proxy(o,{apply:qg((r,o,i)=>{const[s,a]=i,{id:c,styleId:l}=Zg(o,t,n.styleMirror);return(c&&-1!==c||l&&-1!==l)&&e({id:c,styleId:l,adds:[{rule:s,index:a}]}),r.apply(o,i)})});const i=r.CSSStyleSheet.prototype.deleteRule;let s,a;r.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,removes:[{index:s}]}),r.apply(o,i)})}),r.CSSStyleSheet.prototype.replace&&(s=r.CSSStyleSheet.prototype.replace,r.CSSStyleSheet.prototype.replace=new Proxy(s,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,replace:s}),r.apply(o,i)})})),r.CSSStyleSheet.prototype.replaceSync&&(a=r.CSSStyleSheet.prototype.replaceSync,r.CSSStyleSheet.prototype.replaceSync=new Proxy(a,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,replaceSync:s}),r.apply(o,i)})}));const c={};rm("CSSGroupingRule")?c.CSSGroupingRule=r.CSSGroupingRule:(rm("CSSMediaRule")&&(c.CSSMediaRule=r.CSSMediaRule),rm("CSSConditionRule")&&(c.CSSConditionRule=r.CSSConditionRule),rm("CSSSupportsRule")&&(c.CSSSupportsRule=r.CSSSupportsRule));const l={};return Object.entries(c).forEach(([r,o])=>{l[r]={insertRule:o.prototype.insertRule,deleteRule:o.prototype.deleteRule},o.prototype.insertRule=new Proxy(l[r].insertRule,{apply:qg((r,o,i)=>{const[s,a]=i,{id:c,styleId:l}=Zg(o.parentStyleSheet,t,n.styleMirror);return(c&&-1!==c||l&&-1!==l)&&e({id:c,styleId:l,adds:[{rule:s,index:[...Qg(o),a||0]}]}),r.apply(o,i)})}),o.prototype.deleteRule=new Proxy(l[r].deleteRule,{apply:qg((r,o,i)=>{const[s]=i,{id:a,styleId:c}=Zg(o.parentStyleSheet,t,n.styleMirror);return(a&&-1!==a||c&&-1!==c)&&e({id:a,styleId:c,removes:[{index:[...Qg(o),s]}]}),r.apply(o,i)})})}),qg(()=>{r.CSSStyleSheet.prototype.insertRule=o,r.CSSStyleSheet.prototype.deleteRule=i,s&&(r.CSSStyleSheet.prototype.replace=s),a&&(r.CSSStyleSheet.prototype.replaceSync=a),Object.entries(c).forEach(([e,t])=>{t.prototype.insertRule=l[e].insertRule,t.prototype.deleteRule=l[e].deleteRule})})}(e,{win:n}),u=em(e,e.doc),p=function({styleDeclarationCb:e,mirror:t,ignoreCSSAttributes:n,stylesheetManager:r},{win:o}){const i=o.CSSStyleDeclaration.prototype.setProperty;o.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:qg((o,s,a)=>{const[c,l,d]=a;if(n.has(c))return i.apply(s,[c,l,d]);const{id:u,styleId:p}=Zg(s.parentRule?.parentStyleSheet,t,r.styleMirror);return(u&&-1!==u||p&&-1!==p)&&e({id:u,styleId:p,set:{property:c,value:l,priority:d},index:Qg(s.parentRule)}),o.apply(s,a)})});const s=o.CSSStyleDeclaration.prototype.removeProperty;return o.CSSStyleDeclaration.prototype.removeProperty=new Proxy(s,{apply:qg((o,i,a)=>{const[c]=a;if(n.has(c))return s.apply(i,[c]);const{id:l,styleId:d}=Zg(i.parentRule?.parentStyleSheet,t,r.styleMirror);return(l&&-1!==l||d&&-1!==d)&&e({id:l,styleId:d,remove:{property:c},index:Qg(i.parentRule)}),o.apply(i,a)})}),qg(()=>{o.CSSStyleDeclaration.prototype.setProperty=i,o.CSSStyleDeclaration.prototype.removeProperty=s})}(e,{win:n}),e.collectFonts&&(h=function({fontCb:e,doc:t}){const n=t.defaultView;if(!n)return()=>{};const r=[],o=new WeakMap,i=n.FontFace;n.FontFace=function(e,t,n){const r=new i(e,t,n);return o.set(r,{family:e,buffer:"string"!=typeof t,descriptors:n,fontSource:"string"==typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),r};const s=cg(t.fonts,"add",function(t){return function(n){return Tg(qg(()=>{const t=o.get(n);t&&(e(t),o.delete(n))}),0),t.apply(this,[n])}});return r.push(()=>{n.FontFace=i}),r.push(s),qg(()=>{r.forEach(e=>e())})}(e)));const f=function(e){const{doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,selectionCb:s}=e;let a=!0;const c=qg(()=>{const e=t.getSelection();if(!e||a&&e?.isCollapsed)return;a=e.isCollapsed||!1;const c=[],l=e.rangeCount||0;for(let t=0;t<l;t++){const s=e.getRangeAt(t),{startContainer:a,startOffset:l,endContainer:d,endOffset:u}=s;fg(a,r,o,i,!0)||fg(d,r,o,i,!0)||c.push({start:n.getId(a),startOffset:l,end:n.getId(d),endOffset:u})}s({ranges:c})});return c(),og("selectionchange",c)}(e),g=function({doc:e,customElementCb:t}){const n=e.defaultView;return n&&n.customElements?cg(n.customElements,"define",function(e){return function(n,r,o){try{t({define:{name:n}})}catch(e){}return e.apply(this,[n,r,o])}}):()=>{}}(e),m=[];for(const t of e.plugins)m.push(t.observer(t.callback,n,t.options));return qg(()=>{Ug.forEach(e=>e.reset()),r?.disconnect(),o(),i(),s(),a(),c(),l(),d(),u(),p(),h(),f(),g(),m.forEach(e=>e())})}function nm(e){return void 0!==window[e]}function rm(e){return Boolean(void 0!==window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class om{constructor(e){this.generateIdFn=e,this.iframeIdToRemoteIdMap=new WeakMap,this.iframeRemoteIdToIdMap=new WeakMap}getId(e,t,n,r){const o=n||this.getIdToRemoteIdMap(e),i=r||this.getRemoteIdToIdMap(e);let s=o.get(t);return s||(s=this.generateIdFn(),o.set(t,s),i.set(s,t)),s}getIds(e,t){const n=this.getIdToRemoteIdMap(e),r=this.getRemoteIdToIdMap(e);return t.map(t=>this.getId(e,t,n,r))}getRemoteId(e,t,n){const r=n||this.getRemoteIdToIdMap(e);if("number"!=typeof t)return t;const o=r.get(t);return o||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map(t=>this.getRemoteId(e,t,n))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}class im{constructor(){this.crossOriginIframeMirror=new om(Nf),this.crossOriginIframeRootIdMap=new WeakMap}addIframe(){}addLoadListener(){}attachIframe(){}}class sm{constructor(e){this.iframes=new WeakMap,this.crossOriginIframeMap=new WeakMap,this.crossOriginIframeMirror=new om(Nf),this.crossOriginIframeRootIdMap=new WeakMap,this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new om(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&e.contentWindow?.addEventListener("message",this.handleMessage.bind(this)),this.loadListener?.(e);const n=Pg(e);n&&n.adoptedStyleSheets&&n.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(n.adoptedStyleSheets,this.mirror.getId(n))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const r=this.transformCrossOriginEvent(n,t.data.event);r&&this.wrappedEmit(r,t.data.isCheckout)}transformCrossOriginEvent(e,t){switch(t.type){case Mg.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:Mg.IncrementalSnapshot,data:{source:Ig.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Mg.Meta:case Mg.Load:case Mg.DomContentLoaded:return!1;case Mg.Plugin:return t;case Mg.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case Mg.IncrementalSnapshot:switch(t.data.source){case Ig.Mutation:return t.data.adds.forEach(t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)}),t.data.removes.forEach(t=>{this.replaceIds(t,e,["parentId","id"])}),t.data.attributes.forEach(t=>{this.replaceIds(t,e,["id"])}),t.data.texts.forEach(t=>{this.replaceIds(t,e,["id"])}),t;case Ig.Drag:case Ig.TouchMove:case Ig.MouseMove:return t.data.positions.forEach(t=>{this.replaceIds(t,e,["id"])}),t;case Ig.ViewportResize:return!1;case Ig.MediaInteraction:case Ig.MouseInteraction:case Ig.Scroll:case Ig.CanvasMutation:case Ig.Input:return this.replaceIds(t.data,e,["id"]),t;case Ig.StyleSheetRule:case Ig.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case Ig.Font:return t;case Ig.Selection:return t.data.ranges.forEach(t=>{this.replaceIds(t,e,["start","end"])}),t;case Ig.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),t.data.styles?.forEach(t=>{this.replaceStyleIds(t,e,["styleId"])}),t}}return!1}replace(e,t,n,r){for(const o of r)(Array.isArray(t[o])||"number"==typeof t[o])&&(Array.isArray(t[o])?t[o]=e.getIds(n,t[o]):t[o]=e.getId(n,t[o]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach(e=>{this.replaceIdOnNode(e,t)})}patchRootIdOnNode(e,t){e.type===gf.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach(e=>{this.patchRootIdOnNode(e,t)})}}class am{init(){}addShadowRoot(){}observeAttachShadow(){}reset(){}}class cm{constructor(e){this.shadowDoms=new WeakSet,this.restoreHandlers=[],this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!vf(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e),this.bypassOptions.canvasManager.addShadowRoot(e);const n=Vg({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push(()=>n.disconnect()),this.restoreHandlers.push(Gg({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),Tg(()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(e.host)),this.restoreHandlers.push(em({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))},0)}observeAttachShadow(e){const t=Pg(e),n=function(e){try{return e.contentWindow}catch(e){}}(e);t&&n&&this.patchAttachShadow(n.Element,t)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(cg(e.prototype,"attachShadow",function(e){return function(r){const o=e.call(this,r);return this.shadowRoot&&Sg(this)&&n.addShadowRoot(this.shadowRoot,t),o}}))}reset(){this.restoreHandlers.forEach(e=>{try{e()}catch(e){}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet,this.bypassOptions.canvasManager.resetShadowRoots()}}for(var lm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",dm="undefined"==typeof Uint8Array?[]:new Uint8Array(256),um=0;um<64;um++)dm[lm.charCodeAt(um)]=um;class pm{reset(){}freeze(){}unfreeze(){}lock(){}unlock(){}snapshot(){}addWindow(){}addShadowRoot(){}resetShadowRoots(){}}class hm{constructor(e){this.trackedLinkElements=new WeakSet,this.styleMirror=new xg,this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},r=[];for(const t of e){let e;this.styleMirror.has(t)?e=this.styleMirror.getId(t):(e=this.styleMirror.add(t),r.push({styleId:e,rules:Array.from(t.rules||CSSRule,(e,t)=>({rule:bf(e),index:t}))})),n.styleIds.push(e)}r.length>0&&(n.styles=r),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class fm{constructor(){this.nodeMap=new WeakMap,this.active=!1}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some(e=>e!==t)}add(e,t){this.active||(this.active=!0,function(...e){Eg("requestAnimationFrame")(...e)}(()=>{this.nodeMap=new WeakMap,this.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}}let gm,mm;try{if(2!==Array.from([1],e=>2*e)[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=e.contentWindow?.Array.from||Array.from,document.body.removeChild(e)}}catch(e){}const vm=new wf;function ym(e={}){const{emit:t,checkoutEveryNms:n,checkoutEveryNth:r,blockClass:o="rr-block",blockSelector:i=null,unblockSelector:s=null,ignoreClass:a="rr-ignore",ignoreSelector:c=null,maskAllText:l=!1,maskTextClass:d="rr-mask",unmaskTextClass:u=null,maskTextSelector:p=null,unmaskTextSelector:h=null,inlineStylesheet:f=!0,maskAllInputs:g,maskInputOptions:m,slimDOMOptions:v,maskAttributeFn:y,maskInputFn:b,maskTextFn:w,maxCanvasSize:x=null,packFn:k,sampling:_={},dataURLOptions:S={},mousemoveWait:C,recordDOM:E=!0,recordCanvas:T=!1,recordCrossOriginIframes:M=!1,recordAfter:I=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:A=!1,collectFonts:R=!1,inlineImages:L=!1,plugins:P,keepIframeSrcFn:O=()=>!1,ignoreCSSAttributes:D=new Set([]),errorHandler:N,onMutation:B,getCanvasManager:j}=e;Hg=N;const $=!M||window.parent===window;let z=!1;if(!$)try{window.parent.document&&(z=!1)}catch(e){z=!0}if($&&!t)throw new Error("emit function is required");if(!$&&!z)return()=>{};void 0!==C&&void 0===_.mousemove&&(_.mousemove=C),vm.reset();const F=!0===g?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,radio:!0,checkbox:!0}:void 0!==m?m:{},H=!0===v||"all"===v?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===v,headMetaDescKeywords:"all"===v}:v||{};let q;!function(e=window){"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach),Node.prototype.contains||(Node.prototype.contains=(...e)=>{let t=e[0];if(!(0 in e))throw new TypeError("1 argument is required");do{if(this===t)return!0}while(t=t&&t.parentNode);return!1})}();let U=0;const W=e=>{for(const t of P||[])t.eventProcessor&&(e=t.eventProcessor(e));return k&&!z&&(e=k(e)),e};gm=(e,o)=>{const i=e;if(i.timestamp=lg(),!Ug[0]?.isFrozen()||i.type===Mg.FullSnapshot||i.type===Mg.IncrementalSnapshot&&i.data.source===Ig.Mutation||Ug.forEach(e=>e.unfreeze()),$)t?.(W(i),o);else if(z){const e={type:"rrweb",event:W(i),origin:window.location.origin,isCheckout:o};window.parent.postMessage(e,"*")}if(i.type===Mg.FullSnapshot)q=i,U=0;else if(i.type===Mg.IncrementalSnapshot){if(i.data.source===Ig.Mutation&&i.data.isAttachIframe)return;U++;const e=r&&U>=r,t=n&&q&&i.timestamp-q.timestamp>n;(e||t)&&ee(!0)}};const V=e=>{gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Mutation,...e}})},K=e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Scroll,...e}}),G=e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.CanvasMutation,...e}}),J=new hm({mutationCb:V,adoptedStyleSheetCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.AdoptedStyleSheet,...e}})}),Y="boolean"==typeof __RRWEB_EXCLUDE_IFRAME__&&__RRWEB_EXCLUDE_IFRAME__?new im:new sm({mirror:vm,mutationCb:V,stylesheetManager:J,recordCrossOriginIframes:M,wrappedEmit:gm});for(const e of P||[])e.getMirror&&e.getMirror({nodeMirror:vm,crossOriginIframeMirror:Y.crossOriginIframeMirror,crossOriginIframeStyleMirror:Y.crossOriginIframeStyleMirror});const X=new fm,Q=function(e,t){try{return e?e(t):new pm}catch{return new pm}}(j,{mirror:vm,win:window,mutationCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.CanvasMutation,...e}}),recordCanvas:T,blockClass:o,blockSelector:i,unblockSelector:s,maxCanvasSize:x,sampling:_.canvas,dataURLOptions:S,errorHandler:N}),Z="boolean"==typeof __RRWEB_EXCLUDE_SHADOW_DOM__&&__RRWEB_EXCLUDE_SHADOW_DOM__?new am:new cm({mutationCb:V,scrollCb:K,bypassOptions:{onMutation:B,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:p,unmaskTextSelector:h,inlineStylesheet:f,maskInputOptions:F,dataURLOptions:S,maskAttributeFn:y,maskTextFn:w,maskInputFn:b,recordCanvas:T,inlineImages:L,sampling:_,slimDOMOptions:H,iframeManager:Y,stylesheetManager:J,canvasManager:Q,keepIframeSrcFn:O,processedNodeManager:X,ignoreCSSAttributes:D},mirror:vm}),ee=(e=!1)=>{if(!E)return;gm({type:Mg.Meta,data:{href:window.location.href,width:pg(),height:ug()}},e),J.reset(),Z.init(),Ug.forEach(e=>e.lock());const t=function(e,t){const{mirror:n=new wf,blockClass:r="rr-block",blockSelector:o=null,unblockSelector:i=null,maskAllText:s=!1,maskTextClass:a="rr-mask",unmaskTextClass:c=null,maskTextSelector:l=null,unmaskTextSelector:d=null,inlineStylesheet:u=!0,inlineImages:p=!1,recordCanvas:h=!1,maskAllInputs:f=!1,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOM:y=!1,dataURLOptions:b,preserveWhiteSpace:w,onSerialize:x,onIframeLoad:k,iframeLoadTimeout:_,onBlockedImageLoad:S,onStylesheetLoad:C,stylesheetLoadTimeout:E,keepIframeSrcFn:T=()=>!1,ignoreCSSAttributes:M=new Set([])}=t||{};return rg(e,{doc:e,mirror:n,blockClass:r,blockSelector:o,unblockSelector:i,maskAllText:s,maskTextClass:a,unmaskTextClass:c,maskTextSelector:l,unmaskTextSelector:d,skipChild:!1,inlineStylesheet:u,maskInputOptions:!0===f?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0}:!1===f?{}:f,maskAttributeFn:g,maskTextFn:m,maskInputFn:v,slimDOMOptions:!0===y||"all"===y?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===y,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===y?{}:y,dataURLOptions:b,inlineImages:p,recordCanvas:h,preserveWhiteSpace:w,onSerialize:x,onIframeLoad:k,iframeLoadTimeout:_,onBlockedImageLoad:S,onStylesheetLoad:C,stylesheetLoadTimeout:E,keepIframeSrcFn:T,newlyAddedElement:!1,ignoreCSSAttributes:M})}(document,{mirror:vm,blockClass:o,blockSelector:i,unblockSelector:s,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:p,unmaskTextSelector:h,inlineStylesheet:f,maskAllInputs:F,maskAttributeFn:y,maskInputFn:b,maskTextFn:w,slimDOM:H,dataURLOptions:S,recordCanvas:T,inlineImages:L,onSerialize:e=>{yg(e,vm)&&Y.addIframe(e),bg(e,vm)&&J.trackLinkElement(e),wg(e)&&Z.addShadowRoot(e.shadowRoot,document)},onIframeLoad:(e,t)=>{Y.attachIframe(e,t),e.contentWindow&&Q.addWindow(e.contentWindow),Z.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{J.attachLinkElement(e,t)},onBlockedImageLoad:(e,t,{width:n,height:r})=>{V({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:{style:{width:`${n}px`,height:`${r}px`}}}]})},keepIframeSrcFn:O,ignoreCSSAttributes:D});t&&(gm({type:Mg.FullSnapshot,data:{node:t,initialOffset:dg(window)}}),Ug.forEach(e=>e.unlock()),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&J.adoptStyleSheets(document.adoptedStyleSheets,vm.getId(document)))};mm=ee;try{const e=[],t=e=>qg(tm)({onMutation:B,mutationCb:V,mousemoveCb:(e,t)=>gm({type:Mg.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.MouseInteraction,...e}}),scrollCb:K,viewportResizeCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.ViewportResize,...e}}),inputCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Input,...e}}),mediaInteractionCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.MediaInteraction,...e}}),styleSheetRuleCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.StyleSheetRule,...e}}),styleDeclarationCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.StyleDeclaration,...e}}),canvasMutationCb:G,fontCb:e=>gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Font,...e}}),selectionCb:e=>{gm({type:Mg.IncrementalSnapshot,data:{source:Ig.Selection,...e}})},customElementCb:e=>{gm({type:Mg.IncrementalSnapshot,data:{source:Ig.CustomElement,...e}})},blockClass:o,ignoreClass:a,ignoreSelector:c,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:p,unmaskTextSelector:h,maskInputOptions:F,inlineStylesheet:f,sampling:_,recordDOM:E,recordCanvas:T,inlineImages:L,userTriggeredOnInput:A,collectFonts:R,doc:e,maskAttributeFn:y,maskInputFn:b,maskTextFn:w,keepIframeSrcFn:O,blockSelector:i,unblockSelector:s,slimDOMOptions:H,dataURLOptions:S,mirror:vm,iframeManager:Y,stylesheetManager:J,shadowDomManager:Z,processedNodeManager:X,canvasManager:Q,ignoreCSSAttributes:D,plugins:P?.filter(e=>e.observer)?.map(e=>({observer:e.observer,options:e.options,callback:t=>gm({type:Mg.Plugin,data:{plugin:e.name,payload:t}})}))||[]},{});Y.addLoadListener(n=>{try{e.push(t(n.contentDocument))}catch(e){}});const n=()=>{ee(),e.push(t(document))};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(og("DOMContentLoaded",()=>{gm({type:Mg.DomContentLoaded,data:{}}),"DOMContentLoaded"===I&&n()})),e.push(og("load",()=>{gm({type:Mg.Load,data:{}}),"load"===I&&n()},window))),()=>{e.forEach(e=>e()),X.destroy(),mm=void 0,Hg=void 0}}catch(e){}}var bm,wm;ym.mirror=vm,ym.takeFullSnapshot=function(e){if(!mm)throw new Error("please take full snapshot after start recording");mm(e)},(wm=bm||(bm={}))[wm.NotStarted=0]="NotStarted",wm[wm.Running=1]="Running",wm[wm.Stopped=2]="Stopped";function xm(e){return e>9999999999?e:1e3*e}function km(e){return e>9999999999?e/1e3:e}function _m(e,t){"sentry.transaction"!==t.category&&(["ui.click","ui.input"].includes(t.category)?e.triggerUserActivity():e.checkAndHandleExpiredSession(),e.addUpdate(()=>(e.throttledAddEvent({type:Mg.Custom,timestamp:1e3*(t.timestamp||0),data:{tag:"breadcrumb",payload:bn(t,10,1e3)}}),"console"===t.category)))}function Sm(e){return e.closest("button,a")||e}function Cm(e){const t=Em(e);return t&&t instanceof Element?Sm(t):t}function Em(e){return function(e){return"object"==typeof e&&!!e&&"target"in e}(e)?e.target:e}let Tm;function Mm(e){return Tm||(Tm=[],oe(sf,"open",function(e){return function(...t){if(Tm)try{Tm.forEach(e=>e())}catch{}return e.apply(sf,t)}})),Tm.push(e),()=>{const t=Tm?Tm.indexOf(e):-1;t>-1&&Tm.splice(t,1)}}const Im=new Set([Ig.Mutation,Ig.StyleSheetRule,Ig.StyleDeclaration,Ig.AdoptedStyleSheet,Ig.CanvasMutation,Ig.Selection,Ig.MediaInteraction]);class Am{constructor(e,t,n=_m){this._lastMutation=0,this._lastScroll=0,this._clicks=[],this._timeout=t.timeout/1e3,this._threshold=t.threshold/1e3,this._scrollTimeout=t.scrollTimeout/1e3,this._replay=e,this._ignoreSelector=t.ignoreSelector,this._addBreadcrumbEvent=n}addListeners(){const e=Mm(()=>{this._lastMutation=Lm()});this._teardown=()=>{e(),this._clicks=[],this._lastMutation=0,this._lastScroll=0}}removeListeners(){this._teardown&&this._teardown(),this._checkClickTimeout&&clearTimeout(this._checkClickTimeout)}handleClick(e,t){if(function(e,t){if(!Rm.includes(e.tagName))return!0;if("INPUT"===e.tagName&&!["submit","button"].includes(e.getAttribute("type")||""))return!0;if("A"===e.tagName&&(e.hasAttribute("download")||e.hasAttribute("target")&&"_self"!==e.getAttribute("target")))return!0;if(t&&e.matches(t))return!0;return!1}(t,this._ignoreSelector)||!function(e){return!(!e.data||"number"!=typeof e.data.nodeId||!e.timestamp)}(e))return;const n={timestamp:km(e.timestamp),clickBreadcrumb:e,clickCount:0,node:t};this._clicks.some(e=>e.node===n.node&&Math.abs(e.timestamp-n.timestamp)<1)||(this._clicks.push(n),1===this._clicks.length&&this._scheduleCheckClicks())}registerMutation(e=Date.now()){this._lastMutation=km(e)}registerScroll(e=Date.now()){this._lastScroll=km(e)}registerClick(e){const t=Sm(e);this._handleMultiClick(t)}_handleMultiClick(e){this._getClicks(e).forEach(e=>{e.clickCount++})}_getClicks(e){return this._clicks.filter(t=>t.node===e)}_checkClicks(){const e=[],t=Lm();this._clicks.forEach(n=>{!n.mutationAfter&&this._lastMutation&&(n.mutationAfter=n.timestamp<=this._lastMutation?this._lastMutation-n.timestamp:void 0),!n.scrollAfter&&this._lastScroll&&(n.scrollAfter=n.timestamp<=this._lastScroll?this._lastScroll-n.timestamp:void 0),n.timestamp+this._timeout<=t&&e.push(n)});for(const t of e){const e=this._clicks.indexOf(t);e>-1&&(this._generateBreadcrumbs(t),this._clicks.splice(e,1))}this._clicks.length&&this._scheduleCheckClicks()}_generateBreadcrumbs(e){const t=this._replay,n=e.scrollAfter&&e.scrollAfter<=this._scrollTimeout,r=e.mutationAfter&&e.mutationAfter<=this._threshold,o=!n&&!r,{clickCount:i,clickBreadcrumb:s}=e;if(o){const n=1e3*Math.min(e.mutationAfter||this._timeout,this._timeout),r=n<1e3*this._timeout?"mutation":"timeout",o={type:"default",message:s.message,timestamp:s.timestamp,category:"ui.slowClickDetected",data:{...s.data,url:sf.location.href,route:t.getCurrentRoute(),timeAfterClickMs:n,endReason:r,clickCount:i||1}};return void this._addBreadcrumbEvent(t,o)}if(i>1){const e={type:"default",message:s.message,timestamp:s.timestamp,category:"ui.multiClick",data:{...s.data,url:sf.location.href,route:t.getCurrentRoute(),clickCount:i,metric:!0}};this._addBreadcrumbEvent(t,e)}}_scheduleCheckClicks(){this._checkClickTimeout&&clearTimeout(this._checkClickTimeout),this._checkClickTimeout=Op(()=>this._checkClicks(),1e3)}}const Rm=["A","BUTTON","INPUT"];function Lm(){return Date.now()/1e3}function Pm(e,t){try{if(!function(e){return 3===e.type}(t))return;const{source:n}=t.data;if(Im.has(n)&&e.registerMutation(t.timestamp),n===Ig.Scroll&&e.registerScroll(t.timestamp),function(e){return e.data.source===Ig.MouseInteraction}(t)){const{type:n,id:r}=t.data,o=ym.mirror.getNode(r);o instanceof HTMLElement&&n===Ag.Click&&e.registerClick(o)}}catch{}}function Om(e){return{timestamp:Date.now()/1e3,type:"default",...e}}var Dm=(e=>(e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e))(Dm||{});const Nm=new Set(["id","class","aria-label","role","name","alt","title","data-test-id","data-testid","disabled","aria-disabled","data-sentry-component"]);function Bm(e){const t={};!e["data-sentry-component"]&&e["data-sentry-element"]&&(e["data-sentry-component"]=e["data-sentry-element"]);for(const n in e)if(Nm.has(n)){let r=n;"data-testid"!==n&&"data-test-id"!==n||(r="testId"),t[r]=e[n]}return t}const jm=e=>t=>{if(!e.isEnabled())return;const n=function(e){const{target:t,message:n}=function(e){const t="click"===e.name;let n,r=null;try{r=t?Cm(e.event):Em(e.event),n=ee(r,{maxStringLength:200})||"<unknown>"}catch{n="<unknown>"}return{target:r,message:n}}(e);return Om({category:`ui.${e.name}`,...$m(t,n)})}(t);if(!n)return;const r="click"===t.name,o=r?t.event:void 0;!(r&&e.clickDetector&&o?.target)||o.altKey||o.metaKey||o.ctrlKey||o.shiftKey||function(e,t,n){e.handleClick(t,n)}(e.clickDetector,n,Cm(t.event)),_m(e,n)};function $m(e,t){const n=ym.mirror.getId(e),r=n&&ym.mirror.getNode(n),o=r&&ym.mirror.getMeta(r),i=o&&function(e){return e.type===Dm.Element}(o)?o:null;return{message:t,data:i?{nodeId:n,node:{id:n,tagName:i.tagName,textContent:Array.from(i.childNodes).map(e=>e.type===Dm.Text&&e.textContent).filter(Boolean).map(e=>e.trim()).join(""),attributes:Bm(i.attributes)}}:{}}}function zm(e,t){if(!e.isEnabled())return;e.updateUserActivity();const n=function(e){const{metaKey:t,shiftKey:n,ctrlKey:r,altKey:o,key:i,target:s}=e;if(!s||function(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName||e.isContentEditable}(s)||!i)return null;const a=t||r||o,c=1===i.length;if(!a&&c)return null;const l=ee(s,{maxStringLength:200})||"<unknown>",d=$m(s,l);return Om({category:"ui.keyDown",message:l,data:{...d.data,metaKey:t,shiftKey:n,ctrlKey:r,altKey:o,key:i}})}(t);n&&_m(e,n)}const Fm={resource:function(e){const{entryType:t,initiatorType:n,name:r,responseEnd:o,startTime:i,decodedBodySize:s,encodedBodySize:a,responseStatus:c,transferSize:l}=e;if(["fetch","xmlhttprequest"].includes(n))return null;return{type:`${t}.${n}`,start:Um(i),end:Um(o),name:r,data:{size:l,statusCode:c,decodedBodySize:s,encodedBodySize:a}}},paint:function(e){const{duration:t,entryType:n,name:r,startTime:o}=e,i=Um(o);return{type:n,name:r,start:i,end:i+t,data:void 0}},navigation:function(e){const{entryType:t,name:n,decodedBodySize:r,duration:o,domComplete:i,encodedBodySize:s,domContentLoadedEventStart:a,domContentLoadedEventEnd:c,domInteractive:l,loadEventStart:d,loadEventEnd:u,redirectCount:p,startTime:h,transferSize:f,type:g}=e;if(0===o)return null;return{type:`${t}.${g}`,start:Um(h),end:Um(i),name:n,data:{size:f,decodedBodySize:r,encodedBodySize:s,duration:o,domInteractive:l,domContentLoadedEventStart:a,domContentLoadedEventEnd:c,loadEventStart:d,loadEventEnd:u,domComplete:i,redirectCount:p}}}};function Hm(e,t){return({metric:n})=>{t.replayPerformanceEntries.push(e(n))}}function qm(e){const t=Fm[e.entryType];return t?t(e):null}function Um(e){return((Le()||sf.performance.timeOrigin)+e)/1e3}function Wm(e){const t=e.entries[e.entries.length-1];return Jm(e,"largest-contentful-paint",t?.element?[t.element]:void 0)}function Vm(e){return void 0!==e.sources}function Km(e){const t=[],n=[];for(const r of e.entries)if(Vm(r)){const e=[];for(const t of r.sources)if(t.node){n.push(t.node);const r=ym.mirror.getId(t.node);r&&e.push(r)}t.push({value:r.value,nodeIds:e.length?e:void 0})}return Jm(e,"cumulative-layout-shift",n,t)}function Gm(e){const t=e.entries[e.entries.length-1];return Jm(e,"interaction-to-next-paint",t?.target?[t.target]:void 0)}function Jm(e,t,n,r){const o=e.value,i=e.rating,s=Um(o);return{type:"web-vital",name:t,start:s,end:s,data:{value:o,size:o,rating:i,nodeIds:n?n.map(e=>ym.mirror.getId(e)):void 0,attributions:r}}}const Ym="undefined"==typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;const Xm=["log","warn","error"],Qm="[Replay] ";function Zm(e,t="info"){Qo({category:"console",data:{logger:"replay"},level:t,message:`${Qm}${e}`},{level:t})}const ev=function(){let e=!1,t=!1;const n={exception:()=>{},infoTick:()=>{},setConfig:n=>{e=!!n.captureExceptions,t=!!n.traceInternals}};return Ym?(Xm.forEach(e=>{n[e]=(...n)=>{y[e](Qm,...n),t&&Zm(n.join(""),bi(e))}}),n.exception=(r,...o)=>{o.length&&n.error&&n.error(...o),y.error(Qm,r),e?wr(r,{mechanism:{handled:!0,type:"auto.function.replay.debug"}}):t&&Zm(r,"error")},n.infoTick=(...e)=>{y.log(Qm,...e),t&&setTimeout(()=>Zm(e[0]),0)}):Xm.forEach(e=>{n[e]=()=>{}}),n}();class tv extends Error{constructor(){super("Event buffer exceeded maximum size of 20000000.")}}class nv{constructor(){this.events=[],this._totalSize=0,this.hasCheckout=!1,this.waitForCheckout=!1}get hasEvents(){return this.events.length>0}get type(){return"sync"}destroy(){this.events=[]}async addEvent(e){const t=JSON.stringify(e).length;if(this._totalSize+=t,this._totalSize>uf)throw new tv;this.events.push(e)}finish(){return new Promise(e=>{const t=this.events;this.clear(),e(JSON.stringify(t))})}clear(){this.events=[],this._totalSize=0,this.hasCheckout=!1}getEarliestTimestamp(){const e=this.events.map(e=>e.timestamp).sort()[0];return e?xm(e):null}}class rv{constructor(e){this._worker=e,this._id=0}ensureReady(){return this._ensureReadyPromise||(this._ensureReadyPromise=new Promise((e,t)=>{this._worker.addEventListener("message",({data:n})=>{n.success?e():t()},{once:!0}),this._worker.addEventListener("error",e=>{t(e)},{once:!0})})),this._ensureReadyPromise}destroy(){Ym&&ev.log("Destroying compression worker"),this._worker.terminate()}postMessage(e,t){const n=this._getAndIncrementId();return new Promise((r,o)=>{const i=({data:t})=>{const s=t;if(s.method===e&&s.id===n){if(this._worker.removeEventListener("message",i),!s.success)return Ym&&ev.error("Error in compression worker: ",s.response),void o(new Error("Error in compression worker"));r(s.response)}};this._worker.addEventListener("message",i),this._worker.postMessage({id:n,method:e,arg:t})})}_getAndIncrementId(){return this._id++}}class ov{constructor(e){this._worker=new rv(e),this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1,this.waitForCheckout=!1}get hasEvents(){return!!this._earliestTimestamp}get type(){return"worker"}ensureReady(){return this._worker.ensureReady()}destroy(){this._worker.destroy()}addEvent(e){const t=xm(e.timestamp);(!this._earliestTimestamp||t<this._earliestTimestamp)&&(this._earliestTimestamp=t);const n=JSON.stringify(e);return this._totalSize+=n.length,this._totalSize>uf?Promise.reject(new tv):this._sendEventToWorker(n)}finish(){return this._finishRequest()}clear(){this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1,this._worker.postMessage("clear").then(null,e=>{Ym&&ev.exception(e,'Sending "clear" message to worker failed',e)})}getEarliestTimestamp(){return this._earliestTimestamp}_sendEventToWorker(e){return this._worker.postMessage("addEvent",e)}async _finishRequest(){const e=await this._worker.postMessage("finish");return this._earliestTimestamp=null,this._totalSize=0,e}}class iv{constructor(e){this._fallback=new nv,this._compression=new ov(e),this._used=this._fallback,this._ensureWorkerIsLoadedPromise=this._ensureWorkerIsLoaded()}get waitForCheckout(){return this._used.waitForCheckout}get type(){return this._used.type}get hasEvents(){return this._used.hasEvents}get hasCheckout(){return this._used.hasCheckout}set hasCheckout(e){this._used.hasCheckout=e}set waitForCheckout(e){this._used.waitForCheckout=e}destroy(){this._fallback.destroy(),this._compression.destroy()}clear(){return this._used.clear()}getEarliestTimestamp(){return this._used.getEarliestTimestamp()}addEvent(e){return this._used.addEvent(e)}async finish(){return await this.ensureWorkerIsLoaded(),this._used.finish()}ensureWorkerIsLoaded(){return this._ensureWorkerIsLoadedPromise}async _ensureWorkerIsLoaded(){try{await this._compression.ensureReady()}catch(e){return void(Ym&&ev.exception(e,"Failed to load the compression worker, falling back to simple buffer"))}await this._switchToCompressionWorker()}async _switchToCompressionWorker(){const{events:e,hasCheckout:t,waitForCheckout:n}=this._fallback,r=[];for(const t of e)r.push(this._compression.addEvent(t));this._compression.hasCheckout=t,this._compression.waitForCheckout=n,this._used=this._compression;try{await Promise.all(r),this._fallback.clear()}catch(e){Ym&&ev.exception(e,"Failed to add events when switching buffers.")}}}function sv({useCompression:e,workerUrl:t}){if(e&&window.Worker){const e=function(e){try{const t=e||function(){if("undefined"==typeof __SENTRY_EXCLUDE_REPLAY_WORKER__||!__SENTRY_EXCLUDE_REPLAY_WORKER__)return function(){const e=new Blob(['var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),s=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(t,e){for(var i=new n(31),s=0;s<31;++s)i[s]=e+=1<<t[s-1];var a=new r(i[30]);for(s=1;s<30;++s)for(var o=i[s];o<i[s+1];++o)a[o]=o-i[s]<<5|s;return{b:i,r:a}},o=a(e,2),h=o.b,f=o.r;h[28]=258,f[258]=28;for(var l=a(i,0).r,u=new n(32768),c=0;c<32768;++c){var v=(43690&c)>>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,s=0,a=new n(r);s<i;++s)t[s]&&++a[t[s]-1];var o,h=new n(r);for(s=1;s<r;++s)h[s]=h[s-1]+a[s-1]<<1;if(e){o=new n(1<<r);var f=15-r;for(s=0;s<i;++s)if(t[s])for(var l=s<<4|t[s],c=r-t[s],v=h[t[s]-1]++<<c,d=v|(1<<c)-1;v<=d;++v)o[u[v]>>f]=l}else for(o=new n(i),s=0;s<i;++s)t[s]&&(o[s]=u[h[t[s]-1]++]>>15-t[s]);return o},p=new t(288);for(c=0;c<144;++c)p[c]=8;for(c=144;c<256;++c)p[c]=9;for(c=256;c<280;++c)p[c]=7;for(c=280;c<288;++c)p[c]=8;var g=new t(32);for(c=0;c<32;++c)g[c]=5;var w=d(p,9,0),y=d(g,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},_=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},x=function(r,e){for(var i=[],s=0;s<r.length;++s)r[s]&&i.push({s:s,f:r[s]});var a=i.length,o=i.slice();if(!a)return{t:F,l:0};if(1==a){var h=new t(i[0].s+1);return h[i[0].s]=1,{t:h,l:1}}i.sort(function(t,n){return t.f-n.f}),i.push({s:-1,f:25001});var f=i[0],l=i[1],u=0,c=1,v=2;for(i[0]={s:-1,f:f.f+l.f,l:f,r:l};c!=a-1;)f=i[i[u].f<i[v].f?u++:v++],l=i[u!=c&&i[u].f<i[v].f?u++:v++],i[c++]={s:-1,f:f.f+l.f,l:f,r:l};var d=o[0].s;for(s=1;s<a;++s)o[s].s>d&&(d=o[s].s);var p=new n(d+1),g=A(i[c-1],p,0);if(g>e){s=0;var w=0,y=g-e,m=1<<y;for(o.sort(function(t,n){return p[n.s]-p[t.s]||t.f-n.f});s<a;++s){var b=o[s].s;if(!(p[b]>e))break;w+=m-(1<<g-p[b]),p[b]=e}for(w>>=y;w>0;){var M=o[s].s;p[M]<e?w-=1<<e-p[M]++-1:++s}for(;s>=0&&w;--s){var E=o[s].s;p[E]==e&&(--p[E],++w)}g=e}return{t:new t(p),l:g}},A=function(t,n,r){return-1==t.s?Math.max(A(t.l,n,r+1),A(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,s=t[0],a=1,o=function(t){e[i++]=t},h=1;h<=r;++h)if(t[h]==s&&h!=r)++a;else{if(!s&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(s),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(s);a=1,s=t[h]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},k=function(t,n,r){var e=r.length,i=m(n+2);t[i]=255&e,t[i+1]=e>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s<e;++s)t[i+s+4]=r[s];return 8*(i+4+e)},U=function(t,r,a,o,h,f,l,u,c,v,m){z(r,m++,a),++h[256];for(var b=x(h,15),M=b.t,E=b.l,A=x(f,15),U=A.t,C=A.l,F=D(M),I=F.c,S=F.n,L=D(U),O=L.c,j=L.n,q=new n(19),B=0;B<I.length;++B)++q[31&I[B]];for(B=0;B<O.length;++B)++q[31&O[B]];for(var G=x(q,7),H=G.t,J=G.l,K=19;K>4&&!H[s[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(h,p)+T(f,g)+l,X=T(h,M)+T(f,U)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X<W)),m+=2,X<W){N=d(M,E,0),P=M,Q=d(U,C,0),R=U;var Y=d(H,J,0);z(r,m,S-257),z(r,m+5,j-1),z(r,m+10,K-4),m+=14;for(B=0;B<K;++B)z(r,m+3*B,H[s[B]]);m+=3*K;for(var Z=[I,O],$=0;$<2;++$){var tt=Z[$];for(B=0;B<tt.length;++B){var nt=31&tt[B];z(r,m,Y[nt]),m+=H[nt],nt>15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=w,P=p,Q=y,R=g;for(B=0;B<u;++B){var rt=o[B];if(rt>255){_(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;_(r,m,Q[et]),m+=R[et],et>3&&(_(r,m,rt>>5&8191),m+=i[et])}else _(r,m,N[rt]),m+=P[rt]}return _(r,m,N[256]),m+P[256]},C=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,s=0|r.length,a=0;a!=s;){for(var o=Math.min(a+2655,s);a<o;++a)i+=e+=r[a];e=(65535&e)+15*(e>>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(s,a,o,h,u){if(!u&&(u={l:1},a.dictionary)){var c=a.dictionary.subarray(-32768),v=new t(c.length+s.length);v.set(c),v.set(s,c.length),s=v,u.w=c.length}return function(s,a,o,h,u,c){var v=c.z||s.length,d=new t(h+v+5*(1+Math.ceil(v/7e3))+u),p=d.subarray(h,d.length-u),g=c.l,w=7&(c.r||0);if(a){w&&(p[0]=c.r>>3);for(var y=C[a-1],M=y>>13,E=8191&y,z=(1<<o)-1,_=c.p||new n(32768),x=c.h||new n(z+1),A=Math.ceil(o/3),D=2*A,T=function(t){return(s[t]^s[t+1]<<A^s[t+2]<<D)&z},F=new r(25e3),I=new n(288),S=new n(32),L=0,O=0,j=c.i||0,q=0,B=c.w||0,G=0;j+2<v;++j){var H=T(j),J=32767&j,K=x[H];if(_[J]=K,x[H]=J,B<=j){var N=v-j;if((L>7e3||q>24576)&&(N>423||!g)){w=U(s,p,0,F,I,S,O,q,G,j-G,w),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(s[j+Q]==s[j+Q-W]){for(var $=0;$<Z&&s[j+$]==s[j+$-W];++$);if($>Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;P<tt;++P){var rt=j-W+P&32767,et=rt-_[rt]&32767;et>nt&&(nt=et,K=rt)}}}W+=(J=K)-(K=_[J])&32767}if(R){F[q++]=268435456|f[Q]<<18|l[R];var it=31&f[Q],st=31&l[R];O+=e[it]+i[st],++I[257+it],++S[st],B=j+Q,++L}else F[q++]=s[j],++I[s[j]]}}for(j=Math.max(j,B);j<v;++j)F[q++]=s[j],++I[s[j]];w=U(s,p,g,F,I,S,O,q,G,j-G,w),g||(c.r=7&w|p[w/8|0]<<3,w-=7,c.h=x,c.p=_,c.i=j,c.w=B)}else{for(j=c.w||0;j<v+g;j+=65535){var at=j+65535;at>=v&&(p[w/8|0]=g,at=v),w=k(p,w+1,s.subarray(j,at))}c.i=v}return b(d,0,h+m(w)+u)}(s,null==a.level?6:a.level,null==a.mem?u.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):20:12+a.mem,o,h,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if("function"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var s=this.b.length-this.s.z;this.b.set(n.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(s),32768),this.s.z=n.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n.prototype.flush=function(){this.ondata||E(5),this.s.l&&E(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=I[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,s=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),a=s.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(s,n),O(s,a-8,r.d()),O(s,a-4,e),s}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t.prototype.flush=function(){j.prototype.flush.call(this)},t}(),G="undefined"!=typeof TextEncoder&&new TextEncoder,H="undefined"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(G)return G.encode(n);for(var e=n.length,i=new t(n.length+(n.length>>1)),s=0,a=function(t){i[s++]=t},o=0;o<e;++o){if(s+5>i.length){var h=new t(s+8+(e-o<<1));h.set(i),i=h}var f=n.charCodeAt(o);f<128||r?a(f):f<2048?(a(192|f>>6),a(128|63&f)):f>55295&&f<57344?(a(240|(f=65536+(1047552&f)|1023&n.charCodeAt(++o))>>18),a(128|f>>12&63),a(128|f>>6&63),a(128|63&f)):(a(224|f>>12),a(128|f>>6&63),a(128|63&f))}return b(i,0,s)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error("Adding invalid event");const n=this._hasEvents?",":"";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push("]",!0);const t=function(t){let n=0;for(const r of t)n+=r.length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n<i;n++){const i=t[n];r.set(i,e),e+=i.length}return r}(this._deflatedData);return this._init(),t}_init(){this._hasEvents=!1,this._deflatedData=[],this.deflate=new B,this.deflate.ondata=(t,n)=>{this._deflatedData.push(t)},this.stream=new J((t,n)=>{this.deflate.push(t,n)}),this.stream.push("[")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener("message",function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&"function"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}}),postMessage({id:void 0,method:"init",success:!0,response:void 0});']);return URL.createObjectURL(e)}();return""}();if(!t)return;Ym&&ev.log("Using compression worker"+(e?` from ${e}`:""));const n=new Worker(t);return new iv(n)}catch(e){Ym&&ev.exception(e,"Failed to create compression worker")}}(t);if(e)return e}return Ym&&ev.log("Using simple buffer"),new nv}function av(){try{return"sessionStorage"in sf&&!!sf.sessionStorage}catch{return!1}}function cv(e){!function(){if(!av())return;try{sf.sessionStorage.removeItem(af)}catch{}}(),e.session=void 0}function lv(e){return void 0!==e&&Math.random()<e}function dv(e){if(av())try{sf.sessionStorage.setItem(af,JSON.stringify(e))}catch{}}function uv(e){const t=Date.now();return{id:e.id||ke(),started:e.started||t,lastActivity:e.lastActivity||t,segmentId:e.segmentId||0,sampled:e.sampled,previousSessionId:e.previousSessionId,dirty:e.dirty||!1}}function pv({sessionSampleRate:e,allowBuffering:t,stickySession:n=!1},{previousSessionId:r}={}){const o=function(e,t){return lv(e)?"session":!!t&&"buffer"}(e,t),i=uv({sampled:o,previousSessionId:r});return n&&dv(i),i}function hv(e,t,n=+new Date){return null===e||void 0===t||t<0||0!==t&&e+t<=n}function fv(e,{maxReplayDuration:t,sessionIdleExpire:n,targetTime:r=Date.now()}){return hv(e.started,t,r)||hv(e.lastActivity,n,r)}function gv(e,{sessionIdleExpire:t,maxReplayDuration:n}){return!!fv(e,{sessionIdleExpire:t,maxReplayDuration:n})&&("buffer"!==e.sampled||0!==e.segmentId)}function mv({sessionIdleExpire:e,maxReplayDuration:t,previousSessionId:n},r){const o=r.stickySession&&function(){if(!av())return null;try{const e=sf.sessionStorage.getItem(af);if(!e)return null;const t=JSON.parse(e);return Ym&&ev.infoTick("Loading existing session"),uv(t)}catch{return null}}();return o?gv(o,{sessionIdleExpire:e,maxReplayDuration:t})?(Ym&&ev.infoTick("Session in sessionStorage is expired, creating new one..."),pv(r,{previousSessionId:o.id})):o:(Ym&&ev.infoTick("Creating new session"),pv(r,{previousSessionId:n}))}function vv(e,t,n){return!!bv(e,t)&&(yv(e,t,n),!0)}async function yv(e,t,n){const{eventBuffer:r}=e;if(!r||r.waitForCheckout&&!n)return null;const o="buffer"===e.recordingMode;try{n&&o&&r.clear(),n&&(r.hasCheckout=!0,r.waitForCheckout=!1);const i=function(e,t){try{if("function"==typeof t&&function(e){return e.type===Mg.Custom}(e))return t(e)}catch(e){return Ym&&ev.exception(e,"An error occurred in the `beforeAddRecordingEvent` callback, skipping the event..."),null}return e}(t,e.getOptions().beforeAddRecordingEvent);if(!i)return;return await r.addEvent(i)}catch(t){const n=t&&t instanceof tv,i=n?"addEventSizeExceeded":"addEvent",s=Ze();if(s){const e=n?"buffer_overflow":"internal_sdk_error";s.recordDroppedEvent(e,"replay")}if(n&&o)return r.clear(),r.waitForCheckout=!0,null;e.handleException(t),await e.stop({reason:i})}}function bv(e,t){if(!e.eventBuffer||e.isPaused()||!e.isEnabled())return!1;const n=xm(t.timestamp);return!(n+e.timeouts.sessionIdlePause<Date.now())&&(!(n>e.getContext().initialTimestamp+e.getOptions().maxReplayDuration)||(Ym&&ev.infoTick(`Skipping event with timestamp ${n} because it is after maxReplayDuration`),!1))}function wv(e){return!e.type}function xv(e){return"transaction"===e.type}function kv(e){return"feedback"===e.type}function _v(e){return(t,n)=>{if(!e.isEnabled()||!wv(t)&&!xv(t))return;const r=n.statusCode;!r||r<200||r>=300||(xv(t)?function(e,t){const n=e.getContext();t.contexts?.trace?.trace_id&&n.traceIds.size<100&&n.traceIds.add(t.contexts.trace.trace_id)}(e,t):function(e,t){const n=e.getContext();t.event_id&&n.errorIds.size<100&&n.errorIds.add(t.event_id);if("buffer"!==e.recordingMode||!t.tags||!t.tags.replayId)return;const{beforeErrorSampling:r}=e.getOptions();if("function"==typeof r&&!r(t))return;Op(async()=>{try{await e.sendBufferedReplayOrFlush()}catch(t){e.handleException(t)}})}(e,t))}}function Sv(e){return t=>{e.isEnabled()&&wv(t)&&function(e,t){const n=t.exception?.values?.[0]?.value;if("string"!=typeof n)return;if(n.match(/(reactjs\.org\/docs\/error-decoder\.html\?invariant=|react\.dev\/errors\/)(418|419|422|423|425)/)||n.match(/(does not match server-rendered HTML|Hydration failed because)/i)){_m(e,Om({category:"replay.hydrate-error",data:{url:ne()}}))}}(e,t)}}function Cv(e){const t=Ze();t&&t.on("beforeAddBreadcrumb",t=>function(e,t){if(!e.isEnabled()||!Ev(t))return;const n=function(e){if(!Ev(e)||["fetch","xhr","sentry.event","sentry.transaction"].includes(e.category)||e.category.startsWith("ui."))return null;if("console"===e.category)return function(e){const t=e.data?.arguments;if(!Array.isArray(t)||0===t.length)return Om(e);let n=!1;const r=t.map(e=>{if(!e)return e;if("string"==typeof e)return e.length>df?(n=!0,`${e.slice(0,df)}…`):e;if("object"==typeof e)try{const t=bn(e,7);return JSON.stringify(t).length>df?(n=!0,`${JSON.stringify(t,null,2).slice(0,df)}…`):t}catch{}return e});return Om({...e,data:{...e.data,arguments:r,...n?{_meta:{warnings:["CONSOLE_ARG_TRUNCATED"]}}:{}}})}(e);return Om(e)}(t);n&&_m(e,n)}(e,t))}function Ev(e){return!!e.category}function Tv(){const e=Ge().getPropagationContext().dsc;e&&delete e.replay_id;const t=en();if(t){delete mn(t).replay_id}}function Mv(e){return Object.assign((t,n)=>{if(!e.isEnabled()||e.isPaused())return t;if(function(e){return"replay_event"===e.type}(t))return delete t.breadcrumbs,t;if(!wv(t)&&!xv(t)&&!kv(t))return t;if(!e.checkAndHandleExpiredSession())return Tv(),t;if(kv(t))return e.flush(),t.contexts.feedback.replay_id=e.getSessionId(),function(e,t){e.triggerUserActivity(),e.addUpdate(()=>!t.timestamp||(e.throttledAddEvent({type:Mg.Custom,timestamp:1e3*t.timestamp,data:{tag:"breadcrumb",payload:{timestamp:t.timestamp,type:"default",category:"sentry.feedback",data:{feedbackId:t.event_id}}}}),!1))}(e,t),t;if(function(e,t){return!(e.type||!e.exception?.values?.length||!t.originalException?.__rrweb__)}(t,n)&&!e.getOptions()._experiments.captureExceptions)return Ym&&ev.log("Ignoring error from rrweb internals",t),null;const r=function(e,t){return"buffer"===e.recordingMode&&t.message!==cf&&!(!t.exception||t.type)&&lv(e.getOptions().errorSampleRate)}(e,t);if((r||"session"===e.recordingMode)&&(t.tags={...t.tags,replayId:e.getSessionId()}),r&&"buffer"===e.recordingMode&&"buffer"===e.session?.sampled){const t=e.session;t.dirty=!0,e.getOptions().stickySession&&dv(t)}return t},{id:"Replay"})}function Iv(e,t){return t.map(({type:t,start:n,end:r,name:o,data:i})=>{const s=e.throttledAddEvent({type:Mg.Custom,timestamp:n,data:{tag:"performanceSpan",payload:{op:t,description:o,startTimestamp:n,endTimestamp:r,data:i}}});return"string"==typeof s?Promise.resolve(null):s})}function Av(e){return t=>{if(!e.isEnabled())return;const n=function(e){const{from:t,to:n}=e,r=Date.now()/1e3;return{type:"navigation.push",start:r,end:r,name:n,data:{previous:t}}}(t);null!==n&&(e.getContext().urls.push(n.name),e.triggerUserActivity(),e.addUpdate(()=>(Iv(e,[n]),!1)))}}function Rv(e,t){e.isEnabled()&&null!==t&&(function(e,t){return(!Ym||!e.getOptions()._experiments.traceInternals)&&Wo(t,Ze())}(e,t.name)||e.addUpdate(()=>(Iv(e,[t]),!0)))}function Lv(e){if(!e)return;const t=new TextEncoder;try{if("string"==typeof e)return t.encode(e).length;if(e instanceof URLSearchParams)return t.encode(e.toString()).length;if(e instanceof FormData){const n=$p(e);return t.encode(n).length}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength}catch{}}function Pv(e){if(!e)return;const t=parseInt(e,10);return isNaN(t)?void 0:t}function Ov(e,t){if(!e)return{headers:{},size:void 0,_meta:{warnings:[t]}};const n={...e._meta},r=n.warnings||[];return n.warnings=[...r,t],e._meta=n,e}function Dv(e,t){if(!t)return null;const{startTimestamp:n,endTimestamp:r,url:o,method:i,statusCode:s,request:a,response:c}=t;return{type:e,start:n/1e3,end:r/1e3,name:o,data:{method:i,statusCode:s,request:a,response:c}}}function Nv(e){return{headers:{},size:e,_meta:{warnings:["URL_SKIPPED"]}}}function Bv(e,t,n){if(!t&&0===Object.keys(e).length)return;if(!t)return{headers:e};if(!n)return{headers:e,size:t};const r={headers:e,size:t},{body:o,warnings:i}=function(e){if(!e||"string"!=typeof e)return{body:e};const t=e.length>lf,n=function(e){const t=e[0],n=e[e.length-1];return"["===t&&"]"===n||"{"===t&&"}"===n}(e);if(t){const t=e.slice(0,lf);return n?{body:t,warnings:["MAYBE_JSON_TRUNCATED"]}:{body:`${t}…`,warnings:["TEXT_TRUNCATED"]}}if(n)try{return{body:JSON.parse(e)}}catch{}return{body:e}}(n);return r.body=o,i?.length&&(r._meta={warnings:i}),r}function jv(e,t){return Object.entries(e).reduce((n,[r,o])=>{const i=r.toLowerCase();return t.includes(i)&&e[r]&&(n[i]=o),n},{})}function $v(e,t){const n=function(e,t=sf.document.baseURI){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith(sf.location.origin))return e;const n=new URL(e,t);if(n.origin!==new URL(t).origin)return e;const r=n.href;if(!e.endsWith("/")&&r.endsWith("/"))return r.slice(0,-1);return r}(e);return xe(n,t)}async function zv(e,t,n){try{const r=await async function(e,t,n){const r=Date.now(),{startTimestamp:o=r,endTimestamp:i=r}=t,{url:s,method:a,status_code:c=0,request_body_size:l,response_body_size:d}=e.data,u=$v(s,n.networkDetailAllowUrls)&&!$v(s,n.networkDetailDenyUrls),p=u?function({networkCaptureBodies:e,networkRequestHeaders:t},n,r){const o=n?function(e,t){if(1===e.length&&"string"!=typeof e[0])return Hv(e[0],t);if(2===e.length)return Hv(e[1],t);return{}}(n,t):{};if(!e)return Bv(o,r,void 0);const i=Fp(n),[s,a]=zp(i,ev),c=Bv(o,r,s);if(a)return Ov(c,a);return c}(n,t.input,l):Nv(l),h=await async function(e,{networkCaptureBodies:t,networkResponseHeaders:n},r,o){if(!e&&void 0!==o)return Nv(o);const i=r?Fv(r.headers,n):{};if(!r||!t&&void 0!==o)return Bv(i,o,void 0);const[s,a]=await async function(e){const t=function(e){try{return e.clone()}catch(e){Ym&&ev.exception(e,"Failed to clone response body")}}(e);if(!t)return[void 0,"BODY_PARSE_ERROR"];try{const e=await function(e){return new Promise((t,n)=>{const r=Op(()=>n(new Error("Timeout while trying to read response body")),500);(async function(e){return await e.text()})(e).then(e=>t(e),e=>n(e)).finally(()=>clearTimeout(r))})}(t);return[e]}catch(e){return e instanceof Error&&e.message.indexOf("Timeout")>-1?(Ym&&ev.warn("Parsing text body from response timed out"),[void 0,"BODY_PARSE_TIMEOUT"]):(Ym&&ev.exception(e,"Failed to get text body from response"),[void 0,"BODY_PARSE_ERROR"])}}(r),c=function(e,{networkCaptureBodies:t,responseBodySize:n,captureDetails:r,headers:o}){try{const i=e?.length&&void 0===n?Lv(e):n;return r?Bv(o,i,t?e:void 0):Nv(i)}catch(e){return Ym&&ev.exception(e,"Failed to serialize response body"),Bv(o,n,void 0)}}(s,{networkCaptureBodies:t,responseBodySize:o,captureDetails:e,headers:i});if(a)return Ov(c,a);return c}(u,n,t.response,d);return{startTimestamp:o,endTimestamp:i,url:s,method:a,statusCode:c,request:p,response:h}}(e,t,n),o=Dv("resource.fetch",r);Rv(n.replay,o)}catch(e){Ym&&ev.exception(e,"Failed to capture fetch breadcrumb")}}function Fv(e,t){const n={};return t.forEach(t=>{e.get(t)&&(n[t]=e.get(t))}),n}function Hv(e,t){if(!e)return{};const n=e.headers;return n?n instanceof Headers?Fv(n,t):Array.isArray(n)?{}:jv(n,t):{}}async function qv(e,t,n){try{const r=function(e,t,n){const r=Date.now(),{startTimestamp:o=r,endTimestamp:i=r,input:s,xhr:a}=t,{url:c,method:l,status_code:d=0,request_body_size:u,response_body_size:p}=e.data;if(!c)return null;if(!a||!$v(c,n.networkDetailAllowUrls)||$v(c,n.networkDetailDenyUrls)){return{startTimestamp:o,endTimestamp:i,url:c,method:l,statusCode:d,request:Nv(u),response:Nv(p)}}const h=a[Dp],f=h?jv(h.request_headers,n.networkRequestHeaders):{},g=jv(Hp(a),n.networkResponseHeaders),[m,v]=n.networkCaptureBodies?zp(s,ev):[void 0],[y,b]=n.networkCaptureBodies?function(e){const t=[];try{return[e.responseText]}catch(e){t.push(e)}try{return function(e,t){try{if("string"==typeof e)return[e];if(e instanceof Document)return[e.body.outerHTML];if("json"===t&&e&&"object"==typeof e)return[JSON.stringify(e)];if(!e)return[void 0]}catch(t){return Ym&&ev.exception(t,"Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return Ym&&ev.log("Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}(e.response,e.responseType)}catch(e){t.push(e)}return Ym&&ev.warn("Failed to get xhr response body",...t),[void 0]}(a):[void 0],w=Bv(f,u,m),x=Bv(g,p,y);return{startTimestamp:o,endTimestamp:i,url:c,method:l,statusCode:d,request:v?Ov(w,v):w,response:b?Ov(x,b):x}}(e,t,n),o=Dv("resource.xhr",r);Rv(n.replay,o)}catch(e){Ym&&ev.exception(e,"Failed to capture xhr breadcrumb")}}function Uv(e,t){const{xhr:n,input:r}=t;if(!n)return;const o=Lv(r),i=n.getResponseHeader("content-length")?Pv(n.getResponseHeader("content-length")):function(e,t){try{return Lv("json"===t&&e&&"object"==typeof e?JSON.stringify(e):e)}catch{return}}(n.response,n.responseType);void 0!==o&&(e.data.request_body_size=o),void 0!==i&&(e.data.response_body_size=i)}function Wv(e){const t=Ze();try{const{networkDetailAllowUrls:n,networkDetailDenyUrls:r,networkCaptureBodies:o,networkRequestHeaders:i,networkResponseHeaders:s}=e.getOptions(),a={replay:e,networkDetailAllowUrls:n,networkDetailDenyUrls:r,networkCaptureBodies:o,networkRequestHeaders:i,networkResponseHeaders:s};t&&t.on("beforeAddBreadcrumb",(e,t)=>function(e,t,n){if(!t.data)return;try{(function(e){return"xhr"===e.category})(t)&&function(e){return e?.xhr}(n)&&(Uv(t,n),qv(t,n,e)),function(e){return"fetch"===e.category}(t)&&function(e){return e?.response}(n)&&(!function(e,t){const{input:n,response:r}=t,o=Lv(n?Fp(n):void 0),i=r?Pv(r.headers.get("content-length")):void 0;void 0!==o&&(e.data.request_body_size=o),void 0!==i&&(e.data.response_body_size=i)}(t,n),zv(t,n,e))}catch(e){Ym&&ev.exception(e,"Error when enriching network breadcrumb")}}(a,e,t))}catch{}}function Vv(e){const{jsHeapSizeLimit:t,totalJSHeapSize:n,usedJSHeapSize:r}=e,o=Date.now()/1e3;return{type:"memory",name:"memory",start:o,end:o,data:{memory:{jsHeapSizeLimit:t,totalJSHeapSize:n,usedJSHeapSize:r}}}}function Kv(e,t,n){return function(e,t,n){let r,o,i;const s=n?.maxWait?Math.max(n.maxWait,t):0,a=n?.setTimeoutImpl||setTimeout;function c(){return l(),r=e(),r}function l(){void 0!==o&&clearTimeout(o),void 0!==i&&clearTimeout(i),o=i=void 0}function d(){return o&&clearTimeout(o),o=a(c,t),s&&void 0===i&&(i=a(c,s)),r}return d.cancel=l,d.flush=function(){return void 0!==o||void 0!==i?c():r},d}(e,t,{...n,setTimeoutImpl:Op})}const Gv=a.navigator;function Jv(e){let t=!1;return(n,r)=>{if(!e.checkAndHandleExpiredSession())return void(Ym&&ev.warn("Received replay event after session expired."));const o=r||!t;t=!0,e.clickDetector&&Pm(e.clickDetector,n),e.addUpdate(()=>{if("buffer"===e.recordingMode&&o&&e.setInitialState(),!vv(e,n,o))return!0;if(!o)return!1;const t=e.session;if(function(e,t){if(!t||!e.session||0!==e.session.segmentId)return;vv(e,function(e){const t=e.getOptions();return{type:Mg.Custom,timestamp:Date.now(),data:{tag:"options",payload:{shouldRecordCanvas:e.isRecordingCanvas(),sessionSampleRate:t.sessionSampleRate,errorSampleRate:t.errorSampleRate,useCompressionOption:t.useCompression,blockAllMedia:t.blockAllMedia,maskAllText:t.maskAllText,maskAllInputs:t.maskAllInputs,useCompression:!!e.eventBuffer&&"worker"===e.eventBuffer.type,networkDetailHasUrls:t.networkDetailAllowUrls.length>0,networkCaptureBodies:t.networkCaptureBodies,networkRequestHasHeaders:t.networkRequestHeaders.length>0,networkResponseHasHeaders:t.networkResponseHeaders.length>0}}}}(e),!1)}(e,o),"buffer"===e.recordingMode&&t&&e.eventBuffer&&!t.dirty){const n=e.eventBuffer.getEarliestTimestamp();n&&(Ym&&ev.log(`Updating session start time to earliest event in buffer to ${new Date(n)}`),t.started=n,e.getOptions().stickySession&&dv(t))}return t?.previousSessionId||"session"===e.recordingMode&&e.flush(),!0})}}async function Yv({recordingData:e,replayId:t,segmentId:n,eventContext:r,timestamp:o,session:i}){const s=function({recordingData:e,headers:t}){let n;const r=`${JSON.stringify(t)}\n`;if("string"==typeof e)n=`${r}${e}`;else{const t=(new TextEncoder).encode(r);n=new Uint8Array(t.length+e.length),n.set(t),n.set(e,t.length)}return n}({recordingData:e,headers:{segment_id:n}}),{urls:a,errorIds:c,traceIds:l,initialTimestamp:d}=r,u=Ze(),p=Ge(),h=u?.getTransport(),f=u?.getDsn();if(!(u&&h&&f&&i.sampled))return Promise.resolve({});const g={type:"replay_event",replay_start_timestamp:d/1e3,timestamp:o/1e3,error_ids:c,trace_ids:l,urls:a,replay_id:t,segment_id:n,replay_type:i.sampled},m=await async function({client:e,scope:t,replayId:n,event:r}){const o={event_id:n,integrations:"object"!=typeof e._integrations||null===e._integrations||Array.isArray(e._integrations)?void 0:Object.keys(e._integrations)};e.emit("preprocessEvent",r,o);const i=await vr(e.getOptions(),r,o,t,e,Je());if(!i)return null;e.emit("postprocessEvent",i,o),i.platform=i.platform||"javascript";const s=e.getSdkMetadata(),{name:a,version:c,settings:l}=s?.sdk||{};return i.sdk={...i.sdk,name:a||"sentry.javascript.unknown",version:c||"0.0.0",settings:l},i}({scope:p,client:u,replayId:t,event:g});if(!m)return u.recordDroppedEvent("event_processor","replay"),Ym&&ev.log("An event processor returned `null`, will not send event."),Promise.resolve({});delete m.sdkProcessingMetadata;const v=function(e,t,n,r){return kn(On(e,Pn(e),r,n),[[{type:"replay_event"},e],[{type:"replay_recording",length:"string"==typeof t?(new TextEncoder).encode(t).length:t.length},t]])}(m,s,f,u.getOptions().tunnel);let y;try{y=await h.send(v)}catch(e){const t=new Error(cf);try{t.cause=e}catch{}throw t}if("number"==typeof y.statusCode&&(y.statusCode<200||y.statusCode>=300))throw new Xv(y.statusCode);const b=ho({},y);if(po(b,"replay"))throw new Qv(b);return y}class Xv extends Error{constructor(e){super(`Transport returned status code ${e}`)}}class Qv extends Error{constructor(e){super("Rate limit hit"),this.rateLimits=e}}async function Zv(e,t={count:0,interval:5e3}){const{recordingData:n,onError:r}=e;if(n.length)try{return await Yv(e),!0}catch(n){if(n instanceof Xv||n instanceof Qv)throw n;if(_r("Replays",{_retryCount:t.count}),r&&r(n),t.count>=3){const e=new Error(`${cf} - max retries exceeded`);try{e.cause=n}catch{}throw e}return t.interval*=++t.count,new Promise((n,r)=>{Op(async()=>{try{await Zv(e,t),n(!0)}catch(e){r(e)}},t.interval)})}}const ey="__THROTTLED";function ty(e,t,n){const r=new Map;let o=!1;return(...i)=>{const s=Math.floor(Date.now()/1e3);if((e=>{const t=e-n;r.forEach((e,n)=>{n<t&&r.delete(n)})})(s),[...r.values()].reduce((e,t)=>e+t,0)>=t){const e=o;return o=!0,e?"__SKIPPED":ey}o=!1;const a=r.get(s)||0;return r.set(s,a+1),e(...i)}}class ny{constructor({options:e,recordingOptions:t}){this.eventBuffer=null,this.performanceEntries=[],this.replayPerformanceEntries=[],this.recordingMode="session",this.timeouts={sessionIdlePause:3e5,sessionIdleExpire:9e5},this._lastActivity=Date.now(),this._isEnabled=!1,this._isPaused=!1,this._requiresManualStart=!1,this._hasInitializedCoreListeners=!1,this._context={errorIds:new Set,traceIds:new Set,urls:[],initialTimestamp:Date.now(),initialUrl:""},this._recordingOptions=t,this._options=e,this._debouncedFlush=Kv(()=>this._flush(),this._options.flushMinDelay,{maxWait:this._options.flushMaxDelay}),this._throttledAddEvent=ty((e,t)=>function(e,t,n){return bv(e,t)?yv(e,t,n):Promise.resolve(null)}(this,e,t),300,5);const{slowClickTimeout:n,slowClickIgnoreSelectors:r}=this.getOptions(),o=n?{threshold:Math.min(3e3,n),timeout:n,scrollTimeout:300,ignoreSelector:r?r.join(","):""}:void 0;if(o&&(this.clickDetector=new Am(this,o)),Ym){const t=e._experiments;ev.setConfig({captureExceptions:!!t.captureExceptions,traceInternals:!!t.traceInternals})}this._handleVisibilityChange=()=>{"visible"===sf.document.visibilityState?this._doChangeToForegroundTasks():this._doChangeToBackgroundTasks()},this._handleWindowBlur=()=>{const e=Om({category:"ui.blur"});this._doChangeToBackgroundTasks(e)},this._handleWindowFocus=()=>{const e=Om({category:"ui.focus"});this._doChangeToForegroundTasks(e)},this._handleKeyboardEvent=e=>{zm(this,e)}}getContext(){return this._context}isEnabled(){return this._isEnabled}isPaused(){return this._isPaused}isRecordingCanvas(){return Boolean(this._canvas)}getOptions(){return this._options}handleException(e){Ym&&ev.exception(e),this._options.onError&&this._options.onError(e)}initializeSampling(e){const{errorSampleRate:t,sessionSampleRate:n}=this._options,r=t<=0&&n<=0;this._requiresManualStart=r,r||(this._initializeSessionForSampling(e),this.session?!1!==this.session.sampled&&(this.recordingMode="buffer"===this.session.sampled&&0===this.session.segmentId?"buffer":"session",Ym&&ev.infoTick(`Starting replay in ${this.recordingMode} mode`),this._initializeRecording()):Ym&&ev.exception(new Error("Unable to initialize and create session")))}start(){if(this._isEnabled&&"session"===this.recordingMode)return void(Ym&&ev.log("Recording is already in progress"));if(this._isEnabled&&"buffer"===this.recordingMode)return void(Ym&&ev.log("Buffering is in progress, call `flush()` to save the replay"));Ym&&ev.infoTick("Starting replay in session mode"),this._updateUserActivity();const e=mv({maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire},{stickySession:this._options.stickySession,sessionSampleRate:1,allowBuffering:!1});this.session=e,this.recordingMode="session",this._initializeRecording()}startBuffering(){if(this._isEnabled)return void(Ym&&ev.log("Buffering is in progress, call `flush()` to save the replay"));Ym&&ev.infoTick("Starting replay in buffer mode");const e=mv({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration},{stickySession:this._options.stickySession,sessionSampleRate:0,allowBuffering:!0});this.session=e,this.recordingMode="buffer",this._initializeRecording()}startRecording(){try{const e=this._canvas;this._stopRecording=ym({...this._recordingOptions,..."buffer"===this.recordingMode?{checkoutEveryNms:6e4}:this._options._experiments.continuousCheckout&&{checkoutEveryNms:Math.max(36e4,this._options._experiments.continuousCheckout)},emit:Jv(this),.../iPhone|iPad|iPod/i.test(Gv?.userAgent??"")||/Macintosh/i.test(Gv?.userAgent??"")&&Gv?.maxTouchPoints&&Gv?.maxTouchPoints>1?{sampling:{mousemove:!1}}:{},onMutation:this._onMutationHandler.bind(this),...e?{recordCanvas:e.recordCanvas,getCanvasManager:e.getCanvasManager,sampling:e.sampling,dataURLOptions:e.dataURLOptions}:{}})}catch(e){this.handleException(e)}}stopRecording(){try{return this._stopRecording&&(this._stopRecording(),this._stopRecording=void 0),!0}catch(e){return this.handleException(e),!1}}async stop({forceFlush:e=!1,reason:t}={}){if(this._isEnabled){this._isEnabled=!1,this.recordingMode="buffer";try{Ym&&ev.log("Stopping Replay"+(t?` triggered by ${t}`:"")),Tv(),this._removeListeners(),this.stopRecording(),this._debouncedFlush.cancel(),e&&await this._flush({force:!0}),this.eventBuffer?.destroy(),this.eventBuffer=null,cv(this)}catch(e){this.handleException(e)}}}pause(){this._isPaused||(this._isPaused=!0,this.stopRecording(),Ym&&ev.log("Pausing replay"))}resume(){this._isPaused&&this._checkSession()&&(this._isPaused=!1,this.startRecording(),Ym&&ev.log("Resuming replay"))}async sendBufferedReplayOrFlush({continueRecording:e=!0}={}){if("session"===this.recordingMode)return this.flushImmediate();const t=Date.now();Ym&&ev.log("Converting buffer to session"),await this.flushImmediate();const n=this.stopRecording();e&&n&&"session"!==this.recordingMode&&(this.recordingMode="session",this.session&&(this.session.dirty=!1,this._updateUserActivity(t),this._updateSessionActivity(t),this._maybeSaveSession()),this.startRecording())}addUpdate(e){const t=e();"buffer"!==this.recordingMode&&this._isEnabled&&!0!==t&&this._debouncedFlush()}triggerUserActivity(){if(this._updateUserActivity(),this._stopRecording)this.checkAndHandleExpiredSession(),this._updateSessionActivity();else{if(!this._checkSession())return;this.resume()}}updateUserActivity(){this._updateUserActivity(),this._updateSessionActivity()}conditionalFlush(){return"buffer"===this.recordingMode?Promise.resolve():this.flushImmediate()}flush(){return this._debouncedFlush()}flushImmediate(){return this._debouncedFlush(),this._debouncedFlush.flush()}cancelFlush(){this._debouncedFlush.cancel()}getSessionId(e){if(!e||!1!==this.session?.sampled)return this.session?.id}checkAndHandleExpiredSession(){if(!(this._lastActivity&&hv(this._lastActivity,this.timeouts.sessionIdlePause)&&this.session&&"session"===this.session.sampled))return!!this._checkSession();this.pause()}setInitialState(){const e=`${sf.location.pathname}${sf.location.hash}${sf.location.search}`,t=`${sf.location.origin}${e}`;this.performanceEntries=[],this.replayPerformanceEntries=[],this._clearContext(),this._context.initialUrl=t,this._context.initialTimestamp=Date.now(),this._context.urls.push(t)}throttledAddEvent(e,t){const n=this._throttledAddEvent(e,t);if(n===ey){const e=Om({category:"replay.throttled"});this.addUpdate(()=>!vv(this,{type:5,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e,metric:!0}}))}return n}getCurrentRoute(){const e=this.lastActiveSpan||en(),t=e&&Zt(e),n=(t&&Vt(t).data||{})[tt];if(t&&n&&["route","custom"].includes(n))return Vt(t).description}_initializeRecording(){this.setInitialState(),this._updateSessionActivity(),this.eventBuffer=sv({useCompression:this._options.useCompression,workerUrl:this._options.workerUrl}),this._removeListeners(),this._addListeners(),this._isEnabled=!0,this._isPaused=!1,this.startRecording()}_initializeSessionForSampling(e){const t=this._options.errorSampleRate>0,n=mv({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration,previousSessionId:e},{stickySession:this._options.stickySession,sessionSampleRate:this._options.sessionSampleRate,allowBuffering:t});this.session=n}_checkSession(){if(!this.session)return!1;const e=this.session;return!gv(e,{sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration})||(this._refreshSession(e),!1)}async _refreshSession(e){this._isEnabled&&(await this.stop({reason:"refresh session"}),this.initializeSampling(e.id))}_addListeners(){try{sf.document.addEventListener("visibilitychange",this._handleVisibilityChange),sf.addEventListener("blur",this._handleWindowBlur),sf.addEventListener("focus",this._handleWindowFocus),sf.addEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.addListeners(),this._hasInitializedCoreListeners||(!function(e){const t=Ze();Tp(jm(e)),Ap(Av(e)),Cv(e),Wv(e),Or(Mv(e)),t&&(t.on("beforeSendEvent",Sv(e)),t.on("afterSendEvent",_v(e)),t.on("createDsc",t=>{const n=e.getSessionId();n&&e.isEnabled()&&"session"===e.recordingMode&&e.checkAndHandleExpiredSession()&&(t.replay_id=n)}),t.on("spanStart",t=>{e.lastActiveSpan=t}),t.on("spanEnd",t=>{e.lastActiveSpan=t}),t.on("beforeSendFeedback",async(t,n)=>{const r=e.getSessionId();n?.includeReplay&&e.isEnabled()&&r&&t.contexts?.feedback&&("api"===t.contexts.feedback.source&&await e.sendBufferedReplayOrFlush(),t.contexts.feedback.replay_id=r)}),t.on("openFeedbackWidget",async()=>{await e.sendBufferedReplayOrFlush()}))}(this),this._hasInitializedCoreListeners=!0)}catch(e){this.handleException(e)}this._performanceCleanupCallback=function(e){function t(t){e.performanceEntries.includes(t)||e.performanceEntries.push(t)}function n({entries:e}){e.forEach(t)}const r=[];return["navigation","paint","resource"].forEach(e=>{r.push(Gu(e,n))}),r.push(Vu(Hm(Wm,e)),Wu(Hm(Km,e)),Ku(Hm(Gm,e))),()=>{r.forEach(e=>e())}}(this)}_removeListeners(){try{sf.document.removeEventListener("visibilitychange",this._handleVisibilityChange),sf.removeEventListener("blur",this._handleWindowBlur),sf.removeEventListener("focus",this._handleWindowFocus),sf.removeEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.removeListeners(),this._performanceCleanupCallback&&this._performanceCleanupCallback()}catch(e){this.handleException(e)}}_doChangeToBackgroundTasks(e){if(!this.session)return;fv(this.session,{maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire})||(e&&this._createCustomBreadcrumb(e),this.conditionalFlush())}_doChangeToForegroundTasks(e){if(!this.session)return;this.checkAndHandleExpiredSession()?e&&this._createCustomBreadcrumb(e):Ym&&ev.log("Document has become active, but session has expired")}_updateUserActivity(e=Date.now()){this._lastActivity=e}_updateSessionActivity(e=Date.now()){this.session&&(this.session.lastActivity=e,this._maybeSaveSession())}_createCustomBreadcrumb(e){this.addUpdate(()=>{this.throttledAddEvent({type:Mg.Custom,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e}})})}_addPerformanceEntries(){let e=(t=this.performanceEntries,t.map(qm).filter(Boolean)).concat(this.replayPerformanceEntries);var t;if(this.performanceEntries=[],this.replayPerformanceEntries=[],this._requiresManualStart){const t=this._context.initialTimestamp/1e3;e=e.filter(e=>e.start>=t)}return Promise.all(Iv(this,e))}_clearContext(){this._context.errorIds.clear(),this._context.traceIds.clear(),this._context.urls=[]}_updateInitialTimestampFromEventBuffer(){const{session:e,eventBuffer:t}=this;if(!e||!t||this._requiresManualStart)return;if(e.segmentId)return;const n=t.getEarliestTimestamp();n&&n<this._context.initialTimestamp&&(this._context.initialTimestamp=n)}_popEventContext(){const e={initialTimestamp:this._context.initialTimestamp,initialUrl:this._context.initialUrl,errorIds:Array.from(this._context.errorIds),traceIds:Array.from(this._context.traceIds),urls:this._context.urls};return this._clearContext(),e}async _runFlush(){const e=this.getSessionId();if(this.session&&this.eventBuffer&&e){if(await this._addPerformanceEntries(),this.eventBuffer?.hasEvents&&(await async function(e){try{return Promise.all(Iv(e,[Vv(sf.performance.memory)]))}catch{return[]}}(this),this.eventBuffer&&e===this.getSessionId()))try{this._updateInitialTimestampFromEventBuffer();const t=Date.now();if(t-this._context.initialTimestamp>this._options.maxReplayDuration+3e4)throw new Error("Session is too long, not sending replay");const n=this._popEventContext(),r=this.session.segmentId++;this._maybeSaveSession();const o=await this.eventBuffer.finish();await Zv({replayId:e,recordingData:o,segmentId:r,eventContext:n,session:this.session,timestamp:t,onError:e=>this.handleException(e)})}catch(e){this.handleException(e),this.stop({reason:"sendReplay"});const t=Ze();if(t){const n=e instanceof Qv?"ratelimit_backoff":"send_error";t.recordDroppedEvent(n,"replay")}}}else Ym&&ev.error("No session or eventBuffer found to flush.")}async _flush({force:e=!1}={}){if(!this._isEnabled&&!e)return;if(!this.checkAndHandleExpiredSession())return void(Ym&&ev.error("Attempting to finish replay event after session expired."));if(!this.session)return;const t=this.session.started,n=Date.now()-t;this._debouncedFlush.cancel();const r=n<this._options.minReplayDuration,o=n>this._options.maxReplayDuration+5e3;if(r||o)return Ym&&ev.log(`Session duration (${Math.floor(n/1e3)}s) is too ${r?"short":"long"}, not sending replay.`),void(r&&this._debouncedFlush());const i=this.eventBuffer;i&&0===this.session.segmentId&&!i.hasCheckout&&Ym&&ev.log("Flushing initial segment without checkout.");const s=!!this._flushLock;this._flushLock||(this._flushLock=this._runFlush());try{await this._flushLock}catch(e){this.handleException(e)}finally{this._flushLock=void 0,s&&this._debouncedFlush()}}_maybeSaveSession(){this.session&&this._options.stickySession&&dv(this.session)}_onMutationHandler(e){const{ignoreMutations:t}=this._options._experiments;if(t?.length&&e.some(e=>{const n=function(e){if(!e)return null;try{return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}catch{return null}}(e.target),r=t.join(",");return n?.matches(r)}))return!1;const n=e.length,r=this._options.mutationLimit,o=r&&n>r;if(n>this._options.mutationBreadcrumbLimit||o){const e=Om({category:"replay.mutations",data:{count:n,limit:o}});this._createCustomBreadcrumb(e)}return!o||(this.stop({reason:"mutationLimit",forceFlush:"session"===this.recordingMode}),!1)}}function ry(e,t){return[...e,...t].join(",")}const oy='img,image,svg,video,object,picture,embed,map,audio,link[rel="icon"],link[rel="apple-touch-icon"]',iy=["content-length","content-type","accept"],sy=Symbol.for("sentry__originalRequestBody");let ay=!1,cy=!1;const ly=e=>new dy(e);class dy{constructor({flushMinDelay:e=5e3,flushMaxDelay:t=5500,minReplayDuration:n=4999,maxReplayDuration:r=36e5,stickySession:o=!0,useCompression:i=!0,workerUrl:s,_experiments:a={},maskAllText:c=!0,maskAllInputs:l=!0,blockAllMedia:d=!0,mutationBreadcrumbLimit:u=750,mutationLimit:p=1e4,slowClickTimeout:h=7e3,slowClickIgnoreSelectors:f=[],networkDetailAllowUrls:g=[],networkDetailDenyUrls:m=[],networkCaptureBodies:v=!0,networkRequestHeaders:y=[],networkResponseHeaders:b=[],mask:w=[],maskAttributes:x=["title","placeholder","aria-label"],unmask:k=[],block:_=[],unblock:S=[],ignore:C=[],maskFn:E,beforeAddRecordingEvent:T,beforeErrorSampling:M,onError:I,attachRawBodyFromRequest:A=!1}={}){this.name="Replay";const R=function({mask:e,unmask:t,block:n,unblock:r,ignore:o}){return{maskTextSelector:ry(e,[".sentry-mask","[data-sentry-mask]"]),unmaskTextSelector:ry(t,[]),blockSelector:ry(n,[".sentry-block","[data-sentry-block]","base","iframe[srcdoc]:not([src])"]),unblockSelector:ry(r,[]),ignoreSelector:ry(o,[".sentry-ignore","[data-sentry-ignore]",'input[type="file"]'])}}({mask:w,unmask:k,block:_,unblock:S,ignore:C});if(this._recordingOptions={maskAllInputs:l,maskAllText:c,maskInputOptions:{password:!0},maskTextFn:E,maskInputFn:E,maskAttributeFn:(e,t,n)=>function({el:e,key:t,maskAttributes:n,maskAllText:r,privacyOptions:o,value:i}){return r?o.unmaskTextSelector&&e.matches(o.unmaskTextSelector)?i:n.includes(t)||"value"===t&&"INPUT"===e.tagName&&["submit","button"].includes(e.getAttribute("type")||"")?i.replace(/[\S]/g,"*"):i:i}({maskAttributes:x,maskAllText:c,privacyOptions:R,key:e,value:t,el:n}),...R,slimDOMOptions:"all",inlineStylesheet:!0,inlineImages:!1,collectFonts:!0,errorHandler:e=>{try{e.__rrweb__=!0}catch{}},recordCrossOriginIframes:Boolean(a.recordCrossOriginIframes)},this._initialOptions={flushMinDelay:e,flushMaxDelay:t,minReplayDuration:Math.min(n,5e4),maxReplayDuration:Math.min(r,pf),stickySession:o,useCompression:i,workerUrl:s,blockAllMedia:d,maskAllInputs:l,maskAllText:c,mutationBreadcrumbLimit:u,mutationLimit:p,slowClickTimeout:h,slowClickIgnoreSelectors:f,networkDetailAllowUrls:g,networkDetailDenyUrls:m,networkCaptureBodies:v,networkRequestHeaders:uy(y),networkResponseHeaders:uy(b),beforeAddRecordingEvent:T,beforeErrorSampling:M,onError:I,attachRawBodyFromRequest:A,_experiments:a},this._initialOptions.blockAllMedia&&(this._recordingOptions.blockSelector=this._recordingOptions.blockSelector?`${this._recordingOptions.blockSelector},${oy}`:oy,this._recordingOptions.ignoreCSSAttributes=new Set(["background-image"])),this._isInitialized&&Kc())throw new Error("Multiple Sentry Session Replay instances are not supported");this._isInitialized=!0}get _isInitialized(){return ay}set _isInitialized(e){ay=e}afterAllSetup(e){Kc()&&!this._replay&&(this._initialOptions.attachRawBodyFromRequest&&function(){if("undefined"==typeof Request||cy)return;const e=Request;try{const t=function(t,n){const r=new e(t,n);return null!=n?.body&&(r[sy]=n.body),r};t.prototype=e.prototype,a.Request=t,cy=!0}catch{}}(),this._setup(e),this._initialize(e))}start(){this._replay&&this._replay.start()}startBuffering(){this._replay&&this._replay.startBuffering()}stop(){return this._replay?this._replay.stop({forceFlush:"session"===this._replay.recordingMode}):Promise.resolve()}flush(e){return this._replay?this._replay.isEnabled()?this._replay.sendBufferedReplayOrFlush(e):(this._replay.start(),Promise.resolve()):Promise.resolve()}getReplayId(e){if(this._replay?.isEnabled())return this._replay.getSessionId(e)}getRecordingMode(){if(this._replay?.isEnabled())return this._replay.recordingMode}_initialize(e){this._replay&&(this._maybeLoadFromReplayCanvasIntegration(e),this._replay.initializeSampling())}_setup(e){const t=function(e,t){const n=t.getOptions(),r={sessionSampleRate:0,errorSampleRate:0,...e},o=Ot(n.replaysSessionSampleRate),i=Ot(n.replaysOnErrorSampleRate);null==o&&null==i&&f(()=>{});null!=o&&(r.sessionSampleRate=o);null!=i&&(r.errorSampleRate=i);return r}(this._initialOptions,e);this._replay=new ny({options:t,recordingOptions:this._recordingOptions})}_maybeLoadFromReplayCanvasIntegration(e){try{const t=e.getIntegrationByName("ReplayCanvas");if(!t)return;this._replay._canvas=t.getOptions()}catch{}}}function uy(e){return[...iy,...e.map(e=>e.toLowerCase())]}function py(){const e=Ze();return e?.getIntegrationByName("Replay")}var hy=Object.defineProperty,fy=(e,t,n)=>((e,t,n)=>t in e?hy(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);class gy{constructor(){fy(this,"idNodeMap",new Map),fy(this,"nodeMetaMap",new WeakMap)}getId(e){if(!e)return-1;const t=this.getMeta(e)?.id;return t??-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach(e=>this.removeNodeFromMap(e))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function my(e,t,n=1/0,r=0){return e?e.nodeType!==e.ELEMENT_NODE||r>n?-1:t(e)?r:my(e.parentNode,t,n,r+1):-1}function vy(e,t){return n=>{const r=n;if(null===r)return!1;try{if(e)if("string"==typeof e){if(r.matches(`.${e}`))return!0}else if(function(e,t){for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}return!1}(r,e))return!0;return!(!t||!r.matches(t))}catch{return!1}}}let yy={map:{},getId:()=>-1,getNode:()=>null,removeNodeFromMap(){},has:()=>!1,reset(){}};function by(e,t,n,r,o=window){const i=o.Object.getOwnPropertyDescriptor(e,t);return o.Object.defineProperty(e,t,r?n:{set(e){Cy(()=>{n.set.call(this,e)},0),i&&i.set&&i.set.call(this,e)}}),()=>by(e,t,i||{},!0)}function wy(e,t,n){try{if(!(t in e))return()=>{};const r=e[t],o=n(r);return"function"==typeof o&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),e[t]=o,()=>{e[t]=r}}catch{return()=>{}}}function xy(e,t,n,r,o){if(!e)return!1;const i=function(e){if(!e)return null;try{return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}catch(e){return null}}(e);if(!i)return!1;const s=vy(t,n);if(!o){const e=r&&i.matches(r);return s(i)&&!e}const a=my(i,s);let c=-1;return!(a<0)&&(r&&(c=my(i,vy(null,r))),a>-1&&c<0||a<c)}"undefined"!=typeof window&&window.Proxy&&window.Reflect&&(yy=new Proxy(yy,{get:(e,t,n)=>Reflect.get(e,t,n)})),Date.now().toString();const ky={};function _y(e){const t=ky[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"==typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(e){}return ky[e]=r.bind(window)}function Sy(...e){return _y("requestAnimationFrame")(...e)}function Cy(...e){return _y("setTimeout")(...e)}var Ey=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Ey||{});let Ty;const My=e=>{if(!Ty)return e;return(...t)=>{try{return e(...t)}catch(e){if(Ty&&!0===Ty(e))return()=>{};throw e}}};for(var Iy="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ay="undefined"==typeof Uint8Array?[]:new Uint8Array(256),Ry=0;Ry<64;Ry++)Ay[Iy.charCodeAt(Ry)]=Ry;const Ly=new Map;const Py=(e,t,n)=>{if(!e||!Ny(e,t)&&"object"!=typeof e)return;const r=function(e,t){let n=Ly.get(e);return n||(n=new Map,Ly.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let o=r.indexOf(e);return-1===o&&(o=r.length,r.push(e)),o};function Oy(e,t,n){if(e instanceof Array)return e.map(e=>Oy(e,t,n));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){return{rr_type:e.constructor.name,base64:function(e){var t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t<r;t+=3)o+=Iy[n[t]>>2],o+=Iy[(3&n[t])<<4|n[t+1]>>4],o+=Iy[(15&n[t+1])<<2|n[t+2]>>6],o+=Iy[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o}(e)}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[Oy(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[Oy(e.data,t,n),e.width,e.height]}}if(Ny(e,t)||"object"==typeof e){return{rr_type:e.constructor.name,index:Py(e,t,n)}}return e}const Dy=(e,t,n)=>e.map(e=>Oy(e,t,n)),Ny=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter(e=>"function"==typeof t[e]);return Boolean(n.find(n=>e instanceof t[n]))};function By(e,t,n,r,o){const i=[];try{const s=wy(e.HTMLCanvasElement.prototype,"getContext",function(e){return function(i,...s){if(!xy(this,t,n,r,!0)){const e=function(e){return"experimental-webgl"===e?"webgl":e}(i);if("__context"in this||(this.__context=e),o&&["webgl","webgl2"].includes(e))if(s[0]&&"object"==typeof s[0]){const e=s[0];e.preserveDrawingBuffer||(e.preserveDrawingBuffer=!0)}else s.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[i,...s])}});i.push(s)}catch{}return()=>{i.forEach(e=>e())}}function jy(e,t,n,r,o,i,s,a){const c=[],l=Object.getOwnPropertyNames(e);for(const s of l)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(s))try{if("function"!=typeof e[s])continue;const l=wy(e,s,function(e){return function(...c){const l=e.apply(this,c);if(Py(l,a,this),"tagName"in this.canvas&&!xy(this.canvas,r,o,i,!0)){const e=Dy(c,a,this),r={type:t,property:s,args:e};n(this.canvas,r)}return l}});c.push(l)}catch{const r=by(e,s,{set(e){n(this.canvas,{type:t,property:s,args:[e],setter:!0})}});c.push(r)}return c}class $y{constructor(e){this.pendingCanvasMutations=new Map,this.rafStamps={latestId:0,invokeId:null},this.shadowDoms=new Set,this.windowsSet=new WeakSet,this.windows=[],this.restoreHandlers=[],this.frozen=!1,this.locked=!1,this.snapshotInProgressMap=new Map,this.worker=null,this.lastSnapshotTime=0,this.processMutation=(e,t)=>{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)};const{enableManualSnapshot:t,sampling:n="all",win:r,recordCanvas:o,errorHandler:i}=e;e.sampling=n,this.mutationCb=e.mutationCb,this.mirror=e.mirror,this.options=e,i&&(Ty=i),(o&&"number"==typeof n||t)&&(this.worker=this.initFPSWorker()),this.addWindow(r),t||My(()=>{o&&"all"===n&&(this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher()),o&&"number"==typeof n&&this.initCanvasFPSObserver()})()}reset(){this.pendingCanvasMutations.clear(),this.restoreHandlers.forEach(e=>{try{e()}catch(e){}}),this.restoreHandlers=[],this.windowsSet=new WeakSet,this.windows=[],this.shadowDoms=new Set,this.worker?.terminate(),this.worker=null,this.snapshotInProgressMap=new Map}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}addWindow(e){const{sampling:t="all",blockClass:n,blockSelector:r,unblockSelector:o,recordCanvas:i,enableManualSnapshot:s}=this.options;if(!this.windowsSet.has(e)){if(s)return this.windowsSet.add(e),void this.windows.push(new WeakRef(e));My(()=>{if(i&&"all"===t&&this.initCanvasMutationObserver(e,n,r,o),i&&"number"==typeof t){const t=By(e,n,r,o,!0);this.restoreHandlers.push(()=>{t()})}})(),this.windowsSet.add(e),this.windows.push(new WeakRef(e))}}addShadowRoot(e){this.shadowDoms.add(new WeakRef(e))}resetShadowRoots(){this.shadowDoms=new Set}snapshot(e,t){t?.skipRequestAnimationFrame?this.takeSnapshot(performance.now(),!0,e):Sy(t=>this.takeSnapshot(t,!0,e))}initFPSWorker(){const e=new Worker(function(){const e=new Blob(['for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="undefined"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s="";for(a=0;a<r;a+=3)s+=e[n[a]>>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+"=":r%3==1&&(s=s.substring(0,s.length-2)+"=="),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!("OffscreenCanvas"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+"-"+t;if("OffscreenCanvas"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext("2d");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return""}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext("bitmaprenderer"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:"low"});w?.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};']);return URL.createObjectURL(e)}());return e.onmessage=e=>{const t=e.data,{id:n}=t;if(this.snapshotInProgressMap.set(n,!1),!("base64"in t))return;const{base64:r,type:o,width:i,height:s}=t;this.mutationCb({id:n,type:Ey["2D"],commands:[{property:"clearRect",args:[0,0,i,s]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:r}],type:o}]},0,0,i,s]}]})},e}initCanvasFPSObserver(){let e;if(!this.windows.length&&!this.shadowDoms.size)return;const t=n=>{this.takeSnapshot(n,!1),e=Sy(t)};e=Sy(t),this.restoreHandlers.push(()=>{e&&cancelAnimationFrame(e)})}initCanvasMutationObserver(e,t,n,r){const o=By(e,t,n,r,!1),i=function(e,t,n,r,o){const i=[],s=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const a of s)try{if("function"!=typeof t.CanvasRenderingContext2D.prototype[a])continue;const s=wy(t.CanvasRenderingContext2D.prototype,a,function(i){return function(...s){return xy(this.canvas,n,r,o,!0)||Cy(()=>{const n=Dy(s,t,this);e(this.canvas,{type:Ey["2D"],property:a,args:n})},0),i.apply(this,s)}});i.push(s)}catch{const n=by(t.CanvasRenderingContext2D.prototype,a,{set(t){e(this.canvas,{type:Ey["2D"],property:a,args:[t],setter:!0})}});i.push(n)}return()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n,r),s=function(e,t,n,r,o){const i=[];return i.push(...jy(t.WebGLRenderingContext.prototype,Ey.WebGL,e,n,r,o,0,t)),void 0!==t.WebGL2RenderingContext&&i.push(...jy(t.WebGL2RenderingContext.prototype,Ey.WebGL2,e,n,r,o,0,t)),()=>{i.forEach(e=>e())}}(this.processMutation.bind(this),e,t,n,r,this.mirror);this.restoreHandlers.push(()=>{o(),i(),s()})}getCanvasElements(e,t,n){const r=[],o=o=>{o.querySelectorAll("canvas").forEach(o=>{xy(o,e,t,n,!0)||r.push(o)})};for(const e of this.windows){const t=e.deref();let n;try{n=t&&t.document}catch{}n&&o(n)}for(const e of this.shadowDoms){const t=e.deref();t&&o(t)}return r}takeSnapshot(e,t,n){const{sampling:r,blockClass:o,blockSelector:i,unblockSelector:s,dataURLOptions:a,maxCanvasSize:c}=this.options,l=1e3/("all"===r?2:r||2);if(this.lastSnapshotTime&&e-this.lastSnapshotTime<l)return!1;this.lastSnapshotTime=e;return(n?[n]:this.getCanvasElements(o,i,s)).forEach(e=>{const n=this.mirror.getId(e);if(this.mirror.hasNode(e)&&e.width&&e.height&&!this.snapshotInProgressMap.get(n)){if(this.snapshotInProgressMap.set(n,!0),!t&&["webgl","webgl2"].includes(e.__context)){const t=e.getContext(e.__context);!1===t?.getContextAttributes()?.preserveDrawingBuffer&&t.clear(t.COLOR_BUFFER_BIT)}createImageBitmap(e).then(t=>{this.worker?.postMessage({id:n,bitmap:t,width:e.width,height:e.height,dataURLOptions:a,maxCanvasSize:c},[t])}).catch(e=>{My(()=>{throw this.snapshotInProgressMap.delete(n),e})()})}}),!0}startPendingCanvasMutationFlusher(){Sy(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,Sy(e)};Sy(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)}),Sy(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const r=n.map(e=>{const{type:t,...n}=e;return n}),{type:o}=n[0];this.mutationCb({id:t,type:o,commands:r}),this.pendingCanvasMutations.delete(e)}}try{if(2!==Array.from([1],e=>2*e)[0]){const e=document.createElement("iframe");document.body.appendChild(e),Array.from=e.contentWindow?.Array.from||Array.from,document.body.removeChild(e)}}catch(e){}var zy;new gy,function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"}(zy||(zy={}));const Fy={low:{sampling:{canvas:1},dataURLOptions:{type:"image/webp",quality:.25}},medium:{sampling:{canvas:2},dataURLOptions:{type:"image/webp",quality:.4}},high:{sampling:{canvas:4},dataURLOptions:{type:"image/webp",quality:.5}}},Hy=1280,qy=(e={})=>{const[t,n]=e.maxCanvasSize||[],r={quality:e.quality||"medium",enableManualSnapshot:e.enableManualSnapshot,maxCanvasSize:[t?Math.min(t,Hy):Hy,n?Math.min(n,Hy):Hy]};let o,i;const s=new Promise(e=>i=e);return{name:"ReplayCanvas",getOptions(){const{quality:e,enableManualSnapshot:t,maxCanvasSize:n}=r;return{enableManualSnapshot:t,recordCanvas:!0,getCanvasManager:e=>{const r=new $y({...e,enableManualSnapshot:t,maxCanvasSize:n,errorHandler:e=>{try{"object"==typeof e&&(e.__rrweb__=!0)}catch{}}});return o=r,i(r),r},...Fy[e]||Fy.medium}},async snapshot(e,t){(o||await s).snapshot(e,t)}}};function Uy(e){try{return new URL(e,Pd.location.origin).href}catch{return}}function Wy(e){try{return new Headers(e)}catch{return}}const Vy=new WeakMap,Ky=new Map,Gy={traceFetch:!0,traceXHR:!0,enableHTTPTimings:!0,trackFetchStreamPerformance:!1};function Jy(e,t){const{traceFetch:n,traceXHR:r,trackFetchStreamPerformance:o,shouldCreateSpanForRequest:i,enableHTTPTimings:s,tracePropagationTargets:a,onRequestSpanStart:c,onRequestSpanEnd:l}={...Gy,...t},d="function"==typeof i?i:e=>!0,u=e=>function(e,t){const n=ne();if(n){let r,o;try{r=new URL(e,n),o=new URL(n).origin}catch{return!1}const i=r.origin===o;return t?xe(r.toString(),t)||i&&xe(r.pathname,t):i}{const n=!!e.match(/^\/(?!\/)/);return t?xe(e,t):n}}(e,a),p={},h=e.getOptions().propagateTraceparent;n&&(e.addEventProcessor(e=>("transaction"===e.type&&e.spans&&e.spans.forEach(e=>{if("http.client"===e.op){const t=Ky.get(e.span_id);t&&(e.timestamp=t/1e3,Ky.delete(e.span_id))}}),e)),o&&function(e){const t="fetch-body-resolved";A(t,e),R(t,()=>Fc(Hc))}(e=>{if(e.response){const t=Vy.get(e.response);t&&e.endTimestamp&&Ky.set(t,e.endTimestamp)}}),zc(e=>{const t=as(e,d,u,p,{propagateTraceparent:h,onRequestSpanEnd:l});if(e.response&&e.fetchData.__span&&Vy.set(e.response,e.fetchData.__span),t){const n=Uy(e.fetchData.url),r=n?qo(n).host:void 0;t.setAttributes({"http.url":n,"server.address":r}),s&&Yy(t),c?.(t,{headers:e.headers})}})),r&&Np(e=>{const t=function(e,t,n,r,o,i){const s=e.xhr,a=s?.[Dp];if(!s||s.__sentry_own_request__||!a)return;const{url:c,method:l}=a,d=sn()&&t(c);if(e.endTimestamp&&d){const t=s.__sentry_xhr_span_id__;if(!t)return;const n=r[t];return void(n&&void 0!==a.status_code&&(mt(n,a.status_code),n.end(),i?.(n,{headers:Wy(Hp(s)),error:e.error}),delete r[t]))}const u=Uy(c),p=qo(u||c),h=Uo(c),f=!!en(),g=d&&f?Un({name:`${l} ${h}`,attributes:{url:c,type:"xhr","http.method":l,"http.url":u,"server.address":p?.host,[it]:"auto.http.browser",[ot]:"http.client",...p?.search&&{"http.query":p?.search},...p?.hash&&{"http.fragment":p?.hash}}}):new yn;s.__sentry_xhr_span_id__=g.spanContext().spanId,r[s.__sentry_xhr_span_id__]=g,n(c)&&function(e,t,n){const{"sentry-trace":r,baggage:o,traceparent:i}=Yo({span:t,propagateTraceparent:n});r&&function(e,t,n,r){const o=e.__sentry_xhr_v3__?.request_headers;if(o?.["sentry-trace"]||!e.setRequestHeader)return;try{if(e.setRequestHeader("sentry-trace",t),r&&!o?.traceparent&&e.setRequestHeader("traceparent",r),n){const t=o?.baggage;t&&t.split(",").some(e=>e.trim().startsWith("sentry-"))||e.setRequestHeader("baggage",n)}}catch{}}(e,r,o,i)}(s,sn()&&f?g:void 0,o);const m=Ze();m&&m.emit("beforeOutgoingRequestSpan",g,e);return g}(e,d,u,p,h,l);t&&(s&&Yy(t),c?.(t,{headers:Wy(e.xhr.__sentry_xhr_v3__?.request_headers)}))})}function Yy(e){const{url:t}=Vt(e).data;if(!t||"string"!=typeof t)return;const n=Gu("resource",({entries:r})=>{r.forEach(r=>{(function(e){return"resource"===e.entryType&&"initiatorType"in e&&"string"==typeof e.nextHopProtocol&&("fetch"===e.initiatorType||"xmlhttprequest"===e.initiatorType)})(r)&&r.name.endsWith(t)&&(e.setAttributes(hp(r)),setTimeout(n))})})}const Xy="sentry_previous_trace",Qy="sentry.previous_trace";function Zy(e,{linkPreviousTrace:t,consistentTraceSampling:n}){const r="session-storage"===t;let o=r?function(){try{const e=Pd.sessionStorage?.getItem(Xy);return JSON.parse(e)}catch{return}}():void 0;e.on("spanStart",e=>{if(Zt(e)!==e)return;const t=Ge().getPropagationContext();o=function(e,t,n){const r=Vt(t);function o(){try{return Number(n.dsc?.sample_rate)??Number(r.data?.[nt])}catch{return 0}}const i={spanContext:t.spanContext(),startTimestamp:r.start_timestamp,sampleRate:o(),sampleRand:n.sampleRand};if(!e)return i;const s=e.spanContext;if(s.traceId===r.trace_id)return e;Date.now()/1e3-e.startTimestamp<=3600&&(Xp&&y.log(`Adding previous_trace \`${JSON.stringify(s)}\` link to span \`${JSON.stringify({op:r.op,...t.spanContext()})}\``),t.addLink({context:s,attributes:{[ft]:"previous_trace"}}),t.setAttribute(Qy,`${s.traceId}-${s.spanId}-${eb(s)?1:0}`));return i}(o,e,t),r&&function(e){try{Pd.sessionStorage.setItem(Xy,JSON.stringify(e))}catch(e){Xp&&y.warn("Could not store previous trace in sessionStorage",e)}}(o)});let i=!0;n&&e.on("beforeSampling",e=>{if(!o)return;const t=Ge(),n=t.getPropagationContext();i&&n.parentSpanId?i=!1:(t.setPropagationContext({...n,dsc:{...n.dsc,sample_rate:String(o.sampleRate),sampled:String(eb(o.spanContext))},sampleRand:o.sampleRand}),e.parentSampled=eb(o.spanContext),e.parentSampleRate=o.sampleRate,e.spanAttributes={...e.spanAttributes,[rt]:o.sampleRate})})}function eb(e){return 1===e.traceFlags}const tb={...tr,instrumentNavigation:!0,instrumentPageLoad:!0,markBackgroundSpan:!0,enableLongTask:!0,enableLongAnimationFrame:!0,enableInp:!0,enableElementTiming:!0,ignoreResourceSpans:[],ignorePerformanceApiSpans:[],detectRedirects:!0,linkPreviousTrace:"in-memory",consistentTraceSampling:!1,enableReportPageLoaded:!1,_experiments:{},...Gy},nb=(e={})=>{const t={name:void 0,source:void 0},n=Pd.document,{enableInp:r,enableElementTiming:o,enableLongTask:i,enableLongAnimationFrame:s,_experiments:{enableInteractions:c,enableStandaloneClsSpans:l,enableStandaloneLcpSpans:d},beforeStartSpan:u,idleTimeout:p,finalTimeout:h,childSpanTimeout:f,markBackgroundSpan:g,traceFetch:m,traceXHR:v,trackFetchStreamPerformance:b,shouldCreateSpanForRequest:w,enableHTTPTimings:x,ignoreResourceSpans:k,ignorePerformanceApiSpans:_,instrumentPageLoad:S,instrumentNavigation:C,detectRedirects:E,linkPreviousTrace:T,consistentTraceSampling:M,enableReportPageLoaded:I,onRequestSpanStart:A,onRequestSpanEnd:R}={...tb,...e};let L,P,O;function D(e,r,o=!0){const i="pageload"===r.op,s=r.name,a=u?u(r):r,c=a.attributes||{};if(s!==a.name&&(c[tt]="custom",a.attributes=c),!o){const e=Me();return void Un({...a,startTime:e}).end(e)}t.name=a.name,t.source=c[tt];const g=nr(a,{idleTimeout:p,finalTimeout:h,childSpanTimeout:f,disableAutoFinish:i,beforeSpanEnd:t=>{L?.(),wp(t,{recordClsOnPageloadSpan:!l,recordLcpOnPageloadSpan:!d,ignoreResourceSpans:k,ignorePerformanceApiSpans:_}),cb(e,void 0);const n=Ge(),r=n.getPropagationContext();n.setPropagationContext({...r,traceId:g.spanContext().traceId,sampled:Kt(g),dsc:mn(t)}),i&&(O=void 0)},trimIdleSpanEndTimestamp:!I});function m(){n&&["interactive","complete"].includes(n.readyState)&&e.emit("idleSpanEnableAutoFinish",g)}i&&I&&(O=g),cb(e,g),i&&!I&&n&&(n.addEventListener("readystatechange",()=>{m()}),m())}return{name:"BrowserTracing",setup(e){if(on(),L=bp({recordClsStandaloneSpans:l||!1,recordLcpStandaloneSpans:d||!1,client:e}),r&&Vp(),o&&sp()&&Le()&&Gu("element",kp),s&&a.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&PerformanceObserver.supportedEntryTypes.includes("long-animation-frame")?new PerformanceObserver(e=>{const t=en();if(t)for(const n of e.getEntries()){if(!n.scripts[0])continue;const e=ap(Le()+n.startTime),{start_timestamp:r,op:o}=Vt(t);if("navigation"===o&&r&&e<r)continue;const i=ap(n.duration),s={[it]:"auto.ui.browser.metrics"},a=n.scripts[0],{invoker:c,invokerType:l,sourceURL:d,sourceFunctionName:u,sourceCharPosition:p}=a;s["browser.script.invoker"]=c,s["browser.script.invoker_type"]=l,d&&(s["code.filepath"]=d),u&&(s["code.function"]=u),-1!==p&&(s["browser.script.source_char_position"]=p),op(t,e,e+i,{name:"Main UI thread blocked",op:"ui.long-animation-frame",attributes:s})}}).observe({type:"long-animation-frame",buffered:!0}):i&&Gu("longtask",({entries:e})=>{const t=en();if(!t)return;const{op:n,start_timestamp:r}=Vt(t);for(const o of e){const e=ap(Le()+o.startTime),i=ap(o.duration);"navigation"===n&&r&&e<r||op(t,e,e+i,{name:"Main UI thread blocked",op:"ui.long-task",attributes:{[it]:"auto.ui.browser.metrics"}})}}),c&&Gu("event",({entries:e})=>{const t=en();if(t)for(const n of e)if("click"===n.name){const e=ap(Le()+n.startTime),r=ap(n.duration),o={name:ee(n.target),op:`ui.interaction.${n.name}`,startTime:e,attributes:{[it]:"auto.ui.browser.metrics"}},i=re(n.target);i&&(o.attributes["ui.component_name"]=i),op(t,e,e+r,o)}}),E&&n){const e=()=>{P=Ae()};addEventListener("click",e,{capture:!0}),addEventListener("keydown",e,{capture:!0,passive:!0})}function t(){const t=ab(e);t&&!Vt(t).timestamp&&(Xp&&y.log(`[Tracing] Finishing current active span with op: ${Vt(t).op}`),t.setAttribute(st,"cancelled"),t.end())}e.on("startNavigationSpan",(n,r)=>{if(Ze()!==e)return;if(r?.isRedirect)return Xp&&y.warn("[Tracing] Detected redirect, navigation span will not be the root span, but a child span."),void D(e,{op:"navigation.redirect",...n},!1);P=void 0,t(),Je().setPropagationContext({traceId:Ne(),sampleRand:Math.random(),propagationSpanId:sn()?void 0:Be()});const o=Ge();o.setPropagationContext({traceId:Ne(),sampleRand:Math.random(),propagationSpanId:sn()?void 0:Be()}),o.setSDKProcessingMetadata({normalizedRequest:void 0}),D(e,{op:"navigation",...n,parentSpan:null,forceTransaction:!0})}),e.on("startPageLoadSpan",(n,r={})=>{if(Ze()!==e)return;t();const o=Nt(r.sentryTrace||ib("sentry-trace"),r.baggage||ib("baggage")),i=Ge();i.setPropagationContext(o),sn()||(i.getPropagationContext().propagationSpanId=Be()),i.setSDKProcessingMetadata({normalizedRequest:Bd()}),D(e,{op:"pageload",...n})}),e.on("endPageloadSpan",()=>{I&&O&&(O.setAttribute(st,"reportPageLoaded"),O.end())})},afterAllSetup(e){let n=ne();if("off"!==T&&Zy(e,{linkPreviousTrace:T,consistentTraceSampling:M}),Pd.location){if(S){const t=Le();rb(e,{name:Pd.location.pathname,startTime:t?t/1e3:void 0,attributes:{[tt]:"url",[it]:"auto.pageload.browser"}})}C&&Ap(({to:t,from:r})=>{if(void 0===r&&-1!==n?.indexOf(t))return void(n=void 0);n=void 0;const o=Fo(t),i=ab(e),s=i&&E&&function(e,t){const n=Vt(e),r=Me(),o=n.start_timestamp;if(r-o>lb)return!1;if(t&&r-t<=lb)return!1;return!0}(i,P);ob(e,{name:o?.pathname||Pd.location.pathname,attributes:{[tt]:"url",[it]:"auto.navigation.browser"}},{url:t,isRedirect:s})})}g&&(Pd.document?Pd.document.addEventListener("visibilitychange",()=>{const e=en();if(!e)return;const t=Zt(e);if(Pd.document.hidden&&t){const e="cancelled",{op:n,status:r}=Vt(t);Xp&&y.log(`[Tracing] Transaction: ${e} -> since tab moved to the background, op: ${n}`),r||t.setStatus({code:2,message:e}),t.setAttribute("sentry.cancellation_reason","document.hidden"),t.end()}}):Xp&&y.warn("[Tracing] Could not set up background tab detection due to lack of global document")),c&&function(e,t,n,r,o){const i=Pd.document;let s;const a=()=>{const i="ui.action.click",a=ab(e);if(a){const e=Vt(a).op;if(["navigation","pageload"].includes(e))return void(Xp&&y.warn(`[Tracing] Did not create ${i} span because a pageload or navigation span is in progress.`))}s&&(s.setAttribute(st,"interactionInterrupted"),s.end(),s=void 0),o.name?s=nr({name:o.name,op:i,attributes:{[tt]:o.source||"url"}},{idleTimeout:t,finalTimeout:n,childSpanTimeout:r}):Xp&&y.warn(`[Tracing] Did not create ${i} transaction because _latestRouteName is missing.`)};i&&addEventListener("click",a,{capture:!0})}(e,p,h,f,t),r&&Jp(),Jy(e,{traceFetch:m,traceXHR:v,trackFetchStreamPerformance:b,tracePropagationTargets:e.getOptions().tracePropagationTargets,shouldCreateSpanForRequest:w,enableHTTPTimings:x,onRequestSpanStart:A,onRequestSpanEnd:R})}}};function rb(e,t,n){e.emit("startPageLoadSpan",t,n),Ge().setTransactionName(t.name);const r=ab(e);return r&&e.emit("afterStartPageLoadSpan",r),r}function ob(e,t,n){const{url:r,isRedirect:o}=n||{};e.emit("beforeStartNavigationSpan",t,{isRedirect:o}),e.emit("startNavigationSpan",t,{isRedirect:o});const i=Ge();return i.setTransactionName(t.name),r&&!o&&i.setSDKProcessingMetadata({normalizedRequest:{...Bd(),url:r}}),ab(e)}function ib(e){const t=Pd.document,n=t?.querySelector(`meta[name=${e}]`);return n?.getAttribute("content")||void 0}const sb="_sentry_idleSpan";function ab(e){return e[sb]}function cb(e,t){ie(e,sb,t)}const lb=1.5;function db(e=Ze()){e?.emit("endPageloadSpan")}function ub(e){const t=en();if(t===e)return;const n=Ge();e.end=new Proxy(e.end,{apply:(e,r,o)=>($e(n,t),Reflect.apply(e,r,o))}),$e(n,e)}function pb(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function hb(e){return pb(e.getAllKeys())}function fb(e){let t;function n(){return null==t&&(t=function(e,t){const n=indexedDB.open(e);n.onupgradeneeded=()=>n.result.createObjectStore(t);const r=pb(n);return e=>r.then(n=>e(n.transaction(t,"readwrite").objectStore(t)))}(e.dbName||"sentry-offline",e.storeName||"queue")),t}return{push:async t=>{try{const r=await Tn(t);await function(e,t,n){return e(e=>hb(e).then(r=>{if(!(r.length>=n))return e.put(t,Math.max(...r,0)+1),pb(e.transaction)}))}(n(),r,e.maxQueueSize||30)}catch{}},unshift:async t=>{try{const r=await Tn(t);await function(e,t,n){return e(e=>hb(e).then(r=>{if(!(r.length>=n))return e.put(t,Math.min(...r,0)-1),pb(e.transaction)}))}(n(),r,e.maxQueueSize||30)}catch{}},shift:async()=>{try{const e=await function(e){return e(e=>hb(e).then(t=>{const n=t[0];if(null!=n)return pb(e.get(n)).then(t=>(e.delete(n),pb(e.transaction).then(()=>t)))}))}(n());if(e)return Mn(e)}catch{}}}}function gb(e=Yp){return function(e){return t=>{const n=e({...t,createStore:fb});return Pd.addEventListener("online",async e=>{await n.flush()}),n}}(No(e))}const mb=1e6,vb="window"in a&&a.window===a&&"undefined"==typeof importScripts,yb=String(0),bb=vb?"main":"worker",wb=Pd.navigator;let xb="",kb="",_b="",Sb=wb?.userAgent||"",Cb="";const Eb=wb?.language||wb?.languages?.[0]||"";const Tb=wb?.userAgentData;var Mb;function Ib(e){return function(e){return!("thread_metadata"in e)}(e)?function(e){let t,n=0;const r={samples:[],stacks:[],frames:[],thread_metadata:{[yb]:{name:bb}}},o=e.samples[0];if(!o)return r;const i=o.timestamp,s=Le(),a="number"==typeof performance.timeOrigin?performance.timeOrigin:s||0,c=a-(s||a);return e.samples.forEach((o,s)=>{if(void 0===o.stackId)return void 0===t&&(t=n,r.stacks[t]=[],n++),void(r.samples[s]={elapsed_since_start_ns:((o.timestamp+c-i)*mb).toFixed(0),stack_id:t,thread_id:yb});let a=e.stacks[o.stackId];const l=[];for(;a;){l.push(a.frameId);const t=e.frames[a.frameId];t&&void 0===r.frames[a.frameId]&&(r.frames[a.frameId]={function:t.name,abs_path:"number"==typeof t.resourceId?e.resources[t.resourceId]:void 0,lineno:t.line,colno:t.column}),a=void 0===a.parentId?void 0:e.stacks[a.parentId]}const d={elapsed_since_start_ns:((o.timestamp+c-i)*mb).toFixed(0),stack_id:n,thread_id:yb};r.stacks[n]=l,r.samples[s]=d,n++}),r}(e):e}function Ab(e,t,n,r){if("transaction"!==r.type)throw new TypeError("Profiling events may only be attached to transactions, this should never occur.");if(null==n)throw new TypeError(`Cannot construct profiling event envelope without a valid profile. Got ${n} instead.`);const o=function(e){const t=e.contexts?.trace?.trace_id;return"string"==typeof t&&32!==t.length&&Xp&&y.log(`[Profiling] Invalid traceId: ${t} on profiled event`),"string"!=typeof t?"":t}(r),i=Ib(n),s=t||("number"==typeof r.start_timestamp?1e3*r.start_timestamp:1e3*Ae()),a="number"==typeof r.timestamp?1e3*r.timestamp:1e3*Ae();return{event_id:e,timestamp:new Date(s).toISOString(),platform:"javascript",version:"1",release:r.release||"",environment:r.environment||un,runtime:{name:"javascript",version:Pd.navigator.userAgent},os:{name:xb,version:kb,build_number:Sb},device:{locale:Eb,model:Cb,manufacturer:Sb,architecture:_b,is_emulator:!1},debug_meta:{images:Pb(n.resources)},profile:i,transactions:[{name:r.transaction||"",id:r.event_id||ke(),trace_id:o,active_thread_id:yb,relative_start_ns:"0",relative_end_ns:(1e6*(a-s)).toFixed(0)}]}}function Rb(e,t,n){if(null==e)throw new TypeError(`Cannot construct profiling event envelope without a valid profile. Got ${e} instead.`);const r=function(e){const t=[];for(let n=0;n<e.frames.length;n++){const r=e.frames[n];r&&(t[n]={function:r.name,abs_path:"number"==typeof r.resourceId?e.resources[r.resourceId]:void 0,lineno:r.line,colno:r.column})}const n=[];for(let t=0;t<e.stacks.length;t++){const r=e.stacks[t];if(!r)continue;const o=[];let i=r;for(;i;)o.push(i.frameId),i=void 0===i.parentId?void 0:e.stacks[i.parentId];n[t]=o}const r=Le(),o="number"==typeof performance.timeOrigin?performance.timeOrigin:r||0,i=o-(r||o),s=[];for(let t=0;t<e.samples.length;t++){const n=e.samples[t];if(!n)continue;const r=(o+(n.timestamp-i))/1e3;s[t]={stack_id:n.stackId??0,thread_id:yb,timestamp:r}}return{frames:t,stacks:n,samples:s,thread_metadata:{[yb]:{name:bb}}}}(e),o=t.getOptions(),i=t.getSdkMetadata?.()?.sdk;return{chunk_id:ke(),client_sdk:{name:i?.name??"sentry.javascript.browser",version:i?.version??"0.0.0"},profiler_id:n||ke(),platform:"javascript",version:"2",release:o.release??"",environment:o.environment??"production",debug_meta:{images:Pb(e.resources)},profile:r}}function Lb(e){return"pageload"===Vt(e).op}function Pb(e){const t=Ze(),n=t?.getOptions(),r=n?.stackParser;return r?function(e,t){const n=pr(e);if(!n)return[];const r=[];for(const e of t)e&&n[e]&&r.push({type:"sourcemap",code_file:e,debug_id:n[e]});return r}(r,e):[]}function Ob(e){return"number"!=typeof e&&"boolean"!=typeof e||"number"==typeof e&&isNaN(e)?(Xp&&y.warn(`[Profiling] Invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(e)} of type ${JSON.stringify(typeof e)}.`),!1):!0===e||!1===e||(!(e<0||e>1)||(Xp&&y.warn(`[Profiling] Invalid sample rate. Sample rate must be between 0 and 1. Got ${e}.`),!1))}"object"==typeof(Mb=Tb)&&null!==Mb&&"getHighEntropyValues"in Mb&&Tb.getHighEntropyValues(["architecture","model","platform","platformVersion","fullVersionList"]).then(e=>{if(xb=e.platform||"",_b=e.architecture||"",Cb=e.model||"",kb=e.platformVersion||"",e.fullVersionList?.length){const t=e.fullVersionList[e.fullVersionList.length-1];Sb=`${t.brand} ${t.version}`}}).catch(e=>{});let Db=!1;function Nb(){const e=Pd.Profiler;if("function"!=typeof e)return void(Xp&&y.log("[Profiling] Profiling is not supported by this browser, Profiler interface missing on window object."));const t=Math.floor(3e3);try{return new e({sampleInterval:10,maxBufferSize:t})}catch(e){Xp&&(y.log("[Profiling] Failed to initialize the Profiling constructor, this is likely due to a missing 'Document-Policy': 'js-profiling' header."),y.log("[Profiling] Disabling profiling for current user session.")),Db=!0}}function Bb(e){if(Db)return Xp&&y.log("[Profiling] Profiling has been disabled for the duration of the current user session."),!1;if(!e.isRecording())return Xp&&y.log("[Profiling] Discarding profile because root span was not sampled."),!1;const t=Ze(),n=t?.getOptions();if(!n)return Xp&&y.log("[Profiling] Profiling disabled, no options found."),!1;const r=n.profilesSampleRate;if(!Ob(r))return Xp&&y.warn("[Profiling] Discarding profile because of invalid sample rate."),!1;if(!r)return Xp&&y.log("[Profiling] Discarding profile because a negative sampling decision was inherited or profileSampleRate is set to 0"),!1;return!!(!0===r||Math.random()<r)||(Xp&&y.log(`[Profiling] Discarding profile because it's not included in the random sample (sampling rate = ${Number(r)})`),!1)}function jb(e){return void 0!==e.profilesSampleRate}function $b(e,t,n,r){return function(e){return e.samples.length<2?(Xp&&y.log("[Profiling] Discarding profile because it contains less than 2 samples"),!1):!!e.frames.length||(Xp&&y.log("[Profiling] Discarding profile because it contains no frames"),!1)}(n)?Ab(e,t,n,r):null}const zb=new Map;function Fb(e){const t=zb.get(e);return t&&zb.delete(e),t}function Hb(e){let t;Lb(e)&&(t=1e3*Ae());const n=Nb();if(!n)return;Xp&&y.log(`[Profiling] started profiling span: ${Vt(e).description}`);const r=ke();let o=null;async function i(){if(e&&n){if(!o)return n.stop().then(t=>{s&&(Pd.clearTimeout(s),s=void 0),Xp&&y.log(`[Profiling] stopped profiling of span: ${Vt(e).description}`),t?(o=t,function(e,t){if(zb.set(e,t),zb.size>30){const e=zb.keys().next().value;void 0!==e&&zb.delete(e)}}(r,t)):Xp&&y.log(`[Profiling] profiler returned null profile for: ${Vt(e).description}`,"this may indicate an overlapping span or a call to stopProfiling with a profile title that was never started")}).catch(e=>{Xp&&y.log("[Profiling] error while stopping profiler:",e)});Xp&&y.log("[Profiling] profile for:",Vt(e).description,"already exists, returning early")}}Ge().setContext("profile",{profile_id:r,start_timestamp:t});let s=Pd.setTimeout(()=>{Xp&&y.log("[Profiling] max profile duration elapsed, stopping profiling for:",Vt(e).description),i()},3e4);const a=e.end.bind(e);e.end=function(){return e?(i().then(()=>{a()},()=>{a()}),e):a()}}class qb{constructor(){this._client=void 0,this._profiler=void 0,this._chunkTimer=void 0,this._profilerId=void 0,this._isRunning=!1,this._sessionSampled=!1,this._lifecycleMode=void 0,this._activeRootSpanIds=new Set,this._rootSpanTimeouts=new Map}initialize(e){const t=e.getOptions().profileLifecycle,n=function(e){if(Db)return Xp&&y.log("[Profiling] Profiling has been disabled for the duration of the current user session as the JS Profiler could not be started."),!1;if("trace"!==e.profileLifecycle&&"manual"!==e.profileLifecycle)return Xp&&y.warn("[Profiling] Session not sampled. Invalid `profileLifecycle` option."),!1;const t=e.profileSessionSampleRate;return Ob(t)?t?Math.random()<=t:(Xp&&y.log("[Profiling] Discarding profile because profileSessionSampleRate is not defined or set to 0"),!1):(Xp&&y.warn("[Profiling] Discarding profile because of invalid profileSessionSampleRate."),!1)}(e.getOptions());Xp&&y.log(`[Profiling] Initializing profiler (lifecycle='${t}').`),n||Xp&&y.log("[Profiling] Session not sampled. Skipping lifecycle profiler initialization."),this._profilerId=ke(),this._client=e,this._sessionSampled=n,this._lifecycleMode=t,"trace"===t&&this._setupTraceLifecycleListeners(e)}start(){"trace"!==this._lifecycleMode?this._isRunning?Xp&&y.warn("[Profiling] Profile session is already running, `uiProfiler.start()` is a no-op."):this._sessionSampled?this._beginProfiling():Xp&&y.warn("[Profiling] Session is not sampled, `uiProfiler.start()` is a no-op."):Xp&&y.warn('[Profiling] `profileLifecycle` is set to "trace". Calls to `uiProfiler.start()` are ignored in trace mode.')}stop(){"trace"!==this._lifecycleMode?this._isRunning?this._endProfiling():Xp&&y.warn("[Profiling] Profiler is not running, `uiProfiler.stop()` is a no-op."):Xp&&y.warn('[Profiling] `profileLifecycle` is set to "trace". Calls to `uiProfiler.stop()` are ignored in trace mode.')}notifyRootSpanActive(e){if("trace"!==this._lifecycleMode||!this._sessionSampled)return;const t=e.spanContext().spanId;if(!t||this._activeRootSpanIds.has(t))return;this._registerTraceRootSpan(t);const n=this._activeRootSpanIds.size;1===n&&(Xp&&y.log("[Profiling] Detected already active root span during setup. Active root spans now:",n),this._beginProfiling())}_beginProfiling(){if(!this._isRunning){if(this._isRunning=!0,Xp&&y.log("[Profiling] Started profiling with profiler ID:",this._profilerId),Ye().setContext("profile",{profiler_id:this._profilerId}),this._startProfilerInstance(),!this._profiler)return Xp&&y.log("[Profiling] Failed to start JS Profiler; stopping."),void this._resetProfilerInfo();this._startPeriodicChunking()}}_endProfiling(){this._isRunning&&(this._isRunning=!1,this._chunkTimer&&(clearTimeout(this._chunkTimer),this._chunkTimer=void 0),this._clearAllRootSpanTimeouts(),this._collectCurrentChunk().catch(e=>{Xp&&y.error("[Profiling] Failed to collect current profile chunk on `stop()`:",e)}),"manual"===this._lifecycleMode&&Ye().setContext("profile",{}))}_setupTraceLifecycleListeners(e){e.on("spanStart",e=>{if(!this._sessionSampled)return void(Xp&&y.log("[Profiling] Span not profiled because of negative sampling decision for user session."));if(e!==Zt(e))return;if(!e.isRecording())return void(Xp&&y.log("[Profiling] Discarding profile because root span was not sampled."));const t=e.spanContext().spanId;if(!t||this._activeRootSpanIds.has(t))return;this._registerTraceRootSpan(t);const n=this._activeRootSpanIds.size;1===n&&(Xp&&y.log(`[Profiling] Root span ${t} started. Profiling active while there are active root spans (count=${n}).`),this._beginProfiling())}),e.on("spanEnd",e=>{if(!this._sessionSampled)return;const t=e.spanContext().spanId;if(!t||!this._activeRootSpanIds.has(t))return;this._activeRootSpanIds.delete(t);const n=this._activeRootSpanIds.size;Xp&&y.log(`[Profiling] Root span with ID ${t} ended. Will continue profiling for as long as there are active root spans (currently: ${n}).`),0===n&&(this._collectCurrentChunk().catch(e=>{Xp&&y.error("[Profiling] Failed to collect current profile chunk on last `spanEnd`:",e)}),this._endProfiling())})}_resetProfilerInfo(){this._isRunning=!1,Ye().setContext("profile",{})}_clearAllRootSpanTimeouts(){this._rootSpanTimeouts.forEach(e=>clearTimeout(e)),this._rootSpanTimeouts.clear()}_registerTraceRootSpan(e){this._activeRootSpanIds.add(e);const t=setTimeout(()=>this._onRootSpanTimeout(e),3e5);this._rootSpanTimeouts.set(e,t)}_startProfilerInstance(){if(!1===this._profiler?.stopped)return;const e=Nb();e?this._profiler=e:Xp&&y.log("[Profiling] Failed to start JS Profiler.")}_startPeriodicChunking(){this._isRunning&&(this._chunkTimer=setTimeout(()=>{if(this._collectCurrentChunk().catch(e=>{Xp&&y.error("[Profiling] Failed to collect current profile chunk during periodic chunking:",e)}),this._isRunning){if(this._startProfilerInstance(),!this._profiler)return void this._resetProfilerInfo();this._startPeriodicChunking()}},6e4))}_onRootSpanTimeout(e){this._rootSpanTimeouts.has(e)&&(this._rootSpanTimeouts.delete(e),this._activeRootSpanIds.has(e)&&(Xp&&y.log(`[Profiling] Reached 5-minute timeout for root span ${e}. You likely started a manual root span that never called \`.end()\`.`),this._activeRootSpanIds.delete(e),0===this._activeRootSpanIds.size&&this._endProfiling()))}async _collectCurrentChunk(){const e=this._profiler;if(this._profiler=void 0,e)try{const t=Rb(await e.stop(),this._client,this._profilerId),n=function(e){try{if(!e||"object"!=typeof e)return{reason:"chunk is not an object"};const t=e=>"string"==typeof e&&/^[a-f0-9]{32}$/.test(e);if(!t(e.profiler_id))return{reason:"missing or invalid profiler_id"};if(!t(e.chunk_id))return{reason:"missing or invalid chunk_id"};if(!e.client_sdk)return{reason:"missing client_sdk metadata"};const n=e.profile;return n?Array.isArray(n.frames)&&n.frames.length?Array.isArray(n.stacks)&&n.stacks.length?Array.isArray(n.samples)&&n.samples.length?{valid:!0}:{reason:"profile has no samples"}:{reason:"profile has no stacks"}:{reason:"profile has no frames"}:{reason:"missing profile data"}}catch(e){return{reason:`unknown validation error: ${e}`}}}(t);if("reason"in n)return void(Xp&&y.log("[Profiling] Discarding invalid profile chunk (this is probably a bug in the SDK):",n.reason));this._sendProfileChunk(t),Xp&&y.log("[Profiling] Collected browser profile chunk.")}catch(e){Xp&&y.log("[Profiling] Error while stopping JS Profiler for chunk:",e)}}_sendProfileChunk(e){const t=this._client,n=Pn(t.getSdkMetadata?.()),r=t.getDsn(),o=t.getOptions().tunnel,i=kn({event_id:ke(),sent_at:(new Date).toISOString(),...n&&{sdk:n},...!!o&&r&&{dsn:It(r)}},[[{type:"profile_chunk"},e]]);t.sendEnvelope(i).then(null,e=>{Xp&&y.error("Error while sending profile chunk envelope:",e)})}}const Ub=()=>({name:"BrowserProfiling",setup(e){const t=e.getOptions(),n=new qb;if(jb(t)||t.profileLifecycle||(t.profileLifecycle="manual"),jb(t)&&!t.profilesSampleRate)return void(Xp&&y.log("[Profiling] Profiling disabled, no profiling options found."));const r=en(),o=r&&Zt(r);if(jb(t)&&void 0!==t.profileSessionSampleRate&&Xp&&y.warn("[Profiling] Both legacy profiling (`profilesSampleRate`) and UI profiling settings are defined. `profileSessionSampleRate` has no effect when legacy profiling is enabled."),jb(t))o&&Lb(o)&&Bb(o)&&Hb(o),e.on("spanStart",e=>{e===Zt(e)&&Bb(e)&&Hb(e)}),e.on("beforeEnvelope",e=>{if(!zb.size)return;const t=function(e){const t=[];return Sn(e,(e,n)=>{if("transaction"===n)for(let n=1;n<e.length;n++){const r=e[n];r?.contexts?.profile?.profile_id&&t.push(e[n])}}),t}(e);if(!t.length)return;const n=[];for(const e of t){const t=e?.contexts,r=t?.profile?.profile_id,o=t?.profile?.start_timestamp;if("string"!=typeof r){Xp&&y.log("[Profiling] cannot find profile for a span without a profile context");continue}if(!r){Xp&&y.log("[Profiling] cannot find profile for a span without a profile context");continue}t?.profile&&delete t.profile;const i=Fb(r);if(!i){Xp&&y.log(`[Profiling] Could not retrieve profile for span: ${r}`);continue}const s=$b(r,o,i,e);s&&n.push(s)}!function(e,t){if(!t.length)return e;for(const n of t)e[1].push([{type:"profile"},n])}(e,n)});else{const r=t.profileLifecycle;if(e.on("startUIProfiler",()=>n.start()),e.on("stopUIProfiler",()=>n.stop()),"manual"===r)n.initialize(e);else if("trace"===r){if(!sn(t))return void(Xp&&y.warn("[Profiling] `profileLifecycle` is 'trace' but tracing is disabled. Set a `tracesSampleRate` or `tracesSampler` to enable span tracing."));n.initialize(e),o&&n.notifyRootSpanActive(o),Pd.setTimeout(()=>{const e=en(),t=e&&Zt(e);t&&n.notifyRootSpanActive(t)},0)}}},processEvent:e=>function(e){return e?.contexts?.profile&&e.contexts?(e.contexts.trace={...e.contexts?.trace??{},data:{...e.contexts?.trace?.data??{},"thread.id":yb,"thread.name":bb}},e.spans?.forEach(e=>{e.data={...e.data||{},"thread.id":yb,"thread.name":bb}}),e):e}(e)}),Wb=()=>({name:"LaunchDarkly",processEvent:(e,t,n)=>ts(e)});function Vb(){return{name:"sentry-flag-auditor",type:"flag-used",synchronous:!0,method:(e,t,n)=>{ns(e,t.value),rs(e,t.value)}}}const Kb=()=>({name:"OpenFeature",processEvent:(e,t,n)=>ts(e)});class Gb{after(e,t){ns(t.flagKey,t.value),rs(t.flagKey,t.value)}error(e,t,n){ns(e.flagKey,e.defaultValue),rs(e.flagKey,e.defaultValue)}}const Jb=({featureFlagClientClass:e})=>({name:"Unleash",setupOnce(){oe(e.prototype,"isEnabled",Yb)},processEvent:(e,t,n)=>ts(e)});function Yb(e){return function(...t){const n=t[0],r=e.apply(this,t);return"string"==typeof n&&"boolean"==typeof r?(ns(n,r),rs(n,r)):Xp&&y.error(`[Feature Flags] UnleashClient.isEnabled does not match expected signature. arg0: ${n} (${typeof n}), result: ${r} (${typeof r})`),r}}const Xb=({growthbookClass:e})=>is({growthbookClass:e}),Qb=({featureFlagClient:e})=>({name:"Statsig",setup(t){e.on("gate_evaluation",e=>{ns(e.gate.name,e.gate.value),rs(e.gate.name,e.gate.value)})},processEvent:(e,t,n)=>ts(e)});async function Zb(){const e=Ze();if(!e)return"no-client-active";if(!e.getDsn())return"no-dsn-configured";const t=e.getOptions().tunnel||"https://o447951.ingest.sentry.io/api/4509632503087104/envelope/?sentry_version=7&sentry_key=c1dfb07d783ad5325c245c1fd3725390&sentry_client=sentry.javascript.browser%2F1.33.7";try{await Kn(()=>fetch(t,{body:"{}",method:"POST",mode:"cors",credentials:"omit"}))}catch{return"sentry-unreachable"}}const ew=({worker:e})=>({name:"WebWorker",setupOnce:()=>{(Array.isArray(e)?e:[e]).forEach(e=>tw(e))},addWorker:e=>tw(e)});function tw(e){e.addEventListener("message",e=>{(function(e){if(!K(e)||!0!==e._sentryMessage)return!1;const t="_sentryDebugIds"in e,n="_sentryModuleMetadata"in e,r="_sentryWorkerError"in e;if(!t&&!n&&!r)return!1;if(t&&!K(e._sentryDebugIds)&&void 0!==e._sentryDebugIds)return!1;if(n&&!K(e._sentryModuleMetadata)&&void 0!==e._sentryModuleMetadata)return!1;if(r&&!K(e._sentryWorkerError))return!1;return!0})(e.data)&&(e.stopImmediatePropagation(),e.data._sentryDebugIds&&(Xp&&y.log("Sentry debugId web worker message received",e.data),Pd._sentryDebugIds={...e.data._sentryDebugIds,...Pd._sentryDebugIds}),e.data._sentryModuleMetadata&&(Xp&&y.log("Sentry module metadata web worker message received",e.data),Pd._sentryModuleMetadata={...e.data._sentryModuleMetadata,...Pd._sentryModuleMetadata}),e.data._sentryWorkerError&&(Xp&&y.log("Sentry worker rejection message received",e.data._sentryWorkerError),function(e){const t=Ze();if(!t)return;const n=t.getOptions().stackParser,r=t.getOptions().attachStacktrace,o=e.reason,i=V(o)?Mh(o):Zd(n,o,void 0,r,!0);i.level="error",e.filename&&(i.contexts={...i.contexts,worker:{filename:e.filename}});kr(i,{originalException:o,mechanism:{handled:!1,type:"auto.browser.web_worker.onunhandledrejection"}}),Xp&&y.log("Captured worker unhandled rejection",o)}(e.data._sentryWorkerError)))})}function nw({self:e}){e.postMessage({_sentryMessage:!0,_sentryDebugIds:e._sentryDebugIds??void 0,_sentryModuleMetadata:e._sentryModuleMetadata??void 0}),e.addEventListener("unhandledrejection",t=>{const n={reason:Th(t),filename:e.location?.href};e.postMessage({_sentryMessage:!0,_sentryWorkerError:n}),Xp&&y.log("[Sentry Worker] Forwarding unhandled rejection to parent",n)}),Xp&&y.log("[Sentry Worker] Registered worker with unhandled rejection handling")}function rw(){}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};n.r(r),n.d(r,{Decoder:()=>Ot,Encoder:()=>Pt,PacketType:()=>Lt,isPacketValid:()=>jt,protocol:()=>Rt});const o="undefined"!=typeof window&&("localhost"===window.location.hostname||"127.0.0.1"===window.location.hostname||"3001"===window.location.port||window.location.search.includes("debug=true"));let i=null;const s=()=>{if(!i)try{i=n(725).Sentry}catch(e){}return i},a=(...e)=>{},c=(...e)=>{},l=(...e)=>{if(o);else{const t=s();t&&t.captureMessage(e.join(" "),"warning")}},d=(...e)=>{const t=s();t&&(e[0]instanceof Error?t.captureException(e[0]):t.captureMessage(e.join(" "),"error"))},u='/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",\n "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",\n "Courier New", monospace;\n --color-red-50: oklch(97.1% 0.013 17.38);\n --color-red-200: oklch(88.5% 0.062 18.334);\n --color-red-400: oklch(70.4% 0.191 22.216);\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-red-600: oklch(57.7% 0.245 27.325);\n --color-red-700: oklch(50.5% 0.213 27.518);\n --color-amber-50: oklch(98.7% 0.022 95.277);\n --color-amber-200: oklch(92.4% 0.12 95.746);\n --color-amber-400: oklch(82.8% 0.189 84.429);\n --color-amber-500: oklch(76.9% 0.188 70.08);\n --color-amber-700: oklch(55.5% 0.163 48.998);\n --color-yellow-50: oklch(98.7% 0.026 102.212);\n --color-yellow-200: oklch(94.5% 0.129 101.54);\n --color-yellow-700: oklch(55.4% 0.135 66.442);\n --color-green-400: oklch(79.2% 0.209 151.711);\n --color-green-600: oklch(62.7% 0.194 149.214);\n --color-emerald-50: oklch(97.9% 0.021 166.113);\n --color-emerald-200: oklch(90.5% 0.093 164.15);\n --color-emerald-500: oklch(69.6% 0.17 162.48);\n --color-emerald-600: oklch(59.6% 0.145 163.225);\n --color-emerald-700: oklch(50.8% 0.118 165.612);\n --color-sky-50: oklch(97.7% 0.013 236.62);\n --color-sky-200: oklch(90.1% 0.058 230.902);\n --color-sky-500: oklch(68.5% 0.169 237.323);\n --color-sky-700: oklch(50% 0.134 242.749);\n --color-blue-50: oklch(97% 0.014 254.604);\n --color-blue-200: oklch(88.2% 0.059 254.128);\n --color-blue-300: oklch(80.9% 0.105 251.813);\n --color-blue-700: oklch(48.8% 0.243 264.376);\n --color-indigo-200: oklch(87% 0.065 274.039);\n --color-indigo-700: oklch(45.7% 0.24 277.023);\n --color-violet-50: oklch(96.9% 0.016 293.756);\n --color-violet-200: oklch(89.4% 0.057 293.283);\n --color-violet-500: oklch(60.6% 0.25 292.717);\n --color-violet-700: oklch(49.1% 0.27 292.581);\n --color-rose-50: oklch(96.9% 0.015 12.422);\n --color-rose-200: oklch(89.2% 0.058 10.001);\n --color-rose-700: oklch(51.4% 0.222 16.935);\n --color-slate-500: oklch(55.4% 0.046 257.417);\n --color-gray-50: oklch(98.5% 0.002 247.839);\n --color-gray-100: oklch(96.7% 0.003 264.542);\n --color-gray-200: oklch(92.8% 0.006 264.531);\n --color-gray-400: oklch(70.7% 0.022 261.325);\n --color-gray-600: oklch(44.6% 0.03 256.802);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-neutral-50: oklch(98.5% 0 0);\n --color-neutral-200: oklch(92.2% 0 0);\n --color-neutral-700: oklch(37.1% 0 0);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-xs: 20rem;\n --container-sm: 24rem;\n --container-lg: 32rem;\n --container-2xl: 42rem;\n --container-6xl: 72rem;\n --container-7xl: 80rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --leading-snug: 1.375;\n --leading-normal: 1.5;\n --leading-relaxed: 1.625;\n --radius-xs: 0.125rem;\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --radius-2xl: 1rem;\n --ease-in: cubic-bezier(0.4, 0, 1, 1);\n --ease-out: cubic-bezier(0, 0, 0.2, 1);\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --animate-spin: spin 1s linear infinite;\n --blur-sm: 8px;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::-moz-placeholder {\n opacity: 1;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::-moz-placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {\n -webkit-appearance: button;\n -moz-appearance: button;\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-auto {\n pointer-events: auto;\n }\n .collapse {\n visibility: collapse;\n }\n .invisible {\n visibility: hidden;\n }\n .visible {\n visibility: visible;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-2 {\n top: calc(var(--spacing) * 2);\n }\n .top-3\\/5 {\n top: calc(3/5 * 100%);\n }\n .top-full {\n top: 100%;\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-6 {\n right: calc(var(--spacing) * 6);\n }\n .bottom-6 {\n bottom: calc(var(--spacing) * 6);\n }\n .bottom-24 {\n bottom: calc(var(--spacing) * 24);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .z-\\[10000\\] {\n z-index: 10000;\n }\n .z-\\[10001\\] {\n z-index: 10001;\n }\n .z-\\[999998\\] {\n z-index: 999998;\n }\n .z-\\[999999\\] {\n z-index: 999999;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .mx-auto {\n margin-inline: auto;\n }\n .mt-0\\.5 {\n margin-top: calc(var(--spacing) * 0.5);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .h-2 {\n height: calc(var(--spacing) * 2);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-4\\.5 {\n height: calc(var(--spacing) * 4.5);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n .h-24 {\n height: calc(var(--spacing) * 24);\n }\n .h-\\[95vh\\] {\n height: 95vh;\n }\n .h-\\[600px\\] {\n height: 600px;\n }\n .h-auto {\n height: auto;\n }\n .h-full {\n height: 100%;\n }\n .max-h-48 {\n max-height: calc(var(--spacing) * 48);\n }\n .max-h-\\[90vh\\] {\n max-height: 90vh;\n }\n .max-h-\\[95vh\\] {\n max-height: 95vh;\n }\n .max-h-\\[calc\\(80vh-8rem\\)\\] {\n max-height: calc(80vh - 8rem);\n }\n .max-h-\\[calc\\(100vh-8rem\\)\\] {\n max-height: calc(100vh - 8rem);\n }\n .max-h-full {\n max-height: 100%;\n }\n .min-h-\\[100px\\] {\n min-height: 100px;\n }\n .w-2 {\n width: calc(var(--spacing) * 2);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-14 {\n width: calc(var(--spacing) * 14);\n }\n .w-56 {\n width: calc(var(--spacing) * 56);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-auto {\n width: auto;\n }\n .w-full {\n width: 100%;\n }\n .w-xs {\n width: var(--container-xs);\n }\n .max-w-2xl {\n max-width: var(--container-2xl);\n }\n .max-w-6xl {\n max-width: var(--container-6xl);\n }\n .max-w-7xl {\n max-width: var(--container-7xl);\n }\n .max-w-\\[80\\%\\] {\n max-width: 80%;\n }\n .max-w-\\[calc\\(100vw-3rem\\)\\] {\n max-width: calc(100vw - 3rem);\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-sm {\n max-width: var(--container-sm);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .flex-1 {\n flex: 1;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .flex-shrink-0 {\n flex-shrink: 0;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .origin-\\[70\\%_70\\%\\] {\n transform-origin: 70% 70%;\n }\n .-translate-y-2\\/3 {\n --tw-translate-y: calc(calc(2/3 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .items-end {\n align-items: flex-end;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-3 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .-space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .divide-x {\n :where(& > :not(:last-child)) {\n --tw-divide-x-reverse: 0;\n border-inline-style: var(--tw-border-style);\n border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));\n border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n }\n }\n .divide-border {\n :where(& > :not(:last-child)) {\n border-color: var(--color-border);\n }\n }\n .self-end {\n align-self: flex-end;\n }\n .self-start {\n align-self: flex-start;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n .rounded-t-md {\n border-top-left-radius: var(--radius-md);\n border-top-right-radius: var(--radius-md);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n .border-4 {\n border-style: var(--tw-border-style);\n border-width: 4px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n .border-accent\\/30 {\n border-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n .border-border {\n border-color: var(--color-border);\n }\n .border-border\\/50 {\n border-color: var(--color-border);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-border) 50%, transparent);\n }\n }\n .border-gray-100 {\n border-color: var(--color-gray-100);\n }\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n .border-input {\n border-color: var(--color-input);\n }\n .border-primary {\n border-color: var(--color-primary);\n }\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n .border-t-transparent {\n border-top-color: transparent;\n }\n .bg-accent {\n background-color: var(--color-accent);\n }\n .bg-accent\\/20 {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 20%, transparent);\n }\n }\n .bg-amber-50 {\n background-color: var(--color-amber-50);\n }\n .bg-amber-500 {\n background-color: var(--color-amber-500);\n }\n .bg-background {\n background-color: var(--color-background);\n }\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n .bg-card {\n background-color: var(--color-card);\n }\n .bg-emerald-50 {\n background-color: var(--color-emerald-50);\n }\n .bg-emerald-500 {\n background-color: var(--color-emerald-500);\n }\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n .bg-gray-400 {\n background-color: var(--color-gray-400);\n }\n .bg-green-400 {\n background-color: var(--color-green-400);\n }\n .bg-muted {\n background-color: var(--color-muted);\n }\n .bg-muted\\/20 {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 20%, transparent);\n }\n }\n .bg-muted\\/50 {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n .bg-neutral-50 {\n background-color: var(--color-neutral-50);\n }\n .bg-popover {\n background-color: var(--color-popover);\n }\n .bg-primary {\n background-color: var(--color-primary);\n }\n .bg-primary\\/10 {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n .bg-red-500 {\n background-color: var(--color-red-500);\n }\n .bg-rose-50 {\n background-color: var(--color-rose-50);\n }\n .bg-sky-50 {\n background-color: var(--color-sky-50);\n }\n .bg-sky-500 {\n background-color: var(--color-sky-500);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-violet-50 {\n background-color: var(--color-violet-50);\n }\n .bg-violet-500 {\n background-color: var(--color-violet-500);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n .bg-linear-to-t {\n --tw-gradient-position: to top;\n @supports (background-image: linear-gradient(in lab, red, red)) {\n --tw-gradient-position: to top in oklab;\n }\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-transparent {\n --tw-gradient-from: transparent;\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-primary {\n --tw-gradient-to: var(--color-primary);\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .object-contain {\n -o-object-fit: contain;\n object-fit: contain;\n }\n .object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\n }\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * 0.5);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n .py-12 {\n padding-block: calc(var(--spacing) * 12);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-5 {\n padding-top: calc(var(--spacing) * 5);\n }\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-10 {\n padding-bottom: calc(var(--spacing) * 10);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .font-sans {\n font-family: var(--font-sans);\n }\n .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .text-\\[11px\\] {\n font-size: 11px;\n }\n .text-\\[15px\\] {\n font-size: 15px;\n }\n .leading-normal {\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n }\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .text-accent-foreground {\n color: var(--color-accent-foreground);\n }\n .text-amber-400 {\n color: var(--color-amber-400);\n }\n .text-amber-500 {\n color: var(--color-amber-500);\n }\n .text-amber-700 {\n color: var(--color-amber-700);\n }\n .text-blue-700 {\n color: var(--color-blue-700);\n }\n .text-card-foreground {\n color: var(--color-card-foreground);\n }\n .text-emerald-600 {\n color: var(--color-emerald-600);\n }\n .text-emerald-700 {\n color: var(--color-emerald-700);\n }\n .text-foreground {\n color: var(--color-foreground);\n }\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n .text-gray-600 {\n color: var(--color-gray-600);\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .text-gray-800 {\n color: var(--color-gray-800);\n }\n .text-green-400 {\n color: var(--color-green-400);\n }\n .text-green-600 {\n color: var(--color-green-600);\n }\n .text-indigo-700 {\n color: var(--color-indigo-700);\n }\n .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n .text-neutral-700 {\n color: var(--color-neutral-700);\n }\n .text-popover-foreground {\n color: var(--color-popover-foreground);\n }\n .text-primary {\n color: var(--color-primary);\n }\n .text-primary-foreground {\n color: var(--color-primary-foreground);\n }\n .text-primary-foreground\\/80 {\n color: var(--color-primary-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-primary-foreground) 80%, transparent);\n }\n }\n .text-red-400 {\n color: var(--color-red-400);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-red-700 {\n color: var(--color-red-700);\n }\n .text-rose-700 {\n color: var(--color-rose-700);\n }\n .text-sky-700 {\n color: var(--color-sky-700);\n }\n .text-slate-500 {\n color: var(--color-slate-500);\n }\n .text-violet-700 {\n color: var(--color-violet-700);\n }\n .text-white {\n color: var(--color-white);\n }\n .text-white\\/90 {\n color: color-mix(in srgb, #fff 90%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-white) 90%, transparent);\n }\n }\n .text-yellow-700 {\n color: var(--color-yellow-700);\n }\n .underline {\n text-decoration-line: underline;\n }\n .opacity-25 {\n opacity: 25%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-75 {\n opacity: 75%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xl {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-amber-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(92.4% 0.12 95.746) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-amber-200) 60%, transparent);\n }\n }\n .ring-emerald-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(90.5% 0.093 164.15) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-emerald-200) 60%, transparent);\n }\n }\n .ring-gray-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(92.8% 0.006 264.531) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-gray-200) 60%, transparent);\n }\n }\n .ring-indigo-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(87% 0.065 274.039) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-indigo-200) 60%, transparent);\n }\n }\n .ring-neutral-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(92.2% 0 0) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-neutral-200) 60%, transparent);\n }\n }\n .ring-red-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(88.5% 0.062 18.334) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-red-200) 60%, transparent);\n }\n }\n .ring-rose-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(89.2% 0.058 10.001) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-rose-200) 60%, transparent);\n }\n }\n .ring-sky-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(90.1% 0.058 230.902) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-sky-200) 60%, transparent);\n }\n }\n .ring-violet-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(89.4% 0.057 293.283) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-violet-200) 60%, transparent);\n }\n }\n .ring-yellow-200\\/60 {\n --tw-ring-color: color-mix(in srgb, oklch(94.5% 0.129 101.54) 60%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-yellow-200) 60%, transparent);\n }\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .backdrop-blur-sm {\n --tw-backdrop-blur: blur(var(--blur-sm));\n backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in {\n --tw-ease: var(--ease-in);\n transition-timing-function: var(--ease-in);\n }\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n .group-hover\\:translate-x-1 {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .group-hover\\:text-primary {\n &:is(:where(.group):hover *) {\n @media (hover: hover) {\n color: var(--color-primary);\n }\n }\n }\n .placeholder\\:text-gray-400 {\n &::-moz-placeholder {\n color: var(--color-gray-400);\n }\n &::placeholder {\n color: var(--color-gray-400);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n }\n .hover\\:scale-105 {\n &:hover {\n @media (hover: hover) {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n .hover\\:scale-\\[1\\.01\\] {\n &:hover {\n @media (hover: hover) {\n scale: 1.01;\n }\n }\n }\n .hover\\:border-blue-300 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-blue-300);\n }\n }\n }\n .hover\\:border-primary\\/20 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n }\n }\n .hover\\:border-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n border-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-accent\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 80%, transparent);\n }\n }\n }\n }\n .hover\\:bg-background {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-background);\n }\n }\n }\n .hover\\:bg-destructive\\/10 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 10%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n }\n }\n }\n .hover\\:bg-muted\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/50 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-red-600 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-red-600);\n }\n }\n }\n .hover\\:text-destructive {\n &:hover {\n @media (hover: hover) {\n color: var(--color-destructive);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--color-foreground);\n }\n }\n }\n .hover\\:no-underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: none;\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-80 {\n &:hover {\n @media (hover: hover) {\n opacity: 80%;\n }\n }\n }\n .hover\\:shadow-lg {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-md {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .hover\\:shadow-xl {\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n .focus\\:border-transparent {\n &:focus {\n border-color: transparent;\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-primary {\n &:focus {\n --tw-ring-color: var(--color-primary);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--color-ring);\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-ring {\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n }\n }\n .focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .sm\\:text-sm {\n @media (width >= 40rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .md\\:grid-cols-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n .\\[\\&_img\\]\\:size-12 {\n & img {\n width: calc(var(--spacing) * 12);\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_img\\]\\:shrink-0 {\n & img {\n flex-shrink: 0;\n }\n }\n .\\[\\&_img\\]\\:rounded-full {\n & img {\n border-radius: calc(infinity * 1px);\n }\n }\n .\\[\\&_img\\]\\:object-cover {\n & img {\n -o-object-fit: cover;\n object-fit: cover;\n }\n }\n .\\[\\&_img\\]\\:ring-2 {\n & img {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .\\[\\&_img\\]\\:ring-background {\n & img {\n --tw-ring-color: var(--color-background);\n }\n }\n .\\[\\&\\[aria-selected\\=\\\'true\\\'\\]\\]\\:bg-primary {\n &[aria-selected=\'true\'] {\n background-color: var(--color-primary);\n }\n }\n .\\[\\&\\[aria-selected\\=\\\'true\\\'\\]\\]\\:text-primary-foreground {\n &[aria-selected=\'true\'] {\n color: var(--color-primary-foreground);\n }\n }\n .\\[\\&\\[aria-selected\\=\\\'true\\\'\\]\\]\\:shadow-sm {\n &[aria-selected=\'true\'] {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n}\n:root {\n --radius: 0.625rem;\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n --sidebar-width: 16rem;\n --sidebar-mobile-width: 18rem;\n --scrollbar-track: transparent;\n --scrollbar-thumb: rgba(0, 0, 0, 0.3);\n --scrollbar-width: 6px;\n --scrollbar-radius: 6px;\n --chevron-down-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.556 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --chevron-down-icon-50: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.556 0 0 / 0.5)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --check-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.556 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check-icon lucide-check"><path d="M20 6 9 17l-5-5"/></svg>\');\n}\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.269 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.922 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.371 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --border: oklch(1 0 0 / 10%);\n --input: oklch(1 0 0 / 15%);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.488 0.243 264.376);\n --chart-2: oklch(0.696 0.17 162.48);\n --chart-3: oklch(0.769 0.188 70.08);\n --chart-4: oklch(0.627 0.265 303.9);\n --chart-5: oklch(0.645 0.246 16.439);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(1 0 0 / 10%);\n --sidebar-ring: oklch(0.439 0 0);\n --scrollbar-thumb: rgba(255, 255, 255, 0.3);\n --chevron-down-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.708 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --chevron-down-icon-50: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.708 0 0 / 0.5)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down"><path d="m6 9 6 6 6-6"/></svg>\');\n --check-icon: url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="oklch(0.708 0 0)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check-icon lucide-check"><path d="M20 6 9 17l-5-5"/></svg>\');\n color-scheme: dark;\n}\n@layer base {\n * {\n border-color: var(--color-border);\n outline-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n html {\n scroll-behavior: smooth;\n }\n body {\n overscroll-behavior: none;\n background-color: var(--color-background);\n color: var(--color-foreground);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);\n &::-webkit-scrollbar {\n width: var(--scrollbar-width);\n }\n &::-webkit-scrollbar-track {\n background: var(--scrollbar-track);\n }\n &::-webkit-scrollbar-thumb {\n background: var(--scrollbar-thumb);\n border-radius: var(--scrollbar-radius);\n }\n }\n}\n@layer components {\n .alert, .alert-destructive {\n position: relative;\n display: grid;\n width: 100%;\n grid-template-columns: 0 1fr;\n align-items: flex-start;\n row-gap: calc(var(--spacing) * 0.5);\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n &:has(>svg) {\n grid-template-columns: calc(var(--spacing) * 4) 1fr;\n }\n &:has(>svg) {\n -moz-column-gap: calc(var(--spacing) * 3);\n column-gap: calc(var(--spacing) * 3);\n }\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &>svg {\n --tw-translate-y: calc(var(--spacing) * 0.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &>svg {\n color: currentcolor;\n }\n > h2, > h3, > h4, > h5, > h6, > strong, > [data-title] {\n grid-column-start: 2;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n min-height: calc(var(--spacing) * 4);\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n > section {\n grid-column-start: 2;\n display: grid;\n justify-items: start;\n gap: calc(var(--spacing) * 1);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n & p {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n ul {\n list-style-position: inside;\n list-style-type: disc;\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n }\n .alert {\n background-color: var(--color-card);\n color: var(--color-card-foreground);\n }\n .alert-destructive {\n background-color: var(--color-card);\n color: var(--color-destructive);\n &>svg {\n color: currentcolor;\n }\n > section {\n color: var(--color-destructive);\n }\n }\n}\n@layer components {\n .badge, .badge-primary, .badge-secondary, .badge-destructive, .badge-outline {\n display: inline-flex;\n width: -moz-fit-content;\n width: fit-content;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 1);\n overflow: hidden;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 0.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &>svg {\n pointer-events: none;\n }\n &>svg {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n .badge, .badge-primary {\n border-color: transparent;\n background-color: var(--color-primary);\n color: var(--color-primary-foreground);\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n }\n }\n .badge-secondary {\n border-color: transparent;\n background-color: var(--color-secondary);\n color: var(--color-secondary-foreground);\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 90%, transparent);\n }\n }\n }\n }\n }\n .badge-destructive {\n border-color: transparent;\n background-color: var(--color-destructive);\n color: var(--color-white);\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);\n }\n }\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n }\n }\n }\n }\n .badge-outline {\n color: var(--color-foreground);\n a& {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n }\n a& {\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n}\n@layer components {\n .btn, .btn-primary, .btn-secondary, .btn-outline, .btn-ghost, .btn-link, .btn-destructive, .btn-sm, .btn-sm-primary, .btn-sm-secondary, .btn-sm-outline, .btn-sm-ghost, .btn-sm-link, .btn-sm-destructive, .btn-lg, .btn-lg-primary, .btn-lg-secondary, .btn-lg-outline, .btn-lg-ghost, .btn-lg-link, .btn-lg-destructive, .btn-icon, .btn-icon-primary, .btn-icon-secondary, .btn-icon-outline, .btn-icon-ghost, .btn-icon-link, .btn-icon-destructive, .btn-sm-icon, .btn-sm-icon-primary, .btn-sm-icon-secondary, .btn-sm-icon-outline, .btn-sm-icon-ghost, .btn-sm-icon-link, .btn-sm-icon-destructive, .btn-lg-icon, .btn-lg-icon-primary, .btn-lg-icon-secondary, .btn-lg-icon-outline, .btn-lg-icon-ghost, .btn-lg-icon-link, .btn-lg-icon-destructive {\n display: inline-flex;\n flex-shrink: 0;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-md);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .btn, .btn-primary, .btn-secondary, .btn-outline, .btn-ghost, .btn-link, .btn-destructive {\n height: calc(var(--spacing) * 9);\n gap: calc(var(--spacing) * 2);\n padding-inline: calc(var(--spacing) * 4);\n padding-block: calc(var(--spacing) * 2);\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .btn-icon, .btn-icon-primary, .btn-icon-secondary, .btn-icon-outline, .btn-icon-ghost, .btn-icon-link, .btn-icon-destructive {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .btn-sm, .btn-sm-primary, .btn-sm-secondary, .btn-sm-outline, .btn-sm-ghost, .btn-sm-link, .btn-sm-destructive {\n height: calc(var(--spacing) * 8);\n gap: calc(var(--spacing) * 1.5);\n padding-inline: calc(var(--spacing) * 3);\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .btn-sm-icon, .btn-sm-icon-primary, .btn-sm-icon-secondary, .btn-sm-icon-outline, .btn-sm-icon-ghost, .btn-sm-icon-link, .btn-sm-icon-destructive {\n width: calc(var(--spacing) * 8);\n height: calc(var(--spacing) * 8);\n }\n .btn-lg, .btn-lg-primary, .btn-lg-secondary, .btn-lg-outline, .btn-lg-ghost, .btn-lg-link, .btn-lg-destructive {\n height: calc(var(--spacing) * 10);\n gap: calc(var(--spacing) * 2);\n padding-inline: calc(var(--spacing) * 6);\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .btn-lg-icon, .btn-lg-icon-primary, .btn-lg-icon-secondary, .btn-lg-icon-outline, .btn-lg-icon-ghost, .btn-lg-icon-link, .btn-lg-icon-destructive {\n width: calc(var(--spacing) * 10);\n height: calc(var(--spacing) * 10);\n }\n .btn, .btn-primary, .btn-sm, .btn-sm-primary, .btn-lg, .btn-lg-primary, .btn-icon, .btn-icon-primary, .btn-sm-icon, .btn-sm-icon-primary, .btn-lg-icon, .btn-lg-icon-primary {\n background-color: var(--color-primary);\n color: var(--color-primary-foreground);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n &[aria-pressed=\'true\'] {\n background-color: var(--color-primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-primary) 90%, transparent);\n }\n }\n }\n .btn-secondary, .btn-sm-secondary, .btn-lg-secondary, .btn-icon-secondary, .btn-sm-icon-secondary, .btn-lg-icon-secondary {\n background-color: var(--color-secondary);\n color: var(--color-secondary-foreground);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-secondary) 80%, transparent);\n }\n }\n }\n .btn-outline, .btn-sm-outline, .btn-lg-outline, .btn-icon-outline, .btn-sm-icon-outline, .btn-lg-icon-outline {\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-background);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:is(.dark *) {\n border-color: var(--color-input);\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n &:is(.dark *) {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .btn-ghost, .btn-sm-ghost, .btn-lg-ghost, .btn-icon-ghost, .btn-sm-icon-ghost, .btn-lg-icon-ghost {\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n &:is(.dark *) {\n background-color: var(--color-accent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n }\n }\n .btn-link, .btn-sm-link, .btn-lg-link, .btn-icon-link, .btn-sm-icon-link, .btn-lg-icon-link {\n color: var(--color-primary);\n text-underline-offset: 4px;\n &:hover, &[aria-pressed=\'true\'] {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n }\n .btn-destructive, .btn-sm-destructive, .btn-lg-destructive, .btn-icon-destructive, .btn-sm-icon-destructive, .btn-lg-icon-destructive {\n background-color: var(--color-destructive);\n color: var(--color-white);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 60%, transparent);\n }\n }\n &:is(.dark *) {\n &:focus-visible {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &:hover, &[aria-pressed=\'true\'] {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 90%, transparent);\n }\n &:is(.dark *) {\n background-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-destructive) 50%, transparent);\n }\n }\n }\n }\n}\n@layer components {\n .button-group {\n isolation: isolate;\n display: inline-flex;\n width: -moz-fit-content;\n width: fit-content;\n align-items: stretch;\n > *:focus-visible, > :is(.dropdown-menu, .popover, .select) > button:focus-visible {\n position: relative;\n z-index: 10;\n }\n > hr[role=\'separator\'] {\n margin: calc(var(--spacing) * 0);\n height: auto;\n width: calc(var(--spacing) * 0);\n flex-shrink: 0;\n align-self: stretch;\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n }\n &:not([data-orientation=\'vertical\']) {\n > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n border-left-style: var(--tw-border-style);\n border-left-width: 0px;\n }\n > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n }\n &[data-orientation=\'vertical\'] {\n flex-direction: column;\n > hr[role=\'separator\'] {\n height: 1px;\n width: auto;\n }\n > *:not(:first-child), > :is(.dropdown-menu, .popover, .select):not(:first-child) > button {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-top-style: var(--tw-border-style);\n border-top-width: 0px;\n }\n > *:not(:last-child), > :is(.dropdown-menu, .popover, .select):not(:last-child) > button {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n }\n}\n@layer components {\n .card {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 6);\n border-radius: var(--radius-xl);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-card);\n padding-block: calc(var(--spacing) * 6);\n color: var(--color-card-foreground);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n > header {\n container-type: inline-size;\n container-name: card-header;\n display: grid;\n grid-auto-rows: min-content;\n grid-template-rows: auto auto;\n align-items: flex-start;\n gap: calc(var(--spacing) * 1.5);\n padding-inline: calc(var(--spacing) * 6);\n &:has(*[data-slot="card-action"]) {\n grid-template-columns: 1fr auto;\n }\n &:is(.border-b) {\n padding-bottom: calc(var(--spacing) * 6);\n }\n h2 {\n --tw-leading: 1;\n line-height: 1;\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n p {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n }\n }\n > section {\n padding-inline: calc(var(--spacing) * 6);\n }\n > footer {\n display: flex;\n align-items: center;\n padding-inline: calc(var(--spacing) * 6);\n &:is(.border-t) {\n padding-top: calc(var(--spacing) * 6);\n }\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'checkbox\']:not([role=\'switch\']), .input[type=\'checkbox\']:not([role=\'switch\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: 4px;\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:checked {\n border-color: var(--color-primary);\n }\n &:checked {\n background-color: var(--color-primary);\n }\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &:checked {\n background-color: var(--color-primary);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &:checked:after {\n display: block;\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n background-color: var(--color-primary-foreground);\n --tw-content: \'\';\n content: var(--tw-content);\n -webkit-mask-image: var(--check-icon);\n mask-image: var(--check-icon);\n -webkit-mask-size: 0.875rem;\n mask-size: 0.875rem;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n }\n }\n}\n@layer components {\n details {\n &::details-content {\n block-size: 0;\n display: block;\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n }\n &[open]::details-content {\n block-size: auto;\n block-size: calc-size(auto, size);\n opacity: 100%;\n }\n summary {\n display: inline-flex;\n cursor: pointer;\n align-items: center;\n }\n }\n details > summary::-webkit-details-marker {\n display: none;\n }\n}\n@layer components {\n .command-dialog {\n inset-block: calc(var(--spacing) * 0);\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n &:is([open],:popover-open) {\n opacity: 100%;\n &::backdrop {\n opacity: 100%;\n }\n > * {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n @starting-style {\n opacity: 0%;\n &::backdrop {\n opacity: 0%;\n }\n > * {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n &::backdrop {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n }\n > * {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: 50;\n display: flex;\n max-height: min(640px, calc(100% - 2rem));\n width: 100%;\n max-width: calc(100% - 2rem);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n flex-direction: column;\n overflow: hidden;\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-background);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n > button, > form[method=\'dialog\'] {\n position: absolute;\n top: calc(var(--spacing) * 4);\n right: calc(var(--spacing) * 4);\n }\n > button, > form[method=\'dialog\'] > button {\n border-radius: var(--radius-xs);\n opacity: 70%;\n --tw-ring-offset-color: var(--color-background);\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus {\n --tw-ring-color: var(--color-ring);\n }\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n &:disabled {\n pointer-events: none;\n }\n &[data-state="open"] {\n background-color: var(--color-accent);\n }\n &[data-state="open"] {\n color: var(--color-muted-foreground);\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n }\n .command {\n > header input {\n height: calc(var(--spacing) * 12);\n }\n [role=\'menu\'] {\n padding-inline: calc(var(--spacing) * 2);\n [role=\'menuitem\'] {\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 3);\n & svg {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n }\n [role=\'heading\'] {\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-muted-foreground);\n }\n }\n }\n }\n .command {\n > header {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n padding-inline: calc(var(--spacing) * 3);\n svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n opacity: 50%;\n }\n input {\n display: flex;\n height: calc(var(--spacing) * 10);\n width: 100%;\n border-radius: var(--radius-md);\n background-color: transparent;\n padding-block: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n }\n }\n [role=\'menu\'] {\n max-height: 300px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: calc(var(--spacing) * 1);\n [role=\'menuitem\'] {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-sm);\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &[aria-hidden="true"] {\n display: none;\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n & svg:not([class*=\'text-\']) {\n color: var(--color-muted-foreground);\n }\n &.active {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n }\n }\n [role=\'heading\'] {\n display: flex;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-muted-foreground);\n }\n [role=\'group\']:not(:has([role=\'menuitem\']:not([aria-hidden=\'true\']))) {\n display: none;\n }\n [role=\'separator\'] {\n margin-inline: calc(var(--spacing) * -1);\n margin-block: calc(var(--spacing) * 1);\n border-color: var(--color-border);\n }\n &:not(:has([role=\'menuitem\']:not([aria-hidden=\'true\'])))::before {\n margin: calc(var(--spacing) * -1);\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 6);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &[data-empty]:not(:has([role=\'menuitem\']:not([aria-hidden=\'true\'])))::before {\n --tw-content: attr(data-empty);\n content: var(--tw-content);\n }\n &:not([data-empty]):not(:has([role=\'menuitem\']:not([aria-hidden=\'true\'])))::before {\n --tw-content: \'No results found\';\n content: var(--tw-content);\n }\n }\n &:not([data-command-initialized]) [role=\'menuitem\'] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n &:has(> header input:not(:-moz-placeholder)) [role=\'separator\'] {\n display: none;\n }\n &:has(> header input:not(:placeholder-shown)) [role=\'separator\'] {\n display: none;\n }\n }\n}\n@layer components {\n .dialog {\n inset-block: calc(var(--spacing) * 0);\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n &:is([open],:popover-open) {\n opacity: 100%;\n &::backdrop {\n opacity: 100%;\n }\n > * {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n @starting-style {\n opacity: 0%;\n &::backdrop {\n opacity: 0%;\n }\n > * {\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n }\n }\n &::backdrop {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n transition-behavior: allow-discrete;\n }\n > * {\n position: fixed;\n top: 50%;\n left: 50%;\n z-index: 50;\n display: flex;\n max-height: calc(100% - 2rem);\n width: 100%;\n max-width: calc(100% - 2rem);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n flex-direction: column;\n gap: calc(var(--spacing) * 4);\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-background);\n padding: calc(var(--spacing) * 6);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n > header {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n text-align: center;\n @media (width >= 40rem) {\n text-align: left;\n }\n > h2 {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n --tw-leading: 1;\n line-height: 1;\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n > p {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n }\n }\n > section {\n margin-inline: calc(var(--spacing) * -6);\n flex: 1;\n padding-inline: calc(var(--spacing) * 6);\n }\n > footer {\n display: flex;\n flex-direction: column-reverse;\n gap: calc(var(--spacing) * 2);\n @media (width >= 40rem) {\n flex-direction: row;\n }\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n > button, > form[method=\'dialog\'] {\n position: absolute;\n top: calc(var(--spacing) * 4);\n right: calc(var(--spacing) * 4);\n }\n > button, > form[method=\'dialog\'] > button {\n border-radius: var(--radius-xs);\n opacity: 70%;\n --tw-ring-offset-color: var(--color-background);\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus {\n --tw-ring-color: var(--color-ring);\n }\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n &:disabled {\n pointer-events: none;\n }\n &[data-state="open"] {\n background-color: var(--color-accent);\n }\n &[data-state="open"] {\n color: var(--color-muted-foreground);\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n }\n }\n}\n@layer components {\n .dropdown-menu {\n position: relative;\n display: inline-flex;\n [data-popover] {\n padding: calc(var(--spacing) * 1);\n min-width: anchor-size(width);\n [role=\'menuitem\'], [role=\'menuitemcheckbox\'], [role=\'menuitemradio\'] {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-sm);\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &[aria-hidden="true"] {\n display: none;\n }\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n & svg {\n flex-shrink: 0;\n }\n & svg {\n color: var(--color-muted-foreground);\n }\n &:not([aria-disabled=\'true\']) {\n &:focus-visible {\n background-color: var(--color-accent);\n }\n &:focus-visible {\n color: var(--color-accent-foreground);\n }\n }\n &.active {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n }\n }\n [role=\'menu\'] [role=\'heading\'] {\n display: flex;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n [role=\'separator\'] {\n margin-inline: calc(var(--spacing) * -1);\n margin-block: calc(var(--spacing) * 1);\n border-color: var(--color-border);\n }\n }\n &:not([data-dropdown-menu-initialized]) [data-popover] {\n [role=\'menuitem\'], [role=\'menuitemcheckbox\'], [role=\'menuitemradio\'] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n }\n}\n@layer components {\n .fieldset {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 6);\n > legend {\n margin-bottom: calc(var(--spacing) * 3);\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .field {\n display: flex;\n width: 100%;\n flex-direction: column;\n gap: calc(var(--spacing) * 3);\n &[data-invalid="true"] {\n color: var(--color-destructive);\n }\n &>* {\n width: 100%;\n }\n &>.sr-only {\n width: auto;\n }\n h2, h3 {\n display: flex;\n width: -moz-fit-content;\n width: fit-content;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n [role="alert"] {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n color: var(--color-destructive);\n ul {\n margin-left: calc(var(--spacing) * 4);\n display: flex;\n list-style-type: disc;\n flex-direction: column;\n gap: calc(var(--spacing) * 1);\n }\n }\n section {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: calc(var(--spacing) * 1.5);\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n &[data-orientation=\'horizontal\'] {\n flex-direction: row;\n align-items: center;\n &:has(>section) {\n align-items: flex-start;\n }\n & p {\n text-wrap: balance;\n }\n &:has(>section) {\n &>[type=checkbox],[type=radio] {\n margin-top: 1px;\n }\n }\n &>label {\n flex: auto;\n }\n }\n }\n .fieldset legend + p, .field > p, .field section > p {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-leading: var(--leading-normal);\n line-height: var(--leading-normal);\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n color: var(--color-muted-foreground);\n &>a {\n text-decoration-line: underline;\n }\n &>a {\n text-underline-offset: 4px;\n }\n &>a:hover {\n color: var(--color-primary);\n }\n }\n .fieldset legend + p {\n margin-top: calc(var(--spacing) * -1.5);\n }\n .field > p {\n &:last-child {\n margin-top: calc(var(--spacing) * 0);\n }\n &:nth-last-child(2) {\n margin-top: calc(var(--spacing) * -1);\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'text\']:not(:is(.select [data-popover] > header input[role=\'combobox\'], .command > header input, .dialog > * > header input)), :is(.form, .field) input[type=\'email\'], :is(.form, .field) input[type=\'password\'], :is(.form, .field) input[type=\'number\'], :is(.form, .field) input[type=\'file\'], :is(.form, .field) input[type=\'tel\'], :is(.form, .field) input[type=\'url\'], :is(.form, .field) input[type=\'search\']:not(:is(.select [data-popover] > header input[role=\'combobox\'], .command > header input, .dialog > * > header input)), :is(.form, .field) input[type=\'date\'], :is(.form, .field) input[type=\'datetime-local\'], :is(.form, .field) input[type=\'month\'], :is(.form, .field) input[type=\'week\'], :is(.form, .field) input[type=\'time\'], .input[type=\'text\'], .input[type=\'email\'], .input[type=\'password\'], .input[type=\'number\'], .input[type=\'file\'], .input[type=\'tel\'], .input[type=\'url\'], .input[type=\'search\'], .input[type=\'date\'], .input[type=\'datetime-local\'], .input[type=\'month\'], .input[type=\'week\'], .input[type=\'time\'] {\n display: flex;\n height: calc(var(--spacing) * 9);\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n & *::-moz-selection {\n background-color: var(--color-primary);\n }\n & *::selection {\n background-color: var(--color-primary);\n }\n &::-moz-selection {\n background-color: var(--color-primary);\n }\n &::selection {\n background-color: var(--color-primary);\n }\n & *::-moz-selection {\n color: var(--color-primary-foreground);\n }\n & *::selection {\n color: var(--color-primary-foreground);\n }\n &::-moz-selection {\n color: var(--color-primary-foreground);\n }\n &::selection {\n color: var(--color-primary-foreground);\n }\n &::file-selector-button {\n display: inline-flex;\n }\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n &::file-selector-button {\n background-color: transparent;\n }\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n &::file-selector-button {\n color: var(--color-foreground);\n }\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n}\n@layer components {\n .kbd {\n pointer-events: none;\n display: inline-flex;\n height: calc(var(--spacing) * 5);\n width: -moz-fit-content;\n width: fit-content;\n min-width: calc(var(--spacing) * 5);\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 1);\n border-radius: var(--radius-sm);\n background-color: var(--color-muted);\n padding-inline: calc(var(--spacing) * 1);\n font-family: var(--font-sans);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-muted-foreground);\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n }\n}\n@layer components {\n :is(.form, .field) label, .label {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-leading: 1;\n line-height: 1;\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:is(:where(.peer):disabled ~ *) {\n pointer-events: none;\n }\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n &:has(>*:disabled), &:has(+*:disabled) {\n pointer-events: none;\n opacity: 50%;\n }\n }\n}\n@layer components {\n [data-popover] {\n visibility: visible;\n position: absolute;\n z-index: 50;\n width: -moz-max-content;\n width: max-content;\n min-width: 100%;\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n overflow-x: hidden;\n overflow-y: auto;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-popover);\n color: var(--color-popover-foreground);\n opacity: 100%;\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &[aria-hidden=\'true\'] {\n visibility: hidden;\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n opacity: 0%;\n &:not([data-side]), &[data-side=\'bottom\'] {\n --tw-translate-y: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &[data-side=\'top\'] {\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &[data-side=\'left\'] {\n --tw-translate-x: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &[data-side=\'right\'] {\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n &:not([data-side]), &[data-side=\'bottom\'] {\n top: 100%;\n margin-top: calc(var(--spacing) * 1);\n }\n &[data-side=\'top\'] {\n bottom: 100%;\n margin-bottom: calc(var(--spacing) * 1);\n }\n &[data-side=\'left\'] {\n right: 100%;\n margin-right: calc(var(--spacing) * 1);\n }\n &[data-side=\'right\'] {\n left: 100%;\n margin-left: calc(var(--spacing) * 1);\n }\n &:not([data-side]), &[data-side=\'bottom\'], &[data-side=\'top\'] {\n &:not([data-align]), &[data-align=\'start\'] {\n left: calc(var(--spacing) * 0);\n }\n &[data-align=\'end\'] {\n right: calc(var(--spacing) * 0);\n }\n &[data-align=\'center\'] {\n left: calc(1/2 * 100%);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n &[data-side=\'left\'], &[data-side=\'right\'] {\n &:not([data-align]), &[data-align=\'start\'] {\n top: calc(var(--spacing) * 0);\n }\n &[data-align=\'end\'] {\n bottom: calc(var(--spacing) * 0);\n }\n &[data-align=\'center\'] {\n top: calc(1/2 * 100%);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n .popover {\n position: relative;\n display: inline-flex;\n [data-popover] {\n padding: calc(var(--spacing) * 4);\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'radio\'], .input[type=\'radio\'] {\n position: relative;\n aspect-ratio: 1 / 1;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n color: var(--color-primary);\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n &:checked:before {\n position: absolute;\n top: calc(1/2 * 100%);\n left: calc(1/2 * 100%);\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n border-radius: calc(infinity * 1px);\n background-color: var(--color-primary);\n --tw-content: \'\';\n content: var(--tw-content);\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'range\'], .input[type=\'range\'] {\n display: flex;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n align-items: center;\n padding: calc(var(--spacing) * 0);\n --tw-outline-style: none;\n outline-style: none;\n --slider-value: 20%;\n &:hover, &:focus-visible {\n &::-webkit-slider-thumb {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &::-moz-range-thumb {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &::-ms-thumb {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n &::-webkit-slider-thumb {\n margin-top: calc(var(--spacing) * -1.25);\n display: block;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -webkit-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-primary);\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &::-webkit-slider-runnable-track {\n height: calc(var(--spacing) * 1.5);\n width: 100%;\n -webkit-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value));\n }\n &::-moz-range-thumb {\n margin-top: calc(var(--spacing) * -1.25);\n display: block;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n -moz-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-primary);\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &::-moz-range-track {\n height: calc(var(--spacing) * 1.5);\n width: 100%;\n -moz-appearance: none;\n appearance: none;\n border-radius: calc(infinity * 1px);\n background: linear-gradient(to right, var(--primary) var(--slider-value), var(--muted) var(--slider-value));\n }\n &::-ms-thumb {\n margin-top: calc(var(--spacing) * -1.25);\n display: block;\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n appearance: none;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-primary);\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &::-ms-track {\n height: calc(var(--spacing) * 1.5);\n width: 100%;\n appearance: none;\n border-radius: calc(infinity * 1px);\n }\n &::-ms-fill-lower {\n border-radius: calc(infinity * 1px);\n background-color: var(--color-primary);\n }\n &::-ms-fill-upper {\n border-radius: calc(infinity * 1px);\n background-color: var(--color-muted);\n }\n }\n}\n@layer components {\n :is(.form, .field) select, select.select {\n display: flex;\n height: calc(var(--spacing) * 9);\n width: -moz-fit-content;\n width: fit-content;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--spacing) * 2);\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n background-color: transparent;\n padding-block: calc(var(--spacing) * 2);\n padding-right: calc(var(--spacing) * 9);\n padding-left: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n white-space: nowrap;\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 50%, transparent);\n }\n }\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n background-image: var(--chevron-down-icon-50);\n background-size: 1rem;\n background-position: center right 0.75rem;\n background-repeat: no-repeat;\n option, optgroup {\n background-color: var(--color-popover);\n color: var(--color-popover-foreground);\n }\n }\n *:not(select).select {\n position: relative;\n display: inline-flex;\n [data-popover] {\n padding: calc(var(--spacing) * 1);\n [role=\'option\'] {\n position: relative;\n display: flex;\n width: 100%;\n cursor: default;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-sm);\n padding-block: calc(var(--spacing) * 1.5);\n padding-right: calc(var(--spacing) * 7.5);\n padding-left: calc(var(--spacing) * 2);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &[aria-hidden="true"] {\n display: none;\n }\n & svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n & svg {\n flex-shrink: 0;\n }\n & svg {\n color: var(--color-muted-foreground);\n }\n &[aria-selected=\'true\'] {\n background-image: var(--check-icon);\n background-size: 0.875rem;\n background-position: center right 0.5rem;\n background-repeat: no-repeat;\n }\n &.active, &:focus-visible {\n background-color: var(--color-accent);\n color: var(--color-accent-foreground);\n }\n }\n [role=\'listbox\'] [role=\'heading\'] {\n display: flex;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: var(--color-muted-foreground);\n }\n [role=\'listbox\'] [role=\'group\']:not(:has([role=\'option\']:not([aria-hidden=\'true\']))) {\n display: none;\n }\n [role=\'separator\'] {\n margin-inline: calc(var(--spacing) * -1);\n margin-block: calc(var(--spacing) * 1);\n border-color: var(--color-border);\n }\n > header {\n margin-inline: calc(var(--spacing) * -1);\n margin-top: calc(var(--spacing) * -1);\n margin-bottom: calc(var(--spacing) * 1);\n display: flex;\n height: calc(var(--spacing) * 9);\n align-items: center;\n gap: calc(var(--spacing) * 2);\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n padding-inline: calc(var(--spacing) * 3);\n svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n opacity: 50%;\n }\n input[role=\'combobox\'] {\n display: flex;\n height: calc(var(--spacing) * 10);\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n flex: 1;\n border-radius: var(--radius-md);\n background-color: transparent;\n padding-block: calc(var(--spacing) * 3);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n }\n }\n [role=\'listbox\']:not(:has([data-value]:not([aria-hidden=\'true\'])))::before {\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: calc(var(--spacing) * 6);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n [role=\'listbox\'][data-empty]:not(:has([data-value]:not([aria-hidden=\'true\'])))::before {\n --tw-content: attr(data-empty);\n content: var(--tw-content);\n }\n [role=\'listbox\']:not([data-empty]):not(:has([data-value]:not([aria-hidden=\'true\'])))::before {\n --tw-content: \'No results found\';\n content: var(--tw-content);\n }\n }\n [data-popover]:has(> header input:not(:-moz-placeholder)) [role=\'separator\'] {\n display: none;\n }\n [data-popover]:has(> header input:not(:placeholder-shown)) [role=\'separator\'] {\n display: none;\n }\n &:not([data-select-initialized]) [data-popover] [role=\'option\'] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-accent-foreground);\n }\n }\n }\n }\n}\n@layer components {\n .sidebar {\n &:not([data-sidebar-initialized]) {\n @media (width < 48rem) {\n display: none;\n }\n }\n &:not([aria-hidden]), &[aria-hidden=false] {\n @media (width < 48rem) {\n position: fixed;\n }\n @media (width < 48rem) {\n inset: calc(var(--spacing) * 0);\n }\n @media (width < 48rem) {\n z-index: 40;\n }\n @media (width < 48rem) {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n }\n nav {\n position: fixed;\n inset-block: calc(var(--spacing) * 0);\n z-index: 50;\n display: flex;\n width: var(--sidebar-mobile-width);\n flex-direction: column;\n background-color: var(--color-sidebar);\n color: var(--color-sidebar-foreground);\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n @media (width >= 48rem) {\n width: var(--sidebar-width);\n }\n }\n & + * {\n transition-property: margin;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n &:not([data-side]), &[data-side=left] {\n nav {\n left: calc(var(--spacing) * 0);\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n & + * {\n position: relative;\n @media (width >= 48rem) {\n margin-left: var(--sidebar-width);\n }\n }\n &[aria-hidden=true] {\n nav {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n & + * {\n @media (width >= 48rem) {\n margin-left: calc(var(--spacing) * 0);\n }\n }\n }\n }\n &[data-side=right] {\n nav {\n right: calc(var(--spacing) * 0);\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n & + * {\n position: relative;\n @media (width >= 48rem) {\n margin-right: var(--sidebar-width);\n }\n }\n &[aria-hidden=true] {\n nav {\n --tw-translate-x: 100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n & + * {\n @media (width >= 48rem) {\n margin-right: calc(var(--spacing) * 0);\n }\n }\n }\n }\n nav {\n > header, > footer {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n padding: calc(var(--spacing) * 2);\n }\n [role=separator] {\n margin-inline: calc(var(--spacing) * 2);\n width: auto;\n border-color: var(--color-sidebar-border);\n }\n > section {\n display: flex;\n min-height: calc(var(--spacing) * 0);\n flex: 1;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n overflow-y: auto;\n > [role=group] {\n position: relative;\n display: flex;\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n flex-direction: column;\n padding: calc(var(--spacing) * 2);\n }\n h3 {\n display: flex;\n height: calc(var(--spacing) * 8);\n flex-shrink: 0;\n align-items: center;\n border-radius: var(--radius-md);\n padding-inline: calc(var(--spacing) * 2);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n color: var(--color-sidebar-foreground);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--color-sidebar-foreground) 70%, transparent);\n }\n --tw-ring-color: var(--color-sidebar-ring);\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n transition-property: margin,opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 200ms;\n transition-duration: 200ms;\n --tw-ease: linear;\n transition-timing-function: linear;\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &>svg {\n flex-shrink: 0;\n }\n }\n ul {\n display: flex;\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n flex-direction: column;\n gap: calc(var(--spacing) * 1);\n li {\n position: relative;\n > a, > details > summary {\n display: flex;\n width: 100%;\n align-items: center;\n gap: calc(var(--spacing) * 2);\n overflow: hidden;\n border-radius: var(--radius-md);\n padding: calc(var(--spacing) * 2);\n text-align: left;\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-ring-color: var(--color-sidebar-ring);\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n transition-property: width,height,padding;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-sidebar-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-sidebar-accent-foreground);\n }\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:active {\n background-color: var(--color-sidebar-accent);\n }\n &:active {\n color: var(--color-sidebar-accent-foreground);\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-disabled="true"] {\n pointer-events: none;\n }\n &[aria-disabled="true"] {\n opacity: 50%;\n }\n &>span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n &>svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &>svg {\n flex-shrink: 0;\n }\n &[aria-current=page] {\n background-color: var(--color-sidebar-accent);\n }\n &[aria-current=page] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n &[aria-current=page] {\n color: var(--color-sidebar-accent-foreground);\n }\n &:not([data-variant]), &[data-variant=default] {\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-sidebar-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-sidebar-accent-foreground);\n }\n }\n }\n &[data-variant=outline] {\n background-color: var(--color-background);\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-sidebar-accent);\n }\n }\n &:hover {\n @media (hover: hover) {\n color: var(--color-sidebar-accent-foreground);\n }\n }\n &:hover {\n @media (hover: hover) {\n --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n }\n &:not([data-size]), &[data-size=default] {\n height: calc(var(--spacing) * 8);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &[data-size=sm] {\n height: calc(var(--spacing) * 7);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n &[data-size=lg] {\n height: calc(var(--spacing) * 12);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n &:is(:where(.group)[data-collapsible="icon"] *) {\n padding: calc(var(--spacing) * 0) !important;\n }\n }\n }\n > details {\n &:not([open]) {\n > summary {\n &::after {\n rotate: calc(90deg * -1);\n }\n }\n }\n > summary {\n &::after {\n margin-left: auto;\n display: block;\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n background-color: var(--color-primary);\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-ease: linear;\n transition-timing-function: linear;\n --tw-content: \'\';\n content: var(--tw-content);\n -webkit-mask-image: var(--chevron-down-icon);\n mask-image: var(--chevron-down-icon);\n -webkit-mask-size: 1rem;\n mask-size: 1rem;\n -webkit-mask-position: center;\n mask-position: center;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n }\n }\n &::details-content {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n }\n }\n ul {\n display: flex;\n width: 100%;\n min-width: calc(var(--spacing) * 0);\n --tw-translate-x: 1px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n flex-direction: column;\n gap: calc(var(--spacing) * 1);\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n border-color: var(--color-sidebar-border);\n padding-inline: calc(var(--spacing) * 2.5);\n padding-block: calc(var(--spacing) * 0.5);\n }\n }\n }\n }\n }\n}\n@layer components {\n :is(.form, .field) input[type=\'checkbox\'][role=\'switch\'], .input[type=\'checkbox\'][role=\'switch\'] {\n display: inline-flex;\n height: 1.15rem;\n width: calc(var(--spacing) * 8);\n flex-shrink: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n align-items: center;\n border-radius: calc(infinity * 1px);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: transparent;\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n background-color: var(--color-input);\n &:checked {\n background-color: var(--color-primary);\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 80%, transparent);\n }\n }\n &:is(.dark *) {\n &:checked {\n background-color: var(--color-primary);\n }\n }\n &::before {\n content: var(--tw-content);\n pointer-events: none;\n }\n &::before {\n content: var(--tw-content);\n display: block;\n }\n &::before {\n content: var(--tw-content);\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &::before {\n content: var(--tw-content);\n border-radius: calc(infinity * 1px);\n }\n &::before {\n content: var(--tw-content);\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &::before {\n content: var(--tw-content);\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n &::before {\n --tw-content: \'\';\n content: var(--tw-content);\n }\n &::before {\n content: var(--tw-content);\n background-color: var(--color-background);\n }\n &:is(.dark *) {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-foreground);\n }\n }\n &:checked {\n &::before {\n content: var(--tw-content);\n margin-inline-start: calc(var(--spacing) * 3.5);\n }\n }\n &:is(.dark *) {\n &:checked {\n &::before {\n content: var(--tw-content);\n background-color: var(--color-primary-foreground);\n }\n }\n }\n }\n}\n@layer components {\n .table {\n width: 100%;\n caption-side: bottom;\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n thead {\n & tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n }\n tbody {\n & tr:last-child {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n tfoot {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n &>tr {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\n }\n }\n }\n tr {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:hover {\n @media (hover: hover) {\n background-color: var(--color-muted);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-muted) 50%, transparent);\n }\n }\n }\n }\n th {\n height: calc(var(--spacing) * 10);\n padding-inline: calc(var(--spacing) * 2);\n text-align: left;\n vertical-align: middle;\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n color: var(--color-foreground);\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n td {\n padding: calc(var(--spacing) * 2);\n vertical-align: middle;\n white-space: nowrap;\n &:has([role=checkbox]) {\n padding-right: calc(var(--spacing) * 0);\n }\n &>[role=checkbox] {\n --tw-translate-y: 2px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n caption {\n margin-top: calc(var(--spacing) * 4);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n color: var(--color-muted-foreground);\n }\n }\n}\n@layer components {\n .tabs {\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n [role=\'tablist\'] {\n display: inline-flex;\n height: calc(var(--spacing) * 9);\n width: -moz-fit-content;\n width: fit-content;\n align-items: center;\n justify-content: center;\n border-radius: var(--radius-lg);\n background-color: var(--color-muted);\n padding: 3px;\n color: var(--color-muted-foreground);\n [role=\'tab\'] {\n display: inline-flex;\n height: calc(100% - 1px);\n flex: 1;\n align-items: center;\n justify-content: center;\n gap: calc(var(--spacing) * 1.5);\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: transparent;\n padding-inline: calc(var(--spacing) * 2);\n padding-block: calc(var(--spacing) * 1);\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n white-space: nowrap;\n color: var(--color-foreground);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n &:focus-visible {\n outline-color: var(--color-ring);\n }\n &:disabled {\n pointer-events: none;\n }\n &:disabled {\n opacity: 50%;\n }\n &:is(.dark *) {\n color: var(--color-muted-foreground);\n }\n & svg {\n pointer-events: none;\n }\n & svg {\n flex-shrink: 0;\n }\n & svg:not([class*=\'size-\']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n &[aria-selected=\'true\'] {\n background-color: var(--color-background);\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n &:is(.dark *) {\n border-color: var(--color-input);\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n color: var(--color-foreground);\n }\n }\n }\n }\n [role=\'tabpanel\'] {\n flex: 1;\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n}\n@layer components {\n :is(.form, .field) textarea, .textarea {\n display: flex;\n field-sizing: content;\n min-height: calc(var(--spacing) * 16);\n width: 100%;\n border-radius: var(--radius-md);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--color-input);\n background-color: transparent;\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 2);\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-outline-style: none;\n outline-style: none;\n &::-moz-placeholder {\n color: var(--color-muted-foreground);\n }\n &::placeholder {\n color: var(--color-muted-foreground);\n }\n &:focus-visible {\n border-color: var(--color-ring);\n }\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n &:focus-visible {\n --tw-ring-color: var(--color-ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-ring) 50%, transparent);\n }\n }\n &:disabled {\n cursor: not-allowed;\n }\n &:disabled {\n opacity: 50%;\n }\n &[aria-invalid="true"] {\n border-color: var(--color-destructive);\n }\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 20%, transparent);\n }\n }\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n &:is(.dark *) {\n background-color: var(--color-input);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-input) 30%, transparent);\n }\n }\n &:is(.dark *) {\n &[aria-invalid="true"] {\n --tw-ring-color: var(--color-destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--color-destructive) 40%, transparent);\n }\n }\n }\n }\n}\n@layer components {\n .toaster {\n pointer-events: none;\n position: fixed;\n bottom: calc(var(--spacing) * 0);\n z-index: 50;\n display: flex;\n width: 100%;\n flex-direction: column-reverse;\n padding: calc(var(--spacing) * 4);\n @media (width >= 40rem) {\n max-width: calc(var(--spacing) * 90);\n }\n &:not([data-align]), &[data-align=\'end\'] {\n right: calc(var(--spacing) * 0);\n }\n &[data-align=\'start\'] {\n left: calc(var(--spacing) * 0);\n }\n &[data-align=\'center\'] {\n left: calc(1/2 * 100%);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .toast {\n pointer-events: auto;\n margin-top: calc(var(--spacing) * 4);\n display: grid;\n width: 100%;\n animation: toast-up 0.3s ease-in-out;\n grid-template-rows: 1fr;\n transition-property: grid-template-rows,opacity,margin;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-duration: 300ms;\n transition-duration: 300ms;\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n .toast-content {\n display: flex;\n align-items: center;\n gap: calc(var(--spacing) * 2.5);\n overflow: hidden;\n border-radius: var(--radius-lg);\n border-style: var(--tw-border-style);\n border-width: 1px;\n background-color: var(--color-popover);\n padding: calc(var(--spacing) * 3);\n font-size: 13px;\n color: var(--color-popover-foreground);\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n svg {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n flex-shrink: 0;\n }\n section {\n h2 {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n p {\n word-break: break-all;\n color: var(--color-muted-foreground);\n }\n }\n footer {\n margin-left: auto;\n display: flex;\n flex-direction: column;\n gap: calc(var(--spacing) * 2);\n [data-toast-action], [data-toast-cancel] {\n height: calc(var(--spacing) * 6);\n padding-inline: calc(var(--spacing) * 2.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n }\n &[aria-hidden=\'true\'] {\n margin: calc(var(--spacing) * 0);\n grid-template-rows: 0fr;\n overflow: hidden;\n border-style: var(--tw-border-style);\n border-width: 0px;\n padding: calc(var(--spacing) * 0);\n opacity: 0%;\n .toast-content {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n }\n }\n}\n@keyframes toast-up {\n from {\n opacity: 0;\n transform: translateY(100%);\n }\n}\n@layer components {\n [data-tooltip] {\n position: relative;\n &:before {\n pointer-events: none;\n visibility: hidden;\n position: absolute;\n z-index: 60;\n width: -moz-fit-content;\n width: fit-content;\n max-width: var(--container-xs);\n --tw-scale-x: 95%;\n --tw-scale-y: 95%;\n --tw-scale-z: 95%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border-radius: var(--radius-md);\n background-color: var(--color-primary);\n padding-inline: calc(var(--spacing) * 3);\n padding-block: calc(var(--spacing) * 1.5);\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n color: var(--color-primary-foreground);\n opacity: 0%;\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n --tw-content: attr(data-tooltip);\n content: var(--tw-content);\n }\n &:hover:before {\n visibility: visible;\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n opacity: 100%;\n }\n &:focus-visible:not(:hover):before {\n display: none;\n }\n &:not([data-side]), &[data-side=\'top\'] {\n &::before {\n content: var(--tw-content);\n bottom: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &[data-side=\'bottom\'] {\n &::before {\n content: var(--tw-content);\n top: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-top: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &:not([data-side]), &[data-side=\'top\'], &[data-side=\'bottom\'] {\n &[data-align=\'start\'] {\n &::before {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n &[data-align=\'end\'] {\n &::before {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n &:not([data-align]), &[data-align=\'center\'] {\n &::before {\n content: var(--tw-content);\n left: calc(1/2 * 100%);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n &[data-side=\'left\'] {\n &::before {\n content: var(--tw-content);\n right: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-right: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &[data-side=\'right\'] {\n &::before {\n content: var(--tw-content);\n left: 100%;\n }\n &::before {\n content: var(--tw-content);\n margin-left: calc(var(--spacing) * 1.5);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * -2);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n &:hover {\n @media (hover: hover) {\n &::before {\n content: var(--tw-content);\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n &[data-side=\'left\'], &[data-side=\'right\'] {\n &[data-align=\'start\'] {\n &::before {\n content: var(--tw-content);\n top: calc(var(--spacing) * 0);\n }\n }\n &[data-align=\'end\'] {\n &::before {\n content: var(--tw-content);\n bottom: calc(var(--spacing) * 0);\n }\n }\n &:not([data-align]), &[data-align=\'center\'] {\n &::before {\n content: var(--tw-content);\n top: calc(1/2 * 100%);\n }\n &::before {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n }\n }\n}\n:host {\n --radius: 0.65rem;\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n}\n:host(.dark) {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.205 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.922 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.269 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --border: oklch(1 0 0 / 10%);\n --input: oklch(1 0 0 / 15%);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.488 0.243 264.376);\n --chart-2: oklch(0.696 0.17 162.48);\n --chart-3: oklch(0.769 0.188 70.08);\n --chart-4: oklch(0.627 0.265 303.9);\n --chart-5: oklch(0.645 0.246 16.439);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(1 0 0 / 10%);\n --sidebar-ring: oklch(0.556 0 0);\n}\n@keyframes commentBoxSlideIn {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-10px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes popoverSlideIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.animate-comment-box-slide-in {\n animation: commentBoxSlideIn 0.2s ease-out forwards;\n}\n.animate-fade-in {\n animation: fadeIn 0.2s ease-out forwards;\n}\n.animate-popover-slide-in {\n animation: popoverSlideIn 0.25s ease-out forwards;\n}\n@keyframes wave {\n 0% {\n transform: rotate(0deg);\n }\n 10% {\n transform: rotate(14deg);\n }\n 20% {\n transform: rotate(-8deg);\n }\n 30% {\n transform: rotate(14deg);\n }\n 40% {\n transform: rotate(-4deg);\n }\n 50% {\n transform: rotate(10deg);\n }\n 60% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n}\n.animate-wave {\n animation: wave 2.5s ease-in-out infinite;\n}\n.ff-chat-button {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border: none;\n cursor: pointer;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s, box-shadow 0.2s;\n z-index: 999999;\n}\n.ff-chat-button:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);\n}\n.ff-chat-button:active {\n transform: scale(0.95);\n}\n.ff-chat-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 20px;\n height: 20px;\n border-radius: 10px;\n background: #ef4444;\n color: white;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n.ff-chat-panel {\n position: fixed;\n bottom: 90px;\n right: 20px;\n width: 380px;\n max-width: calc(100vw - 40px);\n height: 600px;\n max-height: calc(100vh - 120px);\n background: white;\n border-radius: 16px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n z-index: 999998;\n animation: slideUp 0.3s ease-out;\n}\n@keyframes slideUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@media (max-width: 768px) {\n .ff-chat-panel {\n bottom: 0;\n right: 0;\n left: 0;\n width: 100%;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n max-width: none;\n }\n .ff-chat-button {\n bottom: 16px;\n right: 16px;\n }\n}\n.ff-chat-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n.ff-chat-header-content h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n}\n.ff-chat-subtitle {\n margin: 4px 0 0 0;\n font-size: 13px;\n opacity: 0.9;\n}\n.ff-chat-close {\n background: rgba(255, 255, 255, 0.2);\n border: none;\n border-radius: 8px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background 0.2s;\n color: white;\n}\n.ff-chat-close:hover {\n background: rgba(255, 255, 255, 0.3);\n}\n.ff-chat-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #f9fafb;\n}\n.ff-offline-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef3c7;\n border-bottom: 1px solid #fde68a;\n color: #92400e;\n font-size: 14px;\n}\n.ff-offline-banner svg {\n flex-shrink: 0;\n}\n.ff-message-list-container {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n}\n.ff-message-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.ff-message {\n display: flex;\n flex-direction: column;\n max-width: 80%;\n animation: messageIn 0.2s ease-out;\n}\n@keyframes messageIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.ff-message-customer {\n align-self: flex-start;\n}\n.ff-message-widget_user {\n align-self: flex-end;\n}\n.ff-message-content {\n padding: 10px 14px;\n border-radius: 12px;\n word-wrap: break-word;\n white-space: pre-wrap;\n line-height: 1.5;\n}\n.ff-message-customer .ff-message-content {\n background: #e5e7eb;\n color: #1f2937;\n border-bottom-left-radius: 4px;\n}\n.ff-message-widget_user .ff-message-content {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-bottom-right-radius: 4px;\n}\n.ff-message-meta {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px 0;\n font-size: 11px;\n color: #6b7280;\n}\n.ff-message-widget_user .ff-message-meta {\n justify-content: flex-end;\n}\n.ff-message-status {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n line-height: 1;\n}\n.ff-message-status svg {\n display: block;\n}\n.ff-typing-indicator {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n}\n.ff-typing-dots {\n display: flex;\n gap: 4px;\n}\n.ff-typing-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #9ca3af;\n animation: typingDot 1.4s infinite;\n}\n.ff-typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n}\n.ff-typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n}\n@keyframes typingDot {\n 0%, 60%, 100% {\n transform: scale(1);\n opacity: 0.5;\n }\n 30% {\n transform: scale(1.2);\n opacity: 1;\n }\n}\n.ff-typing-text {\n font-size: 13px;\n color: #6b7280;\n font-style: italic;\n}\n.ff-chat-footer {\n border-top: 1px solid #e5e7eb;\n background: white;\n padding: 16px;\n}\n.ff-message-input {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n.ff-message-textarea {\n flex: 1;\n padding: 10px 12px;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n font-size: 14px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n resize: none;\n outline: none;\n transition: border-color 0.2s;\n max-height: 120px;\n}\n.ff-message-textarea:focus {\n border-color: #667eea;\n}\n.ff-message-textarea::-moz-placeholder {\n color: #9ca3af;\n}\n.ff-message-textarea::placeholder {\n color: #9ca3af;\n}\n.ff-send-button {\n width: 40px;\n height: 40px;\n border-radius: 10px;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: transform 0.2s, opacity 0.2s;\n}\n.ff-send-button:hover:not(:disabled) {\n transform: scale(1.05);\n}\n.ff-send-button:active:not(:disabled) {\n transform: scale(0.95);\n}\n.ff-send-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.ff-message-list-container::-webkit-scrollbar {\n width: 6px;\n}\n.ff-message-list-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.ff-message-list-container::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 3px;\n}\n.ff-message-list-container::-webkit-scrollbar-thumb:hover {\n background: #9ca3af;\n}\n@media (prefers-color-scheme: dark) {\n .ff-chat-panel {\n background: #1f2937;\n }\n .ff-chat-body {\n background: #111827;\n }\n .ff-message-customer .ff-message-content {\n background: #374151;\n color: #f3f4f6;\n }\n .ff-chat-footer {\n background: #1f2937;\n border-top-color: #374151;\n }\n .ff-message-textarea {\n background: #374151;\n border-color: #4b5563;\n color: #f3f4f6;\n }\n .ff-message-textarea:focus {\n border-color: #667eea;\n }\n .ff-message-time {\n color: #9ca3af;\n }\n}\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: "*";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: "<length>";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-blur {\n syntax: "*";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: "*";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: "*";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: "*";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-invert {\n syntax: "*";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: "*";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-blur {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-brightness {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-contrast {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-grayscale {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-hue-rotate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-invert {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-opacity {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-saturate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-backdrop-sepia {\n syntax: "*";\n inherits: false;\n}\n@property --tw-duration {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ease {\n syntax: "*";\n inherits: false;\n}\n@property --tw-scale-x {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-content {\n syntax: "*";\n inherits: false;\n initial-value: "";\n}\n@property --tw-outline-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@layer properties {\n :host, *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-x-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-content: "";\n --tw-outline-style: solid;\n }\n}\r\n';class p{constructor(){this.shadowHost=null,this.shadowRoot=null,this.styleElement=null,this.backdropClickHandler=null,this.createShadowDOM()}createShadowDOM(){this.shadowHost=document.createElement("div"),this.shadowHost.id="feedbackfun-shadow-host",this.shadowHost.style.cssText="position: fixed; top: 0; left: 0; pointer-events: none; z-index: 10000; width: 100vw; height: 100vh; background: transparent; opacity: 0; transition: opacity 0.2s ease;",this.shadowRoot=this.shadowHost.attachShadow({mode:"open"}),document.body.appendChild(this.shadowHost),this.injectBaseStyles(),c("Shadow DOM created successfully")}injectBaseStyles(){this.shadowRoot&&(this.styleElement=document.createElement("style"),this.styleElement.textContent=u,this.shadowRoot.appendChild(this.styleElement),this.showWidget())}updateThemeVariables(e){if(!this.styleElement)return;let t="\n/* Theme variables */\n:host {\n";for(const[n,r]of Object.entries(e))t+=` ${n}: ${r};\n`;t+="}\n",this.styleElement.textContent=u+t}appendCSS(e){this.styleElement&&(this.styleElement.textContent+="\n"+e)}getShadowRoot(){return this.shadowRoot}getShadowHost(){return this.shadowHost}createElement(e,t,n){if(!this.shadowRoot)throw new Error("Shadow DOM not initialized");const r=document.createElement(e);return t&&(r.className=t),n&&(r.innerHTML=n),r.style.pointerEvents="auto",r}getWidgetContainer(){if(!this.shadowRoot)throw new Error("Shadow DOM not initialized");let e=this.shadowRoot.getElementById("feedbackfun-widget-container");return e||(e=this.createElement("div","feedbackfun-widget-container"),e.id="feedbackfun-widget-container",e.style.cssText="position: relative; pointer-events: none; width: 100%; height: 100%; background: transparent;",this.shadowRoot.appendChild(e)),e}getViewportPosition(e,t){return{x:e,y:t}}showWidget(){this.shadowHost&&(this.shadowHost.style.opacity="1")}enableBackdrop(e){this.shadowHost&&(this.shadowHost.style.background="rgba(0, 0, 0, 0.3)",this.shadowHost.style.pointerEvents="auto",e&&(this.backdropClickHandler=t=>{t.target===this.shadowHost&&e()},this.shadowHost.addEventListener("click",this.backdropClickHandler)))}disableBackdrop(){this.shadowHost&&(this.shadowHost.style.background="transparent",this.shadowHost.style.pointerEvents="none",this.backdropClickHandler&&(this.shadowHost.removeEventListener("click",this.backdropClickHandler),this.backdropClickHandler=null))}destroy(){this.shadowHost&&(this.shadowHost.remove(),this.shadowHost=null,this.shadowRoot=null,this.styleElement=null)}}class h{constructor(e,t){this.toggleButton=null,this.isActive=!1,this.onToggle=e,this.shadowDomManager=t}create(e){this.toggleButton=this.shadowDomManager.createElement("button"),this.toggleButton.className="fixed bottom-6 right-6 w-14 h-14 bg-background border border-border text-muted-foreground rounded-full cursor-pointer z-[999999] flex items-center justify-center transition-all duration-300 select-none shadow-lg hover:scale-105 hover:shadow-xl hover:bg-muted/50 hover:border-border-accent pointer-events-auto",this.toggleButton.title="Open feedback",this.toggleButton.innerHTML='\n <div class="flex items-center justify-center">\n <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">\n <path d="M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z"/>\n </svg>\n </div>\n ',this.toggleButton.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.isActive=!this.isActive,this.updateState(this.isActive),this.onToggle()});return(e||this.shadowDomManager.getWidgetContainer()).appendChild(this.toggleButton),this.toggleButton}updateState(e=this.isActive){if(this.isActive=e,!this.toggleButton)return;const t=this.toggleButton.querySelector("div");t&&(this.isActive?(this.toggleButton.className="fixed bottom-6 right-6 w-14 h-14 bg-primary border border-primary text-primary-foreground rounded-full cursor-pointer z-[999999] flex items-center justify-center transition-all duration-300 select-none shadow-lg hover:scale-105 hover:shadow-xl hover:bg-primary/90 hover:border-primary/90 pointer-events-auto",t.className="flex items-center justify-center",t.innerHTML='\n <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">\n <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>\n </svg>\n '):(this.toggleButton.className="fixed bottom-6 right-6 w-14 h-14 bg-primary border border-border text-primary-foreground rounded-full cursor-pointer z-[999999] flex items-center justify-center transition-all duration-300 select-none shadow-lg hover:scale-105 hover:shadow-xl hover:bg-primary/50 hover:border-border-accent pointer-events-auto",t.className="flex items-center justify-center",t.innerHTML='\n <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">\n <path d="M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z"/>\n </svg>\n '))}remove(){this.toggleButton&&(this.toggleButton.remove(),this.toggleButton=null)}getElement(){return this.toggleButton}getActiveState(){return this.isActive}destroy(){this.remove()}}class f{constructor(e,t,n,r,o,i,s,a=!1,c){this.onSubmit=e,this.onRoadmapClick=t,this.onClose=n,this.onClickPageMode=r,this.toggleButton=o,this.planStatus=i,this.shadowDomManager=s,this.hideClickMode=a,this.parentContainer=c,this.popover=null,this.selectedTab="feature",this.selectedPrivacy="public",this.displayMode="popover",this.scrollHandler=null}create(e="popover"){this.displayMode=e,this.popover=this.shadowDomManager.createElement("div"),"dialog"===e?(this.popover.className="fixed top-0 left-0 w-full h-full backdrop-blur-sm z-[10001] flex items-center justify-center animate-fade-in",this.popover.style.backgroundColor="rgba(0, 0, 0, 0.5)"):this.popover.className="fixed z-[10001] flex items-end justify-end p-4 animate-popover-slide-in",this.popover.innerHTML=this.getPopoverHTML(),"dialog"===e?this.setupDialogPosition():this.setupPopoverPosition();return(this.parentContainer||this.shadowDomManager.getWidgetContainer()).appendChild(this.popover),this.addEventListeners(),this.popover}getPopoverHTML(){return`\n <div class="card w-full max-w-sm bg-card border border-border shadow-xl backdrop-blur-sm">\n <div class="card-body px-4 space-y-4">\n \x3c!-- Header --\x3e\n <div class="flex items-start justify-between">\n <div class="flex-1 pr-4">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Send feedback</h2>\n <p class="text-sm text-muted-foreground leading-relaxed">Tell us what to improve. We read everything and respond to most.</p>\n </div>\n <button id="closeBtn" class="btn-icon-outline">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>\n </svg>\n </button>\n </div>\n\n \x3c!-- Feedback Type Tabs --\x3e\n <div class="tabs w-full" id="feedback-tabs">\n <nav role="tablist" aria-orientation="horizontal" class="w-full">\n <button type="button" \n role="tab" \n id="feedback-tab-feature" \n aria-controls="feedback-panel-feature" \n aria-selected="true" \n data-type="feature" \n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected='true']]:bg-primary [&[aria-selected='true']]:text-primary-foreground [&[aria-selected='true']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>\n </svg>\n Feature\n </button>\n <button type="button" \n role="tab" \n id="feedback-tab-bug" \n aria-controls="feedback-panel-bug" \n aria-selected="false" \n data-type="bug" \n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected='true']]:bg-primary [&[aria-selected='true']]:text-primary-foreground [&[aria-selected='true']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 \n 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>\n </svg>\n Bug\n </button>\n <button type="button" \n role="tab" \n id="feedback-tab-other" \n aria-controls="feedback-panel-other" \n aria-selected="false" \n data-type="other" \n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected='true']]:bg-primary [&[aria-selected='true']]:text-primary-foreground [&[aria-selected='true']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 8h10m-5 4h5M7 16h5m6 0a2 2 0 \n 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2h2l4 4 4-4h2z"></path>\n </svg>\n Other\n </button>\n </nav>\n </div>\n\n \x3c!-- Textarea Input --\x3e\n <div class="space-y-2">\n <textarea\n id="feedback"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Share your idea, bug report, or feedback..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="hint" class="text-muted-foreground">Minimum 10 characters required</span>\n <span id="counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="relative">\n <button type="button" id="privacyBtn" class="cursor-pointer w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors" aria-haspopup="menu" aria-expanded="false">\n <div class="flex items-center gap-1.5">\n <svg id="privacyIcon" class="w-3.5 h-3.5 text-muted-foreground cursor-pointer" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacyLabel" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground cursor-pointer" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacyMenu" class="absolute top-full left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden w-56">\n <div class="p-1">\n <button type="button" data-privacy="public" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n ${this.hideClickMode?"":'\x3c!-- Click Feature Highlight --\x3e\n <div class="bg-accent/20 border border-accent/30 rounded-lg p-3 space-y-2">\n <div class="flex items-center justify-between">\n <div class="flex items-center gap-2">\n\n <h3 class="text-sm font-medium text-accent-foreground">💡 Try Click Mode</h3>\n </div>\n <button id="clickBtn" class="cursor-pointer inline-flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-accent-foreground bg-accent hover:bg-accent/80 rounded transition-colors">\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"/>\n </svg>\n Start Clicking\n </button>\n </div>\n <p class="text-xs text-muted-foreground">Click anywhere on the page to leave contextual feedback and screenshots</p>\n </div>'}\n\n \x3c!-- Actions --\x3e\n <div class="grid grid-cols-2 gap-3">\n <button id="roadmapBtn" class="cursor-pointer inline-flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium text-muted-foreground hover:text-foreground hover:bg-muted/50 border border-border rounded transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v4a2 2 0 01-2 2h-2a2 2 0 00-2 2z"/>\n </svg>\n View Roadmap\n </button>\n\n <button id="submitBtn" class="cursor-pointer inline-flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium text-primary-foreground bg-primary hover:bg-primary/90 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed" disabled>\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n Submit\n </button>\n </div>\n\n \x3c!-- Footer --\x3e\n ${"free"===this.planStatus?'\n <div class="border-t border-border pt-4">\n <p class="text-xs text-center text-muted-foreground">\n Powered by <a href="https://feedbackfun.com" class="text-primary hover:underline">feedbackfun</a>\n </p>\n </div>\n ':""}\n </div>\n </div>\n `}setupPopoverPosition(){this.popover&&(this.popover.style.position="fixed",this.popover.style.bottom="75px",this.popover.style.width="100%",this.popover.style.height="100%",this.popover.style.zIndex="10001")}setupDialogPosition(){this.popover&&(this.popover.style.position="fixed",this.popover.style.top="0",this.popover.style.left="0",this.popover.style.width="100%",this.popover.style.height="100%",this.popover.style.zIndex="10001")}addEventListeners(){if(!this.popover)return;const e=this.popover.querySelectorAll("[data-type]"),t=this.popover.querySelector("#feedback"),n=this.popover.querySelector("#submitBtn"),r=this.popover.querySelector("#roadmapBtn"),o=this.popover.querySelector("#clickBtn"),i=this.popover.querySelector("#closeBtn"),s=this.popover.querySelector("#hint"),a=this.popover.querySelector("#counter"),c=this.popover.querySelector("#privacyBtn"),l=this.popover.querySelector("#privacyMenu"),d=this.popover.querySelector("#privacyLabel"),u=this.popover.querySelector("#privacyIcon");e.forEach(t=>{t.addEventListener("click",()=>{const n=t.getAttribute("data-type");this.selectedTab=n,e.forEach(e=>{e.setAttribute("aria-selected","false")}),t.setAttribute("aria-selected","true")})});const p=()=>{l.classList.add("hidden"),c.setAttribute("aria-expanded","false")};c.addEventListener("click",e=>{e.stopPropagation();const t=l.classList.contains("hidden");p(),t&&(l.classList.remove("hidden"),c.setAttribute("aria-expanded","true"))}),l.addEventListener("click",e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.closest("button[data-privacy]");if(!n)return;const r=n.getAttribute("data-privacy");this.selectedPrivacy=r,"public"===r?(d.textContent="Public",u.innerHTML='\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n '):"admin_only"===r&&(d.textContent="Admin Only",u.innerHTML='\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n '),p()}),document.addEventListener("click",p),t.placeholder="Share your idea, bug report, or feedback...";const h=()=>{const e=t.value.trim().length>=10;n.disabled=!e,s.textContent=e?"Looks good — ready to send":"Minimum 10 characters required",s.className=e?"text-xs text-emerald-600":"text-xs text-slate-500",a.textContent=`${t.value.length} / 500`};t.addEventListener("input",h),t.addEventListener("keydown",e=>{if((e.ctrlKey||e.metaKey)&&"Enter"===e.key){e.preventDefault();t.value.trim().length>=10&&!n.disabled&&n.click()}}),h(),n.addEventListener("click",async()=>{const e=t.value.trim();if(e.length>=10&&!n.disabled){t.disabled=!0,n.disabled=!0,n.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path d="M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z"/>\n </svg>\n <span>Sending...</span>\n ';try{await this.onSubmit(e,this.selectedTab,this.selectedPrivacy)}catch(e){throw t.disabled=!1,n.disabled=!1,n.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n Submit\n ',e}}}),r.addEventListener("click",()=>{this.onRoadmapClick()}),o&&o.addEventListener("click",()=>{this.onClickPageMode()}),i.addEventListener("click",()=>{this.onClose()})}remove(){if(this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler,!0),window.removeEventListener("resize",this.scrollHandler),this.scrollHandler=null),this.popover){const e=()=>{var e,t;const n=null===(e=this.popover)||void 0===e?void 0:e.querySelector("#privacyMenu"),r=null===(t=this.popover)||void 0===t?void 0:t.querySelector("#privacyBtn");n&&r&&(n.classList.add("hidden"),r.setAttribute("aria-expanded","false"))};document.removeEventListener("click",e),this.popover.remove(),this.popover=null}}getElement(){return this.popover}isClick(e){var t,n;return null!==(n=null===(t=this.popover)||void 0===t?void 0:t.contains(e))&&void 0!==n&&n}getSelectedTab(){return this.selectedTab}getSelectedPrivacy(){return this.selectedPrivacy}}class g{constructor(e,t,n,r,o){this.onSubmit=e,this.getProjectDomain=t,this.selectedTab=n,this.shadowDomManager=r,this.parentContainer=o,this.commentBox=null,this.scrollY=0,this.scrollPreventionHandler=null,this.preventScrollKeys=e=>{["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"].includes(e.key)&&e.preventDefault()}}show(e){this.remove(),this.preventScroll(),this.shadowDomManager.enableBackdrop(()=>this.remove()),this.commentBox=this.shadowDomManager.createElement("div"),this.commentBox.className="fixed z-[10001] w-xs max-w-2xl animate-comment-box-slide-in",this.commentBox.innerHTML='\n <div class="card w-full max-w-sm bg-card border border-border shadow-xl">\n <div class="card-body px-4 space-y-4">\n \x3c!-- Header --\x3e\n <div class="flex items-start justify-between">\n <div class="flex-1 pr-4">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Send feedback</h2>\n </div>\n <button id="closeBtn">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>\n </svg>\n </button>\n </div>\n\n \x3c!-- Feedback Type Tabs --\x3e\n <div class="tabs w-full" id="feedback-tabs">\n <nav role="tablist" aria-orientation="horizontal" class="w-full">\n <button type="button"\n role="tab"\n id="feedback-tab-feature"\n aria-controls="feedback-panel-feature"\n aria-selected="false"\n data-type="feature"\n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected=\'true\']]:bg-primary [&[aria-selected=\'true\']]:text-primary-foreground [&[aria-selected=\'true\']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>\n </svg>\n Feature\n </button>\n <button type="button"\n role="tab"\n id="feedback-tab-bug"\n aria-controls="feedback-panel-bug"\n aria-selected="false"\n data-type="bug"\n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected=\'true\']]:bg-primary [&[aria-selected=\'true\']]:text-primary-foreground [&[aria-selected=\'true\']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 \n 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>\n </svg>\n Bug\n </button>\n <button type="button"\n role="tab"\n id="feedback-tab-other"\n aria-controls="feedback-panel-other"\n aria-selected="false"\n data-type="other"\n class="flex items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground [&[aria-selected=\'true\']]:bg-primary [&[aria-selected=\'true\']]:text-primary-foreground [&[aria-selected=\'true\']]:shadow-sm cursor-pointer"\n >\n <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 8h10m-5 4h5M7 16h5m6 0a2 2 0 \n 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2h2l4 4 4-4h2z"></path>\n </svg>\n Other\n </button>\n </nav>\n </div>\n\n \x3c!-- Textarea Input --\x3e\n <div class="space-y-2">\n <textarea\n id="feedbackText"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Share your idea, bug report, or feedback..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="hint" class="text-muted-foreground">Minimum 10 characters required</span>\n <span id="counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="relative">\n <button id="privacyBtn" class="cursor-pointer w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors" aria-haspopup="menu" aria-expanded="false">\n <div class="flex items-center gap-1.5">\n <svg id="privacyIcon" class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacyLabel" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacyMenu" class="absolute left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden w-56">\n <div class="p-1">\n <button type="button" data-privacy="public" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n\n \x3c!-- Actions --\x3e\n <div class="grid grid-cols-1 gap-2">\n <button id="sendBtn" class="w-full inline-flex items-center justify-center gap-2 px-4 py-2 text-sm font-medium text-white bg-primary hover:bg-primary/90 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n <span>Send feedback</span>\n </button>\n </div>\n </div>\n </div>\n ';const t=function(e,t){const n=30,r=window.innerWidth,o=window.innerHeight;let i=e+n,s=t-25;return i+320>r-n&&(i=e-320-n,i<n&&(i=r-320-n)),i<n&&(i=n),s+400>o-n&&(s=o-400-n),s<n&&(s=n),400>o-60&&(s=n),{left:i,top:s}}(e.clickX,e.clickY);this.commentBox.style.position="fixed",this.commentBox.style.left=t.left+"px",this.commentBox.style.top=t.top+"px",this.commentBox.style.zIndex="10000";(this.parentContainer||this.shadowDomManager.getWidgetContainer()).appendChild(this.commentBox),this.commentBox.addEventListener("click",e=>{e.stopPropagation()});const n=this.commentBox.querySelector("#feedbackText"),r=this.commentBox.querySelector("#sendBtn"),o=this.commentBox.querySelector("#closeBtn"),i=this.commentBox.querySelector("#counter"),s=this.commentBox.querySelector("#hint"),a=this.commentBox.querySelector("#privacyBtn"),c=this.commentBox.querySelector("#privacyMenu"),l=this.commentBox.querySelector("#privacyLabel"),d=this.commentBox.querySelector("#privacyIcon");function u(){c.classList.add("hidden"),a.setAttribute("aria-expanded","false")}a.addEventListener("click",e=>{e.stopPropagation(),e.preventDefault();const t=c.classList.contains("hidden");u(),t&&(c.classList.remove("hidden"),a.setAttribute("aria-expanded","true"))}),c.addEventListener("click",e=>{var t;e.stopPropagation(),e.preventDefault();const n=null===(t=e.target)||void 0===t?void 0:t.closest("button[data-privacy]");if(!n)return;const r=n.getAttribute("data-privacy");"public"===r?(l.textContent="Public",d.innerHTML='\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n '):"admin_only"===r&&(l.textContent="Admin Only",d.innerHTML='\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n '),u()}),document.addEventListener("click",e=>{a.contains(e.target)||c.contains(e.target)||u()});const p=this.commentBox.querySelectorAll("[data-type]");p.forEach(e=>{e.getAttribute("data-type")===this.selectedTab?e.setAttribute("aria-selected","true"):e.setAttribute("aria-selected","false")}),p.forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-type");this.selectedTab=t,p.forEach(e=>{e.setAttribute("aria-selected","false")}),e.setAttribute("aria-selected","true")})}),o.addEventListener("click",e=>{e.stopPropagation(),this.remove()}),n.focus();const h=()=>{const e=n.value.length,t=e>=10;r.disabled=!t,i.textContent=`${e} / 500`,0===e?(s.textContent="Minimum 10 characters required",s.className="text-muted-foreground"):e<10?(s.textContent=10-e+" more characters needed",s.className="text-muted-foreground"):(s.textContent="Ready to send!",s.className="text-green-600")};h(),n.addEventListener("input",h),r.addEventListener("click",async()=>{const t=n.value.trim();if(t.length>=10&&!r.disabled){n.disabled=!0,r.disabled=!0,r.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path d="M12,4V2A10,10 0 0,0 2,12H4A8,8 0 0,1 12,4Z"/>\n </svg>\n <span>Sending...</span>\n ',await new Promise(e=>setTimeout(e,100));try{await this.submitComment(t,{x:e.clickX,y:e.clickY})}catch(e){throw n.disabled=!1,r.disabled=!1,r.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="m22 2-7 20-4-9-9-4Z"/>\n <path d="M22 2 11 13"/>\n </svg>\n <span>Send feedback</span>\n ',e}}});const f=e=>{"Escape"===e.key?this.remove():"Enter"===e.key&&e.target===n&&(e.preventDefault(),r.disabled||r.click())};n.addEventListener("keydown",f),this.commentBox.keyDownHandler=f}remove(){if(this.commentBox){const e=this.commentBox.keyDownHandler,t=this.commentBox.querySelector("#feedbackText");e&&t&&t.removeEventListener("keydown",e),this.commentBox.remove(),this.commentBox=null}this.shadowDomManager.disableBackdrop(),this.restoreScroll()}async submitComment(e,t){var n;if(!this.commentBox)return;const r=(null===(n=this.commentBox.querySelector("#privacyLabel").textContent)||void 0===n?void 0:n.trim())||"Public",o=this.selectedTab;let i;if("Admin Only"===r)i="admin_only";else i="public";this.restoreScrollForScreenshot();try{await this.onSubmit({content:e,type:o,feedbackPrivacy:i},t)}catch(e){}}getElement(){return this.commentBox}isClick(e){return null!==this.commentBox&&(this.commentBox.contains(e)||this.commentBox===e)}preventScroll(){this.scrollY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,this.scrollPreventionHandler=e=>{e.preventDefault(),e.stopPropagation(),window.scrollTo(0,this.scrollY)},window.addEventListener("scroll",this.scrollPreventionHandler,{passive:!1}),window.addEventListener("wheel",this.scrollPreventionHandler,{passive:!1}),window.addEventListener("touchmove",this.scrollPreventionHandler,{passive:!1}),document.addEventListener("keydown",this.preventScrollKeys,!1)}restoreScroll(){this.scrollPreventionHandler&&(window.removeEventListener("scroll",this.scrollPreventionHandler),window.removeEventListener("wheel",this.scrollPreventionHandler),window.removeEventListener("touchmove",this.scrollPreventionHandler),this.scrollPreventionHandler=null),document.removeEventListener("keydown",this.preventScrollKeys)}restoreScrollForScreenshot(){this.scrollPreventionHandler&&(window.removeEventListener("scroll",this.scrollPreventionHandler),window.removeEventListener("wheel",this.scrollPreventionHandler),window.removeEventListener("touchmove",this.scrollPreventionHandler)),document.removeEventListener("keydown",this.preventScrollKeys),window.scrollTo(0,this.scrollY)}}function m(e){if(null==e?void 0:e.id){const t=`user-${e.id}`;localStorage.setItem("feedbackfun-user-id",t);const n={id:e.id,email:e.email,name:e.name};return Object.keys(e).forEach(t=>{["id","email","name"].includes(t)||(n[t]=e[t])}),localStorage.setItem("feedbackfun-user-info",JSON.stringify(n)),c("User identifier set from provided user",{identifier:t}),t}let t=localStorage.getItem("feedbackfun-user-id");return t||(t="user-"+Math.random().toString(36).substring(2,15),localStorage.setItem("feedbackfun-user-id",t),c("Generated random user identifier",{identifier:t}),t)}function v(e){try{const t=Array.from(e);localStorage.setItem("feedbackfun-user-votes",JSON.stringify(t))}catch(e){d("Error saving user votes:",e)}}class y{static getInstance(){return y.instance||(y.instance=new y),y.instance}constructor(){this.cache=new Map,this.CACHE_TTL=36e5,this.listeners=new Map}get(e){const t=this.getCacheKey(e),n=this.cache.get(t);if(!n)return null;return Date.now()-n.timestamp>this.CACHE_TTL?(this.cache.delete(t),null):(c("Serving roadmap data from cache for domain:",e),[...n.data])}set(e,t){const n=this.getCacheKey(e);this.cache.set(n,{data:[...t],timestamp:Date.now()}),c(`Cached ${t.length} roadmap items for domain:`,e),this.notifyListeners(e)}addItem(e,t){const n=this.getCacheKey(e),r=this.cache.get(n);if(!r)return void this.set(e,[t]);const o=[t,...r.data];this.cache.set(n,{data:o,timestamp:r.timestamp}),c("Added new roadmap item to cache for domain:",e),this.notifyListeners(e)}removeItem(e,t){const n=this.getCacheKey(e),r=this.cache.get(n);if(!r)return;const o=r.data.filter(e=>e.id!==t);this.cache.set(n,{data:o,timestamp:r.timestamp}),c(`Removed roadmap item ${t} from cache for domain:`,e),this.notifyListeners(e)}updateVoteCount(e,t,n){const r=this.getCacheKey(e),o=this.cache.get(r);if(!o)return;const i=o.data.map(e=>e.id===t?Object.assign(Object.assign({},e),{voteCount:n}):e);this.cache.set(r,{data:i,timestamp:o.timestamp}),c(`Updated vote count for item ${t} in cache for domain:`,e),this.notifyListeners(e)}updateItemId(e,t,n){const r=this.getCacheKey(e),o=this.cache.get(r);if(!o)return;const i=o.data.map(e=>e.id===t?Object.assign(Object.assign({},e),{id:n}):e);this.cache.set(r,{data:i,timestamp:o.timestamp}),c(`Updated item ID from ${t} to ${n} in cache for domain:`,e),this.notifyListeners(e)}has(e){const t=this.getCacheKey(e);return this.cache.has(t)}getStale(e){const t=this.getCacheKey(e),n=this.cache.get(t);return n?[...n.data]:null}invalidate(e){const t=this.getCacheKey(e);this.cache.delete(t),c("Invalidated roadmap cache for domain:",e)}clear(){this.cache.clear(),c("Cleared all roadmap cache data")}getCacheKey(e){return`roadmap:${e}`}subscribe(e,t){const n=this.getCacheKey(e);this.listeners.has(n)||this.listeners.set(n,new Set),this.listeners.get(n).add(t),c("Subscribed to cache changes for domain:",e)}unsubscribe(e,t){const n=this.getCacheKey(e),r=this.listeners.get(n);r&&(r.delete(t),0===r.size&&this.listeners.delete(n)),c("Unsubscribed from cache changes for domain:",e)}notifyListeners(e){const t=this.getCacheKey(e),n=this.listeners.get(t);if(n&&n.size>0){const t=this.get(e)||this.getStale(e)||[];c(`Notifying ${n.size} listeners of cache change for domain:`,e),n.forEach(e=>{try{e(t)}catch(e){d("Error in cache change listener:",e)}})}}}y.instance=null;class b{constructor(e,t,n,r,o){this.apiUrl=e,this.apiKey=t,this.getProjectDomain=n,this.onClose=r,this.shadowDomManager=o,this.roadmapDialog=null,this.userVotes=new Set,this.currentItems=[],this.currentSort="date",this.cacheUpdateHandler=null,this.roadmapCache=y.getInstance()}create(){this.userVotes=function(){try{const e=localStorage.getItem("feedbackfun-user-votes");if(e){const t=JSON.parse(e);return new Set(t)}}catch(e){d("Error loading user votes:",e)}return new Set}(),this.roadmapDialog=this.shadowDomManager.createElement("dialog"),this.roadmapDialog.className="dialog w-full max-w-6xl max-h-[90vh] p-0 overflow-hidden",this.roadmapDialog.setAttribute("aria-labelledby","roadmap-dialog-title"),this.roadmapDialog.setAttribute("aria-describedby","roadmap-dialog-description"),this.roadmapDialog.innerHTML='\n <article class="h-full max-w-6xl flex flex-col">\n <header>\n <h2 id="roadmap-dialog-title">Roadmap</h2>\n <p id="roadmap-dialog-description">Track progress across Request, Development, and Done</p>\n </header>\n\n <div class="flex items-center justify-end">\n <div class="flex items-center gap-2">\n <div class="text-sm text-muted-foreground">Sort by</div>\n <div role="tablist" aria-label="Sort items" class="inline-flex rounded-lg bg-muted p-1">\n <button \n type="button" \n data-sort="date" \n aria-pressed="true" \n class="inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors hover:bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"\n >\n <svg class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">\n <rect x="3" y="4" width="18" height="18" rx="2"></rect>\n <path d="M16 2v4M8 2v4M3 10h18"></path>\n </svg>\n Date\n </button>\n <button \n type="button" \n data-sort="votes" \n aria-pressed="false" \n class="inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-background hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"\n >\n <svg class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">\n <path d="m7 11 5-5 5 5"></path>\n <path d="M12 6v12"></path>\n </svg>\n Votes\n </button>\n </div>\n </div>\n </div>\n\n <section class="flex-1 overflow-y-auto">\n <div class="grid h-full grid-cols-1 divide-x divide-border md:grid-cols-3">\n \x3c!-- Column: Request --\x3e\n <div data-column="request" class="flex h-full flex-col">\n <div class="flex items-center justify-between border-b border-border bg-muted/50 p-4">\n <h3 class="font-medium text-foreground">Request</h3>\n <span class="inline-flex h-6 w-6 items-center justify-center rounded-full bg-background text-xs font-medium">\n <span class="count">0</span>\n </span>\n </div>\n <ul class="flex-1 space-y-4 overflow-y-auto p-4">\n \x3c!-- Loading/empty state will be populated here --\x3e\n </ul>\n </div>\n\n \x3c!-- Column: Development --\x3e\n <div data-column="development" class="flex h-full flex-col">\n <div class="flex items-center justify-between border-b border-border bg-muted/50 p-4">\n <h3 class="font-medium text-foreground">Development</h3>\n <span class="inline-flex h-6 w-6 items-center justify-center rounded-full bg-background text-xs font-medium">\n <span class="count">0</span>\n </span>\n </div>\n <ul class="flex-1 space-y-4 overflow-y-auto p-4">\n \x3c!-- Loading/empty state will be populated here --\x3e\n </ul>\n </div>\n\n \x3c!-- Column: Done --\x3e\n <div data-column="done" class="flex h-full flex-col">\n <div class="flex items-center justify-between border-b border-border bg-muted/50 p-4">\n <h3 class="font-medium text-foreground">Done</h3>\n <span class="inline-flex h-6 w-6 items-center justify-center rounded-full bg-background text-xs font-medium">\n <span class="count">0</span>\n </span>\n </div>\n <ul class="flex-1 space-y-4 overflow-y-auto p-4">\n \x3c!-- Loading/empty state will be populated here --\x3e\n </ul>\n </div>\n </div>\n </section>\n\n <button type="button" aria-label="Close dialog" onclick="this.closest(\'dialog\').close()">\n <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x">\n <path d="M18 6 6 18" />\n <path d="m6 6 12 12" />\n </svg>\n </button>\n \n ';this.shadowDomManager.getWidgetContainer().appendChild(this.roadmapDialog),this.addEventListeners(),this.updateSortButtonStyles(),this.setupCacheSubscription(),this.roadmapDialog.showModal();const e=this.getProjectDomain(),t=this.roadmapCache.get(e)||this.roadmapCache.getStale(e);return a("Roadmap dialog opening for domain:",e),a("Initial cached data found:",t),this.currentItems=t||[],this.currentItems.length>0?this.sortAndDisplayItems():this.showEmptyState(),this.roadmapDialog}addEventListeners(){if(!this.roadmapDialog)return;const e=this.roadmapDialog,t=this.roadmapDialog.querySelector(".feedbackfun-roadmap-close");null==t||t.addEventListener("click",()=>{e.close(),this.onClose()}),e.addEventListener("click",t=>{t.target===e&&(e.close(),this.onClose())});this.roadmapDialog.querySelectorAll("[data-sort]").forEach(e=>{e.addEventListener("click",()=>{const t=e.getAttribute("data-sort");this.handleSort(t)})}),e.addEventListener("close",()=>{this.onClose()})}displayRoadmapItems(e){if(!this.roadmapDialog)return;Array.isArray(e)||(l("displayRoadmapItems: items is not an array, defaulting to empty array"),e=[]);const t=this.roadmapDialog.querySelector('[data-column="request"] ul'),n=this.roadmapDialog.querySelector('[data-column="development"] ul'),r=this.roadmapDialog.querySelector('[data-column="done"] ul');if(!t||!n||!r)return;t.innerHTML="",n.innerHTML="",r.innerHTML="";let o=0,i=0,s=0;if(e&&e.length>0){e.filter(e=>"public"===e.feedbackPrivacy).forEach(e=>{e.status=e.status||"pending";const a=this.createRoadmapItemElement(e);"in_progress"===e.status?(n.appendChild(a),i++):"done"===e.status?(r.appendChild(a),s++):(t.appendChild(a),o++)})}this.updateColumnCounts(o,i,s)}updateColumnCounts(e,t,n){if(!this.roadmapDialog)return;const r=this.roadmapDialog.querySelector('[data-column="request"] .count');r&&(r.textContent=e.toString());const o=this.roadmapDialog.querySelector('[data-column="development"] .count');o&&(o.textContent=t.toString());const i=this.roadmapDialog.querySelector('[data-column="done"] .count');i&&(i.textContent=n.toString())}createRoadmapItemElement(e){const t=document.createElement("li");t.className="group card border border-border bg-card p-4 hover:border-border-accent focus-within:border-border-accent",t.setAttribute("data-type",e.type),t.setAttribute("data-date",e.createdAt||""),t.setAttribute("data-votes",(e.voteCount||0).toString());const n=e.createdAt?new Date(e.createdAt).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"",r=this.getSimpleTypeBadge(e.type),o=this.getSimpleStatusBadge(e.status||"pending"),i=e.screenshotBase64?`<div class="feedbackfun-roadmap-item-screenshot mt-2">\n <img src="${e.screenshotBase64}" alt="Screenshot for ${e.content||"feedback item"}"\n class="w-full h-24 object-cover rounded-lg border border-border cursor-pointer hover:border-border-accent transition-colors shadow-sm hover:shadow-md" />\n </div>`:"",s=m(),c=e.userIdentifier===s;a("isOwnItem",c),a("userIdentifier",s),a("item.userIdentifier",e.userIdentifier);const l=c?'<button type="button" data-delete aria-label="Delete feedback" class="inline-flex items-center justify-center rounded-full p-1.5 text-muted-foreground hover:text-destructive hover:bg-destructive/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring transition-colors cursor-pointer">\n <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" data-delete-icon viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">\n <path d="M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M10 11v6M14 11v6"/>\n </svg>\n <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 hidden animate-spin" data-delete-spinner viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">\n <path d="M21 12a9 9 0 1 1-6.219-8.56"/>\n </svg>\n </button>':"";return t.innerHTML=`\n <div class="flex flex-col gap-3">\n <p class="text-[15px] text-card-foreground">\n ${e.content||"No description available"}\n </p>\n <div class="flex items-center gap-2">\n ${r}\n ${o}\n </div>\n ${i}\n <div class="flex items-center justify-between">\n <span class="text-xs text-muted-foreground">${n}</span>\n <div class="flex items-center gap-2">\n <button type="button" data-upvote aria-pressed="false" class="group hover:like:bg-muted/100 inline-flex items-center gap-1.5 rounded-full bg-muted/50 px-3 py-1.5 text-sm font-medium text-muted-foreground hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring">\n <svg xmlns="http://www.w3.org/2000/svg" class="h-4.5 w-4.5 group-hover:like:text-foreground" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">\n <path d="M7 10l5-5 5 5M12 5v14"/>\n </svg>\n <span class="text-xs" data-count>${e.voteCount||0}</span>\n </button>\n ${l}\n </div>\n </div>\n </div>\n `,this.addItemEventListeners(t,e),this.applyLikedState(t,e),t}addItemEventListeners(e,t){const n=e.querySelector(".feedbackfun-roadmap-see-more");n&&t.content&&n.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.toggleDescriptionExpansion(e,t.content,n)});const r=e.querySelector(".feedbackfun-roadmap-item-screenshot img");r&&t.screenshotBase64&&r.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.showScreenshotModal(t.screenshotBase64,t.content||"")});const o=e.querySelector("[data-upvote]");o&&o.addEventListener("click",async n=>{n.preventDefault(),n.stopPropagation(),await this.handleLike(e,t)});const i=e.querySelector("[data-delete]");i&&i.addEventListener("click",async n=>{n.preventDefault(),n.stopPropagation(),await this.handleDelete(e,t)})}getStatusDotColor(e){const t={pending:"bg-amber-500",approved:"bg-sky-500",in_progress:"bg-violet-500",done:"bg-emerald-500"};return t[e]||t.pending}getUserTierBadge(e){if(!e.username)return"";const t={pro:'\n <span class="inline-flex items-center gap-1 rounded-full bg-amber-50 px-1.5 py-0.5 text-[11px] font-medium text-amber-700 ring-1 ring-amber-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="currentColor" class="text-amber-500">\n <path d="M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.62L12 2 9.19 8.62 2 9.24l5.46 4.73L5.82 21z"/>\n </svg>\n Pro\n </span>',free:'\n <span class="inline-flex items-center gap-1 rounded-full bg-gray-50 px-1.5 py-0.5 text-[11px] font-medium text-gray-700 ring-1 ring-gray-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n </svg>\n Free\n </span>'};return t[e.plan||"free"]||t.free}getTypeBadgeNew(e){const t={feature:'\n <span class="inline-flex items-center gap-1 rounded-full bg-emerald-50 px-2 py-1 text-xs font-medium text-emerald-700 ring-1 ring-emerald-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <circle cx="12" cy="12" r="3"/>\n <path d="M12 1v6M12 17v6M4.22 4.22l4.24 4.24M15.54 15.54l4.24 4.24M1 12h6M17 12h6M4.22 19.78l4.24-4.24M15.54 8.46l4.24-4.24"/>\n </svg>\n Feature Request\n </span>',bug:'\n <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 ring-1 ring-red-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M8 2v4M16 2v4M8 18v4M16 18v4M3 8h4M3 16h4M17 8h4M17 16h4"/>\n <rect x="8" y="8" width="8" height="8" rx="2"/>\n </svg>\n Bug Report\n </span>',other:'\n <span class="inline-flex items-center gap-1 rounded-full bg-neutral-50 px-2 py-1 text-xs font-medium text-neutral-700 ring-1 ring-neutral-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>\n </svg>\n Feedback\n </span>'};return t[e]||t.other}getStatusBadgeNew(e){const t={pending:'\n <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 ring-1 ring-yellow-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <circle cx="12" cy="12" r="3"/>\n </svg>\n Under Review\n </span>',approved:'\n <span class="inline-flex items-center gap-1 rounded-full bg-sky-50 px-2 py-1 text-xs font-medium text-sky-700 ring-1 ring-sky-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M9 12l2 2 4-4"/>\n <circle cx="12" cy="12" r="10"/>\n </svg>\n Planned\n </span>',in_progress:'\n <span class="inline-flex items-center gap-1 rounded-full bg-violet-50 px-2 py-1 text-xs font-medium text-violet-700 ring-1 ring-violet-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>\n </svg>\n In Development\n </span>',done:'\n <span class="inline-flex items-center gap-1 rounded-full bg-emerald-50 px-2 py-1 text-xs font-medium text-emerald-700 ring-1 ring-emerald-200/60">\n <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/>\n <polyline points="22,4 12,14.01 9,11.01"/>\n </svg>\n Completed\n </span>'};return t[e]||t.pending}getSimpleTypeBadge(e){const t={feature:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-violet-700 ring-1 ring-violet-200/60">Feature</span>',bug:'<span class="inline-flex items-center rounded-full bg-rose-50 px-2 py-0.5 text-[11px] font-medium text-rose-700 ring-1 ring-rose-200/60">Bug</span>',other:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-violet-700 ring-1 ring-violet-200/60">Other</span>'};return t[e]||t.other}getSimpleStatusBadge(e){return{pending:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-indigo-700 ring-1 ring-indigo-200/60">Pending Review</span>',approved:'<span class="inline-flex items-center rounded-full bg-violet-50 px-2 py-0.5 text-[11px] font-medium text-violet-700 ring-1 ring-violet-200/60">Planned</span>',in_progress:'<span class="inline-flex items-center rounded-full bg-amber-50 px-2 py-0.5 text-[11px] font-medium text-amber-400 ring-1 ring--200/60">In Progress</span>',done:'<span class="inline-flex items-center rounded-full bg-emerald-50 px-2 py-0.5 text-[11px] font-medium text-emerald-700 ring-1 ring-emerald-200/60">Done</span>'}[e]||""}applyLikedState(e,t){const n=e.querySelector("[data-upvote]"),r=e.querySelector("[data-count]");if(!n||!r)return;if(this.userVotes.has(t.id)){n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground");const e=t.voteCount||0;r.textContent=e.toString()}else{n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground");const e=t.voteCount||0;r.textContent=e.toString()}}async handleLike(e,t){const n=e.querySelector("[data-upvote]"),r=e.querySelector("[data-count]");if(!n||!r)return;const o=m(),i=this.userVotes.has(t.id),s=parseInt(r.textContent||"0");if(i){this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground");const e=Math.max(0,s-1);r.textContent=e.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,e)}else{this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground");const e=s+1;r.textContent=e.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,e)}v(this.userVotes),n.style.pointerEvents="none",n.style.opacity="0.8";try{const e=await fetch(`${this.apiUrl}/api/roadmap/${t.id}/vote`,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({userIdentifier:o,ipAddress:null})});if(e.ok){const o=await e.json();o.voted?(this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground")):(this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground")),r.textContent=o.voteCount.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,o.voteCount),v(this.userVotes)}else d("Vote API error:",e.status),i?(this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)):(this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)),v(this.userVotes)}catch(e){d("Vote request failed:",e),i?(this.userVotes.add(t.id),n.setAttribute("aria-pressed","true"),n.classList.add("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)):(this.userVotes.delete(t.id),n.setAttribute("aria-pressed","false"),n.classList.remove("bg-primary","border-primary","text-primary-foreground"),r.textContent=s.toString(),this.roadmapCache.updateVoteCount(this.getProjectDomain(),t.id,s)),v(this.userVotes)}finally{n.style.pointerEvents="auto",n.style.opacity="1"}}async handleDelete(e,t){const n=e.querySelector("[data-delete]");if(!n)return;const r=n.querySelector("[data-delete-icon]"),o=n.querySelector("[data-delete-spinner]"),i=m();if(confirm("Are you sure you want to delete this feedback?")){r&&r.classList.add("hidden"),o&&o.classList.remove("hidden"),n.disabled=!0,n.style.pointerEvents="none",n.style.opacity="0.7";try{const s=await fetch(`${this.apiUrl}/api/roadmap/${t.id}`,{method:"DELETE",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({userIdentifier:i})});if(s.ok)e.style.transition="all 0.3s ease-out",e.style.opacity="0",e.style.transform="translateY(-10px)",e.style.maxHeight=e.offsetHeight+"px",setTimeout(()=>{e.style.maxHeight="0",e.style.marginBottom="0",e.style.paddingTop="0",e.style.paddingBottom="0"},150),setTimeout(()=>{e.remove(),this.currentItems=this.currentItems.filter(e=>e.id!==t.id),this.roadmapCache.removeItem(this.getProjectDomain(),t.id);const n=this.currentItems.filter(e=>"public"===e.feedbackPrivacy),r=n.filter(e=>"pending"===e.status||"approved"===e.status).length,o=n.filter(e=>"in_progress"===e.status).length,i=n.filter(e=>"done"===e.status).length;this.updateColumnCounts(r,o,i),c("Feedback deleted successfully")},450);else{const e=await s.json();d("Delete API error:",s.status,e),r&&r.classList.remove("hidden"),o&&o.classList.add("hidden"),n.disabled=!1,n.style.pointerEvents="auto",n.style.opacity="1",alert(e.error||"Failed to delete feedback. Please try again.")}}catch(e){d("Delete request failed:",e),r&&r.classList.remove("hidden"),o&&o.classList.add("hidden"),n.disabled=!1,n.style.pointerEvents="auto",n.style.opacity="1",alert("Network error. Please check your connection and try again.")}}}toggleDescriptionExpansion(e,t,n){const r=e.querySelector(".feedbackfun-roadmap-item-description");if(!r)return;if("true"===r.getAttribute("data-expanded")){const e=t.length>100?t.substring(0,100)+"...":t;r.textContent=e,r.setAttribute("data-expanded","false"),n.textContent="Show more"}else r.textContent=t,r.setAttribute("data-expanded","true"),n.textContent="Show less"}showScreenshotModal(e,t){const n=this.shadowDomManager.createElement("dialog");n.className="dialog w-full max-w-7xl max-h-[95vh] p-0 overflow-hidden",n.setAttribute("aria-labelledby","screenshot-dialog-title"),n.innerHTML=`\n <article class="h-[95vh] max-w-7xl flex flex-col">\n <header class="border-b border-border px-6 py-4 bg-background">\n <div class="flex items-center justify-between">\n <div class="flex items-center gap-3">\n <svg class="w-6 h-6 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>\n </svg>\n <div>\n <h2 id="screenshot-dialog-title" class="text-lg font-semibold text-foreground">Screenshot Preview</h2>\n ${t?`<p class="text-sm text-muted-foreground mt-1">${t}</p>`:""}\n </div>\n </div>\n <button\n type="button"\n class="btn btn-ghost btn-icon"\n aria-label="Close screenshot dialog"\n >\n <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\n <path d="M18 6L6 18M6 6l12 12"/>\n </svg>\n </button>\n </div>\n </header>\n\n <section class="flex-1 overflow-auto p-6 bg-muted/20">\n <div class="flex items-center justify-center max-w-7xl">\n <div class="max-w-full max-h-full">\n <img\n src="${e}"\n alt="Screenshot for ${t}"\n class="max-w-full max-h-[calc(80vh-8rem)] w-auto h-auto block rounded-lg shadow-2xl border border-border bg-card"\n style="object-fit: contain;"\n />\n </div>\n </div>\n </section>\n </article>\n `;const r=n.querySelector("button"),o=n;null==r||r.addEventListener("click",()=>{o.close(),n.remove()}),o.addEventListener("click",e=>{const t=o.getBoundingClientRect();t.top<=e.clientY&&e.clientY<=t.top+t.height&&t.left<=e.clientX&&e.clientX<=t.left+t.width||(o.close(),n.remove())}),o.addEventListener("close",()=>{n.remove()});this.shadowDomManager.getWidgetContainer().appendChild(n),o.showModal()}remove(){if(this.cleanupCacheSubscription(),this.roadmapDialog){this.roadmapDialog.close(),this.roadmapDialog.remove(),this.roadmapDialog=null}}handleSort(e){this.currentSort=e,this.updateSortButtonStyles(),this.sortAndDisplayItems()}updateSortButtonStyles(){if(!this.roadmapDialog)return;this.roadmapDialog.querySelectorAll("[data-sort]").forEach(e=>{const t=e.getAttribute("data-sort")===this.currentSort;e.setAttribute("aria-pressed",t.toString()),t?(e.classList.add("bg-muted","text-foreground"),e.classList.remove("text-muted-foreground")):(e.classList.remove("bg-muted","text-foreground"),e.classList.add("text-muted-foreground"))})}sortAndDisplayItems(){if(!this.currentItems.length)return void this.showEmptyState();const e=[...this.currentItems].sort((e,t)=>{if("votes"===this.currentSort)return(t.voteCount||0)-(e.voteCount||0);{const n=e.createdAt?new Date(e.createdAt).getTime():0;return(t.createdAt?new Date(t.createdAt).getTime():0)-n}});this.displayRoadmapItems(e)}showEmptyState(){if(!this.roadmapDialog)return;[{key:"request",title:"No items planned",icon:"📋"},{key:"development",title:"Nothing in development",icon:"⚡"},{key:"done",title:"No completed items",icon:"✅"}].forEach(({key:e,title:t,icon:n})=>{const r=this.roadmapDialog.querySelector(`[data-column="${e}"] ul`);r&&(r.innerHTML=`\n <li class="p-8 text-center">\n <div class="text-2xl mb-2">${n}</div>\n <div class="text-sm text-muted-foreground">${t}</div>\n </li>\n `)}),this.updateColumnCounts(0,0,0)}getElement(){return this.roadmapDialog}setupCacheSubscription(){const e=this.getProjectDomain();this.cacheUpdateHandler=e=>{c("Roadmap dialog received cache update with",e.length,"items"),this.currentItems=e,e.length>0?this.sortAndDisplayItems():this.showEmptyState()},this.roadmapCache.subscribe(e,this.cacheUpdateHandler)}cleanupCacheSubscription(){if(this.cacheUpdateHandler){const e=this.getProjectDomain();this.roadmapCache.unsubscribe(e,this.cacheUpdateHandler),this.cacheUpdateHandler=null}}static addToCache(e,t){y.getInstance().addItem(e,t)}}class w{constructor(e){this.shadowDomManager=e,this.messages=[],this.autoScroll=!0,this.isUserScrolling=!1,this.container=this.createContainer(),this.setupScrollListener()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="flex flex-col gap-1 overflow-y-auto p-4 h-full",e.setAttribute("role","log"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","false"),e}setupScrollListener(){this.container.addEventListener("scroll",()=>{const{scrollTop:e,scrollHeight:t,clientHeight:n}=this.container;t-e-n<50?(this.isUserScrolling=!1,this.autoScroll=!0):(this.isUserScrolling=!0,this.autoScroll=!1)})}addMessage(e){this.removeLatestMarker(),this.messages.push(e),this.renderMessage(e,!0),this.autoScroll&&this.scrollToBottom()}addMessages(e){e.forEach(e=>this.addMessage(e))}prependMessages(e){const t=this.container.scrollHeight;e.reverse().forEach(e=>{this.messages.unshift(e),this.prependMessage(e)}),requestAnimationFrame(()=>{const e=this.container.scrollHeight;this.container.scrollTop=e-t})}prependMessage(e){const t=this.createMessageElement(e);this.container.insertBefore(t,this.container.firstChild)}renderMessage(e,t=!1){const n=this.createMessageElement(e,t);this.container.appendChild(n)}removeLatestMarker(){const e=this.container.querySelector('[data-is-latest="true"]');if(e){e.removeAttribute("data-is-latest");const t=e.querySelector('[data-meta="true"]');t&&t.remove()}}createMessageElement(e,t=!1){var n;const r=this.shadowDomManager.createElement("article");r.className="flex flex-col gap-1 max-w-[80%] "+("widget_user"===e.senderType?"self-end items-end":"self-start items-start"),r.setAttribute("data-message-id",(null===(n=e.id)||void 0===n?void 0:n.toString())||e.tempId||""),t&&r.setAttribute("data-is-latest","true");const o=this.shadowDomManager.createElement("div");if(o.className="px-3 py-2 rounded-lg text-sm break-words "+("widget_user"===e.senderType?"bg-primary text-primary-foreground":"bg-muted text-foreground"),o.textContent=e.content,r.appendChild(o),t){const t=this.shadowDomManager.createElement("div");t.className="flex items-center gap-1.5 text-xs text-muted-foreground px-1",t.setAttribute("data-meta","true");const n=this.shadowDomManager.createElement("span");if(n.textContent=this.formatTime(e.createdAt),t.appendChild(n),e.deliveryStatus&&"widget_user"===e.senderType){const n=this.shadowDomManager.createElement("span");n.className="inline-flex items-center",n.setAttribute("data-status","true"),n.innerHTML=this.getStatusIcon(e.deliveryStatus),n.setAttribute("aria-label",e.deliveryStatus),t.appendChild(n)}r.appendChild(t)}return r}updateMessageStatus(e,t){const n=this.container.querySelector(`[data-message-id="${e}"]`);if(n){const e=n.querySelector('[data-status="true"]');e&&(e.innerHTML=this.getStatusIcon(t),e.setAttribute("aria-label",t))}}updateMessageId(e,t){const n=this.container.querySelector(`[data-message-id="${e}"]`);if(n){n.setAttribute("data-message-id",t.toString());const r=this.messages.find(t=>t.tempId===e);r&&(r.id=t,delete r.tempId)}}getStatusIcon(e){switch(e){case"sent":return'<svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M13 4L6 11L3 8" stroke="#9ca3af" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';case"delivered":return'<svg width="16" height="14" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M16 4L9 11L6 8" stroke="#9ca3af" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M11 4L4 11L1 8" stroke="#9ca3af" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';case"read":return'<svg width="16" height="14" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-hidden="true"><path d="M16 4L9 11L6 8" stroke="#3b82f6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M11 4L4 11L1 8" stroke="#3b82f6" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';default:return""}}formatTime(e){const t=(new Date).getTime()-e.getTime(),n=Math.floor(t/6e4);if(n<1)return"Just now";if(n<60)return`${n}m ago`;const r=Math.floor(n/60);return r<24?`${r}h ago`:e.toLocaleDateString(void 0,{month:"short",day:"numeric"})}scrollToBottom(){requestAnimationFrame(()=>{this.container.scrollTop=this.container.scrollHeight})}render(e){e.appendChild(this.container)}clear(){this.messages=[],this.container.innerHTML=""}getMessages(){return this.messages}destroy(){this.container.remove()}}class x{constructor(e){this.shadowDomManager=e,this.isDisabled=!1,this.container=this.createContainer(),this.input=this.createInput(),this.sendButton=this.createSendButton(),this.setupEventListeners()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="flex items-center space-x-2 p-4",e}createInput(){const e=this.shadowDomManager.createElement("input");return e.type="text",e.className="input flex-1",e.placeholder="Send us a message...",e}createSendButton(){const e=this.shadowDomManager.createElement("button");return e.className="btn",e.disabled=!0,e.type="button",e.innerHTML='\n <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M2 10l16-8-8 16-2-6-6-2z" fill="currentColor"/>\n </svg>\n ',e.setAttribute("aria-label","Send message"),e}setupEventListeners(){this.input.addEventListener("input",()=>{this.sendButton.disabled=0===this.input.value.trim().length||this.isDisabled,this.onTypingCallback&&(this.onTypingCallback(!0),clearTimeout(this.typingTimeout),this.typingTimeout=setTimeout(()=>{var e;null===(e=this.onTypingCallback)||void 0===e||e.call(this,!1)},1e3))}),this.input.addEventListener("keydown",e=>{"Enter"===e.key&&(e.preventDefault(),this.handleSend())}),this.sendButton.addEventListener("click",()=>this.handleSend()),this.container.addEventListener("submit",e=>{e.preventDefault(),this.handleSend()})}handleSend(){const e=this.input.value.trim();e&&this.onSendCallback&&!this.isDisabled&&(this.onSendCallback(e),this.input.value="",this.sendButton.disabled=!0,this.onTypingCallback&&(clearTimeout(this.typingTimeout),this.onTypingCallback(!1)))}onSend(e){this.onSendCallback=e}onTyping(e){this.onTypingCallback=e}focus(){this.input.focus()}disable(){this.isDisabled=!0,this.input.disabled=!0,this.sendButton.disabled=!0,this.input.placeholder="Connecting..."}enable(){this.isDisabled=!1,this.input.disabled=!1,this.sendButton.disabled=0===this.input.value.trim().length,this.input.placeholder="Send us a message..."}render(e){this.container.appendChild(this.input),this.container.appendChild(this.sendButton),e.appendChild(this.container)}destroy(){clearTimeout(this.typingTimeout),this.container.remove()}}class k{constructor(e){this.shadowDomManager=e,this.isVisible=!1,this.container=this.createContainer()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="ff-typing-indicator",e.style.display="none",e.innerHTML='\n <div class="ff-typing-dots">\n <span class="ff-typing-dot"></span>\n <span class="ff-typing-dot"></span>\n <span class="ff-typing-dot"></span>\n </div>\n <span class="ff-typing-text">Agent is typing...</span>\n ',e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e}show(e="customer"){if(!this.isVisible){const t="customer"===e?"Agent is typing...":"User is typing...",n=this.container.querySelector(".ff-typing-text");n&&(n.textContent=t),this.container.style.display="flex",this.isVisible=!0}}hide(){this.isVisible&&(this.container.style.display="none",this.isVisible=!1)}render(e){e.appendChild(this.container)}destroy(){this.container.remove()}}class _{constructor(e){this.shadowDomManager=e,this.isVisible=!1,this.banner=this.createBanner()}createBanner(){const e=this.shadowDomManager.createElement("div");return e.className="ff-offline-banner",e.style.display="none",e.innerHTML='\n <svg width="16" height="16" viewBox="0 0 16 16" fill="none">\n <path d="M8 1L1 8l7 7 7-7-7-7z" fill="currentColor" opacity="0.2"/>\n <path d="M8 5v4M8 11v.01" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>\n </svg>\n <span>Connection lost. Trying to reconnect...</span>\n ',e.setAttribute("role","alert"),e.setAttribute("aria-live","assertive"),e}show(){this.isVisible||(this.banner.style.display="flex",this.isVisible=!0)}hide(){this.isVisible&&(this.banner.style.display="none",this.isVisible=!1)}render(e){e.appendChild(this.banner)}destroy(){this.banner.remove()}}class S{constructor(e){this.shadowDomManager=e,this.isOnline=!0,this.container=this.createContainer(),this.updateDisplay()}createContainer(){const e=this.shadowDomManager.createElement("div");return e.className="ff-presence-indicator",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e}setOnline(){this.isOnline=!0,this.updateDisplay()}setOffline(){this.isOnline=!1,this.updateDisplay()}updateDisplay(){this.container.style.display="flex",this.isOnline?(this.container.innerHTML='\n <span class="inline-flex items-center gap-1.5 text-xs text-green-400">\n <span class="w-2 h-2 bg-green-400 rounded-full"></span>\n Online\n </span>\n ',this.container.setAttribute("aria-label","Admin is online")):(this.container.innerHTML='\n <span class="inline-flex items-center gap-1.5 text-xs text-gray-400">\n <span class="w-2 h-2 bg-gray-400 rounded-full"></span>\n Offline, will be back soon\n </span>\n ',this.container.setAttribute("aria-label","Admin is offline and will be back soon"))}render(e){e.appendChild(this.container)}destroy(){this.container.remove()}}class C{constructor(e,t,n){this.config=e,this.shadowDomManager=t,this.callbacks=n,this.panel=null,this.currentView="home",this.isVisible=!1,this.selectedPrivacy="public",this.selectedRoadmapTab="request",this.featureScreenshot=null,this.bugScreenshot=null,this.featureMarkPosition=!1,this.bugMarkPosition=!1,this.messageList=new w(this.shadowDomManager),this.messageInput=new x(this.shadowDomManager),this.typingIndicator=new k(this.shadowDomManager),this.offlineBanner=new _(this.shadowDomManager),this.presenceIndicator=new S(this.shadowDomManager)}create(){this.panel=this.shadowDomManager.createElement("div"),this.panel.className="fixed bottom-24 right-6 w-96 max-w-[calc(100vw-3rem)] h-[600px] max-h-[calc(100vh-8rem)] z-[999998] bg-card overflow-hidden animate-popover-slide-in shadow-2xl border-2 border-gray-200 rounded-xl",this.panel.innerHTML=this.getPanelHTML();return this.shadowDomManager.getWidgetContainer().appendChild(this.panel),this.addEventListeners(),this.renderView(this.currentView),this.isVisible=!0,this.panel}getPanelHTML(){return'\n <div class="flex flex-col h-full w-full">\n \x3c!-- Content Area --\x3e\n <div id="view-container" class="flex-1 overflow-hidden">\n \x3c!-- Views will be rendered here --\x3e\n </div>\n\n <div class="flex items-center justify-center gap-1 py-2 border-t border-border/50">\n <span class="text-xs text-muted-foreground">Powered by \n <a href="https://feedbackfun.com" target="_blank" class="underline hover:no-underline">feedbackfun</a></span>\n </div>\n </div>\n '}renderView(e){var t;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#view-container");if(!n)return;let r="";switch(e){case"home":r=this.getHomeViewHTML();break;case"messages":r=this.getMessagesViewHTML();break;case"request-feature":r=this.getRequestFeatureViewHTML();break;case"report-bug":r=this.getReportBugViewHTML();break;case"roadmap":r=this.getRoadmapViewHTML()}n.innerHTML=r,this.addViewEventListeners(e)}getAdminAvatars(){return this.config.adminAvatars&&this.config.adminAvatars.length>0?this.config.adminAvatars:[]}getHomeViewHTML(){const e=this.getAdminAvatars(),t=e.map((e,t)=>`<img alt="Admin ${t+1}" src="${e}" />`).join("\n ");return`\n <div class="flex flex-col h-full">\n \x3c!-- Gradient Header Section --\x3e\n <div class="bg-linear-to-t from-transparent to-primary px-5 pt-6 pb-10 h-full">\n \x3c!-- Top Navigation --\x3e\n <div class="flex flex-row items-center justify-center gap-12 mb-3">\n <div class="flex -space-x-2 [&_img]:ring-background [&_img]:ring-2 [&_img]:size-12 [&_img]:shrink-0 [&_img]:object-cover [&_img]:rounded-full">\n ${t}\n </div>\n </div>\n\n \x3c!-- Greeting --\x3e\n <div class="text-center">\n <h1 class="text-2xl font-bold text-white mb-2 tracking-tight">\n Hi there,\n <span class="inline-block animate-wave origin-[70%_70%]">👋</span>\n </h1>\n <p class="text-base text-white/90 font-medium">\n How can we help you today?\n </p>\n </div>\n </div>\n\n \x3c!-- Content Cards --\x3e\n <div class="absolute top-3/5 left-0 right-0 -translate-y-2/3 flex flex-col px-5 space-y-3 overflow-y-auto">\n \x3c!-- Send Message Card --\x3e\n <button id="home-send-btn" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <div>\n <span class="text-base font-medium text-gray-800">Send us a message</span>\n <div class="ff-presence-indicator-container mt-2 text-sm text-gray-600"></div>\n </div>\n ${e[0]?`\n <div class="w-8 h-8 flex items-center justify-center">\n <div class="flex [&_img]:ring-background [&_img]:ring-2 [&_img]:shrink-0 [&_img]:object-cover [&_img]:rounded-full">\n <img alt="Admin" src="${e[0]}" />\n </div>\n </div>\n `:""}\n </button>\n\n \x3c!-- Request Feature Card --\x3e\n <button id="request-feature-btn" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <span class="text-base font-medium text-gray-800">Request a Feature</span>\n <svg class="w-5 h-5 text-gray-600 group-hover:translate-x-1 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lightbulb-icon lucide-lightbulb"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg>\n </button>\n\n \x3c!-- Report Bug Card --\x3e\n <button id="report-bug-btn" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <span class="text-base font-medium text-gray-800">Report a Bug</span>\n \n <svg class="w-5 h-5 text-gray-600 group-hover:translate-x-1 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug-icon lucide-bug"><path d="M12 20v-9"/><path d="M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z"/><path d="M14.12 3.88 16 2"/><path d="M21 21a4 4 0 0 0-3.81-4"/><path d="M21 5a4 4 0 0 1-3.55 3.97"/><path d="M22 13h-4"/><path d="M3 21a4 4 0 0 1 3.81-4"/><path d="M3 5a4 4 0 0 0 3.55 3.97"/><path d="M6 13H2"/><path d="m8 2 1.88 1.88"/><path d="M9 7.13V6a3 3 0 1 1 6 0v1.13"/></svg>\n </button>\n\n \x3c!-- Roadmap Card --\x3e\n <button id="roadmap-btn-home" class="bg-white rounded-2xl shadow-lg border border-gray-100 px-5 py-4 flex items-center justify-between hover:shadow-xl hover:scale-[1.01] transition-all duration-200 cursor-pointer group">\n <span class="text-base font-medium text-gray-800">View Roadmap</span>\n <svg class="w-5 h-5 text-gray-600 group-hover:translate-x-1 transition-transform" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-locate-fixed-icon lucide-locate-fixed"><line x1="2" x2="5" y1="12" y2="12"/><line x1="19" x2="22" y1="12" y2="12"/><line x1="12" x2="12" y1="2" y2="5"/><line x1="12" x2="12" y1="19" y2="22"/><circle cx="12" cy="12" r="7"/><circle cx="12" cy="12" r="3"/></svg>\n </button>\n </div>\n </div>\n `}getMessagesViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="bg-primary px-3 py-4">\n <div class="flex items-center gap-3">\n <button type="button" id="back-to-home" class="text-primary-foreground hover:opacity-80 transition-opacity">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1 text-center">\n <h2 class="text-md font-semibold text-primary-foreground">Messages</h2>\n <p class="text-xs text-primary-foreground/80 mt-0.5">We typically reply within a few minutes</p>\n </div>\n <div class="w-5"></div>\n </div>\n </div>\n\n \x3c!-- Chat Body --\x3e\n <div class="flex-1 flex flex-col overflow-hidden">\n \x3c!-- Offline Banner Container --\x3e\n <div class="ff-offline-banner-container"></div>\n\n \x3c!-- Message List Container --\x3e\n <div class="ff-message-list-container flex-1 overflow-hidden"></div>\n\n \x3c!-- Typing Indicator Container --\x3e\n <div class="ff-typing-indicator-container"></div>\n </div>\n\n \x3c!-- Message Input Container --\x3e\n <div class="ff-message-input-container border-t border-border"></div>\n </div>\n '}getRequestFeatureViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="flex items-start gap-3 p-5 border-b border-border">\n <button type="button" id="back-to-home" class="text-muted-foreground hover:text-foreground transition-colors mt-1">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Request a Feature</h2>\n <p class="text-sm text-muted-foreground leading-relaxed">Share your ideas to help us improve</p>\n </div>\n </div>\n\n \x3c!-- Content --\x3e\n <div class="flex-1 overflow-y-auto p-5 space-y-4">\n \x3c!-- Textarea --\x3e\n <div class="space-y-2">\n <textarea\n id="feature-textarea"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Describe the feature you\'d like to see..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="feature-hint" class="text-muted-foreground">What would make your experience better?</span>\n <span id="feature-counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Screenshot Section --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Screenshot (Optional, Max 5MB)</label>\n <div class="flex items-center gap-2 mb-2">\n <input type="checkbox" id="feature-mark-position" class="w-4 h-4 rounded border-input text-primary focus:ring-2 focus:ring-primary" />\n <label for="feature-mark-position" class="text-sm text-foreground cursor-pointer">Mark specific position on screenshot</label>\n </div>\n <div class="flex gap-2">\n <button type="button" id="feature-capture-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n Screenshot\n </button>\n <button type="button" id="feature-upload-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>\n </svg>\n Attach File\n </button>\n <input type="file" id="feature-file-input" accept="image/*" class="hidden" />\n </div>\n <div id="feature-screenshot-preview" class="hidden mt-3 relative">\n <img id="feature-screenshot-img" src="" alt="Screenshot preview" class="w-full rounded-lg border border-border" />\n <button type="button" id="feature-remove-screenshot" class="absolute top-2 right-2 p-1.5 bg-red-500 text-white rounded-full hover:bg-red-600 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>\n </svg>\n </button>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Who can see your feedback?</label>\n <div class="relative">\n <button type="button" id="privacy-btn" class="w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors">\n <div class="flex items-center gap-1.5">\n <svg id="privacy-icon" class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacy-label" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacy-menu" class="absolute top-full left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden">\n <div class="p-1">\n <button type="button" data-privacy="public" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- Submit Button --\x3e\n <button id="feature-submit-btn" disabled class="w-full bg-primary text-primary-foreground font-medium py-2.5 rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">\n Submit feature request\n </button>\n\n </div>\n </div>\n '}getReportBugViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="flex items-start gap-3 p-5 border-b border-border">\n <button type="button" id="back-to-home" class="text-muted-foreground hover:text-foreground transition-colors mt-1">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1">\n <h2 class="text-xl font-semibold text-card-foreground mb-2">Report a Bug</h2>\n <p class="text-sm text-muted-foreground leading-relaxed">Help us fix issues and improve quality</p>\n </div>\n </div>\n\n \x3c!-- Content --\x3e\n <div class="flex-1 overflow-y-auto p-5 space-y-4">\n \x3c!-- Textarea --\x3e\n <div class="space-y-2">\n <textarea\n id="bug-textarea"\n class="w-full min-h-[100px] px-3 py-2.5 text-base sm:text-sm bg-background border border-input rounded-md resize-none focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent placeholder:text-muted-foreground"\n placeholder="Describe the issue you\'re experiencing..."\n maxlength="500"\n rows="4"\n spellcheck="false"\n ></textarea>\n <div class="flex items-center justify-between text-xs">\n <span id="bug-hint" class="text-muted-foreground">What went wrong and when did it happen?</span>\n <span id="bug-counter" class="text-muted-foreground">0 / 500</span>\n </div>\n </div>\n\n \x3c!-- Screenshot Section --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Screenshot (Optional, Max 5MB)</label>\n <div class="flex items-center gap-2 mb-2">\n <input type="checkbox" id="bug-mark-position" class="w-4 h-4 rounded border-input text-primary focus:ring-2 focus:ring-primary" />\n <label for="bug-mark-position" class="text-sm text-foreground cursor-pointer">Mark specific position on screenshot</label>\n </div>\n <div class="flex gap-2">\n <button type="button" id="bug-capture-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n Screenshot\n </button>\n <button type="button" id="bug-upload-btn" class="flex-1 flex items-center justify-center gap-2 px-3 py-2 text-sm bg-background border border-input rounded-md hover:bg-muted/50 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>\n </svg>\n Attach File\n </button>\n <input type="file" id="bug-file-input" accept="image/*" class="hidden" />\n </div>\n <div id="bug-screenshot-preview" class="hidden mt-3 relative">\n <img id="bug-screenshot-img" src="" alt="Screenshot preview" class="w-full rounded-lg border border-border" />\n <button type="button" id="bug-remove-screenshot" class="absolute top-2 right-2 p-1.5 bg-red-500 text-white rounded-full hover:bg-red-600 transition-colors">\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>\n </svg>\n </button>\n </div>\n </div>\n\n \x3c!-- Privacy Select --\x3e\n <div class="space-y-2">\n <label class="text-sm font-medium text-foreground">Who can see your feedback?</label>\n <div class="relative">\n <button type="button" id="privacy-btn" class="w-full flex items-center justify-between px-2.5 py-1.5 text-xs bg-background border border-input rounded hover:bg-muted/50 transition-colors">\n <div class="flex items-center gap-1.5">\n <svg id="privacy-icon" class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <span id="privacy-label" class="text-foreground text-xs">Public</span>\n </div>\n <svg class="w-3.5 h-3.5 text-muted-foreground" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </button>\n <div id="privacy-menu" class="absolute top-full left-0 right-0 mt-1 bg-popover border border-border rounded shadow-lg z-50 hidden">\n <div class="p-1">\n <button type="button" data-privacy="public" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle cx="12" cy="12" r="10"/>\n <path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/>\n <path d="M2 12h20"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Public</div>\n <div class="text-[11px] text-muted-foreground">Visible to everyone with access</div>\n </div>\n </button>\n <button type="button" data-privacy="admin_only" class="privacy-option w-full flex items-center gap-2 px-2.5 py-1.5 text-xs hover:bg-muted rounded transition-colors">\n <svg class="w-3.5 h-3.5 text-muted-foreground shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>\n </svg>\n <div class="text-left">\n <div class="font-medium text-popover-foreground">Admin Only</div>\n <div class="text-[11px] text-muted-foreground">Restricted to admins only</div>\n </div>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- Submit Button --\x3e\n <button id="bug-submit-btn" disabled class="w-full bg-primary text-primary-foreground font-medium py-2.5 rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed">\n Submit bug report\n </button>\n\n </div>\n </div>\n '}getRoadmapViewHTML(){return'\n <div class="flex flex-col h-full bg-card">\n \x3c!-- Header --\x3e\n <div class="flex items-start gap-3 px-5 pt-5 pb-4">\n <button type="button" id="back-to-home" class="text-muted-foreground hover:text-foreground transition-colors mt-1">\n <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>\n </svg>\n </button>\n <div class="flex-1">\n <h2 class="text-xl font-semibold text-card-foreground mb-1">Roadmap</h2>\n <p class="text-sm text-muted-foreground">See what we\'re building and what\'s coming next</p>\n </div>\n </div>\n\n \x3c!-- Tabs --\x3e\n <div class="border-b border-border px-5">\n <nav role="tablist" aria-orientation="horizontal" class="flex gap-1">\n <button\n type="button"\n role="tab"\n id="tab-request"\n data-tab="request"\n aria-selected="true"\n class="roadmap-tab relative px-4 py-2.5 text-sm font-medium transition-colors rounded-t-md"\n >\n <span class="relative z-10">Request</span>\n </button>\n <button\n type="button"\n role="tab"\n id="tab-development"\n data-tab="development"\n aria-selected="false"\n class="roadmap-tab relative px-4 py-2.5 text-sm font-medium transition-colors rounded-t-md"\n >\n <span class="relative z-10">Development</span>\n </button>\n <button\n type="button"\n role="tab"\n id="tab-done"\n data-tab="done"\n aria-selected="false"\n class="roadmap-tab relative px-4 py-2.5 text-sm font-medium transition-colors rounded-t-md"\n >\n <span class="relative z-10">Done</span>\n </button>\n </nav>\n </div>\n\n \x3c!-- Tab Content --\x3e\n <div class="flex-1 overflow-y-auto p-5">\n <div id="roadmap-content" class="space-y-3">\n \x3c!-- Roadmap items will be rendered here --\x3e\n <div class="text-center py-12 text-muted-foreground">\n <svg class="w-12 h-12 mx-auto mb-3 opacity-50" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z"/>\n </svg>\n <p class="text-sm">No roadmap items yet</p>\n <p class="text-xs mt-1">Items will appear here as they are added</p>\n </div>\n </div>\n </div>\n </div>\n '}addEventListeners(){this.panel}addViewEventListeners(e){if(this.panel)switch(e){case"home":this.addHomeViewListeners();break;case"messages":this.addMessagesViewListeners();break;case"request-feature":this.addRequestFeatureViewListeners();break;case"report-bug":this.addReportBugViewListeners();break;case"roadmap":this.addRoadmapViewListeners()}}addHomeViewListeners(){var e,t,n,r,o;const i=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#home-send-btn"),s=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#request-feature-btn"),a=null===(n=this.panel)||void 0===n?void 0:n.querySelector("#report-bug-btn"),c=null===(r=this.panel)||void 0===r?void 0:r.querySelector("#roadmap-btn-home");null==i||i.addEventListener("click",()=>{this.callbacks.onOpenChat(),this.switchView("messages")}),null==s||s.addEventListener("click",()=>{this.switchView("request-feature")}),null==a||a.addEventListener("click",()=>{this.switchView("report-bug")}),null==c||c.addEventListener("click",()=>{this.switchView("roadmap")});const l=null===(o=this.panel)||void 0===o?void 0:o.querySelector(".ff-presence-indicator-container");l&&this.presenceIndicator.render(l)}addMessagesViewListeners(){if(!this.panel)return;const e=this.panel.querySelector("#back-to-home");null==e||e.addEventListener("click",()=>{this.switchView("home")});const t=this.panel.querySelector(".ff-offline-banner-container"),n=this.panel.querySelector(".ff-message-list-container"),r=this.panel.querySelector(".ff-typing-indicator-container"),o=this.panel.querySelector(".ff-message-input-container"),i=this.panel.querySelector(".ff-presence-indicator-container");t&&this.offlineBanner.render(t),n&&this.messageList.render(n),r&&this.typingIndicator.render(r),o&&this.messageInput.render(o),i&&this.presenceIndicator.render(i),this.callbacks.onOpenChat()}addRequestFeatureViewListeners(){var e,t,n,r,o,i,s,a,c,l,d,u,p,h,f,g;const m=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#back-to-home");null==m||m.addEventListener("click",()=>{this.switchView("home")});const v=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#feature-textarea"),y=null===(n=this.panel)||void 0===n?void 0:n.querySelector("#feature-counter"),b=null===(r=this.panel)||void 0===r?void 0:r.querySelector("#feature-hint"),w=null===(o=this.panel)||void 0===o?void 0:o.querySelector("#feature-submit-btn");null==v||v.addEventListener("input",()=>{const e=v.value.length;y&&(y.textContent=`${e} / 500`),e>=10?(w.disabled=!1,b&&(b.textContent="Great! Tell us more.")):(w.disabled=!0,b&&(b.textContent="What would make your experience better?"))});const x=null===(i=this.panel)||void 0===i?void 0:i.querySelector("#privacy-btn"),k=null===(s=this.panel)||void 0===s?void 0:s.querySelector("#privacy-menu"),_=null===(a=this.panel)||void 0===a?void 0:a.querySelectorAll(".privacy-option");null==x||x.addEventListener("click",e=>{e.stopPropagation(),null==k||k.classList.toggle("hidden")}),null==_||_.forEach(e=>{e.addEventListener("click",e=>{e.stopPropagation();const t=e.currentTarget.dataset.privacy;this.selectPrivacy(t),null==k||k.classList.add("hidden")})});const S=e=>{const t=e.target;(null==x?void 0:x.contains(t))||(null==k?void 0:k.contains(t))||null==k||k.classList.add("hidden")};setTimeout(()=>{var e;null===(e=this.panel)||void 0===e||e.addEventListener("click",S)},0);const C=null===(c=this.panel)||void 0===c?void 0:c.querySelector("#feature-mark-position"),E=null===(l=this.panel)||void 0===l?void 0:l.querySelector("#feature-capture-btn"),T=null===(d=this.panel)||void 0===d?void 0:d.querySelector("#feature-upload-btn"),M=null===(u=this.panel)||void 0===u?void 0:u.querySelector("#feature-file-input"),I=null===(p=this.panel)||void 0===p?void 0:p.querySelector("#feature-screenshot-preview"),A=null===(h=this.panel)||void 0===h?void 0:h.querySelector("#feature-screenshot-img"),R=null===(f=this.panel)||void 0===f?void 0:f.querySelector("#feature-remove-screenshot");null==C||C.addEventListener("change",()=>{this.featureMarkPosition=C.checked}),null==E||E.addEventListener("click",()=>{null==I||I.classList.remove("hidden"),A&&(A.src="",A.style.display="none");const e=this.createLoadingSpinner();null==I||I.appendChild(e);const t=E;t.disabled=!0,this.featureMarkPosition?E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5"/>\n </svg>\n <span class="ml-2">Click on page...</span>\n ':E.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>\n <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>\n </svg>\n <span class="ml-2">Capturing...</span>\n ';(this.featureMarkPosition?this.callbacks.onCaptureScreenshotWithPosition():this.callbacks.onCaptureScreenshot()).then(t=>{null==e||e.remove(),t?(this.featureScreenshot=t,A&&(A.src=t,A.style.display="block")):(I&&this.showScreenshotError(I,"Failed to capture screenshot. Please try again."),null==I||I.classList.add("hidden"))}).catch(t=>{null==e||e.remove(),I&&this.showScreenshotError(I,"Error capturing screenshot. Please try again."),null==I||I.classList.add("hidden")}).finally(()=>{t.disabled=!1,E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n <span class="ml-2">Screenshot</span>\n '})}),null==T||T.addEventListener("click",()=>{null==M||M.click()}),null==M||M.addEventListener("change",e=>{var t;const n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(n){if(n.size>5242880)return void alert("File size must be less than 5MB");const e=new FileReader;e.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;this.featureScreenshot=n,A&&(A.src=n),null==I||I.classList.remove("hidden")},e.readAsDataURL(n)}}),null==R||R.addEventListener("click",()=>{this.featureScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}),null==w||w.addEventListener("click",async()=>{const e=null==v?void 0:v.value.trim();if(e&&e.length>=10){w.disabled=!0,w.textContent="Submitting...";try{await this.callbacks.onSubmitFeedback(e,"feature",this.selectedPrivacy,this.featureScreenshot||void 0),v&&(v.value=""),y&&(y.textContent="0 / 500"),b&&(b.textContent="What would make your experience better?"),w.textContent="Submit feature request",this.featureScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}catch(e){w.disabled=!1,w.textContent="Submit feature request"}}});const L=null===(g=this.panel)||void 0===g?void 0:g.querySelector("#roadmap-btn");null==L||L.addEventListener("click",()=>{this.callbacks.onOpenRoadmap()})}addReportBugViewListeners(){var e,t,n,r,o,i,s,a,c,l,d,u,p,h,f,g;const m=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#back-to-home");null==m||m.addEventListener("click",()=>{this.switchView("home")});const v=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#bug-textarea"),y=null===(n=this.panel)||void 0===n?void 0:n.querySelector("#bug-counter"),b=null===(r=this.panel)||void 0===r?void 0:r.querySelector("#bug-hint"),w=null===(o=this.panel)||void 0===o?void 0:o.querySelector("#bug-submit-btn");null==v||v.addEventListener("input",()=>{const e=v.value.length;y&&(y.textContent=`${e} / 500`),e>=10?(w.disabled=!1,b&&(b.textContent="Thanks for helping us improve!")):(w.disabled=!0,b&&(b.textContent="What went wrong and when did it happen?"))});const x=null===(i=this.panel)||void 0===i?void 0:i.querySelector("#privacy-btn"),k=null===(s=this.panel)||void 0===s?void 0:s.querySelector("#privacy-menu"),_=null===(a=this.panel)||void 0===a?void 0:a.querySelectorAll(".privacy-option");null==x||x.addEventListener("click",e=>{e.stopPropagation(),null==k||k.classList.toggle("hidden")}),null==_||_.forEach(e=>{e.addEventListener("click",e=>{e.stopPropagation();const t=e.currentTarget.dataset.privacy;this.selectPrivacy(t),null==k||k.classList.add("hidden")})});const S=e=>{const t=e.target;(null==x?void 0:x.contains(t))||(null==k?void 0:k.contains(t))||null==k||k.classList.add("hidden")};setTimeout(()=>{var e;null===(e=this.panel)||void 0===e||e.addEventListener("click",S)},0);const C=null===(c=this.panel)||void 0===c?void 0:c.querySelector("#bug-mark-position"),E=null===(l=this.panel)||void 0===l?void 0:l.querySelector("#bug-capture-btn"),T=null===(d=this.panel)||void 0===d?void 0:d.querySelector("#bug-upload-btn"),M=null===(u=this.panel)||void 0===u?void 0:u.querySelector("#bug-file-input"),I=null===(p=this.panel)||void 0===p?void 0:p.querySelector("#bug-screenshot-preview"),A=null===(h=this.panel)||void 0===h?void 0:h.querySelector("#bug-screenshot-img"),R=null===(f=this.panel)||void 0===f?void 0:f.querySelector("#bug-remove-screenshot");null==C||C.addEventListener("change",()=>{this.bugMarkPosition=C.checked}),null==E||E.addEventListener("click",()=>{null==I||I.classList.remove("hidden"),A&&(A.src="",A.style.display="none");const e=this.createLoadingSpinner();null==I||I.appendChild(e);const t=E;t.disabled=!0,this.bugMarkPosition?E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5"/>\n </svg>\n <span class="ml-2">Click on page...</span>\n ':E.innerHTML='\n <svg class="w-4 h-4 animate-spin" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>\n <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>\n </svg>\n <span class="ml-2">Capturing...</span>\n ';(this.bugMarkPosition?this.callbacks.onCaptureScreenshotWithPosition():this.callbacks.onCaptureScreenshot()).then(t=>{null==e||e.remove(),t?(this.bugScreenshot=t,A&&(A.src=t,A.style.display="block")):(I&&this.showScreenshotError(I,"Failed to capture screenshot. Please try again."),null==I||I.classList.add("hidden"))}).catch(t=>{null==e||e.remove(),I&&this.showScreenshotError(I,"Error capturing screenshot. Please try again."),null==I||I.classList.add("hidden")}).finally(()=>{t.disabled=!1,E.innerHTML='\n <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"/>\n <path stroke-linecap="round" stroke-linejoin="round" d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"/>\n </svg>\n <span class="ml-2">Screenshot</span>\n '})}),null==T||T.addEventListener("click",()=>{null==M||M.click()}),null==M||M.addEventListener("change",e=>{var t;const n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(n){if(n.size>5242880)return void alert("File size must be less than 5MB");const e=new FileReader;e.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;this.bugScreenshot=n,A&&(A.src=n),null==I||I.classList.remove("hidden")},e.readAsDataURL(n)}}),null==R||R.addEventListener("click",()=>{this.bugScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}),null==w||w.addEventListener("click",async()=>{const e=null==v?void 0:v.value.trim();if(e&&e.length>=10){w.disabled=!0,w.textContent="Submitting...";try{await this.callbacks.onSubmitFeedback(e,"bug",this.selectedPrivacy,this.bugScreenshot||void 0),v&&(v.value=""),y&&(y.textContent="0 / 500"),b&&(b.textContent="What went wrong and when did it happen?"),w.textContent="Submit bug report",this.bugScreenshot=null,A&&(A.src=""),null==I||I.classList.add("hidden"),M&&(M.value="")}catch(e){w.disabled=!1,w.textContent="Submit bug report"}}});const L=null===(g=this.panel)||void 0===g?void 0:g.querySelector("#roadmap-btn");null==L||L.addEventListener("click",()=>{this.callbacks.onOpenRoadmap()})}addRoadmapViewListeners(){var e,t;const n=null===(e=this.panel)||void 0===e?void 0:e.querySelector("#back-to-home");null==n||n.addEventListener("click",()=>{this.switchView("home")});const r=null===(t=this.panel)||void 0===t?void 0:t.querySelectorAll(".roadmap-tab");null==r||r.forEach(e=>{e.addEventListener("click",e=>{const t=e.currentTarget.dataset.tab;this.selectRoadmapTab(t)})}),this.selectRoadmapTab(this.selectedRoadmapTab)}selectRoadmapTab(e){var t;this.selectedRoadmapTab=e;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelectorAll(".roadmap-tab");null==n||n.forEach(t=>{const n=t.getAttribute("data-tab")===e;t.setAttribute("aria-selected",n.toString()),n?(t.classList.remove("text-muted-foreground","hover:bg-muted/50"),t.classList.add("bg-muted","text-foreground","border-b-2","border-primary")):(t.classList.remove("bg-muted","text-foreground","border-b-2","border-primary"),t.classList.add("text-muted-foreground","hover:bg-muted/50"))}),this.renderRoadmapContent(e)}async renderRoadmapContent(e){var t;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#roadmap-content");if(!n)return;const r={request:"pending",development:"in_progress",done:"done"}[e];n.innerHTML=this.getLoadingStateHTML();try{const t=await this.callbacks.onFetchRoadmapItems(r);if(0===t.length)n.innerHTML=this.getEmptyStateHTML(e);else{const e=t.map(e=>this.getRoadmapItemHTML(e)).join("");n.innerHTML=e}}catch(e){n.innerHTML=this.getErrorStateHTML()}}getRoadmapItemHTML(e){const t={feature:'<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"/>\n </svg>',bug:'<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>\n </svg>',other:'<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"/>\n </svg>'},n=e.tags&&e.tags.length>0?`<div class="flex flex-wrap gap-1 mb-2">\n ${e.tags.map(e=>`\n <span class="inline-flex items-center px-2 py-0.5 rounded-md border text-xs font-medium"\n style="background-color: ${e.color}20; border-color: ${e.color}; color: ${e.color};">\n ${this.escapeHtml(e.name)}\n </span>\n `).join("")}\n </div>`:"",r=e.screenshotBase64?`<div class="mt-3 rounded-lg overflow-hidden border border-border bg-gray-50">\n <img src="${e.screenshotBase64}" alt="Screenshot" class="w-full h-auto max-h-48 object-contain" />\n </div>`:"",o=e.username||e.userIdentifier?`<div class="flex items-center gap-2 mt-2">\n ${e.avatar?`<img src="${e.avatar}" alt="${e.username||"User"}" class="w-5 h-5 rounded-full" />`:`<div class="w-5 h-5 rounded-full bg-primary/10 flex items-center justify-center">\n <span class="text-xs font-medium text-primary">${(e.username||e.userIdentifier||"A")[0].toUpperCase()}</span>\n </div>`}\n <span class="text-xs text-muted-foreground">${this.escapeHtml(e.username||e.userIdentifier||"Anonymous")}</span>\n </div>`:"";return`\n <div class="bg-white border border-border rounded-xl p-4 hover:shadow-lg hover:border-primary/20 transition-all duration-200 cursor-pointer">\n <div class="flex gap-3">\n \x3c!-- Vote button on left --\x3e\n <button class="flex flex-col items-center gap-0.5 px-2.5 py-1.5 rounded-md border border-input bg-background hover:bg-muted/50 transition-colors group shrink-0 self-start">\n <svg class="w-4 h-4 text-muted-foreground group-hover:text-primary transition-colors" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M5 15l7-7 7 7"/>\n </svg>\n <span class="text-sm font-medium text-foreground group-hover:text-primary transition-colors">${e.voteCount}</span>\n </button>\n\n \x3c!-- Content area --\x3e\n <div class="flex-1 min-w-0">\n \x3c!-- Type badge --\x3e\n <span class="inline-flex items-center gap-1 px-2 py-0.5 rounded-md border text-xs font-medium ${{feature:"bg-blue-50 text-blue-700 border-blue-200",bug:"bg-red-50 text-red-700 border-red-200",other:"bg-gray-50 text-gray-700 border-gray-200"}[e.type]} mb-2">\n ${t[e.type]}\n ${{feature:"Feature",bug:"Bug",other:"Feedback"}[e.type]}\n </span>\n\n \x3c!-- Tags display --\x3e\n ${n}\n\n \x3c!-- Content --\x3e\n <h3 class="text-base font-semibold text-foreground mb-2 leading-snug">${this.escapeHtml(e.content)}</h3>\n\n ${o}\n ${r}\n </div>\n </div>\n </div>\n `}getLoadingStateHTML(){return'\n <div class="text-center py-12">\n <div class="inline-block w-8 h-8 border-4 border-primary border-t-transparent rounded-full animate-spin"></div>\n <p class="text-sm text-muted-foreground mt-3">Loading roadmap items...</p>\n </div>\n '}getEmptyStateHTML(e){let t="";switch(e){case"request":t="No feature requests yet";break;case"development":t="Nothing in development";break;case"done":t="No completed items"}return`\n <div class="text-center py-12 text-muted-foreground">\n <svg class="w-12 h-12 mx-auto mb-3 opacity-50" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 002.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 00-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25zM6.75 12h.008v.008H6.75V12zm0 3h.008v.008H6.75V15zm0 3h.008v.008H6.75V18z"/>\n </svg>\n <p class="text-sm font-medium">${t}</p>\n <p class="text-xs mt-1">Items will appear here as they are added</p>\n </div>\n `}getErrorStateHTML(){return'\n <div class="text-center py-12 text-muted-foreground">\n <svg class="w-12 h-12 mx-auto mb-3 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="1.5">\n <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"/>\n </svg>\n <p class="text-sm font-medium">Failed to load roadmap items</p>\n <p class="text-xs mt-1">Please try again later</p>\n </div>\n '}escapeHtml(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}createLoadingSpinner(){const e=this.shadowDomManager.createElement("div");return e.className="flex flex-col items-center justify-center py-8",this.featureMarkPosition&&(e.innerHTML='<div class="w-10 h-10 border-4 border-primary border-t-transparent rounded-full animate-spin"></div>\n <p class="text-sm text-muted-foreground mt-3">Capturing screenshot...</p>'),this.bugMarkPosition&&(e.innerHTML='<div class="w-10 h-10 border-4 border-primary border-t-transparent rounded-full animate-spin"></div>\n <p class="text-sm text-muted-foreground mt-3">Click anywhere on the page to select position</p>'),e}showScreenshotError(e,t){if(!e)return;const n=this.shadowDomManager.createElement("div");n.className="bg-red-50 border border-red-200 rounded-lg p-3 mt-2",n.innerHTML=`\n <div class="flex items-start gap-2">\n <svg class="w-5 h-5 text-red-500 shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>\n </svg>\n <p class="text-sm text-red-700">${t}</p>\n </div>\n `,e.appendChild(n),setTimeout(()=>n.remove(),3e3)}selectPrivacy(e){var t;this.selectedPrivacy=e;const n=null===(t=this.panel)||void 0===t?void 0:t.querySelector("#privacy-label");n&&(n.textContent="public"===e?"Public":"Admin Only")}switchView(e){this.currentView=e,this.renderView(e)}show(){this.panel&&(this.panel.style.display="flex",this.isVisible=!0)}hide(){this.panel&&(this.panel.style.display="none",this.isVisible=!1)}remove(){this.panel&&(this.panel.remove(),this.panel=null,this.isVisible=!1)}isOpen(){return this.isVisible}getElement(){return this.panel}getCurrentView(){return this.currentView}setView(e){this.switchView(e)}getMessageList(){return this.messageList}getMessageInput(){return this.messageInput}showOfflineBanner(){this.offlineBanner.show(),this.messageInput.disable()}hideOfflineBanner(){this.offlineBanner.hide(),this.messageInput.enable()}showTyping(e){this.typingIndicator.show(e)}hideTyping(){this.typingIndicator.hide()}setPresenceOnline(){this.presenceIndicator.setOnline()}setPresenceOffline(){this.presenceIndicator.setOffline()}}function E(){const e=window.innerWidth;return e<=768?"mobile":e<=1024?"tablet":"desktop"}function T(){const e=document.createElement("div");e.className="feedbackfun-message feedbackfun-error",e.innerHTML="❌ Failed to submit comment. Please try again.",document.body.appendChild(e),setTimeout(()=>{e.remove()},4e3)}const M=(()=>{let e=0;return()=>(e+=1,`u${`0000${(Math.random()*36**4|0).toString(36)}`.slice(-4)}${e}`)})();function I(e){const t=[];for(let n=0,r=e.length;n<r;n++)t.push(e[n]);return t}let A=null;function R(e={}){return A||(e.includeStyleProperties?(A=e.includeStyleProperties,A):(A=I(window.getComputedStyle(document.documentElement)),A))}function L(e,t){const n=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return n?parseFloat(n.replace("px","")):0}function P(e,t={}){return{width:t.width||function(e){const t=L(e,"border-left-width"),n=L(e,"border-right-width");return e.clientWidth+t+n}(e),height:t.height||function(e){const t=L(e,"border-top-width"),n=L(e,"border-bottom-width");return e.clientHeight+t+n}(e)}}const O=16384;function D(e){return new Promise((t,n)=>{const r=new Image;r.onload=()=>{r.decode().then(()=>{requestAnimationFrame(()=>t(r))})},r.onerror=n,r.crossOrigin="anonymous",r.decoding="async",r.src=e})}async function N(e,t,n){const r="http://www.w3.org/2000/svg",o=document.createElementNS(r,"svg"),i=document.createElementNS(r,"foreignObject");return o.setAttribute("width",`${t}`),o.setAttribute("height",`${n}`),o.setAttribute("viewBox",`0 0 ${t} ${n}`),i.setAttribute("width","100%"),i.setAttribute("height","100%"),i.setAttribute("x","0"),i.setAttribute("y","0"),i.setAttribute("externalResourcesRequired","true"),o.appendChild(i),i.appendChild(e),async function(e){return Promise.resolve().then(()=>(new XMLSerializer).serializeToString(e)).then(encodeURIComponent).then(e=>`data:image/svg+xml;charset=utf-8,${e}`)}(o)}const B=(e,t)=>{if(e instanceof t)return!0;const n=Object.getPrototypeOf(e);return null!==n&&(n.constructor.name===t.name||B(n,t))};function j(e,t,n,r){const o=`.${e}:${t}`,i=n.cssText?function(e){const t=e.getPropertyValue("content");return`${e.cssText} content: '${t.replace(/'|"/g,"")}';`}(n):function(e,t){return R(t).map(t=>`${t}: ${e.getPropertyValue(t)}${e.getPropertyPriority(t)?" !important":""};`).join(" ")}(n,r);return document.createTextNode(`${o}{${i}}`)}function $(e,t,n,r){const o=window.getComputedStyle(e,n),i=o.getPropertyValue("content");if(""===i||"none"===i)return;const s=M();try{t.className=`${t.className} ${s}`}catch(e){return}const a=document.createElement("style");a.appendChild(j(s,n,o,r)),t.appendChild(a)}const z="application/font-woff",F="image/jpeg",H={woff:z,woff2:z,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:F,jpeg:F,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function q(e){const t=function(e){const t=/\.([^./]*?)$/g.exec(e);return t?t[1]:""}(e).toLowerCase();return H[t]||""}function U(e){return-1!==e.search(/^(data:)/)}function W(e,t){return`data:${t};base64,${e}`}async function V(e,t,n){const r=await fetch(e,t);if(404===r.status)throw new Error(`Resource "${r.url}" not found`);const o=await r.blob();return new Promise((e,t)=>{const i=new FileReader;i.onerror=t,i.onloadend=()=>{try{e(n({res:r,result:i.result}))}catch(e){t(e)}},i.readAsDataURL(o)})}const K={};async function G(e,t,n){const r=function(e,t,n){let r=e.replace(/\?.*/,"");return n&&(r=e),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,"")),t?`[${t}]${r}`:r}(e,t,n.includeQueryParams);if(null!=K[r])return K[r];let o;n.cacheBust&&(e+=(/\?/.test(e)?"&":"?")+(new Date).getTime());try{const r=await V(e,n.fetchRequestInit,({res:e,result:n})=>(t||(t=e.headers.get("Content-Type")||""),function(e){return e.split(/,/)[1]}(n)));o=W(r,t)}catch(t){o=n.imagePlaceholder||"";let r=`Failed to fetch resource: ${e}`;t&&(r="string"==typeof t?t:t.message)}return K[r]=o,o}async function J(e,t){return B(e,HTMLCanvasElement)?async function(e){const t=e.toDataURL();return"data:,"===t?e.cloneNode(!1):D(t)}(e):B(e,HTMLVideoElement)?async function(e,t){if(e.currentSrc){const t=document.createElement("canvas"),n=t.getContext("2d");return t.width=e.clientWidth,t.height=e.clientHeight,null==n||n.drawImage(e,0,0,t.width,t.height),D(t.toDataURL())}const n=e.poster,r=q(n);return D(await G(n,r,t))}(e,t):B(e,HTMLIFrameElement)?async function(e,t){var n;try{if(null===(n=null==e?void 0:e.contentDocument)||void 0===n?void 0:n.body)return await Z(e.contentDocument.body,t,!0)}catch(e){}return e.cloneNode(!1)}(e,t):e.cloneNode(X(e))}const Y=e=>null!=e.tagName&&"SLOT"===e.tagName.toUpperCase(),X=e=>null!=e.tagName&&"SVG"===e.tagName.toUpperCase();function Q(e,t,n){return B(t,Element)&&(function(e,t,n){const r=t.style;if(!r)return;const o=window.getComputedStyle(e);o.cssText?(r.cssText=o.cssText,r.transformOrigin=o.transformOrigin):R(n).forEach(n=>{let i=o.getPropertyValue(n);if("font-size"===n&&i.endsWith("px")){const e=Math.floor(parseFloat(i.substring(0,i.length-2)))-.1;i=`${e}px`}B(e,HTMLIFrameElement)&&"display"===n&&"inline"===i&&(i="block"),"d"===n&&t.getAttribute("d")&&(i=`path(${t.getAttribute("d")})`),r.setProperty(n,i,o.getPropertyPriority(n))})}(e,t,n),function(e,t,n){$(e,t,":before",n),$(e,t,":after",n)}(e,t,n),function(e,t){B(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),B(e,HTMLInputElement)&&t.setAttribute("value",e.value)}(e,t),function(e,t){if(B(e,HTMLSelectElement)){const n=t,r=Array.from(n.children).find(t=>e.value===t.getAttribute("value"));r&&r.setAttribute("selected","")}}(e,t)),t}async function Z(e,t,n){return n||!t.filter||t.filter(e)?Promise.resolve(e).then(e=>J(e,t)).then(n=>async function(e,t,n){var r,o;if(X(t))return t;let i=[];return i=Y(e)&&e.assignedNodes?I(e.assignedNodes()):B(e,HTMLIFrameElement)&&(null===(r=e.contentDocument)||void 0===r?void 0:r.body)?I(e.contentDocument.body.childNodes):I((null!==(o=e.shadowRoot)&&void 0!==o?o:e).childNodes),0===i.length||B(e,HTMLVideoElement)||await i.reduce((e,r)=>e.then(()=>Z(r,n)).then(e=>{e&&t.appendChild(e)}),Promise.resolve()),t}(e,n,t)).then(n=>Q(e,n,t)).then(e=>async function(e,t){const n=e.querySelectorAll?e.querySelectorAll("use"):[];if(0===n.length)return e;const r={};for(let o=0;o<n.length;o++){const i=n[o].getAttribute("xlink:href");if(i){const n=e.querySelector(i),o=document.querySelector(i);n||!o||r[i]||(r[i]=await Z(o,t,!0))}}const o=Object.values(r);if(o.length){const t="http://www.w3.org/1999/xhtml",n=document.createElementNS(t,"svg");n.setAttribute("xmlns",t),n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",n.style.display="none";const r=document.createElementNS(t,"defs");n.appendChild(r);for(let e=0;e<o.length;e++)r.appendChild(o[e]);e.appendChild(n)}return e}(e,t)):null}const ee=/url\((['"]?)([^'"]+?)\1\)/g,te=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,ne=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;async function re(e,t,n,r,o){try{const i=n?function(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;const n=document.implementation.createHTMLDocument(),r=n.createElement("base"),o=n.createElement("a");return n.head.appendChild(r),n.body.appendChild(o),t&&(r.href=t),o.href=e,o.href}(t,n):t,s=q(t);let a;if(o){a=W(await o(i),s)}else a=await G(i,s,r);return e.replace(function(e){const t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,"g")}(t),`$1${a}$3`)}catch(e){}return e}function oe(e){return-1!==e.search(ee)}async function ie(e,t,n){if(!oe(e))return e;const r=function(e,{preferredFontFormat:t}){return t?e.replace(ne,e=>{for(;;){const[n,,r]=te.exec(e)||[];if(!r)return"";if(r===t)return`src: ${n};`}}):e}(e,n),o=function(e){const t=[];return e.replace(ee,(e,n,r)=>(t.push(r),e)),t.filter(e=>!U(e))}(r);return o.reduce((e,r)=>e.then(e=>re(e,r,t,n)),Promise.resolve(r))}async function se(e,t,n){var r;const o=null===(r=t.style)||void 0===r?void 0:r.getPropertyValue(e);if(o){const r=await ie(o,null,n);return t.style.setProperty(e,r,t.style.getPropertyPriority(e)),!0}return!1}async function ae(e,t){B(e,Element)&&(await async function(e,t){await se("background",e,t)||await se("background-image",e,t),await se("mask",e,t)||await se("-webkit-mask",e,t)||await se("mask-image",e,t)||await se("-webkit-mask-image",e,t)}(e,t),await async function(e,t){const n=B(e,HTMLImageElement);if((!n||U(e.src))&&(!B(e,SVGImageElement)||U(e.href.baseVal)))return;const r=n?e.src:e.href.baseVal,o=await G(r,q(r),t);await new Promise((r,i)=>{e.onload=r,e.onerror=t.onImageErrorHandler?(...e)=>{try{r(t.onImageErrorHandler(...e))}catch(e){i(e)}}:i;const s=e;s.decode&&(s.decode=r),"lazy"===s.loading&&(s.loading="eager"),n?(e.srcset="",e.src=o):e.href.baseVal=o})}(e,t),await async function(e,t){const n=I(e.childNodes).map(e=>ae(e,t));await Promise.all(n).then(()=>e)}(e,t))}const ce={};async function le(e){let t=ce[e];if(null!=t)return t;const n=await fetch(e);return t={url:e,cssText:await n.text()},ce[e]=t,t}async function de(e,t){let n=e.cssText;const r=/url\(["']?([^"')]+)["']?\)/g,o=(n.match(/url\([^)]+\)/g)||[]).map(async o=>{let i=o.replace(r,"$1");return i.startsWith("https://")||(i=new URL(i,e.url).href),V(i,t.fetchRequestInit,({result:e})=>(n=n.replace(o,`url(${e})`),[o,e]))});return Promise.all(o).then(()=>n)}function ue(e){if(null==e)return[];const t=[];let n=e.replace(/(\/\*[\s\S]*?\*\/)/gi,"");const r=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const e=r.exec(n);if(null===e)break;t.push(e[0])}n=n.replace(r,"");const o=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,i=new RegExp("((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})","gi");for(;;){let e=o.exec(n);if(null===e){if(e=i.exec(n),null===e)break;o.lastIndex=i.lastIndex}else i.lastIndex=o.lastIndex;t.push(e[0])}return t}async function pe(e,t){if(null==e.ownerDocument)throw new Error("Provided element is not within a Document");const n=I(e.ownerDocument.styleSheets),r=await async function(e,t){const n=[],r=[];return e.forEach(n=>{if("cssRules"in n)try{I(n.cssRules||[]).forEach((e,o)=>{if(e.type===CSSRule.IMPORT_RULE){let i=o+1;const s=le(e.href).then(e=>de(e,t)).then(e=>ue(e).forEach(e=>{try{n.insertRule(e,e.startsWith("@import")?i+=1:n.cssRules.length)}catch(e){}})).catch(e=>{});r.push(s)}})}catch(o){const i=e.find(e=>null==e.href)||document.styleSheets[0];null!=n.href&&r.push(le(n.href).then(e=>de(e,t)).then(e=>ue(e).forEach(e=>{i.insertRule(e,i.cssRules.length)})).catch(e=>{}))}}),Promise.all(r).then(()=>(e.forEach(e=>{if("cssRules"in e)try{I(e.cssRules||[]).forEach(e=>{n.push(e)})}catch(e){}}),n))}(n,t);return function(e){return e.filter(e=>e.type===CSSRule.FONT_FACE_RULE).filter(e=>oe(e.style.getPropertyValue("src")))}(r)}function he(e){return e.trim().replace(/["']/g,"")}async function fe(e,t){const n=await pe(e,t),r=function(e){const t=new Set;return function e(n){(n.style.fontFamily||getComputedStyle(n).fontFamily).split(",").forEach(e=>{t.add(he(e))}),Array.from(n.children).forEach(t=>{t instanceof HTMLElement&&e(t)})}(e),t}(e);return(await Promise.all(n.filter(e=>r.has(he(e.style.fontFamily))).map(e=>{const n=e.parentStyleSheet?e.parentStyleSheet.href:null;return ie(e.cssText,n,t)}))).join("\n")}async function ge(e,t={}){const{width:n,height:r}=P(e,t),o=await Z(e,t,!0);await async function(e,t){const n=null!=t.fontEmbedCSS?t.fontEmbedCSS:t.skipFonts?null:await fe(e,t);if(n){const t=document.createElement("style"),r=document.createTextNode(n);t.appendChild(r),e.firstChild?e.insertBefore(t,e.firstChild):e.appendChild(t)}}(o,t),await ae(o,t),function(e,t){const{style:n}=e;t.backgroundColor&&(n.backgroundColor=t.backgroundColor),t.width&&(n.width=`${t.width}px`),t.height&&(n.height=`${t.height}px`);const r=t.style;null!=r&&Object.keys(r).forEach(e=>{n[e]=r[e]})}(o,t);return await N(o,n,r)}async function me(e,t={}){const{width:n,height:r}=P(e,t),o=await ge(e,t),i=await D(o),s=document.createElement("canvas"),a=s.getContext("2d"),c=t.pixelRatio||function(){let e,t;try{t=process}catch(e){}const n=t&&t.env?t.env.devicePixelRatio:null;return n&&(e=parseInt(n,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}(),l=t.canvasWidth||n,d=t.canvasHeight||r;return s.width=l*c,s.height=d*c,t.skipAutoScale||function(e){(e.width>O||e.height>O)&&(e.width>O&&e.height>O?e.width>e.height?(e.height*=O/e.width,e.width=O):(e.width*=O/e.height,e.height=O):e.width>O?(e.height*=O/e.width,e.width=O):(e.width*=O/e.height,e.height=O))}(s),s.style.width=`${l}`,s.style.height=`${d}`,t.backgroundColor&&(a.fillStyle=t.backgroundColor,a.fillRect(0,0,s.width,s.height)),a.drawImage(i,0,0,s.width,s.height),s}const ve="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";class ye{isCrossOrigin(e){if(!e||e.startsWith("data:")||e.startsWith("blob:"))return!1;try{return new URL(e,window.location.href).origin!==window.location.origin}catch(e){return!0}}sanitizeCrossOriginImages(e){let t=0;const n=e.getElementsByTagName("img");Array.from(n).forEach(e=>{if(this.isCrossOrigin(e.src)){const n=e.offsetWidth||e.naturalWidth||100,r=e.offsetHeight||e.naturalHeight||100;e.src=ve,e.style.width=`${n}px`,e.style.height=`${r}px`,e.style.backgroundColor="#f0f0f0",e.removeAttribute("srcset"),t++}});const r=e.getElementsByTagName("*");Array.from(r).forEach(e=>{const n=e;try{const r=window.getComputedStyle(e).backgroundImage;if(r&&"none"!==r){const e=r.match(/url\(['"]?(.*?)['"]?\)/);e&&e[1]&&this.isCrossOrigin(e[1])&&(n.style.backgroundImage="none",n.style.backgroundColor="#f0f0f0",t++)}}catch(e){}});const o=e.getElementsByTagName("source");return Array.from(o).forEach(e=>{e.srcset&&this.isCrossOrigin(e.srcset.split(",")[0].trim().split(" ")[0])&&(e.remove(),t++)}),t}async captureWithTimeout(e=1e4){return Promise.race([this.capture(),new Promise(t=>{setTimeout(()=>{l("Screenshot capture timed out"),t(null)},e)})])}async capture(){var e,t,r,o;const i=document.createElement("div");try{c("Starting screenshot capture...");const e={captureWidth:window.innerWidth,captureHeight:window.innerHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,deviceType:E()},t=window.pageXOffset||document.documentElement.scrollLeft,n=window.pageYOffset||document.documentElement.scrollTop;c(`Viewport position: x=${t}, y=${n}, width=${e.captureWidth}, height=${e.captureHeight}`),i.style.cssText=`\n position: fixed;\n top: 0;\n left: 0;\n width: ${e.captureWidth}px;\n height: ${e.captureHeight}px;\n z-index: 9999;\n pointer-events: none;\n overflow: hidden;\n `;const r=document.body.cloneNode(!0);r.style.cssText=`\n position: absolute;\n top: -${n}px;\n left: -${t}px;\n width: ${document.body.scrollWidth}px;\n height: ${document.body.scrollHeight}px;\n margin: 0;\n padding: 0;\n transform: none;\n `;const o=this.sanitizeCrossOriginImages(r);o>0&&c(`Replaced ${o} cross-origin image(s) with placeholders`),i.appendChild(r),document.body.appendChild(i);const s={quality:.8,pixelRatio:1,cacheBust:!1,backgroundColor:"#ffffff",height:e.captureHeight,width:e.captureWidth,filter:e=>{if(["VIDEO","AUDIO","IFRAME","OBJECT","EMBED"].includes(e.tagName))return!1;if("CANVAS"===e.tagName)try{e.toDataURL()}catch(e){return l("Excluding tainted CANVAS element from screenshot"),!1}if("IMG"===e.tagName){const t=e;if(t.src&&this.isCrossOrigin(t.src))return l("Filter excluded cross-origin IMG:",t.src.substring(0,100)),!1}return!0},onclone:e=>{const t=e.getElementsByTagName("img");let n=0;Array.from(t).forEach(e=>{e.src&&this.isCrossOrigin(e.src)&&(e.src=ve,e.style.backgroundColor="#f0f0f0",n++)}),n>0&&c(`onclone safety net: cleaned ${n} cross-origin image(s)`)}};c("Capturing viewport screenshot with html-to-image...");const a=await async function(e,t={}){return(await me(e,t)).toDataURL("image/jpeg",t.quality||1)}(i,s);i.remove(),this.showWidgetElementsAfterCapture();const d=.75*a.length/1024;return c(`Screenshot captured successfully. Size: ${Math.round(d)}KB`),d>1024?(l("Screenshot too large, skipping capture"),null):{screenshot:a,metadata:e}}catch(s){let a={},c=!1;if(s instanceof Error)a={name:s.name,message:s.message,stack:s.stack};else if(s instanceof Event){c="error"===s.type&&s.target instanceof HTMLImageElement;const n=s.target;a={type:s.type,targetType:null===(t=null===(e=s.target)||void 0===e?void 0:e.constructor)||void 0===t?void 0:t.name,targetTagName:null===(r=s.target)||void 0===r?void 0:r.tagName,targetSrc:null==n?void 0:n.src,targetOrigin:(null==n?void 0:n.src)?new URL(n.src).origin:"unknown",currentOrigin:window.location.origin,isCrossOrigin:!!(null==n?void 0:n.src)&&!n.src.startsWith(window.location.origin),isTrusted:s.isTrusted,timeStamp:s.timeStamp}}else a="object"==typeof s&&null!==s?Object.assign({toString:s.toString(),constructor:null===(o=s.constructor)||void 0===o?void 0:o.name,keys:Object.keys(s)},s):{value:String(s),type:typeof s};const l={url:window.location.href,domain:window.location.hostname,viewport:`${window.innerWidth}x${window.innerHeight}`,externalImageCount:Array.from(document.querySelectorAll("img")).filter(e=>e.src&&!e.src.startsWith(window.location.origin)).length};if(d("Error capturing screenshot:",Object.assign(Object.assign({},a),{isCorsError:c,pageContext:l})),c)try{const{Sentry:e}=n(725);e&&e.captureException(new Error("Screenshot capture failed due to CORS"),{level:"warning",tags:{error_type:"cors_image_error",component:"screenshot_capture",image_origin:a.targetOrigin},contexts:{screenshot:a,page:l}})}catch(e){}return i.remove(),this.showWidgetElementsAfterCapture(),null}}createChatBubble(e,t){const n=document.createElement("div"),r=t.x-4,o=t.y-28,i=window.innerWidth,s=Math.max(0,Math.min(r,i-32)),a=Math.max(0,o);return n.style.cssText=`\n position: fixed;\n left: ${s}px;\n top: ${a}px;\n width: 32px;\n height: 32px;\n z-index: 10001;\n pointer-events: none;\n `,n.innerHTML='\n <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">\n <defs>\n <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">\n <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.3)"/>\n </filter>\n </defs>\n \x3c!-- Teardrop: rounded rectangle with 3 corners at 50% radius, bottom-left sharp --\x3e\n <path d="M 4 16 \n A 12 12 0 0 1 16 4 \n A 12 12 0 0 1 28 16 \n A 12 12 0 0 1 16 28 \n L 4 28 \n Z" \n fill="#1E90FF" \n filter="url(#shadow)"/>\n </svg>\n ',document.body.appendChild(n),n}showWidgetElementsAfterCapture(){document.querySelectorAll('[class*="fixed"][class*="top-"]').forEach(e=>{e.style.display=""})}}function be(){const e=document.documentElement.attributes;for(let t=0;t<e.length;t++){const n=e[t].value.toLowerCase();if(n.includes("dark"))return{theme:"dark"};if(n.includes("light"))return{theme:"light"}}return{theme:"light"}}var we=n(725);const xe=Object.create(null);xe.open="0",xe.close="1",xe.ping="2",xe.pong="3",xe.message="4",xe.upgrade="5",xe.noop="6";const ke=Object.create(null);Object.keys(xe).forEach(e=>{ke[xe[e]]=e});const _e={type:"error",data:"parser error"},Se="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Ce="function"==typeof ArrayBuffer,Ee=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Te=({type:e,data:t},n,r)=>Se&&t instanceof Blob?n?r(t):Me(t,r):Ce&&(t instanceof ArrayBuffer||Ee(t))?n?r(t):Me(new Blob([t]),r):r(xe[e]+(t||"")),Me=(e,t)=>{const n=new FileReader;return n.onload=function(){const e=n.result.split(",")[1];t("b"+(e||""))},n.readAsDataURL(e)};function Ie(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Ae;const Re="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Le="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)Le[Re.charCodeAt(e)]=e;const Pe="function"==typeof ArrayBuffer,Oe=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Ne(e,t)};const n=e.charAt(0);if("b"===n)return{type:"message",data:De(e.substring(1),t)};return ke[n]?e.length>1?{type:ke[n],data:e.substring(1)}:{type:ke[n]}:_e},De=(e,t)=>{if(Pe){const n=(e=>{let t,n,r,o,i,s=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(s--,"="===e[e.length-2]&&s--);const l=new ArrayBuffer(s),d=new Uint8Array(l);for(t=0;t<a;t+=4)n=Le[e.charCodeAt(t)],r=Le[e.charCodeAt(t+1)],o=Le[e.charCodeAt(t+2)],i=Le[e.charCodeAt(t+3)],d[c++]=n<<2|r>>4,d[c++]=(15&r)<<4|o>>2,d[c++]=(3&o)<<6|63&i;return l})(e);return Ne(n,t)}return{base64:!0,data:e}},Ne=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Be=String.fromCharCode(30);function je(){return new TransformStream({transform(e,t){!function(e,t){Se&&e.data instanceof Blob?e.data.arrayBuffer().then(Ie).then(t):Ce&&(e.data instanceof ArrayBuffer||Ee(e.data))?t(Ie(e.data)):Te(e,!1,e=>{Ae||(Ae=new TextEncoder),t(Ae.encode(e))})}(e,n=>{const r=n.length;let o;if(r<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,r);else if(r<65536){o=new Uint8Array(3);const e=new DataView(o.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{o=new Uint8Array(9);const e=new DataView(o.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&"string"!=typeof e.data&&(o[0]|=128),t.enqueue(o),t.enqueue(n)})}})}let $e;function ze(e){return e.reduce((e,t)=>e+t.length,0)}function Fe(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let o=0;o<t;o++)n[o]=e[0][r++],r===e[0].length&&(e.shift(),r=0);return e.length&&r<e[0].length&&(e[0]=e[0].slice(r)),n}function He(e){if(e)return function(e){for(var t in He.prototype)e[t]=He.prototype[t];return e}(e)}He.prototype.on=He.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},He.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},He.prototype.off=He.prototype.removeListener=He.prototype.removeAllListeners=He.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+e];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var o=0;o<r.length;o++)if((n=r[o])===t||n.fn===t){r.splice(o,1);break}return 0===r.length&&delete this._callbacks["$"+e],this},He.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),n=this._callbacks["$"+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(n){r=0;for(var o=(n=n.slice(0)).length;r<o;++r)n[r].apply(this,t)}return this},He.prototype.emitReserved=He.prototype.emit,He.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},He.prototype.hasListeners=function(e){return!!this.listeners(e).length};const qe="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Ue="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function We(e,...t){return t.reduce((t,n)=>(e.hasOwnProperty(n)&&(t[n]=e[n]),t),{})}const Ve=Ue.setTimeout,Ke=Ue.clearTimeout;function Ge(e,t){t.useNativeTimers?(e.setTimeoutFn=Ve.bind(Ue),e.clearTimeoutFn=Ke.bind(Ue)):(e.setTimeoutFn=Ue.setTimeout.bind(Ue),e.clearTimeoutFn=Ue.clearTimeout.bind(Ue))}function Je(e){return"string"==typeof e?function(e){let t=0,n=0;for(let r=0,o=e.length;r<o;r++)t=e.charCodeAt(r),t<128?n+=1:t<2048?n+=2:t<55296||t>=57344?n+=3:(r++,n+=4);return n}(e):Math.ceil(1.33*(e.byteLength||e.size))}function Ye(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}class Xe extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type="TransportError"}}class Qe extends He{constructor(e){super(),this.writable=!1,Ge(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,n){return super.emitReserved("error",new Xe(e,t,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=Oe(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}(e);return t.length?"?"+t:""}}class Ze extends Qe{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let e=0;this._polling&&(e++,this.once("pollComplete",function(){--e||t()})),this.writable||(e++,this.once("drain",function(){--e||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const n=e.split(Be),r=[];for(let e=0;e<n.length;e++){const o=Oe(n[e],t);if(r.push(o),"error"===o.type)break}return r})(e,this.socket.binaryType).forEach(e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)}),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const n=e.length,r=new Array(n);let o=0;e.forEach((e,i)=>{Te(e,!1,e=>{r[i]=e,++o===n&&t(r.join(Be))})})})(e,e=>{this.doWrite(e,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=Ye()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}}let et=!1;try{et="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}const tt=et;function nt(){}class rt extends Ze{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let n=location.port;n||(n=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||n!==e.port}}doWrite(e,t){const n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",(e,t)=>{this.onError("xhr post error",e,t)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e,t)=>{this.onError("xhr poll error",e,t)}),this.pollXhr=e}}class ot extends He{constructor(e,t,n){super(),this.createRequest=e,Ge(this,n),this._opts=n,this._method=n.method||"GET",this._uri=t,this._data=void 0!==n.data?n.data:null,this._create()}_create(){var e;const t=We(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(t);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let e in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(e)&&n.setRequestHeader(e,this._opts.extraHeaders[e])}}catch(e){}if("POST"===this._method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{n.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this._opts.cookieJar)||void 0===e||e.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var e;3===n.readyState&&(null===(e=this._opts.cookieJar)||void 0===e||e.parseCookies(n.getResponseHeader("set-cookie"))),4===n.readyState&&(200===n.status||1223===n.status?this._onLoad():this.setTimeoutFn(()=>{this._onError("number"==typeof n.status?n.status:0)},0))},n.send(this._data)}catch(e){return void this.setTimeoutFn(()=>{this._onError(e)},0)}"undefined"!=typeof document&&(this._index=ot.requestsCount++,ot.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=nt,e)try{this._xhr.abort()}catch(e){}"undefined"!=typeof document&&delete ot.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}if(ot.requestsCount=0,ot.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",it);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Ue?"pagehide":"unload",it,!1)}function it(){for(let e in ot.requests)ot.requests.hasOwnProperty(e)&&ot.requests[e].abort()}const st=function(){const e=at({xdomain:!1});return e&&null!==e.responseType}();function at(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||tt))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Ue[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}const ct="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class lt extends Qe{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,n=ct?{}:We(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,n)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const n=e[t],r=t===e.length-1;Te(n,this.supportsBinary,e=>{try{this.doWrite(n,e)}catch(e){}r&&qe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){void 0!==this.ws&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=Ye()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const dt=Ue.WebSocket||Ue.MozWebSocket;const ut={websocket:class extends lt{createSocket(e,t,n){return ct?new dt(e,t,n):t?new dt(e,t):new dt(e)}doWrite(e,t){this.ws.send(t)}},webtransport:class extends Qe{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const t=function(e,t){$e||($e=new TextDecoder);const n=[];let r=0,o=-1,i=!1;return new TransformStream({transform(s,a){for(n.push(s);;){if(0===r){if(ze(n)<1)break;const e=Fe(n,1);i=!(128&~e[0]),o=127&e[0],r=o<126?3:126===o?1:2}else if(1===r){if(ze(n)<2)break;const e=Fe(n,2);o=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(2===r){if(ze(n)<8)break;const e=Fe(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),i=t.getUint32(0);if(i>Math.pow(2,21)-1){a.enqueue(_e);break}o=i*Math.pow(2,32)+t.getUint32(4),r=3}else{if(ze(n)<o)break;const e=Fe(n,o);a.enqueue(Oe(i?e:$e.decode(e),t)),r=0}if(0===o||o>e){a.enqueue(_e);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=je();r.readable.pipeTo(e.writable),this._writer=r.writable.getWriter();const o=()=>{n.read().then(({done:e,value:t})=>{e||(this.onPacket(t),o())}).catch(e=>{})};o();const i={type:"open"};this.query.sid&&(i.data=`{"sid":"${this.query.sid}"}`),this._writer.write(i).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const n=e[t],r=t===e.length-1;this._writer.write(n).then(()=>{r&&qe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;null===(e=this._transport)||void 0===e||e.close()}},polling:class extends rt{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=st&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new ot(at,this.uri(),e)}}},pt=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,ht=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function ft(e){if(e.length>8e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");-1!=n&&-1!=r&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let o=pt.exec(e||""),i={},s=14;for(;s--;)i[ht[s]]=o[s]||"";return-1!=n&&-1!=r&&(i.source=t,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=function(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||r.splice(0,1);"/"==t.slice(-1)&&r.splice(r.length-1,1);return r}(0,i.path),i.queryKey=function(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(e,t,r){t&&(n[t]=r)}),n}(0,i.query),i}const gt="function"==typeof addEventListener&&"function"==typeof removeEventListener,mt=[];gt&&addEventListener("offline",()=>{mt.forEach(e=>e())},!1);class vt extends He{constructor(e,t){if(super(),this.binaryType="arraybuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&"object"==typeof e&&(t=e,e=null),e){const n=ft(e);t.hostname=n.host,t.secure="https"===n.protocol||"wss"===n.protocol,t.port=n.port,n.query&&(t.query=n.query)}else t.host&&(t.hostname=ft(t.host).host);Ge(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(e=>{const t=e.prototype.name;this.transports.push(t),this._transportsByName[t]=e}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},n=e.split("&");for(let e=0,r=n.length;e<r;e++){let r=n[e].split("=");t[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return t}(this.opts.query)),gt&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},mt.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](n)}_open(){if(0===this.transports.length)return void this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);const e=this.opts.rememberUpgrade&&vt.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",e=>this._onClose("transport close",e))}onOpen(){this.readyState="open",vt.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t<this.writeBuffer.length;t++){const n=this.writeBuffer[t].data;if(n&&(e+=Je(n)),t>0&&e>this._maxPayload)return this.writeBuffer.slice(0,t);e+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,qe(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,n){return this._sendPacket("message",e,t,n),this}send(e,t,n){return this._sendPacket("message",e,t,n),this}_sendPacket(e,t,n,r){if("function"==typeof t&&(r=t,t=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const o={type:e,data:t,options:n};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?n():e()}):this.upgrading?n():e()),this}_onError(e){if(vt.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),gt&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const e=mt.indexOf(this._offlineEventListener);-1!==e&&mt.splice(e,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}vt.protocol=4;class yt extends vt{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),n=!1;vt.priorWebsocketSuccess=!1;const r=()=>{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",e=>{if(!n)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;vt.priorWebsocketSuccess="websocket"===t.name,this.transport.pause(()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}}))};function o(){n||(n=!0,l(),t.close(),t=null)}const i=e=>{const n=new Error("probe error: "+e);n.transport=t.name,o(),this.emitReserved("upgradeError",n)};function s(){i("transport closed")}function a(){i("socket closed")}function c(e){t&&e.name!==t.name&&o()}const l=()=>{t.removeListener("open",r),t.removeListener("error",i),t.removeListener("close",s),this.off("close",a),this.off("upgrading",c)};t.once("open",r),t.once("error",i),t.once("close",s),this.once("close",a),this.once("upgrading",c),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn(()=>{n||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let n=0;n<e.length;n++)~this.transports.indexOf(e[n])&&t.push(e[n]);return t}}class bt extends yt{constructor(e,t={}){const n="object"==typeof e?e:t;(!n.transports||n.transports&&"string"==typeof n.transports[0])&&(n.transports=(n.transports||["polling","websocket","webtransport"]).map(e=>ut[e]).filter(e=>!!e)),super(e,n)}}const wt="function"==typeof ArrayBuffer,xt=Object.prototype.toString,kt="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===xt.call(Blob),_t="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===xt.call(File);function St(e){return wt&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||kt&&e instanceof Blob||_t&&e instanceof File}function Ct(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t<n;t++)if(Ct(e[t]))return!0;return!1}if(St(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Ct(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Ct(e[t]))return!0;return!1}function Et(e){const t=[],n=e.data,r=e;return r.data=Tt(n,t),r.attachments=t.length,{packet:r,buffers:t}}function Tt(e,t){if(!e)return e;if(St(e)){const n={_placeholder:!0,num:t.length};return t.push(e),n}if(Array.isArray(e)){const n=new Array(e.length);for(let r=0;r<e.length;r++)n[r]=Tt(e[r],t);return n}if("object"==typeof e&&!(e instanceof Date)){const n={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=Tt(e[r],t));return n}return e}function Mt(e,t){return e.data=It(e.data,t),delete e.attachments,e}function It(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let n=0;n<e.length;n++)e[n]=It(e[n],t);else if("object"==typeof e)for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]=It(e[n],t));return e}const At=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],Rt=5;var Lt;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Lt||(Lt={}));class Pt{constructor(e){this.replacer=e}encode(e){return e.type!==Lt.EVENT&&e.type!==Lt.ACK||!Ct(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Lt.EVENT?Lt.BINARY_EVENT:Lt.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Lt.BINARY_EVENT&&e.type!==Lt.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Et(e),n=this.encodeAsString(t.packet),r=t.buffers;return r.unshift(n),r}}class Ot extends He{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const n=t.type===Lt.BINARY_EVENT;n||t.type===Lt.BINARY_ACK?(t.type=n?Lt.EVENT:Lt.ACK,this.reconstructor=new Dt(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!St(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const n={type:Number(e.charAt(0))};if(void 0===Lt[n.type])throw new Error("unknown packet type "+n.type);if(n.type===Lt.BINARY_EVENT||n.type===Lt.BINARY_ACK){const r=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const o=e.substring(r,t);if(o!=Number(o)||"-"!==e.charAt(t))throw new Error("Illegal attachments");n.attachments=Number(o)}if("/"===e.charAt(t+1)){const r=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}n.nsp=e.substring(r,t)}else n.nsp="/";const r=e.charAt(t+1);if(""!==r&&Number(r)==r){const r=t+1;for(;++t;){const n=e.charAt(t);if(null==n||Number(n)!=n){--t;break}if(t===e.length)break}n.id=Number(e.substring(r,t+1))}if(e.charAt(++t)){const r=this.tryParse(e.substr(t));if(!Ot.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Lt.CONNECT:return Bt(t);case Lt.DISCONNECT:return void 0===t;case Lt.CONNECT_ERROR:return"string"==typeof t||Bt(t);case Lt.EVENT:case Lt.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===At.indexOf(t[0]));case Lt.ACK:case Lt.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Dt{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Mt(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Nt=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e};function Bt(e){return"[object Object]"===Object.prototype.toString.call(e)}function jt(e){return"string"==typeof e.nsp&&(void 0===(t=e.id)||Nt(t))&&function(e,t){switch(e){case Lt.CONNECT:return void 0===t||Bt(t);case Lt.DISCONNECT:return void 0===t;case Lt.EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===At.indexOf(t[0]));case Lt.ACK:return Array.isArray(t);case Lt.CONNECT_ERROR:return"string"==typeof t||Bt(t);default:return!1}}(e.type,e.data);var t}function $t(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const zt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Ft extends He{constructor(e,t,n){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,n&&n.auth&&(this.auth=n.auth),this._opts=Object.assign({},n),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[$t(e,"open",this.onopen.bind(this)),$t(e,"packet",this.onpacket.bind(this)),$t(e,"error",this.onerror.bind(this)),$t(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var n,r,o;if(zt.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const i={type:Lt.EVENT,data:t,options:{}};if(i.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,n=t.pop();this._registerAckCallback(e,n),i.id=e}const s=null===(r=null===(n=this.io.engine)||void 0===n?void 0:n.transport)||void 0===r?void 0:r.writable,a=this.connected&&!(null===(o=this.io.engine)||void 0===o?void 0:o._hasPingExpired());return this.flags.volatile&&!s||(a?(this.notifyOutgoingListeners(i),this.packet(i)):this.sendBuffer.push(i)),this.flags={},this}_registerAckCallback(e,t){var n;const r=null!==(n=this.flags.timeout)&&void 0!==n?n:this._opts.ackTimeout;if(void 0===r)return void(this.acks[e]=t);const o=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))},r),i=(...e)=>{this.io.clearTimeoutFn(o),t.apply(this,e)};i.withError=!0,this.acks[e]=i}emitWithAck(e,...t){return new Promise((n,r)=>{const o=(e,t)=>e?r(e):n(t);o.withError=!0,t.push(o),this.emit(e,...t)})}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((e,...r)=>{this._queue[0];return null!==e?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...r)),n.pending=!1,this._drainQueue()}),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Lt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(t=>String(t.id)===e)){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Lt.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Lt.EVENT:case Lt.BINARY_EVENT:this.onevent(e);break;case Lt.ACK:case Lt.BINARY_ACK:this.onack(e);break;case Lt.DISCONNECT:this.ondisconnect();break;case Lt.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let n=!1;return function(...r){n||(n=!0,t.packet({type:Lt.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Lt.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let n=0;n<t.length;n++)if(e===t[n])return t.splice(n,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const n of t)n.apply(this,e.data)}}}function Ht(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Ht.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this.max)},Ht.prototype.reset=function(){this.attempts=0},Ht.prototype.setMin=function(e){this.ms=e},Ht.prototype.setMax=function(e){this.max=e},Ht.prototype.setJitter=function(e){this.jitter=e};class qt extends He{constructor(e,t){var n;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Ge(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(n=t.randomizationFactor)&&void 0!==n?n:.5),this.backoff=new Ht({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const o=t.parser||r;this.encoder=new o.Encoder,this.decoder=new o.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new bt(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=$t(t,"open",function(){n.onopen(),e&&e()}),o=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},i=$t(t,"error",o);if(!1!==this._timeout){const e=this._timeout,n=this.setTimeoutFn(()=>{r(),o(new Error("timeout")),t.close()},e);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}return this.subs.push(r),this.subs.push(i),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push($t(e,"ping",this.onping.bind(this)),$t(e,"data",this.ondata.bind(this)),$t(e,"error",this.onerror.bind(this)),$t(e,"close",this.onclose.bind(this)),$t(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){qe(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new Ft(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;n<t.length;n++)this.engine.write(t[n],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var n;this.cleanup(),null===(n=this.engine)||void 0===n||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open(t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()}))},t);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Ut={};function Wt(e,t){"object"==typeof e&&(t=e,e=void 0);const n=function(e,t="",n){let r=e;n=n||"undefined"!=typeof location&&location,null==e&&(e=n.protocol+"//"+n.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==n?n.protocol+"//"+e:"https://"+e),r=ft(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const o=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port+t,r.href=r.protocol+"://"+o+(n&&n.port===r.port?"":":"+r.port),r}(e,(t=t||{}).path||"/socket.io"),r=n.source,o=n.id,i=n.path,s=Ut[o]&&i in Ut[o].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||s?a=new qt(r,t):(Ut[o]||(Ut[o]=new qt(r,t)),a=Ut[o]),n.query&&!t.query&&(t.query=n.queryKey),a.socket(n.path,t)}Object.assign(Wt,{Manager:qt,Socket:Ft,io:Wt,connect:Wt});class Vt{constructor(){this.queue=[],this.STORAGE_KEY="ff_message_queue",this.MAX_QUEUE_SIZE=50,this.MAX_AGE_MS=864e5,this.loadFromStorage(),this.cleanExpiredMessages()}enqueue(e){const t=Object.assign(Object.assign({},e),{timestamp:Date.now()});this.queue.push(t),this.queue.length>this.MAX_QUEUE_SIZE&&this.queue.shift(),this.saveToStorage()}dequeueAll(){const e=[...this.queue];return this.queue=[],this.saveToStorage(),e}peek(){return[...this.queue]}size(){return this.queue.length}clear(){this.queue=[];try{localStorage.removeItem(this.STORAGE_KEY)}catch(e){}}cleanExpiredMessages(){const e=Date.now();this.queue=this.queue.filter(t=>e-t.timestamp<this.MAX_AGE_MS),this.queue.length>0&&this.saveToStorage()}loadFromStorage(){try{const e=localStorage.getItem(this.STORAGE_KEY);e&&(this.queue=JSON.parse(e))}catch(e){this.queue=[]}}saveToStorage(){try{localStorage.setItem(this.STORAGE_KEY,JSON.stringify(this.queue))}catch(e){}}}function Kt(){const e=window.innerWidth,t=navigator.userAgent.toLowerCase(),n=/ipad|android(?!.*mobile)|tablet/i.test(t);return e<768?"mobile":e<1024||n?"tablet":"desktop"}function Gt(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){return"Unknown"}}class Jt{constructor(e,t){this.socketUrl=e,this.auth=t,this.socket=null,this.isConnected=!1,this.listeners=new Map,this.reconnectAttempts=0,this.MAX_RECONNECT_ATTEMPTS=10,this.messageQueue=new Vt,c("SocketClient initialized",{socketUrl:e})}connect(){var e;(null===(e=this.socket)||void 0===e?void 0:e.connected)?l("[WIDGET SOCKET] ⚠️ Socket already connected"):(c("[WIDGET SOCKET] 🚀 Connecting to Socket.io server...",{url:this.socketUrl,auth:this.auth}),this.socket=Wt(this.socketUrl,{auth:this.auth,transports:["websocket","polling"],reconnection:!0,reconnectionDelay:1e3,reconnectionDelayMax:5e3,reconnectionAttempts:this.MAX_RECONNECT_ATTEMPTS,timeout:2e4}),c("[WIDGET SOCKET] 📡 Socket instance created, waiting for connection event..."),this.setupEventHandlers())}setupEventHandlers(){this.socket&&(this.socket.on("connect",()=>{var e;c("Socket.io connected",{id:null===(e=this.socket)||void 0===e?void 0:e.id}),this.isConnected=!0,this.reconnectAttempts=0,this.emit("connection:status",{connected:!0}),this.flushMessageQueue()}),this.socket.on("disconnect",e=>{l("Socket.io disconnected",{reason:e}),this.isConnected=!1,this.emit("connection:status",{connected:!1,reason:e})}),this.socket.on("connect_error",e=>{this.reconnectAttempts++,d("Socket.io connection error",{error:e.message,attempts:this.reconnectAttempts}),this.emit("connection:error",{error:e.message,attempts:this.reconnectAttempts})}),this.socket.on("reconnect_attempt",e=>{c("Socket.io reconnect attempt",{attempt:e}),this.emit("reconnect:attempt",{attempt:e})}),this.socket.on("reconnect_failed",()=>{d("Socket.io reconnection failed"),this.emit("reconnect:failed",{})}),this.socket.on("message:new",e=>{c("[WIDGET] ✅ Received message:new event",e),this.emit("message:new",e)}),this.socket.on("message:acked",e=>{a("Received message:acked",e),this.emit("message:acked",e)}),this.socket.on("message:status",e=>{a("Received message:status",e),this.emit("message:status",e)}),this.socket.on("message:read",e=>{a("Received message:read",e),this.emit("message:read",e)}),this.socket.on("message:error",e=>{d("Received message:error",e),this.emit("message:error",e)}),this.socket.on("room:joined",e=>{c("[WIDGET] ✅ Room joined successfully",e),this.emit("room:joined",e)}),this.socket.on("room:error",e=>{d("[WIDGET] ❌ Room join error",e),this.emit("room:error",e)}),this.socket.on("user:joined",e=>{a("User joined",e),this.emit("user:joined",e)}),this.socket.on("user:left",e=>{a("User left",e),this.emit("user:left",e)}),this.socket.on("typing:start",e=>{a("Typing started",e),this.emit("typing:start",e)}),this.socket.on("typing:stop",e=>{a("Typing stopped",e),this.emit("typing:stop",e)}),this.socket.on("admin:online",e=>{c("Admin came online",e),this.emit("admin:online",e)}),this.socket.on("admin:offline",e=>{c("Admin went offline",e),this.emit("admin:offline",e)}))}joinRoom(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.connected)?(c("[WIDGET] 🚀 Emitting chat:join",{conversationId:e,socketId:this.socket.id}),this.socket.emit("chat:join",{conversationId:e})):l("[WIDGET] ⚠️ Cannot join room - socket not connected",{conversationId:e,socketExists:!!this.socket})}leaveRoom(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.connected)&&(c("Leaving room",{conversationId:e}),this.socket.emit("chat:leave",{conversationId:e}))}sendMessage(e,t,n){const r={pageUrl:window.location.href,referrer:document.referrer||"Direct",userAgent:navigator.userAgent,deviceType:Kt(),screenResolution:`${window.screen.width}x${window.screen.height}`,timezone:Gt()};c("[WIDGET] 📍 Captured browser context:",r);const o={conversationId:e,content:t,tempId:n,context:{pageUrl:r.pageUrl,referrer:r.referrer,userAgent:r.userAgent,deviceType:r.deviceType,screenResolution:r.screenResolution,timezone:r.timezone}};this.isConnected&&this.socket?(c("[WIDGET] 📤 Sending message with context to server"),this.socket.emit("message:send",o)):(c("[WIDGET] 📥 Queueing message (offline)",{tempId:n,isConnected:this.isConnected}),this.messageQueue.enqueue(o),this.emit("message:queued",{tempId:n}))}sendTyping(e,t){var n;if(!(null===(n=this.socket)||void 0===n?void 0:n.connected))return;const r=t?"typing:start":"typing:stop";this.socket.emit(r,{conversationId:e})}markDelivered(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.connected)&&this.socket.emit("message:delivered",{messageId:e})}markRead(e,t){var n;(null===(n=this.socket)||void 0===n?void 0:n.connected)&&this.socket.emit("message:read",{conversationId:e,messageIds:t})}flushMessageQueue(){const e=this.messageQueue.size();if(0===e)return;c("Flushing message queue",{count:e});this.messageQueue.dequeueAll().forEach(e=>{this.socket&&(this.socket.emit("message:send",e),this.emit("message:sent-from-queue",{tempId:e.tempId}))})}on(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}off(e,t){if(!t)return void this.listeners.delete(e);const n=this.listeners.get(e);if(n){const r=n.filter(e=>e!==t);r.length>0?this.listeners.set(e,r):this.listeners.delete(e)}}emit(e,t){(this.listeners.get(e)||[]).forEach(n=>{try{n(t)}catch(t){d("Error in event callback",{event:e,error:t})}})}isSocketConnected(){return this.isConnected}getQueueSize(){return this.messageQueue.size()}disconnect(){var e;c("Disconnecting socket"),null===(e=this.socket)||void 0===e||e.disconnect(),this.isConnected=!1}destroy(){c("Destroying socket client"),this.disconnect(),this.listeners.clear(),this.messageQueue.clear(),this.socket=null}}class Yt{constructor(e,t,n){this.apiUrl=e,this.apiKey=t,this.devDomain=n}async getOrCreateConversation(e,t){try{c("Getting or creating conversation",{projectId:e,userIdentifier:t});const n=await fetch(`${this.apiUrl}/api/conversations`,{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":this.apiKey},body:JSON.stringify({projectId:e,userIdentifier:t})});if(!n.ok)throw new Error(`Failed to get/create conversation: ${n.statusText}`);const r=await n.json();return c("Conversation ready",{conversationId:r.id}),r}catch(e){throw d("Failed to get/create conversation",e),e}}async updateConversationMetadata(e,t){try{c("Updating conversation metadata",{conversationId:e,userId:t.id});const n={};Object.keys(t).forEach(e=>{["id","email","name"].includes(e)||(n[e]=t[e])});const r=await fetch(`${this.apiUrl}/api/conversations/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json","X-API-Key":this.apiKey},body:JSON.stringify({userEmail:t.email,userName:t.name,userMetadata:Object.keys(n).length>0?JSON.stringify(n):void 0})});if(!r.ok)throw new Error(`Failed to update conversation metadata: ${r.statusText}`);c("Conversation metadata updated successfully")}catch(e){throw d("Failed to update conversation metadata",e),e}}async fetchMessages(e,t=50,n=0){try{a("Fetching messages",{conversationId:e,limit:t,offset:n});const r=new URL(`${this.apiUrl}/api/conversations/${e}/messages`);r.searchParams.append("limit",t.toString()),r.searchParams.append("offset",n.toString());const o=await fetch(r.toString(),{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!o.ok)throw new Error(`Failed to fetch messages: ${o.statusText}`);const i=await o.json();return a("Messages fetched",{count:(null==i?void 0:i.length)||0}),{messages:Array.isArray(i)?i:[],hasMore:!1}}catch(e){throw d("Failed to fetch messages",e),e}}async fetchPendingMessages(e,t){var n;try{a("Fetching pending messages",{conversationId:e,lastMessageId:t});const r=new URL(`${this.apiUrl}/api/chat/conversations/${e}/messages/pending`);r.searchParams.append("lastMessageId",t.toString());const o=await fetch(r.toString(),{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!o.ok)throw new Error(`Failed to fetch pending messages: ${o.statusText}`);const i=await o.json();return a("Pending messages fetched",{count:(null===(n=i.messages)||void 0===n?void 0:n.length)||0}),i.messages||[]}catch(e){return d("Failed to fetch pending messages",e),[]}}async getProjectInfo(){const e=await fetch(`${this.apiUrl}/api/projects`,{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!e.ok)throw new Error(`Failed to get project info: ${e.statusText}`);const t=await e.json();if(!t.projects||!Array.isArray(t.projects)||0===t.projects.length)throw new Error("No projects found for this API key");const n=this.devDomain||window.location.hostname,r=t.projects.find(e=>e.domain===n);if(!r)throw d("No project found matching domain",{currentDomain:n}),new Error(`No project found for domain: ${n}`);return{id:r.id,name:r.name}}async getAdminPresence(e){try{a("Fetching admin presence",{projectId:e});const t=new URL(`${this.apiUrl}/api/chat/admin-presence`);t.searchParams.append("projectId",e.toString());const n=await fetch(t.toString(),{method:"GET",headers:{"X-API-Key":this.apiKey}});if(!n.ok)throw new Error(`Failed to fetch admin presence: ${n.statusText}`);const r=await n.json();return a("Admin presence fetched",{isOnline:r.isOnline}),{isOnline:r.isOnline}}catch(e){return d("Failed to fetch admin presence",e),{isOnline:!1}}}}class Xt{constructor(e,t){this.chatService=e,this.socketClient=t,this.conversation=null,this.currentUserIdentifier=null}waitForConnection(){return new Promise((e,t)=>{c("[CONVERSATION SERVICE] ⏳ Waiting for socket connection...");let n=0;const r=setTimeout(()=>{d("[CONVERSATION SERVICE] ❌ Socket connection timeout after 10 seconds"),t(new Error("Socket connection timeout"))},1e4),o=()=>{n++;const t=this.socketClient.isSocketConnected();n%10==0&&c(`[CONVERSATION SERVICE] Still waiting... (${100*n}ms, connected: ${t})`),t?(clearTimeout(r),c(`[CONVERSATION SERVICE] ✅ Socket connected after ${100*n}ms, proceeding to join room`),e()):setTimeout(o,100)};o()})}async initializeConversation(e,t){try{return c("Initializing conversation",{projectId:e,userIdentifier:t}),this.currentUserIdentifier=t,this.conversation=await this.chatService.getOrCreateConversation(e,t),this.socketClient.connect(),await this.waitForConnection(),this.socketClient.joinRoom(this.conversation.id),c("Conversation initialized",{conversationId:this.conversation.id}),this.conversation}catch(e){throw d("Failed to initialize conversation",e),e}}async loadMessageHistory(e=50,t=0){if(!this.conversation)throw new Error("Conversation not initialized");try{const n=await this.chatService.fetchMessages(this.conversation.id,e,t);return n.messages.map(e=>({id:e.id,content:e.content,senderType:e.senderType,createdAt:new Date(e.createdAt),deliveryStatus:e.deliveryStatus}))}catch(e){return d("Failed to load message history",e),[]}}sendMessage(e){if(!this.conversation)throw new Error("Conversation not initialized");const t=`temp-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;return this.socketClient.sendMessage(this.conversation.id,e,t),t}sendTyping(e){this.conversation&&this.socketClient.sendTyping(this.conversation.id,e)}markMessagesAsRead(e){this.conversation&&0!==e.length&&this.socketClient.markRead(this.conversation.id,e)}getConversation(){return this.conversation}getConversationId(){var e;return(null===(e=this.conversation)||void 0===e?void 0:e.id)||null}getUserIdentifier(){return this.currentUserIdentifier}isInitialized(){return null!==this.conversation}destroy(){this.conversation&&this.socketClient.leaveRoom(this.conversation.id),this.conversation=null,this.currentUserIdentifier=null}}class Qt{constructor(e,t,n){this.apiKey=e,this.apiUrl=t,this.config=n,this.mainPanel=null,this.socketClient=null,this.conversationService=null,this.projectId=null,this.isInitialized=!1,this.currentPresenceStatus=null,this.userIdentifier=m(),c("ChatManager initialized",{userIdentifier:this.userIdentifier}),this.chatService=new Yt(this.apiUrl,this.apiKey,this.config.devDomain)}setMainPanel(e){this.mainPanel=e,this.setupEventHandlers(),this.isInitialized&&(c("Reloading messages into new MainPanel"),this.loadMessageHistory(),null!==this.currentPresenceStatus&&(c("Restoring presence state",{status:this.currentPresenceStatus}),"online"===this.currentPresenceStatus?this.mainPanel.setPresenceOnline():this.mainPanel.setPresenceOffline()))}async initialize(){var e,t,n;if(this.isInitialized)l("Chat already initialized");else try{c("Initializing chat...");const r=await this.chatService.getProjectInfo();this.projectId=r.id;const i=o?"http://localhost:3002":"https://feedbackfunsocket-server-production.up.railway.app";this.socketClient=new Jt(i,{apiKey:this.apiKey,projectId:this.projectId,userIdentifier:this.userIdentifier}),this.conversationService=new Xt(this.chatService,this.socketClient),this.setupSocketEventHandlers(),a(r),await this.conversationService.initializeConversation(this.projectId,this.userIdentifier),await this.loadMessageHistory();try{const{isOnline:n}=await this.chatService.getAdminPresence(this.projectId);this.currentPresenceStatus=n?"online":"offline",n?null===(e=this.mainPanel)||void 0===e||e.setPresenceOnline():null===(t=this.mainPanel)||void 0===t||t.setPresenceOffline()}catch(e){d("Failed to fetch admin presence",e),this.currentPresenceStatus="offline",null===(n=this.mainPanel)||void 0===n||n.setPresenceOffline()}this.isInitialized=!0,c("Chat initialized successfully")}catch(e){throw d("Failed to initialize chat",e),e}}async updateConversationMetadata(e){if(this.conversationService)try{const t=this.conversationService.conversation;if(!t)return void l("Cannot update metadata - no active conversation");await this.chatService.updateConversationMetadata(t.id,e),c("Conversation metadata updated via ChatManager")}catch(e){throw d("Failed to update conversation metadata via ChatManager",e),e}else l("Cannot update metadata - conversation not initialized")}setupEventHandlers(){if(!this.mainPanel)return;const e=this.mainPanel.getMessageInput();e.onSend(e=>{this.sendMessage(e)}),e.onTyping(e=>{this.conversationService&&this.conversationService.sendTyping(e)})}setupSocketEventHandlers(){this.socketClient&&this.mainPanel&&(this.socketClient.on("connection:status",e=>{this.mainPanel&&(e.connected?(this.mainPanel.hideOfflineBanner(),c("Socket connected")):(this.mainPanel.showOfflineBanner(),l("Socket disconnected")))}),this.socketClient.on("message:new",e=>{if(!this.mainPanel)return;c("[WIDGET CHAT MANAGER] 📨 Received message:new event",e);const t=this.mainPanel.getMessageList(),n=t.getMessages();if(n.some(t=>t.id===e.id))return void c("[WIDGET CHAT MANAGER] ⏭️ Message already exists (by ID), skipping",{id:e.id});const r=n.findIndex(t=>t.tempId&&t.content===e.content&&t.senderType===e.senderType&&new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime()<5e3);if(-1!==r)return c("[WIDGET CHAT MANAGER] 🔄 Replacing optimistic message with real message",{tempId:n[r].tempId,realId:e.id}),t.updateMessageId(n[r].tempId,e.id),t.updateMessageStatus(e.id,"delivered"),void(this.socketClient&&this.socketClient.markDelivered(e.id));const o={id:e.id,content:e.content,senderType:e.senderType,createdAt:new Date(e.createdAt),deliveryStatus:"delivered"};c("[WIDGET CHAT MANAGER] 📝 Adding new message to UI",o),t.addMessage(o),"messages"!==this.mainPanel.getCurrentView()&&e.senderType,this.socketClient&&this.socketClient.markDelivered(e.id),c("[WIDGET CHAT MANAGER] ✅ Message processed successfully",{id:e.id})}),this.socketClient.on("message:acked",e=>{this.mainPanel&&(e.tempId&&this.mainPanel.getMessageList().updateMessageId(e.tempId,e.messageId),a("Message acknowledged",e))}),this.socketClient.on("message:status",e=>{this.mainPanel&&(this.mainPanel.getMessageList().updateMessageStatus(e.messageId,e.status),a("Message status updated",e))}),this.socketClient.on("typing:start",e=>{this.mainPanel&&(c("[WIDGET CHAT MANAGER] ⌨️ Typing started",e),this.mainPanel.showTyping(e.userType))}),this.socketClient.on("typing:stop",e=>{this.mainPanel&&(c("[WIDGET CHAT MANAGER] ⌨️ Typing stopped",e),this.mainPanel.hideTyping())}),this.socketClient.on("admin:online",()=>{c("[WIDGET CHAT MANAGER] 🟢 Admin came online"),this.currentPresenceStatus="online",this.mainPanel&&this.mainPanel.setPresenceOnline()}),this.socketClient.on("admin:offline",()=>{c("[WIDGET CHAT MANAGER] 🔴 Admin went offline"),this.currentPresenceStatus="offline",this.mainPanel&&this.mainPanel.setPresenceOffline()}),this.socketClient.on("room:joined",e=>{c("Room joined",e)}),this.socketClient.on("room:error",e=>{d("Room error",e)}),this.socketClient.on("message:error",e=>{d("Message error",e)}))}async loadMessageHistory(){if(this.conversationService&&this.mainPanel)try{const e=await this.conversationService.loadMessageHistory();e.forEach(e=>{var t;null===(t=this.mainPanel)||void 0===t||t.getMessageList().addMessage(e)}),c("Message history loaded",{count:e.length})}catch(e){d("Failed to load message history",e)}}sendMessage(e){if(!this.conversationService||!this.mainPanel)return void d("Cannot send message - conversation not initialized");const t=this.conversationService.sendMessage(e),n={id:0,content:e,senderType:"widget_user",createdAt:new Date,deliveryStatus:"sent",tempId:t};this.mainPanel.getMessageList().addMessage(n),a("Message sent (optimistic)",{tempId:t})}destroy(){this.socketClient&&this.socketClient.destroy(),this.conversationService&&this.conversationService.destroy(),c("Chat manager destroyed")}}class Zt{constructor(e,t="https://feedbackfun.com",n={}){this.isCommentMode=!1,this.planStatus="unknown",this.selectedTab="feature",this.displayMode="popover",this.clickHandler=null,this.customTriggerHandler=null,this.lastClickedTrigger=null,this.escKeyHandler=null,this.popover=null,this.commentBox=null,this.roadmapDialog=null,this.mainPanel=null,this.chatManager=null,this.apiKey=e,this.apiUrl=t,this.config=n,this.userConfig=n.user;try{(0,we.initSentry)()}catch(e){}this.shadowDomManager=new p,this.screenshotCapture=new ye,this.roadmapCache=y.getInstance(),this.toggleButton=new h(()=>this.toggleMainPanel(),this.shadowDomManager),o&&setTimeout(()=>{var e;null===(e=this.toggleButton.getElement())||void 0===e||e.click()},1e3),this.init()}openChat(){this.chatManager?this.chatManager.isInitialized||this.chatManager.initialize().catch(e=>{d("Failed to initialize chat",e)}):d("Chat manager not initialized")}getProjectDomain(){return function(e){if(e)return e;try{return new URL(window.location.href).hostname}catch(e){return d("Error extracting domain:",e),window.location.hostname||"localhost"}}(this.config.devDomain)}init(){m(this.userConfig),this.config.triggerSelector||this.toggleButton.create(this.shadowDomManager.getWidgetContainer()),this.applyUserTheme(),this.config.triggerSelector&&this.setupCustomTriggers(),this.initializeChat(),this.checkPlanStatusAndShowBranding(),this.preloadRoadmapData()}initializeChat(){try{c("Initializing chat feature"),this.chatManager=new Qt(this.apiKey,this.apiUrl,this.config),c("Chat manager created successfully")}catch(e){d("Failed to initialize chat",e)}}enableCommentMode(){this.isCommentMode||(this.isCommentMode=!0,this.addEscKeyHandler(),this.config.triggerSelector||this.toggleButton.updateState(!0),this.showFeedbackForm())}disableCommentMode(){this.isCommentMode&&(this.isCommentMode=!1,this.removeClickListeners(),this.removeExistingCommentBox(),this.removeExistingPopover(),this.removeGlobalCursorHide(),this.removeEscKeyHandler(),this.config.triggerSelector||this.toggleButton.updateState(!1))}toggleCommentMode(){this.isCommentMode?this.disableCommentMode():this.enableCommentMode()}setupCustomTriggers(){this.config.triggerSelector&&(this.customTriggerHandler=e=>{e.preventDefault(),e.stopPropagation();let t=e.target;for(;t&&t!==document.body&&(!t.matches||!t.matches(this.config.triggerSelector));)t=t.parentElement;this.lastClickedTrigger=t,this.toggleCommentMode()},document.addEventListener("click",e=>{let t=e.target;for(;t&&t!==document.body;){if(t.matches&&t.matches(this.config.triggerSelector))return void this.customTriggerHandler(e);t=t.parentElement}}))}addEscKeyHandler(){this.escKeyHandler||(this.escKeyHandler=e=>{"Escape"===e.key&&this.isCommentMode&&(e.preventDefault(),this.disableCommentMode())},document.addEventListener("keydown",this.escKeyHandler))}removeEscKeyHandler(){this.escKeyHandler&&(document.removeEventListener("keydown",this.escKeyHandler),this.escKeyHandler=null)}switchToClickPageMode(){if(this.popover){const e=this.popover.getElement();e&&(e.style.display="none")}this.addClickListeners(),this.applyGlobalCursorHide()}showFeedbackForm(){this.removeExistingPopover();const e=this.lastClickedTrigger||this.toggleButton.getElement();this.popover=new f((e,t,n)=>this.submitFeedbackItem({content:e,type:t,feedbackPrivacy:n}),()=>this.showRoadmapDialog(),()=>this.disableCommentMode(),()=>this.switchToClickPageMode(),e,this.planStatus,this.shadowDomManager,this.config.hideClickMode||!1,this.shadowDomManager.getWidgetContainer());const t=e?this.displayMode:"dialog";this.popover.create(t),this.selectedTab=this.popover.getSelectedTab()}removeExistingPopover(){this.popover&&(this.popover.remove(),this.popover=null)}toggleMainPanel(){this.mainPanel?this.closeMainPanel():this.showMainPanel()}showMainPanel(){this.removeExistingMainPanel(),this.mainPanel=new C(this.config,this.shadowDomManager,{onClose:()=>this.closeMainPanel(),onOpenChat:()=>this.openChat(),onOpenRoadmap:()=>this.showRoadmapDialog(),onSubmitFeedback:(e,t,n,r)=>this.submitFeedbackItem({content:e,type:t,feedbackPrivacy:n,screenshotBase64:r}),onRequestFeature:()=>this.openRequestFeature(),onFetchRoadmapItems:e=>this.fetchRoadmapItems(e),onCaptureScreenshot:()=>this.captureScreenshot(),onCaptureScreenshotWithPosition:()=>this.captureScreenshotWithPosition()}),this.mainPanel.create(),this.chatManager&&(this.chatManager.setMainPanel(this.mainPanel),this.chatManager.isInitialized||this.chatManager.initialize().catch(e=>{d("Failed to initialize chat",e)}))}removeExistingMainPanel(){this.mainPanel&&(this.mainPanel.remove(),this.mainPanel=null)}closeMainPanel(){this.removeExistingMainPanel(),this.toggleButton.updateState(!1)}openRequestFeature(){c("Opening request feature - switch to feedback tab"),this.mainPanel&&this.mainPanel.setView("request-feature")}addClickListeners(){this.clickHandler||(this.clickHandler=e=>{if(this.isCommentMode){const t=e.target;if(t&&(this.isCommentBoxClick(t)||this.isToggleButtonClick(t)||this.isPopoverClick(t)))return;if(t===this.shadowDomManager.getShadowHost())return;e.preventDefault(),e.stopPropagation(),this.handleAnywhereClick(e)}},document.addEventListener("click",this.clickHandler,!0))}removeClickListeners(){this.clickHandler&&(document.removeEventListener("click",this.clickHandler,!0),this.clickHandler=null)}isCommentBoxClick(e){if(!this.commentBox)return!1;const t=this.shadowDomManager.getShadowHost(),n=this.shadowDomManager.getShadowRoot();return!(!n||!t)&&(e===t?null!==this.commentBox.getElement():!!n.contains(e)&&this.commentBox.isClick(e))}isToggleButtonClick(e){const t=this.toggleButton.getElement();if(!t)return!1;if(e===t)return!0;if(t.contains(e))return!0;this.shadowDomManager.getShadowHost();return!1}isPopoverClick(e){if(!this.popover)return!1;const t=this.shadowDomManager.getShadowRoot();return!!t&&(!!t.contains(e)&&this.popover.isClick(e))}handleAnywhereClick(e){const t=e.clientX,n=e.clientY;this.showCommentBox({clickX:t,clickY:n})}showCommentBox(e){this.removeExistingCommentBox(),this.commentBox=new g(({content:e,type:t,feedbackPrivacy:n},r)=>this.submitFeedbackItem({content:e,type:t,feedbackPrivacy:n},r),()=>this.getProjectDomain(),this.selectedTab,this.shadowDomManager,this.shadowDomManager.getWidgetContainer()),this.commentBox.show(e)}removeExistingCommentBox(){this.commentBox&&(this.commentBox.remove(),this.commentBox=null)}async submitFeedbackItem(e,t){const n=Date.now();document.body.classList.add("feedbackfun-loading");try{const n={projectDomain:this.getProjectDomain(),pageUrl:window.location.href,content:e.content,type:e.type,userIdentifier:m(),feedbackPrivacy:e.feedbackPrivacy||"public",screenshotBase64:e.screenshotBase64,screenshotMetadata:e.screenshotMetadata};if(t){c("Capturing screenshot for click-anywhere comment..."),this.removeExistingCommentBox();const e=this.screenshotCapture.createChatBubble(n.content,t),r=await this.screenshotCapture.captureWithTimeout(3e4);e&&e.remove(),r?(n.screenshotBase64=r.screenshot,n.screenshotMetadata=r.metadata,c("Screenshot captured and added to comment data")):(l("Screenshot capture failed or timed out, submitting without screenshot"),document.dispatchEvent(new CustomEvent("basecoat:toast",{detail:{config:{category:"warning",title:"Screenshot Unavailable",description:"Screenshot capture failed, but your feedback will still be submitted.",cancel:{label:"Dismiss"}}}})))}o&&this.config.devDomain&&(n.isDevelopment=!0);const r=fetch(`${this.apiUrl}/api/roadmap`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(n)});t||this.removeExistingPopover();const i=await r;if(!i.ok){const e=await i.json().catch(()=>({error:"Unknown error"}));throw T(),new Error(e.error||"Failed to submit feedback")}{const e=await i.json();if(null==e?void 0:e.roadmapItem){const t={id:e.roadmapItem.id,content:e.roadmapItem.content||n.content,type:e.roadmapItem.type||n.type,status:e.roadmapItem.status||"pending",createdAt:e.roadmapItem.createdAt||(new Date).toISOString(),voteCount:e.roadmapItem.voteCount||0,userIdentifier:e.roadmapItem.userIdentifier||n.userIdentifier,screenshotBase64:n.screenshotBase64,feedbackPrivacy:e.roadmapItem.feedbackPrivacy||n.feedbackPrivacy};this.roadmapCache.addItem(this.getProjectDomain(),t)}this.mainPanel||this.showMainPanel(),this.mainPanel&&this.mainPanel.setView("roadmap"),function(e="public"){const t="admin_only"===e?"Private Feedback Submitted":"Feedback Submitted",n="admin_only"===e?"Your submission is private and visible only to admins.":"Your feedback has been submitted successfully!",r=document.createElement("div");r.style.cssText='\n position: fixed;\n top: 20px;\n right: 20px;\n background: #ffffff;\n color: black;\n padding: 16px 20px;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 999999;\n max-width: 400px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;\n animation: slideIn 0.3s ease-out;\n ',r.innerHTML=`\n <div style="display: flex; align-items: start; gap: 12px;">\n <svg style="width: 20px; height: 20px; flex-shrink: 0; margin-top: 2px;" fill="none" stroke="currentColor" viewBox="0 0 24 24">\n <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>\n </svg>\n <div style="flex: 1;">\n <div style="font-weight: 600; font-size: 14px; margin-bottom: 4px;">${t}</div>\n <div style="font-size: 13px; opacity: 0.95;">${n}</div>\n </div>\n </div>\n `;const o=document.createElement("style");o.textContent="\n @keyframes slideIn {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n @keyframes slideOut {\n from {\n transform: translateX(0);\n opacity: 1;\n }\n to {\n transform: translateX(400px);\n opacity: 0;\n }\n }\n ",document.head.appendChild(o),document.body.appendChild(r),setTimeout(()=>{r.style.animation="slideOut 0.3s ease-in",setTimeout(()=>{r.remove(),o.remove()},300)},4e3)}(n.feedbackPrivacy)}}catch(e){throw d("Error submitting feedback:",e),this.roadmapCache.removeItem(this.getProjectDomain(),n),this.mainPanel&&"roadmap"===this.mainPanel.getCurrentView()&&this.mainPanel.setView("roadmap"),T(),e}finally{document.body.classList.remove("feedbackfun-loading"),t&&this.disableCommentMode()}}applyGlobalCursorHide(){const e=document.createElement("style");e.id="feedbackfun-global-cursor-hide";const t=`data:image/svg+xml;base64,${btoa('\n <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">\n <defs>\n <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">\n <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.3)"/>\n </filter>\n </defs>\n \x3c!-- Larger teardrop: rounded rectangle with 3 corners at 50% radius, bottom-left sharp --\x3e\n <path d="M 4 16 \n A 12 12 0 0 1 16 4 \n A 12 12 0 0 1 28 16 \n A 12 12 0 0 1 16 28 \n L 4 28 \n Z" \n fill="#1E90FF" \n filter="url(#shadow)"/>\n </svg>\n ')}`;e.textContent=`\n /* Apply custom teardrop cursor everywhere during comment mode, except loading state */\n body:not(.feedbackfun-loading), \n body:not(.feedbackfun-loading) * {\n cursor: url("${t}") 4 28, auto !important;\n }\n \n /* Normal cursor for inputs and text areas */\n body input,\n body textarea,\n body [contenteditable] {\n cursor: text !important;\n }\n \n /* Pointer cursor for buttons and interactive elements */\n body button,\n body a,\n body [role="button"],\n body [onclick] {\n cursor: pointer !important;\n }\n `,this.shadowDomManager.appendCSS('\n /* Widget elements inside shadow DOM use normal cursors */\n .feedbackfun-toggle-button,\n button[title*="Exit feedback mode"],\n .feedbackfun-popover *,\n .feedbackfun-dialog *,\n .feedbackfun-comment-box * {\n cursor: auto !important;\n }\n\n /* Pointer cursor for interactive widget elements */\n .feedbackfun-toggle-button,\n button[title*="Exit feedback mode"],\n .feedbackfun-tab,\n .feedbackfun-submit-btn,\n .feedbackfun-popover-submit-btn,\n .feedbackfun-roadmap-btn,\n .feedbackfun-click-page-btn,\n .feedbackfun-popover-close,\n .feedbackfun-upvote-button,\n .feedbackfun-roadmap-close {\n cursor: pointer !important;\n }\n \n /* Text cursor for input fields */\n .feedbackfun-popover-content-input,\n .feedbackfun-comment-content-input {\n cursor: text !important;\n }\n \n /* Disabled state cursor */\n .feedbackfun-submit-btn:disabled,\n .feedbackfun-popover-submit-btn:disabled {\n cursor: not-allowed !important;\n }\n '),document.head.appendChild(e)}removeGlobalCursorHide(){const e=document.getElementById("feedbackfun-global-cursor-hide");e&&e.remove()}async checkPlanStatusAndShowBranding(){try{const e=await fetch(`${this.apiUrl}/api/plan-status`,{method:"GET",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}});if(e.ok){const t=await e.json();this.planStatus=t.isPaid&&t.isActive?"paid":"free"}else this.planStatus="free"}catch(e){d("Error checking plan status:",e),this.planStatus="free"}this.updateBrandingVisibility()}updateBrandingVisibility(){this.popover&&(this.removeExistingPopover(),this.showFeedbackForm())}showRoadmapDialog(){this.removeExistingRoadmapDialog(),this.roadmapDialog=new b(this.apiUrl,this.apiKey,()=>this.getProjectDomain(),()=>this.removeExistingRoadmapDialog(),this.shadowDomManager),this.roadmapDialog.create(),this.isCommentMode&&this.disableCommentMode()}removeExistingRoadmapDialog(){this.roadmapDialog&&(this.roadmapDialog.remove(),this.roadmapDialog=null)}applyUserTheme(){const e=this.shadowDomManager.getShadowRoot();if(!(e&&e.host instanceof HTMLElement))return;const t=e.host,n=be();"dark"===n.theme?t.classList.add("dark"):t.classList.remove("dark"),"dark"===n.theme?(this.config.darkPrimary&&t.style.setProperty("--primary",this.config.darkPrimary),this.config.darkPrimaryForeground&&t.style.setProperty("--primary-foreground",this.config.darkPrimaryForeground)):(this.config.primaryColor&&t.style.setProperty("--primary",this.config.primaryColor),this.config.primaryForeground&&t.style.setProperty("--primary-foreground",this.config.primaryForeground)),this.setupThemeChangeMonitoring()}setupThemeChangeMonitoring(){new MutationObserver(()=>{const e=this.shadowDomManager.getShadowRoot();if(!(e&&e.host instanceof HTMLElement))return;const t=be(),n=e.host;"dark"===t.theme?(n.classList.add("dark"),this.config.darkPrimary&&n.style.setProperty("--primary",this.config.darkPrimary),this.config.darkPrimaryForeground&&n.style.setProperty("--primary-foreground",this.config.darkPrimaryForeground)):(n.classList.remove("dark"),this.config.primaryColor&&n.style.setProperty("--primary",this.config.primaryColor),this.config.primaryForeground&&n.style.setProperty("--primary-foreground",this.config.primaryForeground))}).observe(document.documentElement,{attributes:!0});window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{const e=this.shadowDomManager.getShadowRoot();if(!(e&&e.host instanceof HTMLElement))return;const t=be(),n=e.host;"dark"===t.theme?(n.classList.add("dark"),this.config.darkPrimary&&n.style.setProperty("--primary",this.config.darkPrimary),this.config.darkPrimaryForeground&&n.style.setProperty("--primary-foreground",this.config.darkPrimaryForeground)):(n.classList.remove("dark"),this.config.primaryColor&&n.style.setProperty("--primary",this.config.primaryColor),this.config.primaryForeground&&n.style.setProperty("--primary-foreground",this.config.primaryForeground))})}setPrimaryColor(e){"dark"===be().theme?this.config.darkPrimary=e:this.config.primaryColor=e;const t=this.shadowDomManager.getShadowRoot();t&&t.host instanceof HTMLElement&&t.host.style.setProperty("--primary",e)}setPrimaryForeground(e){"dark"===be().theme?this.config.darkPrimaryForeground=e:this.config.primaryForeground=e;const t=this.shadowDomManager.getShadowRoot();t&&t.host instanceof HTMLElement&&t.host.style.setProperty("--primary-foreground",e)}setDisplayMode(e){this.displayMode=e}getDisplayMode(){return this.displayMode}async captureScreenshot(){try{await new Promise(e=>setTimeout(e,100));const e=await this.screenshotCapture.captureWithTimeout(3e4);return this.mainPanel&&this.mainPanel.show(),e?e.screenshot:null}catch(e){return d("Error capturing screenshot:",e),this.mainPanel&&this.mainPanel.show(),null}}async captureScreenshotWithPosition(){try{await new Promise(e=>setTimeout(e,100));const e=document.createElement("div");e.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 999999;\n cursor: crosshair;\n ";const t='\n <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" style="pointer-events: none;">\n <defs>\n <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">\n <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="rgba(0,0,0,0.3)"/>\n </filter>\n </defs>\n <path d="M 4 16 A 12 12 0 0 1 16 4 A 12 12 0 0 1 28 16 A 12 12 0 0 1 16 28 L 4 28 Z"\n fill="#1E90FF" filter="url(#shadow)"/>\n </svg>\n ',n=document.createElement("div");n.style.cssText="\n position: fixed;\n width: 32px;\n height: 32px;\n pointer-events: none;\n z-index: 1000000;\n display: none;\n ",n.innerHTML=t,document.body.appendChild(e),document.body.appendChild(n);const r=e=>{n.style.left=e.clientX-4+"px",n.style.top=e.clientY-28+"px",n.style.display="block"};e.addEventListener("mousemove",r);const o=await new Promise(t=>{e.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),t({x:e.clientX,y:e.clientY})},{once:!0})});e.remove(),n.remove();const i=this.screenshotCapture.createChatBubble("",o);await new Promise(e=>setTimeout(e,100));const s=await this.screenshotCapture.captureWithTimeout(3e4);return i.remove(),this.mainPanel&&this.mainPanel.show(),s?s.screenshot:null}catch(e){return d("Error capturing screenshot with position:",e),this.mainPanel&&this.mainPanel.show(),null}}async fetchRoadmapItems(e){try{const t=await fetch(`${this.apiUrl}/api/roadmap?projectDomain=${encodeURIComponent(this.getProjectDomain())}&status=${e}`,{method:"GET",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}});if(t.ok){const e=await t.json(),n=e.items||e.roadmapItems||e||[];return Array.isArray(n)?n:[]}return d("Failed to fetch roadmap items:",t.status,t.statusText),[]}catch(e){return d("Error fetching roadmap items:",e),[]}}async preloadRoadmapData(){try{const e=this.roadmapCache.get(this.getProjectDomain());if(e&&e.length>0)return void c("Roadmap data already cached, skipping preload");const t=await fetch(`${this.apiUrl}/api/roadmap?projectDomain=${encodeURIComponent(this.getProjectDomain())}`,{method:"GET",headers:{Authorization:`Bearer ${this.apiKey}`,"Content-Type":"application/json"}});if(t.ok){const e=await t.json(),n=e.items||e.roadmapItems||e||[],r=Array.isArray(n)?n:[];this.roadmapCache.set(this.getProjectDomain(),r),c(`Preloaded ${r.length} roadmap items into cache`)}else l("Failed to preload roadmap data:",t.status,t.statusText)}catch(e){l("Background roadmap preload failed:",e)}}setUserInfo(e){c("Setting user info",{userId:e.id}),this.userConfig=e,m(e),this.chatManager&&this.chatManager.updateConversationMetadata(e).catch(e=>{d("Failed to update conversation metadata",e)})}clearUserInfo(){c("Clearing user info"),this.userConfig=void 0,localStorage.removeItem("feedbackfun-user-id"),localStorage.removeItem("feedbackfun-user-info"),c("User data cleared"),m()}destroy(){this.chatManager&&(this.chatManager.destroy(),this.chatManager=null),this.shadowDomManager.destroy(),this.toggleButton.remove(),this.removeExistingPopover(),this.removeExistingCommentBox(),this.removeExistingRoadmapDialog(),this.removeExistingMainPanel(),this.removeClickListeners(),this.removeGlobalCursorHide(),this.removeEscKeyHandler()}}let en=null;const tn={init:async function(e){en&&(en.destroy(),en=null);const{apiKey:t,projectId:n}=e,r=o?"http://localhost:3000":"https://feedbackfun.com";let i={};const s=await async function(e,t,n){try{const r=await fetch(`${e}/api/widget-config/${n}`,{method:"GET",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json"}});return r.ok?(await r.json()).config:(l("Failed to fetch widget config:",r.status,r.statusText),null)}catch(e){return l("Error fetching widget config:",e),null}}(r,t,n);return s&&(i=function(e){var t;return{primaryColor:e.primaryColor,primaryForeground:e.primaryForegroundColor,darkPrimary:e.darkPrimaryColor,darkPrimaryForeground:e.darkPrimaryForegroundColor,displayMode:e.displayMode,triggerSelector:e.triggerSelector||void 0,hideClickMode:e.hideClickMode,hidePoweredBy:e.hidePoweredBy,adminAvatars:(null===(t=e.adminAvatars)||void 0===t?void 0:t.map(e=>e.url))||[],adminPresence:e.adminPresence,enableDevMode:e.enableDevMode,devDomain:o?e.projectDomain:void 0}}(s)),en=new Zt(t,r,i),en},getInstance:function(){return en},destroy:function(){en&&(en.destroy(),en=null)},setPrimaryColor:function(e){en&&en.setPrimaryColor(e)},setPrimaryForeground:function(e){en&&en.setPrimaryForeground(e)},setUserInfo:function(e){en&&en.setUserInfo(e)},clearUserInfo:function(){en&&en.clearUserInfo()}};export{tn as default};
|
|
2
2
|
//# sourceMappingURL=feedbackfun-widget.esm.js.map
|