@react-native/debugger-frontend
Version:
Debugger frontend for React Native based on Chrome DevTools
1 lines • 58.6 kB
JavaScript
import*as e from"../helpers/helpers.js";import*as t from"../types/types.js";import*as n from"../../../core/platform/platform.js";import*as r from"../../cpu_profile/cpu_profile.js";const a=[],i=[];let s=1;var o=Object.freeze({__proto__:null,reset:function(){a.length=0,i.length=0},handleEvent:function(e){t.TraceEvents.isTraceEventAnimation(e)&&a.push(e)},finalize:async function(){const t=e.Trace.createMatchedSortedSyntheticEvents(a);i.push(...t),s=3},data:function(){if(3!==s)throw new Error("Animation handler is not finalized");return{animations:i}}});const c=new Map,d=new Map,l=new Map,m=new Map,u=new Map;function f(e){switch(e){case"seller":return"seller";case"bidder":return"bidder";default:return"unknown"}}function g(t){return e.SyntheticEvents.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:t,name:"SyntheticAuctionWorkletEvent",s:"t",cat:t.cat,tid:t.tid,ts:t.ts,ph:"I",pid:t.args.data.pid,host:t.args.data.host,target:t.args.data.target,type:f(t.args.data.type)})}function T(){return{worklets:new Map(l)}}var h=Object.freeze({__proto__:null,reset:function(){c.clear(),d.clear(),l.clear(),m.clear(),u.clear()},handleEvent:function(e){if(t.TraceEvents.isTraceEventAuctionWorkletRunningInProcess(e))c.set(e.args.data.pid,e);else if(t.TraceEvents.isTraceEventAuctionWorkletDoneWithProcess(e))d.set(e.args.data.pid,e);else if(t.TraceEvents.isThreadName(e)){if("auction_worklet.CrUtilityMain"===e.args.name)return void m.set(e.pid,e);"AuctionV8HelperThread"===e.args.name&&u.set(e.pid,e)}},finalize:async function(){for(const[e,t]of m){const n=u.get(e);if(!n)continue;const r=c.get(e),a=d.get(e);let i=null;r?(i={...g(r),args:{data:{runningInProcessEvent:r,utilityThread:t,v8HelperThread:n}}},a&&(i.args.data.doneWithProcessEvent=a)):a&&(i={...g(a),args:{data:{doneWithProcessEvent:a,utilityThread:t,v8HelperThread:n}}},r&&(i.args.data.runningInProcessEvent=r)),null!==i&&l.set(e,i)}},data:T});let v=1;const p=[],E=new Map,w=new Map,M=new Map,I=[],S=[],y=[];function F(e,t){return t+"@"+e}var P=Object.freeze({__proto__:null,EnhancedTracesVersion:1,initialize:function(){if(1!==v)throw new Error("Enhanced Traces Handler was not reset");v=2},reset:function(){p.length=0,E.clear(),w.clear(),M.clear(),I.length=0,S.length=0,y.length=0,v=1},handleEvent:function(e){if(2!==v)throw new Error("Enhanced Traces Handler is not initialized while handling event");if(t.TraceEvents.isTraceEventTargetRundown(e)){const t=e.args?.data;E.set(F(t.isolate,t.scriptId),t.v8context),I.find((e=>e.id===t.frame))||I.push({id:t.frame,type:t.frameType,isolate:t.isolate,pid:e.pid,url:t.url}),S.find((e=>e.v8Context===t.v8context))||S.push({id:-1,origin:t.origin,v8Context:t.v8context,auxData:{frameId:t.frame,isDefault:t.isDefault,type:t.contextType}})}else if(t.TraceEvents.isTraceEventScriptRundown(e)){p.push(e);const t=e.args.data;y.find((e=>e.scriptId===t.scriptId&&e.isolate===t.isolate))||y.push({scriptId:t.scriptId,isolate:t.isolate,executionContextId:t.executionContextId,startLine:t.startLine,startColumn:t.startColumn,endLine:t.endLine,endColumn:t.endColumn,hash:t.hash,isModule:t.isModule,url:t.url,hasSourceUrl:t.hasSourceUrl,sourceMapUrl:t.sourceMapUrl})}else if(t.TraceEvents.isTraceEventScriptRundownSource(e)){const t=e.args.data,n=F(t.isolate,t.scriptId);t.sourceText&&w.set(n,t.sourceText),t.length&&M.set(n,t.length)}},finalize:async function(){if(2!==v)throw new Error("Enhanced Traces Handler is not initialized while being finalized");const e=new Map;p.forEach((t=>{const n=t.args.data,r=E.get(F(n.isolate,n.scriptId));r&&e.set(r,n.executionContextId)})),S.forEach((t=>{if(t.v8Context){const n=e.get(t.v8Context);n&&(t.id=n)}})),y.forEach((e=>{const t=F(e.isolate,e.scriptId);e.sourceText=w.get(t),e.length=M.get(t)})),v=3},data:function(){if(3!==v)throw new Error("Enhanced Traces Handler is not finalized");return{targets:I,executionContexts:S,scripts:y}}});let _=[];const C=[],R=[],k=[],L=[];let D=1;const b=["workerStart","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd"],N=["navigationStart","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","commitNavigationEnd","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd"];function z(){if(3!==D)throw new Error("UserTimings handler is not finalized");return{performanceMeasures:_.filter((e=>"blink.user_timing"===e.cat)),consoleTimings:_.filter((e=>"blink.console"===e.cat)),performanceMarks:[...R],timestampEvents:[...L]}}var W=Object.freeze({__proto__:null,reset:function(){_.length=0,C.length=0,R.length=0,k.length=0,L.length=0,D=2},handleEvent:function(e){if(2!==D)throw new Error("UserTimings handler is not initialized");[...b,...N].includes(e.name)||(t.TraceEvents.isTraceEventPerformanceMeasure(e)?C.push(e):(t.TraceEvents.isTraceEventPerformanceMark(e)&&R.push(e),t.TraceEvents.isTraceEventConsoleTime(e)&&k.push(e),t.TraceEvents.isTraceEventTimeStamp(e)&&L.push(e)))},finalize:async function(){if(2!==D)throw new Error("UserTimings handler is not initialized");const t=[...C,...k];_=e.Trace.createMatchedSortedSyntheticEvents(t),D=3},data:z});const x=[],O=[],B=[];let U=1;function q(e){for(const n of e){const e=H(n);if(!e)continue;const r={name:n.name,ph:"X",pid:t.TraceEvents.ProcessID(0),tid:t.TraceEvents.ThreadID(0),ts:n.ts,selfTime:t.Timing.MicroSeconds(0),dur:n.dur,cat:"devtools.extension",args:e};t.Extensions.isExtensionPayloadMarker(e)?B.push(r):t.Extensions.isExtensionPayloadTrackEntry(e)&&x.push(r)}}function H(e){const n=t.TraceEvents.isTraceEventPerformanceMark(e)?e.args.data?.detail:e.args.data.beginEvent.args.detail;if(!n)return null;try{const e=JSON.parse(n);return"devtools"in e&&t.Extensions.isValidExtensionPayload(e.devtools)?e.devtools:null}catch(e){return null}}var A=Object.freeze({__proto__:null,handleEvent:function(e){},reset:function(){U=2,x.length=0,O.length=0,B.length=0},finalize:async function(){if(2!==U)throw new Error("ExtensionTraceData handler is not initialized");!function(){const t=z().performanceMeasures,n=z().performanceMarks;q(e.Trace.mergeEventsInOrder(t,n)),e.Extensions.buildTrackDataFromExtensionEntries(x,O)}(),U=3},extractExtensionEntries:q,extensionDataInTiming:H,data:function(){if(3!==U)throw new Error("ExtensionTraceData handler is not finalized");return{extensionTrackData:[...O],extensionMarkers:[...B]}},deps:function(){return["UserTimings"]}});const j=new Map;let G="",V="";const $=new Map;let X=t.TraceEvents.ProcessID(-1),Y=t.TraceEvents.ThreadID(-1),K=t.TraceEvents.ProcessID(-1),Q=t.TraceEvents.ThreadID(-1),J=null;const Z=new Map,ee=new Set,te={min:t.Timing.MicroSeconds(Number.POSITIVE_INFINITY),max:t.Timing.MicroSeconds(Number.NEGATIVE_INFINITY),range:t.Timing.MicroSeconds(Number.POSITIVE_INFINITY)},ne=new Map,re=new Map,ae=[],ie=new Map;let se=t.Timing.MicroSeconds(-1);const oe=new Set(["B","E","X","I"]);let ce=1,de=!0;const le=new Set(["TracingStartedInPage","TracingSessionIdForWorker","TracingStartedInBrowser"]);function me(e,r){n.MapUtilities.getWithDefault($,r.processId,(()=>new Map)).set(r.frame,r);const a=n.MapUtilities.getWithDefault(j,r.frame,(()=>new Map)),i=n.MapUtilities.getWithDefault(a,r.processId,(()=>[])),s=i.at(-1);s&&s.frame.url===r.url||i.push({frame:r,window:{min:e.ts,max:t.Timing.MicroSeconds(0),range:t.Timing.MicroSeconds(0)}})}function ue(){if(3!==ce)throw new Error("Meta Handler is not finalized");return{traceBounds:{...te},browserProcessId:X,browserThreadId:Y,processNames:Z,gpuProcessId:K,gpuThreadId:Q===t.TraceEvents.ThreadID(-1)?void 0:Q,viewportRect:J||void 0,mainFrameId:G,mainFrameURL:V,navigationsByFrameId:ne,navigationsByNavigationId:re,threadsInProcess:ie,rendererProcessesByFrame:j,topLevelRendererIds:ee,frameByProcessId:$,mainFrameNavigations:ae,traceIsGeneric:de}}var fe=Object.freeze({__proto__:null,reset:function(){ne.clear(),re.clear(),Z.clear(),ae.length=0,X=t.TraceEvents.ProcessID(-1),Y=t.TraceEvents.ThreadID(-1),K=t.TraceEvents.ProcessID(-1),Q=t.TraceEvents.ThreadID(-1),J=null,ee.clear(),ie.clear(),j.clear(),$.clear(),te.min=t.Timing.MicroSeconds(Number.POSITIVE_INFINITY),te.max=t.Timing.MicroSeconds(Number.NEGATIVE_INFINITY),te.range=t.Timing.MicroSeconds(Number.POSITIVE_INFINITY),se=t.Timing.MicroSeconds(-1),de=!0,ce=1},initialize:function(){if(1!==ce)throw new Error("Meta Handler was not reset");ce=2},handleEvent:function(e){if(2!==ce)throw new Error("Meta Handler is not initialized");if(de&&le.has(e.name)&&(de=!1),t.TraceEvents.isProcessName(e)&&Z.set(e.pid,e),0!==e.ts&&!e.name.endsWith("::UMA")&&oe.has(e.ph)){te.min=t.Timing.MicroSeconds(Math.min(e.ts,te.min));const n=e.dur||t.Timing.MicroSeconds(0);te.max=t.Timing.MicroSeconds(Math.max(e.ts+n,te.max))}if(!t.TraceEvents.isProcessName(e)||"Browser"!==e.args.name&&"HeadlessBrowser"!==e.args.name)if(!t.TraceEvents.isProcessName(e)||"Gpu"!==e.args.name&&"GPU Process"!==e.args.name)if(t.TraceEvents.isThreadName(e)&&"CrGpuMain"===e.args.name)Q=e.tid;else{if(t.TraceEvents.isThreadName(e)&&"CrBrowserMain"===e.args.name&&(Y=e.tid),t.TraceEvents.isTraceEventMainFrameViewport(e)&&null===J){const t=e.args.data.viewport_rect,n=t[0],r=t[1],a=t[2],i=t[5];J=new DOMRect(n,r,a,i)}if(t.TraceEvents.isTraceEventTracingStartedInBrowser(e)){if(se=e.ts,!e.args.data)throw new Error("No frames found in trace data");for(const t of e.args.data.frames??[]){me(e,t),t.parent||ee.add(t.processId);const n="isOutermostMainFrame"in t;"isInPrimaryMainFrame"in t&&n?t.isInPrimaryMainFrame&&t.isOutermostMainFrame&&(G=t.frame,V=t.url):n?t.isOutermostMainFrame&&(G=t.frame,V=t.url):!t.parent&&t.url&&(G=t.frame,V=t.url)}}else if(t.TraceEvents.isTraceEventFrameCommittedInBrowser(e)){const t=e.args.data;if(!t)return;if(me(e,t),t.parent)return;ee.add(t.processId)}else if(t.TraceEvents.isTraceEventCommitLoad(e)){const t=e.args.data;if(!t)return;const{frame:n,name:r,url:a}=t;me(e,{processId:e.pid,frame:n,name:r,url:a})}else if(t.TraceEvents.isThreadName(e)){n.MapUtilities.getWithDefault(ie,e.pid,(()=>new Map)).set(e.tid,e)}else if(t.TraceEvents.isTraceEventNavigationStartWithURL(e)&&e.args.data){const t=e.args.data.navigationId;if(re.has(t))return;re.set(t,e);const n=e.args.frame,r=ne.get(n)||[];return r.push(e),ne.set(n,r),void(n===G&&ae.push(e))}}else K=e.pid;else X=e.pid},finalize:async function(){if(2!==ce)throw new Error("Handler is not initialized");se>=0&&(te.min=se),te.range=t.Timing.MicroSeconds(te.max-te.min);for(const[,e]of j){const n=[...e.values()].flat();for(let e=0;e<n.length;e++){const r=n[e],a=n[e+1];a?(r.window.max=t.Timing.MicroSeconds(a.window.min-1),r.window.range=t.Timing.MicroSeconds(r.window.max-r.window.min)):(r.window.max=t.Timing.MicroSeconds(te.max),r.window.range=t.Timing.MicroSeconds(te.max-r.window.min))}}for(const[e,t]of ne)if(!j.has(e)){ne.delete(e);for(const e of t)e.args.data&&re.delete(e.args.data.navigationId)}const n=ae.at(0),r=e.Timing.secondsToMicroseconds(t.Timing.Seconds(.5));if(n){const e=n.ts-te.min<r;n.args.data?.isOutermostMainFrame&&n.args.data?.documentLoaderURL&&e&&(V=n.args.data.documentLoaderURL)}ce=3},data:ue});let ge=1;const Te=[],he=[],ve=new Map;let pe={},Ee=null;const we=[],Me=[];function Ie(){return{paints:Te,snapshots:he,paintsToSnapshots:ve}}var Se=Object.freeze({__proto__:null,reset:function(){ge=1,Te.length=0,he.length=0,ve.clear(),pe={},Ee=null,we.length=0,Me.length=0},initialize:function(){if(1!==ge)throw new Error("LayerTree Handler was not reset before being initialized");ge=2},handleEvent:function(e){(t.TraceEvents.isTraceEventPaint(e)||t.TraceEvents.isTraceEventDisplayListItemListSnapshot(e)||t.TraceEvents.isTraceEventUpdateLayer(e)||t.TraceEvents.isTraceEventSetLayerId(e))&&Me.push(e)},finalize:async function(){if(2!==ge)throw new Error("LayerTree Handler is not initialized");const n=ue();e.Trace.sortTraceEventsInPlace(Me);for(const e of Me)if(t.TraceEvents.isTraceEventSetLayerId(e)){if(n.mainFrameId!==e.args.data.frame)continue;Ee=e.args.data.layerTreeId}else if(t.TraceEvents.isTraceEventUpdateLayer(e))we.push(e);else{if(t.TraceEvents.isTraceEventPaint(e)){if(!e.args.data.layerId)continue;Te.push(e),pe[e.args.data.layerId]=e;continue}if(t.TraceEvents.isTraceEventDisplayListItemListSnapshot(e)){let t=null;for(let n=we.length-1;n>-1;n--){const r=we[n];if(r.pid===e.pid&&r.tid===e.tid){t=r;break}}if(!t)continue;if(t.args.layerTreeId!==Ee)continue;const n=pe[t.args.layerId];if(!n)continue;he.push(e),ve.set(n,e)}}ge=3},data:Ie,deps:function(){return["Meta"]}});const ye=new Map,Fe=new Map,Pe=new Map,_e=new Map;let Ce=1;function Re(){if(3!==Ce)throw new Error("Samples Handler is not finalized");return{profilesInProcess:Fe,entryToNode:Pe}}function ke(e,t){const r=n.MapUtilities.getWithDefault(_e,e,(()=>new Map));return n.MapUtilities.getWithDefault(r,t,(()=>({rawProfile:{startTime:0,endTime:0,nodes:[],samples:[],timeDeltas:[],lines:[]},profileId:t})))}var Le=Object.freeze({__proto__:null,reset:function(){ye.clear(),_e.clear(),Fe.clear(),Pe.clear(),Ce=1},initialize:function(){if(1!==Ce)throw new Error("Samples Handler was not reset");Ce=2},handleEvent:function(e){if(2!==Ce)throw new Error("Samples Handler is not initialized");if(t.TraceEvents.isSyntheticCpuProfile(e)){const t=e.pid,n=e.tid,r=ke(t,"0x1");return r.rawProfile=e.args.data.cpuProfile,void(r.threadId=n)}if(t.TraceEvents.isTraceEventProfile(e)){const t=ke(e.pid,e.id);return t.rawProfile.startTime=e.ts,void(t.threadId=e.tid)}if(t.TraceEvents.isTraceEventProfileChunk(e)){const t=ke(e.pid,e.id).rawProfile,n=e.args?.data?.cpuProfile||{samples:[]},r=n?.samples||[],a=[];for(const e of n?.nodes||[]){const t=void 0===e.callFrame.lineNumber?-1:e.callFrame.lineNumber,n=void 0===e.callFrame.columnNumber?-1:e.callFrame.columnNumber,r=String(e.callFrame.scriptId),i=e.callFrame.url||"",s={...e,callFrame:{...e.callFrame,url:i,lineNumber:t,columnNumber:n,scriptId:r}};a.push(s)}const i=e.args.data?.timeDeltas||[],s=e.args.data?.lines||Array(r.length).fill(0);if(t.nodes.push(...a),t.samples?.push(...r),t.timeDeltas?.push(...i),t.lines?.push(...s),t.samples&&t.timeDeltas&&t.samples.length!==t.timeDeltas.length)return void console.error("Failed to parse CPU profile.");if(!t.endTime&&t.timeDeltas){const e=t.timeDeltas;t.endTime=e.reduce(((e,t)=>e+t),t.startTime)}}else;},finalize:async function(){if(2!==Ce)throw new Error("Samples Handler is not initialized");!function(){for(const[s,o]of _e)for(const[c,d]of o){const l=d.threadId;if(!d.rawProfile.nodes.length||void 0===l)continue;const m=[],u=new r.CPUProfileDataModel.CPUProfileDataModel(d.rawProfile),f=e.TreeHelpers.makeEmptyTraceEntryTree();f.maxDepth=u.maxDepth;const g={rawProfile:d.rawProfile,parsedProfile:u,profileCalls:[],profileTree:f,profileId:c},T=n.MapUtilities.getWithDefault(Fe,s,(()=>new Map));function a(n,r,a,i){if(void 0===l)return;const o=e.Timing.millisecondsToMicroseconds(t.Timing.MilliSeconds(i)),d=r.id,u=e.Trace.makeProfileCall(r,c,a,o,s,l);g.profileCalls.push(u),m.push(g.profileCalls.length-1);const f=e.TreeHelpers.makeEmptyTraceEntryNode(u,d);Pe.set(u,f),f.depth=n,1===m.length&&g.profileTree?.roots.add(f)}function i(n,r,a,i,s,o){const d=m.pop(),l=void 0!==d&&g.profileCalls[d];if(!l)return;const{callFrame:u,ts:f,pid:T,tid:h}=l,v=Pe.get(l);if(void 0===u||void 0===f||void 0===T||void 0===c||void 0===h||void 0===v)return;const p=e.Timing.millisecondsToMicroseconds(t.Timing.MilliSeconds(s)),E=e.Timing.millisecondsToMicroseconds(t.Timing.MilliSeconds(o));l.dur=p,l.selfTime=E;const w=m.at(-1),M=void 0!==w&&g.profileCalls.at(w),I=M&&Pe.get(M);I&&(v.parent=I,I.children.push(v))}u.forEachFrame(a,i),T.set(l,g)}}(),Ce=3},data:Re,getProfileCallFunctionName:function(e,t){const n=e.profilesInProcess.get(t.pid)?.get(t.tid),r=n?.parsedProfile.nodeById(t.nodeId);return r?.functionName?r.functionName:t.callFrame.functionName}});const De=new Map,be=Array(),Ne=new Map;let ze=[];const We=[];let xe=1,Oe=t.Configuration.defaults();const Be=()=>({url:null,isOnMainFrame:!1,threads:new Map}),Ue=()=>({name:null,entries:[],profileCalls:[]}),qe=(e,t)=>n.MapUtilities.getWithDefault(e,t,Be),He=(e,t)=>n.MapUtilities.getWithDefault(e.threads,t,Ue);function Ae(){if(3!==xe)throw new Error("Renderer Handler is not finalized");return{processes:new Map(De),compositorTileWorkers:new Map(je()),entryToNode:new Map(Ne),allTraceEntries:[...ze]}}function je(){const e=new Map;for(const t of be){const n=e.get(t.pid)||[];n.push(t.tid),e.set(t.pid,n)}return e}function Ge(e,t,n,r){Ve(e,n),$e(e,t,n),Xe(e,n,r)}function Ve(e,t){for(const n of t.values())for(const[t,r]of n)for(const n of r.flat()){const r=qe(e,t);if(null===r.url||"about:blank"===r.url)try{new URL(n.frame.url),r.url=n.frame.url}catch(e){r.url=null}}}function $e(e,t,n){for(const[r,a]of n)for(const[n]of a){const a=qe(e,n);r===t&&(a.isOnMainFrame=!0)}}function Xe(e,t,n){for(const[t,r]of e)for(const[e,a]of n.get(t)??[]){He(r,e).name=a?.args.name??`${e}`}}function Ye(e){const t=T().worklets;if(!ue().traceIsGeneric)for(const[n,r]of e)if(null!==r.url);else{const a=t.get(n);a?r.url=a.host:e.delete(n)}}function Ke(e){for(const[,t]of e)for(const[e,n]of t.threads)n.tree?.roots.size||t.threads.delete(e)}function Qe(t,n){const r=Re();for(const[a,i]of t)for(const[t,s]of i.threads){if(!s.entries.length){s.tree=e.TreeHelpers.makeEmptyTraceEntryTree();continue}e.Trace.sortTraceEventsInPlace(s.entries);const i=r.profilesInProcess.get(a)?.get(t);if(i){const n=i.parsedProfile,r=n&&new e.SamplesIntegrator.SamplesIntegrator(n,i.profileId,a,t,Oe),o=r?.buildProfileCalls(s.entries);if(r&&o){ze=[...ze,...o],s.entries=e.Trace.mergeEventsInOrder(s.entries,o),s.profileCalls=o;const t=r.jsSampleEvents;t&&(ze=[...ze,...t],s.entries=e.Trace.mergeEventsInOrder(s.entries,t))}}const o=e.TreeHelpers.treify(s.entries,n);s.tree=o.tree;for(const[e,t]of o.entryToNode)Ne.set(e,t)}}function Je(e){if(t.TraceEvents.isTraceEventEnd(e)){const n=We.pop();return n?n.name!==e.name||n.cat!==e.cat?(console.error("Begin/End events mismatch at "+n.ts+" ("+n.name+") vs. "+e.ts+" ("+e.name+")"),null):(n.dur=t.Timing.MicroSeconds(e.ts-n.ts),null):null}const n={...e,ph:"X",dur:t.Timing.MicroSeconds(0)};return We.push(n),n}var Ze=Object.freeze({__proto__:null,handleUserConfig:function(e){Oe=e},reset:function(){De.clear(),Ne.clear(),ze.length=0,We.length=0,be.length=0,xe=1},initialize:function(){if(1!==xe)throw new Error("Renderer Handler was not reset");xe=2},handleEvent:function(e){if(2!==xe)throw new Error("Renderer Handler is not initialized");if(t.TraceEvents.isThreadName(e)&&e.args.name?.startsWith("CompositorTileWorker")&&be.push({pid:e.pid,tid:e.tid}),t.TraceEvents.isTraceEventBegin(e)||t.TraceEvents.isTraceEventEnd(e)){const t=qe(De,e.pid),n=He(t,e.tid),r=Je(e);if(!r)return;return n.entries.push(r),void ze.push(r)}if(t.TraceEvents.isTraceEventInstant(e)||t.TraceEvents.isTraceEventComplete(e)){const t=qe(De,e.pid);He(t,e.tid).entries.push(e),ze.push(e)}},finalize:async function(){if(2!==xe)throw new Error("Renderer Handler is not initialized");const{mainFrameId:t,rendererProcessesByFrame:n,threadsInProcess:r}=ue();Ge(De,t,n,r),Ye(De),Qe(De),Ke(De),e.Trace.sortTraceEventsInPlace(ze),xe=3},data:Ae,assignMeta:Ge,assignOrigin:Ve,assignIsMainFrame:$e,assignThreadName:Xe,sanitizeProcesses:Ye,sanitizeThreads:Ke,buildHierarchy:Qe,makeCompleteEvent:Je,deps:function(){return["Meta","Samples","AuctionWorklets"]}});function et(e,t,n){let r="OTHER";return"CrRendererMain"===t.name?r="MAIN_THREAD":"DedicatedWorker thread"===t.name?r="WORKER":t.name?.startsWith("CompositorTileWorker")?r="RASTERIZER":n.worklets.has(e)?r="AUCTION_WORKLET":t.name?.startsWith("ThreadPool")&&(r="THREAD_POOL"),r}function tt(e,t){const n=[];if(e.processes.size)for(const[r,a]of e.processes)for(const[i,s]of a.threads){if(!s.tree)continue;const o=et(r,s,t);n.push({name:s.name,pid:r,tid:i,processIsOnMainFrame:a.isOnMainFrame,entries:s.entries,tree:s.tree,type:o,entryToNode:e.entryToNode})}return n}var nt=Object.freeze({__proto__:null,threadsInRenderer:tt,threadsInTrace:function(e){const t=tt(e.Renderer,e.AuctionWorklets);if(t.length)return t;const n=[];if(e.Samples.profilesInProcess.size)for(const[t,r]of e.Samples.profilesInProcess)for(const[a,i]of r)i.profileTree&&n.push({pid:t,tid:a,name:null,entries:i.profileCalls,processIsOnMainFrame:!1,tree:i.profileTree,type:"CPU_PROFILE",entryToNode:e.Samples.entryToNode});return n}});let rt=1;const at=[];let it=null;class st{#e=[];#t={};#n=new ut;#r=null;#a=!1;#i=!1;#s=null;#o=null;#c=null;#d=null;#l=null;#m=null;#u=null;#f=null;#g=null;#T;constructor(e,t,n,r,a){const i=tt(t,n).filter((e=>"MAIN_THREAD"===e.type&&e.processIsOnMainFrame)).map((e=>({tid:e.tid,pid:e.pid,startTime:e.entries[0].ts})));this.#T=a,this.#h(e,i,r.mainFrameId)}framesById(){return this.#t}frames(){return this.#e}#v(e,t){this.#r||this.#p(e,t),this.#d=e,this.#n.addFrameIfNotExists(t,e,!1,!1)}#E(e,t,n){this.#r||this.#p(e,t),this.#n.addFrameIfNotExists(t,e,!0,n),this.#n.setDropped(t,!0),this.#n.setPartial(t,n)}#w(e,t){if(this.#r){if(this.#a||!this.#i){if(this.#l){(this.#o?this.#o.triggerTime:this.#d||this.#l)>this.#r.startTime&&(this.#r.idle=!0,this.#d=null),this.#l=null}const e=this.#n.processPendingBeginFramesOnDrawFrame(t);for(const n of e){const e=this.#r.idle;this.#p(n.startTime,t),e&&this.#o&&this.#M(),n.isDropped&&(this.#r.dropped=!0),n.isPartial&&(this.#r.isPartial=!0)}}this.#a=!1}else this.#p(e,t)}#I(){this.#r&&this.#o&&!this.#l&&this.#M()}#S(){this.#r&&(this.#i=!0)}#y(){this.#c&&(this.#o=this.#c,this.#c=null,this.#i=!1,this.#a=!0)}#F(e){this.#s=e}#P(e,t){t&&(this.#l=e)}#p(e,n){this.#r&&this.#_(this.#r,e),this.#r=new ct(n,e,t.Timing.MicroSeconds(e-ue().traceBounds.min))}#_(e,t){e.setLayerTree(this.#s),e.setEndTime(t),this.#s&&(this.#s.paints=e.paints);const n=this.#e[this.#e.length-1];this.#e.length&&n&&(e.startTime!==n.endTime||e.startTime>e.endTime)&&console.assert(!1,`Inconsistent frame time for frame ${this.#e.length} (${e.startTime} - ${e.endTime})`),this.#e.push(e),"number"==typeof e.mainFrameId&&(this.#t[e.mainFrameId]=e)}#M(){this.#o&&this.#r&&(this.#r.paints=this.#o.paints,this.#r.mainFrameId=this.#o.mainFrameId,this.#o=null)}#h(e,t,n){let r=0;this.#g=t.length&&t[0].tid||null,this.#f=t.length&&t[0].pid||null;for(let a=0;a<e.length;++a){for(;r+1<t.length&&t[r+1].startTime<=e[a].ts;)this.#g=t[++r].tid,this.#f=t[r].pid;this.#C(e[a],n)}this.#g=null,this.#f=null}#C(e,n){t.TraceEvents.isTraceEventSetLayerId(e)&&e.args.data.frame===n?this.#u=e.args.data.layerTreeId:t.TraceEvents.isTraceEventLayerTreeHostImplSnapshot(e)&&Number(e.id)===this.#u?this.#F({entry:e,paints:[]}):(function(e){return t.TraceEvents.isTraceEventSetLayerId(e)||t.TraceEvents.isTraceEventBeginFrame(e)||t.TraceEvents.isTraceEventDroppedFrame(e)||t.TraceEvents.isTraceEventRequestMainThreadFrame(e)||t.TraceEvents.isTraceEventBeginMainThreadFrame(e)||t.TraceEvents.isTraceEventNeedsBeginFrameChanged(e)||t.TraceEvents.isTraceEventCommit(e)||t.TraceEvents.isTraceEventCompositeLayers(e)||t.TraceEvents.isTraceEventActivateLayerTree(e)||t.TraceEvents.isTraceEventDrawFrame(e)}(e)&&this.#R(e),e.tid===this.#g&&e.pid===this.#f&&this.#k(e))}#R(e){e.args.layerTreeId===this.#u&&(t.TraceEvents.isTraceEventBeginFrame(e)?this.#v(e.ts,e.args.frameSeqId):t.TraceEvents.isTraceEventDrawFrame(e)?this.#w(e.ts,e.args.frameSeqId):t.TraceEvents.isTraceEventActivateLayerTree(e)?this.#I():t.TraceEvents.isTraceEventRequestMainThreadFrame(e)?this.#S():t.TraceEvents.isTraceEventNeedsBeginFrameChanged(e)?this.#P(e.ts,e.args.data&&Boolean(e.args.data.needsBeginFrame)):t.TraceEvents.isTraceEventDroppedFrame(e)&&this.#E(e.ts,e.args.frameSeqId,Boolean(e.args.hasPartialUpdate)))}#k(e){if(function(e){return"RunTask"===e.name&&e.cat.includes("disabled-by-default-devtools.timeline")}(e)&&(this.#m=e.ts),!this.#c&&ot.has(e.name)&&(this.#c=new lt(this.#m||e.ts)),this.#c){if(t.TraceEvents.isTraceEventBeginMainThreadFrame(e)&&e.args.data.frameId&&(this.#c.mainFrameId=e.args.data.frameId),t.TraceEvents.isTraceEventPaint(e)){const t=this.#T.paintsToSnapshots.get(e);t&&this.#c.paints.push(new dt(e,t))}(t.TraceEvents.isTraceEventCompositeLayers(e)||t.TraceEvents.isTraceEventCommit(e))&&e.args.layerTreeId===this.#u&&this.#y()}}}const ot=new Set(["ScheduleStyleRecalculation","InvalidateLayout","BeginMainThreadFrame","ScrollLayer"]);class ct{startTime;startTimeOffset;endTime;duration;idle;dropped;isPartial;layerTree;paints;mainFrameId;seqId;constructor(e,n,r){this.seqId=e,this.startTime=n,this.startTimeOffset=r,this.endTime=this.startTime,this.duration=t.Timing.MicroSeconds(0),this.idle=!1,this.dropped=!1,this.isPartial=!1,this.layerTree=null,this.paints=[],this.mainFrameId=void 0}setEndTime(e){this.endTime=e,this.duration=t.Timing.MicroSeconds(this.endTime-this.startTime)}setLayerTree(e){this.layerTree=e}}class dt{#L;#D;constructor(e,t){this.#L=e,this.#D=t}layerId(){return this.#L.args.data.layerId}event(){return this.#L}picture(){const e=this.#D.args.snapshot.params?.layer_rect,t=this.#D.args.snapshot.skp64;return e&&t?{rect:e,serializedPicture:t}:null}}class lt{paints;mainFrameId;triggerTime;constructor(e){this.paints=[],this.mainFrameId=void 0,this.triggerTime=e}}class mt{seqId;startTime;isDropped;isPartial;constructor(e,t,n,r){this.seqId=e,this.startTime=t,this.isDropped=n,this.isPartial=r}}class ut{queueFrames=[];mapFrames={};addFrameIfNotExists(e,t,n,r){e in this.mapFrames||(this.mapFrames[e]=new mt(e,t,n,r),this.queueFrames.push(e))}setDropped(e,t){e in this.mapFrames&&(this.mapFrames[e].isDropped=t)}setPartial(e,t){e in this.mapFrames&&(this.mapFrames[e].isPartial=t)}processPendingBeginFramesOnDrawFrame(e){const t=[];if(e in this.mapFrames){for(;this.queueFrames[0]!==e;){const e=this.queueFrames[0];this.mapFrames[e].isDropped&&t.push(this.mapFrames[e]),delete this.mapFrames[e],this.queueFrames.shift()}t.push(this.mapFrames[e]),delete this.mapFrames[e],this.queueFrames.shift()}return t}}var ft=Object.freeze({__proto__:null,reset:function(){rt=1,at.length=0},initialize:function(){if(1!==rt)throw new Error("FramesHandler was not reset before being initialized");rt=2},handleEvent:function(e){at.push(e)},finalize:async function(){if(2!==rt)throw new Error("FramesHandler is not initialized");e.Trace.sortTraceEventsInPlace(at);const t=new st(at,Ae(),T(),ue(),Ie());it=t},data:function(){return{frames:it?Array.from(it.frames()):[],framesById:it?{...it.framesById()}:{}}},deps:function(){return["Meta","Renderer","AuctionWorklets","LayerTree"]},TimelineFrameModel:st,TimelineFrame:ct,LayerPaintEvent:dt,PendingFrame:lt,TimelineFrameBeginFrameQueue:ut,framesWithinWindow:function(e,t,r){const a=n.ArrayUtilities.lowerBound(e,t||0,((e,t)=>e-t.endTime)),i=n.ArrayUtilities.lowerBound(e,r||1/0,((e,t)=>e-t.startTime));return e.slice(a,i)}});let gt=1;const Tt=new Map;let ht=[];var vt=Object.freeze({__proto__:null,reset:function(){Tt.clear(),ht=[],gt=1},initialize:function(){if(1!==gt)throw new Error("GPU Handler was not reset before being initialized");gt=2},handleEvent:function(n){if(2!==gt)throw new Error("GPU Handler is not initialized");t.TraceEvents.isTraceEventGPUTask(n)&&e.Trace.addEventToProcessThread(n,Tt)},finalize:async function(){if(2!==gt)throw new Error("GPU Handler is not initialized");const{gpuProcessId:e,gpuThreadId:t}=ue(),n=Tt.get(e);n&&t&&(ht=n.get(t)||[]),gt=3},data:function(){if(3!==gt)throw new Error("GPU Handler is not finalized");return{mainGPUThreadTasks:ht}},deps:function(){return["Meta"]}});const pt=new Map,Et=new Map,wt=new Map,Mt=new Map;var It=Object.freeze({__proto__:null,reset:function(){pt.clear(),Et.clear(),wt.clear(),Mt.clear()},handleEvent:function(e){if(t.TraceEvents.isTraceEventPaintImage(e)){const t=pt.get(e.pid)||new Map,n=t.get(e.tid)||[];return n.push(e),t.set(e.tid,n),void pt.set(e.pid,t)}if(t.TraceEvents.isTraceEventDecodeLazyPixelRef(e)&&void 0!==e.args?.LazyPixelRef){const t=Et.get(e.pid)||new Map,n=t.get(e.tid)||[];n.push(e),t.set(e.tid,n),Et.set(e.pid,t)}if(t.TraceEvents.isTraceEventDrawLazyPixelRef(e)&&void 0!==e.args?.LazyPixelRef){const t=pt.get(e.pid)?.get(e.tid)?.at(-1);if(!t)return;wt.set(e.args.LazyPixelRef,t)}else if(t.TraceEvents.isTraceEventDecodeImage(e)){const t=pt.get(e.pid)?.get(e.tid)?.at(-1);if(t)return void Mt.set(e,t);const n=Et.get(e.pid)?.get(e.tid)?.at(-1);if(!n||void 0===n.args?.LazyPixelRef)return;const r=wt.get(n.args.LazyPixelRef);if(!r)return;Mt.set(e,r)}},data:function(){return{paintImageByDrawLazyPixelRef:wt,paintImageForEvent:Mt}}});let St=1;const yt=new Map,Ft=new Map,Pt=new Map,_t=[],Ct=new Map,Rt=new Map,kt=new Map,Lt=new Map,Dt=new Map,bt=new Map,Nt=new Map;function zt(e){Rt.set(e.event,e.initiator);const t=kt.get(e.initiator)||[];t.push(e.event),kt.set(e.initiator,t)}var Wt=Object.freeze({__proto__:null,reset:function(){yt.clear(),Ft.clear(),Pt.clear(),Dt.clear(),Rt.clear(),kt.clear(),Lt.clear(),bt.clear(),Nt.clear(),Ct.clear(),_t.length=0,St=1},initialize:function(){if(1!==St)throw new Error("InitiatorsHandler was not reset before being initialized");St=2},handleEvent:function(n){if(t.TraceEvents.isTraceEventScheduleStyleRecalculation(n))yt.set(n.args.data.frame,n);else if(t.TraceEvents.isTraceEventUpdateLayoutTree(n)){if(n.args.beginData){Pt.set(n.args.beginData.frame,n);const e=yt.get(n.args.beginData.frame);e&&zt({event:n,initiator:e})}}else if(t.TraceEvents.isTraceEventInvalidateLayout(n)){let t=n;if(!Ft.has(n.args.data.frame)){const r=Pt.get(n.args.data.frame);if(r){const{endTime:a}=e.Timing.eventTimingsMicroSeconds(r),i=Rt.get(r);i&&a&&a>n.ts&&(t=i)}}Ft.set(n.args.data.frame,t)}else if(t.TraceEvents.isTraceEventLayout(n)){const e=Ft.get(n.args.beginData.frame);e&&zt({event:n,initiator:e}),Ft.delete(n.args.beginData.frame)}else if(t.TraceEvents.isTraceEventRequestAnimationFrame(n))Lt.set(n.args.data.id,n);else if(t.TraceEvents.isTraceEventFireAnimationFrame(n)){const e=Lt.get(n.args.data.id);e&&zt({event:n,initiator:e})}else if(t.TraceEvents.isTraceEventTimerInstall(n))Dt.set(n.args.data.timerId,n);else if(t.TraceEvents.isTraceEventTimerFire(n)){const e=Dt.get(n.args.data.timerId);e&&zt({event:n,initiator:e})}else if(t.TraceEvents.isTraceEventRequestIdleCallback(n))bt.set(n.args.data.id,n);else if(t.TraceEvents.isTraceEventFireIdleCallback(n)){const e=bt.get(n.args.data.id);e&&zt({event:n,initiator:e})}else if(t.TraceEvents.isTraceEventWebSocketCreate(n))Nt.set(n.args.data.identifier,n);else if(t.TraceEvents.isTraceEventWebSocketInfo(n)||t.TraceEvents.isTraceEventWebSocketTransfer(n)){const e=Nt.get(n.args.data.identifier);e&&zt({event:n,initiator:e})}else if(t.TraceEvents.isTraceEventHandlePostMessage(n))_t.push(n);else if(t.TraceEvents.isTraceEventSchedulePostMessage(n)){const e=n.args.data?.traceId;e&&Ct.set(e,n)}},finalize:async function(){if(2!==St)throw new Error("InitiatorsHandler is not initialized");!function(){for(const e of _t){const t=e.args.data?.traceId,n=Ct.get(t);n&&zt({event:e,initiator:n})}}(),St=3},data:function(){return{eventToInitiator:Rt,initiatorToEvents:kt}}});let xt=1;const Ot=new Map;let Bt=null,Ut=!1;const qt=[];function Ht(e,t){const n=Ot.get(e)||[];n.push(t),Ot.set(e,n)}var At=Object.freeze({__proto__:null,reset:function(){xt=1,Ot.clear(),Bt=null,qt.length=0,Ut=!1},initialize:function(){if(1!==xt)throw new Error("InvalidationsHandler was not reset before being initialized");xt=2},handleEvent:function(e){if(t.TraceEvents.isTraceEventUpdateLayoutTree(e)){Bt=e;for(const n of qt){if(t.TraceEvents.isTraceEventLayoutInvalidationTracking(n))continue;const r=Bt.args.beginData?.frame;r&&n.args.data.frame===r&&Ht(e,n)}}else if(t.TraceEvents.isTraceEventInvalidationTracking(e)){if(Ut&&(qt.length=0,Bt=null,Ut=!1),Bt&&(t.TraceEvents.isTraceEventScheduleStyleInvalidationTracking(e)||t.TraceEvents.isTraceEventStyleRecalcInvalidationTracking(e)||t.TraceEvents.isTraceEventStyleInvalidatorInvalidationTracking(e))){const t=Bt.ts+(Bt.dur||0);e.ts>=Bt.ts&&e.ts<=t&&Bt.args.beginData?.frame===e.args.data.frame&&Ht(Bt,e)}qt.push(e)}else if(t.TraceEvents.isTraceEventPaint(e))Ut=!0;else if(t.TraceEvents.isTraceEventLayout(e)){const n=e.args.beginData.frame;for(const r of qt)t.TraceEvents.isTraceEventLayoutInvalidationTracking(r)&&r.args.data.frame===n&&Ht(e,r)}},finalize:async function(){if(2!==xt)throw new Error("InvalidationsHandler is not initialized");xt=3},data:function(){return{invalidationsForEvent:Ot}}});const jt=new Map;var Gt=Object.freeze({__proto__:null,reset:function(){jt.clear()},handleEvent:function(e){t.TraceEvents.isTraceEventLargestImagePaintCandidate(e)&&e.args.data&&jt.set(e.args.data.DOMNodeId,e)},data:function(){return jt}});const Vt=new Map;var $t=Object.freeze({__proto__:null,reset:function(){Vt.clear()},handleEvent:function(e){t.TraceEvents.isTraceEventLargestTextPaintCandidate(e)&&e.args.data&&Vt.set(e.args.data.DOMNodeId,e)},data:function(){return Vt}});const Xt=e.Timing.millisecondsToMicroseconds(t.Timing.MilliSeconds(5e3)),Yt=e.Timing.millisecondsToMicroseconds(t.Timing.MilliSeconds(1e3)),Kt=[],Qt=[],Jt=[],Zt=[],en=[],tn=new Set,nn=[];let rn=0,an=-1;const sn=[],on=[];let cn=1;function dn(e){return{min:e,max:e,range:t.Timing.MicroSeconds(0)}}function ln(e,n){e.max=n,e.range=t.Timing.MicroSeconds(e.max-e.min)}var mn=Object.freeze({__proto__:null,MAX_CLUSTER_DURATION:Xt,MAX_SHIFT_TIME_DELTA:Yt,initialize:function(){if(1!==cn)throw new Error("LayoutShifts Handler was not reset");cn=2},reset:function(){cn=1,Kt.length=0,Qt.length=0,Jt.length=0,Zt.length=0,nn.length=0,en.length=0,tn.clear(),sn.length=0,rn=0,on.length=0,an=-1},handleEvent:function(e){if(2!==cn)throw new Error("Handler is not initialized");!t.TraceEvents.isTraceEventLayoutShift(e)||e.args.data?.had_recent_input?t.TraceEvents.isTraceEventLayoutInvalidationTracking(e)?Qt.push(e):(t.TraceEvents.isTraceEventScheduleStyleInvalidationTracking(e)&&Jt.push(e),t.TraceEvents.isTraceEventStyleRecalcInvalidationTracking(e)&&Zt.push(e),t.TraceEvents.isTraceEventPrePaint(e)?nn.push(e):t.TraceEvents.isTraceEventRenderFrameImplCreateChildFrame(e)&&en.push(e)):Kt.push(e)},finalize:async function(){Kt.sort(((e,t)=>e.ts-t.ts)),nn.sort(((e,t)=>e.ts-t.ts)),Qt.sort(((e,t)=>e.ts-t.ts)),en.sort(((e,t)=>e.ts-t.ts)),await async function(){const{navigationsByFrameId:r,mainFrameId:a,traceBounds:i}=ue(),s=r.get(a)||[];if(0===Kt.length)return;let o=Kt[0].ts,c=Kt[0].ts,d=null;for(const r of Kt){const a=r.ts-o>Xt,i=r.ts-c>Yt,l=n.ArrayUtilities.nearestIndexFromEnd(s,(e=>e.ts<r.ts)),m=d!==l&&null!==l;if(a||i||m||!sn.length){const e=r.ts,n=a?o+Xt:1/0,d=i?c+Yt:1/0,u=m?s[l].ts:1/0,f=Math.min(n,d,u);if(sn.length>0){ln(sn[sn.length-1].clusterWindow,t.Timing.MicroSeconds(f))}const g=null===l?void 0:s[l].args.data?.navigationId;sn.push({events:[],clusterWindow:dn(e),clusterCumulativeScore:0,scoreWindows:{good:dn(e),needsImprovement:null,bad:null},navigationId:g}),o=e}const u=sn[sn.length-1],f=null!==l?t.Timing.MicroSeconds(r.ts-s[l].ts):void 0;if(u.clusterCumulativeScore+=r.args.data?r.args.data.weighted_score_delta:0,!r.args.data)continue;const g=e.SyntheticEvents.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:r,...r,args:{frame:r.args.frame,data:{...r.args.data,rawEvent:r}},parsedData:{timeFromNavigation:f,cumulativeWeightedScoreInWindow:u.clusterCumulativeScore,sessionWindowData:{cumulativeWindowScore:0,id:sn.length}}});u.events.push(g),ln(u.clusterWindow,r.ts),c=r.ts,d=l}for(const e of sn){let r=0,a=-1;if(e===sn[sn.length-1]){const r=Xt+e.clusterWindow.min,a=e.clusterWindow.max+Yt,o=n.ArrayUtilities.nearestIndexFromBeginning(s,(t=>t.ts>e.clusterWindow.max)),c=o?s[o].ts:1/0,d=Math.min(r,a,i.max,c);ln(e.clusterWindow,t.Timing.MicroSeconds(d))}for(const n of e.events){r+=n.args.data?n.args.data.weighted_score_delta:0,a=n.parsedData.sessionWindowData.id;const i=n.ts;n.parsedData.sessionWindowData.cumulativeWindowScore=e.clusterCumulativeScore,r<.1?ln(e.scoreWindows.good,i):r>=.1&&r<.25?(e.scoreWindows.needsImprovement||(ln(e.scoreWindows.good,t.Timing.MicroSeconds(i-1)),e.scoreWindows.needsImprovement=dn(i)),ln(e.scoreWindows.needsImprovement,i)):r>=.25&&(e.scoreWindows.bad||(e.scoreWindows.needsImprovement?ln(e.scoreWindows.needsImprovement,t.Timing.MicroSeconds(i-1)):ln(e.scoreWindows.good,t.Timing.MicroSeconds(i-1)),e.scoreWindows.bad=dn(n.ts)),ln(e.scoreWindows.bad,i)),e.scoreWindows.bad?ln(e.scoreWindows.bad,e.clusterWindow.max):e.scoreWindows.needsImprovement?ln(e.scoreWindows.needsImprovement,e.clusterWindow.max):ln(e.scoreWindows.good,e.clusterWindow.max)}r>rn&&(an=a,rn=r)}}(),function(){const{traceBounds:e}=ue();on.push({ts:e.min,score:0});for(const e of sn){let t=0;e.events[0].args.data&&on.push({ts:e.clusterWindow.min,score:e.events[0].args.data.weighted_score_delta});for(let n=0;n<e.events.length;n++){const r=e.events[n];r.args.data&&(t+=r.args.data.weighted_score_delta,on.push({ts:r.ts,score:t}))}on.push({ts:e.clusterWindow.max,score:0})}}(),function(){tn.clear();for(const e of Kt)if(e.args.data?.impacted_nodes)for(const t of e.args.data.impacted_nodes)tn.add(t.node_id);for(const e of Qt)e.args.data?.nodeId&&tn.add(e.args.data.nodeId);for(const e of Jt)e.args.data?.nodeId&&tn.add(e.args.data.nodeId)}(),cn=3},data:function(){if(3!==cn)throw new Error("Layout Shifts Handler is not finalized");return{clusters:sn,sessionMaxScore:rn,clsWindowID:an,prePaintEvents:nn,layoutInvalidationEvents:Qt,scheduleStyleInvalidationEvents:Jt,styleRecalcInvalidationEvents:[],renderFrameImplCreateChildFrameEvents:en,scoreRecords:on,backendNodeIds:[...tn]}},deps:function(){return["Screenshots","Meta"]},scoreClassificationForLayoutShift:function(e){let t="good";return e>=.1&&(t="ok"),e>=.25&&(t="bad"),t}});const un=new Map;var fn=Object.freeze({__proto__:null,reset:function(){un.clear()},handleEvent:function(e){if(t.TraceEvents.isTraceEventUpdateCounters(e)){const t=n.MapUtilities.getWithDefault(un,e.pid,(()=>[]));t.push(e),un.set(e.pid,t)}},data:function(){return{updateCountersByProcess:un}}});const gn=1e3,Tn=1e6,hn=new Map,vn=new Map,pn=new Map,En=[],wn=new Map,Mn=new Map;function In(e,t,n){vn.has(e)||vn.set(e,{});const r=vn.get(e);if(!r)throw new Error(`Unable to locate trace events for request ID ${e}`);if(Array.isArray(r[t])){const e=n;r[t].push(...e)}else r[t]=n}function Sn(e){for(const t of e)if(t>0)return t;return 0}let yn=1;var Fn=Object.freeze({__proto__:null,reset:function(){pn.clear(),vn.clear(),En.length=0,wn.clear(),Mn.clear(),hn.clear(),yn=1},initialize:function(){yn=2},handleEvent:function(e){if(2!==yn)throw new Error("Network Request handler is not initialized");if(t.TraceEvents.isTraceEventResourceChangePriority(e))In(e.args.data.requestId,"changePriority",e);else if(t.TraceEvents.isTraceEventResourceWillSendRequest(e))In(e.args.data.requestId,"willSendRequests",[e]);else if(t.TraceEvents.isTraceEventResourceSendRequest(e))In(e.args.data.requestId,"sendRequests",[e]);else if(t.TraceEvents.isTraceEventResourceReceiveResponse(e))In(e.args.data.requestId,"receiveResponse",e);else if(t.TraceEvents.isTraceEventResourceReceivedData(e))In(e.args.data.requestId,"receivedData",[e]);else if(t.TraceEvents.isTraceEventResourceFinish(e))In(e.args.data.requestId,"resourceFinish",e);else if(t.TraceEvents.isTraceEventResourceMarkAsCached(e))In(e.args.data.requestId,"resourceMarkAsCached",e);else if(t.TraceEvents.isTraceEventWebSocketCreate(e)||t.TraceEvents.isTraceEventWebSocketInfo(e)||t.TraceEvents.isTraceEventWebSocketTransfer(e)){const t=e.args.data.identifier;hn.has(t)||(e.args.data.frame?hn.set(t,{frame:e.args.data.frame,webSocketIdentifier:t,events:[],syntheticConnectionEvent:null}):e.args.data.workerId&&hn.set(t,{workerId:e.args.data.workerId,webSocketIdentifier:t,events:[],syntheticConnectionEvent:null})),hn.get(t)?.events.push(e)}},finalize:async function(){if(2!==yn)throw new Error("Network Request handler is not initialized");const{rendererProcessesByFrame:r}=ue();for(const[a,i]of vn.entries()){if(!i.sendRequests||!i.receiveResponse)continue;const s=[];for(let e=0;e<i.sendRequests.length-1;e++){const n=i.sendRequests[e],r=i.sendRequests[e+1];let a=n.ts,o=t.Timing.MicroSeconds(r.ts-n.ts);if(i.willSendRequests&&i.willSendRequests[e]&&i.willSendRequests[e+1]){const n=i.willSendRequests[e],r=i.willSendRequests[e+1];a=n.ts,o=t.Timing.MicroSeconds(r.ts-n.ts)}s.push({url:n.args.data.url,priority:n.args.data.priority,requestMethod:n.args.data.requestMethod,ts:a,dur:o})}const o=0!==i.resourceFinish?.args.data.encodedDataLength,c=i.receiveResponse.args.data.fromCache&&!i.receiveResponse.args.data.fromServiceWorker&&!o,d=void 0!==i.resourceMarkAsCached,l=d||c,m=i.receiveResponse.args.data.timing;if(!m&&!l)continue;const u=i.sendRequests[0],f=i.sendRequests[i.sendRequests.length-1],g=f.args.data.priority;let T=g;i.changePriority&&(T=i.changePriority.args.data.priority);const h=i.willSendRequests&&i.willSendRequests.length?t.Timing.MicroSeconds(i.willSendRequests[0].ts):t.Timing.MicroSeconds(u.ts),v=i.willSendRequests&&i.willSendRequests.length?t.Timing.MicroSeconds(i.willSendRequests[i.willSendRequests.length-1].ts):t.Timing.MicroSeconds(f.ts),p=i.resourceFinish?i.resourceFinish.ts:v,E=i.resourceFinish?.args.data.finishTime?t.Timing.MicroSeconds(i.resourceFinish.args.data.finishTime*Tn):t.Timing.MicroSeconds(p),w=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds((E||v)-v),M=t.Timing.MicroSeconds(p-(E||p)),I=t.Timing.MicroSeconds(v-h),S=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds(n.NumberUtilities.clamp(m.requestTime*Tn-v,0,Number.MAX_VALUE)),y=l?t.Timing.MicroSeconds(i.receiveResponse.ts-h):t.Timing.MicroSeconds(Sn([m.dnsStart*gn,m.connectStart*gn,m.sendStart*gn,i.receiveResponse.ts-v])),F=l?h:t.Timing.MicroSeconds(m.requestTime*Tn+m.sendStart*gn),P=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds((m.receiveHeadersEnd-m.sendEnd)*gn),_=l?h:t.Timing.MicroSeconds(m.requestTime*Tn+m.receiveHeadersEnd*gn),C=l?t.Timing.MicroSeconds(p-i.receiveResponse.ts):t.Timing.MicroSeconds((E||_)-_),R=t.Timing.MicroSeconds(w+M),k=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds((m.dnsEnd-m.dnsStart)*gn),L=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds((m.sslEnd-m.sslStart)*gn),D=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds((m.proxyEnd-m.proxyStart)*gn),b=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds((m.sendEnd-m.sendStart)*gn),N=l?t.Timing.MicroSeconds(0):t.Timing.MicroSeconds((m.connectEnd-m.connectStart)*gn),{frame:z,url:W,renderBlocking:x}=f.args.data,{encodedDataLength:O,decodedBodyLength:B}=i.resourceFinish?i.resourceFinish.args.data:{encodedDataLength:0,decodedBodyLength:0},U=new URL(W),q="https:"===U.protocol,H=e.Trace.activeURLForFrameAtTime(z,f.ts,r)||"",A=e.SyntheticEvents.SyntheticEventsManager.registerSyntheticBasedEvent({rawSourceEvent:f,args:{data:{syntheticData:{dnsLookup:k,download:C,downloadStart:_,finishTime:E,initialConnection:N,isDiskCached:c,isHttps:q,isMemoryCached:d,isPushedResource:o,networkDuration:w,processingDuration:M,proxyNegotiation:D,queueing:S,redirectionDuration:I,requestSent:b,sendStartTime:F,ssl:L,stalled:y,totalTime:R,waiting:P},decodedBodyLength:B,encodedDataLength:O,frame:z,fromServiceWorker:i.receiveResponse.args.data.fromServiceWorker,isLinkPreload:f.args.data.isLinkPreload||!1,mimeType:i.receiveResponse.args.data.mimeType,priority:T,initialPriority:g,protocol:i.receiveResponse.args.data.protocol??"unknown",redirects:s,renderBlocking:x??"non_blocking",requestId:a,requestingFrameUrl:H,requestMethod:f.args.data.requestMethod,resourceType:f.args.data.resourceType,statusCode:i.receiveResponse.args.data.statusCode,responseHeaders:i.receiveResponse.args.data.headers||[],fetchPriorityHint:f.args.data.fetchPriorityHint,initiator:f.args.data.initiator,stackTrace:f.args.data.stackTrace,timing:m,url:W,failed:i.resourceFinish?.args.data.didFail??!1,finished:Boolean(i.resourceFinish),connectionId:i.receiveResponse.args.data.connectionId,connectionReused:i.receiveResponse.args.data.connectionReused}},cat:"loading",name:"SyntheticNetworkRequest",ph:"X",dur:t.Timing.MicroSeconds(p-h),tdur:t.Timing.MicroSeconds(p-h),ts:t.Timing.MicroSeconds(h),tts:t.Timing.MicroSeconds(h),pid:f.pid,tid:f.tid}),j=n.MapUtilities.getWithDefault(pn,U.host,(()=>({renderBlocking:[],nonRenderBlocking:[],all:[]})));e.Network.isSyntheticNetworkRequestEventRenderBlocking(A)?j.renderBlocking.push(A):j.nonRenderBlocking.push(A),j.all.push(A),En.push(A);const G=A.args.data.initiator?.url||e.Trace.getZeroIndexedStackTraceForEvent(A)?.at(0)?.url;if(G){const e=wn.get(G)??[];e.push(A),wn.set(G,e)}}for(const e of En){const t=wn.get(e.args.data.url);if(t)for(const n of t)Mn.set(n,e)}hn.forEach((e=>{let n=null,r=null;for(const a of e.events)t.TraceEvents.isTraceEventWebSocketCreate(a)&&(n=a),t.TraceEvents.isTraceEventWebSocketDestroy(a)&&(r=a);e.syntheticConnectionEvent=function(e,t,n){const{traceBounds:r}=ue(),a=e?e.ts:r.min,i=t?t.ts:r.max,s=i-a,o=e||t||n;return{name:"SyntheticWebSocketConnectionEvent",cat:o.cat,ph:"X",ts:a,dur:s,pid:o.pid,tid:o.tid,s:o.s,rawSourceEvent:o,_tag:"SyntheticEntryTag",args:{data:{identifier:o.args.data.identifier,priority:"Low",url:o.args.data.url||""}}}}(n,r,e.events[0])})),yn=3},data:function(){if(3!==yn)throw new Error("Network Request handler is not finalized");return{byOrigin:pn,byTime:En,eventToInitiator:Mn,webSocket:[...hn.values()]}},deps:function(){return["Meta"]}});const Pn=new Map;var _n=Object.freeze({__proto__:null,reset:function(){Pn.clear()},handleEvent:function(e){if(t.TraceEvents.isTraceEventTracingStartedInBrowser(e))for(const t of e.args.data?.frames??[])Pn.set(t.frame,t);else if(t.TraceEvents.isTraceEventCommitLoad(e)){const t=e.args.data;if(!t)return;const n=Pn.get(t.frame);if(!n)return;Pn.set(t.frame,{...n,url:t.url||n.url,name:t.name||t.name})}},data:function(){return{frames:Pn}}});const Cn=new Map;let Rn=[];let kn=[];const Ln=new Set;function Dn(r,a){const i=r.args.data?.navigationId;if(!i)throw new Error("Navigation event unexpectedly had no navigation ID.");const s=Nn(a),{rendererProcessesByFrame:o}=ue(),c=o.get(s);if(!c)return;if(c.get(a.pid)&&!t.TraceEvents.isTraceEventNavigationStart(a))if(t.TraceEvents.isTraceEventFirstContentfulPaint(a)){const e=t.Timing.MicroSeconds(a.ts-r.ts);bn(s,i,{event:a,metricName:"FCP",classification:Wn(e),navigation:r,timing:e})}else if(t.TraceEvents.isTraceEventFirstPaint(a)){bn(s,i,{event:a,metricName:"FP",classification:"unclassified",navigation:r,timing:t.Timing.MicroSeconds(a.ts-r.ts)})}else if(t.TraceEvents.isTraceEventMarkDOMContent(a)){const e=t.Timing.MicroSeconds(a.ts-r.ts);bn(s,i,{event:a,metricName:"DCL",classification:"unclassified",navigation:r,timing:e})}else if(t.TraceEvents.isTraceEventInteractiveTime(a)){const n=t.Timing.MicroSeconds(a.ts-r.ts);bn(s,i,{event:a,metricName:"TTI",classification:xn(n),navigation:r,timing:n});const o=e.Timing.millisecondsToMicroseconds(t.Timing.MilliSeconds(a.args.args.total_blocking_time_ms));bn(s,i,{event:a,metricName:"TBT",classification:Un(o),navigation:r,timing:o})}else if(t.TraceEvents.isTraceEventMarkLoad(a)){bn(s,i,{event:a,metricName:"L",classification:"unclassified",navigation:r,timing:t.Timing.MicroSeconds(a.ts-r.ts)})}else if(t.TraceEvents.isTraceEventLargestContentfulPaintCandidate(a)){const e=a.args.data?.candidateIndex;if(!e)throw new Error("Largest Contenful Paint unexpectedly had no candidateIndex.");const o=t.Timing.MicroSeconds(a.ts-r.ts),c={event:a,metricName:"LCP",classification:On(o),navigation:r,timing:o},d=n.MapUtilities.getWithDefault(Cn,s,(()=>new Map)),l=n.MapUtilities.getWithDefault(d,i,(()=>new Map)).get("LCP");if(void 0===l)return Ln.add(c.event),void bn(s,i,c);const m=l.event;if(!t.TraceEvents.isTraceEventLargestContentfulPaintCandidate(m))return;const u=m.args.data?.candidateIndex;if(!u)return;u<e&&(Ln.delete(m),Ln.add(c.event),bn(s,i,c))}else if(!t.TraceEvents.isTraceEventLayoutShift(a))return n.assertNever(a,`Unexpected event type: ${a}`)}function bn(e,t,r){const a=n.MapUtilities.getWithDefault(Cn,e,(()=>new Map)),i=n.MapUtilities.getWithDefault(a,t,(()=>new Map));i.delete(r.metricName),i.set(r.metricName,r)}function Nn(e){if(t.TraceEvents.isTraceEventFirstContentfulPaint(e)||t.TraceEvents.isTraceEventInteractiveTime(e)||t.TraceEvents.isTraceEventLargestContentfulPaintCandidate(e)||t.TraceEvents.isTraceEventNavigationStart(e)||t.TraceEvents.isTraceEventLayoutShift(e)||t.TraceEvents.isTraceEventFirstPaint(e))return e.args.frame;if(t.TraceEvents.isTraceEventMarkDOMContent(e)||t.TraceEvents.isTraceEventMarkLoad(e)){const t=e.args.data?.frame;if(!t)throw new Error("MarkDOMContent unexpectedly had no frame ID.");return t}n.assertNever(e,`Unexpected event type: ${e}`)}function zn(r){if(t.TraceEvents.isTraceEventFirstContentfulPaint(r)||t.TraceEvents.isTraceEventLargestContentfulPaintCandidate(r)||t.TraceEvents.isTraceEventFirstPaint(r)){const e=r.args.data?.navigationId;if(!e)throw new Error("Trace event unexpectedly had no navigation ID.");const{navigationsByNavigationId:t}=ue(),n=t.get(e);return n||null}if(t.TraceEvents.isTraceEventMarkDOMContent(r)||t.TraceEvents.isTraceEventInteractiveTime(r)||t.TraceEvents.isTraceEventLayoutShift(r)||t.TraceEvents.isTraceEventMarkLoad(r)){const t=Nn(r),{navigationsByFrameId:n}=ue();return e.Trace.getNavigationForTraceEvent(r,t,n)}return t.TraceEvents.isTraceEventNavigationStart(r)?null:n.assertNever(r,`Unexpected event type: ${r}`)}function Wn(n){const r=e.Timing.secondsToMicroseconds(t.Timing.Seconds(1.8));let a="bad";return n<=e.Timing.secondsToMicroseconds(t.Timing.Seconds(3))&&(a="ok"),n<=r&&(a="good"),a}function xn(n){const r=e.Timing.secondsToMicroseconds(t.Timing.Seconds(3.8));let a="bad";return n<=e.Timing.secondsToMicroseconds(t.Timing.Seconds(7.3))&&(a="ok"),n<=r&&(a="good"),a}function On(n){const r=e.Timing.secondsToMicroseconds(t.Timing.Seconds(2.5));let a="bad";return n<=e.Timing.secondsToMicroseconds(t.Timing.Seconds(4))&&(a="ok"),n<=r&&(a="good"),a}function Bn(e){return"unclassified"}function Un(n){const r=e.Timing.millisecondsToMicro