From 5b30764fa8a201b3ed055a6b2fca2f6f67b5d4a3 Mon Sep 17 00:00:00 2001 From: Alex Newman Date: Fri, 3 Oct 2025 18:27:36 -0400 Subject: [PATCH] Release v3.9.10 Published from npm package build Source: https://github.com/thedotmack/claude-mem-source --- dist/claude-mem.min.js | 2 +- package.json | 2 +- src/ui/memory-stream/MemoryStream.jsx | 819 ----- src/ui/memory-stream/README.md | 101 - src/ui/memory-stream/claude-mem-logo.webp | Bin 80074 -> 0 bytes src/ui/memory-stream/components.json | 22 - .../dist/assets/index-5_3SV7cT.css | 1 - .../dist/assets/index-BjZoir4u.js | 88 - src/ui/memory-stream/dist/index.html | 13 - src/ui/memory-stream/index.css | 120 - src/ui/memory-stream/index.html | 12 - src/ui/memory-stream/index.js | 1 - src/ui/memory-stream/jsconfig.json | 8 - src/ui/memory-stream/layout.jsx | 604 ---- src/ui/memory-stream/main.jsx | 10 - src/ui/memory-stream/package-lock.json | 2707 ----------------- src/ui/memory-stream/package.json | 34 - src/ui/memory-stream/server.js | 232 -- .../src/components/ASCIIText.jsx | 570 ---- src/ui/memory-stream/src/components/Orb.jsx | 274 -- .../src/components/OverviewCard.jsx | 987 ------ src/ui/memory-stream/src/lib/utils.js | 6 - src/ui/memory-stream/vite.config.js | 19 - 23 files changed, 2 insertions(+), 6630 deletions(-) delete mode 100644 src/ui/memory-stream/MemoryStream.jsx delete mode 100644 src/ui/memory-stream/README.md delete mode 100644 src/ui/memory-stream/claude-mem-logo.webp delete mode 100644 src/ui/memory-stream/components.json delete mode 100644 src/ui/memory-stream/dist/assets/index-5_3SV7cT.css delete mode 100644 src/ui/memory-stream/dist/assets/index-BjZoir4u.js delete mode 100644 src/ui/memory-stream/dist/index.html delete mode 100644 src/ui/memory-stream/index.css delete mode 100644 src/ui/memory-stream/index.html delete mode 100644 src/ui/memory-stream/index.js delete mode 100644 src/ui/memory-stream/jsconfig.json delete mode 100644 src/ui/memory-stream/layout.jsx delete mode 100644 src/ui/memory-stream/main.jsx delete mode 100644 src/ui/memory-stream/package-lock.json delete mode 100644 src/ui/memory-stream/package.json delete mode 100644 src/ui/memory-stream/server.js delete mode 100644 src/ui/memory-stream/src/components/ASCIIText.jsx delete mode 100644 src/ui/memory-stream/src/components/Orb.jsx delete mode 100644 src/ui/memory-stream/src/components/OverviewCard.jsx delete mode 100644 src/ui/memory-stream/src/lib/utils.js delete mode 100644 src/ui/memory-stream/vite.config.js diff --git a/dist/claude-mem.min.js b/dist/claude-mem.min.js index 8751c40a..d1c72de7 100755 --- a/dist/claude-mem.min.js +++ b/dist/claude-mem.min.js @@ -277,7 +277,7 @@ Expecting one of '${Q.join("', '")}'`);let B=`${D}Help`;return this.on(B,(Y)=>{l `),D.exec(` CREATE INDEX IF NOT EXISTS idx_memories_title ON memories(title); CREATE INDEX IF NOT EXISTS idx_memories_concepts ON memories(concepts); - `),console.log("✅ Added hierarchical memory fields to memories table")},down:(D)=>{console.log("⚠️ Warning: SQLite ALTER TABLE DROP COLUMN not fully supported"),console.log("⚠️ To rollback, manually recreate the memories table")}},P5=[w5,T5]});var d9=i0(l9(),1),{program:PU,createCommand:SU,createArgument:bU,createOption:kU,CommanderError:vU,InvalidArgumentError:xU,InvalidOptionArgumentError:uU,Command:c9,Argument:yU,Option:fU,Help:gU}=d9.default;import{readFileSync as qY,existsSync as KY}from"fs";import{join as HY,dirname as UY}from"path";import{fileURLToPath as EY}from"url";var p9="claude-mem",n9="3.9.9",i9="Memory compression system for Claude Code - persist context across sessions",a9=p9,r9=n9,o9=i9;try{let D=EY(import.meta.url),F=UY(D),Q=HY(F,"..","..","package.json");if(KY(Q)){let B=JSON.parse(qY(Q,"utf-8"));a9=B.name||p9,r9=B.version||n9,o9=B.description||i9}}catch{}var G2=a9,s9=r9,t9=o9;import{readFileSync as E2,writeFileSync as pF,existsSync as TD,chmodSync as UC,mkdirSync as A2,copyFileSync as cF,statSync as EC,readdirSync as ZC}from"fs";import{join as LD,dirname as Z2}from"path";import{homedir as B7,platform as T4}from"os";import{execSync as dF}from"child_process";import{fileURLToPath as P4}from"url";var C0=i0(K1(),1),K3=i0(U1(),1);import{stdin as G3,stdout as q3}from"node:process";import*as IF from"node:readline";import B3 from"node:readline";import{Writable as NY}from"node:stream";function jY({onlyFirst:D=!1}={}){let F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(F,D?void 0:"g")}var RY=jY();function H3(D){if(typeof D!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(RY,"")}function U3(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}var E3={exports:{}};(function(D){var F={};D.exports=F,F.eastAsianWidth=function(B){var Y=B.charCodeAt(0),J=B.length==2?B.charCodeAt(1):0,X=Y;return 55296<=Y&&Y<=56319&&56320<=J&&J<=57343&&(Y&=1023,J&=1023,X=Y<<10|J,X+=65536),X==12288||65281<=X&&X<=65376||65504<=X&&X<=65510?"F":X==8361||65377<=X&&X<=65470||65474<=X&&X<=65479||65482<=X&&X<=65487||65490<=X&&X<=65495||65498<=X&&X<=65500||65512<=X&&X<=65518?"H":4352<=X&&X<=4447||4515<=X&&X<=4519||4602<=X&&X<=4607||9001<=X&&X<=9002||11904<=X&&X<=11929||11931<=X&&X<=12019||12032<=X&&X<=12245||12272<=X&&X<=12283||12289<=X&&X<=12350||12353<=X&&X<=12438||12441<=X&&X<=12543||12549<=X&&X<=12589||12593<=X&&X<=12686||12688<=X&&X<=12730||12736<=X&&X<=12771||12784<=X&&X<=12830||12832<=X&&X<=12871||12880<=X&&X<=13054||13056<=X&&X<=19903||19968<=X&&X<=42124||42128<=X&&X<=42182||43360<=X&&X<=43388||44032<=X&&X<=55203||55216<=X&&X<=55238||55243<=X&&X<=55291||63744<=X&&X<=64255||65040<=X&&X<=65049||65072<=X&&X<=65106||65108<=X&&X<=65126||65128<=X&&X<=65131||110592<=X&&X<=110593||127488<=X&&X<=127490||127504<=X&&X<=127546||127552<=X&&X<=127560||127568<=X&&X<=127569||131072<=X&&X<=194367||177984<=X&&X<=196605||196608<=X&&X<=262141?"W":32<=X&&X<=126||162<=X&&X<=163||165<=X&&X<=166||X==172||X==175||10214<=X&&X<=10221||10629<=X&&X<=10630?"Na":X==161||X==164||167<=X&&X<=168||X==170||173<=X&&X<=174||176<=X&&X<=180||182<=X&&X<=186||188<=X&&X<=191||X==198||X==208||215<=X&&X<=216||222<=X&&X<=225||X==230||232<=X&&X<=234||236<=X&&X<=237||X==240||242<=X&&X<=243||247<=X&&X<=250||X==252||X==254||X==257||X==273||X==275||X==283||294<=X&&X<=295||X==299||305<=X&&X<=307||X==312||319<=X&&X<=322||X==324||328<=X&&X<=331||X==333||338<=X&&X<=339||358<=X&&X<=359||X==363||X==462||X==464||X==466||X==468||X==470||X==472||X==474||X==476||X==593||X==609||X==708||X==711||713<=X&&X<=715||X==717||X==720||728<=X&&X<=731||X==733||X==735||768<=X&&X<=879||913<=X&&X<=929||931<=X&&X<=937||945<=X&&X<=961||963<=X&&X<=969||X==1025||1040<=X&&X<=1103||X==1105||X==8208||8211<=X&&X<=8214||8216<=X&&X<=8217||8220<=X&&X<=8221||8224<=X&&X<=8226||8228<=X&&X<=8231||X==8240||8242<=X&&X<=8243||X==8245||X==8251||X==8254||X==8308||X==8319||8321<=X&&X<=8324||X==8364||X==8451||X==8453||X==8457||X==8467||X==8470||8481<=X&&X<=8482||X==8486||X==8491||8531<=X&&X<=8532||8539<=X&&X<=8542||8544<=X&&X<=8555||8560<=X&&X<=8569||X==8585||8592<=X&&X<=8601||8632<=X&&X<=8633||X==8658||X==8660||X==8679||X==8704||8706<=X&&X<=8707||8711<=X&&X<=8712||X==8715||X==8719||X==8721||X==8725||X==8730||8733<=X&&X<=8736||X==8739||X==8741||8743<=X&&X<=8748||X==8750||8756<=X&&X<=8759||8764<=X&&X<=8765||X==8776||X==8780||X==8786||8800<=X&&X<=8801||8804<=X&&X<=8807||8810<=X&&X<=8811||8814<=X&&X<=8815||8834<=X&&X<=8835||8838<=X&&X<=8839||X==8853||X==8857||X==8869||X==8895||X==8978||9312<=X&&X<=9449||9451<=X&&X<=9547||9552<=X&&X<=9587||9600<=X&&X<=9615||9618<=X&&X<=9621||9632<=X&&X<=9633||9635<=X&&X<=9641||9650<=X&&X<=9651||9654<=X&&X<=9655||9660<=X&&X<=9661||9664<=X&&X<=9665||9670<=X&&X<=9672||X==9675||9678<=X&&X<=9681||9698<=X&&X<=9701||X==9711||9733<=X&&X<=9734||X==9737||9742<=X&&X<=9743||9748<=X&&X<=9749||X==9756||X==9758||X==9792||X==9794||9824<=X&&X<=9825||9827<=X&&X<=9829||9831<=X&&X<=9834||9836<=X&&X<=9837||X==9839||9886<=X&&X<=9887||9918<=X&&X<=9919||9924<=X&&X<=9933||9935<=X&&X<=9953||X==9955||9960<=X&&X<=9983||X==10045||X==10071||10102<=X&&X<=10111||11093<=X&&X<=11097||12872<=X&&X<=12879||57344<=X&&X<=63743||65024<=X&&X<=65039||X==65533||127232<=X&&X<=127242||127248<=X&&X<=127277||127280<=X&&X<=127337||127344<=X&&X<=127386||917760<=X&&X<=917999||983040<=X&&X<=1048573||1048576<=X&&X<=1114109?"A":"N"},F.characterLength=function(B){var Y=this.eastAsianWidth(B);return Y=="F"||Y=="W"||Y=="A"?2:1};function Q(B){return B.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}F.length=function(B){for(var Y=Q(B),J=0,X=0;X=Y-(q==2?1:0))if(C+q<=J)X+=G;else break;C+=q}return X}})(E3);var _Y=E3.exports,OY=U3(_Y),IY=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},wY=U3(IY);function s2(D,F={}){if(typeof D!="string"||D.length===0||(F={ambiguousIsNarrow:!0,...F},D=H3(D),D.length===0))return 0;D=D.replace(wY()," ");let Q=F.ambiguousIsNarrow?1:2,B=0;for(let Y of D){let J=Y.codePointAt(0);if(J<=31||J>=127&&J<=159||J>=768&&J<=879)continue;switch(OY.eastAsianWidth(Y)){case"F":case"W":B+=2;break;case"A":B+=Q;break;default:B+=1}}return B}var E1=10,Q3=(D=0)=>(F)=>`\x1B[${F+D}m`,X3=(D=0)=>(F)=>`\x1B[${38+D};5;${F}m`,Y3=(D=0)=>(F,Q,B)=>`\x1B[${38+D};2;${F};${Q};${B}m`,xD={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(xD.modifier);var TY=Object.keys(xD.color),PY=Object.keys(xD.bgColor);[...TY];function SY(){let D=new Map;for(let[F,Q]of Object.entries(xD)){for(let[B,Y]of Object.entries(Q))xD[B]={open:`\x1B[${Y[0]}m`,close:`\x1B[${Y[1]}m`},Q[B]=xD[B],D.set(Y[0],Y[1]);Object.defineProperty(xD,F,{value:Q,enumerable:!1})}return Object.defineProperty(xD,"codes",{value:D,enumerable:!1}),xD.color.close="\x1B[39m",xD.bgColor.close="\x1B[49m",xD.color.ansi=Q3(),xD.color.ansi256=X3(),xD.color.ansi16m=Y3(),xD.bgColor.ansi=Q3(E1),xD.bgColor.ansi256=X3(E1),xD.bgColor.ansi16m=Y3(E1),Object.defineProperties(xD,{rgbToAnsi256:{value:(F,Q,B)=>F===Q&&Q===B?F<8?16:F>248?231:Math.round((F-8)/247*24)+232:16+36*Math.round(F/255*5)+6*Math.round(Q/255*5)+Math.round(B/255*5),enumerable:!1},hexToRgb:{value:(F)=>{let Q=/[a-f\d]{6}|[a-f\d]{3}/i.exec(F.toString(16));if(!Q)return[0,0,0];let[B]=Q;B.length===3&&(B=[...B].map((J)=>J+J).join(""));let Y=Number.parseInt(B,16);return[Y>>16&255,Y>>8&255,Y&255]},enumerable:!1},hexToAnsi256:{value:(F)=>xD.rgbToAnsi256(...xD.hexToRgb(F)),enumerable:!1},ansi256ToAnsi:{value:(F)=>{if(F<8)return 30+F;if(F<16)return 90+(F-8);let Q,B,Y;if(F>=232)Q=((F-232)*10+8)/255,B=Q,Y=Q;else{F-=16;let C=F%36;Q=Math.floor(F/36)/5,B=Math.floor(C/6)/5,Y=C%6/5}let J=Math.max(Q,B,Y)*2;if(J===0)return 30;let X=30+(Math.round(Y)<<2|Math.round(B)<<1|Math.round(Q));return J===2&&(X+=60),X},enumerable:!1},rgbToAnsi:{value:(F,Q,B)=>xD.ansi256ToAnsi(xD.rgbToAnsi256(F,Q,B)),enumerable:!1},hexToAnsi:{value:(F)=>xD.ansi256ToAnsi(xD.hexToAnsi256(F)),enumerable:!1}}),xD}var bY=SY(),a8=new Set(["\x1B","›"]),kY=39,V1="\x07",Z3="[",vY="]",A3="m",L1=`${vY}8;;`,J3=(D)=>`${a8.values().next().value}${Z3}${D}${A3}`,C3=(D)=>`${a8.values().next().value}${L1}${D}${V1}`,xY=(D)=>D.split(" ").map((F)=>s2(F)),Z1=(D,F,Q)=>{let B=[...F],Y=!1,J=!1,X=s2(H3(D[D.length-1]));for(let[C,W]of B.entries()){let z=s2(W);if(X+z<=Q?D[D.length-1]+=W:(D.push(W),X=0),a8.has(W)&&(Y=!0,J=B.slice(C+1).join("").startsWith(L1)),Y){J?W===V1&&(Y=!1,J=!1):W===A3&&(Y=!1);continue}X+=z,X===Q&&C0&&D.length>1&&(D[D.length-2]+=D.pop())},uY=(D)=>{let F=D.split(" "),Q=F.length;for(;Q>0&&!(s2(F[Q-1])>0);)Q--;return Q===F.length?D:F.slice(0,Q).join(" ")+F.slice(Q).join("")},yY=(D,F,Q={})=>{if(Q.trim!==!1&&D.trim()==="")return"";let B="",Y,J,X=xY(D),C=[""];for(let[z,G]of D.split(" ").entries()){Q.trim!==!1&&(C[C.length-1]=C[C.length-1].trimStart());let q=s2(C[C.length-1]);if(z!==0&&(q>=F&&(Q.wordWrap===!1||Q.trim===!1)&&(C.push(""),q=0),(q>0||Q.trim===!1)&&(C[C.length-1]+=" ",q++)),Q.hard&&X[z]>F){let E=F-q,U=1+Math.floor((X[z]-E-1)/F);Math.floor((X[z]-1)/F)F&&q>0&&X[z]>0){if(Q.wordWrap===!1&&qF&&Q.wordWrap===!1){Z1(C,G,F);continue}C[C.length-1]+=G}Q.trim!==!1&&(C=C.map((z)=>uY(z)));let W=[...C.join(` + `),console.log("✅ Added hierarchical memory fields to memories table")},down:(D)=>{console.log("⚠️ Warning: SQLite ALTER TABLE DROP COLUMN not fully supported"),console.log("⚠️ To rollback, manually recreate the memories table")}},P5=[w5,T5]});var d9=i0(l9(),1),{program:PU,createCommand:SU,createArgument:bU,createOption:kU,CommanderError:vU,InvalidArgumentError:xU,InvalidOptionArgumentError:uU,Command:c9,Argument:yU,Option:fU,Help:gU}=d9.default;import{readFileSync as qY,existsSync as KY}from"fs";import{join as HY,dirname as UY}from"path";import{fileURLToPath as EY}from"url";var p9="claude-mem",n9="3.9.10",i9="Memory compression system for Claude Code - persist context across sessions",a9=p9,r9=n9,o9=i9;try{let D=EY(import.meta.url),F=UY(D),Q=HY(F,"..","..","package.json");if(KY(Q)){let B=JSON.parse(qY(Q,"utf-8"));a9=B.name||p9,r9=B.version||n9,o9=B.description||i9}}catch{}var G2=a9,s9=r9,t9=o9;import{readFileSync as E2,writeFileSync as pF,existsSync as TD,chmodSync as UC,mkdirSync as A2,copyFileSync as cF,statSync as EC,readdirSync as ZC}from"fs";import{join as LD,dirname as Z2}from"path";import{homedir as B7,platform as T4}from"os";import{execSync as dF}from"child_process";import{fileURLToPath as P4}from"url";var C0=i0(K1(),1),K3=i0(U1(),1);import{stdin as G3,stdout as q3}from"node:process";import*as IF from"node:readline";import B3 from"node:readline";import{Writable as NY}from"node:stream";function jY({onlyFirst:D=!1}={}){let F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(F,D?void 0:"g")}var RY=jY();function H3(D){if(typeof D!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof D}\``);return D.replace(RY,"")}function U3(D){return D&&D.__esModule&&Object.prototype.hasOwnProperty.call(D,"default")?D.default:D}var E3={exports:{}};(function(D){var F={};D.exports=F,F.eastAsianWidth=function(B){var Y=B.charCodeAt(0),J=B.length==2?B.charCodeAt(1):0,X=Y;return 55296<=Y&&Y<=56319&&56320<=J&&J<=57343&&(Y&=1023,J&=1023,X=Y<<10|J,X+=65536),X==12288||65281<=X&&X<=65376||65504<=X&&X<=65510?"F":X==8361||65377<=X&&X<=65470||65474<=X&&X<=65479||65482<=X&&X<=65487||65490<=X&&X<=65495||65498<=X&&X<=65500||65512<=X&&X<=65518?"H":4352<=X&&X<=4447||4515<=X&&X<=4519||4602<=X&&X<=4607||9001<=X&&X<=9002||11904<=X&&X<=11929||11931<=X&&X<=12019||12032<=X&&X<=12245||12272<=X&&X<=12283||12289<=X&&X<=12350||12353<=X&&X<=12438||12441<=X&&X<=12543||12549<=X&&X<=12589||12593<=X&&X<=12686||12688<=X&&X<=12730||12736<=X&&X<=12771||12784<=X&&X<=12830||12832<=X&&X<=12871||12880<=X&&X<=13054||13056<=X&&X<=19903||19968<=X&&X<=42124||42128<=X&&X<=42182||43360<=X&&X<=43388||44032<=X&&X<=55203||55216<=X&&X<=55238||55243<=X&&X<=55291||63744<=X&&X<=64255||65040<=X&&X<=65049||65072<=X&&X<=65106||65108<=X&&X<=65126||65128<=X&&X<=65131||110592<=X&&X<=110593||127488<=X&&X<=127490||127504<=X&&X<=127546||127552<=X&&X<=127560||127568<=X&&X<=127569||131072<=X&&X<=194367||177984<=X&&X<=196605||196608<=X&&X<=262141?"W":32<=X&&X<=126||162<=X&&X<=163||165<=X&&X<=166||X==172||X==175||10214<=X&&X<=10221||10629<=X&&X<=10630?"Na":X==161||X==164||167<=X&&X<=168||X==170||173<=X&&X<=174||176<=X&&X<=180||182<=X&&X<=186||188<=X&&X<=191||X==198||X==208||215<=X&&X<=216||222<=X&&X<=225||X==230||232<=X&&X<=234||236<=X&&X<=237||X==240||242<=X&&X<=243||247<=X&&X<=250||X==252||X==254||X==257||X==273||X==275||X==283||294<=X&&X<=295||X==299||305<=X&&X<=307||X==312||319<=X&&X<=322||X==324||328<=X&&X<=331||X==333||338<=X&&X<=339||358<=X&&X<=359||X==363||X==462||X==464||X==466||X==468||X==470||X==472||X==474||X==476||X==593||X==609||X==708||X==711||713<=X&&X<=715||X==717||X==720||728<=X&&X<=731||X==733||X==735||768<=X&&X<=879||913<=X&&X<=929||931<=X&&X<=937||945<=X&&X<=961||963<=X&&X<=969||X==1025||1040<=X&&X<=1103||X==1105||X==8208||8211<=X&&X<=8214||8216<=X&&X<=8217||8220<=X&&X<=8221||8224<=X&&X<=8226||8228<=X&&X<=8231||X==8240||8242<=X&&X<=8243||X==8245||X==8251||X==8254||X==8308||X==8319||8321<=X&&X<=8324||X==8364||X==8451||X==8453||X==8457||X==8467||X==8470||8481<=X&&X<=8482||X==8486||X==8491||8531<=X&&X<=8532||8539<=X&&X<=8542||8544<=X&&X<=8555||8560<=X&&X<=8569||X==8585||8592<=X&&X<=8601||8632<=X&&X<=8633||X==8658||X==8660||X==8679||X==8704||8706<=X&&X<=8707||8711<=X&&X<=8712||X==8715||X==8719||X==8721||X==8725||X==8730||8733<=X&&X<=8736||X==8739||X==8741||8743<=X&&X<=8748||X==8750||8756<=X&&X<=8759||8764<=X&&X<=8765||X==8776||X==8780||X==8786||8800<=X&&X<=8801||8804<=X&&X<=8807||8810<=X&&X<=8811||8814<=X&&X<=8815||8834<=X&&X<=8835||8838<=X&&X<=8839||X==8853||X==8857||X==8869||X==8895||X==8978||9312<=X&&X<=9449||9451<=X&&X<=9547||9552<=X&&X<=9587||9600<=X&&X<=9615||9618<=X&&X<=9621||9632<=X&&X<=9633||9635<=X&&X<=9641||9650<=X&&X<=9651||9654<=X&&X<=9655||9660<=X&&X<=9661||9664<=X&&X<=9665||9670<=X&&X<=9672||X==9675||9678<=X&&X<=9681||9698<=X&&X<=9701||X==9711||9733<=X&&X<=9734||X==9737||9742<=X&&X<=9743||9748<=X&&X<=9749||X==9756||X==9758||X==9792||X==9794||9824<=X&&X<=9825||9827<=X&&X<=9829||9831<=X&&X<=9834||9836<=X&&X<=9837||X==9839||9886<=X&&X<=9887||9918<=X&&X<=9919||9924<=X&&X<=9933||9935<=X&&X<=9953||X==9955||9960<=X&&X<=9983||X==10045||X==10071||10102<=X&&X<=10111||11093<=X&&X<=11097||12872<=X&&X<=12879||57344<=X&&X<=63743||65024<=X&&X<=65039||X==65533||127232<=X&&X<=127242||127248<=X&&X<=127277||127280<=X&&X<=127337||127344<=X&&X<=127386||917760<=X&&X<=917999||983040<=X&&X<=1048573||1048576<=X&&X<=1114109?"A":"N"},F.characterLength=function(B){var Y=this.eastAsianWidth(B);return Y=="F"||Y=="W"||Y=="A"?2:1};function Q(B){return B.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}F.length=function(B){for(var Y=Q(B),J=0,X=0;X=Y-(q==2?1:0))if(C+q<=J)X+=G;else break;C+=q}return X}})(E3);var _Y=E3.exports,OY=U3(_Y),IY=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},wY=U3(IY);function s2(D,F={}){if(typeof D!="string"||D.length===0||(F={ambiguousIsNarrow:!0,...F},D=H3(D),D.length===0))return 0;D=D.replace(wY()," ");let Q=F.ambiguousIsNarrow?1:2,B=0;for(let Y of D){let J=Y.codePointAt(0);if(J<=31||J>=127&&J<=159||J>=768&&J<=879)continue;switch(OY.eastAsianWidth(Y)){case"F":case"W":B+=2;break;case"A":B+=Q;break;default:B+=1}}return B}var E1=10,Q3=(D=0)=>(F)=>`\x1B[${F+D}m`,X3=(D=0)=>(F)=>`\x1B[${38+D};5;${F}m`,Y3=(D=0)=>(F,Q,B)=>`\x1B[${38+D};2;${F};${Q};${B}m`,xD={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(xD.modifier);var TY=Object.keys(xD.color),PY=Object.keys(xD.bgColor);[...TY];function SY(){let D=new Map;for(let[F,Q]of Object.entries(xD)){for(let[B,Y]of Object.entries(Q))xD[B]={open:`\x1B[${Y[0]}m`,close:`\x1B[${Y[1]}m`},Q[B]=xD[B],D.set(Y[0],Y[1]);Object.defineProperty(xD,F,{value:Q,enumerable:!1})}return Object.defineProperty(xD,"codes",{value:D,enumerable:!1}),xD.color.close="\x1B[39m",xD.bgColor.close="\x1B[49m",xD.color.ansi=Q3(),xD.color.ansi256=X3(),xD.color.ansi16m=Y3(),xD.bgColor.ansi=Q3(E1),xD.bgColor.ansi256=X3(E1),xD.bgColor.ansi16m=Y3(E1),Object.defineProperties(xD,{rgbToAnsi256:{value:(F,Q,B)=>F===Q&&Q===B?F<8?16:F>248?231:Math.round((F-8)/247*24)+232:16+36*Math.round(F/255*5)+6*Math.round(Q/255*5)+Math.round(B/255*5),enumerable:!1},hexToRgb:{value:(F)=>{let Q=/[a-f\d]{6}|[a-f\d]{3}/i.exec(F.toString(16));if(!Q)return[0,0,0];let[B]=Q;B.length===3&&(B=[...B].map((J)=>J+J).join(""));let Y=Number.parseInt(B,16);return[Y>>16&255,Y>>8&255,Y&255]},enumerable:!1},hexToAnsi256:{value:(F)=>xD.rgbToAnsi256(...xD.hexToRgb(F)),enumerable:!1},ansi256ToAnsi:{value:(F)=>{if(F<8)return 30+F;if(F<16)return 90+(F-8);let Q,B,Y;if(F>=232)Q=((F-232)*10+8)/255,B=Q,Y=Q;else{F-=16;let C=F%36;Q=Math.floor(F/36)/5,B=Math.floor(C/6)/5,Y=C%6/5}let J=Math.max(Q,B,Y)*2;if(J===0)return 30;let X=30+(Math.round(Y)<<2|Math.round(B)<<1|Math.round(Q));return J===2&&(X+=60),X},enumerable:!1},rgbToAnsi:{value:(F,Q,B)=>xD.ansi256ToAnsi(xD.rgbToAnsi256(F,Q,B)),enumerable:!1},hexToAnsi:{value:(F)=>xD.ansi256ToAnsi(xD.hexToAnsi256(F)),enumerable:!1}}),xD}var bY=SY(),a8=new Set(["\x1B","›"]),kY=39,V1="\x07",Z3="[",vY="]",A3="m",L1=`${vY}8;;`,J3=(D)=>`${a8.values().next().value}${Z3}${D}${A3}`,C3=(D)=>`${a8.values().next().value}${L1}${D}${V1}`,xY=(D)=>D.split(" ").map((F)=>s2(F)),Z1=(D,F,Q)=>{let B=[...F],Y=!1,J=!1,X=s2(H3(D[D.length-1]));for(let[C,W]of B.entries()){let z=s2(W);if(X+z<=Q?D[D.length-1]+=W:(D.push(W),X=0),a8.has(W)&&(Y=!0,J=B.slice(C+1).join("").startsWith(L1)),Y){J?W===V1&&(Y=!1,J=!1):W===A3&&(Y=!1);continue}X+=z,X===Q&&C0&&D.length>1&&(D[D.length-2]+=D.pop())},uY=(D)=>{let F=D.split(" "),Q=F.length;for(;Q>0&&!(s2(F[Q-1])>0);)Q--;return Q===F.length?D:F.slice(0,Q).join(" ")+F.slice(Q).join("")},yY=(D,F,Q={})=>{if(Q.trim!==!1&&D.trim()==="")return"";let B="",Y,J,X=xY(D),C=[""];for(let[z,G]of D.split(" ").entries()){Q.trim!==!1&&(C[C.length-1]=C[C.length-1].trimStart());let q=s2(C[C.length-1]);if(z!==0&&(q>=F&&(Q.wordWrap===!1||Q.trim===!1)&&(C.push(""),q=0),(q>0||Q.trim===!1)&&(C[C.length-1]+=" ",q++)),Q.hard&&X[z]>F){let E=F-q,U=1+Math.floor((X[z]-E-1)/F);Math.floor((X[z]-1)/F)F&&q>0&&X[z]>0){if(Q.wordWrap===!1&&qF&&Q.wordWrap===!1){Z1(C,G,F);continue}C[C.length-1]+=G}Q.trim!==!1&&(C=C.map((z)=>uY(z)));let W=[...C.join(` `)];for(let[z,G]of W.entries()){if(B+=G,a8.has(G)){let{groups:E}=new RegExp(`(?:\\${Z3}(?\\d+)m|\\${L1}(?.*)${V1})`).exec(W.slice(z).join(""))||{groups:{}};if(E.code!==void 0){let U=Number.parseFloat(E.code);Y=U===kY?void 0:U}else E.uri!==void 0&&(J=E.uri.length===0?void 0:E.uri)}let q=bY.codes.get(Number(Y));W[z+1]===` `?(J&&(B+=C3("")),Y&&q&&(B+=J3(q))):G===` `&&(Y&&q&&(B+=J3(Y)),J&&(B+=C3(J)))}return B};function W3(D,F,Q){return String(D).normalize().replace(/\r\n/g,` diff --git a/package.json b/package.json index 76205d1e..0a0e2119 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claude-mem", - "version": "3.9.9", + "version": "3.9.10", "description": "Memory compression system for Claude Code - persist context across sessions", "keywords": [ "claude", diff --git a/src/ui/memory-stream/MemoryStream.jsx b/src/ui/memory-stream/MemoryStream.jsx deleted file mode 100644 index 4b034df3..00000000 --- a/src/ui/memory-stream/MemoryStream.jsx +++ /dev/null @@ -1,819 +0,0 @@ -import { useState, useEffect, useRef } from 'react'; -import { - Dialog, - DialogBackdrop, - DialogPanel, - TransitionChild, -} from '@headlessui/react'; -import { - Bars3Icon, - MagnifyingGlassIcon, - XMarkIcon, -} from '@heroicons/react/20/solid'; -import OverviewCard from './src/components/OverviewCard'; - -function classNames(...classes) { - return classes.filter(Boolean).join(' '); -} - -export default function MemoryStream() { - const [sidebarOpen, setSidebarOpen] = useState(false); - const [overviewsOpen, setOverviewsOpen] = useState(false); - const [memories, setMemories] = useState([]); - const [overviews, setOverviews] = useState([]); - const [currentIndex, setCurrentIndex] = useState(0); - const [status, setStatus] = useState('connecting'); - const [connected, setConnected] = useState(false); - const [selectedProject, setSelectedProject] = useState('all'); - const [selectedTag, setSelectedTag] = useState(null); - const [initialLoadComplete, setInitialLoadComplete] = useState(false); - const [isProcessing, setIsProcessing] = useState(false); - const [isAwaitingOverview, setIsAwaitingOverview] = useState(false); - const [debugOverviewCard, setDebugOverviewCard] = useState(false); - const eventSourceRef = useRef(null); - - let filteredMemories = selectedProject === 'all' - ? memories - : memories.filter(m => m.project === selectedProject); - - if (selectedTag) { - filteredMemories = filteredMemories.filter(m => m.concepts?.includes(selectedTag)); - } - - const filteredOverviews = selectedProject === 'all' - ? overviews - : overviews.filter(o => o.project === selectedProject); - - const existingCount = filteredMemories.filter(m => !m.isNew).length; - const newCount = filteredMemories.filter(m => m.isNew).length; - - const stats = { - total: filteredMemories.length, - new: newCount, - existing: existingCount, - sessions: new Set(filteredMemories.map(m => m.session_id)).size, - projects: new Set(memories.map(m => m.project)).size - }; - - const projects = ['all', ...new Set(memories.map(m => m.project).filter(Boolean))]; - - useEffect(() => { - setStatus('connecting'); - const eventSource = new EventSource('http://localhost:3001/stream'); - eventSourceRef.current = eventSource; - - eventSource.onopen = () => { - setStatus('connected'); - setConnected(true); - }; - - eventSource.onmessage = (event) => { - const data = JSON.parse(event.data); - - if (data.type === 'initial_load') { - const existingMemories = data.memories.map(m => ({ ...m, isNew: false })); - setMemories(existingMemories); - const existingOverviews = data.overviews.map(o => ({ ...o, isNew: false })); - setOverviews(existingOverviews); - setInitialLoadComplete(true); - setCurrentIndex(0); - } else if (data.type === 'new_memories') { - const newMemories = data.memories.map(m => ({ ...m, isNew: true })); - setMemories(prev => [...newMemories, ...prev]); - setCurrentIndex(0); - } else if (data.type === 'new_overviews') { - const newOverviews = data.overviews.map(o => ({ ...o, isNew: true })); - // Remove placeholders for the same projects as the incoming real overviews - const incomingProjects = new Set(newOverviews.map(o => o.project)); - setOverviews(prev => { - const withoutPlaceholders = prev.filter(o => - !o.isPlaceholder || !incomingProjects.has(o.project) - ); - return [...newOverviews, ...withoutPlaceholders]; - }); - setIsAwaitingOverview(false); - } else if (data.type === 'session_start') { - // Only process for current project (or 'all') - if (selectedProject === 'all' || data.project === selectedProject) { - setIsProcessing(true); - setIsAwaitingOverview(true); - - // Create placeholder overview card - const placeholderOverview = { - id: `placeholder-${Date.now()}`, - project: data.project, - content: '⏳ Session in progress...', - created_at: new Date().toISOString(), - session_id: null, - isNew: true, - isPlaceholder: true - }; - setOverviews(prev => [placeholderOverview, ...prev]); - } - } else if (data.type === 'session_end') { - // Only process for current project (or 'all') - if (selectedProject === 'all' || data.project === selectedProject) { - setIsProcessing(false); - setIsAwaitingOverview(false); - } - } - }; - - eventSource.onerror = () => { - setStatus('reconnecting'); - setConnected(false); - eventSource.close(); - setTimeout(() => window.location.reload(), 2000); - }; - - return () => eventSource.close(); - }, []); - - useEffect(() => { - const handleKeyDown = (e) => { - if (e.key === 'ArrowLeft') { - e.preventDefault(); - setCurrentIndex(i => (i - 1 + filteredMemories.length) % filteredMemories.length); - } else if (e.key === 'ArrowRight') { - e.preventDefault(); - setCurrentIndex(i => (i + 1) % filteredMemories.length); - } - }; - - window.addEventListener('keydown', handleKeyDown); - return () => window.removeEventListener('keydown', handleKeyDown); - }, [filteredMemories.length]); - - const formatTimestamp = (timestamp) => { - const date = new Date(timestamp); - const diff = Date.now() - date; - const seconds = Math.floor(diff / 1000); - const minutes = Math.floor(seconds / 60); - const hours = Math.floor(minutes / 60); - - if (seconds < 60) return `${seconds}s ago`; - if (minutes < 60) return `${minutes}m ago`; - if (hours < 24) return `${hours}h ago`; - return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' }); - }; - - const memory = filteredMemories[currentIndex] || {}; - - // Extract unique tags from all memories - const allTags = [...new Set(memories.flatMap(m => m.concepts || []))]; - const tagCounts = allTags.reduce((acc, tag) => { - acc[tag] = memories.filter(m => m.concepts?.includes(tag)).length; - return acc; - }, {}); - const sortedTags = allTags.sort((a, b) => tagCounts[b] - tagCounts[a]); - - return ( - <> -
- {/* Background Effects */} -
-
-
- -
-
-
-
-
- - {/* Mobile sidebar */} - - - -
- - -
- -
-
- -
-
- claude-mem -
- -
-
-
-
- - {/* Desktop sidebar */} -
-
-
- claude-mem -
- -
-
- -
- {/* Fixed search header */} -
- - -
-
- -
- -
- {connected && ( -
-
- LIVE -
- )} - - -
- - -
- -
- {/* Activity Indicator Bar */} -
- - {/* Debug Overview Card Mode */} - {debugOverviewCard && ( - - )} - - {/* Normal Memory Stream View */} - {!debugOverviewCard && ( -
- {!connected && ( -
-
-
-
-
-
-
-
📡
-
-

- {status === 'connecting' ? 'Connecting to Memory Stream' : 'Reconnecting...'} -

-

~/.claude-mem/claude-mem.db

-
-
-
-
- )} - - {connected && filteredMemories.length === 0 && ( -
-
-
-
💭
-
-

No Memories Found

-

- {selectedProject === 'all' - ? 'No memories with titles in database' - : `No memories for project: ${selectedProject}`} -

-
- )} - - {filteredMemories.length > 0 && ( -
-
- - - - -
-
-
-
-
- {currentIndex + 1} / {filteredMemories.length} -
-
- - -
-
- )} - - {filteredMemories.length > 0 && ( -
-
-
- -
-
-
- - #{memory.id} - - - {memory.project} - - {memory.origin && ( - - {memory.origin} - - )} - - {formatTimestamp(memory.created_at)} - -
- -

- {memory.title} -

- - {memory.subtitle && ( -

- {memory.subtitle} -

- )} -
- - {memory.facts?.length > 0 && ( -
-

- - FACTS EXTRACTED -

-
- {memory.facts.map((fact, i) => ( -
- - {fact} -
- ))} -
-
- )} - - {memory.concepts?.length > 0 && ( -
-

- - CONCEPTS -

-
- {memory.concepts.map((concept, i) => ( - - {concept} - - ))} -
-
- )} - - {memory.files_touched?.length > 0 && ( -
-

- - FILES TOUCHED -

-
- {memory.files_touched.map((file, i) => ( -
- 📄 - {file} -
- ))} -
-
- )} - -
-
- session: {memory.session_id?.substring(0, 8)}...{memory.session_id?.slice(-4)} -
-
-
-
- -
-

← → arrow keys to navigate

-
-
- )} -
- )} -
- - {/* Mobile overviews drawer */} - - - -
- - -
- -
-
- -
-
-

Session Overviews

- {filteredOverviews.length} -
-
    - {filteredOverviews.length === 0 && ( -
  • -
    -
    -
    📋
    -
    -

    No overviews yet

    -
  • - )} - - {filteredOverviews.map((overview) => ( -
  • -
    -
    -
    - - #{overview.id} - - {overview.isNew && ( - - NEW - - )} -
    -
    - {overview.project} -
    -
    -
    - {formatTimestamp(overview.created_at)} -
    -
    - - {overview.promptTitle && ( -
    -

    - {overview.promptTitle} -

    - {overview.promptSubtitle && ( -

    - {overview.promptSubtitle} -

    - )} -
    - )} - -

    - {overview.content} -

    - -
    -
    - session: {overview.session_id?.substring(0, 8)}...{overview.session_id?.slice(-4)} -
    -
    -
  • - ))} -
-
-
-
-
- - {/* Desktop overviews sidebar */} - -
-
- - - - ); -} diff --git a/src/ui/memory-stream/README.md b/src/ui/memory-stream/README.md deleted file mode 100644 index 14eb2856..00000000 --- a/src/ui/memory-stream/README.md +++ /dev/null @@ -1,101 +0,0 @@ -# Memory Stream - Live Memory Viewer - -A real-time slideshow viewer for claude-mem memories with SSE (Server-Sent Events) support. - -## Features - -- 📡 **Live streaming** - Automatically displays new memories as they're created -- 🎬 **Auto-slideshow** - Cycles through memories every 5 seconds -- ⏸️ **Pause/Resume** - Space bar or button controls -- ⌨️ **Keyboard navigation** - Arrow keys to navigate -- 🎨 **Beautiful UI** - Cyberpunk-themed neural network aesthetic - -## Setup - -### 1. Start the SSE server - -```bash -node src/ui/memory-stream/server.js -# or use the package script: -npm run memory-stream:server -``` - -This will: -- Watch `~/.claude-mem/claude-mem.db-wal` for changes -- Serve SSE events on `http://localhost:3001/stream` -- Automatically detect and broadcast new memories - -### 2. Start your React dev server - -```bash -# In your React app directory -npm run dev -# or -bun dev -``` - -### 3. Open the viewer - -Navigate to your React app (usually `http://localhost:5173`) - -## Usage - -### Live Mode (Recommended) - -1. Click **"CONNECT LIVE STREAM"** -2. Server must be running (`node memory-stream-server.js`) -3. New memories appear automatically as they're created -4. Perfect for real-time monitoring during Claude Code sessions - -### Presentation Mode (Alternative) - -1. Click **"START PRESENTATION"** -2. Select your `~/.claude-mem/claude-mem.db` file -3. Static slideshow of existing memories -4. No server required - -## Controls - -- **Space** - Pause/Resume slideshow -- **←** - Previous memory -- **→** - Next memory -- **Click buttons** - Same as keyboard controls - -## How It Works - -### SSE Server -- Uses `better-sqlite3` with WAL mode (already enabled in claude-mem) -- Watches the `-wal` file for changes using `fs.watch()` -- Queries for new memories when WAL changes detected -- Broadcasts to all connected clients via Server-Sent Events - -### React Client -- Connects to SSE endpoint via `EventSource` -- Auto-reconnects on connection loss -- Appends new memories to the slideshow in real-time -- No polling, pure event-driven updates - -## Technical Details - -**Database**: SQLite with WAL (Write-Ahead Logging) mode -**Change Detection**: `fs.watch()` on `claude-mem.db-wal` -**Transport**: Server-Sent Events (SSE) -**Auto-reconnect**: 2-second retry on connection loss -**CORS**: Enabled for local development - -## Troubleshooting - -**"Connection lost"** -- Ensure server is running: `node src/ui/memory-stream/server.js` -- Check port 3001 is available -- Look for server console output - -**No memories showing** -- Verify memories exist with `title` field -- Check database path: `~/.claude-mem/claude-mem.db` -- Try "START PRESENTATION" mode to verify database access - -**WAL file not found** -- WAL mode auto-enabled by claude-mem -- File created automatically on first write -- Check database exists at expected path diff --git a/src/ui/memory-stream/claude-mem-logo.webp b/src/ui/memory-stream/claude-mem-logo.webp deleted file mode 100644 index 94f15d72bf3988ddbec4917b0cb9f37dd0cfb408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80074 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 aD!C`u^%74hV$x4f=Tv&>|8Ly@!2bZJ1TEtL diff --git a/src/ui/memory-stream/components.json b/src/ui/memory-stream/components.json deleted file mode 100644 index 7c7adbfd..00000000 --- a/src/ui/memory-stream/components.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": false, - "tsx": false, - "tailwind": { - "config": "", - "css": "index.css", - "baseColor": "neutral", - "cssVariables": true, - "prefix": "" - }, - "iconLibrary": "lucide", - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - }, - "registries": {} -} diff --git a/src/ui/memory-stream/dist/assets/index-5_3SV7cT.css b/src/ui/memory-stream/dist/assets/index-5_3SV7cT.css deleted file mode 100644 index bfe18684..00000000 --- a/src/ui/memory-stream/dist/assets/index-5_3SV7cT.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--spacing:.25rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.-inset-1{inset:calc(var(--spacing)*-1)}.-inset-4{inset:calc(var(--spacing)*-4)}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.z-10{z-index:10}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.ml-auto{margin-left:auto}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-blue-400\/30{border-color:#54a2ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-400\/30{border-color:color-mix(in oklab,var(--color-blue-400)30%,transparent)}}.border-emerald-400\/30{border-color:#00d2944d}@supports (color:color-mix(in lab,red,red)){.border-emerald-400\/30{border-color:color-mix(in oklab,var(--color-emerald-400)30%,transparent)}}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-800{border-color:var(--color-gray-800)}.border-gray-800\/50{border-color:#1e293980}@supports (color:color-mix(in lab,red,red)){.border-gray-800\/50{border-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.border-purple-400\/30{border-color:#c07eff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-400\/30{border-color:color-mix(in oklab,var(--color-purple-400)30%,transparent)}}.border-purple-400\/40{border-color:#c07eff66}@supports (color:color-mix(in lab,red,red)){.border-purple-400\/40{border-color:color-mix(in oklab,var(--color-purple-400)40%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.bg-blue-500\/50{background-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/50{background-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500)10%,transparent)}}.bg-emerald-500\/50{background-color:#00bb7f80}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/50{background-color:color-mix(in oklab,var(--color-emerald-500)50%,transparent)}}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-800\/50{background-color:#1e293980}@supports (color:color-mix(in lab,red,red)){.bg-gray-800\/50{background-color:color-mix(in oklab,var(--color-gray-800)50%,transparent)}}.bg-gray-900\/90{background-color:#101828e6}@supports (color:color-mix(in lab,red,red)){.bg-gray-900\/90{background-color:color-mix(in oklab,var(--color-gray-900)90%,transparent)}}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500)10%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-purple-500\/50{background-color:#ac4bff80}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/50{background-color:color-mix(in oklab,var(--color-purple-500)50%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-300{--tw-gradient-from:var(--color-blue-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-400{--tw-gradient-from:var(--color-blue-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500{--tw-gradient-from:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500\/10{--tw-gradient-from:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.from-blue-500\/10{--tw-gradient-from:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.from-blue-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-500\/20{--tw-gradient-from:#3080ff33}@supports (color:color-mix(in lab,red,red)){.from-blue-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.from-blue-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-600{--tw-gradient-from:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-blue-600\/20{--tw-gradient-from:#155dfc33}@supports (color:color-mix(in lab,red,red)){.from-blue-600\/20{--tw-gradient-from:color-mix(in oklab,var(--color-blue-600)20%,transparent)}}.from-blue-600\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-emerald-500\/20{--tw-gradient-from:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.from-emerald-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.from-emerald-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-900\/90{--tw-gradient-from:#101828e6}@supports (color:color-mix(in lab,red,red)){.from-gray-900\/90{--tw-gradient-from:color-mix(in oklab,var(--color-gray-900)90%,transparent)}}.from-gray-900\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-500\/20{--tw-gradient-from:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.from-purple-500\/20{--tw-gradient-from:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.from-purple-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-600\/20{--tw-gradient-from:#9810fa33}@supports (color:color-mix(in lab,red,red)){.from-purple-600\/20{--tw-gradient-from:color-mix(in oklab,var(--color-purple-600)20%,transparent)}}.from-purple-600\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-600\/30{--tw-gradient-from:#9810fa4d}@supports (color:color-mix(in lab,red,red)){.from-purple-600\/30{--tw-gradient-from:color-mix(in oklab,var(--color-purple-600)30%,transparent)}}.from-purple-600\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-blue-400{--tw-gradient-via:var(--color-blue-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-300{--tw-gradient-via:var(--color-purple-300);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-400{--tw-gradient-via:var(--color-purple-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-500{--tw-gradient-via:var(--color-purple-500);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-600{--tw-gradient-via:var(--color-purple-600);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-600\/20{--tw-gradient-via:#9810fa33}@supports (color:color-mix(in lab,red,red)){.via-purple-600\/20{--tw-gradient-via:color-mix(in oklab,var(--color-purple-600)20%,transparent)}}.via-purple-600\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-blue-500\/10{--tw-gradient-to:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.to-blue-500\/10{--tw-gradient-to:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.to-blue-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-500\/20{--tw-gradient-to:#3080ff33}@supports (color:color-mix(in lab,red,red)){.to-blue-500\/20{--tw-gradient-to:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.to-blue-500\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-600\/20{--tw-gradient-to:#155dfc33}@supports (color:color-mix(in lab,red,red)){.to-blue-600\/20{--tw-gradient-to:color-mix(in oklab,var(--color-blue-600)20%,transparent)}}.to-blue-600\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-600\/30{--tw-gradient-to:#155dfc4d}@supports (color:color-mix(in lab,red,red)){.to-blue-600\/30{--tw-gradient-to:color-mix(in oklab,var(--color-blue-600)30%,transparent)}}.to-blue-600\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-300{--tw-gradient-to:var(--color-emerald-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-400{--tw-gradient-to:var(--color-emerald-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-500{--tw-gradient-to:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-500\/10{--tw-gradient-to:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.to-emerald-500\/10{--tw-gradient-to:color-mix(in oklab,var(--color-emerald-500)10%,transparent)}}.to-emerald-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-600{--tw-gradient-to:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-600\/20{--tw-gradient-to:#00976733}@supports (color:color-mix(in lab,red,red)){.to-emerald-600\/20{--tw-gradient-to:color-mix(in oklab,var(--color-emerald-600)20%,transparent)}}.to-emerald-600\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gray-950\/90{--tw-gradient-to:#030712e6}@supports (color:color-mix(in lab,red,red)){.to-gray-950\/90{--tw-gradient-to:color-mix(in oklab,var(--color-gray-950)90%,transparent)}}.to-gray-950\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-300{--tw-gradient-to:var(--color-purple-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-500\/10{--tw-gradient-to:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.to-purple-500\/10{--tw-gradient-to:color-mix(in oklab,var(--color-purple-500)10%,transparent)}}.to-purple-500\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-purple-600\/20{--tw-gradient-to:#9810fa33}@supports (color:color-mix(in lab,red,red)){.to-purple-600\/20{--tw-gradient-to:color-mix(in oklab,var(--color-purple-600)20%,transparent)}}.to-purple-600\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-20{padding-block:calc(var(--spacing)*20)}.pt-6{padding-top:calc(var(--spacing)*6)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-blue-200{color:var(--color-blue-200)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-emerald-200{color:var(--color-emerald-200)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-300\/80{color:#5ee9b5cc}@supports (color:color-mix(in lab,red,red)){.text-emerald-300\/80{color:color-mix(in oklab,var(--color-emerald-300)80%,transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-gray-100{color:var(--color-gray-100)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-purple-200{color:var(--color-purple-200)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-transparent{color:#0000}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-purple-400\/50{--tw-shadow-color:#c07eff80}@supports (color:color-mix(in lab,red,red)){.shadow-purple-400\/50{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-purple-400)50%,transparent)var(--tw-shadow-alpha),transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-2xl{--tw-blur:blur(var(--blur-2xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.group-hover\:text-blue-200:is(:where(.group):hover *){color:var(--color-blue-200)}.group-hover\:text-purple-200:is(:where(.group):hover *){color:var(--color-purple-200)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-blue-400\/60:hover{border-color:#54a2ff99}@supports (color:color-mix(in lab,red,red)){.hover\:border-blue-400\/60:hover{border-color:color-mix(in oklab,var(--color-blue-400)60%,transparent)}}.hover\:border-purple-400\/60:hover{border-color:#c07eff99}@supports (color:color-mix(in lab,red,red)){.hover\:border-purple-400\/60:hover{border-color:color-mix(in oklab,var(--color-purple-400)60%,transparent)}}.hover\:border-purple-400\/70:hover{border-color:#c07effb3}@supports (color:color-mix(in lab,red,red)){.hover\:border-purple-400\/70:hover{border-color:color-mix(in oklab,var(--color-purple-400)70%,transparent)}}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes pulse{50%{opacity:.5}} diff --git a/src/ui/memory-stream/dist/assets/index-BjZoir4u.js b/src/ui/memory-stream/dist/assets/index-BjZoir4u.js deleted file mode 100644 index 6254f06e..00000000 --- a/src/ui/memory-stream/dist/assets/index-BjZoir4u.js +++ /dev/null @@ -1,88 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const u of l)if(u.type==="childList")for(const o of u.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(l){const u={};return l.integrity&&(u.integrity=l.integrity),l.referrerPolicy&&(u.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?u.credentials="include":l.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function r(l){if(l.ep)return;l.ep=!0;const u=n(l);fetch(l.href,u)}})();function nc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Hi={exports:{}},el={},Wi={exports:{}},L={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Xn=Symbol.for("react.element"),rc=Symbol.for("react.portal"),lc=Symbol.for("react.fragment"),uc=Symbol.for("react.strict_mode"),oc=Symbol.for("react.profiler"),ic=Symbol.for("react.provider"),sc=Symbol.for("react.context"),ac=Symbol.for("react.forward_ref"),cc=Symbol.for("react.suspense"),fc=Symbol.for("react.memo"),dc=Symbol.for("react.lazy"),Io=Symbol.iterator;function pc(e){return e===null||typeof e!="object"?null:(e=Io&&e[Io]||e["@@iterator"],typeof e=="function"?e:null)}var Qi={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Ki=Object.assign,Yi={};function ln(e,t,n){this.props=e,this.context=t,this.refs=Yi,this.updater=n||Qi}ln.prototype.isReactComponent={};ln.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};ln.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Xi(){}Xi.prototype=ln.prototype;function Uu(e,t,n){this.props=e,this.context=t,this.refs=Yi,this.updater=n||Qi}var $u=Uu.prototype=new Xi;$u.constructor=Uu;Ki($u,ln.prototype);$u.isPureReactComponent=!0;var Oo=Array.isArray,Gi=Object.prototype.hasOwnProperty,Au={current:null},Zi={key:!0,ref:!0,__self:!0,__source:!0};function Ji(e,t,n){var r,l={},u=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(u=""+t.key),t)Gi.call(t,r)&&!Zi.hasOwnProperty(r)&&(l[r]=t[r]);var i=arguments.length-2;if(i===1)l.children=n;else if(1>>1,G=C[W];if(0>>1;Wl(gl,T))ytl(er,gl)?(C[W]=er,C[yt]=T,W=yt):(C[W]=gl,C[vt]=T,W=vt);else if(ytl(er,T))C[W]=er,C[yt]=T,W=yt;else break e}}return j}function l(C,j){var T=C.sortIndex-j.sortIndex;return T!==0?T:C.id-j.id}if(typeof performance=="object"&&typeof performance.now=="function"){var u=performance;e.unstable_now=function(){return u.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var s=[],c=[],m=1,h=null,p=3,S=!1,k=!1,E=!1,I=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(C){for(var j=n(c);j!==null;){if(j.callback===null)r(c);else if(j.startTime<=C)r(c),j.sortIndex=j.expirationTime,t(s,j);else break;j=n(c)}}function g(C){if(E=!1,d(C),!k)if(n(s)!==null)k=!0,vl(y);else{var j=n(c);j!==null&&yl(g,j.startTime-C)}}function y(C,j){k=!1,E&&(E=!1,f(P),P=-1),S=!0;var T=p;try{for(d(j),h=n(s);h!==null&&(!(h.expirationTime>j)||C&&!ce());){var W=h.callback;if(typeof W=="function"){h.callback=null,p=h.priorityLevel;var G=W(h.expirationTime<=j);j=e.unstable_now(),typeof G=="function"?h.callback=G:h===n(s)&&r(s),d(j)}else r(s);h=n(s)}if(h!==null)var bn=!0;else{var vt=n(c);vt!==null&&yl(g,vt.startTime-j),bn=!1}return bn}finally{h=null,p=T,S=!1}}var x=!1,N=null,P=-1,D=5,z=-1;function ce(){return!(e.unstable_now()-zC||125W?(C.sortIndex=T,t(c,C),n(s)===null&&C===n(c)&&(E?(f(P),P=-1):E=!0,yl(g,T-W))):(C.sortIndex=G,t(s,C),k||S||(k=!0,vl(y))),C},e.unstable_shouldYield=ce,e.unstable_wrapCallback=function(C){var j=p;return function(){var T=p;p=j;try{return C.apply(this,arguments)}finally{p=T}}}})(ns);ts.exports=ns;var _c=ts.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Cc=q,we=_c;function w(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Kl=Object.prototype.hasOwnProperty,Pc=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Fo={},Uo={};function jc(e){return Kl.call(Uo,e)?!0:Kl.call(Fo,e)?!1:Pc.test(e)?Uo[e]=!0:(Fo[e]=!0,!1)}function zc(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Tc(e,t,n,r){if(t===null||typeof t>"u"||zc(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ae(e,t,n,r,l,u,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=u,this.removeEmptyString=o}var te={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){te[e]=new ae(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];te[t]=new ae(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){te[e]=new ae(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){te[e]=new ae(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){te[e]=new ae(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){te[e]=new ae(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){te[e]=new ae(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){te[e]=new ae(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){te[e]=new ae(e,5,!1,e.toLowerCase(),null,!1,!1)});var Bu=/[\-:]([a-z])/g;function Hu(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Bu,Hu);te[t]=new ae(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Bu,Hu);te[t]=new ae(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Bu,Hu);te[t]=new ae(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){te[e]=new ae(e,1,!1,e.toLowerCase(),null,!1,!1)});te.xlinkHref=new ae("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){te[e]=new ae(e,1,!1,e.toLowerCase(),null,!0,!0)});function Wu(e,t,n,r){var l=te.hasOwnProperty(t)?te[t]:null;(l!==null?l.type!==0:r||!(2i||l[o]!==u[i]){var s=` -`+l[o].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=o&&0<=i);break}}}finally{Sl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?gn(e):""}function Lc(e){switch(e.tag){case 5:return gn(e.type);case 16:return gn("Lazy");case 13:return gn("Suspense");case 19:return gn("SuspenseList");case 0:case 2:case 15:return e=kl(e.type,!1),e;case 11:return e=kl(e.type.render,!1),e;case 1:return e=kl(e.type,!0),e;default:return""}}function Zl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case It:return"Fragment";case Mt:return"Portal";case Yl:return"Profiler";case Qu:return"StrictMode";case Xl:return"Suspense";case Gl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case us:return(e.displayName||"Context")+".Consumer";case ls:return(e._context.displayName||"Context")+".Provider";case Ku:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Yu:return t=e.displayName||null,t!==null?t:Zl(e.type)||"Memo";case Je:t=e._payload,e=e._init;try{return Zl(e(t))}catch{}}return null}function Rc(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Zl(t);case 8:return t===Qu?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ft(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function is(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Mc(e){var t=is(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,u=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(o){r=""+o,u.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function rr(e){e._valueTracker||(e._valueTracker=Mc(e))}function ss(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=is(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Tr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Jl(e,t){var n=t.checked;return B({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Ao(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ft(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function as(e,t){t=t.checked,t!=null&&Wu(e,"checked",t,!1)}function ql(e,t){as(e,t);var n=ft(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?bl(e,t.type,n):t.hasOwnProperty("defaultValue")&&bl(e,t.type,ft(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Vo(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function bl(e,t,n){(t!=="number"||Tr(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var wn=Array.isArray;function Qt(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=lr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Rn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var kn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Ic=["Webkit","ms","Moz","O"];Object.keys(kn).forEach(function(e){Ic.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),kn[t]=kn[e]})});function ps(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||kn.hasOwnProperty(e)&&kn[e]?(""+t).trim():t+"px"}function ms(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=ps(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Oc=B({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function nu(e,t){if(t){if(Oc[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(w(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(w(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(w(61))}if(t.style!=null&&typeof t.style!="object")throw Error(w(62))}}function ru(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var lu=null;function Xu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var uu=null,Kt=null,Yt=null;function Wo(e){if(e=Jn(e)){if(typeof uu!="function")throw Error(w(280));var t=e.stateNode;t&&(t=ul(t),uu(e.stateNode,e.type,t))}}function hs(e){Kt?Yt?Yt.push(e):Yt=[e]:Kt=e}function vs(){if(Kt){var e=Kt,t=Yt;if(Yt=Kt=null,Wo(e),t)for(e=0;e>>=0,e===0?32:31-(Kc(e)/Yc|0)|0}var ur=64,or=4194304;function xn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ir(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,u=e.pingedLanes,o=n&268435455;if(o!==0){var i=o&~l;i!==0?r=xn(i):(u&=o,u!==0&&(r=xn(u)))}else o=n&~l,o!==0?r=xn(o):u!==0&&(r=xn(u));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,u=t&-t,l>=u||l===16&&(u&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Gn(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Re(t),e[t]=n}function Jc(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Nn),bo=" ",ei=!1;function Ds(e,t){switch(e){case"keyup":return Cf.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fs(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ot=!1;function jf(e,t){switch(e){case"compositionend":return Fs(t);case"keypress":return t.which!==32?null:(ei=!0,bo);case"textInput":return e=t.data,e===bo&&ei?null:e;default:return null}}function zf(e,t){if(Ot)return e==="compositionend"||!no&&Ds(e,t)?(e=Is(),Sr=bu=tt=null,Ot=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=li(n)}}function Vs(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Vs(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Bs(){for(var e=window,t=Tr();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Tr(e.document)}return t}function ro(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Uf(e){var t=Bs(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Vs(n.ownerDocument.documentElement,n)){if(r!==null&&ro(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,u=Math.min(r.start,l);r=r.end===void 0?u:Math.min(r.end,l),!e.extend&&u>r&&(l=r,r=u,u=l),l=ui(n,u);var o=ui(n,r);l&&o&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),u>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Dt=null,fu=null,Cn=null,du=!1;function oi(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;du||Dt==null||Dt!==Tr(r)||(r=Dt,"selectionStart"in r&&ro(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Cn&&Un(Cn,r)||(Cn=r,r=Fr(fu,"onSelect"),0$t||(e.current=gu[$t],gu[$t]=null,$t--)}function O(e,t){$t++,gu[$t]=e.current,e.current=t}var dt={},ue=mt(dt),pe=mt(!1),_t=dt;function qt(e,t){var n=e.type.contextTypes;if(!n)return dt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},u;for(u in n)l[u]=t[u];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function me(e){return e=e.childContextTypes,e!=null}function $r(){U(pe),U(ue)}function pi(e,t,n){if(ue.current!==dt)throw Error(w(168));O(ue,t),O(pe,n)}function Js(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(w(108,Rc(e)||"Unknown",l));return B({},n,r)}function Ar(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||dt,_t=ue.current,O(ue,e),O(pe,pe.current),!0}function mi(e,t,n){var r=e.stateNode;if(!r)throw Error(w(169));n?(e=Js(e,t,_t),r.__reactInternalMemoizedMergedChildContext=e,U(pe),U(ue),O(ue,e)):U(pe),O(pe,n)}var Ve=null,ol=!1,Dl=!1;function qs(e){Ve===null?Ve=[e]:Ve.push(e)}function Zf(e){ol=!0,qs(e)}function ht(){if(!Dl&&Ve!==null){Dl=!0;var e=0,t=M;try{var n=Ve;for(M=1;e>=o,l-=o,Be=1<<32-Re(t)+l|n<P?(D=N,N=null):D=N.sibling;var z=p(f,N,d[P],g);if(z===null){N===null&&(N=D);break}e&&N&&z.alternate===null&&t(f,N),a=u(z,a,P),x===null?y=z:x.sibling=z,x=z,N=D}if(P===d.length)return n(f,N),$&>(f,P),y;if(N===null){for(;PP?(D=N,N=null):D=N.sibling;var ce=p(f,N,z.value,g);if(ce===null){N===null&&(N=D);break}e&&N&&ce.alternate===null&&t(f,N),a=u(ce,a,P),x===null?y=ce:x.sibling=ce,x=ce,N=D}if(z.done)return n(f,N),$&>(f,P),y;if(N===null){for(;!z.done;P++,z=d.next())z=h(f,z.value,g),z!==null&&(a=u(z,a,P),x===null?y=z:x.sibling=z,x=z);return $&>(f,P),y}for(N=r(f,N);!z.done;P++,z=d.next())z=S(N,f,P,z.value,g),z!==null&&(e&&z.alternate!==null&&N.delete(z.key===null?P:z.key),a=u(z,a,P),x===null?y=z:x.sibling=z,x=z);return e&&N.forEach(function(sn){return t(f,sn)}),$&>(f,P),y}function I(f,a,d,g){if(typeof d=="object"&&d!==null&&d.type===It&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case nr:e:{for(var y=d.key,x=a;x!==null;){if(x.key===y){if(y=d.type,y===It){if(x.tag===7){n(f,x.sibling),a=l(x,d.props.children),a.return=f,f=a;break e}}else if(x.elementType===y||typeof y=="object"&&y!==null&&y.$$typeof===Je&&yi(y)===x.type){n(f,x.sibling),a=l(x,d.props),a.ref=hn(f,x,d),a.return=f,f=a;break e}n(f,x);break}else t(f,x);x=x.sibling}d.type===It?(a=Nt(d.props.children,f.mode,g,d.key),a.return=f,f=a):(g=zr(d.type,d.key,d.props,null,f.mode,g),g.ref=hn(f,a,d),g.return=f,f=g)}return o(f);case Mt:e:{for(x=d.key;a!==null;){if(a.key===x)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){n(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{n(f,a);break}else t(f,a);a=a.sibling}a=Wl(d,f.mode,g),a.return=f,f=a}return o(f);case Je:return x=d._init,I(f,a,x(d._payload),g)}if(wn(d))return k(f,a,d,g);if(cn(d))return E(f,a,d,g);pr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(n(f,a.sibling),a=l(a,d),a.return=f,f=a):(n(f,a),a=Hl(d,f.mode,g),a.return=f,f=a),o(f)):n(f,a)}return I}var en=na(!0),ra=na(!1),Hr=mt(null),Wr=null,Bt=null,io=null;function so(){io=Bt=Wr=null}function ao(e){var t=Hr.current;U(Hr),e._currentValue=t}function Su(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Gt(e,t){Wr=e,io=Bt=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(de=!0),e.firstContext=null)}function Ce(e){var t=e._currentValue;if(io!==e)if(e={context:e,memoizedValue:t,next:null},Bt===null){if(Wr===null)throw Error(w(308));Bt=e,Wr.dependencies={lanes:0,firstContext:e}}else Bt=Bt.next=e;return t}var St=null;function co(e){St===null?St=[e]:St.push(e)}function la(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,co(t)):(n.next=l.next,l.next=n),t.interleaved=n,Ye(e,r)}function Ye(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var qe=!1;function fo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ua(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function We(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function it(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,R&2){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,Ye(e,n)}return l=r.interleaved,l===null?(t.next=t,co(r)):(t.next=l.next,l.next=t),r.interleaved=t,Ye(e,n)}function Er(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Zu(e,n)}}function gi(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};u===null?l=u=o:u=u.next=o,n=n.next}while(n!==null);u===null?l=u=t:u=u.next=t}else l=u=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:u,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Qr(e,t,n,r){var l=e.updateQueue;qe=!1;var u=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(i!==null){l.shared.pending=null;var s=i,c=s.next;s.next=null,o===null?u=c:o.next=c,o=s;var m=e.alternate;m!==null&&(m=m.updateQueue,i=m.lastBaseUpdate,i!==o&&(i===null?m.firstBaseUpdate=c:i.next=c,m.lastBaseUpdate=s))}if(u!==null){var h=l.baseState;o=0,m=c=s=null,i=u;do{var p=i.lane,S=i.eventTime;if((r&p)===p){m!==null&&(m=m.next={eventTime:S,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var k=e,E=i;switch(p=t,S=n,E.tag){case 1:if(k=E.payload,typeof k=="function"){h=k.call(S,h,p);break e}h=k;break e;case 3:k.flags=k.flags&-65537|128;case 0:if(k=E.payload,p=typeof k=="function"?k.call(S,h,p):k,p==null)break e;h=B({},h,p);break e;case 2:qe=!0}}i.callback!==null&&i.lane!==0&&(e.flags|=64,p=l.effects,p===null?l.effects=[i]:p.push(i))}else S={eventTime:S,lane:p,tag:i.tag,payload:i.payload,callback:i.callback,next:null},m===null?(c=m=S,s=h):m=m.next=S,o|=p;if(i=i.next,i===null){if(i=l.shared.pending,i===null)break;p=i,i=p.next,p.next=null,l.lastBaseUpdate=p,l.shared.pending=null}}while(!0);if(m===null&&(s=h),l.baseState=s,l.firstBaseUpdate=c,l.lastBaseUpdate=m,t=l.shared.interleaved,t!==null){l=t;do o|=l.lane,l=l.next;while(l!==t)}else u===null&&(l.shared.lanes=0);jt|=o,e.lanes=o,e.memoizedState=h}}function wi(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Ul.transition;Ul.transition={};try{e(!1),t()}finally{M=n,Ul.transition=r}}function ka(){return Pe().memoizedState}function ed(e,t,n){var r=at(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ea(e))Na(t,n);else if(n=la(e,t,n,r),n!==null){var l=ie();Me(n,e,r,l),_a(n,t,r)}}function td(e,t,n){var r=at(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ea(e))Na(t,l);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var o=t.lastRenderedState,i=u(o,n);if(l.hasEagerState=!0,l.eagerState=i,Ie(i,o)){var s=t.interleaved;s===null?(l.next=l,co(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=la(e,t,l,r),n!==null&&(l=ie(),Me(n,e,r,l),_a(n,t,r))}}function Ea(e){var t=e.alternate;return e===V||t!==null&&t===V}function Na(e,t){Pn=Yr=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function _a(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Zu(e,n)}}var Xr={readContext:Ce,useCallback:ne,useContext:ne,useEffect:ne,useImperativeHandle:ne,useInsertionEffect:ne,useLayoutEffect:ne,useMemo:ne,useReducer:ne,useRef:ne,useState:ne,useDebugValue:ne,useDeferredValue:ne,useTransition:ne,useMutableSource:ne,useSyncExternalStore:ne,useId:ne,unstable_isNewReconciler:!1},nd={readContext:Ce,useCallback:function(e,t){return De().memoizedState=[e,t===void 0?null:t],e},useContext:Ce,useEffect:Si,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,_r(4194308,4,ya.bind(null,t,e),n)},useLayoutEffect:function(e,t){return _r(4194308,4,e,t)},useInsertionEffect:function(e,t){return _r(4,2,e,t)},useMemo:function(e,t){var n=De();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=De();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=ed.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=De();return e={current:e},t.memoizedState=e},useState:xi,useDebugValue:xo,useDeferredValue:function(e){return De().memoizedState=e},useTransition:function(){var e=xi(!1),t=e[0];return e=bf.bind(null,e[1]),De().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=V,l=De();if($){if(n===void 0)throw Error(w(407));n=n()}else{if(n=t(),J===null)throw Error(w(349));Pt&30||aa(r,t,n)}l.memoizedState=n;var u={value:n,getSnapshot:t};return l.queue=u,Si(fa.bind(null,r,u,e),[e]),r.flags|=2048,Kn(9,ca.bind(null,r,u,n,t),void 0,null),n},useId:function(){var e=De(),t=J.identifierPrefix;if($){var n=He,r=Be;n=(r&~(1<<32-Re(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Wn++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[Fe]=t,e[Vn]=r,Oa(e,t,!1,!1),t.stateNode=e;e:{switch(o=ru(n,r),n){case"dialog":F("cancel",e),F("close",e),l=r;break;case"iframe":case"object":case"embed":F("load",e),l=r;break;case"video":case"audio":for(l=0;lrn&&(t.flags|=128,r=!0,vn(u,!1),t.lanes=4194304)}else{if(!r)if(e=Kr(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),vn(u,!0),u.tail===null&&u.tailMode==="hidden"&&!o.alternate&&!$)return re(t),null}else 2*Q()-u.renderingStartTime>rn&&n!==1073741824&&(t.flags|=128,r=!0,vn(u,!1),t.lanes=4194304);u.isBackwards?(o.sibling=t.child,t.child=o):(n=u.last,n!==null?n.sibling=o:t.child=o,u.last=o)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=Q(),t.sibling=null,n=A.current,O(A,r?n&1|2:n&1),t):(re(t),null);case 22:case 23:return Co(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?ve&1073741824&&(re(t),t.subtreeFlags&6&&(t.flags|=8192)):re(t),null;case 24:return null;case 25:return null}throw Error(w(156,t.tag))}function cd(e,t){switch(uo(t),t.tag){case 1:return me(t.type)&&$r(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return tn(),U(pe),U(ue),ho(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return mo(t),null;case 13:if(U(A),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(w(340));bt()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return U(A),null;case 4:return tn(),null;case 10:return ao(t.type._context),null;case 22:case 23:return Co(),null;case 24:return null;default:return null}}var hr=!1,le=!1,fd=typeof WeakSet=="function"?WeakSet:Set,_=null;function Ht(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){H(e,t,r)}else n.current=null}function Tu(e,t,n){try{n()}catch(r){H(e,t,r)}}var Ri=!1;function dd(e,t){if(pu=Or,e=Bs(),ro(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,u=r.focusNode;r=r.focusOffset;try{n.nodeType,u.nodeType}catch{n=null;break e}var o=0,i=-1,s=-1,c=0,m=0,h=e,p=null;t:for(;;){for(var S;h!==n||l!==0&&h.nodeType!==3||(i=o+l),h!==u||r!==0&&h.nodeType!==3||(s=o+r),h.nodeType===3&&(o+=h.nodeValue.length),(S=h.firstChild)!==null;)p=h,h=S;for(;;){if(h===e)break t;if(p===n&&++c===l&&(i=o),p===u&&++m===r&&(s=o),(S=h.nextSibling)!==null)break;h=p,p=h.parentNode}h=S}n=i===-1||s===-1?null:{start:i,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(mu={focusedElem:e,selectionRange:n},Or=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var k=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(k!==null){var E=k.memoizedProps,I=k.memoizedState,f=t.stateNode,a=f.getSnapshotBeforeUpdate(t.elementType===t.type?E:ze(t.type,E),I);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=t.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(w(163))}}catch(g){H(t,t.return,g)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return k=Ri,Ri=!1,k}function jn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var u=l.destroy;l.destroy=void 0,u!==void 0&&Tu(t,n,u)}l=l.next}while(l!==r)}}function al(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Lu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Ua(e){var t=e.alternate;t!==null&&(e.alternate=null,Ua(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Fe],delete t[Vn],delete t[yu],delete t[Xf],delete t[Gf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function $a(e){return e.tag===5||e.tag===3||e.tag===4}function Mi(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||$a(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ru(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Ur));else if(r!==4&&(e=e.child,e!==null))for(Ru(e,t,n),e=e.sibling;e!==null;)Ru(e,t,n),e=e.sibling}function Mu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Mu(e,t,n),e=e.sibling;e!==null;)Mu(e,t,n),e=e.sibling}var b=null,Te=!1;function Ze(e,t,n){for(n=n.child;n!==null;)Aa(e,t,n),n=n.sibling}function Aa(e,t,n){if(Ue&&typeof Ue.onCommitFiberUnmount=="function")try{Ue.onCommitFiberUnmount(tl,n)}catch{}switch(n.tag){case 5:le||Ht(n,t);case 6:var r=b,l=Te;b=null,Ze(e,t,n),b=r,Te=l,b!==null&&(Te?(e=b,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):b.removeChild(n.stateNode));break;case 18:b!==null&&(Te?(e=b,n=n.stateNode,e.nodeType===8?Ol(e.parentNode,n):e.nodeType===1&&Ol(e,n),Dn(e)):Ol(b,n.stateNode));break;case 4:r=b,l=Te,b=n.stateNode.containerInfo,Te=!0,Ze(e,t,n),b=r,Te=l;break;case 0:case 11:case 14:case 15:if(!le&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var u=l,o=u.destroy;u=u.tag,o!==void 0&&(u&2||u&4)&&Tu(n,t,o),l=l.next}while(l!==r)}Ze(e,t,n);break;case 1:if(!le&&(Ht(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(i){H(n,t,i)}Ze(e,t,n);break;case 21:Ze(e,t,n);break;case 22:n.mode&1?(le=(r=le)||n.memoizedState!==null,Ze(e,t,n),le=r):Ze(e,t,n);break;default:Ze(e,t,n)}}function Ii(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new fd),t.forEach(function(r){var l=Sd.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function je(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=o),r&=~u}if(r=l,r=Q()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*md(r/1960))-r,10e?16:e,nt===null)var r=!1;else{if(e=nt,nt=null,Jr=0,R&6)throw Error(w(331));var l=R;for(R|=4,_=e.current;_!==null;){var u=_,o=u.child;if(_.flags&16){var i=u.deletions;if(i!==null){for(var s=0;sQ()-No?Et(e,0):Eo|=n),he(e,t)}function Xa(e,t){t===0&&(e.mode&1?(t=or,or<<=1,!(or&130023424)&&(or=4194304)):t=1);var n=ie();e=Ye(e,t),e!==null&&(Gn(e,t,n),he(e,n))}function xd(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Xa(e,n)}function Sd(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(w(314))}r!==null&&r.delete(t),Xa(e,n)}var Ga;Ga=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||pe.current)de=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return de=!1,sd(e,t,n);de=!!(e.flags&131072)}else de=!1,$&&t.flags&1048576&&bs(t,Br,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Cr(e,t),e=t.pendingProps;var l=qt(t,ue.current);Gt(t,n),l=yo(null,t,r,e,l,n);var u=go();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,me(r)?(u=!0,Ar(t)):u=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,fo(t),l.updater=sl,t.stateNode=l,l._reactInternals=t,Eu(t,r,e,n),t=Cu(null,t,r,!0,u,n)):(t.tag=0,$&&u&&lo(t),oe(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Cr(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=Ed(r),e=ze(r,e),l){case 0:t=_u(null,t,r,e,n);break e;case 1:t=zi(null,t,r,e,n);break e;case 11:t=Pi(null,t,r,e,n);break e;case 14:t=ji(null,t,r,ze(r.type,e),n);break e}throw Error(w(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),_u(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),zi(e,t,r,l,n);case 3:e:{if(Ra(t),e===null)throw Error(w(387));r=t.pendingProps,u=t.memoizedState,l=u.element,ua(e,t),Qr(t,r,null,n);var o=t.memoizedState;if(r=o.element,u.isDehydrated)if(u={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=u,t.memoizedState=u,t.flags&256){l=nn(Error(w(423)),t),t=Ti(e,t,r,n,l);break e}else if(r!==l){l=nn(Error(w(424)),t),t=Ti(e,t,r,n,l);break e}else for(ye=ot(t.stateNode.containerInfo.firstChild),ge=t,$=!0,Le=null,n=ra(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(bt(),r===l){t=Xe(e,t,n);break e}oe(e,t,r,n)}t=t.child}return t;case 5:return oa(t),e===null&&xu(t),r=t.type,l=t.pendingProps,u=e!==null?e.memoizedProps:null,o=l.children,hu(r,l)?o=null:u!==null&&hu(r,u)&&(t.flags|=32),La(e,t),oe(e,t,o,n),t.child;case 6:return e===null&&xu(t),null;case 13:return Ma(e,t,n);case 4:return po(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=en(t,null,r,n):oe(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Pi(e,t,r,l,n);case 7:return oe(e,t,t.pendingProps,n),t.child;case 8:return oe(e,t,t.pendingProps.children,n),t.child;case 12:return oe(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,u=t.memoizedProps,o=l.value,O(Hr,r._currentValue),r._currentValue=o,u!==null)if(Ie(u.value,o)){if(u.children===l.children&&!pe.current){t=Xe(e,t,n);break e}}else for(u=t.child,u!==null&&(u.return=t);u!==null;){var i=u.dependencies;if(i!==null){o=u.child;for(var s=i.firstContext;s!==null;){if(s.context===r){if(u.tag===1){s=We(-1,n&-n),s.tag=2;var c=u.updateQueue;if(c!==null){c=c.shared;var m=c.pending;m===null?s.next=s:(s.next=m.next,m.next=s),c.pending=s}}u.lanes|=n,s=u.alternate,s!==null&&(s.lanes|=n),Su(u.return,n,t),i.lanes|=n;break}s=s.next}}else if(u.tag===10)o=u.type===t.type?null:u.child;else if(u.tag===18){if(o=u.return,o===null)throw Error(w(341));o.lanes|=n,i=o.alternate,i!==null&&(i.lanes|=n),Su(o,n,t),o=u.sibling}else o=u.child;if(o!==null)o.return=u;else for(o=u;o!==null;){if(o===t){o=null;break}if(u=o.sibling,u!==null){u.return=o.return,o=u;break}o=o.return}u=o}oe(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Gt(t,n),l=Ce(l),r=r(l),t.flags|=1,oe(e,t,r,n),t.child;case 14:return r=t.type,l=ze(r,t.pendingProps),l=ze(r.type,l),ji(e,t,r,l,n);case 15:return za(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Cr(e,t),t.tag=1,me(r)?(e=!0,Ar(t)):e=!1,Gt(t,n),Ca(t,r,l),Eu(t,r,l,n),Cu(null,t,r,!0,e,n);case 19:return Ia(e,t,n);case 22:return Ta(e,t,n)}throw Error(w(156,t.tag))};function Za(e,t){return Es(e,t)}function kd(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ne(e,t,n,r){return new kd(e,t,n,r)}function jo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ed(e){if(typeof e=="function")return jo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ku)return 11;if(e===Yu)return 14}return 2}function ct(e,t){var n=e.alternate;return n===null?(n=Ne(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function zr(e,t,n,r,l,u){var o=2;if(r=e,typeof e=="function")jo(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case It:return Nt(n.children,l,u,t);case Qu:o=8,l|=8;break;case Yl:return e=Ne(12,n,t,l|2),e.elementType=Yl,e.lanes=u,e;case Xl:return e=Ne(13,n,t,l),e.elementType=Xl,e.lanes=u,e;case Gl:return e=Ne(19,n,t,l),e.elementType=Gl,e.lanes=u,e;case os:return fl(n,l,u,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ls:o=10;break e;case us:o=9;break e;case Ku:o=11;break e;case Yu:o=14;break e;case Je:o=16,r=null;break e}throw Error(w(130,e==null?e:typeof e,""))}return t=Ne(o,n,t,l),t.elementType=e,t.type=r,t.lanes=u,t}function Nt(e,t,n,r){return e=Ne(7,e,r,t),e.lanes=n,e}function fl(e,t,n,r){return e=Ne(22,e,r,t),e.elementType=os,e.lanes=n,e.stateNode={isHidden:!1},e}function Hl(e,t,n){return e=Ne(6,e,null,t),e.lanes=n,e}function Wl(e,t,n){return t=Ne(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Nd(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Nl(0),this.expirationTimes=Nl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Nl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function zo(e,t,n,r,l,u,o,i,s){return e=new Nd(e,t,n,i,s),t===1?(t=1,u===!0&&(t|=8)):t=0,u=Ne(3,null,null,t),e.current=u,u.stateNode=e,u.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},fo(u),e}function _d(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ec)}catch(e){console.error(e)}}ec(),es.exports=xe;var Td=es.exports,Bi=Td;Ql.createRoot=Bi.createRoot,Ql.hydrateRoot=Bi.hydrateRoot;function Ld(){var d,g;const[e,t]=q.useState([]),[n,r]=q.useState(0),[l,u]=q.useState("connecting_to_stream"),[o,i]=q.useState(!1),[s,c]=q.useState(!1),m=q.useRef(null),h=q.useRef([]),p=q.useRef(null),S={total:e.length,sessions:new Set(e.map(y=>y.session_id)).size,projects:new Set(e.map(y=>y.project)).size},k=()=>{try{u("connecting_to_memory_stream");const y=new EventSource("http://localhost:3001/stream");p.current=y,y.onopen=()=>{u("live_memory_stream • connected"),i(!0)},y.onmessage=x=>{const N=JSON.parse(x.data);N.type==="connected"?console.log("Connected to server, last ID:",N.lastMaxId):N.type==="new_memories"&&(console.log("Received new memories:",N.memories.length),t(P=>[...P,...N.memories]))},y.onerror=()=>{u("connection_lost • retrying..."),y.close(),setTimeout(()=>k(),2e3)}}catch(y){u("neural_disruption: "+y.message),console.error("SSE error:",y)}};q.useEffect(()=>{k()},[]);const E=()=>{r(y=>{const x=y-1;return x<0?e.length-1:x})},I=()=>{r(y=>(y+1)%e.length)},f=()=>{c(y=>!y)};q.useEffect(()=>()=>{m.current&&clearInterval(m.current),p.current&&p.current.close()},[]),q.useEffect(()=>{h.current=e,e.length>0&&r(y=>y%e.length)},[e]),q.useEffect(()=>{if(!(!o||m.current))return m.current=setInterval(()=>{r(y=>{const x=h.current;return x.length===0?0:(y+1)%x.length})},5e3),()=>{m.current&&(clearInterval(m.current),m.current=null)}},[o]),q.useEffect(()=>{if(!(!o||e.length===0))return s?m.current&&(clearInterval(m.current),m.current=null):m.current||(m.current=setInterval(()=>{r(y=>{const x=h.current;return x.length===0?0:(y+1)%x.length})},5e3)),()=>{m.current&&(clearInterval(m.current),m.current=null)}},[s,o,e.length]),q.useEffect(()=>{if(!o||e.length===0)return;const y=x=>{x.key==="ArrowLeft"?(x.preventDefault(),r(N=>{const P=N-1;return P<0?h.current.length-1:P})):x.key==="ArrowRight"?(x.preventDefault(),r(N=>(N+1)%h.current.length)):(x.key===" "||x.key==="Spacebar")&&(x.preventDefault(),c(N=>!N))};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[o,e.length]);const a=y=>{if(!y)return"";const x=new Date(y),P=new Date-x,D=Math.floor(P/1e3),z=Math.floor(D/60),ce=Math.floor(z/60);return D<60?`${D}s ago`:z<60?`${z}m ago`:ce<24?`${ce}h ago`:x.toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})};return v.jsxs("div",{className:"min-h-screen bg-black text-gray-100 relative overflow-hidden",children:[v.jsx("div",{className:"fixed inset-0 opacity-20",children:v.jsx("div",{className:"absolute inset-0",style:{backgroundImage:"linear-gradient(rgba(59, 130, 246, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(59, 130, 246, 0.1) 1px, transparent 1px)",backgroundSize:"50px 50px"}})}),v.jsxs("div",{className:"fixed inset-0 pointer-events-none",children:[v.jsx("div",{className:"absolute top-0 left-0 w-full h-full bg-gradient-radial from-blue-500/10 via-transparent to-transparent",style:{background:"radial-gradient(ellipse at 20% 30%, rgba(59, 130, 246, 0.15) 0%, transparent 50%)"}}),v.jsx("div",{className:"absolute top-0 right-0 w-full h-full",style:{background:"radial-gradient(ellipse at 80% 20%, rgba(139, 92, 246, 0.15) 0%, transparent 50%)"}}),v.jsx("div",{className:"absolute bottom-0 left-1/2 w-full h-full",style:{background:"radial-gradient(ellipse at 50% 80%, rgba(16, 185, 129, 0.1) 0%, transparent 50%)"}})]}),v.jsxs("div",{className:"relative z-10 p-6",children:[v.jsxs("div",{className:"max-w-7xl mx-auto mb-8",children:[v.jsxs("div",{className:"flex items-center justify-between mb-6",children:[v.jsxs("div",{className:"flex items-center gap-6",children:[v.jsx("h1",{className:"text-6xl font-black tracking-tighter bg-gradient-to-r from-blue-400 via-purple-400 to-emerald-400 bg-clip-text text-transparent",children:"MEMORY STREAM"}),o&&v.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 rounded-full bg-gradient-to-r from-purple-500/20 to-blue-500/20 border border-purple-400/30",children:[v.jsx("div",{className:"w-3 h-3 bg-purple-400 rounded-full animate-pulse shadow-lg shadow-purple-400/50"}),v.jsx("span",{className:"text-sm font-bold text-purple-300 tracking-wide",children:"PRESENTING"})]})]}),o&&v.jsxs("div",{className:"flex gap-4",children:[v.jsxs("div",{className:"px-4 py-2 rounded-lg bg-blue-500/10 border border-blue-400/30 backdrop-blur",children:[v.jsx("div",{className:"text-xs text-blue-300 mb-1",children:"MEMORIES"}),v.jsx("div",{className:"text-2xl font-bold text-blue-200",children:S.total})]}),v.jsxs("div",{className:"px-4 py-2 rounded-lg bg-purple-500/10 border border-purple-400/30 backdrop-blur",children:[v.jsx("div",{className:"text-xs text-purple-300 mb-1",children:"SESSIONS"}),v.jsx("div",{className:"text-2xl font-bold text-purple-200",children:S.sessions.size})]}),v.jsxs("div",{className:"px-4 py-2 rounded-lg bg-emerald-500/10 border border-emerald-400/30 backdrop-blur",children:[v.jsx("div",{className:"text-xs text-emerald-300 mb-1",children:"PROJECTS"}),v.jsx("div",{className:"text-2xl font-bold text-emerald-200",children:S.projects.size})]})]})]}),v.jsx("div",{className:"flex items-center gap-4 text-sm",children:v.jsx("div",{className:"px-3 py-1 rounded bg-gray-800/50 border border-gray-700 font-mono text-gray-400",children:l})})]}),!o&&v.jsx("div",{className:"max-w-3xl mx-auto mb-12",children:v.jsxs("div",{className:"relative group",children:[v.jsx("div",{className:"absolute -inset-1 bg-gradient-to-r from-blue-600 via-purple-600 to-emerald-600 rounded-2xl blur opacity-25 transition duration-500 animate-pulse"}),v.jsx("div",{className:"relative bg-gray-900/90 backdrop-blur-xl rounded-2xl p-8 border border-gray-800",children:v.jsxs("div",{className:"text-center",children:[v.jsxs("div",{className:"relative inline-block mb-4",children:[v.jsx("div",{className:"absolute inset-0 bg-blue-500/20 blur-3xl animate-pulse"}),v.jsx("div",{className:"relative text-6xl",children:"📡"})]}),v.jsx("h2",{className:"text-2xl font-bold mb-2 bg-gradient-to-r from-blue-300 to-purple-300 bg-clip-text text-transparent",children:"Connecting to Memory Stream"}),v.jsx("p",{className:"text-gray-400 mb-4",children:"Establishing connection to ~/.claude-mem/claude-mem.db"}),v.jsxs("div",{className:"flex items-center justify-center gap-2",children:[v.jsx("div",{className:"w-2 h-2 bg-blue-400 rounded-full animate-pulse"}),v.jsx("div",{className:"w-2 h-2 bg-purple-400 rounded-full animate-pulse",style:{animationDelay:"0.2s"}}),v.jsx("div",{className:"w-2 h-2 bg-emerald-400 rounded-full animate-pulse",style:{animationDelay:"0.4s"}})]}),v.jsx("p",{className:"text-xs text-gray-600 mt-4",children:"Make sure the server is running: node server.js"})]})})]})}),o&&e.length===0&&v.jsxs("div",{className:"max-w-4xl mx-auto text-center py-20",children:[v.jsxs("div",{className:"relative inline-block",children:[v.jsx("div",{className:"absolute inset-0 bg-purple-500/20 blur-3xl animate-pulse"}),v.jsx("div",{className:"relative text-6xl mb-4",children:"💭"})]}),v.jsx("h3",{className:"text-2xl font-bold text-gray-300 mb-2",children:"No Memories Found"}),v.jsx("p",{className:"text-gray-500",children:"No memories with titles found in this database"})]}),e.length>0&&v.jsxs("div",{className:"max-w-6xl mx-auto",children:[v.jsxs("div",{className:"mb-6 flex items-center justify-center gap-4",children:[v.jsx("button",{onClick:E,className:"w-12 h-12 rounded-full bg-gradient-to-br from-blue-600/20 to-purple-600/20 border border-blue-400/30 hover:border-blue-400/60 flex items-center justify-center transition-all duration-300 hover:scale-110 group",title:"Previous",children:v.jsx("span",{className:"text-blue-300 text-xl group-hover:text-blue-200",children:"←"})}),v.jsx("button",{onClick:f,className:"w-14 h-14 rounded-full bg-gradient-to-br from-purple-600/30 to-blue-600/30 border-2 border-purple-400/40 hover:border-purple-400/70 flex items-center justify-center transition-all duration-300 hover:scale-110 group",title:s?"Play":"Pause",children:s?v.jsx("span",{className:"text-purple-300 text-2xl group-hover:text-purple-200",children:"▶"}):v.jsx("span",{className:"text-purple-300 text-2xl group-hover:text-purple-200",children:"⏸"})}),v.jsx("button",{onClick:I,className:"w-12 h-12 rounded-full bg-gradient-to-br from-purple-600/20 to-blue-600/20 border border-purple-400/30 hover:border-purple-400/60 flex items-center justify-center transition-all duration-300 hover:scale-110 group",title:"Next",children:v.jsx("span",{className:"text-purple-300 text-xl group-hover:text-purple-200",children:"→"})})]}),v.jsxs("div",{className:"mb-6 flex items-center gap-3",children:[v.jsx("div",{className:"flex-1 h-1 bg-gray-800 rounded-full overflow-hidden",children:v.jsx("div",{className:`h-full bg-gradient-to-r from-blue-500 via-purple-500 to-emerald-500 transition-all duration-300 ${s?"opacity-40":"opacity-100"}`,style:{width:`${(n+1)/e.length*100}%`}})}),v.jsxs("div",{className:"text-sm font-mono text-gray-500",children:[n+1," / ",e.length]})]}),v.jsxs("div",{className:"relative",style:{animation:"slideIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1)"},children:[v.jsx("div",{className:"absolute -inset-4 bg-gradient-to-r from-blue-600/20 via-purple-600/20 to-emerald-600/20 rounded-3xl blur-2xl"}),v.jsxs("div",{className:"relative bg-gradient-to-br from-gray-900/90 to-gray-950/90 backdrop-blur-xl rounded-3xl p-12 border border-gray-800 overflow-hidden",children:[v.jsx("div",{className:"absolute top-0 left-0 w-full h-1 bg-gradient-to-r from-transparent via-blue-400 to-transparent opacity-50",style:{animation:"scan 3s ease-in-out infinite"}}),v.jsxs("div",{className:"mb-8",children:[v.jsxs("div",{className:"flex items-center gap-3 mb-4 flex-wrap",children:[v.jsxs("span",{className:"px-4 py-1.5 rounded-full text-xs font-bold bg-gradient-to-r from-blue-500/20 to-blue-500/10 border border-blue-400/30 text-blue-300",children:["#",e[n].id]}),v.jsx("span",{className:"px-4 py-1.5 rounded-full text-xs font-bold bg-gradient-to-r from-purple-500/20 to-purple-500/10 border border-purple-400/30 text-purple-300",children:e[n].project}),e[n].origin&&v.jsx("span",{className:"px-4 py-1.5 rounded-full text-xs font-bold bg-gradient-to-r from-emerald-500/20 to-emerald-500/10 border border-emerald-400/30 text-emerald-300",children:e[n].origin}),v.jsx("span",{className:"ml-auto text-xs font-mono text-gray-500",children:a(e[n].created_at)})]}),v.jsx("h1",{className:"text-4xl font-black text-transparent bg-clip-text bg-gradient-to-r from-blue-300 via-purple-300 to-emerald-300 mb-4 leading-tight",children:e[n].title}),e[n].subtitle&&v.jsx("p",{className:"text-xl text-gray-400 leading-relaxed",children:e[n].subtitle})]}),e[n].facts&&e[n].facts.length>0&&v.jsxs("div",{className:"mb-8",children:[v.jsxs("h3",{className:"text-sm font-bold text-blue-400 mb-4 flex items-center gap-2",children:[v.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-blue-400"}),"FACTS EXTRACTED"]}),v.jsx("div",{className:"space-y-3",children:e[n].facts.map((y,x)=>v.jsxs("div",{className:"flex gap-3 text-gray-300 leading-relaxed",style:{animation:"fadeInUp 0.5s ease-out",animationDelay:`${x*.1}s`,animationFillMode:"both"},children:[v.jsx("span",{className:"text-blue-400 font-mono text-xs mt-1",children:"▸"}),v.jsx("span",{children:y})]},x))})]}),e[n].concepts&&e[n].concepts.length>0&&v.jsxs("div",{className:"mb-8",children:[v.jsxs("h3",{className:"text-sm font-bold text-purple-400 mb-4 flex items-center gap-2",children:[v.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-purple-400"}),"CONCEPTS"]}),v.jsx("div",{className:"flex flex-wrap gap-2",children:e[n].concepts.map((y,x)=>v.jsx("span",{className:"px-3 py-1.5 rounded-lg bg-purple-500/10 border border-purple-400/30 text-purple-300 text-sm font-medium",style:{animation:"fadeInUp 0.5s ease-out",animationDelay:`${x*.05}s`,animationFillMode:"both"},children:y},x))})]}),e[n].files_touched&&e[n].files_touched.length>0&&v.jsxs("div",{children:[v.jsxs("h3",{className:"text-sm font-bold text-emerald-400 mb-4 flex items-center gap-2",children:[v.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-emerald-400"}),"FILES TOUCHED"]}),v.jsx("div",{className:"space-y-2",children:e[n].files_touched.map((y,x)=>v.jsxs("div",{className:"flex items-center gap-2 text-sm font-mono text-emerald-300/80",style:{animation:"fadeInUp 0.5s ease-out",animationDelay:`${x*.1}s`,animationFillMode:"both"},children:[v.jsx("span",{className:"text-emerald-400",children:"📄"}),v.jsx("span",{children:y})]},x))})]}),v.jsxs("div",{className:"mt-8 pt-6 border-t border-gray-800/50 flex items-center justify-between",children:[v.jsxs("div",{className:"text-xs font-mono text-gray-600",children:["session: ",(d=e[n].session_id)==null?void 0:d.substring(0,8),"...",(g=e[n].session_id)==null?void 0:g.substring(e[n].session_id.length-4)]}),v.jsxs("div",{className:"flex gap-2",children:[v.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-blue-500/50"}),v.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-purple-500/50"}),v.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-emerald-500/50"})]})]})]})]},e[n].id),v.jsx("div",{className:"mt-6 text-center text-sm text-gray-600",children:v.jsxs("p",{children:[s?"Paused":"Auto-playing"," • Arrow keys to navigate • Space to pause • ",e.length," thoughts"]})})]})]}),v.jsx("style",{children:` - @keyframes fadeIn { - from { - opacity: 0; - transform: translateY(20px); - filter: blur(10px); - } - to { - opacity: 1; - transform: translateY(0); - filter: blur(0); - } - } - - @keyframes slideIn { - from { - opacity: 0; - transform: translateX(50px) scale(0.95); - filter: blur(10px); - } - to { - opacity: 1; - transform: translateX(0) scale(1); - filter: blur(0); - } - } - - @keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(10px); - } - to { - opacity: 1; - transform: translateY(0); - } - } - - @keyframes scan { - 0%, 100% { - transform: translateX(-100%); - opacity: 0; - } - 50% { - transform: translateX(100%); - opacity: 1; - } - } - `})]})}Ql.createRoot(document.getElementById("root")).render(v.jsx(gc.StrictMode,{children:v.jsx(Ld,{})})); diff --git a/src/ui/memory-stream/dist/index.html b/src/ui/memory-stream/dist/index.html deleted file mode 100644 index 34e9c499..00000000 --- a/src/ui/memory-stream/dist/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - Memory Stream - Claude Mem - - - - -
- - diff --git a/src/ui/memory-stream/index.css b/src/ui/memory-stream/index.css deleted file mode 100644 index f4c1e9b5..00000000 --- a/src/ui/memory-stream/index.css +++ /dev/null @@ -1,120 +0,0 @@ -@import "tailwindcss"; -@import "tw-animate-css"; - -@custom-variant dark (&:is(.dark *)); - -@theme inline { - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); -} - -:root { - --radius: 0.625rem; - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); -} - -.dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.205 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.922 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.556 0 0); -} - -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } -} diff --git a/src/ui/memory-stream/index.html b/src/ui/memory-stream/index.html deleted file mode 100644 index 3498482c..00000000 --- a/src/ui/memory-stream/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Memory Stream - Claude Mem - - -
- - - diff --git a/src/ui/memory-stream/index.js b/src/ui/memory-stream/index.js deleted file mode 100644 index 8c5eda62..00000000 --- a/src/ui/memory-stream/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from './MemoryStream.jsx'; diff --git a/src/ui/memory-stream/jsconfig.json b/src/ui/memory-stream/jsconfig.json deleted file mode 100644 index abe04df5..00000000 --- a/src/ui/memory-stream/jsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - } -} diff --git a/src/ui/memory-stream/layout.jsx b/src/ui/memory-stream/layout.jsx deleted file mode 100644 index 2e22ceb2..00000000 --- a/src/ui/memory-stream/layout.jsx +++ /dev/null @@ -1,604 +0,0 @@ -'use client' - -import { useState } from 'react' -import { - Dialog, - DialogBackdrop, - DialogPanel, - Menu, - MenuButton, - MenuItem, - MenuItems, - TransitionChild, -} from '@headlessui/react' -import { - ChartBarSquareIcon, - Cog6ToothIcon, - FolderIcon, - GlobeAltIcon, - ServerIcon, - SignalIcon, - XMarkIcon, -} from '@heroicons/react/24/outline' -import { Bars3Icon, ChevronRightIcon, ChevronUpDownIcon, MagnifyingGlassIcon } from '@heroicons/react/20/solid' - -const navigation = [ - { name: 'Projects', href: '#', icon: FolderIcon, current: false }, - { name: 'Deployments', href: '#', icon: ServerIcon, current: true }, - { name: 'Activity', href: '#', icon: SignalIcon, current: false }, - { name: 'Domains', href: '#', icon: GlobeAltIcon, current: false }, - { name: 'Usage', href: '#', icon: ChartBarSquareIcon, current: false }, - { name: 'Settings', href: '#', icon: Cog6ToothIcon, current: false }, -] -const teams = [ - { id: 1, name: 'Planetaria', href: '#', initial: 'P', current: false }, - { id: 2, name: 'Protocol', href: '#', initial: 'P', current: false }, - { id: 3, name: 'Tailwind Labs', href: '#', initial: 'T', current: false }, -] -const statuses = { - offline: 'text-gray-400 bg-gray-100 dark:text-gray-500 dark:bg-gray-100/10', - online: 'text-green-500 bg-green-500/10 dark:text-green-400 dark:bg-green-400/10', - error: 'text-rose-500 bg-rose-500/10 dark:text-rose-400 dark:bg-rose-400/10', -} -const environments = { - Preview: 'text-gray-500 bg-gray-50 ring-gray-200 dark:text-gray-400 dark:bg-gray-400/10 dark:ring-gray-400/20', - Production: - 'text-indigo-500 bg-indigo-50 ring-indigo-200 dark:text-indigo-400 dark:bg-indigo-400/10 dark:ring-indigo-400/30', -} -const deployments = [ - { - id: 1, - href: '#', - projectName: 'ios-app', - teamName: 'Planetaria', - status: 'offline', - statusText: 'Initiated 1m 32s ago', - description: 'Deploys from GitHub', - environment: 'Preview', - }, - { - id: 2, - href: '#', - projectName: 'mobile-api', - teamName: 'Planetaria', - status: 'online', - statusText: 'Deployed 3m ago', - description: 'Deploys from GitHub', - environment: 'Production', - }, - { - id: 3, - href: '#', - projectName: 'tailwindcss.com', - teamName: 'Tailwind Labs', - status: 'offline', - statusText: 'Deployed 3h ago', - description: 'Deploys from GitHub', - environment: 'Preview', - }, - { - id: 4, - href: '#', - projectName: 'company-website', - teamName: 'Tailwind Labs', - status: 'online', - statusText: 'Deployed 1d ago', - description: 'Deploys from GitHub', - environment: 'Preview', - }, - { - id: 5, - href: '#', - projectName: 'relay-service', - teamName: 'Protocol', - status: 'online', - statusText: 'Deployed 1d ago', - description: 'Deploys from GitHub', - environment: 'Production', - }, - { - id: 6, - href: '#', - projectName: 'android-app', - teamName: 'Planetaria', - status: 'online', - statusText: 'Deployed 5d ago', - description: 'Deploys from GitHub', - environment: 'Preview', - }, - { - id: 7, - href: '#', - projectName: 'api.protocol.chat', - teamName: 'Protocol', - status: 'error', - statusText: 'Failed to deploy 6d ago', - description: 'Deploys from GitHub', - environment: 'Preview', - }, - { - id: 8, - href: '#', - projectName: 'planetaria.tech', - teamName: 'Planetaria', - status: 'online', - statusText: 'Deployed 6d ago', - description: 'Deploys from GitHub', - environment: 'Preview', - }, -] -const activityItems = [ - { - user: { - name: 'Michael Foster', - imageUrl: - 'https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'ios-app', - commit: '2d89f0c8', - branch: 'main', - date: '1h', - dateTime: '2023-01-23T11:00', - }, - { - user: { - name: 'Lindsay Walton', - imageUrl: - 'https://images.unsplash.com/photo-1517841905240-472988babdf9?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'mobile-api', - commit: '249df660', - branch: 'main', - date: '3h', - dateTime: '2023-01-23T09:00', - }, - { - user: { - name: 'Courtney Henry', - imageUrl: - 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'ios-app', - commit: '11464223', - branch: 'main', - date: '12h', - dateTime: '2023-01-23T00:00', - }, - { - user: { - name: 'Courtney Henry', - imageUrl: - 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'company-website', - commit: 'dad28e95', - branch: 'main', - date: '2d', - dateTime: '2023-01-21T13:00', - }, - { - user: { - name: 'Michael Foster', - imageUrl: - 'https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'relay-service', - commit: '624bc94c', - branch: 'main', - date: '5d', - dateTime: '2023-01-18T12:34', - }, - { - user: { - name: 'Courtney Henry', - imageUrl: - 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'api.protocol.chat', - commit: 'e111f80e', - branch: 'main', - date: '1w', - dateTime: '2023-01-16T15:54', - }, - { - user: { - name: 'Michael Foster', - imageUrl: - 'https://images.unsplash.com/photo-1519244703995-f4e0f30006d5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'api.protocol.chat', - commit: '5e136005', - branch: 'main', - date: '1w', - dateTime: '2023-01-16T11:31', - }, - { - user: { - name: 'Whitney Francis', - imageUrl: - 'https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80', - }, - projectName: 'ios-app', - commit: '5c1fd07f', - branch: 'main', - date: '2w', - dateTime: '2023-01-09T08:45', - }, -] - -function classNames(...classes) { - return classes.filter(Boolean).join(' ') -} - -export default function Example() { - const [sidebarOpen, setSidebarOpen] = useState(false) - - return ( - <> - {/* - This example requires updating your template: - - ``` - - - ``` - */} -
- - - -
- - -
- -
-
- - {/* Sidebar component, swap this element with another sidebar if you like */} -
-
- Your Company - Your Company -
- -
-
-
-
- - {/* Static sidebar for desktop */} -
- {/* Sidebar component, swap this element with another sidebar if you like */} -
-
- Your Company - Your Company -
- -
-
- -
- {/* Sticky search header */} -
- - -
-
- -
-
- -
-
-

Deployments

- - {/* Sort dropdown */} - - - Sort by - - - - - Name - - - - - Date updated - - - - - Environment - - - - -
- - {/* Deployment list */} - -
- - {/* Activity feed */} - -
-
- - ) -} diff --git a/src/ui/memory-stream/main.jsx b/src/ui/memory-stream/main.jsx deleted file mode 100644 index 1a1c75b3..00000000 --- a/src/ui/memory-stream/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import MemoryStream from './MemoryStream.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/src/ui/memory-stream/package-lock.json b/src/ui/memory-stream/package-lock.json deleted file mode 100644 index ecefc371..00000000 --- a/src/ui/memory-stream/package-lock.json +++ /dev/null @@ -1,2707 +0,0 @@ -{ - "name": "memory-stream-ui", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "memory-stream-ui", - "version": "0.0.0", - "dependencies": { - "@headlessui/react": "^2.2.9", - "@heroicons/react": "^2.2.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "lucide-react": "^0.544.0", - "ogl": "^1.0.11", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwind-merge": "^3.3.1", - "three": "^0.180.0" - }, - "devDependencies": { - "@tailwindcss/vite": "^4.1.14", - "@types/react": "^18.2.0", - "@types/react-dom": "^18.2.0", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.21", - "postcss": "^8.5.6", - "tailwindcss": "^4.1.14", - "tw-animate-css": "^1.4.0", - "vite": "^5.0.8" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", - "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", - "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.3", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/react": { - "version": "0.26.28", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", - "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.1.2", - "@floating-ui/utils": "^0.2.8", - "tabbable": "^6.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", - "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.7.4" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@headlessui/react": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.9.tgz", - "integrity": "sha512-Mb+Un58gwBn0/yWZfyrCh0TJyurtT+dETj7YHleylHk5od3dv2XqETPGWMyQ5/7sYN7oWdyM1u9MvC0OC8UmzQ==", - "license": "MIT", - "dependencies": { - "@floating-ui/react": "^0.26.16", - "@react-aria/focus": "^3.20.2", - "@react-aria/interactions": "^3.25.0", - "@tanstack/react-virtual": "^3.13.9", - "use-sync-external-store": "^1.5.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/@heroicons/react": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", - "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", - "license": "MIT", - "peerDependencies": { - "react": ">= 16 || ^19.0.0-rc" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@react-aria/focus": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.21.2.tgz", - "integrity": "sha512-JWaCR7wJVggj+ldmM/cb/DXFg47CXR55lznJhZBh4XVqJjMKwaOOqpT5vNN7kpC1wUpXicGNuDnJDN1S/+6dhQ==", - "license": "Apache-2.0", - "dependencies": { - "@react-aria/interactions": "^3.25.6", - "@react-aria/utils": "^3.31.0", - "@react-types/shared": "^3.32.1", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/interactions": { - "version": "3.25.6", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.6.tgz", - "integrity": "sha512-5UgwZmohpixwNMVkMvn9K1ceJe6TzlRlAfuYoQDUuOkk62/JVJNDLAPKIf5YMRc7d2B0rmfgaZLMtbREb0Zvkw==", - "license": "Apache-2.0", - "dependencies": { - "@react-aria/ssr": "^3.9.10", - "@react-aria/utils": "^3.31.0", - "@react-stately/flags": "^3.1.2", - "@react-types/shared": "^3.32.1", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/ssr": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.10.tgz", - "integrity": "sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/utils": { - "version": "3.31.0", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.31.0.tgz", - "integrity": "sha512-ABOzCsZrWzf78ysswmguJbx3McQUja7yeGj6/vZo4JVsZNlxAN+E9rs381ExBRI0KzVo6iBTeX5De8eMZPJXig==", - "license": "Apache-2.0", - "dependencies": { - "@react-aria/ssr": "^3.9.10", - "@react-stately/flags": "^3.1.2", - "@react-stately/utils": "^3.10.8", - "@react-types/shared": "^3.32.1", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-stately/flags": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz", - "integrity": "sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, - "node_modules/@react-stately/utils": { - "version": "3.10.8", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.8.tgz", - "integrity": "sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-types/shared": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.32.1.tgz", - "integrity": "sha512-famxyD5emrGGpFuUlgOP6fVW2h/ZaF405G5KDi3zPHzyjAWys/8W6NAVJtNbkCkhedmvL0xOhvt8feGXyXaw5w==", - "license": "Apache-2.0", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.27", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", - "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", - "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", - "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", - "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", - "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", - "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", - "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", - "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", - "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", - "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", - "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", - "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", - "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", - "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", - "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", - "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", - "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", - "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", - "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", - "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", - "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", - "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", - "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.14.tgz", - "integrity": "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", - "jiti": "^2.6.0", - "lightningcss": "1.30.1", - "magic-string": "^0.30.19", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.14" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz", - "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.4", - "tar": "^7.5.1" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.14", - "@tailwindcss/oxide-darwin-arm64": "4.1.14", - "@tailwindcss/oxide-darwin-x64": "4.1.14", - "@tailwindcss/oxide-freebsd-x64": "4.1.14", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", - "@tailwindcss/oxide-linux-x64-musl": "4.1.14", - "@tailwindcss/oxide-wasm32-wasi": "4.1.14", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.14.tgz", - "integrity": "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.14.tgz", - "integrity": "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.14.tgz", - "integrity": "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.14.tgz", - "integrity": "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.14.tgz", - "integrity": "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.14.tgz", - "integrity": "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.14.tgz", - "integrity": "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.14.tgz", - "integrity": "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.14.tgz", - "integrity": "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.14.tgz", - "integrity": "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.5.0", - "@emnapi/runtime": "^1.5.0", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.0.5", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.14.tgz", - "integrity": "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz", - "integrity": "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/vite": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.14.tgz", - "integrity": "sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tailwindcss/node": "4.1.14", - "@tailwindcss/oxide": "4.1.14", - "tailwindcss": "4.1.14" - }, - "peerDependencies": { - "vite": "^5.2.0 || ^6 || ^7" - } - }, - "node_modules/@tanstack/react-virtual": { - "version": "3.13.12", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.12.tgz", - "integrity": "sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA==", - "license": "MIT", - "dependencies": { - "@tanstack/virtual-core": "3.13.12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/@tanstack/virtual-core": { - "version": "3.13.12", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz", - "integrity": "sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.25", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.25.tgz", - "integrity": "sha512-oSVZmGtDPmRZtVDqvdKUi/qgCsWp5IDY29wp8na8Bj4B3cc99hfNzvNhlMkVVxctkAOGUA3Km7MMpBHAnWfcIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^18.0.0" - } - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", - "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-react-jsx-self": "^7.27.1", - "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.27", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/baseline-browser-mapping": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.10.tgz", - "integrity": "sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/browserslist": { - "version": "4.26.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", - "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.8.9", - "caniuse-lite": "^1.0.30001746", - "electron-to-chromium": "^1.5.227", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001746", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz", - "integrity": "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", - "dependencies": { - "clsx": "^2.1.1" - }, - "funding": { - "url": "https://polar.sh/cva" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/detect-libc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", - "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.228", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.228.tgz", - "integrity": "sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==", - "dev": true, - "license": "ISC" - }, - "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lightningcss": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", - "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.30.1", - "lightningcss-darwin-x64": "1.30.1", - "lightningcss-freebsd-x64": "1.30.1", - "lightningcss-linux-arm-gnueabihf": "1.30.1", - "lightningcss-linux-arm64-gnu": "1.30.1", - "lightningcss-linux-arm64-musl": "1.30.1", - "lightningcss-linux-x64-gnu": "1.30.1", - "lightningcss-linux-x64-musl": "1.30.1", - "lightningcss-win32-arm64-msvc": "1.30.1", - "lightningcss-win32-x64-msvc": "1.30.1" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", - "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", - "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", - "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", - "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", - "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", - "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", - "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", - "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", - "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", - "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lucide-react": { - "version": "0.544.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.544.0.tgz", - "integrity": "sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-releases": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", - "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ogl": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ogl/-/ogl-1.0.11.tgz", - "integrity": "sha512-kUpC154AFfxi16pmZUK4jk3J+8zxwTWGPo03EoYA8QPbzikHoaC82n6pNTbd+oEaJonaE8aPWBlX7ad9zrqLsA==", - "license": "Unlicense" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rollup": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", - "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.3", - "@rollup/rollup-android-arm64": "4.52.3", - "@rollup/rollup-darwin-arm64": "4.52.3", - "@rollup/rollup-darwin-x64": "4.52.3", - "@rollup/rollup-freebsd-arm64": "4.52.3", - "@rollup/rollup-freebsd-x64": "4.52.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", - "@rollup/rollup-linux-arm-musleabihf": "4.52.3", - "@rollup/rollup-linux-arm64-gnu": "4.52.3", - "@rollup/rollup-linux-arm64-musl": "4.52.3", - "@rollup/rollup-linux-loong64-gnu": "4.52.3", - "@rollup/rollup-linux-ppc64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-musl": "4.52.3", - "@rollup/rollup-linux-s390x-gnu": "4.52.3", - "@rollup/rollup-linux-x64-gnu": "4.52.3", - "@rollup/rollup-linux-x64-musl": "4.52.3", - "@rollup/rollup-openharmony-arm64": "4.52.3", - "@rollup/rollup-win32-arm64-msvc": "4.52.3", - "@rollup/rollup-win32-ia32-msvc": "4.52.3", - "@rollup/rollup-win32-x64-gnu": "4.52.3", - "@rollup/rollup-win32-x64-msvc": "4.52.3", - "fsevents": "~2.3.2" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "license": "MIT" - }, - "node_modules/tailwind-merge": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", - "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/tailwindcss": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", - "integrity": "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", - "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tar": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", - "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/three": { - "version": "0.180.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.180.0.tgz", - "integrity": "sha512-o+qycAMZrh+TsE01GqWUxUIKR1AL0S8pq7zDkYOQw8GqfX8b8VoCKYUoHbhiX5j+7hr8XsuHDVU6+gkQJQKg9w==", - "license": "MIT" - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tw-animate-css": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", - "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Wombosvideo" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/vite": { - "version": "5.4.20", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", - "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - } - } -} diff --git a/src/ui/memory-stream/package.json b/src/ui/memory-stream/package.json deleted file mode 100644 index 6b525ae8..00000000 --- a/src/ui/memory-stream/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "memory-stream-ui", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@headlessui/react": "^2.2.9", - "@heroicons/react": "^2.2.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "lucide-react": "^0.544.0", - "ogl": "^1.0.11", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwind-merge": "^3.3.1", - "three": "^0.180.0" - }, - "devDependencies": { - "@tailwindcss/vite": "^4.1.14", - "@types/react": "^18.2.0", - "@types/react-dom": "^18.2.0", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.21", - "postcss": "^8.5.6", - "tailwindcss": "^4.1.14", - "tw-animate-css": "^1.4.0", - "vite": "^5.0.8" - } -} diff --git a/src/ui/memory-stream/server.js b/src/ui/memory-stream/server.js deleted file mode 100644 index 1ede35ae..00000000 --- a/src/ui/memory-stream/server.js +++ /dev/null @@ -1,232 +0,0 @@ -#!/usr/bin/env node - -import { watch, existsSync, readFileSync } from 'fs'; -import { createServer } from 'http'; -import { homedir } from 'os'; -import { join } from 'path'; -import Database from 'better-sqlite3'; - -const DB_PATH = join(homedir(), '.claude-mem/claude-mem.db'); -const SESSIONS_DIR = join(homedir(), '.claude-mem/sessions'); -const PORT = 3001; - -let clients = []; -let lastMaxId = 0; -let lastOverviewId = 0; - -function safeJsonParse(jsonString) { - if (!jsonString) return []; - try { - return JSON.parse(jsonString); - } catch { - return []; - } -} - -function getMemories(minId = 0) { - const db = new Database(DB_PATH, { readonly: true }); - const memories = db.prepare(` - SELECT id, session_id, created_at, project, origin, title, subtitle, facts, concepts, files_touched - FROM memories - WHERE id > ? AND title IS NOT NULL - ORDER BY id DESC - `).all(minId); - db.close(); - - return memories.map(m => ({ - ...m, - facts: safeJsonParse(m.facts), - concepts: safeJsonParse(m.concepts), - files_touched: safeJsonParse(m.files_touched) - })); -} - -function getOverviews(minId = 0) { - const db = new Database(DB_PATH, { readonly: true }); - const overviews = db.prepare(` - SELECT id, session_id, content, created_at, project, origin - FROM overviews - WHERE id > ? - ORDER BY id DESC - `).all(minId); - db.close(); - - // Enrich overviews with session titles/subtitles from session JSON files - return overviews.map(overview => { - const sessionFile = join(SESSIONS_DIR, `${overview.project}_streaming.json`); - let promptTitle = null; - let promptSubtitle = null; - - try { - if (existsSync(sessionFile)) { - const sessionData = JSON.parse(readFileSync(sessionFile, 'utf8')); - // Only attach title/subtitle if it's from the same Claude session - if (sessionData.claudeSessionId === overview.session_id) { - promptTitle = sessionData.promptTitle || null; - promptSubtitle = sessionData.promptSubtitle || null; - } - } - } catch (e) { - // Ignore errors reading session file - } - - return { - ...overview, - promptTitle, - promptSubtitle - }; - }); -} - -function getSessions() { - const db = new Database(DB_PATH, { readonly: true }); - - // Get unique sessions from overviews - const sessions = db.prepare(` - SELECT DISTINCT - o.session_id, - o.project, - o.created_at, - o.content as overview_content - FROM overviews o - ORDER BY o.created_at DESC - LIMIT 50 - `).all(); - - db.close(); - - return sessions; -} - -function getSessionData(sessionId) { - const db = new Database(DB_PATH, { readonly: true }); - - const overview = db.prepare(` - SELECT id, session_id, content, created_at, project, origin - FROM overviews - WHERE session_id = ? - LIMIT 1 - `).get(sessionId); - - const memories = db.prepare(` - SELECT id, session_id, created_at, project, origin, title, subtitle, facts, concepts, files_touched - FROM memories - WHERE session_id = ? AND title IS NOT NULL - ORDER BY id ASC - `).all(sessionId); - - db.close(); - - return { - overview, - memories: memories.map(m => ({ - ...m, - facts: safeJsonParse(m.facts), - concepts: safeJsonParse(m.concepts), - files_touched: safeJsonParse(m.files_touched) - })) - }; -} - -function broadcast(type, data) { - const message = `data: ${JSON.stringify({ type, ...data })}\n\n`; - clients.forEach(client => client.write(message)); -} - -function broadcastSessionState(eventType, project) { - const message = `data: ${JSON.stringify({ type: eventType, project })}\n\n`; - clients.forEach(client => client.write(message)); - console.log(`📡 Broadcasting ${eventType} for project: ${project}`); -} - -const server = createServer((req, res) => { - res.setHeader('Access-Control-Allow-Origin', '*'); - res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS'); - res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); - - if (req.method === 'OPTIONS') { - res.writeHead(200); - res.end(); - return; - } - - if (req.url === '/stream') { - res.writeHead(200, { - 'Content-Type': 'text/event-stream', - 'Cache-Control': 'no-cache', - 'Connection': 'keep-alive' - }); - - clients.push(res); - console.log(`🔌 Client connected (${clients.length} total)`); - - const allMemories = getMemories(-1); - lastMaxId = allMemories.length > 0 ? Math.max(...allMemories.map(m => m.id)) : 0; - - const allOverviews = getOverviews(-1); - lastOverviewId = allOverviews.length > 0 ? Math.max(...allOverviews.map(o => o.id)) : 0; - - console.log(`📦 Sending ${allMemories.length} memories and ${allOverviews.length} overviews to new client`); - broadcast('initial_load', { memories: allMemories, overviews: allOverviews }); - - req.on('close', () => { - clients = clients.filter(client => client !== res); - console.log(`🔌 Client disconnected (${clients.length} remaining)`); - }); - } else if (req.url === '/api/sessions') { - res.writeHead(200, { 'Content-Type': 'application/json' }); - const sessions = getSessions(); - res.end(JSON.stringify(sessions)); - } else if (req.url.startsWith('/api/session/')) { - const sessionId = req.url.replace('/api/session/', ''); - res.writeHead(200, { 'Content-Type': 'application/json' }); - const sessionData = getSessionData(sessionId); - res.end(JSON.stringify(sessionData)); - } else { - res.writeHead(404); - res.end(); - } -}); - -watch(DB_PATH, (eventType) => { - const newMemories = getMemories(lastMaxId); - if (newMemories.length > 0) { - lastMaxId = Math.max(...newMemories.map(m => m.id)); - console.log(`✨ Broadcasting ${newMemories.length} new memories`); - broadcast('new_memories', { memories: newMemories }); - } - - const newOverviews = getOverviews(lastOverviewId); - if (newOverviews.length > 0) { - lastOverviewId = Math.max(...newOverviews.map(o => o.id)); - console.log(`✨ Broadcasting ${newOverviews.length} new overviews`); - broadcast('new_overviews', { overviews: newOverviews }); - } -}); - -watch(SESSIONS_DIR, (eventType, filename) => { - if (!filename || !filename.endsWith('_streaming.json')) return; - - const project = filename.replace('_streaming.json', ''); - const sessionPath = join(SESSIONS_DIR, filename); - - if (eventType === 'rename') { - // Check if file exists to determine if it was created or deleted - if (existsSync(sessionPath)) { - broadcastSessionState('session_start', project); - } else { - broadcastSessionState('session_end', project); - } - } -}); - -server.listen(PORT, () => { - console.log(`🚀 Memory Stream Server running on http://localhost:${PORT}`); - console.log(`📡 SSE endpoint: http://localhost:${PORT}/stream`); -}); - -process.on('SIGINT', () => { - clients.forEach(client => client.end()); - server.close(); - process.exit(0); -}); diff --git a/src/ui/memory-stream/src/components/ASCIIText.jsx b/src/ui/memory-stream/src/components/ASCIIText.jsx deleted file mode 100644 index 8a9abdf2..00000000 --- a/src/ui/memory-stream/src/components/ASCIIText.jsx +++ /dev/null @@ -1,570 +0,0 @@ -// Component ported and enhanced from https://codepen.io/JuanFuentes/pen/eYEeoyE - -import { useRef, useEffect } from 'react'; -import * as THREE from 'three'; - -const vertexShader = ` -varying vec2 vUv; -uniform float uTime; -uniform float mouse; -uniform float uEnableWaves; - -void main() { - vUv = uv; - float time = uTime * 5.; - - float waveFactor = uEnableWaves; - - vec3 transformed = position; - - transformed.x += sin(time + position.y) * 0.5 * waveFactor; - transformed.y += cos(time + position.z) * 0.15 * waveFactor; - transformed.z += sin(time + position.x) * waveFactor; - - gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0); -} -`; - -const fragmentShader = ` -varying vec2 vUv; -uniform float mouse; -uniform float uTime; -uniform sampler2D uTexture; - -void main() { - float time = uTime; - vec2 pos = vUv; - - float move = sin(time + mouse) * 0.01; - float r = texture2D(uTexture, pos + cos(time * 2. - time + pos.x) * .01).r; - float g = texture2D(uTexture, pos + tan(time * .5 + pos.x - time) * .01).g; - float b = texture2D(uTexture, pos - cos(time * 2. + time + pos.y) * .01).b; - float a = texture2D(uTexture, pos).a; - gl_FragColor = vec4(r, g, b, a); -} -`; - -function map(n, start, stop, start2, stop2) { - return ((n - start) / (stop - start)) * (stop2 - start2) + start2; -} - -const PX_RATIO = typeof window !== 'undefined' ? window.devicePixelRatio : 1; - -class AsciiFilter { - width = 0; - height = 0; - center = { x: 0, y: 0 }; - mouse = { x: 0, y: 0 }; - cols = 0; - rows = 0; - - constructor(renderer, { - fontSize, - fontFamily, - charset, - invert - } = {}) { - this.renderer = renderer; - this.domElement = document.createElement('div'); - this.domElement.style.position = 'absolute'; - this.domElement.style.top = '0'; - this.domElement.style.left = '0'; - this.domElement.style.width = '100%'; - this.domElement.style.height = '100%'; - - this.pre = document.createElement('pre'); - this.domElement.appendChild(this.pre); - - this.canvas = document.createElement('canvas'); - this.context = this.canvas.getContext('2d'); - this.domElement.appendChild(this.canvas); - - this.deg = 0; - this.invert = invert ?? true; - this.fontSize = fontSize ?? 12; - this.fontFamily = fontFamily ?? "'Courier New', monospace"; - this.charset = charset ?? ' .\'`^",:;Il!i~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$'; - - if (this.context) { - this.context.imageSmoothingEnabled = false; - this.context.imageSmoothingEnabled = false; - } - - this.onMouseMove = this.onMouseMove.bind(this); - document.addEventListener('mousemove', this.onMouseMove); - } - - setSize(width, height) { - this.width = width; - this.height = height; - this.renderer.setSize(width, height); - this.reset(); - - this.center = { x: width / 2, y: height / 2 }; - this.mouse = { x: this.center.x, y: this.center.y }; - } - - reset() { - if (this.context) { - this.context.font = `${this.fontSize}px ${this.fontFamily}`; - const charWidth = this.context.measureText('A').width; - - this.cols = Math.floor(this.width / (this.fontSize * (charWidth / this.fontSize))); - this.rows = Math.floor(this.height / this.fontSize); - - this.canvas.width = this.cols; - this.canvas.height = this.rows; - this.pre.style.fontFamily = this.fontFamily; - this.pre.style.fontSize = `${this.fontSize}px`; - this.pre.style.margin = '0'; - this.pre.style.padding = '0'; - this.pre.style.lineHeight = '1em'; - this.pre.style.position = 'absolute'; - this.pre.style.left = '50%'; - this.pre.style.top = '50%'; - this.pre.style.transform = 'translate(-50%, -50%)'; - this.pre.style.zIndex = '9'; - this.pre.style.backgroundAttachment = 'fixed'; - this.pre.style.mixBlendMode = 'difference'; - } - } - - render(scene, camera) { - this.renderer.render(scene, camera); - - const w = this.canvas.width; - const h = this.canvas.height; - if (this.context) { - this.context.clearRect(0, 0, w, h); - if (this.context && w && h) { - this.context.drawImage(this.renderer.domElement, 0, 0, w, h); - } - - this.asciify(this.context, w, h); - this.hue(); - } - } - - onMouseMove(e) { - this.mouse = { x: e.clientX * PX_RATIO, y: e.clientY * PX_RATIO }; - } - - get dx() { - return this.mouse.x - this.center.x; - } - - get dy() { - return this.mouse.y - this.center.y; - } - - hue() { - const deg = (Math.atan2(this.dy, this.dx) * 180) / Math.PI; - this.deg += (deg - this.deg) * 0.075; - this.domElement.style.filter = `hue-rotate(${this.deg.toFixed(1)}deg)`; - } - - asciify(ctx, w, h) { - if (w && h) { - const imgData = ctx.getImageData(0, 0, w, h).data; - let str = ''; - for (let y = 0; y < h; y++) { - for (let x = 0; x < w; x++) { - const i = x * 4 + y * 4 * w; - const [r, g, b, a] = [imgData[i], imgData[i + 1], imgData[i + 2], imgData[i + 3]]; - - if (a === 0) { - str += ' '; - continue; - } - - let gray = (0.3 * r + 0.6 * g + 0.1 * b) / 255; - let idx = Math.floor((1 - gray) * (this.charset.length - 1)); - if (this.invert) idx = this.charset.length - idx - 1; - str += this.charset[idx]; - } - str += '\n'; - } - this.pre.innerHTML = str; - } - } - - dispose() { - document.removeEventListener('mousemove', this.onMouseMove); - } -} - -class CanvasTxt { - constructor(txt, { - fontSize = 200, - fontFamily = 'Arial', - color = '#fdf9f3' - } = {}) { - this.canvas = document.createElement('canvas'); - this.context = this.canvas.getContext('2d'); - this.txt = txt; - this.fontSize = fontSize; - this.fontFamily = fontFamily; - this.color = color; - - this.font = `600 ${this.fontSize}px ${this.fontFamily}`; - } - - resize() { - if (this.context) { - this.context.font = this.font; - - // Split text into lines - const lines = this.txt.split('\n'); - - // Measure all lines to find max width - let maxWidth = 0; - for (const line of lines) { - const metrics = this.context.measureText(line); - maxWidth = Math.max(maxWidth, metrics.width); - } - - // Calculate total height (first line metrics for line height) - const firstMetrics = this.context.measureText(lines[0] || 'A'); - const lineHeight = Math.ceil(firstMetrics.actualBoundingBoxAscent + firstMetrics.actualBoundingBoxDescent); - - const textWidth = Math.ceil(maxWidth) + 20; - const textHeight = lineHeight * lines.length + 20; - - this.canvas.width = textWidth; - this.canvas.height = textHeight; - } - } - - render() { - if (this.context) { - this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); - this.context.fillStyle = this.color; - this.context.font = this.font; - - // Split text into lines and render each - const lines = this.txt.split('\n'); - const metrics = this.context.measureText(lines[0] || 'A'); - const lineHeight = Math.ceil(metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent); - - lines.forEach((line, index) => { - const yPos = 10 + metrics.actualBoundingBoxAscent + (index * lineHeight); - this.context.fillText(line, 10, yPos); - }); - } - } - - get width() { - return this.canvas.width; - } - - get height() { - return this.canvas.height; - } - - get texture() { - return this.canvas; - } -} - -class CanvAscii { - animationFrameId = 0; - - constructor( - { - text, - asciiFontSize, - textFontSize, - textColor, - planeBaseHeight, - enableWaves, - enableMouseRotation - }, - containerElem, - width, - height - ) { - this.textString = text; - this.asciiFontSize = asciiFontSize; - this.textFontSize = textFontSize; - this.textColor = textColor; - this.planeBaseHeight = planeBaseHeight; - this.container = containerElem; - this.width = width; - this.height = height; - this.enableWaves = enableWaves; - this.enableMouseRotation = enableMouseRotation; - - this.camera = new THREE.PerspectiveCamera(45, this.width / this.height, 1, 1000); - this.camera.position.z = 30; - - this.scene = new THREE.Scene(); - this.mouse = { x: 0, y: 0 }; - - this.onMouseMove = this.onMouseMove.bind(this); - - this.setMesh(); - this.setRenderer(); - } - - setMesh() { - this.textCanvas = new CanvasTxt(this.textString, { - fontSize: this.textFontSize, - fontFamily: 'IBM Plex Mono', - color: this.textColor - }); - this.textCanvas.resize(); - this.textCanvas.render(); - - this.texture = new THREE.CanvasTexture(this.textCanvas.texture); - this.texture.minFilter = THREE.NearestFilter; - - const textAspect = this.textCanvas.width / this.textCanvas.height; - const baseH = this.planeBaseHeight; - const planeW = baseH * textAspect; - const planeH = baseH; - - this.geometry = new THREE.PlaneGeometry(planeW, planeH, 36, 36); - this.material = new THREE.ShaderMaterial({ - vertexShader, - fragmentShader, - transparent: true, - uniforms: { - uTime: { value: 0 }, - mouse: { value: 1.0 }, - uTexture: { value: this.texture }, - uEnableWaves: { value: this.enableWaves ? 1.0 : 0.0 } - } - }); - - this.mesh = new THREE.Mesh(this.geometry, this.material); - this.scene.add(this.mesh); - } - - setRenderer() { - this.renderer = new THREE.WebGLRenderer({ antialias: false, alpha: true }); - this.renderer.setPixelRatio(1); - this.renderer.setClearColor(0x000000, 0); - - this.filter = new AsciiFilter(this.renderer, { - fontFamily: 'IBM Plex Mono', - fontSize: this.asciiFontSize, - invert: true - }); - - this.container.appendChild(this.filter.domElement); - this.setSize(this.width, this.height); - - this.container.addEventListener('mousemove', this.onMouseMove); - this.container.addEventListener('touchmove', this.onMouseMove); - } - - setSize(w, h) { - this.width = w; - this.height = h; - - this.camera.aspect = w / h; - this.camera.updateProjectionMatrix(); - - this.filter.setSize(w, h); - - this.center = { x: w / 2, y: h / 2 }; - } - - load() { - this.animate(); - } - - onMouseMove(evt) { - const e = (evt).touches ? (evt).touches[0] : (evt); - const bounds = this.container.getBoundingClientRect(); - const x = e.clientX - bounds.left; - const y = e.clientY - bounds.top; - this.mouse = { x, y }; - } - - animate() { - const animateFrame = () => { - this.animationFrameId = requestAnimationFrame(animateFrame); - this.render(); - }; - animateFrame(); - } - - render() { - const time = new Date().getTime() * 0.001; - - this.textCanvas.render(); - this.texture.needsUpdate = true; - - (this.mesh.material).uniforms.uTime.value = Math.sin(time); - - this.updateRotation(); - this.filter.render(this.scene, this.camera); - } - - updateRotation() { - if (!this.enableMouseRotation) return; - - const x = map(this.mouse.y, 0, this.height, 0.5, -0.5); - const y = map(this.mouse.x, 0, this.width, -0.5, 0.5); - - this.mesh.rotation.x += (x - this.mesh.rotation.x) * 0.05; - this.mesh.rotation.y += (y - this.mesh.rotation.y) * 0.05; - } - - clear() { - this.scene.traverse(object => { - const obj = object; - if (!obj.isMesh) return; - [obj.material].flat().forEach(material => { - material.dispose(); - Object.keys(material).forEach(key => { - const matProp = material[key]; - if (matProp && typeof matProp === 'object' && 'dispose' in matProp && typeof matProp.dispose === 'function') { - matProp.dispose(); - } - }); - }); - obj.geometry.dispose(); - }); - this.scene.clear(); - } - - dispose() { - cancelAnimationFrame(this.animationFrameId); - this.filter.dispose(); - this.container.removeChild(this.filter.domElement); - this.container.removeEventListener('mousemove', this.onMouseMove); - this.container.removeEventListener('touchmove', this.onMouseMove); - this.clear(); - this.renderer.dispose(); - } -} - -export default function ASCIIText({ - text = 'David!', - asciiFontSize = 8, - textFontSize = 200, - textColor = '#fdf9f3', - planeBaseHeight = 8, - enableWaves = true, - enableMouseRotation = true -}) { - const containerRef = useRef(null); - const asciiRef = useRef(null); - - useEffect(() => { - if (!containerRef.current) return; - - const { width, height } = containerRef.current.getBoundingClientRect(); - - if (width === 0 || height === 0) { - const observer = new IntersectionObserver(([entry]) => { - if (entry.isIntersecting && entry.boundingClientRect.width > 0 && entry.boundingClientRect.height > 0) { - const { width: w, height: h } = entry.boundingClientRect; - - asciiRef.current = new CanvAscii({ - text, - asciiFontSize, - textFontSize, - textColor, - planeBaseHeight, - enableWaves, - enableMouseRotation - }, containerRef.current, w, h); - asciiRef.current.load(); - - observer.disconnect(); - } - }, { threshold: 0.1 }); - - observer.observe(containerRef.current); - - return () => { - observer.disconnect(); - if (asciiRef.current) { - asciiRef.current.dispose(); - } - }; - } - - asciiRef.current = new CanvAscii({ - text, - asciiFontSize, - textFontSize, - textColor, - planeBaseHeight, - enableWaves, - enableMouseRotation - }, containerRef.current, width, height); - asciiRef.current.load(); - - const ro = new ResizeObserver(entries => { - if (!entries[0] || !asciiRef.current) return; - const { width: w, height: h } = entries[0].contentRect; - if (w > 0 && h > 0) { - asciiRef.current.setSize(w, h); - } - }); - ro.observe(containerRef.current); - - return () => { - ro.disconnect(); - if (asciiRef.current) { - asciiRef.current.dispose(); - } - }; - }, [text, asciiFontSize, textFontSize, textColor, planeBaseHeight, enableWaves, enableMouseRotation]); - - return ( -
- -
- ); -} diff --git a/src/ui/memory-stream/src/components/Orb.jsx b/src/ui/memory-stream/src/components/Orb.jsx deleted file mode 100644 index 89792e18..00000000 --- a/src/ui/memory-stream/src/components/Orb.jsx +++ /dev/null @@ -1,274 +0,0 @@ -import { useEffect, useRef } from 'react'; -import { Renderer, Program, Mesh, Triangle, Vec3 } from 'ogl'; - -export default function Orb({ - hue = 0, - hoverIntensity = 0.2, - rotateOnHover = true, - forceHoverState = false -}) { - const ctnDom = useRef(null); - - const vert = /* glsl */ ` - precision highp float; - attribute vec2 position; - attribute vec2 uv; - varying vec2 vUv; - void main() { - vUv = uv; - gl_Position = vec4(position, 0.0, 1.0); - } - `; - - const frag = /* glsl */ ` - precision highp float; - - uniform float iTime; - uniform vec3 iResolution; - uniform float hue; - uniform float hover; - uniform float rot; - uniform float hoverIntensity; - varying vec2 vUv; - - vec3 rgb2yiq(vec3 c) { - float y = dot(c, vec3(0.299, 0.587, 0.114)); - float i = dot(c, vec3(0.596, -0.274, -0.322)); - float q = dot(c, vec3(0.211, -0.523, 0.312)); - return vec3(y, i, q); - } - - vec3 yiq2rgb(vec3 c) { - float r = c.x + 0.956 * c.y + 0.621 * c.z; - float g = c.x - 0.272 * c.y - 0.647 * c.z; - float b = c.x - 1.106 * c.y + 1.703 * c.z; - return vec3(r, g, b); - } - - vec3 adjustHue(vec3 color, float hueDeg) { - float hueRad = hueDeg * 3.14159265 / 180.0; - vec3 yiq = rgb2yiq(color); - float cosA = cos(hueRad); - float sinA = sin(hueRad); - float i = yiq.y * cosA - yiq.z * sinA; - float q = yiq.y * sinA + yiq.z * cosA; - yiq.y = i; - yiq.z = q; - return yiq2rgb(yiq); - } - - vec3 hash33(vec3 p3) { - p3 = fract(p3 * vec3(0.1031, 0.11369, 0.13787)); - p3 += dot(p3, p3.yxz + 19.19); - return -1.0 + 2.0 * fract(vec3( - p3.x + p3.y, - p3.x + p3.z, - p3.y + p3.z - ) * p3.zyx); - } - - float snoise3(vec3 p) { - const float K1 = 0.333333333; - const float K2 = 0.166666667; - vec3 i = floor(p + (p.x + p.y + p.z) * K1); - vec3 d0 = p - (i - (i.x + i.y + i.z) * K2); - vec3 e = step(vec3(0.0), d0 - d0.yzx); - vec3 i1 = e * (1.0 - e.zxy); - vec3 i2 = 1.0 - e.zxy * (1.0 - e); - vec3 d1 = d0 - (i1 - K2); - vec3 d2 = d0 - (i2 - K1); - vec3 d3 = d0 - 0.5; - vec4 h = max(0.6 - vec4( - dot(d0, d0), - dot(d1, d1), - dot(d2, d2), - dot(d3, d3) - ), 0.0); - vec4 n = h * h * h * h * vec4( - dot(d0, hash33(i)), - dot(d1, hash33(i + i1)), - dot(d2, hash33(i + i2)), - dot(d3, hash33(i + 1.0)) - ); - return dot(vec4(31.316), n); - } - - vec4 extractAlpha(vec3 colorIn) { - float a = max(max(colorIn.r, colorIn.g), colorIn.b); - return vec4(colorIn.rgb / (a + 1e-5), a); - } - - const vec3 baseColor1 = vec3(0.611765, 0.262745, 0.996078); - const vec3 baseColor2 = vec3(0.298039, 0.760784, 0.913725); - const vec3 baseColor3 = vec3(0.062745, 0.078431, 0.600000); - const float innerRadius = 0.6; - const float noiseScale = 0.65; - - float light1(float intensity, float attenuation, float dist) { - return intensity / (1.0 + dist * attenuation); - } - - float light2(float intensity, float attenuation, float dist) { - return intensity / (1.0 + dist * dist * attenuation); - } - - vec4 draw(vec2 uv) { - vec3 color1 = adjustHue(baseColor1, hue); - vec3 color2 = adjustHue(baseColor2, hue); - vec3 color3 = adjustHue(baseColor3, hue); - - float ang = atan(uv.y, uv.x); - float len = length(uv); - float invLen = len > 0.0 ? 1.0 / len : 0.0; - - float n0 = snoise3(vec3(uv * noiseScale, iTime * 0.5)) * 0.5 + 0.5; - float r0 = mix(mix(innerRadius, 1.0, 0.4), mix(innerRadius, 1.0, 0.6), n0); - float d0 = distance(uv, (r0 * invLen) * uv); - float v0 = light1(1.0, 10.0, d0); - v0 *= smoothstep(r0 * 1.05, r0, len); - float cl = cos(ang + iTime * 2.0) * 0.5 + 0.5; - - float a = iTime * -1.0; - vec2 pos = vec2(cos(a), sin(a)) * r0; - float d = distance(uv, pos); - float v1 = light2(1.5, 5.0, d); - v1 *= light1(1.0, 50.0, d0); - - float v2 = smoothstep(1.0, mix(innerRadius, 1.0, n0 * 0.5), len); - float v3 = smoothstep(innerRadius, mix(innerRadius, 1.0, 0.5), len); - - vec3 col = mix(color1, color2, cl); - col = mix(color3, col, v0); - col = (col + v1) * v2 * v3; - col = clamp(col, 0.0, 1.0); - - return extractAlpha(col); - } - - vec4 mainImage(vec2 fragCoord) { - vec2 center = iResolution.xy * 0.5; - float size = min(iResolution.x, iResolution.y); - vec2 uv = (fragCoord - center) / size * 2.0; - - float angle = rot; - float s = sin(angle); - float c = cos(angle); - uv = vec2(c * uv.x - s * uv.y, s * uv.x + c * uv.y); - - uv.x += hover * hoverIntensity * 0.1 * sin(uv.y * 10.0 + iTime); - uv.y += hover * hoverIntensity * 0.1 * sin(uv.x * 10.0 + iTime); - - return draw(uv); - } - - void main() { - vec2 fragCoord = vUv * iResolution.xy; - vec4 col = mainImage(fragCoord); - gl_FragColor = vec4(col.rgb * col.a, col.a); - } - `; - - useEffect(() => { - const container = ctnDom.current; - if (!container) return; - - const renderer = new Renderer({ alpha: true, premultipliedAlpha: false }); - const gl = renderer.gl; - gl.clearColor(0, 0, 0, 0); - container.appendChild(gl.canvas); - - const geometry = new Triangle(gl); - const program = new Program(gl, { - vertex: vert, - fragment: frag, - uniforms: { - iTime: { value: 0 }, - iResolution: { - value: new Vec3(gl.canvas.width, gl.canvas.height, gl.canvas.width / gl.canvas.height) - }, - hue: { value: hue }, - hover: { value: 0 }, - rot: { value: 0 }, - hoverIntensity: { value: hoverIntensity } - } - }); - - const mesh = new Mesh(gl, { geometry, program }); - - function resize() { - if (!container) return; - const dpr = window.devicePixelRatio || 1; - const width = container.clientWidth; - const height = container.clientHeight; - renderer.setSize(width * dpr, height * dpr); - gl.canvas.style.width = width + 'px'; - gl.canvas.style.height = height + 'px'; - program.uniforms.iResolution.value.set(gl.canvas.width, gl.canvas.height, gl.canvas.width / gl.canvas.height); - } - window.addEventListener('resize', resize); - resize(); - - let targetHover = 0; - let lastTime = 0; - let currentRot = 0; - const rotationSpeed = 0.3; - - const handleMouseMove = (e) => { - const rect = container.getBoundingClientRect(); - const x = e.clientX - rect.left; - const y = e.clientY - rect.top; - const width = rect.width; - const height = rect.height; - const size = Math.min(width, height); - const centerX = width / 2; - const centerY = height / 2; - const uvX = ((x - centerX) / size) * 2.0; - const uvY = ((y - centerY) / size) * 2.0; - - if (Math.sqrt(uvX * uvX + uvY * uvY) < 0.8) { - targetHover = 1; - } else { - targetHover = 0; - } - }; - - const handleMouseLeave = () => { - targetHover = 0; - }; - - container.addEventListener('mousemove', handleMouseMove); - container.addEventListener('mouseleave', handleMouseLeave); - - let rafId; - const update = (t) => { - rafId = requestAnimationFrame(update); - const dt = (t - lastTime) * 0.001; - lastTime = t; - program.uniforms.iTime.value = t * 0.001; - program.uniforms.hue.value = hue; - program.uniforms.hoverIntensity.value = hoverIntensity; - - const effectiveHover = forceHoverState ? 1 : targetHover; - program.uniforms.hover.value += (effectiveHover - program.uniforms.hover.value) * 0.1; - - if (rotateOnHover && effectiveHover > 0.5) { - currentRot += dt * rotationSpeed; - } - program.uniforms.rot.value = currentRot; - - renderer.render({ scene: mesh }); - }; - rafId = requestAnimationFrame(update); - - return () => { - cancelAnimationFrame(rafId); - window.removeEventListener('resize', resize); - container.removeEventListener('mousemove', handleMouseMove); - container.removeEventListener('mouseleave', handleMouseLeave); - container.removeChild(gl.canvas); - gl.getExtension('WEBGL_lose_context')?.loseContext(); - }; - }, [hue, hoverIntensity, rotateOnHover, forceHoverState]); - - return
; -} diff --git a/src/ui/memory-stream/src/components/OverviewCard.jsx b/src/ui/memory-stream/src/components/OverviewCard.jsx deleted file mode 100644 index fc8b29ed..00000000 --- a/src/ui/memory-stream/src/components/OverviewCard.jsx +++ /dev/null @@ -1,987 +0,0 @@ -import { useState, useEffect } from 'react'; -import Orb from './Orb'; -import ASCIIText from './ASCIIText'; - -const DUMMY_DATA = { - title: 'Session Memory Processing', - subtitle: 'Compressing conversation context into semantic memories', - memories: [ - { - id: 1, - title: 'First Memory', - subtitle: 'Initial context capture', - facts: ['Fact 1', 'Fact 2', 'Fact 3'], - concepts: ['concept1', 'concept2'] - }, - { - id: 2, - title: 'Second Memory', - subtitle: 'Additional context', - facts: ['Fact A', 'Fact B'], - concepts: ['concept3'] - }, - { - id: 3, - title: 'Third Memory', - subtitle: 'More context', - facts: ['Fact X', 'Fact Y', 'Fact Z'], - concepts: ['concept4', 'concept5', 'concept6'] - } - ], - overview: 'This session involved implementing a progressive UI visualization system for memory processing. The user requested a session card component with four distinct states showing the evolution from empty state through memory accumulation to final overview completion.' -}; - -export default function OverviewCard({ - debugMode = true, - initialState = 'empty', - sessionData = null // { overview, memories } -}) { - const [uiState, setUiState] = useState(initialState); - const [orbOpacity, setOrbOpacity] = useState(0); - const [titleOpacity, setTitleOpacity] = useState(0); - const [asciiFontSize, setAsciiFontSize] = useState(64); - const [cardOpacity, setCardOpacity] = useState(0); - const [titlePosition, setTitlePosition] = useState('center'); // 'center' or 'top' - const [visibleMemories, setVisibleMemories] = useState(0); - const [overviewOpacity, setOverviewOpacity] = useState(0); - const [expandedMemoryId, setExpandedMemoryId] = useState(null); // null = show overview, number = show expanded memory - const [selectedSessionId, setSelectedSessionId] = useState(null); - const [sessions, setSessions] = useState([]); - const [loadedSessionData, setLoadedSessionData] = useState(null); - - // Use provided sessionData or loaded session data or fallback to dummy data - const data = sessionData || loadedSessionData || DUMMY_DATA; - - // Orb parameters - const [orbHue, setOrbHue] = useState(0); - const [orbHoverIntensity, setOrbHoverIntensity] = useState(0.05); - const [orbRotateOnHover, setOrbRotateOnHover] = useState(false); - const [orbForceHoverState, setOrbForceHoverState] = useState(false); - - // Load settings from localStorage or use defaults - const loadSetting = (key, defaultValue) => { - const saved = localStorage.getItem(`overviewCard_${key}`); - return saved !== null ? JSON.parse(saved) : defaultValue; - }; - - // ASCIIText parameters - Title - const [asciiText, setAsciiText] = useState(() => loadSetting('asciiText', DUMMY_DATA.title)); - const [asciiTitleFontSize, setAsciiTitleFontSize] = useState(() => loadSetting('asciiTitleFontSize', 12)); - const [asciiTitleTextFontSize, setAsciiTitleTextFontSize] = useState(() => loadSetting('asciiTitleTextFontSize', 200)); - const [asciiTitleColor, setAsciiTitleColor] = useState(() => loadSetting('asciiTitleColor', '#60a5fa')); - const [asciiTitlePlaneHeight, setAsciiTitlePlaneHeight] = useState(() => loadSetting('asciiTitlePlaneHeight', 8)); - const [asciiTitleEnableWaves, setAsciiTitleEnableWaves] = useState(() => loadSetting('asciiTitleEnableWaves', false)); - const [asciiTitleEnableMouseRotation, setAsciiTitleEnableMouseRotation] = useState(() => loadSetting('asciiTitleEnableMouseRotation', false)); - const [asciiTitleOffsetY, setAsciiTitleOffsetY] = useState(() => loadSetting('asciiTitleOffsetY', 0)); - - // ASCIIText parameters - Subtitle - const [asciiSubtitle, setAsciiSubtitle] = useState(() => loadSetting('asciiSubtitle', DUMMY_DATA.subtitle)); - const [asciiSubtitleFontSize, setAsciiSubtitleFontSize] = useState(() => loadSetting('asciiSubtitleFontSize', 6)); - const [asciiSubtitleTextFontSize, setAsciiSubtitleTextFontSize] = useState(() => loadSetting('asciiSubtitleTextFontSize', 120)); - const [asciiSubtitleColor, setAsciiSubtitleColor] = useState(() => loadSetting('asciiSubtitleColor', '#60a5fa')); - const [asciiSubtitlePlaneHeight, setAsciiSubtitlePlaneHeight] = useState(() => loadSetting('asciiSubtitlePlaneHeight', 4.8)); - const [asciiSubtitleEnableWaves, setAsciiSubtitleEnableWaves] = useState(() => loadSetting('asciiSubtitleEnableWaves', false)); - const [asciiSubtitleEnableMouseRotation, setAsciiSubtitleEnableMouseRotation] = useState(() => loadSetting('asciiSubtitleEnableMouseRotation', false)); - const [asciiSubtitleOffsetY, setAsciiSubtitleOffsetY] = useState(() => loadSetting('asciiSubtitleOffsetY', 0)); - - // Debug panel section expansion state - const [sectionsExpanded, setSectionsExpanded] = useState({ - animation: true, - orb: false, - asciiTitle: false, - asciiSubtitle: false - }); - - // Save to localStorage whenever settings change - useEffect(() => { - localStorage.setItem('overviewCard_asciiText', JSON.stringify(asciiText)); - }, [asciiText]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiTitleFontSize', JSON.stringify(asciiTitleFontSize)); - }, [asciiTitleFontSize]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiTitleTextFontSize', JSON.stringify(asciiTitleTextFontSize)); - }, [asciiTitleTextFontSize]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiTitleColor', JSON.stringify(asciiTitleColor)); - }, [asciiTitleColor]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiTitlePlaneHeight', JSON.stringify(asciiTitlePlaneHeight)); - }, [asciiTitlePlaneHeight]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiTitleEnableWaves', JSON.stringify(asciiTitleEnableWaves)); - }, [asciiTitleEnableWaves]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiTitleEnableMouseRotation', JSON.stringify(asciiTitleEnableMouseRotation)); - }, [asciiTitleEnableMouseRotation]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiTitleOffsetY', JSON.stringify(asciiTitleOffsetY)); - }, [asciiTitleOffsetY]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitle', JSON.stringify(asciiSubtitle)); - }, [asciiSubtitle]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitleFontSize', JSON.stringify(asciiSubtitleFontSize)); - }, [asciiSubtitleFontSize]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitleTextFontSize', JSON.stringify(asciiSubtitleTextFontSize)); - }, [asciiSubtitleTextFontSize]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitleColor', JSON.stringify(asciiSubtitleColor)); - }, [asciiSubtitleColor]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitlePlaneHeight', JSON.stringify(asciiSubtitlePlaneHeight)); - }, [asciiSubtitlePlaneHeight]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitleEnableWaves', JSON.stringify(asciiSubtitleEnableWaves)); - }, [asciiSubtitleEnableWaves]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitleEnableMouseRotation', JSON.stringify(asciiSubtitleEnableMouseRotation)); - }, [asciiSubtitleEnableMouseRotation]); - - useEffect(() => { - localStorage.setItem('overviewCard_asciiSubtitleOffsetY', JSON.stringify(asciiSubtitleOffsetY)); - }, [asciiSubtitleOffsetY]); - - // Fetch available sessions - useEffect(() => { - if (debugMode) { - fetch('http://localhost:3001/api/sessions') - .then(res => res.json()) - .then(data => setSessions(data)) - .catch(err => console.error('Failed to fetch sessions:', err)); - } - }, [debugMode]); - - // Load session data when selected - useEffect(() => { - if (selectedSessionId && debugMode) { - fetch(`http://localhost:3001/api/session/${selectedSessionId}`) - .then(res => res.json()) - .then(data => { - // Transform data to match expected format - const formattedData = { - title: data.overview?.content?.split('.')[0] || 'Session Overview', - subtitle: data.overview?.content?.substring(0, 100) || '', - overview: data.overview?.content || '', - memories: data.memories || [] - }; - setLoadedSessionData(formattedData); - // Auto-transition to complete state to show the data - if (data.memories?.length > 0) { - setUiState('complete'); - setVisibleMemories(data.memories.length); - } - }) - .catch(err => console.error('Failed to fetch session data:', err)); - } - }, [selectedSessionId, debugMode]); - - // State transition effects - useEffect(() => { - switch (uiState) { - case 'empty': - // Reset everything - setOrbOpacity(0); - setTitleOpacity(0); - setAsciiFontSize(64); - setCardOpacity(0); - setTitlePosition('center'); - setVisibleMemories(0); - setOverviewOpacity(0); - setAsciiText(DUMMY_DATA.title); - setAsciiSubtitle(DUMMY_DATA.subtitle); - - // Fade in orb and title - setTimeout(() => setOrbOpacity(1), 100); - setTimeout(() => { - setTitleOpacity(1); - // Start animating font size down - let size = 64; - const interval = setInterval(() => { - size -= 2; - if (size <= 12) { - size = 12; - clearInterval(interval); - } - setAsciiFontSize(size); - }, 30); - }, 200); - break; - - case 'first-memory': - // Card fades in, title moves to top - setCardOpacity(1); - setTitlePosition('top'); - setVisibleMemories(1); - break; - - case 'accumulating': - // Show all memories - setVisibleMemories(data.memories?.length || DUMMY_DATA.memories.length); - break; - - case 'complete': - // Overview fades in, orb fades out, card becomes solid - setOverviewOpacity(1); - setOrbOpacity(0); - // Make card fully opaque by increasing opacity even more - setCardOpacity(1); - break; - - default: - break; - } - }, [uiState]); - - return ( -
- {/* Debug Controls */} - {debugMode && ( -
- {/* Header */} -
-

Debug Controls

- - {/* Session Selector */} -
- - -
- - {/* State Buttons - 2x2 Grid */} -
- - - - -
-
- - {/* Scrollable Content */} -
- - {/* Animation State Section */} -
- - {sectionsExpanded.animation && ( -
-
- -
- setOrbOpacity(parseFloat(e.target.value))} - className="w-32" - /> - {orbOpacity.toFixed(2)} -
-
- -
- -
- setTitleOpacity(parseFloat(e.target.value))} - className="w-32" - /> - {titleOpacity.toFixed(2)} -
-
- -
- -
- setCardOpacity(parseFloat(e.target.value))} - className="w-32" - /> - {cardOpacity.toFixed(2)} -
-
- -
- -
- setOverviewOpacity(parseFloat(e.target.value))} - className="w-32" - /> - {overviewOpacity.toFixed(2)} -
-
- -
- - -
- -
- -
- setVisibleMemories(parseInt(e.target.value))} - className="w-32" - /> - {visibleMemories}/{data.memories?.length || 0} -
-
-
- )} -
- - {/* Orb Parameters Section */} -
- - {sectionsExpanded.orb && ( -
-
- -
- setOrbHue(parseFloat(e.target.value))} - className="w-32" - /> - {orbHue}° -
-
- -
- -
- setOrbHoverIntensity(parseFloat(e.target.value))} - className="w-32" - /> - {orbHoverIntensity.toFixed(2)} -
-
- -
- -
- -
- -
-
- )} -
- - {/* ASCII Title Parameters Section */} -
- - {sectionsExpanded.asciiTitle && ( -
-
- -