1"use strict";(self.webpackChunkjuristai_home=self.webpackChunkjuristai_home||[]).push([[8741],{3391(e,t,a){a.d(t,{b9:()=>D,Ay:()=>I});var n=a(5544),l=a(6998),i=a(9379);const s=864e5,r=[{label:"0-30d",min:0,max:30},{label:"31-60d",min:31,max:60},{label:"61-90d",min:61,max:90},{label:"91d+",min:91,max:1/0}],o=e=>{if(!e)return null;const t="string"===typeof e&&/^\d{4}-\d{2}-\d{2}$/.test(e)?"".concat(e,"T00:00:00"):e,a=new Date(t);return Number.isNaN(a.getTime())?null:(a.setHours(0,0,0,0),a.getTime())},c=e=>{const t=Number(e);if(!Number.isFinite(t)||t<=0)return"0h";const a=t/60,n=a>=10?Math.round(a):Math.round(10*a)/10;return"".concat(n,"h")},d=e=>Number(e||0).toLocaleString("en-US"),u=e=>{if(null===e||void 0===e||""===String(e).trim())return null;const t=Number(e);return Number.isFinite(t)&&t>=0?t:null},m=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:26;const a=String(e||"Untitled matter");return a.length>t?"".concat(a.slice(0,t-1),"\u2026"):a},h=e=>null==e.hourlyRate?null:e.minutes/60*e.hourlyRate,g=(e,t,a)=>{if(!e.length)return{points:[],stepDays:1};const n=Math.min(...e.map(e=>e.completedAt)),l=Math.max(...e.map(e=>e.completedAt)),i=o(null===t||void 0===t?void 0:t.start),r=o(null===t||void 0===t?void 0:t.end),c=null!=i?Math.min(i,n):n,d=o(a instanceof Date?a:new Date(a)),u=null!=r?Math.max(r,l):l,m=Math.max(c,null==d?u:Math.min(d,u)),g=Math.max(0,Math.round((m-c)/s)),b=g>180?7:1,v=[];for(let o=0;o<=g;o+=b)v.push({time:c+o*s,minutes:0,amount:0});v.length||v.push({time:c,minutes:0,amount:0}),e.forEach(e=>{const t=Math.max(0,Math.min(v.length-1,Math.floor((e.completedAt-c)/s/b))),a=h(e);v[t].minutes+=e.minutes,null!=a&&(v[t].amount+=a)});let p=0,x=0;return{points:v.map(e=>(p+=e.minutes,x+=e.amount,{date:new Date(e.time),minutes:p,amount:x,addedMinutes:e.minutes})),stepDays:b}},b=(e,t)=>{const a=o(t instanceof Date?t:new Date(t));return null==a?[]:r.map(t=>{const n=e.filter(e=>{const n=Math.max(0,Math.floor((a-e.completedAt)/s));return n>=t.min&&n<=t.max});return{label:t.label,entryCount:n.length,minutes:n.reduce((e,t)=>e+t.minutes,0),amount:n.reduce((e,t)=>e+(h(t)||0),0),tone:t.min>=61?"warn":"accent"}})},v=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.entries,a=void 0===t?[]:t,n=e.range,l=void 0===n?null:n,s=e.now,r=void 0===s?new Date:s,c=e.topMatters,d=void 0===c?5:c;const v=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(Array.isArray(e)?e:[]).map(e=>{const t=Number(null===e||void 0===e?void 0:e.minutes),a=o(null===e||void 0===e?void 0:e.completedAt);return!Number.isFinite(t)||t<=0||null==a?null:{id:String((null===e||void 0===e?void 0:e.id)||""),matterKey:String((null===e||void 0===e?void 0:e.matterKey)||(null===e||void 0===e?void 0:e.matterLabel)||"unknown"),matterLabel:String((null===e||void 0===e?void 0:e.matterLabel)||"Untitled matter"),contributorKey:String((null===e||void 0===e?void 0:e.contributorKey)||(null===e||void 0===e?void 0:e.contributorLabel)||"unassigned"),contributorLabel:String((null===e||void 0===e?void 0:e.contributorLabel)||"Unassigned"),minutes:t,completedAt:a,hourlyRate:u(null===e||void 0===e?void 0:e.hourlyRate)}}).filter(Boolean)}(a);if(!v.length)return{hasData:!1,hasRates:!1,totals:{minutes:0,amount:null,entryCount:0,contributorCount:0,matterCount:0,ratedMinutes:0,unratedMinutes:0,rateCoverage:0},timeline:{points:[],stepDays:1},aging:[],matters:[],topMatters:[],contributors:[],matterTotalValue:0};const p=v.reduce((e,t)=>e+t.minutes,0),x=v.filter(e=>null!=e.hourlyRate).reduce((e,t)=>e+t.minutes,0),y=v.reduce((e,t)=>e+(h(t)||0),0),j=x>0,k=(e=>{const t=new Map;return e.forEach(e=>{const a=t.get(e.matterKey)||{key:e.matterKey,label:e.matterLabel,shortLabel:m(e.matterLabel),minutes:0,amount:0,entryCount:0},n=h(e);a.minutes+=e.minutes,a.entryCount+=1,null!=n&&(a.amount+=n),t.set(e.matterKey,a)}),[...t.values()]})(v).sort((e,t)=>j&&t.amount!==e.amount?t.amount-e.amount:t.minutes-e.minutes),w=[...v.reduce((e,t)=>{const a=e.get(t.contributorKey)||{key:t.contributorKey,label:t.contributorLabel,shortLabel:m(t.contributorLabel),minutes:0};return a.minutes+=t.minutes,e.set(t.contributorKey,a),e},new Map).values()].sort((e,t)=>
1t.minutes-e.minutes),_=w.reduce((e,t)=>e+t.minutes,0),f=k.reduce((e,t)=>e+(j?t.amount:t.minutes),0);return{hasData:!0,hasRates:j,totals:{minutes:p,amount:j?y:null,entryCount:v.length,contributorCount:new Set(v.map(e=>e.contributorKey)).size,matterCount:k.length,ratedMinutes:x,unratedMinutes:p-x,rateCoverage:p?x/p:0},timeline:g(v,l,r),aging:b(v,r),matters:k,contributors:w.map(e=>(0,i.A)((0,i.A)({},e),{},{share:_?e.minutes/_*100:0})),topMatters:k.slice(0,d).map(e=>(0,i.A)((0,i.A)({},e),{},{share:f?(j?e.amount:e.minutes)/f*100:0})),matterTotalValue:f}};var p=a(3446);const x=e=>null==e?"\u2014":"$".concat(Number(e).toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0})),y=(e,t)=>e.toLocaleDateString("en-US",t>1?{month:"short",year:"numeric"}:{month:"short",day:"numeric"}),j={stroke:"var(--bc-accent)"},k={stroke:"var(--bc-grid)"},w={fill:"var(--bc-muted)"},_=e=>{let t=e.children;return(0,p.jsx)("p",{className:"billing-chart-card__caption",children:t})},f=e=>{let t=e.caption,a=e.headers,n=e.rows;return(0,p.jsxs)("table",{className:"billing-chart-card__data-table",children:[(0,p.jsx)("caption",{children:t}),(0,p.jsx)("thead",{children:(0,p.jsx)("tr",{children:a.map(e=>(0,p.jsx)("th",{scope:"col",children:e},e))})}),(0,p.jsx)("tbody",{children:n.map(e=>(0,p.jsxs)("tr",{children:[(0,p.jsx)("th",{scope:"row",children:e.label}),e.values.map((t,a)=>(0,p.jsx)("td",{children:t},"".concat(e.key,"-").concat(a)))]},e.key))})]})},N=e=>{let t=e.eyebrow,a=e.title,n=e.kicker,l=e.className,i=void 0===l?"":l,s=e.children;return(0,p.jsxs)("article",{className:"billing-chart-card ".concat(i).trim(),children:[(0,p.jsx)("p",{className:"billing-chart-card__eyebrow",children:t}),(0,p.jsxs)("div",{className:"billing-chart-card__heading",children:[(0,p.jsx)("h3",{children:a}),n?(0,p.jsx)("span",{className:"billing-chart-card__kicker",children:n}):null]}),s]})},M=e=>{let t=e.items;return t&&t.length?(0,p.jsx)("div",{className:"billing-metrics",children:t.map(e=>(0,p.jsxs)("div",{className:"billing-metric".concat(e.tone?" billing-metric--".concat(e.tone):""),children:[(0,p.jsx)("span",{className:"billing-metric__value",children:e.value}),(0,p.jsx)("span",{className:"billing-metric__label",children:e.label}),null!=e.sub?(0,p.jsx)("span",{className:"billing-metric__sub",children:e.sub}):null]},e.label))}):null},S=e=>{let t=e.model;const a=(0,l.useId)(),i=t.timeline,s=i.points,r=i.stepDays;if(s.length<2)return null;const o=640,c=190,d=56,u=16,m=14,h=o-d-u,g=c-m-28,b=e=>t.hasRates?e.amount:e.minutes/60,v=e=>t.hasRates?x(e):"".concat(Math.round(e),"h"),M=s.map(b),S=Math.max(1,...M),A=h/(s.length-1),C=e=>d+e*A,L=e=>m+(1-e/S)*g,R=s.map((e,t)=>[C(t),L(b(e))]),D=R.map((e,t)=>{let a=(0,n.A)(e,2),l=a[0],i=a[1];return"".concat(0===t?"M":"L").concat(l.toFixed(1),",").concat(i.toFixed(1))}).join(" "),I="".concat(D," L").concat(R[R.length-1][0].toFixed(1),",").concat(m+g," L").concat(R[0][0].toFixed(1),",").concat(m+g," Z"),W=[S,S/2,0],F=s[s.length-1],T=s[0];return(0,p.jsxs)(N,{eyebrow:"Billable value over time",title:"Cumulative work logged this period",kicker:v(b(F)),className:"billing-chart-card--wide",children:[(0,p.jsxs)("svg",{className:"billing-chart-card__svg",viewBox:"0 0 ".concat(o," ").concat(c),role:"img","aria-label":"Cumulative billable value from ".concat(y(T.date,r)," to ").concat(y(F.date,r),", ending at ").concat(v(b(F))),children:[(0,p.jsx)("defs",{children:(0,p.jsxs)("linearGradient",{id:a,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,p.jsx)("stop",{offset:"0%",style:{stopColor:"var(--bc-accent)",stopOpacity:.26}}),(0,p.jsx)("stop",{offset:"100%",style:{stopColor:"var(--bc-accent)",stopOpacity:0}})]})}),W.map(e=>(0,p.jsxs)("g",{children:[(0,p.jsx)("line",{x1:d,x2:o-u,y1:L(e),y2:L(e),strokeWidth:"1",style:k}),(0,p.jsx)("text",{x:d-8,y:L(e)+4,textAnchor:"end",fontSize:"11",style:w,children:v(e)})]},e)),(0,p.jsx)("path",{d:I,fill:"url(#".concat(a,")"),stroke:"none"}),(0,p.jsx)("path",{d:D,fill:"none",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:j}),(0,p.jsx)("circle",{cx:R[R.length-1][0],cy:R[R.length-1][1],r:"4.5",strokeWidth:"2.5",style:{fill:"var(--bc-surface)",stroke:"var(--bc-accent)"}}),(0,p.jsx)("text",{x:d,y:182,textAnchor:"start",fontSize:"11",style:w,children:y(T.date,r)}
1),(0,p.jsx)("text",{x:o-u,y:182,textAnchor:"end",fontSize:"11",style:w,children:y(F.date,r)})]}),(0,p.jsx)(f,{caption:t.hasRates?"Cumulative billable value by date":"Cumulative logged time by date",headers:["Date",t.hasRates?"Cumulative billable value":"Cumulative logged time"],rows:s.map(e=>({key:e.date.toISOString(),label:y(e.date,r),values:[v(b(e))]}))}),(0,p.jsxs)(_,{children:[t.hasRates?"Completed work priced at each assignee's current hourly rate. This is work logged, not cash collected \u2014 nothing here is invoiced until you generate a bill.":"Logged hours only: no hourly rates are set for the people in this period, so there is no amount to price the work at.",r>1?" Points are weekly totals over this range.":""]})]})},A=e=>{let t=e.model;const a=t.aging;if(a.filter(e=>e.entryCount>0).length<2)return null;const n=e=>t.hasRates?e.amount:e.minutes,l=e=>t.hasRates?x(e.amount):c(e.minutes),i=Math.max(1,...a.map(n)),s=a.filter(e=>"warn"===e.tone).reduce((e,t)=>e+n(t),0);return(0,p.jsxs)(N,{eyebrow:"Unbilled work aging",title:"How old is the finished work?",kicker:s>0?"".concat(t.hasRates?x(s):c(s)," over 60 days"):"Nothing over 60 days",children:[(0,p.jsx)("div",{className:"billing-aging-bars","aria-hidden":"true",children:a.map(e=>(0,p.jsxs)("div",{className:"billing-aging-bar",children:[(0,p.jsx)("span",{className:"billing-aging-bar__value",children:l(e)}),(0,p.jsx)("div",{className:"billing-aging-bar__track",children:(0,p.jsx)("span",{className:"billing-aging-bar__fill billing-aging-bar__fill--".concat(e.tone),style:{height:"".concat(n(e)/i*100,"%")}})}),(0,p.jsx)("span",{className:"billing-aging-bar__label",children:e.label}),(0,p.jsxs)("span",{className:"billing-aging-bar__count",children:[d(e.entryCount)," tasks"]})]},e.label))}),(0,p.jsx)(f,{caption:"Completed work grouped by age",headers:["Age bucket",t.hasRates?"Estimated billable value":"Logged hours","Tasks"],rows:a.map(e=>({key:e.label,label:e.label,values:[l(e),d(e.entryCount)]}))}),(0,p.jsx)(_,{children:"Age is measured from each task\u2019s completion date to today, across the work loaded for this period. Buckets past 60 days are the ones that tend to fall out of a bill."})]})},C=e=>{let t=e.model;const a=t.topMatters;if(a.length<2)return null;const n=a.reduce((e,t)=>e+t.share,0),l=e=>t.hasRates?x(e.amount):c(e.minutes);return(0,p.jsxs)(N,{eyebrow:"Billing concentration",title:"Which matters carry the period?",kicker:"Top ".concat(a.length," = ").concat(Math.round(n),"%"),children:[(0,p.jsx)("div",{className:"billing-concentration","aria-hidden":"true",children:a.map(e=>(0,p.jsxs)("div",{className:"billing-concentration__row",children:[(0,p.jsxs)("div",{className:"billing-concentration__meta",children:[(0,p.jsx)("span",{title:e.label,children:e.shortLabel}),(0,p.jsx)("strong",{children:l(e)})]}),(0,p.jsx)("div",{className:"billing-concentration__track",children:(0,p.jsx)("span",{style:{width:"".concat(Math.max(2,e.share),"%")}})}),(0,p.jsxs)("span",{className:"billing-concentration__share",children:[e.share.toFixed(1),"%"]})]},e.key))}),(0,p.jsx)(f,{caption:"Billing share by matter",headers:["Matter",t.hasRates?"Estimated billable value":"Logged hours","Share"],rows:a.map(e=>({key:e.key,label:e.label,values:[l(e),"".concat(e.share.toFixed(1),"%")]}))}),(0,p.jsxs)(_,{children:["Share of ",t.hasRates?"estimated billable value":"logged hours"," across every matter in this period, not only the ones shown."]})]})},L=e=>{const t=e.model.contributors||[];return t.length<2?null:(0,p.jsxs)(N,{eyebrow:"Team contribution",title:"Who logged the work?",children:[(0,p.jsx)("div",{className:"billing-concentration","aria-hidden":"true",children:t.map(e=>(0,p.jsxs)("div",{className:"billing-concentration__row",children:[(0,p.jsxs)("div",{className:"billing-concentration__meta",children:[(0,p.jsx)("span",{title:e.label,children:e.shortLabel}),(0,p.jsx)("strong",{children:c(e.minutes)})]}),(0,p.jsx)("div",{className:"billing-concentration__track",children:(0,p.jsx)("span",{style:{width:"".concat(Math.max(2,e.share),"%")}})}),(0,p.jsxs)("span",{className:"billing-concentration__share",children:[e.share.toFixed(1),"%"]})]},e.key))}),(0,p.jsx)(f,{caption:"Logged hours by contributor",headers:["Contributor","Logged hours","Share"],rows:t.map(e=>({key:e.key,label:e.label,values:[c(e.minutes),"".concat(e.share.toFixed(1),"%")]}))}),(0,p.jsx)(_,{children:"Share of recorded work time in this period; entries without hourly rates are included."})]})},R=e=>{let t=e.model;const a=t.totals,n=a.ratedMinutes,l=a.unratedMinutes,i=a.rateCoverage;if(l<=0)return null;if(!t.hasRates)return null;const s=Math.round(100*i);return(0,p.jsxs)(N,{eyebrow:"Rate coverage",title:"How much of this work can be priced?",kicker:"".concat(c(l)," unpriced"),children:[(0,p.jsxs)("div",{className:"billing-coverage",children:[(0,p.jsx)("div",{className:"billing-coverage__donut",style:{background:"conic-gradient(var(--bc-accent) 0% ".concat(s,"%, var(--bc-warn) ").concat(s,"% 100%)")},role:"img","aria-label":"".concat(s," percent of logged minutes have an hourly rate set"),children:(0,p.jsxs)("div",{className:"billing-coverage__center",children:[(0,p.jsxs)("strong",{children:[s,"%"]}),(0,p.jsx)("span",{children:"priced"})]})}),(0,p.jsxs)("div",{className:"billing-coverage__legend",children:[(0,p.jsxs)("div",{className:"billing-coverage__legend-row",children:[(0,p.jsx)("span",{className:"billing-coverage__swatch billing-coverage__swatch--accent"}),(0,p.jsx)("span",{children:"Rate set"}),(0,p.jsx)("strong",{children:c(n)})]}),(0,p.jsxs)("div",{className:"billing-coverage__legend-row",children:[(0,p.jsx)("span",{className:"billing-coverage__swatch billing-coverage__swatch--warn"}),(0,p.jsx)("span",{children:"No rate set"}),(0,p.jsx)("strong",{children:c(l)})]})]})]}),(0,p.jsx)(_,{children:"Work without an hourly rate is excluded from every amount on this page. Set the missing rates below and the estimates above rise to match the hours."})]})},D=e=>{let t=e.entries,a=void 0===t?[]:t,n=e.range,i=void 0===n?null:n,s=e.now,r=e.topMatters,o=void 0===r?5:r,u=e.showContributorMix,m=void 0!==u&&u,h=e.showMetrics,g=void 0===h||h;const b=(0,l.useMemo)(()=>v({entries:a,range:i,now:s||new Date,topMatters:o}),[a,i,s,o]);if(!b.hasData)return null;const y=b.totals,j=[{label:b.hasRates?"Estimated billable value":"Logged time",value:b.hasRates?x(y.amount):c(y.minutes),sub:b.hasRates?"".concat(c(y.minutes)," logged"):"No hourly rates set",tone
1:"accent"},{label:"Billable tasks",value:d(y.entryCount),sub:"Across ".concat(d(y.matterCount)," ").concat(1===y.matterCount?"matter":"matters")},{label:"People with logged work",value:d(y.contributorCount)},{label:"Unpriced work",value:c(y.unratedMinutes),sub:y.unratedMinutes>0?"Missing an hourly rate":"Every entry has a rate",tone:y.unratedMinutes>0?"warn":"good"}];return(0,p.jsxs)("div",{className:"billing-charts",children:[g?(0,p.jsx)(M,{items:j}):null,(0,p.jsxs)("div",{className:"billing-charts__grid",children:[(0,p.jsx)(S,{model:b}),(0,p.jsx)(A,{model:b}),(0,p.jsx)(C,{model:b}),m?(0,p.jsx)(L,{model:b}):null,(0,p.jsx)(R,{model:b})]})]})},I=D},1763(e,t,a){a.d(t,{Ay:()=>d,KP:()=>c});var n=a(9379),l=a(5544),i=a(6998),s=a(9085);const r=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.billingWeekStart,l=t.billingWeekEnd,i=t.appId,r=t.dateFrom,o=t.dateTo,c=t.resultLimit;try{var d,u,m,h;const t=void 0===(w=e)||null===w?"":String(w).trim();if(!t)return{success:!1,message:"A case id is required to load a billing summary."};if(!a||!l)return{success:!1,message:"billingWeekStart and billingWeekEnd are required to load a billing summary."};const g=await s.default.get("/api/billing/cases/".concat(encodeURIComponent(t),"/summary"),{params:(0,n.A)((0,n.A)((0,n.A)((0,n.A)({billingWeekStart:a,billingWeekEnd:l},i?{appId:i}:{}),r?{dateFrom:r}:{}),o?{dateTo:o}:{}),void 0!==c&&null!==c?{resultLimit:c}:{})});return{success:!0,data:(0,n.A)((0,n.A)({},null===g||void 0===g?void 0:g.data),{},{caseId:(null===g||void 0===g||null===(d=g.data)||void 0===d?void 0:d.caseId)||t,billingWeekStart:(null===g||void 0===g||null===(u=g.data)||void 0===u?void 0:u.billingWeekStart)||a,billingWeekEnd:(null===g||void 0===g||null===(m=g.data)||void 0===m?void 0:m.billingWeekEnd)||l,summaryText:(null===g||void 0===g||null===(h=g.data)||void 0===h?void 0:h.summaryText)||""})}}catch(_){var g,b,v,p,x,y,j,k;return{success:!1,message:(null===_||void 0===_||null===(g=_.response)||void 0===g||null===(b=g.data)||void 0===b?void 0:b.detail)||(null===_||void 0===_||null===(v=_.response)||void 0===v||null===(p=v.data)||void 0===p?void 0:p.message)||(null===_||void 0===_||null===(x=_.response)||void 0===x||null===(y=x.data)||void 0===y?void 0:y.error)||(null===_||void 0===_||null===(j=_.response)||void 0===j||null===(k=j.data)||void 0===k?void 0:k.errorMessage)||(null===_||void 0===_?void 0:_.message)||"Unable to load billing summary."}}var w};var o=a(3146);const c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;const t=new Date(e);t.setHours(0,0,0,0);const a=new Date(t),n=new Date(t);return n.setDate(t.getDate()-6),{start:n.toISOString().slice(0,10),end:a.toISOString().slice(0,10)}}(),d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.cases,a=void 0===t?[]:t,s=e.range,d=void 0===s?c:s,u=e.enabled,m=void 0===u||u;const h=(0,i.useState)({loading:!0,error:"",summaries:[]}),g=(0,l.A)(h,2),b=g[0],v=g[1],p=JSON.stringify(a);(0,i.useEffect)(()=>{let e=!0;return(async()=>{if(m)if(a.length&&null!==d&&void 0!==d&&d.start&&null!==d&&void 0!==d&&d.end){v(e=>(0,n.A)((0,n.A)({},e),{},{loading:!0,error:""}));try{const t=await Promise.all(a.map(async e=>{var t;const a=await r(e.caseId,{billingWeekStart:d.start,billingWeekEnd:d.end,appId:e.appId}).catch(e=>({success:!1,message:(0,o.S)(e,"Unable to load summary.")}));return{caseId:e.caseId,appId:e.appId,caseName:e.caseName,docketNumber:e.docketNumber,practiceArea:e.practiceArea,members:e.members,summaryText:null!==a&&void 0!==a&&a.success&&(null===a||void 0===a||null===(t=a.data)||void 0===t?void 0:t.summaryText)||"",summaryError:null!==a&&void 0!==a&&a.success?"":(null===a||void 0===a?void 0:a.message)||""}}));e&&v({loading:!1,error:"",summaries:t})}catch(t){e&&v({loading:!1,error:(0,o.S)(t,"Unable to load billing summaries."),summaries:[]})}}else e&&v({loading:!1,error:"",summaries:[]});else e&&v({loading:!1,error:"",summaries:[]})})(),()=>{e=!1}},[p,m,null===d||void 0===d?void 0:d.end,null===d||void 0===d?void 0:d.start]);const x=(0,i.useMemo)(()=>b.summaries.reduce((e,t)=>
1(e["".concat(t.appId,":").concat(t.caseId)]=t,e),{}),[b.summaries]);return(0,n.A)((0,n.A)({},b),{},{summariesByCaseKey:x})}}}]); 2//# sourceMappingURL=8741.a1414bc3.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.