1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[386],{20386:(t,e,a)=>{a.r(e),a.d(e,{mountJournalSync:()=>l});let n=t=>Math.max(0,Math.min(1,t)),o=t=>t<.5?4*t**3:1-(-2*t+2)**3/2,c=[["dashboard","Dashboard","layout-dashboard"],["calendar","Calendar","calendar"],["daily","Daily journal","notebook-pen"],["trades","Trades","list-ordered"],["reports","Reports","chart-column"],["prop","Prop firms","landmark"],["notebook","Notebook","notebook"],["progress","Progress","list-checks"]];function r(t,e){let{name:a,symbol:n,values:o,totals:c,days:r,dayDates:l}=e,s={AAPL:[220,10,1],BTCUSDT:[6e4,.1,1],"ETH/USD":[3e3,1,1],SPY:[550,10,1],ES:[5e3,1,50],EURUSD:[1.09,1e4,1],NVDA:[140,10,1],NQ:[2e4,1,20],MES:[5e3,1,5],TSLA:[250,10,1],AMD:[160,10,1],MNQ:[2e4,1,2]}[n],i=t=>"".concat(t<0?"â":"+","$").concat(Math.abs(t).toFixed(2)),d=t=>'<span class="'.concat(t<0?"negative":"positive",'">').concat(i(t),"</span>"),h=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return'<div class="view-result '.concat(a,'" data-reveal="').concat(e,'">').concat(t,"</div>")},p=t=>'<span class="journal-control" aria-hidden="true">'.concat(t,"</span>"),u=(t,e,a,n)=>h("<label>".concat(t,"</label><strong>").concat(e,"</strong><small>").concat(a,"</small>"),n,"card view-stat"),v=o.filter(t=>t>0),m=o.filter(t=>t<0),y=t=>({net:t.reduce((t,e)=>t+e,0),win:t.filter(t=>t>0).length/t.length*100,count:t.length}),g=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return'<div class="view-heading"><h2>'.concat(t,"</h2><span>").concat(e,"</span></div>")},f="<h3>Session review</h3><p>Synthetic sample note for this preview.</p><h4>What I reviewed</h4><ul><li>Compare entry and exit fills with the intraday P&L curve.</li><li>Review position size before judging the result.</li><li>Check which playbook rules were followed.</li></ul><h4>Next session</h4><p>Write the setup and invalidation before entering. Review execution quality separately from profit.</p>",w=(t,e,a)=>h("<h3>".concat(t,'</h3><div class="breakdown-row muted"><span>
1').concat(t.replace("By ",""),"</span><span>Trades</span><span>Win %</span><span>Net P&L</span></div>").concat(e.map(t=>{let[e,a]=t,n=y(a);return'<div class="breakdown-row"><span>'.concat(e,"</span><span>").concat(n.count,"</span><span>").concat(n.win.toFixed(0),"%</span>").concat(d(n.net),"</div>")}).join("")),a,"card breakdown");if("calendar"===t){let t=Object.values(r).map(t=>t.net),e=t.filter(t=>t>0),a=t.filter(t=>t<0),n=t=>t.reduce((t,e)=>t+e,0)/t.length,o="";for(let t=0;t<5;t++){let e=0,a=0;for(let n=0;n<7;n++){let c=7*t+n-1,l=r[c];l&&(e+=l.net,a+=l.count),o+=c<1||c>30?"<div></div>":'<div class="month-day"><span>'.concat(c,"</span>").concat(l?h("".concat(d(l.net),"<small>").concat(l.count," ").concat(1===l.count?"trade":"trades","</small>"),Object.keys(r).indexOf(String(c)),l.net>0?"day-profit":"day-loss"):"","</div>")}o+='<div class="month-day week-total">'.concat(a?h("".concat(d(e),"<small>").concat(a," trades</small>"),t+2):"<span>â</span>","</div>")}return'<div class="calendar-navigation">'.concat(p("â¹"),"<b>September 2026</b>").concat(p("âº"),'</div><div class="card"><div class="large-calendar"><div class="weekdays">').concat(["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Week"].map(t=>"<span>".concat(t,"</span>")).join(""),'</div><div class="month-grid">').concat(o,"</div></div>").concat(h("<span>4 trading days \xb7 ".concat(Object.values(r).filter(t=>t.net>0).length," green</span><span>Month: ").concat(d(c.net),"</span>"),5,"calendar-summary"),"</div>").concat(g("Performance insights","Visible month \xb7 Closed trades \xb7 USD"),'<div class="view-stat-row four">').concat(u("NET P&L",d(c.net),"4 trading days \xb7 USD",4)).concat(u("AVERAGE DAILY P&L",d(c.net/4),"Per day with closed trades",5)).concat(u("TRADE WIN RATE",c.win.toFixed(1)+"%","".concat(v.length," wins \xb7 ").concat(m.length," losses"),6)).concat(u("TOTAL CLOSED TRADES","6","Round-trip trades",7),'</div><div class="view-stat-row">').concat(h('<label>BEST & WORST DAY</label><div class="calendar-detail"><span>Best day</span>'.concat(d(Math.max(...t)),'</div><div class="calendar-detail"><span>Worst day</span>').concat(d(Math.min(...t)),"</div>"),6,"card")).concat(h('<label>AVERAGE GREEN & RED DAY</label><div class="calendar-detail"><span>'.concat(e.length," green days</span>").concat(d(n(e)),'</div><div class="calendar-detail"><span>').concat(a.length," red days</span>").concat(a.length?d(n(a)):"â","</div>"),7,"card")).concat(u("DAY CONSISTENCY",c.daywin.toFixed(0)+"%","".concat(e.length," positive \xb7 ").concat(a.length," negative"),7),"</div>")}if("daily"===t){let t=y(o.slice(0,2)),e=o.slice(0,2).filter(t=>t>0).reduce((t,e)=>t+e,0),a=-o.slice(0,2).filter(t=>t<0).reduce((t,e)=>t+e,0),c=[["Net P&L",d(t.net)],["Trades","2"],["Winrate",t.win.toFixed(0)+"%"],["Winners",String(o.slice(0,2).filter(t=>t>0).length)],["Losers",String(o.slice(0,2).filter(t=>t<0).length)],["Gross",i(t.net)],["Fees","$0.00"],["Volume",String(2*s[1])],["Profit factor",a?(e/a).toFixed(2):"â"],["Expectancy",i(t.net/2)]];return'<div class="daily-layout"><div>'.concat(h('<label>DAY STATS</label><div class="day-stats">'.concat(c.map(t=>{let[e,a]=t;return"<div><small>".concat(e,"</small><strong>").concat(a,"</strong></div>")}).join(""),"</div>"),0,"card")).concat(h("<label>INTRADAY CUMULATIVE NET P&L</label>".concat(((t,e)=>{let a=Math.min(0,...t),n=Math.max(1,...t),o=n-a||1,c=t.map((e,n)=>"".concat(35+275*n/(t.length-1),",").concat(142-(e-a)/o*125));return'<svg class="view-curve" viewBox="0 0 320 165" preserveAspectRatio="none" aria-label="Sample P and L chart"><g stroke="#222228"><path d="M35 17H310M35 59H310M35 101H310M35 142H310"/></g><g class="plot-labels"><text x="0" y="20">'.concat(i(n),'</text><text x="0" y="102">').concat(i(a+o/3),'</text><text x="0" y="144">').concat(i(a),'</text><text x="35" y="161">').concat(e[0],'</text><text x="310" y="161" text-anchor="end">').concat(e[1],'</text></g><path d="M').concat(c.join(" L"),' L310 142 L35 142Z" fill="#1197e215"/><path class="view-line" d="M').concat(c.join(" L"),'" fill="none" stroke="#1197e2" stroke-width="1.6" pathLength="100"/></svg>')})([0,o[0],t.net],["09:45","10:45"])),2,"card intraday-chart")).concat(h("<label>TRADES</label>".concat(o.slice(0,2).map((t,e)=>'<div class="note-trade"><span class="result-badge '.concat(t<0?"negative":"positive",'">').concat(t>0?"WIN":"LOSS","</span><b>").concat(n,'</b><span class="muted">').concat(e?"short":"long","</span>").concat(d(t),"</div>")).join("")),3,"card"),'</div><div class="card day-note"><div class="note-toolbar"><label>DAY NOTE</label>').concat(p("â© Dictate")).concat(p("â§ AI recap"),"</div>").concat(p("Edit")).concat(h(f,1,"prose note-body"),'<small class="save-note">Saved \xb7 manual sample</small><div class="export-row">
1').concat(p("â Export PDF")).concat(p("â§ Export PNG")).concat(p("â Add attachment"),"</div></div></div>")}if("trades"===t){let[t,e,a]=s,r="EURUSD"===n?5:2,i="EURUSD"===n?1e-4:.5;return'<div class="view-stat-row four">'.concat(u("Net cumulative P&L",d(c.net),"6 trades",0)).concat(u("Profit factor",c.factor.toFixed(2),"",1)).concat(u("Trade win %",c.win.toFixed(1)+"%","",2)).concat(u("Avg win / loss",c.ratio.toFixed(2),"",3),'</div><div class="card trades-table-wrap"><table class="actual-trades"><thead><tr>').concat(["â¡","Close date","Symbol","Status","Volume","Entry","Exit","Net P&L","Net ROI","Fees","Duration","Execs"].map(t=>"<th>".concat(t,"</th>")).join(""),"</tr></thead><tbody>").concat(o.map((o,c)=>{let s=t+c*i,h=s+o/(e*a)*(c%2?-1:1);return'<tr data-reveal="'.concat(c,'" class="view-result"><td>â¡</td><td>Sep ').concat(l[c],"<small>").concat([9,10,11,13,14,15][c],":45</small></td><td><b>").concat(n,"</b><small>").concat(c%2?"short":"long",'</small></td><td><span class="result-badge ').concat(o<0?"negative":"positive",'">').concat(o>0?"WIN":"LOSS","</span></td><td>").concat(e,"</td><td>").concat(s.toFixed(r),"</td><td>").concat(h.toFixed(r),"</td><td>").concat(d(o),"</td><td>").concat((o/(s*e*a)*100).toFixed(2),"%</td><td>$0.00</td><td>15m</td><td>2</td></tr>")}).join(""),'</tbody></table><div class="table-footer"><span>0 of 6 rows selected</span><span>Rows per pageã25ãã1 of 1ããâ¹ãâº</span></div></div>')}return"reports"===t?'<div class="card ask-journal"><label>ASK YOUR JOURNAL</label><div class="ask-field"><span>Why do my Monday shorts keep failing?</span>'.concat(p("â§ Ask"),'</div><div class="suggestions"><span>What\'s my most expensive mistake?</span><span>Which weekday should I stop trading?</span><span>Am I better at longs or shorts?</span></div></div><div class="report-tabs">').concat(["Overview","Performance trends","Trade explorer","Breakdowns","Cross-analysis","Compare groups"].map((t,e)=>'<span class="'.concat(e?"":"selected",'">').concat(t,"</span>")).join(""),'</div><div class="overview-caption"><span>Trading overview \xb7 UTC \xb7 USD</span><span>
1').concat(p("â PDF")).concat(p("â§ PNG"),"</span></div>").concat(h('<h3>Trade time performance</h3><div class="time-performance">'.concat(Array.from({length:24},(t,e)=>{let a=[9,10,11,13,14,15].indexOf(e);return'<div style="background:'.concat(a<0?"#1b1b20":o[a]>0?"#0ca30c40":"#d03b3b40",'"><span>').concat(e,"</span>").concat(a<0?"":"<b>".concat(i(o[a]),"</b>"),"</div>")}).join(""),"</div>"),0,"card"),'<div class="breakdown-grid">').concat(w("By symbol",[[n,o]],1)).concat(w("Long vs short",[["long",o.filter((t,e)=>e%2==0)],["short",o.filter((t,e)=>e%2==1)]],2)).concat(w("By weekday",[["Wednesday",o.slice(0,2)],["Thursday",[o[2]]],["Friday",[o[3]]],["Tuesday",o.slice(4)]],3)).concat(w("By holding time",[["15â30 minutes",o]],4)).concat(h('<h3>By tag</h3><p class="empty-breakdown">Annotate trades to unlock this breakdown.</p>',5,"card")).concat(h('<h3>By mistake</h3><p class="empty-breakdown">Annotate trades to unlock this breakdown.</p>',6,"card"),"</div>"):"prop"===t?g("Spending & payouts","See what you paid, what can come back, and your net result.")+'<div class="demo-banner">Demo preview <span>Simulated records \xb7 Read-only \xb7 Nothing is saved</span></div><div class="card prop-filter">⸠Filters <span>All firms \xb7 All accounts \xb7 All dates \xb7 USD</span></div><div class="view-stat-row prop-stat-row">'.concat(u("â Money spent","$125.00","All fees, subscriptions and other costs",0)).concat(u("â Payouts received","$500.00","Money received, after any reversals",1)).concat(u("Net after costs",d(375),"Payouts received + refunds â money spent",2),'</div><div class="awaiting"><span>Awaiting payoutã <b>$0.00</b></span><span>View payout requests â</span></div><div class="report-tabs">').concat(["Overview","Accounts","Payouts","Transactions"].map((t,e)=>'<span class="'.concat(e?"":"selected",'">').concat(t,"</span>")).join(""),"</div>").concat(h('<div class="view-heading"><h3>Spending vs payouts</h3><span><i class="legend-dot red"></i> Money spentã<i class="legend-dot"></i> Payouts received</span></div><small>Monthly cash flow \xb7 USD</small><div class="cashflow-chart"><div class="cashflow-axis"><span>$500</span><span>$250</span><span>$0</span></div>'.concat([[25,0,"Jul 26"],[50,200,"Aug 26"],[50,300,"Sep 26"]].map(t=>{let[e,a,n]=t;return'<div class="cashflow-month"><div><i style="height:'.concat(e/500*100,'%"></i><i style="height:').concat(a/500*100,'%"></i></div><span>').concat(n,"</span></div>")}).join(""),"</div><small>Refunds reduce your net cost. Manual sample records.</small>"),3,"card"),'<div class="card prop-filter">⸠Detailed breakdowns <small>Net cash trend, firm returns, expense categories and monthly records</small></div>'):"notebook"===t?'<div class="notebook-layout"><div class="note-folders"><span class="selected">All notes</span><span>Session reviews</span><span>Trading plan</span><span>ï¼ New folder</span></div><div class="note-list"><div class="search-notes">â Search notes</div><div class="selected"><b>'.concat(n,' \xb7 Session review</b><small>2026-09-02 \xb7 Compare entry and exit fills</small></div><div><b>Pre-market checklist</b><small>2026-09-01 \xb7 Define the setup</small></div></div><div class="note-editor"><div class="card"><div class="editor-title"><b>').concat(n,' \xb7 Session review</b></div><div class="note-toolbar">').concat(p("Edit")).concat(p("â© Dictate"),'<span class="negative">Delete</span></div>').concat(h(f,0,"prose note-body"),'<div class="save-note">Saved \xb7 manual sample</div><div class="export-row">').concat(p("â Export PDF")).concat(p("â§ Export PNG"),"</div></div></div></div>"):"progress"===t?'<p class="view-context">Build a repeatable trading day. Routines are tracked independently of trade filters and profit.</p>'.concat(h("<div><small>Daily completion</small><strong>80%</strong><small>4 of 5 scheduled routines</small></div><div><small>Review date</small>".concat(p("⦠September 2, 2026"),'</div><div class="export-row">').concat(p("â Export PDF")).concat(p("â§ Export PNG"),"</div>"),0,"card completion-card"),'<div class="routine-grid">').concat([["Before trading",["Review the plan","Set risk limits"]],["During trading",["Follow entry rules"]],["After trading",["Review executions","Write a session note"]]].map((t,e)=>{let[a,n]=t;return h("<h3>".concat(a,"</h3>").concat(n.map((t,a)=>'<div class="routine"><span class="routine-check '.concat(2===e&&1===a?"pending":"",'">').concat(2===e&&1===a?"":"â","</span><span>").concat(t,"</span><small>Archive</small></div>
1")).join("")),e+1,"card")}).join(""),"</div>").concat(h('<h3>Last 13 weeks</h3><div class="habit-grid">'.concat(Array.from({length:91},(t,e)=>'<i style="background:color-mix(in srgb,#1197e2 '.concat([0,35,65,90,15,75,90][(17*e+11*Math.floor(e/7))%7],'%,#1b1b20)"></i>')).join(""),'</div><p class="muted">Daily routine completion \xb7 manual sample history</p>'),4,"card habit-card")):""}function l(t){let e=new AbortController,{signal:a}=e,l=0,s=[["Alpaca","alpaca.markets","AAPL",[165,92,-55,124,-41,87]],["Binance","binance.com","BTCUSDT",[-180,940,-210,-160,730,-140]],["Kraken","kraken.com","ETH/USD",[28,32,21,18,16,-97]],["IBKR Flex","interactivebrokers.com","SPY",[-110,95,-85,120,-60,150]],["Topstep","topstep.com","ES",[-140,-110,950,-180,-220,-90]],["TradingView","tradingview.com","EURUSD",[54,-32,118,-40,86,-25],"statement"],["ThinkorSwim","schwab.com","NVDA",[-80,320,150,-95,210,-65],"statement"],["NinjaTrader","ninjatrader.com","NQ",[-220,680,-180,440,-160,-150],"statement"],["Tradovate","tradovate.com","MES",[62,-24,18,54,-30,27],"statement"],["MetaTrader 4","metatrader4.com","EURUSD",[-35,24,42,-27,36,-17],"statement"],["Webull","webull.com","TSLA",[110,-72,45,-98,175,-64],"statement"],["DAS Trader","dastrader.com","AMD",[-65,240,-82,130,-48,96],"statement"],["TopstepX","topstep.com","MNQ",[95,-120,380,-80,-95,150],"statement"],["Any CSV","","SPY",[12,-18,24,-21,9,7],"csv"]],i=t=>"statement"===t[4]?"Statement import":"csv"===t[4]?"CSV import":"Read-only sync";function d(t,e){if(!e)return'<span class="logo csv-logo"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" aria-hidden="true"><path d="M6 3h8l4 4v14H6zM14 3v5h4M9 12h6M9 16h6M12 10v9"/></svg></span>';let a="Alpaca"===t?"https://github.com/alpacahq.png?size=64":"https://www.google.com/s2/favicons?domain=".concat(e,"&sz=64");return'<span class="logo"><span>'.concat(t[0],"</span>").concat(e?'<img alt="" src="'.concat(a,'">'):"","</span>")}let h=t.querySelector(".animation-stage"),p=t.querySelector(".traveler"),u=t=>"".concat(t<0?"â":"+","$").concat(Math.abs(t).toFixed(2)),v=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.random,a=t.length,n=Array.from({length:a},(t,e)=>e),o=[],c=[],r=(t,e)=>t+Math.round((e-t)/a)*a;return{order:n,next(l,s,i){let d,h,p,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:3;o.length||(o=Array.from({length:a},(t,e)=>e));let v=o.filter(t=>t!==s&&!c.includes(t)),m=v.filter(t=>Math.abs(r(n.indexOf(t),l)-l)>=u),y=m.length?m:v,g=y.filter(e=>t[e]!==t[s]),f=(d=g.length?g:y)[Math.floor(e()*d.length)],w=n.indexOf(f),x=[];if(m.length){let t=((h=Math.ceil(l+Math.ceil(u))+Math.floor(2*e()))%a+a)%a;w!==t&&([n[w],n[t]]=[n[t],n[w]],x.push(w,t)),p=(h-l)/i*1e3}else p=Math.max(0,((h=r(w,l))-l)/i*1e3);return o=o.filter(t=>t!==f),c.push(f),c.length>4&&c.shift(),{sourceIndex:f,wheelTarget:h,spinDuration:p,changedSlots:x}}}}(s.map(t=>t[4]||"sync")),m=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Math.random,e=0,a=[];return(n,o,c)=>{let r,l={ES:1250,NQ:500,MES:125,MNQ:50}[c]||100,s=a.at(-1),i=o.filter(t=>t>0).length,d=[...new Set([Math.max(1,i-1),i,Math.min(5,i+1)])].filter(t=>t!==(null==s?void 0:s.wins));for(let e=0;e<512;e++){let n=o.map(e=>{let a=Math.max(1,Math.round(100*Math.abs(e)*(.6+.9*t())/l));return Math.sign(e)*a*l});for(let e=n.length-1;e>0;e--){let a=Math.floor(t()*(e+1));[n[e],n[a]]=[n[a],n[e]]}let c=e<32?d:[1,2,3,4,5].filter(t=>t!==(null==s?void 0:s.wins)),i=c[Math.floor(t()*c.length)],h=n.filter(t=>t>0).length;for(;h!==i;){let e=n.flatMap((t,e)=>(h<i?t<0:t>0)?[e]:[]),a=e[Math.floor(t()*e.length)];n[a]*=-1,h+=h<i?1:-1}let p=n.reduce((t,e)=>t+e,0);if(p<=0){let e=n.findIndex(t=>t>0);n[e]+=(Math.ceil(-p/l)+1+Math.floor(12*t()))*l}let u=(r=function(t){let e=[2,2,3,4,8,8],a={};t.forEach((t,n)=>{var o;let c=a[o=e[n]]||(a[o]={net:0,count:0});c.net=Math.round((c.net+t)*100)/100,c.count++});let n=t.filter(t=>t>0),o=t.filter(t=>t<0),c=Math.round(100*n.reduce((t,e)=>t+e,0))/100,r=-Math.round(100*o.reduce((t,e)=>t+e,0))/100,l=Object.values(a).map(t=>t.net),s={net:Math.round((c-r)*100)/100,win:100*n.length/t.length,daywin:100*l.filter(t=>t>0).length/l.length,factor:c/r,ratio:c/n.length/(r/o.length)};return{values:t,dayDates:e,days:a,dailyValues:l,wins:n,losses:o,gross:c,loss:r,totals:s,edge:function(t,e){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e4,n=t=>Math.min(1,Math.max(0,t)),o=t.filter(t=>t>0),c=t.filter(t=>t<0),r=o.reduce((t,e)=>t+e,0),l=-c.reduce((t,e)=>t+e,0),s=0,i=0,d=0,h=null,p=t.map(t=>{s+=t;let e=(i=Math.max(i,s))-s,n=a+i>0?e/(a+i):null;return e>d&&(d=e,h=n),n}),u=e.filter(t=>t>0),v=u.reduce((t,e)=>t+e,0),m=v>0?Math.max(...u)/v:null,y=[n(o.length/(t.length||1)/.6),n((l>0?r/l:3*(r>0))/3),n((o.length&&c.length?r/o.length/(l/c.length):0)/2.5),null===h?.5:1-n(h/.25),d>0?n(s/d/3):+(s>0),null===m?0:m<=.15?1:1-n((m-.15)/.85)],g=[15,25,20,15,10,15],f=t.length>=5?Math.round(100*y.reduce((t,e,a)=>t+e*g[a],0))/100:null;return{components:y,score:f,drawdowns:p,maxDrawdown:d,maxDrawdownPct:h}}(t,l)}}(n.map(t=>t/100))).edge.score.toFixed(1);if(!a.some(t=>t.score===u||t.net===r.totals.net)&&r.totals.daywin!==(null==s?void 0:s.daywin)&&r.totals.factor.toFixed(2)!==(null==s?void 0:s.factor)&&r.totals.ratio.toFixed(2)!==(null==s?void 0:s.ratio))break}return a.push({score:r.edge.score.toFixed(1),net:r.totals.net,wins:r.wins.length,daywin:r.totals.daywin,factor:r.totals.factor.toFixed(2),ratio:r.totals.ratio.toFixed(2)}),a.length>28&&a.shift(),{...r,id:++e,sourceIndex:n}}}(),y=t=>m(t,s[t][3],s[t][2]),g=t=>{let e=s[t];return"".concat(d(...e),'<span class="wheel-label"><b>').concat(e[0],"</b><small>").concat(i(e),"</small></span>")};t.querySelector(".broker-selector").innerHTML='<div class="wheel-track" aria-hidden="true">'+Array.from({length:3*s.length},(t,e)=>'<div class="wheel-item" data-wheel="'.concat(e,'"><div class="wheel-face">').concat(g(v.order[e%s.length]),"</div></div>")).join("")+"</div>";let f=[...t.querySelectorAll(".wheel-item")].map(t=>({item:t,face:t.querySelector(".wheel-face")})),w=0,x=4,b=y(4),M=null,S=-1,k="dashboard",A=null,T=0,q=0,E=!0,L="",P={},F=0,D=0,C=0,N=0,j=null,R=null,O=matchMedia("(prefers-reduced-motion: reduce)"),H=matchMedia("(max-width: 1050px)");function U(t){let e=H.matches,a=t.querySelector(".wheel-item");return{horizontal:e,pitch:e?a.offsetWidth:a.offsetHeight,extent:e?t.clientWidth:t.clientHeight}}let W=t=>t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2,B=t=>Math.max(0,Math.min(1,t));function I(){let{pitch:e,extent:a}=U(t.querySelector(".broker-selector")),n=v.next(F,x,1.6,a/(2*e)+.5);D=n.wheelTarget,w=n.sourceIndex,C=n.spinDuration,n.changedSlots.forEac
1h(e=>{for(let a=0;a<3;a++)t.querySelector('[data-wheel="'.concat(e+a*s.length,'"] .wheel-face')).innerHTML=g(v.order[e])}),M=y(w),N=C+7800,j=null,function(){let[e,a]=s[w];t.querySelector(".actor-logo").innerHTML=d(e,a),t.querySelector(".actor-name").textContent=e,L=""}()}function V(){if(a.aborted)return;let e=O.matches,c=(T-C)/1e4,l=s[!e&&c<0?x:w],d=l[0];t.querySelector("#account").textContent!==d&&(t.querySelector("#account").textContent=d);let v=i(l);t.querySelector(".connection-kind").textContent=v,t.querySelector(".account").title=v;let m=!!s[w][4],y="csv"===s[w][4],g=!e&&c<.25,q=g?b:M;S!==q.id&&function(e){var a;S=e.id;let[n,,o]=s[e.sourceIndex],{values:c,dayDates:l,days:i,wins:d,losses:h,gross:p,loss:v,dailyValues:m,edge:y}=e;P=e.totals,t.querySelector(".sample-symbol").textContent=o;let g=0,f=[0,...m.map(t=>g+=t)],w=Math.min(...f)-40,x=Math.max(...f)+40,b=f.map((t,e)=>"".concat(320*e/m.length,",").concat(170-(t-w)/(x-w)*150));t.querySelector(".equity-line").setAttribute("d","M"+b.join(" L")),t.querySelector(".equity-fill").setAttribute("d","M"+b.join(" L")+" L320 185 L0 185 Z"),t.querySelector(".bars").innerHTML=m.map((t,e)=>'<i class="'.concat(t<0?"loss":"",'" style="left:').concat(8+23*e,"%;--height:").concat(Math.abs(t)/Math.max(...m.map(Math.abs))*58,'px" title="').concat(u(t),'"></i>')).join("");let M="";for(let t=0;t<5;t++){let e=0,a=0;for(let n=0;n<7;n++){let o=7*t+n-1,c=i[o];c&&(e+=c.net,a+=c.count),M+=o<1||o>30?"<div></div>":'<div class="day '.concat(c?c.net<0?"lost":"filled":"",'">').concat(o).concat(c?"<b>".concat(u(c.net),"</b>"):"","</div>")}M+='<div class="day dashboard-week">'.concat(a?"<b>".concat(u(e),"</b>"):"â","</div>")}t.querySelector(".calendar-grid").innerHTML=M,t.querySelector(".dashboard-month-summary").innerHTML="<span>4 trading days \xb7 ".concat(Object.values(i).filter(t=>t.net>0).length," green</span><span>Month: <b>").concat(u(P.net),"</b></span>"),t.querySelector(".wl-bar i").style.width="".concat(p/(p+v)*100,"%"),t.querySelector(".wl-bar i + i").style.width="".concat(v/(p+v)*100,"%");let T=y.components;t.querySelector("#edge-score-value").textContent=null===y.score?"5 trades needed":"".concat(y.score.toFixed(1)," / 100"),t.querySelector(".radar-result").setAttribute("d",[[120,25],[195,67],[195,142],[120,177],[45,142],[45,67]].map((t,e)=>{let[a,n]=t;return"".concat(e?"L":"M").concat(120+(a-120)*T[e],",").concat(101+(n-101)*T[e])}).join(" ")+"Z"),t.querySelector("#win-count").textContent="".concat(d.length," W \xb7 ").concat(h.length," L"),t.querySelector("#avg-sizes").textContent="".concat(u(p/d.length)," avg win \xb7 ").concat(u(-v/h.length)," avg loss"),t.querySelector(".drawdown-bars").innerHTML=y.drawdowns.map(t=>'<i style="height:'.concat((null!=t?t:0)/Math.max(...y.drawdowns.map(t=>null!=t?t:0),1e-4)*28,'px"></i>')).join(""),t.querySelector("#max-drawdown").textContent="MAX â".concat(((null!=(a=y.maxDrawdownPct)?a:0)*100).toFixed(1),"%"),A={name:n,symbol:o,values:c,totals:P,days:i,dayDates:l,path:"M"+b.join(" L")},t.querySelector(".alternate-view").innerHTML=r(k,A),t.querySelector(".trades").innerHTML=c.map((t,e)=>'<div class="trade '.concat(t<0?"loss":"",'"><span>').concat(t<0?"LOSS":"WIN","</span><span>").concat(o,'</span><span class="trade-date">Sep ').concat(l[e],"</span><b>").concat(u(t),"</b></div>")).join(""),t.querySelectorAll("img").forEach(t=>t.onerror=()=>t.remove()),L=""}(q);let E=g?1-W(B((c-.075)/.165)):1;h.style.setProperty("--content-opacity",E.toFixed(4));let N=(t,a)=>e||g?1:W(B((c-t)/a)),H=Array.from({length:5},(t,e)=>N(.32+.048*e,.045));t.querySelectorAll(".metrics > .card").forEach((t,e)=>{t.style.setProperty("--metric-pop",H[e].toFixed(4))}),t.querySelectorAll("[data-reveal]").forEach(t=>{let e=N(.32+.045*Number(t.dataset.reveal),.075);t.style.setProperty("--item-progress",e.toFixed(4))});let I=N(.56,.18);h.style.setProperty("--reveal",I.toFixed(4)),h.style.setProperty("--result-opacity",I.toFixed(4)),h.style.setProperty("--gauge",(P.win*H[1]).toFixed(2)),t.querySelector("#net").textContent=u(P.net*H[0]),t.querySelector("#win").textContent=(P.win*H[1]).toFixed(1)+"%",t.querySelector("#factor").textContent=(P.factor*H[2]).toFixed(2),t.querySelector("#daywin").textContent=(P.daywin*H[3]).toFixed(1)+"%",h.style.setProperty("--day-gauge",(P.daywin*H[3]).toFixed(2)),t.querySelector("#ratio").textContent=(P.ratio*H[4]).toFixed(2);let V=h.getBoundingClientRect(),Y=t.querySelector(".app-window").getBoundingClientRect(),z=t.querySelector(".broker-selector"),$=z.getBoundingClientRect(),{horizontal:G,pitch:Q,extent:X}=U(z);R!==G&&(j=null,R=G);let J=e?D:F+T/1e3*1.6,_=Math.floor(J/s.length),K=s.length+J-_*s.length,Z=s.length+D-_*s.length;t.querySelector(".wheel-track").style.transform="translate".concat(G?"X":"Y","(").concat(X/2-Q/2-K*Q,"px)");let tt=e||c<0||c>=.25?0:W(B(c/.035));if(h.style.setProperty("--tap",tt.toFixed(4)),f.forEach((t,a)=>{let{item:n,face:o}=t,r=a-K;o.style.transform=G?"scale(".concat(Math.max(.9,1-.035*Math.abs(r)),")"):"perspective(500px) rotateX(".concat(-(15*r),"deg) scale(").concat(Math.max(.65,1-.1*Math.abs(r)),")"),o.style.opacity=String(Math.max(.2,1-.22*Math.abs(r))),a===Z&&!e&&c>=0&&c<.37&&(o.style.opacity=String(.12+.88*W(B((c-.25)/.12))))}),null===j&&c>=0&&c<.25){let e=t.querySelector('[data-wheel="'.concat(Z,'"] .logo')).getBoundingClientRect();j=G?(e.top+e.height/2-$.top)/$.height:(e.left+e.width/2-$.left)/$.width}let te=X/2+(D-F-C/1e3*1.6)*Q-(G?0:10*Math.min(Math.max(c,0),.035)*1.6*Q),ta={x:$.left-V.left+(G?te:$.width*(null!=j?j:.25)),y:$.top-V.top+(G?$.height*(null!=j?j:.3):te)},tn={x:G?Math.max(Y.left-V.left+28,Math.min(ta.x,Y.right-V.left-28)):Y.left-V.left,y:G?Y.top-V.top:Math.max(Y.top-V.top+60,Math.min(ta.y,Y.bottom-V.top-60))},to=function(t,e,a,c){let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],l=1-.14*o(n(t/.035)),s=r?{x:a.x,y:a.y-.5*c}:{x:a.x-.5*c,y:a.y},i=e.x,d=e.y,h=o(n((t-.19)/.06));if(t<=.19){let a=o(n((t-.035)/.155));r?(i+=(s.x-e.x)*a,d+=(s.y-e.y)*a):(i+=(s.x-e.x)*a,d+=(s.y-e.y)*a+6*Math.sin(Math.PI*a))}else{let t=.8*c*h;i=s.x+(r?0:t),d=s.y+(r?t:0)}return{x:i,y:d,scaleX:l,scaleY:l,opacity:t>=0&&t<.25?1-h:0}}(c,ta,tn,p.offsetWidth,G),tc=(c-.22)/.08,tr=e||tc<=0||tc>=1?0:Math.pow(Math.sin(Math.PI*tc),2);h.style.setProperty("--impact",tr.toFixed(4)),h.style.setProperty("--acceptance",tr.toFixed(4)),h.style.setProperty("--intake",(.6*tr).toFixed(4)),h.style.setProperty("--entry-y","".concat(tn.y-(Y.top-V.top),"px")),h.style.setProperty("--entry-x","".concat(tn.x-(Y.left-V.left),"px")),p.style.transform="translate(".concat(to.x-p.offsetWidth/2,"px,").concat(to.y-p.offsetHeight/2,"px) scale(").concat(to.scaleX,",").concat(to.scaleY,")"),p.style.clipPath="none",p.style.opacity=String(e?0:to.opacity),p.querySelector("small").textContent=i(s[w]);let tl=e||c<0?"Trading history organized":c<.065?y?"Mapping CSV columns":m?"Preparing statement":"Preparing trading history":c<.25?m?"Importing trading history":"Syncing trading history":c<.32?m?"Trading history imported":"Trading history received":c<.56?"Generating journal metrics":c<.74?"Organizing charts and entries":"Trading history organized";tl!==L&&(t.querySelector("#phase").textContent=tl,L=tl)}function Y(){t.classList.toggle("static",O.matches)}function z(e){k=e,t.querySelectorAll("[data-view]").forEach(t=>t.setAttribute("aria-pressed",String(t.dataset.view===e))),t.querySelector("#mobile-view").value=e,t.querySelector(".current-view-name").textContent=c.find(t=>t[0]===e)[1],t.querySelector(".view-actions").innerHTML=({trades:"<span>â CSV</span><span>⥠Columns</span>",notebook:"<span>ï¼ New note</span>",progress:"<span>ï¼ Add routine</span>",prop:"<span>ï¼ Track account</span><span>â Add expense</span><span>â Track payout</span>"})[e]||"","daily"===e&&(t.querySelector(".current-view-name").textContent="Journal \xb7 2026-09-02"),t.querySelector(".dashboard").hidden="dashboard"!==e;let a=t.querySelector(".alternate-view");a.hidden="dashboard"===e,a.innerHTML=r(e,A),V()}t.querySelector(".view-nav").innerHTML=c.map(t=>{let[e,a,n]=t;return'<button type="button" data-view="'.concat(e,'" aria-pressed="').concat(e===k,'"><span aria-hidden="true">').concat(function(t){let e={"layout-dashboard":'<rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="4" rx="1"/><rect x="14" y="11" width="7" height="10" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/>',calendar:'<rect x="3" y="5" width="18" height="16" rx="2"/><path d="M16 3v4M8 3v4M3 11h18M8 15h2m4 0h2m-8 3h2m4 0h2"/>',"notebook-pen":'<path d="M12 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12M2 7h4M2 11h4M2 15h4M15 6l3 3M11 14l1-4 7-7 3 3-7 7z"/>',"list-ordered":'<path d="M9 6h12M9 12h12M9 18h12M3 4h1v4M2 8h4M2 11q4-1 3 1l-3 3h4M2 18h3l-2 2h2"/>',"chart-column":'<path d="M3 3v18h18M7 16v-5M12 16V7M17 16V4"/>',landmark:'<path d="M3 9h18L12 3zM5 11v7M10 11v7M14 11v7M19 11v7M3 21h18"/>',notebook:'<rect x="5" y="3" width="15" height="18" rx="2"/><path d="M3 7h4M3 12h4M3 17h4M10 8h6M10 12h6"/>',"list-checks":'<path d="m3 6 2 2 4-4M12 6h9M3 12l2 2 4-4M12 12h9M3 18l2 2 4-4M12 18h9"/>'};return'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'.concat(e[t]||e.notebook,"</svg>")}(n),"</span>").concat(a,"</button>")}).join(""),t.querySelector("#mobile-view").innerHTML=c.map(t=>{let[e,a]=t;return'<option value="'.concat(e,'">').concat(a,"</option>")}).join(""),t.querySelectorAll("[data-view]").forEach(t=>t.addEventListener("click",()=>
1z(t.dataset.view),{signal:a})),t.querySelector("#mobile-view").addEventListener("change",t=>z(t.target.value),{signal:a}),O.addEventListener("change",()=>{Y(),V(),Q()},{signal:a});let $=new IntersectionObserver(t=>{let[e]=t;E=e.isIntersecting,Q()},{threshold:.1});$.observe(h);let G=()=>!a.aborted&&!O.matches&&E&&!document.hidden;function Q(){cancelAnimationFrame(l),l=0,q=0,G()&&(l=requestAnimationFrame(X))}function X(t){if(l=0,!G())return;let e=q?Math.min(t-q,100):0;q=t,(T+=e)>=N&&(T%=N,F+=N/1e3*1.6,x=w,b=M,I()),V(),l=requestAnimationFrame(X)}document.addEventListener("visibilitychange",Q,{signal:a}),I(),Y(),V(),Q();let J=new ResizeObserver(()=>V());return J.observe(h),()=>{e.abort(),cancelAnimationFrame(l),$.disconnect(),J.disconnect(),t.classList.remove("static")}}}}]);
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.