@kecan0406/ttheme 1.2.18 → 1.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/ttheme.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import{createRequire as $I}from"node:module";var dI=Object.create;var{getPrototypeOf:hI,defineProperty:Eb,getOwnPropertyNames:mI}=Object;var pI=Object.prototype.hasOwnProperty;function gI(t){return this[t]}var bI,wI,Df=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?bI??=new WeakMap:wI??=new WeakMap,o=i.get(t);if(o)return o}n=t!=null?dI(hI(t)):{};let s=e||!t||!t.__esModule?Eb(n,"default",{value:t,enumerable:!0}):n;for(let a of mI(t))if(!pI.call(s,a))Eb(s,a,{get:gI.bind(t,a),enumerable:!0});if(r)i.set(t,s);return s};var Mt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Xt=$I(import.meta.url);var sd=Mt((Qj,Xb)=>{var GI=Xt("util"),Vb=Xt("stream"),nn=Xb.exports=function(){Vb.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};GI.inherits(nn,Vb);nn.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){if(this._process(),this._paused&&this._reads&&this._reads.length>0)this._paused=!1,this.emit("drain")}.bind(this))};nn.prototype.write=function(t,e){if(!this.writable)return this.emit("error",Error("Stream not writable")),!1;let n;if(Buffer.isBuffer(t))n=t;else n=Buffer.from(t,e||this._encoding);if(this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0)this._paused=!0;return this.writable&&!this._paused};nn.prototype.end=function(t,e){if(t)this.write(t,e);if(this.writable=!1,!this._buffers)return;if(this._buffers.length===0)this._end();else this._buffers.push(null),this._process()};nn.prototype.destroySoon=nn.prototype.end;nn.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};nn.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};nn.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];if(e.length>t.length)this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length));else this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e)};nn.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);while(e<t.length){let i=this._buffers[n++],o=Math.min(i.length,t.length-e);if(i.copy(r,e,0,o),e+=o,o!==i.length)this._buffers[--n]=i.slice(o)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};nn.prototype._process=function(){try{while(this._buffered>0&&this._reads&&this._reads.length>0){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}if(this._buffers&&!this.writable)this._end()}catch(t){this.emit("error",t)}}});var ad=Mt((BI)=>{var Ir=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];BI.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,o=(t-r)/8,s=(e-i)/8;for(let a=0;a<Ir.length;a++){let c=Ir[a],u=o*c.x.length,f=s*c.y.length;for(let l=0;l<c.x.length;l++)if(c.x[l]<r)u++;else break;for(let l=0;l<c.y.length;l++)if(c.y[l]<i)f++;else break;if(u>0&&f>0)n.push({width:u,height:f,index:a})}return n};BI.getInterlaceIterator=function(t){return function(e,n,r){let i=e%Ir[r].x.length,o=(e-i)/Ir[r].x.length*8+Ir[r].x[i],s=n%Ir[r].y.length,a=(n-s)/Ir[r].y.length*8+Ir[r].y[s];return o*4+a*t*4}}});var cd=Mt((e_,Qb)=>{Qb.exports=function(e,n,r){let i=e+n-r,o=Math.abs(i-e),s=Math.abs(i-n),a=Math.abs(i-r);if(o<=s&&o<=a)return e;if(s<=a)return n;return r}});var ud=Mt((n_,ew)=>{var KI=ad(),zI=cd();function tw(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var No=ew.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:o,depth:s}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=KI.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:tw(a[c].width,o,s),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:tw(n,o,s),height:r,lineIndex:0});if(s===8)this._xComparison=o;else if(s===16)this._xComparison=o*2;else this._xComparison=1};No.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};No.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let o=0;o<n;o++){let s=t[1+o],a=o>i?e[o-r]:0;e[o]=s+a}};No.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let o=t[1+i],s=r?r[i]:0;e[i]=o+s}};No.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,f=Math.floor((u+c)/2);e[s]=a+f}};No.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,f=s>i&&o?o[s-r]:0,l=zI(u,c,f);e[s]=a+l}};No.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(e===0)n=t.slice(1,i+1);else switch(n=Buffer.alloc(i),e){case 1:this._unFilterType1(t,n,i);break;case 2:this._unFilterType2(t,n,i);break;case 3:this._unFilterType3(t,n,i);break;case 4:this._unFilterType4(t,n,i);break;default:throw Error("Unrecognised filter type - "+e)}if(this.write(n),r.lineIndex++,r.lineIndex>=r.height)this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex];else this._lastLine=n;if(r)this.read(r.byteWidth+1,this._reverseFilterLine.bind(this));else this._lastLine=null,this.complete()}});var iw=Mt((r_,rw)=>{var qI=Xt("util"),nw=sd(),DI=ud(),JI=rw.exports=function(t){nw.call(this);let e=[],n=this;this._filter=new DI(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};qI.inherits(JI,nw)});var To=Mt((i_,ow)=>{ow.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var dd=Mt((o_,sw)=>{var ld=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)if(e&1)e=3988292384^e>>>1;else e=e>>>1;ld[t]=e}})();var fd=sw.exports=function(){this._crc=-1};fd.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=ld[(this._crc^t[e])&255]^this._crc>>>8;return!0};fd.prototype.crc32=function(){return this._crc^-1};fd.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=ld[(e^t[n])&255]^e>>>8;return e^-1}});var hd=Mt((s_,aw)=>{var Ct=To(),YI=dd(),_t=aw.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[Ct.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[Ct.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[Ct.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[Ct.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[Ct.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[Ct.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};_t.prototype.start=function(){this.read(Ct.PNG_SIGNATURE.length,this._parseSignature.bind(this))};_t.prototype._parseSignature=function(t){let e=Ct.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};_t.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let o=4;o<8;o++)r+=String.fromCharCode(t[o]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==Ct.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new YI,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!i){this.error(Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};_t.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};_t.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};_t.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(Error("Crc error - "+e+" - "+n));return}if(!this._hasIEND)this.read(8,this._parseChunkBegin.bind(this))};_t.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};_t.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],o=t[10],s=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(Error("Unsupported bit depth "+r));return}if(!(i in Ct.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(o!==0){this.error(Error("Unsupported compression method"));return}if(s!==0){this.error(Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(Error("Unsupported interlace method"));return}this._colorType=i;let c=Ct.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&Ct.COLORTYPE_PALETTE),color:Boolean(i&Ct.COLORTYPE_COLOR),alpha:Boolean(i&Ct.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};_t.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};_t.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};_t.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};_t.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===Ct.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}if(this._colorType===Ct.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===Ct.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};_t.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};_t.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/Ct.GAMMA_DIVISION),this._handleChunkEnd()};_t.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};_t.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===Ct.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error("Expected palette not found");this.inflateData(e);let n=t-e.length;if(n>0)this._handleIDAT(n);else this._handleChunkEnd()};_t.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};_t.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var md=Mt((eR)=>{var cw=ad(),ZI=[function(){},function(t,e,n,r){if(r===e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],VI=[function(){},function(t,e,n,r){let i=e[0];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function XI(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let o=t[r];r++;let s,a,c,u,f,l,d,h;switch(e){default:throw Error("unrecognised depth");case 16:d=t[r],r++,n.push((o<<8)+d);break;case 4:d=o&15,h=o>>4,n.push(h,d);break;case 2:f=o&3,l=o>>2&3,d=o>>4&3,h=o>>6&3,n.push(h,d,l,f);break;case 1:s=o&1,a=o>>1&1,c=o>>2&1,u=o>>3&1,f=o>>4&1,l=o>>5&1,d=o>>6&1,h=o>>7&1,n.push(h,d,l,f,u,c,a,s);break}}return{get:function(o){while(n.length<o)i();let s=n.slice(0,o);return n=n.slice(o),s},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function QI(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++)for(let f=0;f<s;f++){let l=n(f,u,c);ZI[r](e,i,l,o),o+=r}return o}function tR(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++){for(let f=0;f<s;f++){let l=i.get(r),d=n(f,u,c);VI[r](e,l,d,o)}i.resetAfterLine()}}eR.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:o,interlace:s}=e,a;if(i!==8)a=XI(t,i);let c;if(i<=8)c=Buffer.alloc(n*r*4);else c=new Uint16Array(n*r*4);let u=Math.pow(2,i)-1,f=0,l,d;if(s)l=cw.getImagePasses(n,r),d=cw.getInterlaceIterator(n,r);else{let h=0;d=function(){let m=h;return h+=4,m},l=[{width:n,height:r}]}for(let h=0;h<l.length;h++)if(i===8)f=QI(l[h],c,d,o,t,f);else tR(l[h],c,d,o,a,u);if(i===8){if(f!==t.length)throw Error("extra data found")}else a.end();return c}});var pd=Mt((c_,uw)=>{function rR(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=i[t[o]];if(!c)throw Error("index "+t[o]+" not in palette");for(let u=0;u<4;u++)e[o+u]=c[u];o+=4}}function iR(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[o])c=!0}else if(i[0]===t[o]&&i[1]===t[o+1]&&i[2]===t[o+2])c=!0;if(c)for(let u=0;u<4;u++)e[o+u]=0;o+=4}}function oR(t,e,n,r,i){let o=255,s=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let f=0;f<4;f++)e[a+f]=Math.floor(t[a+f]*o/s+0.5);a+=4}}uw.exports=function(t,e,n=!1){let{depth:r,width:i,height:o,colorType:s,transColor:a,palette:c}=e,u=t;if(s===3)rR(t,u,i,o,c);else{if(a)iR(t,u,i,o,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*o*4);oR(t,u,i,o,r)}}return u}});var dw=Mt((u_,fw)=>{var sR=Xt("util"),gd=Xt("zlib"),lw=sd(),aR=iw(),cR=hd(),uR=md(),lR=pd(),yn=fw.exports=function(t){lw.call(this),this._parser=new cR(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};sR.inherits(yn,lw);yn.prototype._handleError=function(t){if(this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy)this._inflate.destroy();if(this._filter)this._filter.destroy(),this._filter.on("error",function(){});this.errord=!0};yn.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=gd.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,gd.Z_MIN_CHUNK);this._inflate=gd.createInflate({chunkSize:r});let i=n,o=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;o(a)}),this._filter.on("complete",this._complete.bind(this));let s=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){if(!i)return;if(a.length>i)a=a.slice(0,i);i-=a.length,s(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};yn.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new aR(this._bitmapInfo)};yn.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};yn.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};yn.prototype._simpleTransparency=function(){this._metaData.alpha=!0};yn.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};yn.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};yn.prototype._complete=function(t){if(this.errord)return;let e;try{let n=uR.dataToBitMap(t,this._bitmapInfo);e=lR(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var mw=Mt((l_,hw)=>{var Ue=To();hw.exports=function(t,e,n,r){let i=[Ue.COLORTYPE_COLOR_ALPHA,Ue.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let m=function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256}();if(r.bitDepth===8||r.bitDepth===16&&m)return t}let o=r.bitDepth!==16?t:new Uint16Array(t.buffer),s=255,a=Ue.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=Ue.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)s=65535,c*=2;let u=Buffer.alloc(e*n*c),f=0,l=0,d=r.bgColor||{};if(d.red===void 0)d.red=s;if(d.green===void 0)d.green=s;if(d.blue===void 0)d.blue=s;function h(){let m,p,b,$=s;switch(r.inputColorType){case Ue.COLORTYPE_COLOR_ALPHA:$=o[f+3],m=o[f],p=o[f+1],b=o[f+2];break;case Ue.COLORTYPE_COLOR:m=o[f],p=o[f+1],b=o[f+2];break;case Ue.COLORTYPE_ALPHA:$=o[f+1],m=o[f],p=m,b=m;break;case Ue.COLORTYPE_GRAYSCALE:m=o[f],p=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)$/=s,m=Math.min(Math.max(Math.round((1-$)*d.red+$*m),0),s),p=Math.min(Math.max(Math.round((1-$)*d.green+$*p),0),s),b=Math.min(Math.max(Math.round((1-$)*d.blue+$*b),0),s)}return{red:m,green:p,blue:b,alpha:$}}for(let m=0;m<n;m++)for(let p=0;p<e;p++){let b=h(o,f);switch(r.colorType){case Ue.COLORTYPE_COLOR_ALPHA:case Ue.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[l]=b.red,u[l+1]=b.green,u[l+2]=b.blue,i)u[l+3]=b.alpha}else if(u.writeUInt16BE(b.red,l),u.writeUInt16BE(b.green,l+2),u.writeUInt16BE(b.blue,l+4),i)u.writeUInt16BE(b.alpha,l+6);break;case Ue.COLORTYPE_ALPHA:case Ue.COLORTYPE_GRAYSCALE:{let $=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[l]=$,i)u[l+1]=b.alpha}else if(u.writeUInt16BE($,l),i)u.writeUInt16BE(b.alpha,l+2);break}default:throw Error("unrecognised color Type "+r.colorType)}f+=a,l+=c}return u}});var bw=Mt((f_,gw)=>{var pw=cd();function fR(t,e,n,r,i){for(let o=0;o<n;o++)r[i+o]=t[e+o]}function dR(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++)r+=Math.abs(t[o]);return r}function hR(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=t[e+s]-a;r[i+s]=c}}function mR(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=t[e+o]-s;i+=Math.abs(a)}return i}function pR(t,e,n,r,i){for(let o=0;o<n;o++){let s=e>0?t[e+o-n]:0,a=t[e+o]-s;r[i+o]=a}}function gR(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++){let s=e>0?t[o-n]:0,a=t[o]-s;r+=Math.abs(a)}return r}function bR(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=t[e+s]-(a+c>>1);r[i+s]=u}}function wR(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=t[e+o]-(s+a>>1);i+=Math.abs(c)}return i}function $R(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=e>0&&s>=o?t[e+s-(n+o)]:0,f=t[e+s]-pw(a,c,u);r[i+s]=f}}function kR(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=e>0&&o>=r?t[e+o-(n+r)]:0,u=t[e+o]-pw(s,a,c);i+=Math.abs(u)}return i}var yR={0:fR,1:hR,2:pR,3:bR,4:$R},vR={0:dR,1:mR,2:gR,3:wR,4:kR};gw.exports=function(t,e,n,r,i){let o;if(!("filterType"in r)||r.filterType===-1)o=[0,1,2,3,4];else if(typeof r.filterType==="number")o=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let s=e*i,a=0,c=0,u=Buffer.alloc((s+1)*n),f=o[0];for(let l=0;l<n;l++){if(o.length>1){let d=1/0;for(let h=0;h<o.length;h++){let m=vR[o[h]](t,c,s,i);if(m<d)f=o[h],d=m}}u[a]=f,a++,yR[f](t,c,s,u,a,i),a+=s,c+=s}return u}});var bd=Mt((d_,ww)=>{var Qt=To(),ER=dd(),SR=mw(),MR=bw(),xR=Xt("zlib"),Rr=ww.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32768,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||xR.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:Qt.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:Qt.COLORTYPE_COLOR_ALPHA,[Qt.COLORTYPE_GRAYSCALE,Qt.COLORTYPE_COLOR,Qt.COLORTYPE_COLOR_ALPHA,Qt.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([Qt.COLORTYPE_GRAYSCALE,Qt.COLORTYPE_COLOR,Qt.COLORTYPE_COLOR_ALPHA,Qt.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw Error("option bit depth:"+t.bitDepth+" is not supported at present")};Rr.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Rr.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Rr.prototype.filterData=function(t,e,n){let r=SR(t,e,n,this._options),i=Qt.COLORTYPE_TO_BPP_MAP[this._options.colorType];return MR(r,e,n,this._options,i)};Rr.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);if(r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e)e.copy(r,8);return r.writeInt32BE(ER.crc32(r.slice(4,r.length-4)),r.length-4),r};Rr.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*Qt.GAMMA_DIVISION),0),this._packChunk(Qt.TYPE_gAMA,e)};Rr.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(Qt.TYPE_IHDR,n)};Rr.prototype.packIDAT=function(t){return this._packChunk(Qt.TYPE_IDAT,t)};Rr.prototype.packIEND=function(){return this._packChunk(Qt.TYPE_IEND,null)}});var vw=Mt((h_,yw)=>{var OR=Xt("util"),$w=Xt("stream"),IR=To(),RR=bd(),kw=yw.exports=function(t){$w.call(this);let e=t||{};this._packer=new RR(e),this._deflate=this._packer.createDeflate(),this.readable=!0};OR.inherits(kw,$w);kw.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(IR.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r)this.emit("data",this._packer.packGAMA(r));let i=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(o){this.emit("data",this._packer.packIDAT(o))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Iw=Mt((Zs,Ow)=>{var Ew=Xt("assert").ok,Ho=Xt("zlib"),PR=Xt("util"),Sw=Xt("buffer").kMaxLength;function xi(t){if(!(this instanceof xi))return new xi(t);if(t&&t.chunkSize<Ho.Z_MIN_CHUNK)t.chunkSize=Ho.Z_MIN_CHUNK;if(Ho.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null)this._maxLength=t.maxLength}function AR(t){return new xi(t)}function Mw(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}xi.prototype._processChunk=function(t,e,n){if(typeof n==="function")return Ho.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,o=this._chunkSize-this._offset,s=this._maxLength,a=0,c=[],u=0,f;this.on("error",function(m){f=m});function l(m,p){if(r._hadError)return;let b=o-p;if(Ew(b>=0,"have should not go down"),b>0){let $=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,$.length>s)$=$.slice(0,s);if(c.push($),u+=$.length,s-=$.length,s===0)return!1}if(p===0||r._offset>=r._chunkSize)o=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(p===0)return a+=i-m,i=m,!0;return!1}Ew(this._handle,"zlib binding closed");let d;do d=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,o),d=d||this._writeState;while(!this._hadError&&l(d[0],d[1]));if(this._hadError)throw f;if(u>=Sw)throw Mw(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+Sw.toString(16)+" bytes");let h=Buffer.concat(c,u);return Mw(this),h};PR.inherits(xi,Ho.Inflate);function NR(t,e){if(typeof e==="string")e=Buffer.from(e);if(!(e instanceof Buffer))throw TypeError("Not a string or buffer");let n=t._finishFlushFlag;if(n==null)n=Ho.Z_FINISH;return t._processChunk(e,n)}function xw(t,e){return NR(new xi(e),t)}Ow.exports=Zs=xw;Zs.Inflate=xi;Zs.createInflate=AR;Zs.inflateSync=xw});var wd=Mt((m_,Pw)=>{var Rw=Pw.exports=function(t){this._buffer=t,this._reads=[]};Rw.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Rw.prototype.process=function(){while(this._reads.length>0&&this._buffer.length){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)throw Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)throw Error("unrecognised content at end of stream")}});var Aw=Mt((FR)=>{var TR=wd(),HR=ud();FR.process=function(t,e){let n=[],r=new TR(t);return new HR(e,{read:r.read.bind(r),write:function(o){n.push(o)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Fw=Mt((g_,Hw)=>{var Nw=!0,Tw=Xt("zlib"),CR=Iw();if(!Tw.deflateSync)Nw=!1;var jR=wd(),_R=Aw(),GR=hd(),BR=md(),UR=pd();Hw.exports=function(t,e){if(!Nw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(E){n=E}let i;function o(E){i=E}function s(E){i.transColor=E}function a(E){i.palette=E}function c(){i.alpha=!0}let u;function f(E){u=E}let l=[];function d(E){l.push(E)}let h=new jR(t);if(new GR(e,{read:h.read.bind(h),error:r,metadata:o,gamma:f,palette:a,transColor:s,inflateData:d,simpleTransparency:c}).start(),h.process(),n)throw n;let p=Buffer.concat(l);l.length=0;let b;if(i.interlace)b=Tw.inflateSync(p);else{let x=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=CR(p,{chunkSize:x,maxLength:x})}if(p=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let $=_R.process(b,i);p=null;let k=BR.dataToBitMap($,i);$=null;let v=UR(k,i,e.skipRescale);return i.data=v,i.gamma=u||0,i}});var _w=Mt((b_,jw)=>{var Lw=!0,Cw=Xt("zlib");if(!Cw.deflateSync)Lw=!1;var WR=To(),KR=bd();jw.exports=function(t,e){if(!Lw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new KR(e||{}),i=[];if(i.push(Buffer.from(WR.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let o=r.filterData(t.data,t.width,t.height),s=Cw.deflateSync(o,r.getDeflateOptions());if(o=null,!s||!s.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(s)),i.push(r.packIEND()),Buffer.concat(i)}});var Gw=Mt((DR)=>{var zR=Fw(),qR=_w();DR.read=function(t,e){return zR(t,e||{})};DR.write=function(t,e){return qR(t,e)}});var Uw=Mt((tP)=>{var ZR=Xt("util"),Bw=Xt("stream"),VR=dw(),XR=vw(),QR=Gw(),ae=tP.PNG=function(t){if(Bw.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data)this.data.fill(0);this.gamma=0,this.readable=this.writable=!0,this._parser=new VR(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new XR(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};ZR.inherits(ae,Bw);ae.sync=QR;ae.prototype.pack=function(){if(!this.data||!this.data.length)return this.emit("error","No data provided"),this;return process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this};ae.prototype.parse=function(t,e){if(e){let n,r;n=function(i){this.removeListener("error",r),this.data=i,e(null,this)}.bind(this),r=function(i){this.removeListener("parsed",n),e(i,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};ae.prototype.write=function(t){return this._parser.write(t),!0};ae.prototype.end=function(t){this._parser.end(t)};ae.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};ae.prototype._gamma=function(t){this.gamma=t};ae.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};ae.bitblt=function(t,e,n,r,i,o,s,a){if(n|=0,r|=0,i|=0,o|=0,s|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+o>t.height)throw Error("bitblt reading outside image");if(s>e.width||a>e.height||s+i>e.width||a+o>e.height)throw Error("bitblt writing outside image");for(let c=0;c<o;c++)t.data.copy(e.data,(a+c)*e.width+s<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};ae.prototype.bitblt=function(t,e,n,r,i,o,s){return ae.bitblt(this,t,e,n,r,i,o,s),this};ae.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let i=0;i<3;i++){let o=t.data[r+i]/255;o=Math.pow(o,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(o*255)}}t.gamma=0}};ae.prototype.adjustGamma=function(){ae.adjustGamma(this)}});var Hh=Mt((jB,Gk)=>{var Th={to(t,e){if(!e)return`\x1B[${t+1}G`;return`\x1B[${e+1};${t+1}H`},move(t,e){let n="";if(t<0)n+=`\x1B[${-t}D`;else if(t>0)n+=`\x1B[${t}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},XN={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},QN={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?Th.up():"");if(t)e+=Th.left;return e}};Gk.exports={cursor:Th,scroll:XN,erase:QN,beep:"\x07"}});import{spawnSync as Nj}from"node:child_process";import{isMainThread as Tj}from"node:worker_threads";import{parseArgs as Sj}from"node:util";var ft={name:"@kecan0406/ttheme",version:"1.2.18",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, kitty, Alacritty, WezTerm, iTerm2, Windows Terminal, Warp and Konsole",license:"MIT",author:"kecan0406",repository:{type:"git",url:"git+https://github.com/kecan0406/ttheme.git"},homepage:"https://github.com/kecan0406/ttheme#readme",bugs:"https://github.com/kecan0406/ttheme/issues",keywords:["terminal","theme","ghostty","kitty","alacritty","wezterm","iterm2","konsole"],devDependencies:{"@biomejs/biome":"^2.3.0","@clack/prompts":"^1.7.0","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@types/bun":"^1.3.0","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^5.8.2",uqr:"^0.1.3"},engines:{bun:">=1.3",node:">=22"}};var Sb=(()=>{let t=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(e)=>{let n=0;t.lastIndex=0;while(t.test(e))n+=1;return e.length-n}})(),Mb=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},xb=(t)=>{return t===8987||t===9001||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12771||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=19903||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t>=131072&&t<=196605||t>=196608&&t<=262141};var yI=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,vI=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Ob=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,EI=/\t{1,1000}/y,Ib=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,SI=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,MI=/\p{M}+/gu,xI={limit:1/0,ellipsis:""},Rb=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",o=e?.ellipsisWidth??(i?Rb(i,xI,n).width:0),s=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,f=2,l=n.regularWidth??1,d=n.wideWidth??2,h=[[SI,l],[yI,0],[vI,a],[EI,c],[Ib,u],[Ob,d]],m=0,p=0,b=t.length,$=0,k=!1,v=b,E=Math.max(0,r-o),x=0,M=0,R=0,F=0;t:while(!0){if(M>x||p>=b&&p>m){let N=t.slice(x,M)||t.slice(m,p);$=0;for(let j of N.replaceAll(MI,"")){let z=j.codePointAt(0)||0;if(Mb(z))F=2;else if(xb(z))F=d;else F=l;if(R+F>E)v=Math.min(v,Math.max(x,m)+$);if(R+F>r){k=!0;break t}$+=j.length,R+=F}x=M=0}if(p>=b)break t;for(let N=0,j=h.length;N<j;N++){let[z,G]=h[N];if(z.lastIndex=p,z.test(t)){if($=z===Ob?Sb(t.slice(p,z.lastIndex)):z===Ib?1:z.lastIndex-p,F=$*G,R+F>E)v=Math.min(v,p+Math.floor((E-R)/G));if(R+F>r){k=!0;break t}R+=F,x=m,M=p,p=m=z.lastIndex;continue t}}p+=1}return{width:k?E:R,index:k?v:b,truncated:k,ellipsed:k&&r>=o}},Pb=Rb;var OI={limit:1/0,ellipsis:"",ellipsisWidth:0},II=(t,e={})=>{return Pb(t,OI,e).width},_=II;var RI=/^#[0-9a-f]{6}$/;function he(t){return RI.test(t)}function st(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function At(t,e,n){let r=st(t),i=st(e);return`#${r.map((o,s)=>Math.round(o+((i[s]??0)-o)*n).toString(16).padStart(2,"0")).join("")}`}function Et(t){let[e,n,r]=st(t).map((i)=>{let o=i/255;return o<=0.03928?o/12.92:((o+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function $t(t,e){let n=Et(t),r=Et(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function _c(t,e){return Math.round($t(t,e)*100)/100}function PI(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function xt(t){let[e,n,r]=st(t).map(PI),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),o=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),s=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*o+0.4505937099*s,c=0.0259040371*i+0.7827717662*o-0.808675766*s;return{l:0.2104542553*i+0.793617785*o-0.0040720468*s,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var Ab={dim:["2","22"],bold:["1","22"],under:["4","24"],reverse:["7","27"],accent:["36","39"],pill:["7;1;36","22;27;39"],match:["1;4;36","22;24;39"],ok:["32","39"],warn:["33","39"],error:["31","39"]},AI={stage:0.08,bar:0.14,selection:0.2,tab:0.3,line:0.45},A={gutter:"▌",current:"◆",signature:"✦",closed:"▸",opened:"▾",on:"●",off:"○",ok:"✓",miss:"✗",above:"↑",below:"↓",update:"⇡",auto:"↻",star:"★",link:"⧉",search:"⌕",linked:"⇠",contrast:"◐",swatch:"■",pictures:"▣",sep:"·",cut:"…"},Wn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function Se(t){return`\x1B[${t}m`}function gt(t){return Se(Ab[t][0])}function Jf(t){return Se(Ab[t][1])}var me=Se("0"),bt=Se("39"),Nb=Se("49"),se=Se("39;49");function vi(t){return Se(String(t<8?30+t:82+t))}function Tb(t){return Se(String(t<8?40+t:92+t))}function Hb(t,e){return Se(`38;5;${t};48;5;${e}`)}function Gc(t){let e=t.replace("#","");return[e.slice(0,2),e.slice(2,4),e.slice(4,6)].map((n)=>Number.parseInt(n,16)).join(";")}function Kn(t){return Se(`38;2;${Gc(t)}`)}function Yf(t){return Se(`48;2;${Gc(t)}`)}function Fb(t,e){return Se(`48;2;${Gc(t)};38;2;${Gc(e)}`)}function Lb(t,e=bt){return`${t.map((n)=>`${Kn(n)}${A.swatch}`).join(" ")}${e}`}function Ei(t,e,n){return At(t,e,AI[n])}function Zf(t){let e=!1,n=!1,r=!1,i=!1,o=!1,s=!1;for(let c of t.split("\x1B[").slice(1)){let u=/^([0-9;]*)m/.exec(c)?.[1];if(u===void 0)continue;let f=(u||"0").split(";").map(Number);for(let l=0;l<f.length;l++){let d=f[l];if(d===0)e=n=r=i=o=s=!1;else if(d===1||d===2)e=!0;else if(d===22)e=!1;else if(d===3||d===23)n=d===3;else if(d===4||d===24)r=d===4;else if(d===7||d===27)i=d===7;else if(d===38||d===48)o||=d===38,s||=d===48,l+=f[l+1]===5?2:4;else if(d===39)o=!1;else if(d===49)s=!1;else if(d>=30&&d<=37||d>=90&&d<=97)o=!0;else if(d>=40&&d<=47||d>=100&&d<=107)s=!0}}let a=[e&&"22",n&&"23",r&&"24",i&&"27",o&&"39",s&&"49"].filter(Boolean);return a.length>0?Se(a.join(";")):""}function Me(t){let e=(n)=>(r)=>t?`${gt(n)}${r}${Jf(n)}`:r;return{color:t,dim:e("dim"),bold:e("bold"),accent:e("accent"),pill:e("pill"),ok:e("ok"),warn:e("warn"),error:e("error"),fg:(n)=>t?Kn(n):"",bg:(n)=>t?Yf(n):""}}function Bc(t,e){return e?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function Vf(t,e){if(t[e]!=="\x1B")return 0;if(t[e+1]==="]"){let r=t.indexOf("\x07",e+2),i=t.indexOf("\x1B\\",e+2),o=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return o?o-e:0}if(t[e+1]!=="[")return 0;let n=e+2;while(n<t.length&&!/[@-~]/.test(t[n]))n++;return n<t.length?n-e+1:0}var Xf=new Intl.Segmenter(void 0,{granularity:"grapheme"});function Uc(t){let e=[],n=0;while(n<t.length){let r=Vf(t,n);if(r>0){e.push({text:t.slice(n,n+r),start:n,end:n+r,width:0,sequence:!0}),n+=r;continue}let i=t.indexOf("\x1B",n+1),o=i===-1?t.length:i;for(let{segment:s,index:a}of Xf.segment(t.slice(n,o)))e.push({text:s,start:n+a,end:n+a+s.length,width:_(s),sequence:!1});n=o}return e}function Qf(t,e){let n="",r=0;for(let i of Uc(t)){if(!i.sequence){if(r+i.width>e)break;r+=i.width}n+=i.text}return{head:n,used:r}}function nt(t,e,n=!0){if(e<=0)return"";let r=_(t);if(r<=e)return n?t+" ".repeat(e-r):t;let{head:i,used:o}=Qf(t,e-1);return`${i}${Zf(i)}…${n?" ".repeat(e-1-o):""}`}function Cb(t,e){let{head:n,used:r}=Qf(t,e);return`${n}${Zf(n)}${" ".repeat(e-r)}`}function It(t,e,n){let r=n-_(e)-1;return r<=0?nt(t,n):`${nt(t,r)} ${e}`}function St(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let o=r?`${r} ${i}`:i;if(_(o)<=e){r=o;continue}if(r)n.push(r);while(_(i)>e){let{head:s}=Qf(i,e),a=Math.max(s.lastIndexOf("/")+1,s.lastIndexOf("#")),c=a>0?a:s.length||Uc(i)[0].end;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}import{existsSync as fk,readFileSync as Sh}from"node:fs";import{join as dk}from"node:path";var Mr=7,jb=3,td=0.15,_b=1.6,nd=[1,2,3,4,5,6,9,10,11,12,13,14],Gb=[7,15],xr=[1,2,3,4,5,6],xe={1:{name:"red",center:19,width:25},2:{name:"green",center:132,width:35},3:{name:"yellow",center:88,width:35},4:{name:"blue",center:250,width:60},5:{name:"magenta",center:329,width:40},6:{name:"cyan",center:197,width:60}},Si=0.03,en=25,Io=15,Ro=0.08;function zn(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function ed(t,e,n){let r=t.background;return e.flatMap((i)=>{let o=zn(t,i);return $t(o,r)<n?[`ANSI ${i} ${o} on ${r} is ${_c(o,r)}:1, needs ${n}:1`]:[]})}function Bb(t,e){return Math.min(...e.map((n)=>$t(zn(t,n),t.background)))}var Ub=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:Mr,measure:({foreground:t,background:e})=>$t(t,e),check:({foreground:t,background:e})=>$t(t,e)<Mr?[`foreground ${t} on ${e} is ${_c(t,e)}:1, needs ${Mr}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:jb,measure:(t)=>Bb(t,nd),check:(t)=>ed(t,nd,jb)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:td,measure:(t)=>Et(zn(t,0)),check:(t)=>{let e=zn(t,0);return Et(e)>td?[`ANSI 0 ${e} has luminance ${Et(e).toFixed(3)}, needs <= ${td}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:Mr,measure:(t)=>Bb(t,Gb),check:(t)=>ed(t,Gb,Mr)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:_b,measure:(t)=>$t(zn(t,8),t.background),check:(t)=>ed(t,[8],_b)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:Mr,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:$t(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&$t(t,e)<Mr?[`foreground ${t} on selection ${e} is ${_c(t,e)}:1, needs ${Mr}:1`]:[]}];function Oe(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var wn=(t)=>t>8?t-8:t;function Po(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>xr.includes(wn(n))?[n,n>8?n-8:n+8]:[n]))}function Ys(t,e){let n=xt(zn(t,e));return n.c<Si?void 0:n}function Or(t){let e=Po(t);return nd.flatMap((n)=>{let r=Ys(t,n),i=xe[wn(n)];if(r===void 0||i===void 0||e.has(n))return[];let o=Oe(r.h,i.center)-i.width;return o>0?[{slot:n,hue:r.h,over:o}]:[]})}function qn(t){let e=new Set(t.signatureSlots);return xr.flatMap((n)=>{let r=Ys(t,n),i=Ys(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:Oe(r.h,i.h)}]})}function Dn(t){let e=Po(t);return[0,8].flatMap((n)=>xr.flatMap((r)=>xr.filter((i)=>i>r).flatMap((i)=>{let[o,s]=[n+r,n+i],a=Ys(t,o),c=Ys(t,s);if(a===void 0||c===void 0||e.has(o)&&e.has(s))return[];return Oe(a.h,c.h)<Io&&Math.abs(a.l-c.l)<Ro?[[o,s]]:[]})))}var NI=[{rule:"ansi-role",label:"accent hue outside its ANSI role",unit:"degrees",max:0,measure:(t)=>Math.max(0,...Or(t).map((e)=>e.over)),check:(t)=>Or(t).map(({slot:e,hue:n,over:r})=>{let i=xe[wn(e)];return`ANSI ${e} ${zn(t,e)} has hue ${n.toFixed(0)}°, ${r.toFixed(0)}° outside ${i.name} (${i.center}±${i.width}°)`})},{rule:"bright-follows",label:"widest normal to bright hue gap",unit:"degrees",max:en,measure:(t)=>Math.max(0,...qn(t).map((e)=>e.gap)),check:(t)=>qn(t).filter((e)=>e.gap>en).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${en}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>Dn(t).length,check:(t)=>Dn(t).map(([e,n])=>`ANSI ${e} ${zn(t,e)} and ANSI ${n} ${zn(t,n)} are within ${Io}° hue and ${Ro} lightness`)}],Wc=[...Ub,...NI],rd=Wc.map((t)=>t.rule),Ie=Wc.map(({rule:t,label:e,unit:n,min:r,max:i})=>({rule:t,label:e,unit:n,...r===void 0?{}:{min:r},...i===void 0?{}:{max:i}}));function $n(t){return Wc.map((e)=>Math.round(e.measure(t)*1000)/1000)}function Wb(t,e){return t.filter((n)=>!e.waive.includes(n.rule)).flatMap((n)=>n.check(e).map((r)=>({theme:e.name,rule:n.rule,detail:r})))}function Jn(t){return Wb(Wc,t)}function Kb(t){return Wb(Ub,t)}function zb(t){return t.flatMap(Jn)}import{chmodSync as TI,copyFileSync as HI,existsSync as Ao,mkdirSync as FI,readFileSync as id,realpathSync as LI,renameSync as Db,rmSync as qb,statSync as CI,writeFileSync as Jb}from"node:fs";import{dirname as jI}from"node:path";function Yb(t){return`${t}.ttheme.bak`}var _I=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function od(t){let e=Yb(t);if(Ao(t)&&!Ao(e)&&!_I.test(id(t,"utf8")))HI(t,e)}function L(t,e){let n=Ao(t)?LI(t):t;FI(jI(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(Jb(r,e),Ao(n))TI(r,CI(n).mode&4095);Db(r,n)}function Mi(t,e,n){if(Jb(t,n),t!==e)Db(t,e)}function kn(t,e){if((Ao(t)?id(t,"utf8"):void 0)===e)return!1;return od(t),L(t,e),!0}function Zb(t,e){let n=Yb(t),r=Ao(n)?id(n,"utf8"):void 0;if(e===""&&r===void 0)return qb(t,{force:!0}),"removed";if(L(t,e),r===void 0||r===e)return qb(n,{force:!0}),"restored";return"kept backup"}import{createHash as s$}from"node:crypto";import{copyFileSync as HA,existsSync as qd,mkdirSync as FA,readdirSync as LA,readFileSync as Ko,renameSync as a$,rmSync as Wo,statSync as CA}from"node:fs";import{basename as c$,isAbsolute as jA,join as Y}from"node:path";import{createHash as sA}from"node:crypto";import{existsSync as aA,readdirSync as cA,readFileSync as uA,rmSync as lA,statSync as fA,utimesSync as dA}from"node:fs";import{join as Bo}from"node:path";import{readdirSync as hP,rmSync as mP,statSync as pP}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as gP}from"node:net";import{homedir as bP}from"node:os";import{join as ea}from"node:path";import{setTimeout as wP}from"node:timers/promises";var qw=Df(Uw(),1);import{constants as iP,deflateSync as oP,inflateSync as sP}from"node:zlib";import{inflateRawSync as nP}from"node:zlib";var eP=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,o=new Promise((g,w)=>{r=g,i=w});let a=globalThis.ServiceWorkerGlobalScope!==void 0&&typeof self<"u"&&globalThis.caches&&globalThis.caches.default!==void 0,c=typeof process==="object"&&process.release&&process.release.name==="node";if(a||c){if(!globalThis.ImageData)globalThis.ImageData=class{constructor(w,y,S){this.data=w,this.width=y,this.height=S}};if(import.meta.url===void 0)import.meta.url="https://localhost";if(typeof self<"u"&&self.location===void 0)self.location={href:""}}var u=Object.assign({},n),f=[],l="./this.program",d=(g,w)=>{throw w},h=typeof window=="object",m=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b="";function $(g){if(n.locateFile)return n.locateFile(g,b);return b+g}var k,v,E;if(h||m){if(m)b=self.location.href;else if(typeof document<"u"&&document.currentScript)b=document.currentScript.src;if(t)b=t;if(b.startsWith("blob:"))b="";else b=b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1);{if(k=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.send(null),w.responseText},m)E=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.responseType="arraybuffer",w.send(null),new Uint8Array(w.response)};v=(g,w,y)=>{var S=new XMLHttpRequest;S.open("GET",g,!0),S.responseType="arraybuffer",S.onload=()=>{if(S.status==200||S.status==0&&S.response){w(S.response);return}y()},S.onerror=y,S.send(null)}}}var x=n.print||console.log.bind(console),M=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)f=n.arguments;if(n.thisProgram)l=n.thisProgram;if(n.quit)d=n.quit;var R;if(n.wasmBinary)R=n.wasmBinary;var F,N=!1,j,z,G,et,q,Ot,tt,Sr,pn;function gn(){var g=F.buffer;n.HEAP8=z=new Int8Array(g),n.HEAP16=et=new Int16Array(g),n.HEAPU8=G=new Uint8Array(g),n.HEAPU16=q=new Uint16Array(g),n.HEAP32=Ot=new Int32Array(g),n.HEAPU32=tt=new Uint32Array(g),n.HEAPF32=Sr=new Float32Array(g),n.HEAPF64=pn=new Float64Array(g)}var bn=[],Fc=[],gi=[],Tf=!1;function Hf(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)E2(n.preRun.shift())}Cf(bn)}function Ff(){Tf=!0,Cf(Fc)}function v2(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)M2(n.postRun.shift())}Cf(gi)}function E2(g){bn.unshift(g)}function S2(g){Fc.unshift(g)}function M2(g){gi.unshift(g)}var bi=0,Lf=null,Ds=null;function x2(g){bi++,n.monitorRunDependencies?.(bi)}function O2(g){if(bi--,n.monitorRunDependencies?.(bi),bi==0){if(Lf!==null)clearInterval(Lf),Lf=null;if(Ds){var w=Ds;Ds=null,w()}}}function rb(g){n.onAbort?.(g),g="Aborted("+g+")",M(g),N=!0,j=1,g+=". Build with -sASSERTIONS for more info.";var w=new WebAssembly.RuntimeError(g);throw i(w),w}var I2="data:application/octet-stream;base64,",ib=(g)=>g.startsWith(I2),wi;if(n.locateFile){if(wi="mozjpeg_dec.wasm",!ib(wi))wi=$(wi)}else wi=new URL("mozjpeg_dec.wasm",import.meta.url).href;function ob(g){if(g==wi&&R)return new Uint8Array(R);if(E)return E(g);throw"both async and sync fetching of the wasm failed"}function R2(g){if(!R&&(h||m)){if(typeof fetch=="function")return fetch(g,{credentials:"same-origin"}).then((w)=>{if(!w.ok)throw`failed to load wasm binary file at '${g}'`;return w.arrayBuffer()}).catch(()=>ob(g))}return Promise.resolve().then(()=>ob(g))}function sb(g,w,y){return R2(g).then((S)=>WebAssembly.instantiate(S,w)).then(y,(S)=>{M(`failed to asynchronously prepare wasm: ${S}`),rb(S)})}function P2(g,w,y,S){if(!g&&typeof WebAssembly.instantiateStreaming=="function"&&!ib(w)&&typeof fetch=="function")return fetch(w,{credentials:"same-origin"}).then((I)=>{var P=WebAssembly.instantiateStreaming(I,y);return P.then(S,function(B){return M(`wasm streaming compile failed: ${B}`),M("falling back to ArrayBuffer instantiation"),sb(w,y,S)})});return sb(w,y,S)}function A2(){var g={a:eI};function w(S,I){return ie=S.exports,F=ie.A,gn(),mb=ie.F,S2(ie.B),O2("wasm-instantiate"),ie}x2("wasm-instantiate");function y(S){w(S.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(g,w)}catch(S){M(`Module.instantiateWasm callback failed with error: ${S}`),i(S)}return P2(R,wi,g,y).catch(i),{}}function N2(g){this.name="ExitStatus",this.message=`Program terminated with exit(${g})`,this.status=g}var Cf=(g)=>{while(g.length>0)g.shift()(n)},T2=n.noExitRuntime||!0;class ab{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){tt[this.ptr+4>>2]=g}get_type(){return tt[this.ptr+4>>2]}set_destructor(g){tt[this.ptr+8>>2]=g}get_destructor(){return tt[this.ptr+8>>2]}set_caught(g){g=g?1:0,z[this.ptr+12]=g}get_caught(){return z[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,z[this.ptr+13]=g}get_rethrown(){return z[this.ptr+13]!=0}init(g,w){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(w)}set_adjusted_ptr(g){tt[this.ptr+16>>2]=g}get_adjusted_ptr(){return tt[this.ptr+16>>2]}get_exception_ptr(){var g=yb(this.get_type());if(g)return tt[this.excPtr>>2];var w=this.get_adjusted_ptr();if(w!==0)return w;return this.excPtr}}var cb=0,H2=0,F2=(g,w,y)=>{var S=new ab(g);throw S.init(w,y),cb=g,H2++,cb},L2=(g,w,y,S,I)=>{},C2=()=>{var g=Array(256);for(var w=0;w<256;++w)g[w]=String.fromCharCode(w);ub=g},ub,tn=(g)=>{var w="",y=g;while(G[y])w+=ub[G[y++]];return w},So={},$i={},Lc={},lb,Ee=(g)=>{throw new lb(g)},fb,db=(g)=>{throw new fb(g)},j2=(g,w,y)=>{g.forEach(function(H){Lc[H]=w});function S(H){var W=y(H);if(W.length!==g.length)db("Mismatched type converter count");for(var Q=0;Q<g.length;++Q)Gn(g[Q],W[Q])}var I=Array(w.length),P=[],B=0;if(w.forEach((H,W)=>{if($i.hasOwnProperty(H))I[W]=$i[H];else{if(P.push(H),!So.hasOwnProperty(H))So[H]=[];So[H].push(()=>{if(I[W]=$i[H],++B,B===P.length)S(I)})}}),P.length===0)S(I)};function _2(g,w,y={}){var S=w.name;if(!g)Ee(`type "${S}" must have a positive integer typeid pointer`);if($i.hasOwnProperty(g))if(y.ignoreDuplicateRegistrations)return;else Ee(`Cannot register type '${S}' twice`);if($i[g]=w,delete Lc[g],So.hasOwnProperty(g)){var I=So[g];delete So[g],I.forEach((P)=>P())}}function Gn(g,w,y={}){if(!("argPackAdvance"in w))throw TypeError("registerType registeredInstance requires argPackAdvance");return _2(g,w,y)}var ki=8,G2=(g,w,y,S)=>{w=tn(w),Gn(g,{name:w,fromWireType:function(I){return!!I},toWireType:function(I,P){return P?y:S},argPackAdvance:ki,readValueFromPointer:function(I){return this.fromWireType(G[I])},destructorFunction:null})},jf=[],Bn=[],_f=(g)=>{if(g>9&&--Bn[g+1]===0)Bn[g]=void 0,jf.push(g)},B2=()=>Bn.length/2-5-jf.length,U2=()=>{Bn.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=B2},yi={toValue:(g)=>{if(!g)Ee("Cannot use deleted val. handle = "+g);return Bn[g]},toHandle:(g)=>{switch(g){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let w=jf.pop()||Bn.length;return Bn[w]=g,Bn[w+1]=1,w}}}};function Gf(g){return this.fromWireType(tt[g>>2])}var W2={name:"emscripten::val",fromWireType:(g)=>{var w=yi.toValue(g);return _f(g),w},toWireType:(g,w)=>yi.toHandle(w),argPackAdvance:ki,readValueFromPointer:Gf,destructorFunction:null},K2=(g)=>Gn(g,W2),z2=(g,w)=>{switch(w){case 4:return function(y){return this.fromWireType(Sr[y>>2])};case 8:return function(y){return this.fromWireType(pn[y>>3])};default:throw TypeError(`invalid float width (${w}): ${g}`)}},q2=(g,w,y)=>{w=tn(w),Gn(g,{name:w,fromWireType:(S)=>S,toWireType:(S,I)=>I,argPackAdvance:ki,readValueFromPointer:z2(w,y),destructorFunction:null})},Bf=(g,w)=>Object.defineProperty(w,"name",{value:g}),hb=(g)=>{while(g.length){var w=g.pop(),y=g.pop();y(w)}};function D2(g){for(var w=1;w<g.length;++w)if(g[w]!==null&&g[w].destructorFunction===void 0)return!0;return!1}function J2(g,w,y,S,I,P){var B=w.length;if(B<2)Ee("argTypes array size mismatch! Must at least get return value and 'this' types!");var H=w[1]!==null&&y!==null,W=D2(w),Q=w[0].name!=="void",pt=B-2,Lt=Array(pt),oe=[],Be=[],Mo=function(...zf){if(zf.length!==pt)Ee(`function ${g} called with ${zf.length} arguments, expected ${pt}`);Be.length=0;var qf;if(oe.length=H?2:1,oe[0]=I,H)qf=w[1].toWireType(Be,this),oe[1]=qf;for(var xo=0;xo<pt;++xo)Lt[xo]=w[xo+2].toWireType(Be,zf[xo]),oe.push(Lt[xo]);var cI=S(...oe);function uI(lI){if(W)hb(Be);else for(var Oo=H?1:2;Oo<w.length;Oo++){var fI=Oo===1?qf:Lt[Oo-2];if(w[Oo].destructorFunction!==null)w[Oo].destructorFunction(fI)}if(Q)return w[0].fromWireType(lI)}return uI(cI)};return Bf(g,Mo)}var Y2=(g,w,y)=>{if(g[w].overloadTable===void 0){var S=g[w];g[w]=function(...I){if(!g[w].overloadTable.hasOwnProperty(I.length))Ee(`Function '${y}' called with an invalid number of arguments (${I.length}) - expects one of (${g[w].overloadTable})!`);return g[w].overloadTable[I.length].apply(this,I)},g[w].overloadTable=[],g[w].overloadTable[S.argCount]=S}},Z2=(g,w,y)=>{if(n.hasOwnProperty(g)){if(y===void 0||n[g].overloadTable!==void 0&&n[g].overloadTable[y]!==void 0)Ee(`Cannot register public name '${g}' twice`);if(Y2(n,g,g),n.hasOwnProperty(y))Ee(`Cannot register multiple overloads of a function with the same number of arguments (${y})!`);n[g].overloadTable[y]=w}else if(n[g]=w,y!==void 0)n[g].numArguments=y},V2=(g,w)=>{var y=[];for(var S=0;S<g;S++)y.push(tt[w+S*4>>2]);return y},X2=(g,w,y)=>{if(!n.hasOwnProperty(g))db("Replacing nonexistent public symbol");if(n[g].overloadTable!==void 0&&y!==void 0)n[g].overloadTable[y]=w;else n[g]=w,n[g].argCount=y},Q2=(g,w,y)=>{g=g.replace(/p/g,"i");var S=n["dynCall_"+g];return S(w,...y)},Cc=[],mb,pb=(g)=>{var w=Cc[g];if(!w){if(g>=Cc.length)Cc.length=g+1;Cc[g]=w=mb.get(g)}return w},tO=(g,w,y=[])=>{if(g.includes("j"))return Q2(g,w,y);var S=pb(w)(...y);return S},eO=(g,w)=>(...y)=>tO(g,w,y),nO=(g,w)=>{g=tn(g);function y(){if(g.includes("j"))return eO(g,w);return pb(w)}var S=y();if(typeof S!="function")Ee(`unknown function pointer with signature ${g}: ${w}`);return S},rO=(g,w)=>{var y=Bf(w,function(S){this.name=w,this.message=S;var I=Error(S).stack;if(I!==void 0)this.stack=this.toString()+`
3
- `+I.replace(/^Error(:[^\n]*)?\n/,"")});return y.prototype=Object.create(g.prototype),y.prototype.constructor=y,y.prototype.toString=function(){if(this.message===void 0)return this.name;else return`${this.name}: ${this.message}`},y},gb,bb=(g)=>{var w=kb(g),y=tn(w);return Un(w),y},iO=(g,w)=>{var y=[],S={};function I(P){if(S[P])return;if($i[P])return;if(Lc[P]){Lc[P].forEach(I);return}y.push(P),S[P]=!0}throw w.forEach(I),new gb(`${g}: `+y.map(bb).join([", "]))},oO=(g)=>{g=g.trim();let w=g.indexOf("(");if(w!==-1)return g.substr(0,w);else return g},sO=(g,w,y,S,I,P,B)=>{var H=V2(w,y);g=tn(g),g=oO(g),I=nO(S,I),Z2(g,function(){iO(`Cannot call ${g} due to unbound types`,H)},w-1),j2([],H,(W)=>{var Q=[W[0],null].concat(W.slice(1));return X2(g,J2(g,Q,null,I,P,B),w-1),[]})},aO=(g,w,y)=>{switch(w){case 1:return y?(S)=>z[S]:(S)=>G[S];case 2:return y?(S)=>et[S>>1]:(S)=>q[S>>1];case 4:return y?(S)=>Ot[S>>2]:(S)=>tt[S>>2];default:throw TypeError(`invalid integer width (${w}): ${g}`)}},cO=(g,w,y,S,I)=>{if(w=tn(w),I===-1)I=4294967295;var P=(pt)=>pt;if(S===0){var B=32-8*y;P=(pt)=>pt<<B>>>B}var H=w.includes("unsigned"),W=(pt,Lt)=>{},Q;if(H)Q=function(pt,Lt){return W(Lt,this.name),Lt>>>0};else Q=function(pt,Lt){return W(Lt,this.name),Lt};Gn(g,{name:w,fromWireType:P,toWireType:Q,argPackAdvance:ki,readValueFromPointer:aO(w,y,S!==0),destructorFunction:null})},uO=(g,w,y)=>{var S=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],I=S[w];function P(B){var H=tt[B>>2],W=tt[B+4>>2];return new I(z.buffer,W,H)}y=tn(y),Gn(g,{name:y,fromWireType:P,argPackAdvance:ki,readValueFromPointer:P},{ignoreDuplicateRegistrations:!0})},lO=(g,w,y,S)=>{if(!(S>0))return 0;var I=y,P=y+S-1;for(var B=0;B<g.length;++B){var H=g.charCodeAt(B);if(H>=55296&&H<=57343){var W=g.charCodeAt(++B);H=65536+((H&1023)<<10)|W&1023}if(H<=127){if(y>=P)break;w[y++]=H}else if(H<=2047){if(y+1>=P)break;w[y++]=192|H>>6,w[y++]=128|H&63}else if(H<=65535){if(y+2>=P)break;w[y++]=224|H>>12,w[y++]=128|H>>6&63,w[y++]=128|H&63}else{if(y+3>=P)break;w[y++]=240|H>>18,w[y++]=128|H>>12&63,w[y++]=128|H>>6&63,w[y++]=128|H&63}}return w[y]=0,y-I},fO=(g,w,y)=>lO(g,G,w,y),dO=(g)=>{var w=0;for(var y=0;y<g.length;++y){var S=g.charCodeAt(y);if(S<=127)w++;else if(S<=2047)w+=2;else if(S>=55296&&S<=57343)w+=4,++y;else w+=3}return w},wb=(g,w,y)=>{var S=w+y,I="";while(!(w>=S)){var P=g[w++];if(!P)return I;if(!(P&128)){I+=String.fromCharCode(P);continue}var B=g[w++]&63;if((P&224)==192){I+=String.fromCharCode((P&31)<<6|B);continue}var H=g[w++]&63;if((P&240)==224)P=(P&15)<<12|B<<6|H;else P=(P&7)<<18|B<<12|H<<6|g[w++]&63;if(P<65536)I+=String.fromCharCode(P);else{var W=P-65536;I+=String.fromCharCode(55296|W>>10,56320|W&1023)}}return I},hO=(g,w)=>g?wb(G,g,w):"",mO=(g,w)=>{w=tn(w);var y=w==="std::string";Gn(g,{name:w,fromWireType(S){var I=tt[S>>2],P=S+4,B;if(y){var H=P;for(var W=0;W<=I;++W){var Q=P+W;if(W==I||G[Q]==0){var pt=Q-H,Lt=hO(H,pt);if(B===void 0)B=Lt;else B+=String.fromCharCode(0),B+=Lt;H=Q+1}}}else{var oe=Array(I);for(var W=0;W<I;++W)oe[W]=String.fromCharCode(G[P+W]);B=oe.join("")}return Un(S),B},toWireType(S,I){if(I instanceof ArrayBuffer)I=new Uint8Array(I);var P,B=typeof I=="string";if(!(B||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array))Ee("Cannot pass non-string to std::string");if(y&&B)P=dO(I);else P=I.length;var H=Kf(4+P+1),W=H+4;if(tt[H>>2]=P,y&&B)fO(I,W,P+1);else if(B)for(var Q=0;Q<P;++Q){var pt=I.charCodeAt(Q);if(pt>255)Un(W),Ee("String has UTF-16 code units that do not fit in 8 bits");G[W+Q]=pt}else for(var Q=0;Q<P;++Q)G[W+Q]=I[Q];if(S!==null)S.push(Un,H);return H},argPackAdvance:ki,readValueFromPointer:Gf,destructorFunction(S){Un(S)}})},pO=(g,w)=>{var y="";for(var S=0;!(S>=w/2);++S){var I=et[g+S*2>>1];if(I==0)break;y+=String.fromCharCode(I)}return y},gO=(g,w,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var S=w,I=y<g.length*2?y/2:g.length;for(var P=0;P<I;++P){var B=g.charCodeAt(P);et[w>>1]=B,w+=2}return et[w>>1]=0,w-S},bO=(g)=>g.length*2,wO=(g,w)=>{var y=0,S="";while(!(y>=w/4)){var I=Ot[g+y*4>>2];if(I==0)break;if(++y,I>=65536){var P=I-65536;S+=String.fromCharCode(55296|P>>10,56320|P&1023)}else S+=String.fromCharCode(I)}return S},$O=(g,w,y)=>{if(y??=2147483647,y<4)return 0;var S=w,I=S+y-4;for(var P=0;P<g.length;++P){var B=g.charCodeAt(P);if(B>=55296&&B<=57343){var H=g.charCodeAt(++P);B=65536+((B&1023)<<10)|H&1023}if(Ot[w>>2]=B,w+=4,w+4>I)break}return Ot[w>>2]=0,w-S},kO=(g)=>{var w=0;for(var y=0;y<g.length;++y){var S=g.charCodeAt(y);if(S>=55296&&S<=57343)++y;w+=4}return w},yO=(g,w,y)=>{y=tn(y);var S,I,P,B;if(w===2)S=pO,I=gO,B=bO,P=(H)=>q[H>>1];else if(w===4)S=wO,I=$O,B=kO,P=(H)=>tt[H>>2];Gn(g,{name:y,fromWireType:(H)=>{var W=tt[H>>2],Q,pt=H+4;for(var Lt=0;Lt<=W;++Lt){var oe=H+4+Lt*w;if(Lt==W||P(oe)==0){var Be=oe-pt,Mo=S(pt,Be);if(Q===void 0)Q=Mo;else Q+=String.fromCharCode(0),Q+=Mo;pt=oe+w}}return Un(H),Q},toWireType:(H,W)=>{if(typeof W!="string")Ee(`Cannot pass non-string to C++ string type ${y}`);var Q=B(W),pt=Kf(4+Q+w);if(tt[pt>>2]=Q/w,I(W,pt+4,Q+w),H!==null)H.push(Un,pt);return pt},argPackAdvance:ki,readValueFromPointer:Gf,destructorFunction(H){Un(H)}})},vO=(g,w)=>{w=tn(w),Gn(g,{isVoid:!0,name:w,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,S)=>{return}})},EO=(g,w,y)=>G.copyWithin(g,w,w+y),Uf=[],SO=(g,w,y,S)=>{return g=Uf[g],w=yi.toValue(w),g(null,w,y,S)},MO={},xO=(g)=>{var w=MO[g];if(w===void 0)return tn(g);return w},$b=()=>{if(typeof globalThis=="object")return globalThis;function g(w){w.$$$embind_global$$$=w;var y=typeof $$$embind_global$$$=="object"&&w.$$$embind_global$$$==w;if(!y)delete w.$$$embind_global$$$;return y}if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;if(typeof global=="object"&&g(global))$$$embind_global$$$=global;else if(typeof self=="object"&&g(self))$$$embind_global$$$=self;if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;throw Error("unable to get global object.")},OO=(g)=>{if(g===0)return yi.toHandle($b());else return g=xO(g),yi.toHandle($b()[g])},IO=(g)=>{var w=Uf.length;return Uf.push(g),w},RO=(g,w)=>{var y=$i[g];if(y===void 0)Ee(`${w} has unknown type ${bb(g)}`);return y},PO=(g,w)=>{var y=Array(g);for(var S=0;S<g;++S)y[S]=RO(tt[w+S*4>>2],"parameter "+S);return y},AO=Reflect.construct,NO=(g,w,y)=>{var S=[],I=g.toWireType(S,y);if(S.length)tt[w>>2]=yi.toHandle(S);return I},TO=(g,w,y)=>{var S=PO(g,w),I=S.shift();g--;var P=Array(g),B=(W,Q,pt,Lt)=>{var oe=0;for(var Be=0;Be<g;++Be)P[Be]=S[Be].readValueFromPointer(Lt+oe),oe+=S[Be].argPackAdvance;var Mo=y===1?AO(Q,P):Q.apply(W,P);return NO(I,pt,Mo)},H=`methodCaller<(${S.map((W)=>W.name).join(", ")}) => ${I.name}>`;return IO(Bf(H,B))},HO=(g)=>{if(g>9)Bn[g+1]+=1},FO=(g)=>{var w=yi.toValue(g);hb(w),_f(g)},LO=()=>{rb("")},CO=()=>2147483648,jO=(g)=>{var w=F.buffer,y=(g-w.byteLength+65535)/65536;try{return F.grow(y),gn(),1}catch(S){}},_O=(g)=>{var w=G.length;g>>>=0;var y=CO();if(g>y)return!1;var S=(W,Q)=>W+(Q-W%Q)%Q;for(var I=1;I<=4;I*=2){var P=w*(1+0.2/I);P=Math.min(P,g+100663296);var B=Math.min(y,S(Math.max(g,P),65536)),H=jO(B);if(H)return!0}return!1},Wf={},GO=()=>l||"./this.program",Js=()=>{if(!Js.strings){var g=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:g,_:GO()};for(var y in Wf)if(Wf[y]===void 0)delete w[y];else w[y]=Wf[y];var S=[];for(var y in w)S.push(`${y}=${w[y]}`);Js.strings=S}return Js.strings},BO=(g,w)=>{for(var y=0;y<g.length;++y)z[w++]=g.charCodeAt(y);z[w]=0},UO=(g,w)=>{var y=0;return Js().forEach((S,I)=>{var P=w+y;tt[g+I*4>>2]=P,BO(S,P),y+=S.length+1}),0},WO=(g,w)=>{var y=Js();tt[g>>2]=y.length;var S=0;return y.forEach((I)=>S+=I.length+1),tt[w>>2]=S,0},KO=0,zO=()=>T2||KO>0,qO=(g)=>{if(j=g,!zO())n.onExit?.(g),N=!0;d(g,new N2(g))},DO=(g,w)=>{j=g,qO(g)},JO=DO,YO=(g)=>52,ZO=(g,w)=>w+2097152>>>0<4194305-!!g?(g>>>0)+w*4294967296:NaN;function VO(g,w,y,S,I){var P=ZO(w,y);return 70}var XO=[null,[],[]],QO=(g,w)=>{var y=XO[g];if(w===0||w===10)(g===1?x:M)(wb(y,0)),y.length=0;else y.push(w)},tI=(g,w,y,S)=>{var I=0;for(var P=0;P<y;P++){var B=tt[w>>2],H=tt[w+4>>2];w+=8;for(var W=0;W<H;W++)QO(g,G[B+W]);I+=H}return tt[S>>2]=I,0};C2(),lb=n.BindingError=class extends Error{constructor(w){super(w);this.name="BindingError"}},fb=n.InternalError=class extends Error{constructor(w){super(w);this.name="InternalError"}},U2(),gb=n.UnboundTypeError=rO(Error,"UnboundTypeError");var eI={o:F2,q:L2,m:G2,l:K2,j:q2,f:sO,b:cO,a:uO,e:mO,c:yO,n:vO,v:EO,i:SO,d:_f,k:OO,h:TO,y:HO,g:FO,r:LO,s:_O,t:UO,u:WO,z:JO,w:YO,p:VO,x:tI},ie=A2(),nI=()=>(nI=ie.B)(),kb=(g)=>(kb=ie.C)(g),Kf=(g)=>(Kf=ie.D)(g),Un=(g)=>(Un=ie.E)(g),rI=(g)=>(rI=ie._emscripten_stack_restore)(g),iI=(g)=>(iI=ie._emscripten_stack_alloc)(g),oI=()=>(oI=ie.emscripten_stack_get_current)(),sI=(g)=>(sI=ie.__cxa_increment_exception_refcount)(g),yb=(g)=>(yb=ie.G)(g),aI=n.dynCall_jiji=(g,w,y,S,I)=>(aI=n.dynCall_jiji=ie.H)(g,w,y,S,I),jc;Ds=function g(){if(!jc)vb();if(!jc)Ds=g};function vb(){if(bi>0)return;if(Hf(),bi>0)return;function g(){if(jc)return;if(jc=!0,n.calledRun=!0,N)return;if(Ff(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();v2()}if(n.setStatus)n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),g()},1);else g()}if(n.preInit){if(typeof n.preInit=="function")n.preInit=[n.preInit];while(n.preInit.length>0)n.preInit.pop()()}return vb(),o}})(),Ww=eP;function kd(t){if(t[0]!==255||t[1]!==216)return null;let e=2;while(e+9<t.length){if(t[e]!==255){e++;continue}let n=t[e+1];if(n===255){e++;continue}let r=t[e+2]<<8|t[e+3];if(n>=192&&n<=207&&n!==196&&n!==200&&n!==204)return{height:t[e+5]<<8|t[e+6],width:t[e+7]<<8|t[e+8]};e+=2+r}return null}var $d;function rP(){if($d)return $d;let t=new WebAssembly.Module(nP(Buffer.from("7L0NnFzHVSd6q+5H3+7bPdMjjeyRZmTf7ohFITZWgpFN4mBdEX3Y8leI15jfy+6a3UC8Mwp4ZEWYRdaMY9kICESA2TWsCXrBb+2wNugtejwvmBcFDBFgFgXMRkkMEYtJzBLA720A78PY+/+fU3X73u4eSVYMC1mUePre+rqnTp06derUqXOCb7rzPSYIAvN/m9nbzFKA/8zSbeHSEn/sEhLiJf4Lbov0x0pOY2nJJWu2q+NK4S1gzgH8C25LfFH3gNwIWUgIlw4smQOuzn40vZ/to0rEmihnmIxsNsM6BwS+A/wWHkMpZH/MrDPfZL4paOLvPw8i/P0X8vwu9OqbzDcHIf5+S9DA33dLyu2Bxd9/GUzh77yUXAgM/u6W3PcEMf5+q9T6Nsm9I0jxd1Fa2BNk+HunlN8bJPj7Xvm7T0p+u6TfFbTw9zuktX8VBOFvm48ba2y7ZdqTQTu0q1bbaHI6MGEzNUFs19h2aLKgzUEwYXBB0IyTLJu8cGZtkjRNapoma6+L4ybygixLYvkXNKLqvzhuxPwvCPE/aSfBoBo8mFZrYiJIU8lp2ixFUgflo47FP9O1BhUT/otG/jUaaDF2HwRCEpOgcfwXon7D3GEewv/ihjHvs8vLNunYJVMc/1yU4SfIGhtSU9jAbA3ebL4uOGbM24KLzbagb7YDrB3BvzNmZ/ATpvk91gSFyf6t+ZD5380R8+Pmg+bH0OrX/Vuz9UfNj5gHzb8x/9r8sHnAbN74Q+YHzQ+Yw+YD5vvN1d9n3m8uueR7zfeY7zaHzHeZ+8195pKD5l7zPnOPWTZLB+7e/53/6jsuuevb97137517Fu/4tm99z+6F+X95+7u/5Zvf9V/NH5nnzefMZ80fmufMH5j/Yn7fnDafMb9nftd8ynzSnDKfMP/Z/I55xlzy2+a3MHonzW+a/2R+wzxtft38mvlVc8J8zPyK+WXzlPkl84vmo+a4edL8vPk58x/NE5hHP2v+L/Os+bT5J9/w0+b/ND9j/oM5aq695U2XXPJTZtvDZtubHjePmEfNh82bHjP/3vykueVN/4f5iPl/zC+Y1i8+2fy4+f8wLqBxuyW32zpBHuTmzQF/7Hw/LMyCvtoivMZnWv0xeViELjssbFmwURYMkR6V6U1JL/DfQhEu9iM0n5viFbNY3PO+g+nuvtls0VBu82ih2C/5VmozOdLaId9S/YnQZOqybdEuC64tC87oz7T+dPWnjcLdstp0+TRTPs35pgj9YjGzpx8tAJSc7ZrHt96zvLzcPdCL0Vw03zPhltzk8RXhjP509SfVH1QochRCqznbuHhXB1MqD7LvtTZcssR58Prwjn60Nfh6fA/Pd+XBRhv1DX8u6duFx/b3429Y3BZteV0AsPt2Q1As9QzrdW8WNNticr6Q4vmUBWXvQKq9NJjsmYw9nd8AGDCOwQ0dKRT1tOmeBRhbl64I7+BQbba34ycG7g2+eEV4V7E0meXxVrMf/RzUSnu2hPimDjEU392PtNY3Ejt59Mi8tJxb36T0I/Dt8mM3RkAZCSsEXWR5mC1HJlwCsMsRs9iM7a7Jg0lpZ74XWkm8E0QDPPBFn/KgZ9vsZeUZPxgQAHRpEJDq8B1FvyE1oRqwYHOScpahpVAIrTgecGxBeMWW+X6MMdI2NtpAKIJPkRAcn1JSoDy1hZr41CV5ydM06U2eZkiA8jS32c7pU77Z5vq0YbPdoE8bN9uN+nTJZnuJPm3abDfp0+Wb7eX6dOVme6U+XbXZXoWebVmQnm0BVeTx9UJY6MKNHVOD3hSRYoDzKY/YcyIKpH1NBW0yUfvRrpUxKU8y6+XJkg3IU8h5PvQVD02Ib6w8Hnm4w02HX2rZeGnqAGj8dLDQj0Gz0dZX5N/V9/aI4+i+rcv+39K9vVZuy/x+Z2t+qDeBGpsOPVK8An7Sa1iSiS0T+k3+LBTvWz5ACmvo2z3LB3Z10FNzU9ka/gX39jP3reN4uzmvvr19lrRmXUp+sNdqg9rDm0pwtQFba8CONBBVGsjDnmEjpvah+w7exA/lIX9d+mmk91pbA5QPs7xVKX3QJROW2ue0GTR9sLeWJfK1w82NacpBI192rXpA3GvmkX8rWo+Lk8E8KnTkv85N/WT2O/KkSPY+vv+RflJMLnR7RTdPFnpJHr8+vNUPF55vEh7l27oFUzAGNaMLbfmvfVM/RVOpayqVpvIkTxfA1rS1nSAO/GzpoRfh1sn7ZehefmUSQ5AbfKcfHeh3AS6eViOB30GeObC/P7k1v78/RVaDlyyfuvlxdLLjS3QO9NeAu61G3lTeZsOr0P4bDx30BUDxyJvOJ/PuzY+jqRztHTqIZtHKBGCIDvbbB/oXACFsYyJfhWzBcnqQoCGNy1GEX+Tcv79/4X4MTiNvzufJPKgzALZIwSjRnwEq2EiUzwDIiMtS3uH7LY/vR4n2gf2SOJWvQfZUPo1klwkkHuhzQWVxDKFCagVS1LDyZXzjZmnI5t181S2P5xP5BTfzb5cNscIq7Zq9xRWbzKdRYDK/UL7E5L4n6OPBvVjJQBQJ53lCPpJtvfpQbx1I3vDTVx862OOX8WLkxaKAub+X5euQYO4/SJJIOD9vQCvjaNxk9gBKBNdFW7DsJQt9zObgeqHDTfM5KRfVg/l+AlqJsfgSibm+dDW/0f0KWeoifXp9uIl/rjwIyB/nU84/3YMHARQeNvLPDODiL5gif1JMAj8XBowqTx7fuun+g5hPnNbZTehQ8I34M2BcOvvJvMz+vrnp8f2YbERRrdB9BxWFVjrL0ix/Lyrk9mZWIbs2lC2CvEVJIwbTxDKf/f/WNJZ0tW7wJyANcbnE+tSPN9ojIQemF8maWcxcK99IJcVm4NINAhfnKDmDtW3KBHgvuAozpR9pu5G0m+kAA4NYx8lu8wQMHlP0FbNdOP65txVlrpE8QhM9DJ4BUJE2z7ftWCPyhIwaQlWR7t0j68fUTuA4AheAEDjfh2CStzrki/hCnmxGX4Vp3aB9ZI/x4SdDrN4CGD4MmejPAy7WcbGUIyOaAkalUEEZMyvW9vi9tbld2NuTJTLlch+oBBrkDQoEWKc2U+jKntto2ksqorU2BET78P8gtXzBgE6LY89ybCB1dJGUzRcvhot8uGYWzDLc1w/29Q0EFRF0TLF0Z2GQLcLLXmQ8+yyeuYw+hwc2Q4GkH2/XdoG2A7n99kXAJF3OAwU5ZoeIvPmeSFdsC3/2sAuGcr4REacwTGlnHN0nFcr0eghMhsAUkPpZC5LAwh7UCvYu3k5I9/YDhQr5JVTBCFTm2yFolXBZlZwUrgCfU1jwNN9v5NKqzO1YQSLW51kag4DhS4u7FuWbPVOcEDghly6RZpAV7tvbF/FQPg0eu0ekIH6XuMp6IbusuwgHhu4K8lChESyxXQ5xQETIl4GW4glFSkYpMru9sHuL535PO2yJvrsWucyFnLmhDB8nHilfBEM8kYiDsiS6SFjCa/pmFrVExJoFISuXA/1iqvSanP6YQv1gB7r0lACwjikp9wgDimy3pMJ030QUpafnY752+2ZbJ5R9QNaLMS9jzDODEZueV8Ee5WVT1nXvXb5zRlJ2bDczbDYSZH9kaZcUy0B8AB6z1KGigR0jSILddoS+xNdi2ULQXFdcLLz8lQZqr8PjPyJ29727HyzsE7IuzN6F4mvnMzCOCi6N8IoeSYU/qLcW42r2LaDltLh4x+xeiqaKX49KLIo3cgOCXkT9kDBxnNFGKNySHeUiSdpfvw+7unnp6vZZzuDZHndRBq3mRuXRPN6jMMSg+pQUzk3rnryxyEHEUFXHvgd8ydCGW6qDS+G3J5uN3A1vzAePZYyS0RHI+oF8NebmO3QTDy2wP+SWYEPCSIdIIB4lgVS4nJJALCQQlyQQCwmISA++6kjADpGArZBApCTQqDCDmOzLTTjwOHJaEHHR1V1bQhZgygkbz+suupzdus+Iy6ke19kOsA3mAk4rM45VZQ5aaUPmJMgRbR1XWCx2FnwGggkEiz/9rPwn/EegcZu3EqSSzfjmHHldBk0E6Pb9p1kXzT4gDyS/B09zj4y2D+Nh+QjX54ivKJq3ivZ8ccdiceonf+cn4zsJwJHTgSCteOEz7mE5z/rY6aBz2AD3QT7gatd30uLzn1GE4mPP6SPWmvl+Mwe/bQKvUHY0sT9lQ1gUQa+y8dX/+T6y8hc+gx5wWufaCEciFSoEu9zVCYXdpEpgRdC9FPx7aXuHMyNilwRVWHz7YBaLslGAFgdseV7ofXGei3NEiEMPcTCAGDONzBo7T+IWSh8WxieA8x1YimNWRXPoNFOFtAIFbTs34TJtCA0FNkhu0fVu7xllbgA4haALmpclZ7Fvu5dqcUu9SyRlucoXSzs6NhOcvyCQFcLywe67l5Kk8JfzG1Vj/WBMVnu9/pBzJMXGebxm7JjrHLsmA/i8vgakNjxzugXZYAzCyhhoD1VzE/Vj9NIOsM9ePeVosxC1zfWUBZkmJC6kWLz4GSdQoE1JLp4BTS/x4dSzgSNQoStHaaEoQygYcOXNnXwQ677/eSbFOn8MGXfO7bZMmqjYuEBODgQUpMoFqcNeOXlAWsgHy6+dLzZykp4EGA95MNAp8rfr0VEsY7u0v+0iXeQTlUPzrMJGQ3wqlE8F2jihcFM5F5UBtv2qriCwe1TZEo79aCi4aif6U+I1t7uq+FQqMTo6doto6VhsR7TFjwrFd9DgpQFBBo/M/FBSMeQGU3RVSrUg+HCXW8FTWZ1WwmVjHC4bZ8ZlThb95XnMNuaLy9CiKGW685ALTTErklrx0meC19vgCuiapGPynDJVZDt+dZSCPKmgyMx8TymmUXJBrB3U3ATYY8ZUDXEgt4smTzjzgUWWFCmF6kvjJUa0ZylmvEKJFr9eHkOql2/BdiloQhqzpTSGFJHGRAoMRBoz7CalMcOfdtHGlKW8Xlwss5bCg37iH1HSH5UdyEZCTss5bNAFNYFfm6kmxVR1kkpMJenevrBSppE+VTTkhwPdFK1luyJoBCpoiOwQqOjU9/KGlakNQYKrOQUHnSuQKrizwV5L1k82282cJrrgDiXsQyIp2l4U7UvP2wpAqr1IhQ/MAAltVHVLKGeCch6/+gVkyjKBuKyd5/qHqXMUVTaxbuBFJV1vheIxgVTL7kgb26yyCYNEo4kRVTJYQWUf6ADII8r+MvOHJntDGSt767YbGOsTlUonfCWIAV4YGqlEolGUEJncTvapFC64+8xFQm0yta36akemkUpM1m1LHKFib4Kq+3TTJJqvwa4gda3PeG1MVQCLdAhd6UBLW/kMZP2I+xGKYJFuArBuRSKCyYEBCadPKV316tNcI0RKp8QoFUhCceF6SNkIsg8ERG1/rl8SOYlSMefmZW47hvTt6J7dK/uWFN1iOk/wAdSYnXflZVtiuWuecdCK6jGgTlv6N5O5Tm0TLbnsmn0GdVbcu+NHt/VC+kHJOTzbw9O8bKiofZXhaKzENRqvmmvo3Gm74yHlHlbUvMo9GuAejbHcQzWmFe5hS+4RVLmHcLO9/bjkHsZxj6DkHg3qChz3sG6bomoYGfK+3xs0yD24DVE9uJSi/hxTKS6l77jkHoGeY7luho4oA6XlUKV/5R+FK1pBBXQmOtctKTNVAopJQKYkIEsC4l5dhxZdUgJCh3Tb3nDUkwr1pKSemNSjhXVTS+XIjNtu6BkOqUe2JzN+V+IOF0k9LkNOYCZFeQeAE8oold2BcqGSS3C74bJjluXxnKctiLuhMAhHW+FKtBWeG21FSlsRMRkpQqMKbcmHHG2FoK1wpZUp0pUpGrsycW6ITqUkKtCsW5IiPYDk0qGnNSutTEpbXv0QliuT8SuTdbTVGGzu2XqX0rlObd/NyNGWVcYWKWMTVERKW5FyO+kVN5tKW8L1mkpbtk5bsQhm22WAa7SVKW05ymoKZTVJWXaEsppyjrYCZdmzUpYdpiw7Slm2pCzLsnGFsmJHWXW9U+C3wQbk5bVOwGtJV5EbyQpdRV53GKnCye3dZaxTWQNFWJftb6girOAXKmA9xg2y9xpzQM5HowPsFzT/IY82yrMOvg8OKAbHHf0Y+e68gTX2y7lHWRiqZSZSlwwYXCLbvP8g1MzZTUaMA0Ick+omMcQx6eP396zTx+ehrgvh4/0Ian0Ug7T4uOj2Aen9qjx1CmuLj2QvZVBUc2GWccMhfp8Le7Sgk/QubhJ6sag/zSJl0cLKuW1INW1AATt0i/A1PNPGxtnxaidGhJTxQ1n9xb7gejlvDjknqADmgfWICOBoUTetA8LnDieU9Z/9c+2KEFGREUIpo2qXUNb80KldrEjwGHpM0kg0b7LmR45s/ZofOfKuaN6sMM1IVMEFjkmtkIXMC6iRytXVi0M6uybrgkJYn4uR4IZzMVpBUDDjBIVwvKAQ+glp/YRUbhKWE9L6Ceky8thptNgrsygwOtW4jHBUCo/xSsJjMCIHhm7Qd3RES6ValxPuYbKULOOVJMtgZclykhrzu6h87wnYY8gpPg9yij05xWO0eUNktYI2zzpt3vmR1RjyGUjTYZ2E4jEkFL9qEorHk1C8AgnFK5PQCMAVAgjKKULDETdQweCoYCAI8KAgEJYdlAw7GD0oCPzOLPDSlyllzXRSZcyglAOCUrttVA4w5yBjNuySqMzrUmZUkTIFKm4I8wZ0dir7jRM0G3KWRoIot6lBKWhGpX4bKzmEAVAH5QFgggohNk6FoHQZe9RyfxrpljwVwsdS1EBRzCycJECGCMudaaQTyDhZVHVOorl6RsnCUD+Ck8lZrmrZ000bLcW09XgBSp+kYushxhO9prKEm6iUrFlVVE+D7/bPODC9OW/dJAerIa2omtVSA1MOlLslr769fbYjMmWrZqvROpOxBxbuXugMPpq1as0zmXhEuq1sDdtlVOwwctGg3Tds6IJi/Xi2B/GR+41Z9/Ha11CEJ3Q4c6alB/J4eqwKuXt7Ykx3rwLgs3hIwiMqEXyo2UFJdCBv3cI/b5+FzQVPVlEzne23B1Y4TTkxR1pWsbOBbURpYxNvk3N/nEXjzLop/zUJ/neAW6kFR+wsOF4f3o7m8HNbD6INdF69WBRPaB2gZYNvYi8IScdQ8KeNieihCPFN/QaabbhmG97GpMFT5IR2JSF/bs22hveDKN4Ksw2H0Yjn+E0mt5jc6wjGe5EIQ+H9NKTi/owMGa2JacEuNXvZKtMioX0KZ8MyQJO+UHVtnVEBvnkl2k9oUYA/W/hnp5gVHMzQ4U4FChrdhPf3WtzPbw3eId8A+YLEgLn7aH7DgbXE4t20kcjN3TJGj8Pezk+K8BbRnTsTB/4X1RADm8h+g4YPRExMYDbySB0GDmrhhfZo/tGEMQe+t39gxbGc3kvrviasDgDd1bTbMIcOUp6LeSwf05jjEM8G2jWjLGowneFGWDPciNg5VWPQVABqDdoe4ChSUdrVDsQ02xADHytHufGCojTgny7/zCguAQdeUjmc2PpWQhce4rhG+B0YYzTEGAN2SxhdsQZ7hNpZaOl2yPJlVGW3C8YrISxYdDposhFri0FqzEVLbORUho0oKCfgXjS6OCC2s3ryH1JIBynxAHNrUM6v4uL39u2dPGuwj2Mm23djuf64dDVEN0rLmfuKDy7zAIZw7yeJ4d9dizTZIedB0SCrfD+UPUG215glZwBJjR1Z/3axm6QmrDCTwsmjvqVphVFbEJyP0lYjcJumHWrtCNs+ysf4UWUVLfSosuRPKO25o1GzPfsDY6MD1pk7kIGbX+jHniob93JZBBbirZdjOLgVUXsW7DYmxa5la3SIHdq6/GKwn6xo61X3i42ZpKMZ4xMpKtzkp4bQCtIhgDzybiF67Fkeebfjz92bZzFb3wikFu9/EaqLhceVB1TQq7TvkRhXSRfAkFaigzqygtkdEBh033KH6kMvcchbeOwKtdJVa1hzk25+Fh7LzTeo5XHVBjZ7JCytcrCgFfc88MfPhjfqeAVbfxaffwEywbR+gv+fCmTn15jnRigqVsOSaUyl7mgdiGm+SN+q+bMtJjYPl6PEIUKg3QshoLhczRdAQW05wQYj6cseh8cpuuGy7qQkFMlCpAMKME9eWRy7Mg9n9cy++JMfAow5LaUpr10z68xHsZ1OuxfLmT7A+YNgFxcSCC8gkqZaJGuH8uEOiQmEyLzX5TzbuC7Xk7++2G4YSlKyyWHDDXb3cjfh9DRNxTfakqsqJ3DabG4n21QHpDwHwVZTVCqz8/PZAqYSSHrZigGq6HvD62jkXCwfj7gPjaXBkNvPZc4M2DjAcqO7bp1MeB6sgKMs2+5lksdir5hd3qAgD7uXZZJP4hraUlvdUh/CMuOsb3VL7bbS93Pdw+ZauBy6dEjJq7ql/jQufMCevDDkdjDshiBkasJTXOHIt+RxTV7hp1gjrNVIajWS4Rqoc5CKuIMUPMS0iyIHLN7wtiTKDnszk97BPxS2mHKfiDlk45OZL3UL0/6xKxXUSwmPzzCgX0/x/dCn/Qmrmx5Wdv65lRNVIyeqeXA12NJemi0F3VVg3IMzDpi0swndN5jsW6wpObcd4dyWpv4UUXMDib64+E6u9naUXxvl12RZA+YSko+o8X32UUPjdjnGz539ujOzCKkvwM69W+hE6GZ6FhAt7PJm8EzYALP+daJkU/59UxHs7AR6V8P2QjnZDOd5vrXAj7RES0GZO/QnnCI2uZZo+26FjJ31h65xpid7VXCo7tw6nYcwY8eMmc6y7AUjq0we7SzhiroXcY/CWwKBbo2FIQLdOPfYC7M1N/n6dt9iX65KkN9g9K5Vg3Cx39S2CrNSW5rLNrifQgf37nFtiU2Fa9DNMFuxzouKqRsiZ/joNlZ/oacWAM+orZ+QLPjbYTOAbifUffOXBlNg/phN1OzJ2fn1s+5UOCAnE8ud4tHPacMdXj0SAX+KV6qyIBOLr+61NG/IEtTv9jPowNaQtxxp6XoJM/mSVTdkcwuZ7U0jrBrfPmaKp0Bk3D+7/qqcfdaqwrkj2RWxC8UDTVmDmM0M0S9G3KkdplgQc923avNkVSo7nPJaiQV742RAAdtv8ELQPYNVplmk+uGmX1uc4acVcU8b4XE3tqfSTsh2QraDhdDecNZ2wgowtAYIXTsCT+ThueFVwxNV4YnPH564Ck9y/vAkVXga5w9PowpPev7wpFV4mucPT7MKT+v84WlV4cnOH56sCk/7/OFpV+HpnD88nSo8E+cPz0QVnkksixDsztKOVXgaNXgm3XxvsJ0u22lW2wl9O6FrR6wsrWz72QIW5a60kDd7jWyQKDd/YCB+OO23aP9+vEczB8qHreN5qgbjCa8Q7vVqQt18pLL9wOGAtDR/CXYtLdmG8Mhlb26v84BlHrDMs7+ULaRe7dXiLUOpuASAIwj2ZHiO3RVLsvWj2SpqL1DSVHYIeHgbQ84lMsqOkbBBnuxTsC05Mqrc5FjkfL0WTMszPfEh3xtX8WatGI6t2NaK0biKtzomOLZiVyvG4yq+UyvGYytOa8VkXMXbHJsbW3FGKzbGVXyXVmyMrTinFdNxFW93jGxsxVwrNsdV3K0Vm2MrbtCKrXEV73CsamzFjVoxG1dxr1bMxla8RCu2x1W8yzGjsRU3acXOuIr7tWJnbMXLteLEuIpUMkjm2JpXYoo4gp0cV/ugqz05tvZVwjj0fKBe75Cr152v1uqlykPkfPn9hgrGzVSJQY909Wb7Njw8gHncAX/oKH/g1bofhPh9xF5BPjF4Sasv3erLDI/n52XTtkOtaqbme/pZznOqSYQXQfMoV070Q9RbN/aCUS2bXku+n8r323JNBW3JaUH1Laq9pbW3NmpHZEgt6J9w+Q0/C9CyThAep2IR7JhrepOe+02qVTg5zsogJgTxeDAWxKgGYlQDMaqBGI2A2PUgdodBtNf0pjyIUx7EUEBMBYgaAuWWJ6Du64eSPXpqMHiLam9p7a1de+vW3qZrbzO1t7naW15721B721h7u6T2tqn2dnnt7cra21VyCzdfqYtvq73trL1dV3u7qfZ2c+3t1trbO2tvt9Xe3lV7u732trv2dkftbW/t7a7a235PA6kM9zW9VX6JXeVpIBpPA8kwDaQ1BKU1GkhrNJDWaCCt0UBao4G0RgNpjQbSGg2kNRpIazSQ1mggrdFAWqOBtEYDqdBAFUHRNb3VHkGrPYLi8QiKhxHUqiGoVUNQq4agVg1BrRqCWjUEtWoIagmCqgDH1/SmPcDTHuBkPMDRMMDtGsDtGsDtGsBtAbj64eSa3hr/4TX+w42S49U+HO6lCWrlwxPy4TQfvEU1XtW4pneB51UX+MbT8Y1T+GTT0lR3j54tD5pKr+ld6Ju60HkPkDNqnKxfJ/eNUpgxGSpf8LPYm8HPgcVS0LUEmnp3d1tGtu9eam2Um3asAJUCI/I2F1TiPpWFbGabXopUmLviXUOVHa6a8dUSaB6oi/pw6nTRM9TxUiEdyrGxqk9OG9WfPCsaAdEyiBkNb292jC+qFTO9rdmkVgYKGrF2NfPxSI2IZwiUn/sxy6fisAI1IjFqGF8jqtTYbJ8R3e2rqYM7olQS52epR48ZCl29uqi98vP86NzZPzq34kfLyskZPpq4WpFgZ0Pl0smRkHNcv8HGtIvSF+j+5BD/uaC0p9hAtZBXhrHEEzTp8aRnijcP0RA2kXvzdA+stXjsoarIfJvS3Jz73YB6UMipyRsbyWuNKBxyfhBiIdox+Fg2vlyk8y3h/eCIqadMP3Y35xT84plgd1WxBYXWKen3hkxOGQu1kIzVYUw0RNRhdSB6YhxjBa1U2JcjYYdHIhwdCQjDk4vkbTzjifaR58UCt7QQnaUF/WhXsRHJ9WS3pRJ3I3P61OZQ0miG9tbFHwa6XWv4oYzcUNoa0mJgiEe2dLyhZLJhp2pMOeKF84sTqT2QXBgxNCPLPgyd7/63BfLvhav17BArHXQBLvH0ktiYvjIpbkSKV3DGTLsfXwW5xV9fKMP01xfeOFu8PLnQU2PI4p67oLN15W4LpZUn7hCVd/GrDTUodbk8tCxeuF1aeeH262eLH5wUg0j5cGP+8a2X3/+RD2XfZUXDToSGY0/Yls3KJ2wxT9iiMZU2nfcJG5TjF/f9maw2dnzMGZ/QwHVyLHUdz61Edg+Kq+ROKTXfga6csfM8o9bmVsXNcUdY2dv0BKurHlTccVVpiSIGJd3XqRsDMlU6MlCbTzlJivW84qWWeZ0oyadxOcgotdHXDWwlaBTE68Ab7dNiFDlp/S1cXl8U2uWBWZJ3ruXCmLflhyoYXtVvYh5Ogo3oegsLiESu1WRiHgKbES61Dd3mXGYCMTRtOiM6LNK6ELd31Dcf6GRnB2RRZ5dAWRQLYnMHpK8mk5pO+sLX9fwEmSuAiK2n7KImsfNZAcRoDIgtmhAPgTjtQZwuQVzjQaSMQ8uLnZBMWpyiLSeZ4OsKImC7gdYXeWsYRHAUkcboEQXANcXea7I8WoEggPOLURDpsGgYxJosAy7S2gGJxTldmFEsAuq1XjJbKyDi6x6LK4EY5R29LEUQE4CYCYiZBzEZj0XQeHsYxHUexHWEBw41dvRm0RCSsnxWEZte25sTCQSomRMQ8XUFEUBVQERRnpkJ4jq0pONJN+ElFhMBMfEgdua5y4Z4WgeRNvMK4pYFFQp39NZ7ENeLjwpi8SLn+iS/SBGLjlzsEXuxgIivK4jRGUBsC1SJB7EhIDbOAiKsKqeHQcw9iLma/gPEHoeKl3Z6CmKys9fX5SLJ+wJimx4+1E8YPglOc/QtTkYuTr5ZIAC0C7uZh7NELMDF6TcPFYDhEgqEWgBebXgWyMuGy1fVC0oZsK/d87wlF4izrzpGgCaAS49xnXlBBCCm5rfCS7rABAkNrn50ogJvNNIP6BYKfe+IihkHYcBUEewQixZSWpBPcFmcAK0LdigCtAuuA7XifLD+IfIPSdmSuNXAXcd5fI4esLj65hPq2yom3b7O0+3rJK3JUdjgOdQGSRNT07nsu8NSQjcqPRtv2KkrivDiij8Vzc61sJOYQpGxe27T9Qo3Jeqb4ImQXhDQOEqprGj1Qqcac1LWiVf4RCifyLRdbmRAP25/xAtd0lkC+eraiFXDH6ntmLp68eebAFaWyJnC1oF1bkQyL7TO8Bq2rspJLjJwUnxBj3uFVEWwLpbc4jsQdwu9QiIljoT19uHS5c95cK/LaSD2ILi6OS+j3QVfL549Heh1Z5ByNM+DYTErcJKw2Lyg78/6m+yu6HzhXcp1V3P7xgKSlIkHBnj3O4YEuc75hPcm8OLFBZSXlxfvv7wAkeFCeyx5J8vb4HhiNbG6xePL8nTKVe9+gzzWSz+jpV/8w6D4CrGx/2xQHPycwPHfjEkEVydCsbSAIVpakbCdNc1ocnt8cndccj+UbQiFi0iFi9gJF5TXi+UluaeciEyEUyg08Ee/Ee+GRRzOurrvVQTGTP7Q9zaGkiMm/9QP3r17cHG2+OxvHtBS/i58L3DysNMJZ7+SwP9cRGOQZePMf6xeA4ft4tag+waawy9VndJl8loav4rLKhr0R3RVtI4DRW3CwZtm1fYWTxltQMUnHf0ksZL4oeNt66aYItMQ0ols3fU0fYLZY1/8Tc30xete91aR2dQHVeAMN4Z91wnMNbPp7hvU2gJGnsjEK5/VKDimFaO0wV6uZ7t3afN3OIvIgbFv4o1xxd+U+KsLvDHMzx93tW935sEvBrTFRcJtvPiUbCv9xAGAMdVuhXG3r5aoazjxS+fRXRrdHIRQmo1L5vLb2ElGBzMecPG7iQeay7bEJCmnSXMI41kxkxa/YLVeb9Re5z0R5lr0TxbRP5l6MPNvWS8TR2bO8RUMMJJrZeXHcafdMvxZWPXmmXr4Kr+uFtjiqqz2/Sv1+5sU662Kfz0ueHSh1indZCkAHYHy4MAqPrhZ5UhSuoyWjrq41IsquETGixiIZI8YyA4G45euVlB2KihbhkC5lwjWOmp+Fg3Mz2jXZrh5+NnEbcWeVquTlyarsz4oXmqIP4SNsFCTW2ZX2BfhqkxcqsIAkDxi671uu3SIL3+NQt92hX2Bhe6jrTwyDjPjr5Bx4xX2eWZ8l9viPciM/46Mn4bLltPM+W4eASHnCHP+EjkfQM4p5nwvv4KcR5nz58j5swNX2JPM+T5+BjlHmfPfkPObyDnBnA/wOzhQeoI5/y+/g5zjyCnu2Gyf5C/cgB5n5g+g4GGUfIovf8bvouQxlli12T7NxD9l9+++wj7GhnlSdRTFTzLnTwgMch5mzufx8hm8PMSXHyLMKHaKxR7Ay0m8nObLHxNMFHuAxX6YHUDO88z5r8j5CHLez5x/TWtT5LzAnD9iB5BzkDn/hl0LMRrMeR45P46cl+j5CV5Ml5u8coKjP/7evtm+mOj7Ib6/e7P9At/X4fzOvb/g3g/z/Vs228/zHXc/HnDvz7v3B/n+zZvtc3yHxuoh937avR/h+7ugj+T7+s32Yfd+yr0/yvd/AQ0h3y/abB9z7yfd+1G+/3MgnO8Xb7bH3PsJ9/4E379ps30q0d/jMOYXgdrIwSVuIVJ/JS5JForbvHOSaE8/LDPCSka6UkZ7z5im1FOqX38eiOA+TudNX3z53Mq7QNtVoyhOJoqXaTua21nm3uVmVTrVogyjyri7RBEtvA2bSl6i6nEFdQ75WrJ7wGKq2gXeQhMHz6KBgug1ry5CXjZUsfPqEhw695vvkdNG8x4yZa0hcpys0l6xHTmTPnHPJ4vqyyEk/uZ7+tG13g0suV2yW91Am0G/c5q7UAbm4SzlY5rMcqckwiGKivIupO8kHHOI/1gu8KJwS8XttLjIm/d52ABLcpveqF1a06VB5zhY8GUH1BcviXdhj4GlMMiGkNRXZIQlMtLxyGiOR0ZYQ0ZaQUZzJWTUYYLd5RcS01ziWYXXt56wfeN8XAix2L56F37WqsSdU7A6LS4/xEWw+qq+AgdXkvI2deuygUfscpOGTsXMHX25VzPLo8lgKzjfc1ZtvOGL5juvH9F3rfOCdRGpxnqg01IQ5b4vRc/nrOYeU3+Doiiep99n+x4HMsXwQWZeZkoXQM2cPc9bcU1XPI1fUX6URzZ9q1fVIz2ZEy95iTuXA4L7ggO5GoM+794shre8n55Hd/Cudt6Y1bNZpOV5ckdfLBYUDRsJPDadWWn7ZIuOc3sxsKEyOuOMqNaxP03kZuhLvASxKM7MotCN1HMwnpQ913Nyw0gPm9RduREPKrpZxE39a+Q6hq9kBpXMoNLfXK7FoIuBfsQtGk6wxFG2N8NSCrQkTrHgFUV/8bB4dNYBohe3ULbo5SDRgF/NnuW+J4b7+sizWBYoTwsStWZNistHNarKAg+aijRRaQIZ3TlqUZX+bAmwdapuZjwZeiLl22PhgGSPhT5FzGLvhgijE05uX3NDR+/VbicbbvETW52JM0tdaqsjBvGDXSzDob1QCq6L5OGeYhke7nERVX64ySWLkCHoWd+CKFwWsm+kqbWAtbMvTtLNHkeRcrC3qDqAIt/jLNpp63+F3GsQR+tG56Rx5ylM3IRx7kKj/1vWbewiUbKcmzJbOYE4lQd+3oaTPmFv8Fou9zkCkeXwwFtwcFGOvbX4ZIDnekc4AedYyN6cT9WdWakZN6Vu3Cp7uSovWwx4oZr7R5nrctGm2y8V7NgqLuAuHAkkcY3TsbrM2kB4x6CdhrZjtJ2o2g6XHt9OQ9vJrixHi3t+R0+Rd1SBrjozbmd8HtDtl+muDbI5ubEADb59RC8y5eEj4szhkW43S2k1/k9gN75Pmue5WqjKH5khzgWGqAk26NfhG356srwhIPz5yh2qiejKFS9RKRV0zOdakTvScOe+mZowbTUUlrAhy37UBJr51e7GGD36uaTLvUNhVUd5GMIKYCHpRTj6JixWHefdXLyAiGIL01aXMKkUym5Cyu6Q+8q+ih4DOpgcsFn206GJlwbX7ZyfNlxeFu8R1l3QluNUcQyjdmbiH0cow27xTiAw+N0v46TO5Ri8PSvGuWgaMQDkPkge3+Avp7sL/JFz9CR3O4qg2EBbV+uIURZbtxWh/R1ZAXfxYFyBuDrGwEy5CBhchmapZKXhEL4ldDn4tC0e+51g4FdKYYjEW6X78huqXyZq3lJ+sfK9manIazI47yYQHcWqX1mFAdjdPquP+eDxEj7qYR3hVKMGpneMK7lDnzbIkzph6QVlZwLlwOKzxGZx0J0K+PeaIPuI1ROqk7j4HYlODYLfstwYjQZbcodGKC+wIY10bx5xb27E7Y65Ri64iJN0uRAdOcXJUNXir1+hGBbylweQcPlPS0NoU7S9rnNegjgAS9fKPS9slGvNfI1+f6eW3yLf/wKCBsj3vw+3VdUMOxrs5gcVi+fvuVu+jl8cXP7oy6IqjXSnH3Gn7+6b8kaj9Gaee2t8MWC2O5jDU8BtdkTdCfbXVwWVe1+DnXnV5f+9VKTwQiPUKdQE6Jadd8Q+EkI7y3tndDlQCTNy+w63qBiZNFyP5KC2OwvnpcUbFiZCBvbhOnDp9l545oqKU1TtGZWQ3rxQvHdXtMXtqlq754tN9CT49I/8zGeDna8CDNRCDJjrF0X2eEzmcVS0bhRpycBt+9bWAcQqeXUNIiTN9ai56W7cjvupD9z3iY/94h//hHmHfsK1fa4NormipcISw6Oozsm7GcKSEWW8uHo3WQ18AKNW5VCW4q3UeUcnqNWplKHn9OzrAuc0p+o4ZX4iway2URjJLairAhc35a3GPXytdQ/05ZM9KXe5wCJ26LbCh1PpqO6asieFnY5sIujdlwW9A1En8uhGBo/Wlw5K0VVFH5UqIMzXRR9ZFtTfpGG8EQhRekHSeP/JKmhp7JdSUbsgPkxolfAD4hdKJTG5yGro/J8IoQpbpRbxtw0dMr75EfrDUhHmFXEGxeauRobZw0AmfEv2Fcf5hlWQHldQcQvyj4c7+Hg0vHFx21A19dbW3leclmq+kbLVInTtLCOMEWbn8GflMnWxal/xwtj6ZfODBiO6tZdrjGtF6FNHygyqhFOK7KfseHfzpmguTEwFjbTZSI0No2baxFPMNUclU4Zs0R2BCxUzOS7rTYYMaGzWV62ctSlYMeuN9SxnhuH8l7LAG8Lga0CpYytfblds96vtWdpVVprd6aRgiOa4UEI2AEzt8sK9XEp17Inerpcc2+rTnbX4N8Dm7s5ds70ocxKTettFWwZCKA/sYt4813aFI2AN/MXV9sKl8IAu8I0NgV5YvgobwS+fh7VAAw6I1ZiCjmoLcTfKEeypRBdDn6Hf1VPRNty2+kEW4zFuPENNYMCERb1tHSsvNsWXcbmO9UCZBoZftkPiQBg9ABCrBKRb2AQkNC9kPy4svmy7P76kd2gPQH/NtR1oy4SkkSlXmuGw2nVHNjS4CNDrEDRghFhIgF3dQtliw46OKmJQyuDUNul15LIRKqPXTfZVLvkwWBbu3O6SXkgUEfzQ3Iuejr/749GicqqGgM89/1VU9OyhOSK+6uvnN9I/Bj81qOgsN1vFV0AEFQ6SODiNwpl4OMn5t6mrCDm3a4mbVHfHnKaotNzCgW/C7qDnzOkCOYlGOArKe+nsWpdH0eKtWuk2cXTLG0e9Cd5W73okTkioLkhiEwtovQleFKBj6mDyqvnu1/cneP+3QaPRq3riU4MYT8XvPlek4it30H8JgzUNOonBsPXBCP1gROIayfc1Gelr4vvqO8g1hxovWYnWjetRBosR1xvYv94gsLtV8yrXC5aQDoCF9VZLYIKpYo4Ky/4FJIG4+CtoSrfDDboPGRXnU8WbIT789K8HtHeV+85Feo1aNfBb4llklrQNhx2tvIMvk061Xx3RcUgchwlWQAgd9kt4wibZbWzr4BYdJTluHt9OmNlCh+q9mLmtzF/i7tAY8pVXvnOxLz5uOEKLs6IH7BTfl8EaaVJiJuT5BHC/VGPLS0NM2vX1HYuyUZiEqzeEJEBPZ5F4KliY6EVr3L8L1jSTCy64YE3CFxuHa9a01pg1ayJRRMXFR1G4ccGabA3KyB2X34b3p6w9jb5S1lwPwHCwxb4MQTBFhjGRBlwi1sfJ+ozjsilvE1Nz1ZdZ/wL3F0F7nX97iwnaa/0LlqT2TLXShbVKF+CeHvR3cEmKG9U0l05B2TiMojnxJIcYyIXqmhD31/fnxG2I6lsYK2PuESLo+G/K8OctWTzntk7eAsOlOboOmRPDJV5lz/L1N8HEsqluvenmZR/6P99bVdheh7OQH1v5K43FYpNrvXELbKDm4FcGra8tW9eGqfCezEVGMlwc0p3oFElJW9bzvwbEvvV399eDysDxSB/ieQcW5otiht4pvp8pxQcyZInleL8zqzTEgV3fv8i5N0Fb63tzqmaiBQUOei/a2loG/H8Bn5AXwduPwnyR7Ap+3NwC+6k5WCOtE6jnHmG4gEHVuGh9Ky/Fm9109q81Y/AGWFjRN/GsKDdyXmEIdi52Oo7eQe2rZ4VNr9dzzBT/TcpdqrTdoc3Y+pto7LUgkR0cQtqeBBmhhMSA7374q3ClvQ/LZ11WhCbk6UYEwene2KfzH6ra4fqchk6JsBEe4oLD40ICI9S4R4k7BEJvObRzODv0orGe0TDotJOflAnOCQmu1ey+vhAHdeISDzd587mvteRXDd4Sw1qySW7AJZn0C+sfF06uE+RyLbX4xza71b0J6ww4MS5z8SbDgiwe5KYJnYrRiSiYE33Ev5UpLNlUGBjegTBA4cmQH+uk9azWOo5gpH16T0kYyIECDNMuwwBGPCjBkr1LvBLFGUoID7qz+3o0ntD0aCf3GE257WDk61yXxTkBHLDiTtc2sDUjdno0EHaK2kB8BcRki9wtdN+OIm1dYUEuDOnAEDiahs1Rq1a7YyolA44HuTn9HTby9VcFX857JPl0T8aNhJJQriDiWtdykDtOvqBKmQhr6w/6gzyiI2WngNM114oGJadxGNEISFflHeAFkpymUfAmKpgA80woeV4vwkpLCuW+kOJL1yAaE4mATQu6gJeE2+qtirSrOo12tl/9AY1RzIq6bU72hoUEd3A+O5zib05UtGHX63CjMTrc0r/QJuffJnDGSMXsXriPyh6wcDtBxYnxai9kP019xBE5QQqKjVQIiabyaSyGJ7A1K+QcsjgB5hSK6YXtvkNdh+A71+GJq1TufOP/M7pt9PtBgKHKvZMBr0CN9OIScVkN7d0lzje5aARFkU9fJs7jSOXLAmb3HbzpPoIlbX6T9viS+sccZuRQc1Gu5CR6anhSrA0i+sS9P0IUhU8AVggnxaN4+LlZasC67eIYXn5vhrZHS9gldk3xNBI+UU04joTfYQJPQPF+Cu8fmILxzvLyAWqakPQcku5nEj09hkh4AQkfnCoi9c+ldIvkl5D8w0zGiOL10Kmg+K65kVIPIPnl2bLUEbz+/KrKNr9iuNN9W/EYsn9uFdRKS3h5Ai/HVhVRt1k8xceLihSPh385KP7dXDcqTuHhT9+IhyO/gh128f65ri0+j0db/Ac+PvExpn6Uj898LOhmxUsf4zB8+I1dHOCc4OMH3oTHp0/wnOVjTP3CCVb+i0vx+NCvYutf/PBX4vGpX2U7v8DHz+MxLj7Fxwd+janH2MKTv8bU33pT2e7xy8p2f/yyst33bSrbPX1Z2e6hN5btfpYFnkNjafHLfHz/rwdFs/gJPh7DIyJMsdqzeGwU/x1fyz48CROuSe6xTtqREKLVeKG9bDSeaLtq6JSeOXpoepbooZ2aZ8jOmRxKtr/Y6KHtQfTQzkjYzzGhQMWTYSX8Z5vSULvmrK99hkiiPgtfG3Zg2dYYobOD+i5m6ErNd+oxRI9bMSmT/7KzxBDFGZ+EZjxuxwQQPWrFyEz+a41zFEk7JtgLuraesDSWeH141NLiLC6OoPrApOogwnNO3q+hP/tewXv0s0++78/BruiKMehiRSkO2/mtcp/iUXv3VhKeJsOmgYkPSrhLPByW+JesRa2vFHkBPFJMDJl/iLUl+bSRmi8aV/MFM1LzZLXm88bXPK41T/maJ0drHq3WPFHWBItW93pAiq99VGpvNXf3feXDZOrASbUPwbyasgkGJE7mEdPvSNcN45Z2GGAUZmvwqOg/BnOxrThQu7tsBkIMTMohPdE5BwNMrwYIfQkTe8ggWqvCsyzwIHjq1s99Ht5dp9X7eVYZrzWsdoEL/TolMUUl4iyEjS5jo2pgUzF0ZJur2R6Ct159aD+CnaKfq1m2KzFbpyQM6gTKOEfqqyVmaf9CsQgsQ8FmLMzYqFHelVisq/nhjC8IBztVDQ8rzU1K2FWpwddp3850nrEivJX4ipClJyGEd7a+rCWmmCFBV13tKJ9mfNhuPiXxYYEJCWbbknixXfp8z6S3PnRs5kK6HmTpCRmVnBFrpw706Wp0GrVarGXpaVTLwQ+BhMbtEmoJQOpDxg4ckQacwhfkFx6Uay4iakiU2lUYV7P1jTJyt94tZp3wNA8XnnczlitcmtJqEwczwbyoeMSsdOBvlJ/Bb3/Q0iZp6XZp6TaMatlShy1hMyXRBgPEEywjyI5jPj6C7LUSYRZEkEkkWjMaypVhXFFAfeR8YOm6AQeM1RFsJCFoGUWWmoNOvkb9gvrQswBcTCnVincnTHEltuyVYnHqSDrvC01LpzbxWFIo9mb0jO4wOndncomvK41tDXX6yHMszxIelgedEiS2H8Fxqbjd0yEyiOiLt1Vvn33cR+qV8lFtiQnF1JgFxdY44lP09tnFap0xNQJXI4WvVHXft/i4j1Kbtw9Sei4Pq9pqJXpSvB8ed84KlzS0+6izwqjmejAadVZ4bp4Nv35RNk7AX9VJoVUnhXz6ev7BgY9RT3TOMaGDKLd0SmidU0KfLZGmsx/5MnOROIvM5CCTYUX29qeK02L6AxNBubwES7KGT7J7uLVmqbhSam5wl+4iFbwPmv5asdslza2DdmZuT3/1PP1ltvNZLGQX7eln8jqR8+YTcrvyemF5WSceuWIDlyLxyA2eHgPfDt/awZ00NAN+y3unuN1EZ/1UqjJrSoXY3owcis2BYU+JHq6xSyZ/I+8uQEuex7vBBPg6515V+9f1pebqpbqDUmi1kV94/VBrrF6tl/XWUF3aQulZLhoDGKBHz2ddKd4mbElKVgMj8wWzkYKztYIT1w8VZHK1WJavEfftGKQkXy9QdHbJraROvq7WOFNWV1rBmy+4eqTgukrBdt65caggk6vFMrlctgz7SlHc8jZikF/MeFlxDgf7+Qw0ATOikoaWYK2E/wvkksVkvlbP9dfSWUGOn5fVbI0XrGaqbWLs9XweS3Y+iUTqiiapUcBMGZQ0cM04rnhcLS7nCxC/xNwxF/cF9S/lM3oSP+5byp3/Umb9FSGMkOsJLwwnPD+ccHo44dRwwsnhhBPDCceHE54YTjg6nPDocMKR4YQHhxMODyccGk5YHk54MR7Gx3DC88MJp4cTTg0nnBxOODGccHw44YnhhKPDCY8OJxwZTnhwOOHwcMKh4YTl4YQXo2F8DCc8P5xwejjh1HDCyeGEE8MJx4cTnhhOODqc8OhwwpHhhAeHEw4PJxwaTlgeTngxHMbHcMLzwwmnhxNODSecHE44MZxwfDjhieGEo8MJjw4nHBlOeHA44fBwwqHhhOUQfEQkPjAXaFB1veyv4do3sjR2xRoJhyYBV7t8ja7ktWW1L+rgNnj0OseuZmQNSN0COoEFlAng083d8JjDa6V7hWXDnRlWrgla1WmJvLsbYv/Ubqzuw+tx/wIstBPki74x7BhoW583d89jRwMrr+VwpxxwiY17xAVgmVv6vL0b3rcAYIfa4haVqA0WPzgobtR5xEEU74rgwFW5xyXPlT00KGu17CGU7XG7wVu787iKz8I4j+5LmMP3D8qH6lv2/bzEBTlB2zs8yI+0vcMh19qOq//AID/W+g+EcgLt8h8c5Cea/6DLL0F4aFCkoUUekk90gWQ4WsIei8Aw0HJEfyllYXq8a/IWKC/nengeHuQ3tbGHa/A8Oshvaf6jw/A8Niji3O0+JvBMEyVNB8fRQaG2wnG0BsexQX5HGzlWg+OJQf6E5j8xDMeTgyKTWuTJUTiODwp1FY7jNTieGuRPaSNP1eA4MchfpfknhuF4elBktRZ5ehSOk4NC0wrHyRoczwzy12gjz9TgODXIv0DzTw3D8eygyIVa5NlROE4PCs0oHKdrcDw3yF+rjTxXg+P5Qf46zX9+GI7PD4rMapHPOzgIhRR5YVBkTou8IK14KL4wyF+v+V+oQfHiIP8izX9xGIqXBkUu1iIvIQ5Ug3Yh6ma6IcyEPcdx6BSMpOG0gvwMh0278QT2Bq6EjUm/i5PL9RBlL1RrE3KuVWS6Sb5qszgFIJuiNQcsG9B8J181D60Kyolr8SRfzUOPlnKnNo+FV+drXYm0LJFqCau5jBQpgLa1AF1JaAF0c0J9QzTwHUDW4tlZSwI88H4ksIyu0Aej9JX96mKvcYF0tksEAkETvVVn7klT1oeRTZewUzbEkYI7EulqVulqVumq27ut2Agxgd66BtKygQEmmHtGTDTPiImVF0MdffioA3aaFNvb+cR83uVhekNOED1qluqokSZxXpeN7ZcnqS6RM6HIaVaQ0zwX5LhGel1OygnO3AFyGlXkNBRkLdAuCwyQE/cbip6pceg5A3LcuoJVhYuhOGXjXmsmn/QXevYvihwBRkVvT3ilS4+2hMzuX4hdE919NGFvZeVpCk+hPGErDA0Bn2I8xfIU4imRJxqlNeSJdlAXQe+0fo8/x51gqb0yu60cjwMiWGnkVq2/+GL1xcpLpC+hvCSCyrJuVK0bV+sm1boNVxc600HdtFq3Wa3bqtbNXN1G9bvtat1Ote5Ete6kqxtX63ardaeqdVdV6652dcNq3elq3TXVuhdU617o6ppq3Zlq3bXVuuuqdWdd3aBad65ad3217kXVuhe7ugz6BHIigCDMSLbTkEIzKtf+fYwLEnLnkto1b/1fTEgke1LDrwU0wxX7sF/xj7b41WCH3mYKJVUeI7mAh+PkB8Uqla7ycanyIfeS9KM3Bz/mXuC0/s3BB+XlMniej+ksDn/2QSvwFnPEpbegl0V6IunJW8yHrJgFWNVEOOdnchklKv5y4MADZlc/Zsc58bgUsNCl4KX4MiYMfLJ8yHK+XoYv0miL9cRQU+84NdTXJ3XD4aJ6AY3dc673O+g0NNWbUJ9wV3b0JhA/Z+jqXbDV7kd7BvcCPxWoo01myC0YwszCCrKpgswyPbEc7+gliQnaHNHiFOeMEKp3b+9EQ1eyTrF5MR0skmvchTMZQzMYQx5DchBPBTu8dV/5GDm3kN7c2woZQKO8MBEFJrRilBjqtz4v34oqKX9Sft2n/Kmk8Hyv+OSg53HZc7qxaZceALWWKX6DRbMhdGTZQwMfK+qyjBd48H7Y2zkUJ3+Tb925voRdvESjL05r/OVXGKGaV0nEYbSaD0W0JQgl3E9fRjTUaMfi36X7jxmZ3IVxne4H6pKvu31BXNRzPA7TsMC7QnuTmHwUD35S4xHTLr/N8aKrEnF7qVeBAq4oBte1YI1wLBPzYsakjb0xBcJvaSBb6wLZ+gF2caCt3OxijEQXylJpqy1+fDSMpWW8UY2LwvMQxoOtxRu1ZbzRQMOLahTcMryoVLQ+jKV1oUg12kzEPjK8qFzrimgxF0h4UbnRTIcTfUa1Va+V0wwZKZd79L0rISR9eNHQRa21LmptKCE5jfpTtC7sqJj0u6i1Rs3OIw+ZBEm14py7jEFK45q+rccgDTQGqcb8Ho5BasfFIA0Yg1TLi94x1BikepVND8vVe26oToHYVQmxIxnTPqOcQ66f4+PWBkNxa81837nv810PXmXc2mAobu2YFnNaITozfob/VKvZsXTk4taGI3FrbSVubXVIBnFrwzFxa+uE5ePWRvW4tdEgbu2rJyx1zTlCQGWfNW5tWI9ba8fGrX0VNBOPp5l4BZqJV6CZcQBXCCAoJ4lEHPYBhn3cWjuIWxuKx1PGrTWVAPahel/2kdsziRHm/TRpUKRKbCSJW0sLdh+31iBurZG4tVbj1loftzbM1MpLrbHkYqePWytriY9ay0NQbAYbZdRaH/zcukDusqbrXYS1vDMhkWtDjVwb6r1bIQmOk0SuNdsldPb6fRqBkKXkdiPD2INCNCidGH6r21QSqeDZ9VcD9HJry6DKwSBmvZqXzeQuur2iJMs+Zxhe7LHPuetHdknsgU/jPFpcs2rsOqNeJICC078fqB+v4ujndOTUotT7lBJvaEWSIQwULj2yXakM5lE87r8B80ja6B39nJMiEGhUVgh+VGT2HbpguK8dFedcdDWBz4B4H/dtFm2Jriem/IH6L9P4ZsWxz6nHr5RPGhYvezeWW4gG3Yt5Sg9QP/8pV9ivcd0t9HQw331jP1T/o6EaIqpvWDHra8+rE+d53rmnieKJT7pGnv8knL0G3YkguwiogZuxX39DV64SPIbn038oPXgp6P4zZj+KpJ9MNfvhQfZfMft7U5O5Gwmme7HMii0QXweR3OT2FwyC4Dh4XuilyBBwMNZY8iQimGzdJYZc2PeGQpcamw+xz9bRHhweOUj7kQSZgZ+LB05roGLEjePqI7dKoXOFNQqv30hZlgNSupTBIrHUzrEr08APvGJOLliE8prITtZNeSR3/yntJN0ikZDpunUhpWlrjG+ObzHUj1ptiZXUQ68Pjc5WT1RafbJsFVwaXRUHZtKA+BQf+w0Rv/e4y9LiM0GjOfO2tPJbDYwqVUNfVcrKzQ/XTQmkI+E8uFqlbrWSxsR6QiJnYrWkF2uOWEr1dUxcthj/ty07c4kOGzoOmOjK0hhZo4DlfSW3trqRb+jSo1+aEdN5HjNWFirfXK20mnVPi//yRJaqRK+2S2BdLlXicYRMCoxnWiIKSXmx0+7O6y2WrjKjUJcqDXMLjYyuRAlXopJx9q0fLIUczQyvRGHZt0xWoowrUcKVSMvLStTIJeZO4leihl+JGsIIk3IlaviVSDPahVyDdMPZGlBCqz6clTEfJsm2I/KROiCKdvef0tcuxyUTuCxs6jl/waMi7wqSws/+4i5eBNU7+5ihsyKyzEvsUCxfu2YlCiF8L0TZPamZXHKeYuQAR3x1rxInO13xDNFxDdF7Ph2jieKMz1B24dTHqUUScSqUi692uOTpM1YKoMPdEIlOxUVL0jHv+cv7g8wycmgtlx7ozwFGHpDUJyTUNQMh4xv0OgE/t2rBAH2D3BgVR7ZtpIdSBkfjYuMU8p6dRNey4rGOoQrD3f3WvIeEPmhaHF6BpVGCEaLlkBfCQl43a8tNg34mrad0YUu7fZBrS9SqKLpdLsi1eSMbA+VcbeJz7GO/OV/tuJxtKEoqn2srMlt6gwBOPgUtuAY5gDSkk3TeDxuCtK19b/GnpZig6ssBTLQRZROCSNGSZR75A7DUSc6gzY6LWzxugM2e13iMO2ce487f2Bh3zn2MO196Y0zFHc5eJ2kkMqkzXv1g/UcLP1i6E3wCQqLzusSRSrapYxqGgIPKFmpDcT/EUGtW3QP3W+p5lr6ZWi7oFAwhNVQSX2KyawkRQLdiQkACJrw/WQXTxTxXH86lz1vx1aVAyCVE/Y4sKRpYTu6tttSNTPs1/556v7V0SRbTICr07oRTog80p6g7aBivVBFnKvwzVofAd1DMu1Yv/ogfcbiwE70Nh5M6ROmUhpgVQytOFtydE99rCpmRO8O5IkFhcpEbaMyoUPxYiAEc4eFtUq8gxn018p/UW82hHmlzpnNKAEdWcWQI6ry/2BT6adsktbXEQl5cpWe6wjfddE002KE2SDqX+F9BiXm1WZUofv5DRGpIF+2x+iWPlMBxjkC1Iqm86adhw48kmZCG4q2MqcTswmcrLTc02otWqMPR0NJVOJxj9AZ/Ir0jRjjY0ZZ0200y92kdrXCIsPKQTVEvr3YKfn413Y41kCd1R3yxcz30VKi+L56wDDolj3sRcCr7Ge9NCgUwmu9Ux3WgstS5TNvgRhr7BeEQzwXq4O9y8g0J5dFrUGIUb2cNXhckITTFCqyJwzf+WnEQTsM2uMzmnzaTp2JKXwxr0ah0RsJaOAJMnTT2ThXFAt21NDSMBu9gsUkwSqoOAfxt6g7umtm+OPgTFV8e7ZrVnp+gKAxHOhqMnDv4UkK+LTcSGFFe3umUMu9UIHJzXbTFOyOQOll23EKWEc8lwsJkAjadx+inrB41we2yhGVuiW6q52IitzUmckdiJ9M3pTjvk+k5IfrIPHCmnnSx7V664tnBvUzppAvUvQA6051XL95cH2I15oTofSewCdN9WN/xHV9aJQH8+KbeKrigZfkq5+Rd/CU2+EIXzK6YccUaOl4u1UoY9Al9Cb0fEL01iJANKkJHzns5tUDgIdfi5DTSQCYSyCH72ch0GE9FaKuCtffTHxtXkyNvld6m6k+6rY7RO+p/fEIwLlEe2orGWAoHcpzuHGMCQmGQuqxgyVrUi/yXykKaFnohyOybFwSF2J9PLoohKg4whZ9oMKBi+YVwcQ9INvBp4b49POJxQR9kJjfKy+3K89XlScYpfaOsV7DsnaRnhHAEhGwUhIznw6MgZDUQpIF0n7aBA3vhhtUKcqrA1oY+sAeH44Evi4YQZF2UPORFMhG7386zGHWrrz4ClG3GsjIBO+5MFL0ag1Iz3B/Dy69mTH/MMErH0s2UpxuJUZh9f2jSIbppjqObWCmlpZSSiE9Q72aw50QNozShcORN8Vy/OK+GyB76huC6UULNkXchFhxu/FgnOtYJxzpzssG4plPfdCpNpwOEcFSkrA6rL+7HMy0HMK2Om3p+oEb224XyZNycmJHpSCU6UuOgKYdJiSqodnTseLT9eLRlPB5NzOpx8xjcTzzXTmigo0lVYHdFz4wxHTNiLZ3pq3WmT+v4rdHx42X51cMzfbqc6WvGznSRPSB9w9A6cDxQV6UJPXvzPJEMb35eYwsD3SDfOkMAS2Up8EC13hsMWIKptGoo03EHCY6QnZk7ZEoxnKCwwlA5yoGd1sDuDIF9wQjYzRGwOx7sdF6N6+tgXzCUycFveX6SauDkJu8GCFWWQMzP11gMPzM5AK5SjsCJy946YHukSlc/3qzgbIgLtUjNrfFciDYFGNdVStuZ50KCt7iGt8YQ3swI3oIRvDU83hiXYBhvxoNeZp6Bc13oZ4qEGczuFdnZzRQh9aaSektJPVNSJ9toVkndiBsCT/RZldQTJfVEO+y6ENeZbIUmnd/5RGXu8TTZUJpsyE0VJ9adS/sqjHu6EJrxIy6EURli51yhZJ9WxQcZWycGtnVsGzq259i/sYPQ8YPQkUFQaXcwCBLJkGiPxSNxuUJolETxlKaX/MU7U0klugDXFgUXvchhVXvF62WCzpjopGOZJCxbW3GJEYT1y/e8UWKyUUVj6X9N0OiuhjRdsBpFnPvSq+bxLY802Y1kH43N1Jl4fFt5fEd5/ITy+Eml8Sml8VWK7NWKbIpBU8PsfFVJ7atXZuct4R9+fqcyv9vl/O4O5ndtTqfKpBibbGhCT/gJ3aoyb7Gxa56ZeTd1ZMl4xStUq868B0BmQ0BOrwBk5oFMR4Gcrub42TZYJEz5nWH2nKk8rJ+vFBP2nA4x5kxF5pW58lh2TCMwXspVymuOsOMBJoIhTJgVMBF4TMSj/HeimnOGeb/Gk7DEos1e6ormachnklgkJgsTrSCJo9Am+E9UHtjUJbqpazD2qzIiWZ7BrRmTbJs709Ptm5Chi93kNmlpdcfWrOzY2JQL40T/MYPtWKxY101XpB3UvZbEZoWdVbnhIkXrSyRlXQ5pM/G8tB+r8Je3t6kjj3P52DAmW44LFPYG+oJJHG7if8DNCG5ih5tIcQMPQMwTBLU8goax0jgnrIiXu1G8mCqo4oxe1AB0WPaKcTt8xUgdR3EVR4n4UKjWi7Rew0dDOzO+VgAirgARi2GuQ5pD4ejKTMMUwV/4t0lbYR18N9jDODQjOGzUceiobBiH8bnhcAUgogoQsM80Z6G/0OHP/m3iz9anyzD+QsVDMIK/pIq/eAR/Da0XnRv+VgAiqgAROaPAM+DPOvyZ/4n4q7Cb4MzztsbbwnPjbWf42Flw49fE4H8i31+BtkbXgOicaCs5N9oKzom2zrI2ZNmHGi4q0B00RBkIHxso3S5MWBPYcvomNK9LiOK26G3GqoobVVVxWkVys4rkVn0ZSapoblV7OJ6dB56ha09biudsgOdmng2IM/UviZwDZCWrrCFadnZ5p0T0qwRj7Eoy4VeSifpMTtT8Q6g1+aIX4eRchJMS0gphtgYoTH1/I8FR64sTTgYfG4uWSY+WyfokbuiPHLkmvNdC7ISL6C8Vm0V4DfHk9qpmcKO/3BtXqQpQOpwk8+ouMS1hxfVMSUaKGUmxIymhTxFERCUixCtl3qx/xn3E78m0llMeNEul58BHwRj0dD16ujJHf3EVDiTOY4eQEoM8/QQGxZWiEEu6TU+2K2hrDNAmzhtQJbrR94qIkGhYTSdvOApy679o49yc09nWdNwHmGROQ5NS/Uk0J+TFjpbyqEx/mhL8tKdKGGDHKVpazmO8FwdZ0Tjm5tZPHw45oE2D6Dd5StHa4WK8VNlf7CPWj902/APCzoawob1EwL1EQKw1xcW/nM6UE3UIaa1hpA0mqDgzdYf/BLKhGBFTgIq8Lsonx8UVTw1lUV605ck6S7Q0K9OfpiuRagmohniLWeT/Sf3puBJtuZYwQKmbr2kFTtEdON7vJOQqlCVmowpm03GYPftOI9B7Eq8pdh1a7crYdWhNVsauQ2trZew6tE6cL3YdWu0Xid366ju0D5EAFFXsts6A3cYK2JXJTtzK2HjBK1XQ9WqpXlUVW7K0IumliuLUSSjEsJhz+TKZprb0p6k/cvoRlpvYETTzZwUst0p4q9vgEUSrM52xeG6tiOf6cj60XwnkOtLfCI8w+lOl3liTogET8VSb1rhGUqHWTLvd0p9htnpWHjCKtfCcqLO2yg/vZCTgyWuMNVPO/XLsx2OvuiNp1Od+s5z7JZU26nO/UxJllUbPfe6bkiSrFPqq5/7Q4fxPds3Eq5eh/HHCHXqSf1a7mWY0KsVPVKX4yaoU3x02l5kszWWc6YzT1zuTFjY8VarSdeTEzbWeC46YyswP5PFUjg/blcrW02nVOmYEkzyFXJBN5RiB6R+wM4SdIeko3aZP52F29Rogp3km5Kji8KzIsVKoippesyIyNEeNrNKVjKxW+fm4akTS+btNR+G50ZEdoaJyKQ9KWWDUHu2sNFWTWv5uY8qe64xbEVOhF5fOB1M1ueNLBFPjeFNwXrypJl98iXDus9GRPR86yrJnjGkMm9AmzoT2hHhSjc9HW9dicE2RdlrUFAUqikswpGU56pfEdJCYlolNnyg9Lbr7lAqMqKhW4riZ57iZ9OpTRoIOV3vlTBFVkOwFkskY02rfbpVmKrGmJVL6RusDJvAClftuafFhxFBf8Rz5UNPDdQRP/ONfxdIlLV+F8tr+A139gEiPEjy64YNHN1zw6OxjIaQ7HRE7GJFER8QOhifIbcWGpud5auiMzHGtc64nLu9menK1lwYkEaeE13e4gMa0rOhI2PhM3d+UFh+g1apBn5BrX828+qqhn0QtZ2Uu9ryS2BX3yqkmpi6RjrrVeK0fV80Q4mE7jHhgKadOXSZ90alBoa43IZH40bZqnUP/TPxp8N7RQr+jdz/UXMI6Q51aX81QX+1Yc4lQ4hmLUcSQuRoI1WGgbquWPRSZ7uhARtWBbNYHcoy5ptXR9bJF7EaX1yT1FugM3XirCSivNzpeWBvdSZnhtMNrkE3lTdfTlg5RV7GSzruBop+xqGZV03IdFAJo0Zqx4Qz6IArFYkotLWWSJemrJaCAmljN817jvrF2n+IQcYgC4FasZuXJW1WrfIXVg3JTnghKfgFjxpIW3H0gd8tnkrQwWaWF0NNCtbuhM53xGIoqlox2YHddo1/clfKjn5thWo68JU2Z6anjKuclmx/UexZyy0KGFwyDlzb0AoVehqjfjDixFiddZ9gBMjpZbPCfhEyuE2BcJcCkSoCO1rzM0RhcV5nrSTzoGQbQIK11xOWEuyDA67o34tYUPRXI5adOObciR+VtNSf0NNfLPIPgYssTGocmEJcVNa9fPMXppthsCe1lfrXUdF4i8EIIb0ZbklvkRV2WKU/R5BK6PwcyPAeiTzDr1MIS01GZB28E9UN3N+YODC8tX7d1kkqvdCUMK72KHTID1yv6krBKXg1/RWJ+0KdAriyltfWfqbiw5IWqyS/RgasOG3mhE3GMqvSHBzGqDmLsh7Cs19B6NHJNX+2Axn/TAzoYThEmfD///g+uPedZGYwMaLzirAzPZ1ZGr9Ug2nOalcGX6sCdaVaODmJyTrMyOp9ZGf5ND+jKs/Lv+eCGKwyuHT+4gQ6SGRncRnVwk5HBjbRefD6Da1+rwQ3HDq4dN7iBDq75+z245rwGNzwz+11xcBvnM7jmtRpc86oHN5z8Byn3tZFyg79lKReb5LjcJCcj+qekqn+y9KEvDoF66mRURzLyJ4Y19ftTcmdmTm/JzOi9yGm9F9nVe5F39FfpFnkVB3S1nCdPlkqAyF1pS6td19Fxt3105mRyGVwvt/Sd6oI+TsR5ypTTi0hiR7xsmnLs/AYyGr42GFVvXXDvm/minUGhtt/7BhVSEoKLHQh+bnfylhZ6ld9tnfm7zuWzIy63A3dbb6d/oZ0YBm81SU1uoxPVuvWuojocQvVANQrlke7R6/dWQo9YM3pzsOHHIszrt8h562ykrWB4ww7irG3SPybXboU6owF1OkvQqKbCGUOdos7pR3WFjvr6qKe1lZA7dUKOqoTcVUKeUkJepYSs97z600rI0yTkNRK0mpoKxlhYVWoylIA98SbKRxn+YKqO+JKaZQBiGgK2vK5nMm8JQ1rtuZhr5gJxhyKkjeJt1TSN3PhsOdVQFduJTyuJvdT2XTAoNzG47evUSImn+4bvCI005VK4g5RWn84muSHaeVuC59qIx0EYj4GwNi06AwgbYyDscCJ08BGootp+dmR8y4YmiZsdTj+1hpNE7lBxGHWSVMdGJ0m3HM50MEZNP0ncuA9rqOilZfVgUgyTPJYod7m6Hw1rqdDbpp82blyHW+eMGZ1F0bC2615bOi5u0GGwrfhC2SAe1rwGTHwib4S2a0n1WV3nfnijc5J8B7wOZqpMh8eSDYURH1IMspwOPJaoK6NI/TnmDDvG45XmAiMw5Ck8lcB5yjVwJcIvb1T3bSEdd2+QT2fO16Uq5xjnPPcqOdTLm7NZX78z8GxySR4tiLtldGfbsB8T8X0H/8j3bRB3JueutWuOrIjN0RXRqFBjNPacMBJTZyStKiPpKCOZUEYyqYykq4wkVhFHrtHyWGiypL/E8a6Jkm23nZeUxLkCWSUK37bnv8mQiENybkm8ACHathcIND2rSLRcHeoiDsu0vYgTVreedLzRHBGl2lX5KRuITlJ2SHRqj1U0OdGpKW7OQBqJ6pdlNtdXN9qU9uOBIBV7deEAd/4UbYC7hhNRA4e7RHBXrl2NylKluJNbAeBFgjs7wJ2auvfDQR8bio+gKobZmvQ1pGD8X4DGqhQmLsJ01x+qznGY3qIqvcWeKsp6Da2XnI32BvVGdJx1Ooyq9QbfSyralKSi4yxpMn21NBn/bdCko8jU7dMGuD4X+nQnxivqS79kaNWeMz8MRugzXpEfhiM0aVfkh8EIHcYr8sPwi+eH0WtHe/ac+WEwQm92RX4Y/C9EY2fih6P0lpwTP4zORnsr8MNROkzOiR9GXzw/DP82aPJM/PCs9LkCP/zSo9VwBVq142k1UJozI7TaqNJqMkKrkdYblRtrsqAdodWKsrxOq41qvWSEViOl1fiLp1X72tFquAKt2vG0GiitmhFaDau0akdodVjx/iVDq+a8aDU88zq+Iq02RmjVnBOthmde31ek1cYXT6vmtaNVc160Go7QqjknWg0n/2Hf/fd83x38nd93Z9lsxVWw6LBKN8GXZMdj53/6aVGNzZRRyCTxVgnxgWBWz0qUCPRps71V4pv8bsA4NmHxey4IiWGMCcOQKax30IgX8GipuJJuq+9BXA+EXYHj6eJrsp4LoBZrALWYkV6m88CFHQumAkXxrYXd4W4bFsluXioTV8B5PxbX7hKpTA1h6f2X7W2m4lM8jSGYSNRdt67YoHU20qq9+1ZVun1GAS5OBw5iBHqJMgmYoTFYWGOOGjXq04JiOUdLGkWh8pJWX9rVl271Zbr6MlN9mau+5NWXDdWXjdWXS6ovm6ovl1dfrqy+XFV92VJ9eVv1ZWf15brqy03Vl5urL7dWX95Zfbmt+vKu6svt1Zfd1Zc7qi97qy93VV/2ly+ijp3LMjXHflrUqXPZHzToR9YlkWV2ERWb0wGP0wimbeqK0FsnQmpBheLuKhhvCyyBoQUjiWpzyj0xVyw9A0avMwish6iCZMvbZyXEDsaTVBl0vzbjy+VKuHf1B5dPCAxda3O5Q2xICVvCi+HO1FktxDVwmV5BTyWUkdPD2x0CmNiHxwgniOsamRxrirdI+pOwRRPacBh2A0Yxx8d8S930CKasen3AIszIo4xmRHvVCM0Xn7lSwxkhpNQrZndu3rPZXiWmp5zco3lX+rzfHc273Oc9O5q3yed9ejTvEp/3qdG8jT7vk6N5G3zeqdG83Od9YjRvzuf959G8GZ/3O6N50z7vmdG8rs/77dG8ts/7rdG81Od9fDQv8nknR/MC58G/EP98SqBRJof3DIJW3tqQMAMa+wq0ezN+Pq1RqIqnNEwY6fVt6v/xrl7ozjzuGlz1xld5jBS5Gwxi7kyz4SH2qx6LhUCF8sOd7rZIeZfZNRTWGxImiwhMmNCV6jvdpRuNUcmYUtM6hWV5yNa5BY15X1nPuy/UixqBLmAPCw9IZfb4+GI6HVmeMUoL6eZR915YjUmApJvdpZVDxkc5fKdL2S2//ORexkcn4C64ETLfpf450WHmlZ2wHlBbrnHMOB7qq749xtscUxqb+W0diWO5W/iKvzxTqflUWROg+m+m1b5xvQa2JX221kklmEd9Oe1dqgGJRMC8vS8BA3nObguNpzkrvvNFftzi8HCMRivqHUrDhu6eFef73Sy7zI3Qw6Havdzse/G062KWS7O3y4nV7dkHG3Qbz9iYFF4jCGGxCMPWhxUJ+020ZiRKEaL9SXN0SzplAh+3qFYxExlMw9PB8AQyDsW5+Iy1sr5RkY91emqvz5sEe/cwVOEC7yCxrxKjjPSPQC8QI8SE/kgo0Qwx+4qHkgWUetlsn9UoorBswPkfo1dVpZWo8DFLj4S8c4TpPO0wHHEC056iRYIFE6DU2mT5R+lGHOLSw3IGCYQ8SmehvGMjFxB47yyRiDa75GZ4zCBkjOIpgamajPqFFs4FeRKeK72+I4EVA/EX1PAyqsONOk+tyMi8lnYjw4eplx4AwQcdvqMIbqKfBfRHOcfYplgv9I348WFGoBEB82RB7xF1MxHNA3a4umgD2Wlx2ixMTAa2+s9YCeXIg/Xu/waeJ86d2tdomN2g+KiPuGsQ68I92uLPBiF5/0sZkrf4Q/+Y9MSvacwQBQiZrbGBG9zEIkx2T47Cm+prGCFu+JYx6uwGSKJPSxxchj6nq/c9XJIyCdUjL3M5I7V39GVGyCnzYZM54o9ajez8sCXzdgFpaTGgS9R/KqMfD6L1DniNj5H86UGMZq06HO84G6KRlvMFnMtOcgZDwEKFyb6qwnFfdN9ekq2oQMx5K5sDSh5PXcnocia7mdF5XUwbo2WsRIm61vktsEqC6xi8hjE9XK7QD7eHjN0RuZPt3EXo+Lhl9GyNtuknHjsbFv990FkzJhg1d3pFY7E4afYo+S74t0gsJPybunr2b1ipXHzu4wyVw3DPqHiXxHnO7fYOQ3nG+hNtF+7JcDM+trLV2Mq/X0JWOMiiWphsUvgRzKtJN36JVkyqFe24it2vibZ4FtK2MSeyCzw0/uvhaCMYp5cS01ryc+tY2G8IV3dhj4X3sqjh0GPOWcSkzhhVbyZyVfLi2VfC6xSSueJ3X8HS7yhx64eXl5eP/9XVV4zb4D1j0GBaBhYv42lPjt0OboComt3gC5dhq9eVfWtJ3yrVpJbESN16D8DoXmGPScBF7kt5Tw1z5ElZ+/Me94HWTZ9T3BLiFf/F4RaVjxCLF1cni/03qnPxNrg5Xr9zV2ewuq+qre7u21JY7QMR9EaNRXX7eww368isOKfx37WzpOIn1CeeRPLbOcsN7TFKSQykYzyLDTWKTg16lbICL+8UV1GXYRgOUabxnPIn6Zjz/sbq1AIg5Bj2ACo5pAxFtJCHIiAb0TmpfSuWIs2yIle3xHUclBO6gllKnNwAFZyugc70Y7Yfa1xojfOi9WOR5z0yHOwil12nMtSmXCaSfHTwyUtKHDjXb0oOKmAGEng25K1KlqdofJxjp2CI6hmik71OlRzP4ms7IBlnXGcldPGMTDsGidxWElfxurpMiYl2tRYjkNOO+P3U6JYRw03xllpFR1GHjUq1D5obVG7cjEfEiJBQsdlWx1mPceRkChgN5gvFhAbnVZLullLiE6XkJ4zDZF4akwrZvTFEKbV8QoR2naIzGnTVujW4svT3ZH2JxH5QfjW2F6OLSQR11RKK4LRSNanFpdqoxS8rYv5MuPgxIj8ZxsBKClmdb4SUWEwyepOsA+OBihQYxllzsDHCFm3u4rqPQP1aGX/N+QjMGRHh3GUGaRvSjBcbjIoNjPHlxIaQAsJz/jFyYgMeYyc24DFxYkNIQUEihDVo4K2CQkhBocWfdk9iEGbqI0CY2aVBp9+RKenEBkPxwIsNlPpaXmwwGiBoIDaUi3DeGSs2GA2Kbc4sMxiVGbgtHOW/kcYYBluSlV3QrRwnb1QFBblvDms7m2121HnK+OVNfw8bJ80HKtaV8Z5J8+3s5y41PdLuMqhlcgPbOAhV7Fr8fgGDTan7OfxiM1Mcwy/Xsqfwux6/D+P3IrcWukWb49gpZ0zbzW8nhDhx1FapzpDqxJRWQ3UH4onQSQv9JFqSPXe8crVEarltRKTxhGI5KtiuNpPQKJntiyWnSXQZS4qvHhJd6qsfE4/w1nes8lDkgvZi/fcQ6GCz79mwvd+4/0mPJl42ncm/1/+6XROlEf7BjrGBn477B4dUzYnW5GQ29K9euz1Zrt6fLaeGHYi0T4juoF0KKMVbR9b4J4jwfBbEi3f5SfN1W+9538FDh48cXzYjr0G+dut93/PAoyePfPR9MXNrr27OPGb1d6POigfkVac2JJnoivCIS/kgf++xbzEPWV0/2+1VqgGn+i/oXt6Zand9ApKQ0JVOI5cvk0I6E9mQAHbVMANwRdzW3Ogm0Q7WP4+hsPharVpqKszoXlO/WGspk2MQP88ixgYds1evVIz8dl23+JGvZs6pWs/42afxWnQKfm4Md3STpUHVFeyycTS5N7d7yOLFKzaiZzAmvIzS0+JVbzNEDX1/xupyqND1TEURlA2R0blUd2GlEVqcB1VejBuL3e547EaK3fbK2PUV2w5NHS815h020Bp4t3YytBF9oXUO9SLiBTqJgBtnlQ9EbmP8aNXCpHQOe+MsEnfzmE1cw0aCh+1KQiehgbIM/Wq2S5YpHjV6x8EVeMYXsCxgipdctn6c4NptA6GcjJIEHQ8TdB4SLU31gawB1ence3JRyvOqyT7PkCEdSyuhHOeI7pinZNTKPi8UI0dfuRBO6KlGfDCLe2N1Li3OqvstfV/s5aUKtKlK0H426GIAhyfyxYlRuLktppagLJpp0WxcURf3VRxP5rmgpVlGucWJgt+mroymjB5NSINtpcGq5+Vzn9t6cQJLv1xHOo8Zvtk+IB5+/SJ8lln+P9h7F2hJzqs8tF7dXd3Vz3POnDkz50iqbo/s0TyksRHSIAt7aqx5aDyyBAhicknQTViJV/ex0QxjLa9cW3NsCyOwkgySkgiukwzgxMrFCgILLO41eDDCSCDsAWQigi4ZggGROEQOBkQiW/f7vv1XdfXjSCNDHjcr0ppT1VV//c/9773//ay6TxVFONCifojfB1rVB8J81OTMQ1tw3N6vs7FuHwilPuDth0LTMvwhl9pOFdM0IhvzS2d8STPPMNdRNTPpheUJtrxO4oOazQIRfG6W6jhRAM4GzcQh3bDEuYeTQ24mZgYQJC7xoUUnDabx4SafSTlKgRU/y5GiExpVjZ8Qbya+hOkLc0a+MitJShV9e2Rp5gM3ZISWubFlsc7HXOLkwPzJgbVywwY3osBGJLDxS2AzU94NJTKA9Q1glcDZ+h1RgAt3jWzRQk1Pt5tMGFTkvHNkCnox0FF2fg6JmIXo6SrzWfYtxlaUH6v8TcoH5fL18THsosq3XmH55iss33iF5ZNXWL79Cst3X2H53issv/AKyy++wvJLr7D8lldYfvkVlt+6OfJozcMaK/npsUv1L9J4mRAnkdSGCoyduDRN2NRyZ1k7xbrj5m+4PRWUhcmscMUq3GoVLluFW6zCJatw0SpcsAp7m1UYlBkpMTEr0K5DatVSek844SEkVHvIIFC9IeyW4LyGxGxIPopkmunWIbSoOI/eRBF51oM32U3j81tEOdqSCS9ygU+FlDYjCYCA4qbV/mXUx89BOK1phAOL9aHQzXVe0eccj1my9stcEkC6bfOMnFZG1JvCFZrCjtOgOV2lVYToR6fPpZvHB83IuNxLZ2n8JcorP2TfqwrEn6M+h/XmfLJmnFPCqGCeqeR4wHggKBkcmIbrfgo4nWonXbnOo3ZrK+MaR+kywxwjjxuDHkfpEqMcI4n0dSq5wCDJcEdkyGSEeGaMZAS2orEgbLfMmLBhttpNKsciij5oL1Y3A8XYUtBrJtnFDOvawYTRiw+ucaZhqI1XMZlYxcSZM7mc681G6fQzmM/1NHKuJzF3wNDcQP1874XzWZb8s6CsfjTJmyma5AyYqx9pKhAa9Yrm9qJprRsHFNEcoOqCzhq/8avaGuA6wRSZ1kSkvS7GaIagByVgCFOnZLlsFhgutQiIpswLc1i4yy/DgrikDQp3Q8GCCwpgIRbN8oW9uuklBteZGZw8W09lZz4luzuc0YYar8vkPK7fGRZk5yicw7HESzZtpD1/BmvjI2b14o6YwbzeBcWCWiTBzfqo1Cg1N8lvQ2BN05cZ2xrqOIqyV/meca+4C4x5xV1kvCvuqmJdeRfLjIZ3DRnb8K4pvHqV31bAhv/XQYZPpEvcmTOktWz/jf2+XFLRo7769snT2Yt3Yrm6N67CrBViVe9YHo58/hE3MSM/MsM0TWnWX56zrX91nG19Do0yBjCLjozl+8mUfD/ajId7iWoNLb/yzyo5n/1rjs+WsT4561ygW9bwcUXuD+Yx1804ydUBdojMLlRHHJDvtWpqvpqM9QVrfFzV48q0vOeZeXLhysuvUeWrW6PKf9PTRzR9+oimhz8r8EbY6EJoRikaVYN8kIiIUMANZVBeQmc6D0jl+30/OF1SN/C44lckpDUF0VkzM+RyLGEk5/3h4Rnl5791axHOURA3nXmDDWapV/XIaXidJBep87pkymsdV5N/5TMrstbRL62jP2n64btF9AvKFdkiVkqUa943FgDXrWD40ivIBeIKhlzBaM4KKhGvVtAvVjAUvZOOb9Ic4b8g04AGFunE8N77//0zYU6sDv4UtL1n/Bmdc/al+1CKCuZhdjsiOrxDPNKf3Ff6FJjr094U6morngG6Dx0t+n2LlgCjONXdSeUOvoxpnEyhFHAk8x8xIAN1WJYSWp8Taqk+uXGVfNV695p+nfGCD7WKsME1CxtcsbDByFxRcbmHXfJqss204qgP7Uzo0tExKEZtKmCwfYGQQPZNg3wuPxyYiQd5XmVecT+T8k8X3pYP+kxzFpnNu+wxbjQsn/x6gFigxWzW0NI7DKtFDNgxNaNxMaNxPqMdxTCFrdGcGa1pRmuc0aZRnZYlKW6rKWWYtvhwnNbqSPZVEXSJESc1mJrUik1qXExqzCQfSuhcEv05ZoGKbMXOUG6MytSk2heIamLfMPiQvhi4n63Jn83yT1ezy48ec1Jjs45Mq282XjT5s9yuBd0FGjltOhoiCMzbfrGd2P+ymqrRIAHmvf6NnCozofKBsyjy2zBhMRnzqNAA1gy71LL2jCDU0zfdnSib3f2abOPLIPmrEk762X2YiHr3Moto7We/672ZKe3pMoL5dzpvbbZ0eq9hvgEo7PlxDJ3q/araGdKgrUr5tqfMkhwdWYL9XKCamAMgtISJTthlhtDw7DNlfwRUQG9IG87aiYE3oiXn6nCYmFMDz4WBHQgrNJ+TiQgDRkVm7moWquzTDWSCYjZwA/Tv/2vi/5tN/NFi4o9i4v+vFrLPG7WMKAC/QQdJMw3kucHFSsGMyzZgvS9/MhRep8Y8O/1dby4j/LOzCJ89kTsPAuo444Y9g0j7Dc0dBY9yYJOmiGnM8CD1+WNegw+/kgZpQUaVwAYJFaMvucPRnoHM/o6PeFrm8GAbAXYOphFoK5ON2Tv458bVflO9vgFEWaad1mvUK21NxPBHIx1KBsE7gMGIf2XT15VMghHD1531LqncaydVUBUqD3eah1gtsc2g+E+wCf6qiGv8DuC7eIoURAUpKA7aEN8B/PDvqAygbhFTUDNSUNcJvU5SgKhAJAVtHlWH/Y6TqHhmssoaIpoPYp5ACNDuOriQ2V5vzFmwarYICjqn8L7Zsg3sSP9QudA5b7aUgvMcl7Hlcd4e0Nb1bEdUjb1pWBQfzPkBBxg0OOHxj04f2GI+t5i/CliS6SEoWUMxfkyNGJCS5aZcdZPe6FyNOmOXBtOZH1Bd4zKPBTklsy8YmSo0lgJiJ344cD/bkz9b5Z+RXAHydnxSMt/oZFq70QmnxHQAVG9RDEC5m1WIeejqhTVe0kl5j2MrtBGdx8t/TZh28EmQ5n4WfAp+ehcDpr3//mB68n8iMHXw6aDovwKYFvtA0PoXB9Pkz6rwKrNpAIo3o0bp/mUeGd7ocpwWqucwW560hNCXvg7UN4v40jMNVd3ET3C/s2RE8QvezLe+i/LFr3RGsGddiKZlhwUXGRp7ylRV9a2smyPxUp+H/lC+XxVaWTNQZB1grNiXayrKESFSGZI7pM38TcTYZUVZ58STNkzTH+ZKZIbbTNYHOgde3Yssc7FrmMZNQ7MtRTfNWNO8T3l0DmXpCQ84swrEv2Or1hnQOtO3zR1adTyu8ZgqFCzhMFGZHFOVI6hoBC44a5Xx2FCWTzYfU6UY076XH1NuT0VbV6QWubnlFTZWgCtyDFFhHzoNFdgpFaWokoQhlUkwKko3K0/ZhRQnGmMqU4iKQZUHY09MJy61mw0YYyZOxvxqW0ZF3ufyWMnHmSelP7sRMRhYPL/ZUtDo6KOPy9+pMsZ5jGaexDNPmuPWIs5hfmqVYYKsl3YkzttdQxpJw7BR+//NxiNd+Z9379no/tf2u+jtxzPE/ww78CHm8yLD0z1oRzU6lUtp4NFT2Gy4/SLodezyDfG01h2Y885xhfodZc2RTqSOFtNtPa/n6nI9tYurp+bqYadQQkLSKPnfckclc9c+Kn6Svua0NjcPdOefIjd+gQHeyuI3Nfuddco3VfR4biMsj8XkmyDghXHyBdqi7LAjfHdolkRMuWVSTEp8zPre2+EE+M3szG952R9/DUbyzcrFRQkyqmGIzu8PoB8M78QX+5y9PmMvBLk8klDv5bbWdIw/1tL19tTLlbaBHM0F5XKQ585w9xv+sZbcdAmFXEzxt3IXT015hJqUIwpg0FfbZFiVbssSD/uWAO5yczKmF90fm4k71m1laKd++p+kw+63qTNXwDiuykvKTGNXBBKS8mbftSGt6OJrQ6brql0b8nn12tCJSLvfRuvxfZySLc4GwHOmVbysJ89+xg9fczq+03837cMrmiyDl1el/h7ILhBKlfzbKYI392hIgzbqLKsy08t4cKAJJ2UUKomwAOHBF3GzweP9w1dfE7zbggqkuDzgU8f+eOh2J/0s7OX9DMcRgg+WoZcePRvRryiYiLQKI0cw4hUeWbK6DiL0UAKPSeVTikuTfaxkLUO3EhBV6PuEc3fWZR8rWY/seIWuRcwhvyjJIjt+NS48KWyc+4lfef21kKlU0Bq3hN5eb5cbKGFld7Mv7e5X0aGN990V414gMEqjk9kGDJPfdcIuR4hlVARc88/85y/9Yfhdc8r41KZHOlpGpru0L0aTBQ9zX5I+mA1enH09dW+RiVnjli+56pd2H0Z4EK8iWe2XdoNY4C/d3CEmeeaC6RJ45HAmBuwfd4ZlaU7rgzYebc9+iSZAJrkj6HYVi2WwyK4uEoLb1GO0eefCuCTZn+x2SeNM0psJDdJUrNZfzGTCAUPYxVEioRBluMrV9fWHuW2mhu8CMWhkkM80YRBB72R4SF7nfV5qg+zZKI/Zm32et5Hhhj6At8+TDZByfxHPzlBptoNnI953t+Pwe1pYjqexPThsvijA1M9bYb+6THKC7x6GamEJ30EceXy7WSujj+x7rXvrdvtBNdE/2Q3h9+X95hhCnWejRVmOsvQw2q6PssqNJ4WK40HTZqypUDrl95yv2kGv+5qQYWLYBLQauLyNy1xzBo+RrO8kX+wyfvFMBZK4prUrwtsPet+qD2MZCROLg27i/Z7RR/n+Xem+d7+7v4/Ml7GCUXa55LPWsV10v4yIogLXreCAheRhqVfQxeZsJw1oVOKlqug3XSWEAjadNlWoNDZ+b/otOvZ4b4H9z2qrRZMNvpkdbRqjUukhuzTaHRrrGZFKoIPkgGM6J+0A8BpENWkj1YToZNmO2jj06tanciSLJAGOLMEorLBFOZbt5zKheVljhU8SWmxnSi5he3ffKKubXUY9a6wzu8K+kb31CRwC/VTFGk5BlP0H7wg0h01qsBaROdE7ApGIlbf86mxoINNiRPfHdmr3J5xWUANAEn5Xo/Z1URP/R1ET/4VN/Re5P5H7RfePyIvAm1vBKNBLOBPBehleXU1ar/sw1j48iLA+2Z1wC8ZNRG6uXOALeYGQkS1YgCkq+hTmwxw3MhUwDI2wxAp9oemJsqtOIAjMIF7tX6LlSRXffHXQgRr0sBRRneyPPAJDB3J8oKWMzlyIwX58tV+nnqAL+6t93bc0g/8eW0rxQj462K0ts1mjrj3wUi1YFGwC01kXOHieo1EHMXRG7X61Xg/q/M+vB5Hv+/WKfoV6HtXrVeoFueQYFXRiMaf4VPZFDxG2Yk58j3j/oNffjX+7cE8F6wLu9+IfwiJJ2LYF/7bi95X4dxX+vdaYqhVjqtJLsoDb5hLlVsheeMqidV2KYT7n7re/gsmPOfnxePIBKnUHvLtHDCrkAWBOZ6Q7ew+vUkr4kggkzhFInExshG8nav6MJ0QGggW3h/Biuyhi9/vbh/3LRemgob58j8eA8unJw84OCt89AaAMRDsJUDXg0rz+uFR/7OqPJ+uPrF4E+IqHpbr5pCYPDsbw8h3MfBM9ZsowY3grBvGq/8SbPG/j9P2fABOAhLnhiX6EXtSzrXcMLMVAC71o4U58xEMHt32gv9uSD2QbL3pDuaLaU3zua6tKD7wdQI8X+PG3Mbhf9YbdfhpfEcbGPUEw+t2oBw8IU9/7IoqNGJ1sJd11bZjigk/3fQDduOyOhw6+8QN3pbvvujbciUGKgV+5ItyJr3FJ+7toa5O0Iz+Afi252AXKdmLqX9F+d0gWr7FTsu12+288m+rfcY8SN7oLL76I/YIXVxxuRUY+gKZBLy66f99+ApsXoEc2IxR7cvGwQV4ttBYjA+Urj7Si8teHBQ8TX4dJZbJ+bCCl1iiXqtgztSJ9p93iac8NEO3uOei/p7/nYrtLMnfYNnEnn75zL76xvyvnkjgAgCKwScNWgMMZLAjg8ZxTX3nzCYxvAe96rUCd2d3fwwYSxBMbMR9M9nXHVjkx6e6Dtb8iWRSSdyB1dIuldh9ce6uY5H1IRdvdQVIyTK9Kdx308v58+Y1dmurCSjm6ItzHP/v5Jx1cxcvOwS6+5m2Xf1bSvemV3VfxNu5fyQuQJRuS19UWQcx5b7KJjRetiQMjlr+Ff946ruZo/0oMawtvD/T3ssf+u7HhOGVTiza9YKXFyq4khrsz7Rx6Cf5IhBD9QGydGzz3X1r/+D/vvpqN39bfy8vbbNY0k7v7u5gfC7MJHcwu9Guw62D8jU7xSiSKoR4WS3wT3mzk/53+xpZPGmINHiROJHnZDF+lLR0Jsufmdut269a72K096e60t3ow+EC6690H0/cMdgMfXTp66JshBHr4GU8WZ5z/sz5MdLTWZ3ytKs6Y+Pugf/D0wRf13yexh7UkG1bgjAo8MFvginDDtw7cLeXLpdm/9UHqd/8VIU7PLEjRInKnYEHHQPXiJ09jdfloDALfKsx+xoqqWyHuwLu9BXyOOhjiebyKD3dzm+1Wn0KDsjMhugHe7lQanxywZa3CnZiQSz/6noMpVuYjtBhldZA6bk93pdsf+iamR/kiO8mRhm5SMJSwv0dDC0nPzYjnAuJOYBbiUfdrOe/Z+aAofj7oX8XlCTRVFwL+fVZ/nw4Ge7rHefd80H8tr88FCRY6ys6hcIv9PXHITYzXxWod4c4+egKK7JNdDAunLO4Udeacanw80LKcsbYe1jOE79iVvpabJTtr5UF5MHHwC7b50kLaF2f1xYP6e0Z/Hwj05XO20Bt6drfVeK167A92aQT+YI9181AZnDQ3+HYXge8j3TdrChxIPCuSWIa88wXknbP2zguwnvbHkGFw97C9PqfXj0+/xshdE4/6CYlhupcCnZV0N8U7+Dp0lDI2SonNRfPPzfZXDLxeF6tX54n40+AGGzs87R3InreP+gNHVTo5VemUqEpUoioT5KygKlEJQZVLOATVIQ83pigdYbtOTlEM1C+aWHcKigIr4IZCH1RZGcz4gztneOQrD9NOhPwkYm7JBEanCeVl2kKss0uYdgs5nfohO7wQzwGGW9kLHcopt6a7PsIGwGxuRYNnoDhtWVKidAEj7ujwhxMcz2+QLCcWyQGuxEySxlI4SegEtEB3CkeVbBQgXg0IEw9nPoJO4PLM3/f7W5NXMhV0XiiN0p0UdwNat6xiUnG2VCRdYupfkHyRmHrPBKYOCTkcO4p5kuBuBkYUeAjaGQ6FM7Y73QNKlXAQZ6rmrtIYY/CeMHiDQLqLF89CgOw6WP9mVL0r3Q1Ckm7PLj1OpjLdfscqJ4RkuocN1CCZjoAjGiTMDRLmBgkz/qT8sxPbBJcVq7rL3gAm7ngo3f1NE8SgoUByViPJMgrfxj9vm8b0DVLnBqkz/rx15i3JtJqi0VpBBb55qi2SG2uLdKUhutIQXZnY3w2SOr7Y0Ou7p1+D2lljt7OxBaU2jAmLE+CneNI6vTTW+4lB20JWN6kbPcVyP2M4mO3+SH8Bc781qzNUzkK6lTG3FrLeMV3qh1X3uaL3xE5aVC3AWRvLOXX2cf19WH8f9a23D/rW3bM02iv1NShmIyjX95ybm0Bzo78b+nt3oMm5QBFxukDJen6EtPWz755T28/r7wX9fdbvvpXXp10/zqsf29GT92BbrjKap6DM4BQI1MHahaKDpHaxOkfC1RCVa4jKsTr9fdo6R4q1wJ49WOrZWfvonAo+rr8P6++jgZuhwM1QYDaPbiEH8nRoOaXVIeI1HLUDrnf9O5XVLLMjrHze6xl86+p45x1ddXbOKiAZiizgKMAtT9ug9Xad3jvOPFfNDtZ44AUEbQPy2sZS29LWOwaXDQcdQjE5zOxFJIQDZjmEP8nhE4MO+Gv2aQTQ6RCTbUnxTXrZ+mgdpMVZ9kaCvM4hO5+eStfgGza2SkmYwhAir2F/YTwB8ppHuJmFbMfR/jY7FKTbBJM7GKR6jaj1/B/+eQTsjaDTCzqQonNmCE6b5QiQX3+o2Bjo92CLbY+vhZXOJR9492D3QZn33CqhOKiNJmqD7OoX7v+Rd4OBAgoDik/69Ijb/RFaTsN+Rf+DJ4cnTrrl8CpuE0a2Y/2dIxBiKc8fmGK81bC3ZpeMQB94zCXKlYTTigPcDudbl7OUfaWj+XU0hNsYmBfzlXDFTrL1jqZLc1WeKJnWkI4GxnTaOjEvqMpErkXNKbJHZpCGoZa9OBx1NKH9NX0YK85F4ma7jnaLfmpXFO3JzFywkp1z8LRNZ7R025tbuUE3/H+keFhTYIZClBRKxl/UfTgad3gg6GgozNk9VRLxDeWmLLdreAJG4buLY9Tv/eDH/57DnhcqhggqQgT6u1EVAqmC1+O+rdh2u1CRPCPvJ624svOVfNOfs/q1xVXJ0xXbrY/jcw5Ee7oCRmwruGhsD/FLGbNXGo8NHHN0sEAm+zmG9aXIjMS0A+dWwALgCQPnnhbIpZ07+muQkXZOweK1v42TBaYsLnblZanlOmQ0y5RzneILdHxqTybck3XsyaS0JxPuyW1peiJdIymo5zNdd5sykaImbZm6CLN/2VAEAlJXimMB3VvkS3fSARjn6UxlmP1OcSAA4rNJP6OZeqCS7gLjTwxXweGA+K7S55pt4KsveuOvzlZ42tEcb+jLuyvd67m2UfH8bGWgmX6wgsPEtVxevLsyVa3PRVriyC1r5JY1wjlZno2RjbMl2A0mCKTQX/biEz/5R/5NPKwdkjVhxeYRxQMO8jkcinofdzzL+Tf+sPp8ISRc7FH7odoPXfs8N7H9sL+bXFgr2/glVH9E2/t8VKrqWVfVuaio6ryG8rQbyuORVXUusqp6H++/jjvGddBhDHz9OlfjBVfjxrjGM6rxAVfj3a7GDVcjVqz0ed6hs+PPH9bnj7rPH3Sfn43I0cWIw3ZM2OC8TUbpZPtGLiDGo6l5OrQzk8qem1PWRusm7lwodpHnF60+CrOAjs/skap8lKfgqwgJPBE7uonTL5Z3ACcnIEsyZrUTbxEDvcsxavjPe/+1OC7jGQ5LCIrS0JF374wchjOnhh4I8+ePArF8a1/zcXeY8vyKM3l91dre4CkdP/a6sWG0wLkD7O+tw8FWaCGGPGAvcG8e4ZdHTzLRsnfkhPSDpYNkQ0dojnsrzpENHZrVwnOyk3HCEqIeO/PtomZfZ74ugeHTnjv0rdihr4tDX7i54iBn1K1eNDApvsyZfH/iMxbzuEZLbD3GRa2vyIBACo6DXlmx9p5vbFWoa+tk3ZOwYDis5MXpEAL69wbU8C/RVxyITNYNVfuZ2eVKXq7xJeLlN7k+9LehL4onP29KnQSkhsN+P1dWNhUcG+GzqS9qZnu5C5twuDWt5W9DOdZLE07Qkv0cwOn9LZzn0u87dWqgdk600KmeVBUOOzjaqT4xYHv7kfUwIYOT6IVnaroWPk0Uy0eaPWKbREyZ5LSKLsoBDul2T+rZUjN2VKPai176etl3aj+5PWYxOD/oyBoFA6ilId9juvp+ywT9PQWjjOVbMz6e6az71Wq8nDa4rHAhH0eFS+tlFC65WgsszITCRaKf7pET4g5fibQcncvl5VKGXfxnP/5rliO8eyMyxL2kTJQwCPsJN+U8SFPXSEmLq4MKrpesYTzxkb4/YuOk9QW1vM5kPaKml5YP2Q987Pef9G+8WDl6XtEJne0e4gatU1kdgJ9t3AkkUn+ov+cVajxUIcVaZJF/EN1hl7bdyiAchDk2cBOEA1GiNgZsA5KD09/9VnI0BpT0iMIsnBBX4WYKLG58o2nVyKiswwwz+8Xf/eL+G1/5wqkqDbmuIQPB3kQ+5iGxl6Aedw72pMlDB1/03z/Yi559C+ZjT7qX/Hz81bR2E77vkVxgxAiokfYgurjFJUyIs63rWeUOhq/+cfDCexSyZ/xtPR80WN60cYq6C53mv5pR1/NRJ27UlF0dPJ02Hhrsuhsj3n2r2fFr4GRgP3DXVzniOqcTRO2tZl8wHs9N5u960Qqt8S4pEbyDp4WtWpuSKDTd+uhg13enu97DgfZM/7fbFAXThOYbWjVJ9J6TGKtLJNxNd70hoBhSyv5dpuxX1OAlUsfdvMTUNZmaWhlpIlkbOEloalrS3Y6FeOP7odmiQHLf3XhCoPrIoJ2990Uoob4sHnLPwW13f6RPo7Rdt9hXnfebNC2+NbXrN6weyk2yhAl3uefffddB7xuFE3xwnzwPS+oVSS37ZvIaUPa+9zTsvKCfXYUThiSmbCndcxeAMN3LLrEGdYLQFSDCOlS1Kgh7rK9syLfNPaD+ll1P994yaMFsIm3z6PKcmDoqWiXP3lNIne5KUWgPpFZpMqIuV6+T7i5pdXFWzsdNnS48tztHeNflnxUO7MRDdw323GK8GKZkl5uSXXOnZI97PjslFONvbETfNTUx3H0pQaOLSU9t8BvvOkE99imYhejQEpI47rU1jabX9M7Sml5JNcl7n+eadmxNI2iTDl5/911gUeNsA28e6l8pOWXOV2pE73WsYvxX9RFExFJCjrVesS0OtiSEonvQHU2wq6L2LTRlgc7iofTKd08u7JXjhc17ktcZ3QU7jBc7ZMpeRDa07Cvf42OLbT/osZscRHrlLYP2KvEk0blWd7upMqeXt+2Wt87ljfS63pXeI2azVGMCkjkLu7jMYmVzjaet8HgwmBAs9+SMmNBcyzs5I7s4I7vwrjRXMbb8eH7Hc2Oqo2Kpx1Jq1HDwahgK7IWhgGfWPbuoEOlKIUJwv0yHXjMGGjRWBayXmLtxF5Kdtjv4wnQU4hm4Yi7RlPNBJofiCbxOQ84x/ayX8F3d4bt6GYXWwbDt9fpCNYyNtIovl7I1uvYvZQ8GFDd8+A/AJa4OWpLSOtPjJcoiF7kbEjAbYhUWiYd752DPJbvIRakU0zr/MfAWqAAeHYFUITv3+87P7JA8WDGMcDsKLWYvfjI8IaUDZQ+97FM+YeF1iKEvgUJ24bwZ4YgXXsyeh21HeMdgEZwjuNjt70RQrpNZjfxNj77WeFYV+YIqIOAxRjWzNZ+tmXaDNblXxPbbeHNaZLJlJe7EFGV3kkGuZ6cPi/1Z5DGBVpxVJ8xagmtBLtsAb5u2LWppfMS0O4mM3KqUoTBKrK9Ig6e6f3NQbzGEo3sNptwmvA5VDGOkHmIQ+kNi2bnokptGtupVW+ivYpmNf0Nri1wyDGDIRfdy5j7KuzzZXfWVToY0f+1XEbVGvemWbSerpS5UXReq5S5UrQuyasC2rubNkv+qqFfdAfsVJp7iL11sxVatCZzpTcMuRs7SrT5BsOsUUdeN06WBW91RZGicbwGINMiIfcNJJrblJuuaz3tgdnkyoJG5r9Y8s3Pw4iEHEeIgF4eKJ0ZD+eqmRpurMndEhPIkLVvPNgELcaJPiQQc1Gi2gSRg/uguCCUNydvqKr+XLGwRjg3V7oAfnebDJcr1ecKlCocmxMaLrFqSlQo9VZ7FpGbP1tZTBaD/POyDsJN+xTu8yofM+MhC9/t0dpEVPLJI6PqYuz7prk+56zOBGbmfC+36oDN6f8C3948EMm4+o2RkXvZRC/zKoF+Y4ccjizpwG6PR0eC9mm1ReAG61tCOeqsF4EB9b7MiO+yy075bt1977LLPHp6yX1fbZb89fLf9ut4qu8u3nwfs5d3u5w12OW6Xo/byjHt5q11usacPuKffZhWe5c8VWmDr8lZn+O/m5uHIrmcVS/FxroBFt69adHvV2FQMHJy+bAHGk/SYXLWLcgBNoiq4hDG7Cedq1eZqzULiPO6raqvseW+6tkdYlC8omIBrRLqDehjLvaCABnsYaE6+MQgzIJ4nVI6KSraLTggWwcy5v4VKMeUybmqRZwZQIUg0LfBdnF3CrWT1RVzcJfsqd6W2Cgl7FcYVpOfDZeb5kJrnQ988Hy6R54NF4bOgYcXEDrKlvP192RI8cVYNaMCGMaUYr29ZJTiFyhdWQeRlTNmRYpiKUsFAkUvj3vnj3n2YvZvQzlfw+aideH4l1H9BqGQUZ5SsDl88ppReysCq0TmvojB7QgvlyuYlGZ8LnfKpNsKjR9DDvl9qC01FIXLsyOoYEaz62tQPhq44ouPgeUWFsb0R9SlqBxWKPlCSWN8GWcR7/E9eMUpglqrL+ROa4xuxRcCIJViSiC9vpX+AeVzE7CIFR4GJCJDWKDRrql/z7MUvevbmU7xmQVFl3nxKn0bteYv1WYWsdtwZP+8MZUcuDOYjjB6YMQiSnk2OMgwl4ano7cUNsyKPTaDZikXvMrzFPbsBL63niMDep8xA0Mzi3r+WeloTtuLZ04bgaBpTCGCff+O11CyHLqMQdc1ykP+Eb942jzrk+IJDjl/i718SHIxn5yUgsBnMARfbLloHV0H2NcWX5jKaQ+/9eCmnGcsLskOh0RCHy5dbSo7FDYNYOtzPC1GRJi3mTv4h0xJanBGCJLOd/I6AQaEY4qx6I6ViGZia7M++xvIFK8zCAAuCJyfh76hzeVWuhPhDG+A8sFTuOBTR0jt8swRFFECzvCSkFnFZqn4X5qoUzHGQu9w0cULQ2iY6KDbVJXMFZR6WJ2BzXvGxWb1QSdlqoIDccf5VHkOaMIx/Ft9xksjiRLZLb3Z6DbxZ4ZuNr+ApgpWpkH7R2+2Ok+TtYmT/Mz5hRLkWZLhYgqxm/azSo0ETqzaf0MjZJtvwrQ1V4RdV+FZFwCoYjBlVBIzEY2m1JepV3LS66auX6G/IzHqcle+CX0XEiBMUFDSVpS+irrY9tK+YbY63J7N7AxM7A16aGnRav7lFH+AA/UFIh+DmwpUJISzSqqTVrDurux/qxCJwgAU4rbgolYuEoSY3gFELYNwAAE+BbKVm+/QR8pqAsu9IYwswETO/Ese/4xqFIyK8+UrhJKgH5aAk0mcGHZLFJ0OLVvFRH1KO2jCLkeJpI7BnD/tg4N2zuwKXxUufRjRB9G8WulQay6mKwPzOq2v8+C5VpdyMWbiuqhiPbqqacH1uNePHqsaUmeqN4i3TQXGimmB+b4Kp3lTUm0rRm8pUNZX5valM9gY7l9VUi2qqU9VU51dTnaqmpmpqRTW16bWaX01tshqL1eZmJ9bsxNOTjGk4OWeSi8fWn7r6Uy/6U5+qpj6/P/WpYTVUTaOopjFVTWN+NY2pahJVkxTVJFPVJPOrSaaqaaqaZlFNc6qa5vxqmlPVtFRNq6imNVVNa341ralq2qqmXVTTnqqmPb+a9lQ1HQs6/lFfCKxTVNdx1bXxbG5FnamKuoKXbvFZNB9SohKk6CRpx2Djv5TKilF1aycsJil4oiaZD8YfvFFpXiC26mYx+9iFUIJWC18xN5WWy+ShkDFnGnb9RN2uz8Z2vd9dz9Xs+oWqXR9w18cqdn0usuuH3PXx0K5fCux61l2f9O36LrvQp/hcY6gsCcr40TK/fvSYWqy/aNWwjCADEln01nysO+RzPHTZMhk3zSVe41FhdvaqNnvVydnr/o84e103kL/c2YMU7OWnz7GIj8Fffl2TAwZa+jieffSwpTB1oFIwlQosP2VAYQZCwq9/J6e+xSPEqTyO3XcqtEPF4jEhmOfR/quRmqeSvtp8sMm50gacPYmcAGZQPeIShocHr7lWrvDgMrtv8sbca7Ap90qPSepO5N5YsW4DTRt3/5huIxcGA56qzCTU5SVO2+vrYF0Y7itSjshmqhfg8vBinNlxD1gYdraZR8pwUTpFUO9WrudMW/jzPBXeExhz8Yya/0R4UtAYOj76Ub+4xYZXxA6x2Lj7Njv7+MQexS1OQsfs7rbi2SPj1zvS/Ot3FXeAh5xrh2WJ4n2CCpwpBCbo7UYycZgOaILKSNBPEVwYS5lx/rvbFUwW0IXsh9d5LlbuScbGquY/g8mf4eTPaPJnZfJndfJnbfwTUZct/YHMswJa9UBzA4MVCBdcBzdqSkagQAn41dDRBd1HcEtE2xfL97Z8HWwuPhHOrMAjdmsHPpTgGadqzm6Kxxkgb6Mflv/zbK/cHfBk6rsj4d2WVD47f/3Qjh3JX9ryDkSxngznLvJh7vGYB77bGfEF4SpsHJ9XILapE2HTenV+3ju9ecofCyuyq2Z2mZPLcORH8hoeCEo1+aVWHghUBBD1fP7oC37+6AV3BsSta/pL/ljSA2BEusJJ+RJKPuNieiJ2ana54n1mr1bYuOw1FnRb4Vysg5W3jEdy8ONFKLpgHHkdL58j4/DeoFz0pzfy4KYz8pnnwDO4tWYcTUAVTWtDgxq69gI6tfpC24xReOE6+/kFdvzh1w/7rzGrnLfYiWhkdL8JqxJ8K/qEkT/v6DujDp9AJBOUR8EbgXZ9RsTv8YyhCBd1ISIRvA5PZQiRROma/QF30lNEvDQoP10uSMGyoppyk+VkW2HFaxYQEWRlfUwiauP3kUvvXl2fIcAITHzcbAGAituMf3F8VZ0kiL5GDv9K4IlHN83KxPbPQhs0LemQuVQZtuC4JD+YGFpqV/UsulGcgQJXw7PdDbFl72D1M1GglwUFA4B5Xabv1Xq/4UQ0keIsV2Re6luAPl0iu8R2adqla5clu6zkiWWIsYiX0sa6eNWAB+Jlmxv05YS8RV6+iQrlFKwG3QNu6WjC3Yf2WZ5+FkN2MgrQo44LYoiioN85UEL2zvZ0cPbf7hYM0R/T9jGzzTrs1tOXNHxw0Z8fH+ezyD+2xNUyoGY1hkwxDYcVyx3RSGwMqAt8k9nXV8sVawHbDBtUddOj+Ih4g6DWogKqkkqYvJvRy3QxyfdrdYqFID/IfikGbmpZfHC3w8IK4W4n+BPYwFXg45yUJF6lpLe8Dxzqd4gq7jXgSWDPGGfsmMAPiZDcjkVccYS8IKbIXQ8IyC0D7qoLfIZokzibtChyajDw8gLevGBAu8RunzA3Ncqzbuxv1WRXBfzHZL77or/OREKNt/e74QFnyVFJtx7SOrctnT2peZdEdvK3P/U7mPodCjaxGksOqOfW6aDTJQ7quYx9KaN3poEFhBPmqhvacQsEFLHMp8upCxqXKBQmLh0LnkRW8A1Gf571C5EkML1mDbcbAUUo0dBYvmcimNhIoEVelfjMgoA6CbCfL1nUC7x8Tw0qVuVRZ+yjaq4JblcfX9Anz/snJacs0ak9s2Qqs8RxFqHawjr52U6jWFc4jUJBRE2cbNQ2kOQyD+icM2p+uQWAr4KyuXdpeSB9G6YJZldcvPhNiypaXnVoCZYrRFfQhWhJFJFtzSb7Bd+EI9l+WQwY1cQR5S06VL03gEQx+7o+vUv7hXC8YrtMqVdypF4p6G4uhM/CiX0TWPjXJQtkpkC7mruucVLGOvB05udzw6RFbuUhIGoOJ9cUc979+tIynnLcy1OOF9SEKv0P4oOvl9RMCD2Y+mKJwQwrRZBFimNyg10WVL/Y9Rugruj0zsCdlIjtKD3ezcUOsj1KCyJc2rUXe7MrbTg4JTRLkzGxNi6I7VVWyb5SJQR7xBvOXleuJLA8oBxbNCjBTTwJN91083dLL/FuZdN3g8BFJFyxkHlL4IsUrlJpYrON09p7lux0QBjI/vBXIBGEYdYw677TKGCTj3/4g7Wpx6IW//Le96zbz4A/f/+zd1qpEhE06ueOCeIpi76u2Spibp4m//U1EvmWtGt2DoDAGEoshM8InVSGjHfo9Fl2OAiaxTu68jiOH79gTeTnMB9QWpcDe1Dwy+XWPsFS47MFE520u54fhdH4PxoRiC2+O5juJg2Nldn2agcQj7A+YCtL20VdANhJpQrV0UNCffKOJv94lyX2CHQC9pUJ15TF+0qKa8ubXnW5oHXdCO36lLs+GNn1hUjso3ZHTN1ApQjqWHVYN2/HWlGKMT/HtCZ2qHI8X6vx2I6WuMEnpK2I0o4BbaVIXStmO5L+KfvgD/jrpsjfgM2Jn336o0H+u8vfP3bdGGQUZREnTFGCavEpebW74pN8lH+tR109Kldgcpoc2CqFXIJq8mmBhLKEBeMj4XhFJ9bUD6Qnyq5xa/r0S+3g+CV2aTP9anb+QERWe1Y7uGk7OP7vtoMFENfSz4K68Oyxfkq2/QQzGDwGe7Hxj6C4t8MDP8Dd1/EuesmV4WamNsUw+KO+SYSf9RUAPo/gOrE41xUA2n299fD1RYPXX0yDm9T79eV6VdsbXG1+9kbehS9Zb1CInybAKhq1A4cpznn/C6xy8aaDkuAlp9TQ+aMUrBhHQCx7jUl39ruIZJt/LtQ9Zg4mRIGPAJV9x6EJNuPsBGNHC7Kn6N+mFakjzpKs7WDkYM4qRt/7ltntE2FJULNtXkeMQB2Xz6lxxD49TCRJyvxjEIGPMwf8Q8wY4l9k9+Daw/XqoY7pn/cYnM9oScWyJMQm+XgsxBHFZIs44hpCrorH2zGQmhZaI7U0aLzdsjtBb77OQ4kMPVliHw0ufl5pgBWqKG3TCvIxPWCwfIjWtpuXTUJ9avsITNlo/ViTsM7M21HNzkyRuEGrhgqirV2hX5/O562rypW7ECmrosMnTkgugiK/KNa/TnIbmz7Q2mhs3sbj5U/ypp5wTeEbyD3S5O046SXrslFhj9+OvOo1/VTpX3JpaZAZtGmCT+QXQIZRbwxcEQVbUwZMSQFFrWLb2VoMImNFKaweMA5j9J0jJ7gvM9iINpiQ32/KxHBKCyB4OZqfmF/w+zuLQ05TvNTUIecc9jUFh5S+/bLnzjSflwWIb20TB3QnOOW+43IBMzsZ2JzyB0YB59O7gM/Vf2WpQP8Djrvba3u2NmNUk1btHcdkPHSxoZ6aERmeJ5PyZN4/sWxKbLRn6LB+YBY6EmMUuCyYtmy7RYZtG/K4C1zOw9OGbDaZRXdUCkrb1N8M3XwhmBJ9npsZx5NuupGJGPYkgh8Lx6ucg25sMLuYMo97OBgjAj8fp8ToGAoF/nO63sztxoA9H2P0SjPjQXwWcG/ZIxLMwum/amlXD4m3VALeiTlzGXgDs6CrZufeoPTCtDB89A0wpb9W5oUP263Z6uCj33nDFZ53rdfDqz98w07Pu8bbplfZJZT0f8nX/CsIOWu3kOEmyzb7wKleBK4XFhqbOoI3ul5AzJr3Isiey3vhW8Le7Mwbsx+WDkEPPqaqf7uIaJ43nq8XSO4znBJxr+pOcBFdufCGoitPj7tyvtwVfFRMSDCeEH9qQub16XFGFX3FfTp/zis69fg5r+jVOXc/nqEL57yLmqJiTz3rbwbSFJF8xrOEXZ8dg/Y+u+zH0wMjpQ9Lcsu0riGS834/KrUwZY9KfW7p8E7jqvPuEM9kxErUl1ZP2v7MEUMAXGE2TdUS3Ytcyr68Jd/yU+myViBd/ztdxiA9Tyee+7Ljsb2+mndzSchtjEOcILeEiQNlauUx7tc1QdY9kw6MsVWjLDsgtkIWXkXl5oefsw95HmJWthvsNh5eozQFVerQaLqs2+qQNs26rQypStEt4/fus9twaEl8yVYNLbNv1XK17XBSiG7esYE/R3J1tCyB0Snv/OSigTQ9SoXIb+QY+8mw7/inp4jypeHXcfd4gVgDE535RfolMnCRLSA/p89BiVzySH9qGhb3M/mcO1IrhDHnJMphIjI5ol8CibxCcjxlfuftoMUQCdWn2gC3JB6pRvne/iEze1pwEyFHZDVApgnFNlDT88nKICrIMzg4oO7AkY9HfHMMcyoSHMmrU72tGsma6PVA1tZr62Z1XfQfvS8zDS9J48qmyPxgpTBFfizKTZFlhCc5XtNtgFC+jV23g4P84PKAsx8NTDqnfU4/BO2ZvtsWllnBnWnOh32nEGwqkH9A27eA2S+rq+umF8Q8GTuzyhaVnfBtcvVgCMfss4CZVrSd4/hlM5i2rri2PeuWsb45kZkwUZ+xrvbbYdVzmIpfogvvOWGa3IqYSWUX0zya4scS3R3VKw0p5caK5d5ux4+zQGQP2qHlw2BlfFm55w0/Uhi3443Z5nM+PhQUzGKsjn8ocPzOhxz4kuGiEcObo2LyxZFV7TRYKQ6mZQXohySmd7SWaNW2GhFPxQ3gQ9B7UEQWTQDHIxN26nmnJSV3/S26K0XjZ8Dk+IYpVhNnya4eO0Z30F2n5OsUdYMyHZaeJTGpKSO0wYHntYpDUwNFok9XZdS/Qhjf9fEmZWcVJo3EFcE+wkYAPtV24ecjZ1VaRWfKRvzVlzLi5xxZZ/uWsSetlJSd2X+ZsBbPVUnuu1xx7g/MC8ylwywtRnV8zlTyhxwSGODfdGyG5IpFCa1u884ZkiX8UOAGiun0LcLCFdQkVfONiBE3MeJRRk9K26Vi6nNY0Th+3pt7+C2BZWRg+Wu5wbeLSPFZehlQ3iou89fG5uBucpubTS7PcSDEjNQU0YdqlYpeKRu1AcnnLBWsoH2EvONmWlwCxQdzPGUm61WiGN9cAi7eZL1s7160t3O8MB8uEnYEdFgMnLzXwJRxD+lhtkYzlnYBs4Fgtu5e6Uc7B2D5igm9t/IjfcB6R/1FCUShKe4JAZ7+roGC4sOWbKiQ98Jd5IFsfSfk34vtWrUCjw/fqzEAJlYYTmFVGmdVUJESZljO9PED5tej+tUVhlSlaY5kXVfE1wO/9ECbgAPkYbhqGs7uW0zfyYdtQCMYSim3AexdGV1RTUxmV+dUiYtbzgyI3G2u62aGbE0W3era3UFisRzruMuevEBWljOOu8zH6br7N7r/u7OD+gL5xprbQB63OkSN5/SFAl9mn1AWEPPhCLL7r0YKohoOiudcVXzPbekxEmUle/CC5Rkf78JuPMjDCj2X/c0ixJDn/S3KHl73o+Y/YCj585Hh3m51814HWZ1C/KC7whFAI/o8R9ByhibB1EgeL43kMRuJwrAiOKyNxGcRGwneS33PkcBG5asdSdVGwrz0lsMRuYp+z5h5N7bxGAA1CR18uWAhWc0dSOuePb+1e5uXfMpHSmTzUc+T7IAho0lM7UYTz9Ky+Wb5KsOulgxz97XEuGRE6fN+UojD0gGH1D92TSkUXedtVe4cqqbNNpHZGRlBc227QNycLFFmZaiCTFTUqwsjrDE5OKcXYpA93lblduLzpg1B7tg1jOEH1jiGLXCBuwysx8bV2T1XA3zwZbcCxzf/TjKpD6XhQwdTeGpjjnpdnNLpr78D++kjSU3Zh6Kk4mX/97ZkGb/ynPeAuN/wukchwEu2K7MTLRcr3ctFs2nUF3WPJMlH/OJdxHeWnSwq7MXWMnEPypK8lnS4M22KWdxyl0sr3D1iaeeW+KWZaR0xNImzhWWochpDM5cg8hNXtdOlrSts11ac5Rth7RqKYCO6gSYreT8xM8UYuoeT5LXzX3SUaiseeG605ua9BgKXfDD4C4zZMnRtOuSgPGSO1SrfkykMIJDa6/2ryx0LlJ3DOrfUY5G93teah71PhcMePrj6kBJ353MxnszxLBZz6Bdz6Ls5nJ6JvLkV5KtLkms3g43ZzyqlfiYf9i292IGh8oAxd4TG172ciY5we8hds2c+BzAU4WNuqpin/v0uT9V13uuZqlqsferZ/vONdfGVZk3J30x8o4G5JdQGQ8YtzZMw4pIElHzCYJEhzv/MTpQ0vLxXyTcwVYRy5d1qAkMZr4bdm8EhwmAXA1wdMO8tqmPCW9IIwYCStN7KvHpkrUx/oPNx8qDvcrHfOgiF+tkRxnXhHPHP2qDGHIKgYcxUaPmA4SCNmsVjeRSIVVy+JZdxMLKYwOpHxFw4+soXysm/iia/iizsS8VwkfDBHp4V1iydG8Azqevp9d3l5Fs4C7zvR+O0b5iAj0B0AqSCWUGaCsxjPOx2Bsj1xlAEEvVkpytGfjyGf/FdYriDnNJgNflMgMSXYxwc2ugjl+94SdhWiv/QcszTJJ1pbt0pHBg204ENlcK84nSRxoA9TWXqAOza3YrpsB5FRY8O5Z7kzQHl/xDZI4i7tO9gJpRkac6MeAYI+4aSPmhrpcrjB+evN+skTjskRo0Ca7A6GlguIqfPhaEgHpI3FE6IRzrwprUR5TFw9KM7l4hnYsng0CodM7supzFyMFyjlIhV5kfxthsyYS6PRk4XGskOt0zRwOse0NkP0RawHCQwII1rHHmy5rEB/j/GcQ8TJHo1Lxn6eV6+B0NGNd6nzKFywOPDj3LGelXvkOK6YVL2JfnbCLocFvlEwBSO0xVzJpDRTck8JHNLkntrfntuWyx7wOz39s9v1MocFw47nqfHxJMbcoXndC3qHB4c3axnfCenR7P6DcSb3NxSiFvZ+kZubA3JFI5ae8f58JwIgCeFlEtiqBHJ+F89AMuMRwiIzCC5CIyxh3928E8TSUBvt3yhq31eoLdC3HL5l1BKBznf2zXKo4kcp8WS++b+4FwQ4LRTow1vj+PMQ7aaGBFsfTQSinFhh6t0VHmLPHyeNzu/Ls3qXOmaGM20ZsdAXWK7NO3StcuSXVbswnAHMaWJzqekZWa9rlKr0jm3dgiSndx1py5hTz0P3JE4mw4u8A1f9Qp6tkwS5RmIFItTt8UJKNBqmttty5YKPJetD88xCrbF5YklqwrejhSpks550iAzHoasLPqKtw+h8dDSgoZQO1JVySNSxylAJOpjDOgBPAaqUr/xR2JWGtz+eF5Ji98s0h6Oy79k4VxIdsQlJONsxspmCeJbz2dT9jARrdlu0LmNVOio7vyhwbVm2f8uiGmT5FOJf9VpA2qGVF617TdA6OejjGBvid5xeo55hfSgfszyyD4SkpYtKbCtvJo9Hlv590P6eyY8NHyzYdXQnZcZ7cSYhR02v2sSOV/ilqIhv+wGsYLCE65aZYMeZQMN4m06vzL/ueKrQgzunt4+INMRgion/WV82BNSuYTG7bY1YCmKsa2TdFO45Mn0J+3FCknezBOOlj+h+GmiZILwVMu5FBRrtFVTFjJFLWInLXPqrmS87FN4vbJOjTeqPj6Ir/IjQFN8Cgm5QqbOvSzFowV7lNqjPh958mdFLF/cp/Z6YK9fxVCA60gDijdde3O5vXk1HwX26DX2aCcK71jvXwGo2iooXWE/PxxKasudvweIgDu/LpTBEKpcRQSur+FhC9DcTXsnZetreKTNs1svXb1ZTljd9EqpzonIokSu9SEJ78KNtkQ7+vnarHFG9qHRbenilRjddgBqizdLDAfFmy1KIY2epbhDZKBdKV8xPy7L7mZ0X9AvRtZP97F6VINcMNtZC65LrATXLZJfkP7VFBgUE8ILOn0FIuMsjSjLU0ynIN05TF/zDlAqOUYinFKFTl2nqBOlQrhybNUSbEHxMFLB6depPj22Okpe7weu2bhotls0i2Sw5WZfPUwvv4hmX81mL3+ZZruu2WbRbOqaRZZYGg6cGiE6UqnxVw3TwUU0/io2PniZxlPXeHcQuMYXXONXMfJSumU4Srej8cgaj9L+ME3fMaBGxRqXUfspBd0nq5s3joBoIxWcfp3qU2t8wTW+VDQeFSPf5Ua+VG4cIbYvvYjGL2Pjl75M41GijN4JogFvS/cye/ciNVOIgNXWtS1gJXFpmPJj2xBwbxkhbP8NqtqP198kHL1iGhpszi7LdHNHjoYwesMFNBCiNF2IZ6jQyfY/RN1DZJzpOeQ2T75c8Xuni1TLKhuiGtLFkCnnjOW6XzMHfLbT6CPCj0hlsCJjCLgRD0nhRT/o/iDrlBh4W7HHUP7xwLB2BCHGtO17VrZzV9mjY2q0ZKzU/QGPn7g5GyrmAxWmiYwtzHLJ4yFWZH5F2v9BbOeAQAG1KA2QerYiH1AKTXizww4J0RXBmmVgxt0SQyejms8XHd7DdH5e9qT4AC97NuBa6YgZnVRa0Fh+iOSlBoHwZo9GRZR+ihrgcXdoR1pHIMBunBZ/VjtOMQoqQ74FOtJ43Utho7rd4jwQI8pZZSe2VnzUMlSzVDy6Q2n+VNn99OWO30nD92OK2YY3tLbHMc+ANK+c2qfuvoFEutH2cvUJXXbE9VeOTfQHIjH0pzJRGIoW6AdoVZVJ2VKFMNXKIun9HSdsL2AjnDpKSwx3mgNlIMtnwU+GAyn1e/RHOvV6vwjFpkk/6hwvUpuBtb6er/TNoMk0xrEyUxiHGVFa2jT1yYo8d9MQsQ+vxeLrLobDXGJcy06x4vibwHPF0mqnC8k9Vb9VOlOWwP/+ECTl5beBsrBvug2Cl9gGudFzRda4bhs4QfJXsw2MhwWSszAxI6e3SU08ON4bJgHhztAMcl8Ebl8wl7QxYFiQukJSyhlBbVwP9cv9xFShhUQMxvDbJLwEBr+1An6XDGZWGF1G8NtSqQn4hWqyBL6+wJcs+xh8rW4ecAC+EtgbROa1J9K9RnfIZcnPkFKgIvJVOTrROUie1LnypwQrCwo4kI/smU8p3iIIAuVHkKALzE/mQI46RoOAQK6gVHcQwg2GOdHVrKMMzFnHLCGouzklTWv3Zu2u6lSHqvM7xKrtvRqD/Fdeaf6oKctZRdCDR95RscTcu1pYcco0oDOeuas4v/JXcXsksS0zZze0c4lAO/nx0K+73VApdkO+C4LJXRCUd4GkRCt8VuyCYLwLwvm7IOAuECPn0jN7ec4ZE2/lOyCwHRDM7oDA7YCKAbmbi3CnmZs0UycsU5r7wIx+AwJ6GcUzRCYUttiMoRB5mGPpqkwXtGYVrplyu3LNELyzwjWLRQEV5NZFYrrD0pMB1YErT2snARoS2YJTLuE3BobCgtO6AY0Iv9GemstErUnVGfqb0UoscxnN9njJGowOZ0KcJxpGv88GFj3X1qziMFji1q6WC7ps7Wpz1q5WWrua1m5i5coLV+PC1d2M1W3GbPHGY80Xr2aLV5tdvJotnqVZJgLTjkP8EJ8XInXTwEfjVaXVsiH7SEEDhKq4x7heDQ0B2KCmiXWxr2pEiXXZMSTHbOjXQwhCRNazc3cJmWEZ7wmGxr5xpZlBVWK5+yk4jOg7XiCznopNIbOQyCw2ZBYKmVHaG48s4JGrG0ehGLgsVProydoTC4V0xzhzNEPAnGgHASHJsyb+VDNKBBWanl5bZLL7AtSprhO7wNY2dW45clNYlaaXCl9irsOSF+FIyEVV7H10/mi5YvScWGu2YsYatQKGtuoMg00BqewXkmOrA/K0zH1lR/W0MgincO6ggl1jFoFzBtOYbbM8EIIoNjxPh50TLUYdgegIT5gZb3XocHRMhj5Q5HvGrQ3NIj9MF6TErXMbUmXbSMtd48kGoqk2eZXIGSxVcpGKxdBz1SSGlBmqzxu4yLsa/fHoZUZ9yJDZnGFXX27YXj5sF5wl1rDjfNjl7uWSNB9yYD+nG6j2nsAIB27PBCbN823TBibGq4qAKAJ8gYXMzMt3KNL9wujCEwPPnjA/Uio1y2iQY1WjrZzKnNPJXfhFxW+UNNDmnyoIz0QJ468aVBtMP2IbSMbszbRhr6J5zXsyIxF/dVbxY4Pkn9SDzntqRKYbQKZbDZk+FvTlMHILZmxrH4336eYaXOXv628xzEHRyjZe0sHySdlALDOZMLOv2+sDXNyr/Fvscptdbm9Jl7Ur8JDn23vD/WmANfyJ+wfV/Yj8RmX1fgZY1XXDXW+zywG7pHaBPttsSeZVVuOzDX/88AAexvci6RKeH3CPl38OD+t8cq5U8jY8bNw7qN4LTTJe3ebebGHhJp+cLRW+BQ/b90JYi+epe7yNJbt8cqFU8nY87N07WLh3ULlvP96ktDmp3Ltf8AddyH3ocz1t3PemP45+8o33p9X72F1IfdLmffCRgIDpvkFy75v++vu/8EZ2o/Gmd379a87df29auU/1aebqqi8d14fEd3l9rpxmtqZynM0W20FgoTR501Mf/L5Puvru5YyD1buPjkGU8Q013yYSFrQOpaLCBbl9AE4QMK0Qs6yk25VXzowzxd/4hTiR4tYliB4CLdaG96Z70UP86Nq64C7GeHFZKaYfP5YYBHIXZDeaZdxFmFpc1vLJvHew+EHO8s1/jeKuB5VGgGYHyAhfOzGU8TRnmC0nHF0yLp3MLV1zpTdfk2baftk1uXfQGDfUmNuQ7xqq84P6uHR9bunqZLemlvbeQTyuIJ5bQVBUgA9q49K1uaUrrvQmEPLyFYSuAsLRoDouXZ1bmoL21IBLlsqxS1C4QQyV/ELsL+bYqV1gp605dmoLO1Vz7FQz7HQlsFNs2KliwT1bZuBYG/+ovTye0tEdSGWdWmFts8o1to1w3XDX2+xywC6pXcoIilEthVzWATg+rTIqP7cOncVALNyG3h1YJ3oat4ecOx3KufDoggrcvj7o8VeaxuuDmGIyn7ZxwkPrg0XFK0prqBeBQbdATwVydcH2e3dodA7SslH272BPGb+TR7oGYK81Yjda6SLkvpCo/O7f0csaRKJpj6rZ+jD7zZDP2B9Wec6qbA1toKwSFSG9ZlEz1PIs6HBNY2gTQ33vP7AC9RG1aB12gWbtG75T8CLvrbBN5ZrNsE2V2GZZKj8wBssOSOTF3BbWqQnr1MZYp+/ZyadqUMFTUVPSCUCFA4iqrlV73bUT3pJdVuyyZrBgphLIqOPgdlC1fVm1/VIlHOsS2iWwi28XL6vl4KA6geCanPmq2nPLHatVrHpliFllf7DmEuwtIA3DEEtbat9QG/M5xKOJxzU9rvMkXc2XNB5xF9MDolosqRSSlbRbLF2DybUXuPLoTmWyLZsCCtgmHlf1uJV2ikrQaoV5F9D4ZA1SrxMjTNZQcRU3c/iIR9wYi+zNVA3R7PcgUqHRKE6HQyM1opGaQyNth0Z+ve4v5WhkoUAjKzkaWXiFaOQiMQg3s7Y1rZj/gkhkPqJAWtLWKXg0lrFMZ4xlsIy/OlinF2j2lX3rhCK6mwyWClRSmUAxkO9+7PA6ITD74AWECkgrE2gGcNEbY5oKRUgI+vZDv4x+bIHG8K6/jRZ6iBozypJ3OvyzlC4P9cuTRqA1YndbDCST/ZvvPY3yDetRBzk9a9n/8z4+omQVqOfLv3Wn9fypx/z1IaDCqrUppJqYv1JxMsBsrITHrnr2sfejOKxYB3X7wOaaNfIXp7idLuYf4FSa/b1FlK9pLCxxmzASboGUHAv0Mkhpa46UthLkVhxSWujn6VrCsdHBXKRUMaRUM6RUe6VIqTv8y8JLXXJhRDjNoa2TEBJkDAZGMPA1MMLkb3D+EkNmNdprEnAWC8CpckKX0orhNyC0rgOUHlQ4ApQuCVW2MIPQElKThRmExkDf7BPZ4oaDnabrRgNyiSUHPLRgrhbAU82BpzrZlM1eg/hsYQafgcsbWcVV8o0OoLpCigvzUdrCDEoTUnSVLGLeBGTtmTrC2RqA1KIZpGb6AofUFhxS+0TTXxVSw2FvW4HULsuR2jYZaniGDbCDU8eAFIiizbBsv/u0R5TRzt7/YQzTGIsC18At59c9rmsJk7VOYe+cxOSL1zB8gNf71i3SUSq8KVzymd/wiEzi7Df+w53rwwlUUiPy2J794WdRYnk4gYSIV7IXfgEvoGxfcbiE0LslXRnjkl72VI/Q1Mh+5evW2Y/EYTr0a2U4WBUYDNayH/3m9cElAsfsOeC7S+mtkP1KBJgACDqMwsq76eoYo8AYIfvUtxI7Gd3sENQrrOMn/sVpDulSrOh//jjgDeitQHhnQ/FEy2NE08O0PvztgsomcA7nrAejiUr2wGPcJFsFVYl9vWFf93IkRBFHmyRb2OhHtnP7xYSUn/o6jnst+0cPnzb8+N1P+BqOQ5AXAuG7plUkCtMhOa2k27PP7VpX3DPA/ff+a5IPjuMt+JqgWXPTYd87bCjsuYI9ySXjd+wJ3SN/8CscAuxtwEJW3QQIueRfnjP8vzASnxFnn/o+zldTqDl2Y7YP4mFBMAyrOhzrMK4FKHOwf5mwqwfg9l2w+7BktyLhimJcGDBGBRi2ymC4ZPDXM/jr6NlaCfAWuN403bUNs8Kdsmg7ZanYKVvMuZbbgdu8LstlSFm1Y7YDKpBtdxrBsXfIuj6JMDqpzTjzrQtet47hdYWnsBxewakL6hdzqF8FruoK7gFHa8PBJdNYLpCRTmuyvXZarLDAuZWuFODcGZIWL43hHw2MuNG707gv0KbpTFbdciPMIRyx71p2wig2Qj3dPjKGdwoRBgLUqb42874a4LXGW6CDHa8tsFDeAqi+zeonKolUSX0aUSd63NOmqJQ2Rb3YFC0yI0s65QyncHwgfqY2WWNDj4ttUiu2SZ1TAZBcS1dneld1vZuiRXU9rhUbp8LFQRXL3IvxcIpEFu2WH9PpMpUbkCV8kPlhuo1exKAe/yLxt5N6XAjL1OPSSeohnE1dObA2dXDUUneF4ft1w9rgV4i3+9opt8EOgLQA2mZvDs3oTJCfJPvZf3Y630g5hWpO8ro8xJxjqTFLmWT/+AlvnZNBA8o/hYPvdkr4AWbZZz4ncoKNx8MnFiD7kX+MCIy9dAGoLvtTAntvRGQEqMl+/DMoHBPAtfwM7f6+f804XPWC7IgybC2TnSS76zvUdgdtn18mAm5lT76OtApfCSJIe4bZD37t+oBRSL+YosZLSgRiJb1kTGi2oJazezUHXWBK61O3RBC6sBIqyEk1++m/RSrbyt73Ks4NkXbXNvKzO7gRYoYxqWU/dpQsT62ElCkGGKPzZnbfMx7Bc5kGSBwNJFjZ7x8jPahkP30poA0nxoUCTV8w6GqOSVM73Toi4k8I0dkzX7qT3FiJfCQT5KdFmULVwS+b+INHT2tT5CRrI0eABeGYRweWCMVLjg5cOkEHlkQHlmbpwBrgRzAgmtAxGEAqQRGBus13YpSCp1uQBIMBnrgn8XvTUQJB39BOYY4+4JQI8ihQ3IJ5apBTEyhuJ3MwjwYs8wQyDyd32IllA5+tOfisAHsS7JrsVE1gtwq8QLBbG26K9VfmoeYe2WiNGohS+4+1giUwMGzPw/JtfjMPKVcN7pBfVcDTyYEnGZEcNgzKGsD3AGLkzcPZcA7K703XnjgasuzgCnKqdG0E9mz6+2j+94aEE6Uf1FbgNqFZNzcP1WHcPO2RMMY8rN6aj4k7BdwukM7gFMIdwGFV5+HzmWNBrMec6XP/DCnt16cxuEPVDsg7DlVfCCUEbfjLRNXngKqXC1S9PUfVyzmqPuew8W2Gqg8AKROr0pphDjZuTbH6P+vwrB3yC368Xebqm2V+HzK8STlkdSTL7M7IoYEO8JEhjJrklpSoS2bxbz8tCIyzF76fFADGY9m9S+tckg5xoUDrP75zHSCKIx9QatsY2o9zU3Fb/NF3EMMtlhDlYo4oiVbj7Hc+AshuZD/ymnUZzmdPHFHtW7iD2kxIRsv/X3vSI4dVzb732TtZ37YSuluETWKBeDuUioGKZP/pknVi+AVb3ud/0zOo/4HdJQGFQ2a9EsJNsk//qqcOkEFpZD/TIwahvK2d3b+Pe6SZffATDrbqJfEJJGnDstRDNWxF6efEra1IbtEsUZeC7/dEXWKy/SRVv3/faePWa5PceoF0NzZBumZw6ZDudod0l4V0W0K6rXlId4nrlhjSrRh6zZevXvReOFhL0bOlaA/d+XNlEDv06kClk0/aFNNdy5luzi/5bUq4ZtHtImnrLDIswCzhktYLuKqnnQI0OwpuDeCUCHZlHqpdmY8f2zlgaVFnYLIrmKxRAnaRaNcQ4xJV32AiU242zPISahIeNwnWLIIFBzsPQfYEebUSJDM0m4OUoVHqeIbTjOZzmoYi69oflP3K49ztCsx+h4qGOag2mY8ka8V2qBq8bxldJJIt0GiLYNvK2gLbZSBOotEvN/ytMhuaQKOrM2gUTG3DmNquMbUVY2qrjh3uGTu8aOxwbOxwMhfHNmdFt2XxS6fM+oJh+zkyH+MN38l+oCoCvRVUqc0B/fkTnsnhvvivPM7ukqL/8+iKGHdcrPNPeUblfusrBL1eukiOES9+9pcofQMOIL/b4PEX/O7164TqLSU8upTjUU/t/4PL1D7MIrILP08Ulp1dApczIlNCb5vsUz8JhmqbbaUfHZIXp0jil79WMJSUEGqSs9FSUmf3pMDuI/pT0LYDFT3/zRwY7c5//P88LQEu8MIES9krIeTsfTcUnMs972S//tMq0MSIjNk2bLL7/y5ldoui/b0SvmuVBSzY29kvH5dQAhV1s89tWTeQwrxw58fZx5Z48sr+4d9Yn0bvZf6Wous/+jF2esmUW9XsMytEt9knz5wef3nBnxaszEO4ZgXvEO7qBMJ9CWlHpZB2CADqBQA4JJsDQNfJOhom/3AAkBjSXTBsOga0rYaFHbRNol6IDCnbWSCIEoNRPTWLeZemhR0575iDTjIGnSWhYAc6dUwEgU/8wATwrWCRt83Dw9vmI8wCupAeu4CuLsV/Dgy36iC1CQ7uzmcuSxBWt84SIDuu0gIgW6MZihQ6ilSfh0F7UzBYn4ZBnqUMZiHx2QQ3z8Wp9RmglNTHwHbLDBNb2Qy/8vFC6lBV2pnGypMCh5ZDv2eFfv9h3d8icTXQ75YC/W7L0e+WHP1u+IZTD8A+b0J6PSk+MH1AYw7STdxpLWdaqxP8LE/6ZS62N8HCkqc1bcciMIK0Hd0SFmrmB+mS/hvcRa6QKG30xgSKYGorO3e1eW6GXM2UGZ3sp7i18OVArqOkeGj/715LbrmX/dhfYz+q2TO3UkWV3fPe00L6JU1YFzhnzGiyUe5t9Oi3uqwWdUgeySCOf9aTJqSEk7U1xsj+p7auAyyl9WjLNKBj6OqDP3Oa/a5kD/8Q+IzFoRBmZYKL7Ixxc8IjLG1gP/17gJAeHaxK0uUNI/BJgYXn4UBHveNcXiUcuEU4MLHwUPNwYMeGumyo0MZr+E/T2jLMV7PZ7aERTVHbiW6h5+KSWGhkHOBtXbqTSE91dG0hC6X8PKy3CSaqjcRcVihSFZBtBSAIyOoUHDiIbl0so9lwSKq8Sh0BTcetlglFYy1tkzYdLSLtunRns+iuOb3fnRDSlhLSop7psIBNZlnD8KXQz1YcbG2PVKSvnT56R+7oPRffdKZ2ADUINWy77mgztFUbzcdLCQELyTQFWFsYQxF46fccXroQvDReuuAEobf3E2MLq8YWxo4tbBtb2DG2sG5sYXdztrDAZK0JLnBoZLdgGhsksp8sZKDa5wvZF6DUML5FWvWv/LBPiARQ/+T3UDmxSLUKMZ/Em3Uye/9uv0hs9qc3UCSCRIFm4fOlXTx40WDX2EhQxuzcNiPMeP3oVpOIdkpIsAMcUKCNJqxwvvun7KjUyn7+JsnGzMEke+InT2sP0c76X39MuKtdQgPkaQu00TRx+hOrqqCWff8/FUYlT0AG4U/uOU0KXsl+8QN+qR6h2mZeD5m6RvbTL2BqatmX/7kpNKjryT54Ds+q2d/94dNGTO/nNSkknM6wKZ4QWjayRz7ozuQNsQ5P3+WbLL87rfJqFERhHjrrEep6c9HZpmfopokWI+rOa1o78tVaO8fSVWztlh1HF0tpZGvXS6XL0tq1h0Y3x0isa+iuZpiu7uCtK9InuBrmWkdB1SL3nUHVJsiuM/d8adNiINCRWNQWcUnsk+aSRwTsY7ZWd0tPEwJN+6Y4MJmHomgXJghLpasdAyUPCALK2jyEV5uuLXZDig3ORLjIrDlwTOahvGQa3RjWqhrQNRzQxQ7oekOTshNI6w5ImzP8V5SzrqM5x16iA4oQ0+409ps8/SYOzV2QtcCXa/6ChIgTaG55Bs2dc+zXbabhKYSIvbmYbNKIsToWIiZlDqw2wWNNCBFbE8wZiFN7qHAQi7kJIyDEmRHGzKwFQEp7RGmSkZORkoyc/K30QhXZIAEEjJq3s99dFFi1uI9b2X+8noqSWvax3/RKrNRZW8elMVqrSuJeIb0CP+VE0VVSUGgAjgv18hh+zxVk9T97OdF0cd49ZxzfmMeRkBqf1rL7kTN5YUSpcdk6Kc6tk8wezMQetezXzxN+AIOjCe6pOEJugm4shohDN8sFuqE1UkfoplNCN745bK6ZERLU5iQVnKTYbJPcTDk7ReNPqrLetIntOSugldy0smoLQ7W1FmbBjJRy5FM1O6NcjTKPg/LnnRvreuzmpKsZp4yJS9GgDI0sJ3xAcl2U05iQ7ZtpwZ/fQpw6A3kshhixSq4hqc5sz0Bl54mfTLgBqICSqWHcTnOGTQnnf151nxNI4lHO5SyMpo2G5MpuGHqK+TFjIQcADbf9z2n7/2TNLCDPbmoBadv/NtvvY7amamxN27FAHWOB6hO64MW5uCGZ4HJ6Tt27NMHtTKAPgNWWAoO43dDLfmjvuukaBfjf8zkdZyrZM+BglkdDWUu012XLR1nXMPtH15mtDDKxf/bHT3NngokQu4OX//lSGnzku2/DjsZbx/se8i82KIQiKurUZdUSv1HNt6uJsn70F6RMhYBq5BSctMn9fopUKxItlJmMwtrlgKMcsBeSxWNDpKsyYbNYu/hT0tjq0NuErZDzEy1fPGMr3Dx5jOiieUpGFlxMrEU+TxZZa8w6yIFq0aZILuNdc2OPeaJwaxNrbZZGcyz82I0t08eYWI8rYmDcdENqbHuvO5TXBY8b1mh3livwKW6eJcG0JZRVh5aiNrKjS9PWi+vE9ZpzDvJnz0FVPeax1RhKWg5S2FeZ5Qf8uRtTZoUxhjSr+mN4zpSr69az7mz85KGV/FzVXF3Pw5+sV2zbLbZtsTvka+Npo8a2UbVkKVPWcmd2+KvY0wupb/vUK+9T+eOOFYEKk5HvWjnVFsYZEoaMhdS3cupNt0W6YfL8j+83Q9D3/x8moBbVJh7sSEAN9QeIQ4MmGXXuhf/4+nWxh4CJP4ZykPbfDdsED/qy0SyIsi9jPOpipDD74u/caWKwpp1UqF6RsriS/fafeSWF3O1mYW7V7CdYZP/g+4TWuekk/oyZ9aVecPX3+DLLdAR8bcrm120/Z2dey8+SIrM9kdlZIYUjs02jfxG5UQ68bQDKgcOcw2xlues5SZ3CC6DmCKzN7QLGzrmdpKtx6ugvz/ZOHdadow7zJXxszCM8OmdpFqs6mpm1Vs1mnEcyzVo8tBPRPJoKXmUa8n2nOteSiJKmTHJULF5lHmGtTOuXIkebm07uOCt6QPgOrIk739ua9LBpuIX+ILJwF2ewhVrFFurlW6iVb6EDpjzn0X3eLmlM7pIxp6stlnO62i9jg1ivzPYaY9sdEaMj0Jlcc1aEV+pOOAgMI3LX0Jm7YWAL2U0uJm+dKqD6XYLqxnhzcKlkAt/k7LGkg+ajhlyt5L75wOzsi6tu4gyYW/Mt2HNgXjKeMSLNZR/bBuHNvKO1SQitGzA3DI2LaYxt1J0ZrG5w2p1FpI5vSpvGogGLG5mozxzwfAcycyFJ9gQ2SZyxzugiGbzQ4jdMzVeLUccBaL/UZmi4IpKoARrnciDG6BaGRV8nMFyzbjLHPfxBIzLjmYFxjGdO+FxS62YBfuKUjvPFq50d9z0CrMOktCAbsArihhW+pGVQQ3wvwFN83Hew6Ovc0WsHfwD/brFmYVFozW7hcwuaWTQr2cANfDFwAvi71OxBKmIG26zZ7QDmFWu2o3M7mu1a5asgEKp8Vuaeb5k1K3kJbJpVcm0OK/maMtM4aaN+6Wiw07oBXjm91LoBDHUpbVGyjQMnDPxkFv82fnP1+iBVgF/+AGrrW/tXpH1rv8/nypQXF+3v4s+jfAGDpwF/3K32b1gfvGo02G3t70kHCCCm9gfDwas0DTtY9nYWBereyx/7+GNlfXC5NXtlerk1ezmfa7G6RbNXCW74Yuf64NX8cUbNHkWGaTjDW7PY0giapmZfPRy8Vs3i7evs7dfg7Q57C0DcMb3P6K2wY1rLpYjE6Wpx7o1T1IKgstM7zFwd4uk9wsevc2ZOiCs2tbEstK5hEXDSrgmzqBqIsZaVa36Ug/0Y92fbYNnmjK7+mrMYdm49V3DZzkqdyWXfjgBzqSvRRTS/AewznZHTlele9+KSdF/6ail+8AJ2+pfZ1KVUn9vU9TYlpfE8/MLIpE5kkKZyppyHnGbMKOxceFk+ddvnTF2cT11LdrF2REAr2+ynTjJEhXYGr9k01dKdqhN5j14zOT0IHGgf7tKHDPqpn1fpJyMC2FRsYzQim4pghmn23Jhr86aiVZqKbYyYFcybimD+VGzNpyKeMxXNfCpk2c3uCoZ45wxw67kFJY2glkcTI68CvqXZk0e1LHQpai8QKb1XNd7aDLPjOWanMm+8IHNuvOxObebw7jsOJ5g33lY+3uqc8Xbz8Up0ofHSMYN3oY2XgR803hAeKmuT460gaGFfhevpa9PLdUdTHRtvzUzNON76jJjTxpswTuvseKPSeGsUc4XzxhvOH281H+80G5j8U8Yom2LVqDsGGkKQbOesCU8phoqXz2Zl7LNZN5/NWslnkzHkxg6c5rg567E5wfaZx+YBS8CT2gVKIk8Oc3Y8spPSeva+m9ftmAS/yOyH/tTThJaqajNGLXMgW5DCgiNs0cuCT8bGlnKTMB5SDpxy9DAGs85UVuZ7Aol7853GRjape206HlCiaLYDJ+3sT2B+SxHWSak8/pxrBHT75z/P7lXsm5TyLtbFfBrMNW++jsl8JlHOjt3c2bE7ZhVBA4oAh6EFONzU2bFmx5TYnB3jSWfHV+LlOO3JGJY9GVe0JrFbjNiqaJ+Su+lG1zGjcMPmdANLalaNp23K84VON/SwgZpyccZFkZ7zE49D504Yj6x2Wpxi2lGxZhu0jGvBSv/cMOFkrQQ80YLFshNgMOMEaOEiMyXrTj4b+Z3NmE3ugoLjTNdzV4dZtqo6IYtzgq9JCiHJgWR2O9dze/lZ/qhZ5o9aVpGR7I4T24jnFPfpqunN4TYXytxmYF9K12if+PO4F4x0NIUsKzJnMGFLOnNSLTMgNZUKhXAnsWUrt44XfbWuMJKfni6M+xTMw5W1aXTnzhN5nypz+hSPyVk8ibpJSAzjh9aPCHyHrNqcsGxeF6Jp8mRdCPMuTJPh5DfrxLjEixZc7Ja+P0apNSFZ7NoxFo0nUKqh0GmX95YyKo0fdTCq1IEdsCAwXPbxa3Qkut3Ey+vZH32DqThvS2O8/fS/pH5MZx/A8Qt/4Js5XeudkG/ZifidjAyHxr/RKIB1eMHw7+vyDitGIevqxxb5a7bzJ5WHpgSS5b5+eKKvJ/no83lf7XyV93LHZC/jvJfNycoxN3HSF6H6lnLHlwcSt1+TEy8FnlPHa9bx2kzH78g7nh8YXcclff/oRMfv4KMv5B1Xf9flrM2z6GTHa4qjPu54XjnzJiYwgEDDf7Xc8e3kHa/0rxtUi45XreNV63h1puN/J++4TrNLRcelaXhkouN/h4++lHdcfTlFvMqbqyc7TulAu9TxvHKGb036zYKlQAf+enkAlw6k2XjDwCsG4NkAPBuANzOAO/MBqMdrxQCEez8xMYA7+eiFfADaDu+mspo31+cD8DQA4bTSAPLKyY8kFDE6kutQv0vayGh/CeOiMcRhywTtjSmiWXdpre0dO7uRSorPXoE1UC9ArNDnIX0WuPcG3jBbmkIu+GJUesgs6PDSLaHWvqc+xQw9yORilnHRN+rcKlomRWPLsWu5ai3XXMvhdMsuG8do4rHfyaudHKzvviBq2+fls2XLL/SmIBoIQ7cOHicL8w83+F3ytO9Z6MiHw4GMJQLLSNTsh5b+2mX2UZIimYTlse/XEPueeW3MXaxv8fwt2K0l9/QsLpu+0nGIOVhGSpATIpmN4jueUsVTD58Mi9yOFQsqbDyfryCkWCgKEz0z5fBuVpojz+SL6iWTrCwlya/7LgEKRqaIvLGF0F1RGh2LiKvAjRYaT9EUlyzSr18eooUg5hCrSb4wtKBRUc1ynnqiatWHNyIgrOpsWt4LhoWlqaA/b3C+BscPEcRPkXjdoCIbVGT9coP6+74fnbasOzUT8GJ0MQNj1lUdw2RaatK8p8xcgWfNoWwsGLeQfN2NqxM996yYLZsWjVE253WXz9XjmpL3JP+UHVIcyzzbye3Mbujl364oWJFfsMqMJKLYgdDOKVvcHdkL3gkx0fgNZvxUdu6yE0P+ACjdkb3hBJmAiGkQojx4LG+In46sWqi/0Dh3yola49R9lgsj+dXEv+R06vozWFTw3LvJ7/vpIrngJKuccsuttLytgwzb9Vx4LRbX3deYjnr8nNPV6u5HjESEu6Tu4yjDGhYRPRWC8RRDzXeU/JzHhZCydwWOVCja4hF4t/Bm5VR4wVKwMBlDxAnD8WuoHNSydNFa2vZMw2ODijw59pPR5SkE2+bYINSzt8qyLWDKi+LZuwaxAoQzDQa/pVBXn/UZuc5QbATUgJmt5jEkEeYR6eqC8MC45Wqaf10dfy0jHNMPpeLWmwoW+hUbTVQeaxG3ypxVj0bjuhF3drLmxIpd74pxBlRy/5ySnCR1Iig6oSVQ8Ey2lYbH87Rw3jHRMWYSCxKpZyqnpDF2geQja6Y5qFhcXhmgxRaeWEkBmxa9V/ZkbaX1NjTUcGmq9gyYRAOIb+N6Fx4+O3+doJtGr+vICqXUYg+/fuotKPloXall8fbCdVNv4Tpm34ZGxfH/6eyxftp1EYmVV5L/jq0ea+nHcZd+EI/x79ighheIUsgkDquMNt0OfB1+5SCYMa+NBq8g1MZW2DOKyeKhUQIZttljzAe2vwUfNWsCv7ufwi38pU0GlLEWy8KikqZgABkxu86nx1f7W8zFg7BOfimzpETEzzRs4ZJostu2LsvHbPniQWiLs9U96JqqYGnQPVZGOCsCyD59XsJTDOO/zbzCEa53O5MRuae9lN7GDishO7p0mavYz1WiP4YSlZoNqxCc7C+AlGynAIaQZslTAxkoEDEpJHu6jbI7qqah8MWxh4wTzLfAE9OuhKwCYt10GAEYnTnCiLGpz48bikibf9IYf2LdhG2HVRth9lmFchUt8dtg02+XNvl2yuExXcoTmm490l+TShH87pqiiSHxBNLvtDPlsLjEUk1QFUBwFC0BLobwHaT+7WI/7F3Edz4jOEw8ju1xnD92WSy2CDZwDLyGqhaFP/b5Y0Xoz6Ig+y5hoBIWLzIf1Fry72v+qxzNOWbphZ50aZtuh6YqXAfvG7uY1mCAu9YLJhWLMUrmCMbIiO4RAoIhbwEJNcLNZRY5OEX3wlG/rxQWC9zNkQsYDjSpuzoDTOIApFjgKSe8jowmCJn9nj7SJ/S3Zi4fFGtiRNoqN1AGAAPJAHFCFC2+ZJJBJc3aQTMWzT6TGA0Ic7p7FeM2u2RdK8yXg39M3rvIMACQQ60yBq0SS12W1kFLGasTGyhiVdhCO3AYHSqRxTsdlA/FLrbAAkI36SRX+NDXh8gNnw6Gm3yDfXLHYFk7Ax8E+oAJkV+12QcdNnK5+vFqQnkFLFGlIlnycnp596+mfJqIipNuV0zEcamY7GXcXaI7BvilZ8Yaf9EQD+KLLQh7TBZASpQGnyzhCeOGtyD4BqcX0nGDjAETq2htEmYWQz6OdeZe4qXNNK7rPFgjsxKUD7AyafBuG3dWxLsVpnCJgEoawB4VOKAjfxF81NDVVcIsUtpYL5as6UW257K6GN8BXp2LbPHKdzDZGoCG6T2FK4ICMpjYe7VvzBpuFKCeFkDgiyQCC0FFAZdVcgmV7N0nivTKygNqiejFBOmXZ7/+a7yrZBK+xS6XmGJAv1w/HCfmaDLw/BFyERbOe3tSmgUNfjD5cfUQUibvSH7W95NpBrM+wWA2tFOrOjZqf9aEgniHLIvqJACJzCZgcmyqQm4TUN0UVEdkN/G6JZBtE2Rjy0CooOoA2DYBkuk4yG5aYkd/RLAVsakpscOgQuCoKj9wzn++UEXwmSLYezEGSw3wpIvl/y4lpFP+b8v5TmJ1CS6OkQpdLrrAUikoRxfTszAHqhjzWw/RRom5t+Y8jojvOa88O1m/0kvEAbn6yrXxI8iOlPzyMY9ZcapjXLrAZJZI/y3JOH0s1omBhL8CEVMcogfLpep4vun/f9V9DXxcxXXv7N7d1e7elbSSZeOvwJWwggwykWzHNsKA15Zsy99YJjh5SZ3V7spaebUr765smSR8hRBCKYWEgElJYz7amJS2JJDETehDwSEhKaF8pc0HL4FAEofSAAkQGuhz/+ecuXfvXX3Yzev79b21R/femTPfZ86cOXNmziko+SnU5rXUULO4Y8iCNbJi24a1FUOFhA7+IR74TdLMMxEHRBUnMWjarQA3w/gisRkm65ORbTy2vKBNm7HxIraOx2QzTFxJmakn+odNA5DJM5hjsmqIctKFMth+xT1TFXomhCzMf+cz/gxRd9OZs9k2RWL6E2dqw4QlLHQEBIcMc9Rzq2PjErWOIuN5qBeZm2sh47d0PJniiS6c2OhzdxpNveCAHGriLBH8zJ43sxGmHcgR9th6aY+IxBA8KmmFAVa+h3mMmMYYPhehztViOect7LzF5E0vBPwyZMk0RCURJwlah1HnCN/Pd7xrmd10WSsna+VkrZys1cSs1YSs1WRZQ6kNGKs1omwTiEEyrbHDvDqIowB/wNibOfXYq6keex00c9fvJY2jmuoB6AqbbBTOnHoU6pgwm0c2AdhELTx59RAW8QAF4ksb7/TpYsL+aomzCbMyjrQGLADu5UWPA6QTt01E+uy1WxCmNZvpQodL9zbTaTSfmAWFNSc9uhuqR3cjFwyasrCH06QXeXV8OXELW0GggQwtTxYeDGmrKhaHgLY0MDGgUhER8ZMo1SfMcYCHnBWmP9CGtJSbv+CRyBBsZBL7UBUwrlkVsM/d+lRxOYlAlgepO6Cxyd0RZ9HdCXM2bfSzB+2MSi9HKSRaGbZBsvTSYd5tiH3bChZCGKE7lKc0UzoYJhuITWXRS0BMkoIJ5B4LoT0JZCUtbYJsDpfITJDsnSoyK6vnQKXnQKWtkcoOhsn2Zlno4mNzjWGxLGrXi6UxxFRBGd+pK0th+Lxavbfp9ZynRS9hjU1hNj5B5li43uJLFpw7PHMiL03JTq2PGyTcy9ZUwmThwWCuhwMhCUys2MrjkTDcqAxEjdqGbdWU8ZgM31SPANkhFDAfk8apcd/pKfNFA9uNVQxHUDMcEKU4tGKPiG4Mmy67aYSQPBilmjtXEz3nPex6j9nvmvQpe7QaPFp9XsrjSlNTQc/g9ZkVlojUhnSx6DpINB4dTMQ80cDJRSp4EnXwBC1Ap2ZoauRNDJPHZQ3vBzQIRa+xtESTsFTJnCh4wtJwoJbzGWaWyvmM0afBn8Abqi7NE1TrkJgAhoRIsXkWQ4zrgqwEeHeYK9lcIfwkscCuJKGjTk1bSqzTlhKtGp6mCTzKZ5Oa6Q5m4GU9W4ERsYRmzg75YRFrir7mlpThGJLhWCPDMcy8XjMLGvfyVRWeFg1URp4Vw7IH9eRxxKNMBiC/hnnIcSWEnNl9ymPKJLNgbAnKoYcnmYzABStwgQqcYcO5CGKIsovSqiNqi85cLXSqStz7LC/NVSJC+K7iBvmwQSgOPjwh+LATfC2dxLPtKmsm2FdnKL+YSdUi6DDv/b2pSATF1pnrnYU9jGyDQu8BnSNCTSt1DP7mRm0XmNq+0eY7qcXFIrOeXQyxySwfpHYRI4XQGFtyrh3GugSH68JiRVuxvSuiZIGtvIOqB0+UBZZKjD+ylXmqakCEgFi28BttegSKkBLYAoIWU2wYAsC0AcInAogVp8mCtFMw0KO2eWfQh7DwRycsnR4+uldl+eaYD6dr8XNsUBKGqtngNZl/FpPiWlgH7ojZIpKoNs+oyHYjkjntrouJatbz85q0NugYCXbRKt8oDemX+zWcI1XUU5EAcWJOIpphkrl2Bs/QlXz97nyVE8UynPZgJZ8Q44NmM6h+AVlP2yy1Ns8d3MN7H4Y2v03GAau9/BO9DK8XCdmwqtfzDq3g2TDtJFmIhamqiSrGll5jNv9fv65iZ22TVbNaLfevIlIPhRsaL6Z4dZC4IfF78qnXhsRQDJagsdy6AUxLAHU3bw3hbJxYhxXOAwa9a+QashoSy/vFHBjIG5upf4YtTca0gVQ6TWoROSWra7yuhm75ZqZOpkxOYnevpizMoTZPR8K7kCIO1rEYD958Nln8JkTUZnBJe6qXMZKU5zcKDX6EDLLpERqS015+GvK1jkU2sgke0LamSfbJzAXtjQQEwY3EUixjqaC98zhGndAWo62SN3LekwNuU0kZqVwWvOttPGIzqTSCcmygFwdA7JFAFyXTkkEWlUi2QSyeb5Zs1vNVA7A0bPLiaAabo6+zyToPEiYFFePbdKy8nmwJUyCt6clkFiuz014Fh+jCsByXKDmYhyZ7ReEzq1L1pMnWXiPSSCQTjvLcRRUyiJNk+bGeUQNsz5C7QQyAhQQGdzTTXqheuWpLgFrWEyM7xoxLzbzdFbRNBGo7sH47TUJAt/niZWwdXlqObYctI6PxqF2vzAT3GMwvip1C/xbeFiJpsM33+IVHwNmijbyzpNhg5ny9iY1uIMmx5aPRAvF4vc76fup8jA5cRP9WUI6NYms1IluryDLgtetKRukNPRqCbB3Rp6kQE3GROhEq2wybHBQR25a4m9XvbC2T5XibBrT4XCYVIRgJyKUFAdeAtKiDJN86GZi0aUfDMMR7dKGNhE0k3uA2l6Ej0yijZB3vZLQYYpOVxkdcxgeplehZkJCNy8yGZZrpdCPxj7RXw3dskBV5CErAsDfPMAjLnfu5GomMBZnA4rAm47UYeRsiS3NiN9K12ahtw9U6K3XavZjR445He3J6q40i6Z05sgagN93oRhO9R0e3PIs1TbySqZ0meQ2JoVJ6rRmSw23QMWMRa5gUh4M2weXNiLjeCxEpgia7bJHOS8MCZC6vScyugobFgo7Aj7ulxdfLAmJnAIRsE796zeh32e0WTA8ypvOQACYENzr4bnjx3ZiA7z7Cd45guPHdqOC7ofGdY1UhfDPdkUKb+FaT+VNa9EgZiOLX6hL4/avkxNgNPrH7edDXEuSyUOtptJYhvLHW78pCwawoW0uU6WiBbRKWBlCd5t60Hq3ow3Yw103HlRw8tY8RcvJ0p4lyjZ3merbbJVkHOIkY78vxaRuOOEIb2lZgngmlRpu9x0SDRhlqsXU9VuqJBvdfC72Pk43YIVsqEebiERvTIpZGmb/U+S1o5hzrKyfGIhgiQ7xkijJp9/P2KwR9RHhrGPtZKXgBXWZDI1pzZZWCOYbgAzK6WPjPhFNvzfuZPfC7DKqfnCH4D7AyDGGidNiJyanfRod1slPvpqd+Lz01v03rKM1O0MYsxbDtCW/T66lnfPrlkE/vzINw9gitFrK4IDE751bFwBRQttFH9x/Qhk0K44AYr5B5D1U//foZ109LPxv1M6Dl2KSOmQg7q3SYe7UmaACESe0nbGsDhB1tAKjca1JD6EBmNFF0audI0eJ7aYrF4jwWyz3NU4U+RFfVW4nfYa6iLZDEk8pk45vcM7f5zCcNfRjgAe4facEbDKn8TUbignXyelB73WbIfM/TDjOAYjrWb5uOdU1fvkSTUOEVNMf7Em0iwqE5JawNeoZZf6slIoZR2fwxd05Qn9cVNZ74EiovrzQD+pumjqlMnFeMMSPTcR4DvsRBsXSdeEXR5hyXiS51eUTRsOCymbpsxH0ew7NWq8ZErYCec2k7ANOIVpaw+UH7bnSZPiJDYiZ6dsXXz8rkHbwRh4UDzTMolhg1X5DwbRDFwRqpDwpKnKfZzPZrsFGlefeKHesXdDV9YlWZR0RYRh5ZRF5g3jhPjNd0ODpb6Nz6irntlhiNh3pk7hhtDoqUtN5ltLm+YnA7OLnB7XrqX+HKpzW4Xe8UzTHWXG8ba3a0mPj2gzgNikapJG46jpR79Qg2pMBhKJvEtRSJa4ULDDArRMQWd4RU7AhpIgv985cblrw1LTdmQ0GBNHGwKWLQRhOnZFSlRL0QYXQ5RSMALoVjtMHtl4w2c/EkfJnHHEqUCANbOvYxTZlh7xPV4TZn/pJ1KW21W7wUEIXABCuPEEEg+SRt9jQUyZ4u5CvMqTfAzrPeFhhinUiar3jJQQIJPbH6+VJqPzFKzWAIKBlSiETiRMF14n5K11+dHOfUcqIUA3TdHEk23Qapb/JhZgvT4TUSgCYi6yFtClFwkChAmczaIw5btJeBTbVmjlDEs9qkOW+7FTUQDV4bUoQNfBLTib+e1hTIAoKkBhOaL5dVtWG4ug1DU7RhqLrGIa5xiGSXThuGvG0ICkvphiZvwxOkyG2CBpNWIYVUapoweaMpMFxOG2VObi+IQpBGvN9R6JtDzaEto/P1vprioM1CoqDawjaW62iGweFwNswMrRqCo7FdRzS6lpGVbmMk6+QzyfY4cxeTYKDpwUDz/xEMnDkRA9VJI2DtySBg7WQIWMsI2ODE9yIgWVOvYwvv2Gowea0U38SynUpzzvI056z/m81J2jdoDKJq1a3qCpqkcTnIR9fkY+lh0D0d0MHjk/fjar0W7wsGzdQYNOv/Pwya9d+JQTOnwaCQjUENrNMV5rMG07dreIp2DVe3QphbIexp17C3XdHdlG74P03XTEqxjivmNjqPtmtwkbqGCqlrcJO6IpE60CoW7RDe0W0PUFrway1DIvoXCM9AO5y4dUBkTDFmpIllOGTQxUN4acOjkdbY0HQgbmVyFiDusADUek3CtsgkX6sn+bie5Ov0JN+oJ/kZjspoWE/wtvSBGrORv0SG3EwyrRn85vfL9FSzySbehDQqfmpPLenhGaKixbp6CyAwDK9n7eCpJ1oIDgghGEFJ8IbjDCKLlZRJxzreQRLL9bWetEnVD1MlSbM2uEoCdVmUJCAaYgEdQc9TRtU8FfLMUwbPUyHvPEX359nzVJivv3fmKUNOhdjzFGtHhvU8FRUOmuapMNXfZOoSTvBKa+oGJIDQpA0YnmyU+6n9QtJ+fqf9Qt72Axra7Rea0H40TqP2OBWV20laM1zVmtyCQlqjmrTSBoNsM1dIq1S66USVrpmy0k3/FZUO/oGVrqmudJgr2RKaSBcmQa1oNWqBLkRtuhAVumAQXQiJqAvjJmTTBS08c5ZBvG7AIGYBcKPo1UZNMvlFS+s4EQc69hmglVLEYi37CJYtVs1CI07Lpgi9hSFS4MMSpJASl/VWnBSdsfbaQ+lMnoDlJDCbZBJY59Tzgm4Pqdj6TOj+1iQ6SNw13/xSDZQKZUnd7JMldksAAxRredwhlLhgQ1EvrHzrirQsVetMkYdgZRK010e3QdaRqN1gL8jRrmodSY+Q47q91OOVpbmPCkxqzXFeoPNpF8qcKKb9ddDga/b0120Gr8+09jNv4PhX6TN87o0RewGvNTIN+440QgGNhrSI87PAIyQCDxEwUqn8UqrfKrtYRNTnswShonZt6gaSJa2xKaBlggcN2RHT2xY4VU1CLrVh3jo7gxrJoMaVAYl1J2YQsaus9MLZWM9iABYXR7VSBA1Zu+7rKxoPNxkiI7zBWM8aEwbvtOkibwlM0x68hykVieiKhP4PKxKaUBEcYaFbtKUqpmtDxamSs4HyW5V4DQv2eYnXVeINepHCzVtGCiQsN0ePkzCpnTpcOp4uIZhNAheSbs1l5QkS5PscvXU5uhPWehshyGqCvGhZhg0zOpaQmHQbQlTBXuNyOIWYLGeTxbg+uyFZZxYCIymB5N/UQqtXLSniM5kV6cSE7Q8rKPITfsRlh45kFW3mx2b4ope5hMkstcWgaycBkkEaJVEtIYQGWuIFOVNiVEQa0/0TWk5EsC7eqHx+IxAM1YQjUTNWW1dvJn6OxGINZuIX9IybiV/SE/7H6FlnJn5Fz1oz8SI9Y9zD61Eyo7dWbpXEe4dsxhoylmNRM/EvBIznS/TE8Zh/pWfYTPyanjVm4mV6hkxwQXiCLXiVngEz8Rt6GpqwGIKY0JiS9CvkQrSsQP/f/JFoQARZdIvJJUCnpqKiABaQazCkBVgGHyB1ugBveK6t5fN+LGmlAEbrGjov75eLLESxsiXgHCiqKCsRKaUpB+JZEcQFaOc/pINCVUH+qYOMyYNEYwozuFZcdHTAhxgMQfeeN8TH8YHjfPYV11Xo20P4fg/oY8hR1RNBh2h7NWTnJIeKAXLfCtmegtz5SPfLyfVf3Nb5xgV3fGWFSJAhbT7S/d3C5hv/5pevsW9YfENHur/QkHu5//HfsG9MfMNILC6v0SPd5z74+fHsgl8xQJP4xo50f9369ocuufA59p0tvnVHuj/wV8WfXHT4CfadL75xb3Es8W10+XrCF0h4kzvcXfA2CZ/lDndXoV3CZ3tz7RDfue5Y7notlfD57nB3DVdI+KnucHddV0q45W3kVeLb4vL1lKpbwhe4w93x10v4O93h7rpukvA2b67bxPdMdyx3XXdIeLs73F3XnRJ+tjvcXdf3S3iHF3U+KL6LXb6euqYlfKk73F3qQQlf5g53p5+T8BXeXEfEt8sdy13XsoSvdIe76zom4ee7w911/bCEr8KAuNwn76u9mHWV9u72dsI12nutt7zXae/1SPAG/b7BO8Ru0t6bvGPsoPbe4h1kt2nvbd5EDmnv7S5vT7Hv0gA73ADuChzWAO9xA7irco8G2OnN+V7t/T53PDfA/Rrg/W4Ad02PaIA/cgO46/yABvigt4XGtXe/y9tT529qgLQbwF3nRzTAgBvAXedHNcCgN+fHtfeQO567zk9rgJwbwJ3CDzRA3g3grvMzGmDE2/3Pau+iy9tT5xc0QNkN4K7zMQ2wzw3grvNLGmDMm/Mr2vsSdzx3nV/TAB92A7jr/KYGuNQN4M7ibV6WPs1KtaT6EqTrrmT32dlnNp/x+Xz6WgVb8qDVOgPK8PuEMdnBm/3PsUYnbRzXipUHv6g/+6vvWMAqLhZgy0H6TgLEIxaH4Huc1Uq1Qhty+BnlQLzqCSGfZ0ifOSWEbGTfGfLFnUXWEb+jReZsTX2TzyCD94Bo7mZfi4/UI0lfAp/X+VrCvMfp77WXSCPISTY+2Rq0FgvwEtovajasaUDqvaLsrJWA6Vx2OD6XTNeBl+7Vq4YjrDJlnzdjq9Kio0UtECUOmAzTQN+wjlb4EdloDfbyAY6oKAAFh+wDB/rwbIBFsNA84CI5MjVi6H1UpAZ76RKCCF4XKVQp0gjxkmQUi8+fQI0UdRAlbj4pLHxkfP5c++ix1vzW++FitLKGBAvxnkljsV45/bE/w3JXh/0Zk2s2dBZxySIuyuXBPZBAQMecrnBrTFza6wgsmmN8KLRFN6q9lkTHkVYoN6QpDRnWDWlIQ8bsXg3S/qVBuubUqLrLTGmEEN0mTEexPNUJTmwErTYkt9obtCCM9Uway2mEoLcRgt5GCE5sBD81wgwSI+1BmWbYjVDDtwh7as8LTKobEF5OWeC0EOk1EAYykuE0i7EqpkxlHvL5QpdJbEeZUs791AjzLwrzDvKHZKUiEuXKTSA+uQ1C39dDa8YI37oj+EYCb0QKVzDNx3q8Adly81FlCY2ag7YCpFMd/F7dBoX0y8Pmtzqy+YFsPls+oDZnS6Vsfre1fnRgYDiZt1KFdMYqJ/tzGSuTLxcPqIuy+fKKNbnk8EgmnSgWk4iS2LkrsWnT1jW71qy/aMtGK1uy9hcL+d3t1kgukyxlrIHsmEps6l23ZdeO927rmTx8S6FsJa0N23rW4TOX6bJK5WSxDMhsedDqGGvtWDymH2pNoVgcHSkLcDpZTnZZraNWZqxcTOYzhdGS1X+gnMHfzEChmLGGk8U9maId96J8Zmwkkypn0hMCSqMjI4WiK6R8YCQzWTDnO1IspDKlUpfVt3WtB7I7g5bMOO23g5vOG5YoolLDmXI25QnussEWnYVLYjt2doyp1YXdqE93Yo21L5kbZcAx5emaUvYSu38K+zLFgVxhv7L0r3Xp6HROSUWSxSTKgvqWysXRVNkazpaGk+XUYJeVy/YXk8UDVnkwm99TkqzQea2j7VYqmcshijQmedl1257hjrN680gShaagi5PFPHCqCwmNDvfnk9mclR1O7taFTxfQWXl0P+fKHWrlMvnd6HfEBT6mMrmc7llPn7W7wDas7V1LKJDJl7KFvIbrcnfMSUCPJHOZcjlTXcyTiEktuShVGB4pAieAIv/5FLavWz1drIvye/KF/XkrsW1b51K7Gdqo1RLpQn9m4RSwHR5QytoDubW/nESnpa2dm/uswWQ+DSyC99piZoKfA9ozCajXrzePfs+mrVSxMGIVM3tHgRKeAZQq5ApF/M0DYbkRbKBRtMluyqQ0CMjKJ0jOZKMerQ2cGS0SaUpbhQHBnVJm9zBIFYqWTJWROnCwBGqVI6pGrZDFe4YgkPCBDBJe07t9WUfn9EBbJvHDWEuikCjcsqW7kE4yTzH3jibzZcLrYaI+ZTSL1Vqp8vBIIY8USqqPR8nWAasvlcx3CYgTKMN+X7ZYHkXpk0RlrWSK6I0Ocso6gDoWiiV1oeRKXuUCpXYe/pzJ/yXvSUC0f3W5ETiQ2U/0z132SeEmVrHk9L5DyjVdQTdhPO4vgGD2aqw8KeC1DvCawsiBYnb3YNlqW7PQ6jznnM5Fizs6l1s7BjNEqoZGMrsXIWZ/wdpWLAyBLllAScTOH7AK5UFKoW+4UCBiJn1cQUieZPKFPEhXPp0spivtW0wChUpqc3IsOzw67IoiBCydHdbjmOmiNZIdy+RKKjGC2CmKmrdoVioNZIpFIguFgpSnhE5H+pnpQdENLsi1IAwcgIGVSRKZygBhmEBzy7WihXIFpj4TAraOZPKTBuzLEP6gH0ZGy+KJtNMWygBfwTVngpi+t4Y149C3tU/3WGX8pgaTRVCAYiZV2J0H7riQ3ertLhH28P92K1kqjQ5TMu9d07+mqN7jGQKgGOVigSeeYaGzoyOqVE53dWXGUpkRakNdZnuKlIkxnWHmhoL7MjmZ/R2EtcAl2EjN3aB637UVHV0a0T3rRZVsnrvEKiC7YScGIwN12f4s5mRKEWhWqlAMAcsn86o7m86fUdYTp2sAoTE4YdVXNbQ52VyyuFvSzdK8CrZpH1FJgu8vFHJqNeqLVhlJyuxTkC6y5++sJIJpPZfTDaSnBZkKKh2VA1smLbofXYtSqP5kKZvapT84xP0+2rnM87lksf6sQh1hX1Sft1VRnMJ+5IqxmVHbZQ7A50BGiPr+ZMkqDGfL5JcsM8oQzqHdkVImswctxCOCRo4HsZEWcHjK0J7hkTIaxUF5ta16HpkuzEF+lS6MArtU95odKFtmYCCbyhJCFxAVcBjLuzOVuZDpvxvN0PdAFYwMAnMmNTRfJjnMmI7plvgioTTM0zGZAuKO0Z8qZkFPKMiYkVH1oLRb7Q/pjX5BEj2KOH+VzhAXOdnk2o8mdHOaOhFpGhk6I8mU7c0RXb77Ctm0Wp1M7SFMLpUJzT3jSPVSs6GpKLX+XCG1R5hBVMwL14eSHQBdqLDMKAwlmi1VT9T2DKeJqYuzZlQiaKYEgPTShymALkaePM0RJyTYpDGrWBh2ezqAPZMBujwdxnxJejpXYZhHNSvHTGMxsy8rYwc9j45sTZ+Ncqcn67yBwmi+aoWDnsPoSjIOb+/b0ZqusCBraZQ6ixCQsPLgecTkD2ZotuXXCnNyXqvUY41DwVvTxL8MjrWm91l7KdhGeqyRdhNDnN2XqZCCktVHaVh9GfqbGOS/OUmVQ9olqF3C2p3A6izTKYqaTJ1EjqAeTLRLqWIWDcULWcsVzR2YdIXr5deFO9B46cyYy2v9RC8s0hyvHfZEX833dfEsN5wck+wxFktZdAuq5BQdHVwiWphPCcVPuWrtITSthHkg2F5ir3nqLjf1pzyrV2xplShXr6dogkZ8YjZ5DAFowsKXeWxw3inBRYDolZ9n9Mm6FgX2gvJixbOI6bILzIUcyCV3l7g4S8f0o12zRYXiMLcZ1liFESJjqM/EmS5PcoMy5Wzzqxybl8rpUWFaR3PlLIiGNQrRAwbD3olUg+utF1FcYunGSkE4PRcCDWcwkx+wRjAXO2F6okWXEnNg+/JIdq3M3PXn4dwO+gOkKBMCjlEDIlJrLt2aUn0uLHUWzVwmTJI0mXLfCDPSzW/O5FNhtqhP0Erg0njS2dyz2QEjzs01aAj3BBHLWbBgBI02HS0zck1sNIyyovBAqUKyWBLcBfeQIe5VYk/LP1LuWmQDpl9tlamBofYzfWWe1Fq0aJE9w6azJcwaNN1coEnwVFP+VLEyw9KcmXxXl3Thrn3ZzP6VvPw8f8pg7zJ1ajjwaieRyLRQvMacJhESxu2avgjThlMCnctOkML0APYCeNokpgegJJYsPkES0wPQEuMkGlvAmFl1c7bVAFMixskAERN9EkWZHkyYy/PVsn7LWrx80eZkcRFWvCtUW340l1uoeVgeSLISbevessnLOi3EeCuNOrOFJlFtKZK4tiK0tRRVPWPZAUW/p09X6oYWpQ6fpdTIyEjW9tu0QDnh5F45S1zfTKVujSuVDCi1Eu4n9Up9H37n4rkX/t+JKXU6nl1wL9Yq9dUZSl2L53LAzGlSanOjUg/C3R1R6g16wu/1oFLX4/tBwA3UKfVWWKmtiJfEcyWetyB8IZ6z4O6do9SF2JI6Dy4L+OOmUjfOUuopwN4DuAjKdBr8XkI6/w73FNK/C3nvRPks5HEl/C5C2V6Guwx+D+N5BeJ8H+muQfhbcKdHldoP1xqjazeV2oD3DPK4E+k+hvj3wo3j+wC+fQi/BXDnoyxtKFMT3F2AvxXpnQGY3cj/0RqlDsENUFpwK+G3OqTUijDpuiv1BMoxQPVBOT8A/3G42+F3K57HULbvIc44yvU83DHk9Rra4deA/wXyeQ3Ps9GOD1H7I/x2vF8F9y2U7adwbcj310hnCM8U4tYivzfw3oC8RpHOPUj/DvgdR/zrkdYcPB/A822Eb0H8TQibiXjbUGeYFODfKqR3+fnyfg3SOP5DlXhihfmUf7zjldijK982ji75bf0/XnD88lX3jly36YEPf3TNfaU/3frgZdaz8cfbX5r/zOnPz3jqXS+f9tNDH7xh2z25295/Z+pTfX9b+Nyu8CMr3gx8c+lr5j+c+1bNt5f/7pr1R8au6r6//Mcbv/6hj6/76v62Y7N/sOCFpqfP+pd5Pz7jl6f88+HBgzvvSt+046/2/Nn/+PzuWy72P7T4N3WPnf+/fd/ofLX2e+f9+5Wrv1S8fsv/vPSKxBf3/snmv/9Iy88anzz716f+pPm5hicW/es7/tcd/Z/c/jf5P/+j25M3XvjXw5/9QPS7Xb8PfWvZG5HvnPNvwYff/fq1G752ydVrv7LvE71/d+BjPV8ePfPFuT965y9m/dPCX835YevPZ37/C0Ofed9fDtz8nruzt773LzKfvsiP9jDgfNI06rj+ud/tb/r5tXPHcX8zLC7DNrvtmL6qlHwa0nZ2itXfktLlK8132DH9VSkJZOLwSnO+TxfBr4tkf0sij6+sFMeoSoS+Axo6MI2TlA6dZ37GF/WHVaguEIv4TCNYW1OvVj2883N9qzeqVb2L72w53PDwzuYPvV3qH3x454M9Zselsz/X93YpMbyj/3N99yUSixpPWb2xf3BH/6U7V29sPvdrbUebquP3Ln6w575E87m9i688Y/m8Z2vvbDE7Eou+1nZny/J5DzZeHznccOnsxlOONh1ueLb2+shPAzSiffxTiSfPN99l+OyfboyK8qP0l88w/AEjGAxQ1I/AuOwF5h0wrWAomAVobO5MhGZcmKxp2du0+Iobbw+fvvqL35i5/YlXFizpL14Zic46Zfacua3vPKNt4ZlL371s+YpzutZ096xdt753Q9+Oi95z8c73vi+FNenuwexQqTy6b//YgUs+etXHrv74NZ+49pOfuunTN99y8NbP3HHnXX/xl58/fPcXvnTf/V/+yleP/N3XHjr6zYe/9e1HvvPdJ596+vv/9M8/+OGPnvvZ8y/8/Be/PParF1/9zW9fe/2N3735b79XiYdg56seaomBgBGooeL7/PtV4jn43k7lbwgEmztDjYkLa5J7Z7QsviLctPrG27/4jcjpS7a/MrO/+ER01oKlz7W+SjXgCpxc+a/8gyrglN9V/JseUuZjEeoVUCgFKq4iruEDykiKC2q2orv7QNbgQBWVqTEQFFWBqilQLzUXrhmuDa4DbiEcZkQ1Dw6UWhHVA8VToJoKVFCBMqr5cJgV1ZlwnXAr4M6BWwyHWVLR7PkOOMwAChRVnQJ3KlwrXDvcEsWWTNS5cEvhsMur3gl3GtwZcGfDvRtuJdx5cMvg3gW3HI4o7wX/BW5LX3nJrl2LOxe7GaLe1Ja+XZ2dxOjswhIjWy71pnp64HcOCe0gry4UyaOnB1MEKoJ95CnSGZyQzmB1OoOVdA5Omc7+Censr05nfyWdZ6dMp7s0IaHuUnVK5ENJcVptp0+ZVnZiWtkJaWVdaZUprc6OCtO3BCsiXebx6rDOThdDSK0tcM9MD5e04QILpoUbtOHap4cr2XA7pocr23Afnh4ua8PdNT3ckA336PRwORvutenhhm24+a3Two3ZcN3Twx2w4XLTww3YcDdND5e24R5oVYlX/gHXX8wBmZozh0gW0ylN2pRp8w1zVDSKcCNag7k5YoLGRUImhYcoDsVMfONRnHyrq0Qwa8m7lghkpI4TrCNilngLcL6YSnz8e8qcScSQKaKKxDhejP4nvowwXxxpEgwRs0A9w8QZJk7/Ey8TTCPSw/NUIrxMfVWkkWEa+T/R2blz56rElx5TZp39peuXeB6eviakhOdMIpdMM1WkiQGa6H/is/8ImFkqcTeeZxAZZlqsIrMYZhb/7+hcvEQm08Rqmo1waIRifVQlbntcmWGHB0s8i8/bo5gwxjFhjGNSGA8K6z0OQj8eFpZ7HBPJONp2HE0xjuYbJ9Yf1R9HtcdRxXHUaxxNNo4Cjs+UZcE4Cj6OThlHb4yjguOYSMYxYYxjQhjHJDAOIj+O8t6Hyeso8j+K/I8i/6PI/yjyP4r8jyL/o8j/KPI/ivyPIv+jyP8p5H8U+R9Fz3wdR9AQP4b4McSP/biazzypX4Wj0R5yqiPe0DijaSYzKPPmv+PU06zmltNPLvy/+Yf6BGqMkB446onyn6uLP/v3Z14+sr3++PHzzyDGIA13DI0ex0x76GqfWrW6Xl1+80Glnns9OFtPvHvh9iC5x946fvyTDx4/jgG8a1dqbCzZn93XCbnIrtJgdngXqZnsggpVgei8WolZ/BpwBO2LeMC74JfjPYc9Om8Egj8C+HvOnAR+hERoE+GPTQp/DuALvEPojkHws8GNxM6StrgOz4/heTXcx2ntBvcJVZXWYsx3A9hESPL2Za46vfRZkv8+xNuG94Nw/fr9LriUfr8XblC/PwCX1O+PwJX0+9NwZf3+LFxWv78EN6Tf34TL6fcAiOSwfo/jfUy/z8f7Af3ehvcB/b60Xfqa3le1V9cT76XsZN3C9dxEEy7q2Vc+p7LHrH/3I+wjeF4L98eKYDo7c4Xd4A9k+5zi3wWY9y8S+GMa/roK/GLZgNURdJ5Pt0va9KO8qa/+xNVX18P9KdwNcDdyOuc4BVea0Ziv8yy3S/xPVsX/FNxNcJ/W8Jfr/KisN+N5CxxGgroV7jNwf6YS1/xYmZHxJbIACoKO4tt3uUrcj2f0CvhdCXfXEhx7owAsIp/5sYfQHnoG3lf9Bw==","base64"))),e={noInitialRun:!0,print:()=>{return},printErr:()=>{return},instantiateWasm:(n,r)=>{let i=new WebAssembly.Instance(t,n);return r(i),i.exports}};if(Ww(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return $d=e,e}function Kw(t,e){let n=kd(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=rP().decode(t,!0)}catch{r=null}if(!r)throw Error("not a JPEG image this decoder can read");return{width:r.width,height:r.height,data:new Uint8Array(r.data.buffer,r.data.byteOffset,r.data.length)}}var Fo=[137,80,78,71,13,10,26,10],Dw=13,Jw=3;function Oi(t){return t.length>=Fo.length&&Fo.every((e,n)=>t[n]===e)}var Yw={0:1,2:3,4:2,6:4};function aP(t){if(t.length<33||!Oi(t))return;let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength),n=e.readUInt32BE(16),r=e.readUInt32BE(20),i=e[25];if(e[24]!==8||e[28]!==0||Yw[i]===void 0)return;let o=[];for(let s=8;s+12<=e.length;){let a=e.readUInt32BE(s),c=e.toString("latin1",s+4,s+8);if(c==="IDAT")o.push(e.subarray(s+8,s+8+a));else if(c==="tRNS"||c==="IEND"){if(c==="tRNS"&&i!==4&&i!==6)return;break}s+=12+a}return o.length>0?{width:n,height:r,type:i,idat:o}:void 0}function cP(t,e,n,r){let i=new Uint8Array(e);for(let o=0;o<n;o++){let s=o*(e+1),a=t[s],c=s+1,u=o>0?t:i,f=o>0?c-e-1:0;if(a===1)for(let l=r;l<e;l++)t[c+l]=t[c+l]+t[c+l-r];else if(a===2)for(let l=0;l<e;l++)t[c+l]=t[c+l]+u[f+l];else if(a===3){for(let l=0;l<r;l++)t[c+l]=t[c+l]+(u[f+l]>>1);for(let l=r;l<e;l++)t[c+l]=t[c+l]+(t[c+l-r]+u[f+l]>>1)}else if(a===4){for(let l=0;l<r;l++)t[c+l]=t[c+l]+u[f+l];for(let l=r;l<e;l++){let d=t[c+l-r],h=u[f+l],m=u[f+l-r],p=Math.abs(h-m),b=Math.abs(d-m),$=Math.abs(d+h-2*m);t[c+l]=t[c+l]+(p<=b&&p<=$?d:b<=$?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function uP(t){let{width:e,height:n,type:r}=t,i=Yw[r],o=e*i,s=sP(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(o+1)))});if(s.length<n*(o+1))throw Error("truncated PNG");cP(s,o,n,i);let a=new Uint8Array(e*n*4);for(let c=0;c<n;c++){let u=c*(o+1)+1,f=c*e*4;if(r===6)a.set(s.subarray(u,u+o),f);else if(r===2)for(let l=0,d=u,h=f;l<e;l++,d+=3,h+=4)a[h]=s[d],a[h+1]=s[d+1],a[h+2]=s[d+2],a[h+3]=255;else if(r===0)for(let l=0,d=f;l<e;l++,d+=4){let h=s[u+l];a[d]=h,a[d+1]=h,a[d+2]=h,a[d+3]=255}else for(let l=0,d=u,h=f;l<e;l++,d+=2,h+=4){let m=s[d];a[h]=m,a[h+1]=m,a[h+2]=m,a[h+3]=s[d+1]}}return{width:e,height:n,data:a}}function Gt(t){let e=aP(t);if(e)return uP(e);let n=qw.PNG.sync.read(Buffer.from(t));return{width:n.width,height:n.height,data:new Uint8Array(n.data)}}function Ar(t,e){if(Oi(t)){let n=vn(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return Gt(t)}if(t[0]===255&&t[1]===216)return Kw(t,e);throw Error("not a PNG or JPEG image")}function Zw(t,e){let{width:n,height:r,at:i}=e,o=Math.max(0,i.x),s=Math.max(0,i.y),a=Math.min(n,i.x+i.w),c=Math.min(r,i.y+i.h);if(a<=o||c<=s)return;let u={x:o,y:s,w:a-o,h:c-s};if(i.w===t.width&&i.h===t.height)return{part:t,box:u,dx:o-i.x,dy:s-i.y};let f={x:(o-i.x)*t.width/i.w,y:(s-i.y)*t.height/i.h,w:u.w*t.width/i.w,h:u.h*t.height/i.h};return{part:Vs(t,f,u.w,u.h),box:u,dx:0,dy:0}}function Vw(t,e){let n=new Uint8Array(e.width*e.height*4),r=Zw(t,e);if(r){let{part:i,box:o,dx:s,dy:a}=r;for(let c=0;c<o.h;c++){let u=((c+a)*i.width+s)*4;n.set(i.data.subarray(u,u+o.w*4),((o.y+c)*e.width+o.x)*4)}}return{width:e.width,height:e.height,data:n}}function Nr(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=st(e),{width:o,height:s}=r,a=new Uint8Array(o*s*3);for(let h=0;h<o*3;h+=3)a.set(i,h);for(let h=1;h<s;h++)a.copyWithin(h*o*3,0,o*3);let c=Zw(t,r);if(!c)return{width:o,height:s,data:a};let{part:u,box:f,dx:l,dy:d}=c;for(let h=0;h<f.h;h++)for(let m=0;m<f.w;m++){let p=((h+d)*u.width+m+l)*4,b=((f.y+h)*o+f.x+m)*3,$=u.data[p+3]/255*n;for(let k=0;k<3;k++)a[b+k]=Math.round(i[k]*(1-$)+u.data[p+k]*$)}return{width:o,height:s,data:a}}function zw(t,e){for(let n=0;n+e.length<=t.length;n++){let r=!0;for(let i=0;i<e.length&&r;i++)r=t[n+i]===e.charCodeAt(i);if(r)return n}return-1}function vn(t){if(t.length<33||!Oi(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=e.getUint32(16),r=e.getUint32(20);if(t[25]===4||t[25]===6)return{width:n,height:r,alpha:!0};let i=zw(t,"IDAT");return{width:n,height:r,alpha:zw(i===-1?t:t.subarray(0,i),"tRNS")!==-1}}function Xw(t,e=Dw){let{width:n,height:r,data:i}=t,o=(f)=>{for(let l=f*n*4+3,d=l+n*4;l<d;l+=4)if(i[l]>=e)return!0;return!1},s=0;while(s<r&&!o(s))s++;if(s===r)return null;let a=r-1;while(!o(a))a--;let c=n,u=-1;for(let f=s;f<=a;f++){let l=f*n*4+3;for(let d=0;d<c;d++)if(i[l+d*4]>=e){c=d;break}for(let d=n-1;d>u;d--)if(i[l+d*4]>=e){u=d;break}}return{x:c,y:s,w:u-c+1,h:a-s+1}}function Yn(t,e={x:0,y:0,w:t.width,h:t.height}){let n=0;for(let r=e.y;r<e.y+e.h;r++)for(let i=e.x;i<e.x+e.w;i++)if((t.data[(r*t.width+i)*4+3]??0)<Dw)n++;return Math.round(n*100/(e.w*e.h))}function Qw(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),o=Math.max(1,Math.round(t.height*r)),s=Vs(t,{x:0,y:0,w:t.width,h:t.height},i,o),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-o)/2);for(let f=0;f<o;f++)a.set(s.data.subarray(f*i*4,(f+1)*i*4),((u+f)*e+c)*4);return{width:e,height:n,data:a}}function lP(t){let e=Math.abs(t);if(e<1)return(7*e*e*e-12*e*e+5.333333333333333)/6;if(e<2)return(-2.3333333333333335*e*e*e+12*e*e-20*e+10.666666666666666)/6;return 0}function yd(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(f,l)=>e+l),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,o=Math.max(1,i),s=2*o,a=Math.min(t,Math.ceil(2*s)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let f=0;f<r;f++){let l=e+(f+0.5)*i,d=Math.floor(l-s-0.5),h=Math.max(0,Math.min(t-a,d));c[f]=h;let m=0;for(let p=d;p<=Math.ceil(l+s-0.5);p++){let b=lP((p+0.5-l)/o),$=f*a+Math.min(t-1,Math.max(0,p))-h;u[$]=(u[$]??0)+b,m+=b}for(let p=f*a;p<(f+1)*a;p++)u[p]=(u[p]??0)/m}return{first:c,size:a,weights:u}}function t0(t,e,n,r,i,o,s){let a=yd(t,e.y,e.h,r),c=n*i,u=a.size+1,f=Array.from({length:u},()=>new Float32Array(c)),l=new Int32Array(u).fill(-1),d=new Float32Array(c),h=[],m=[];for(let p=0;p<r;p++){h.length=0,m.length=0;let b=a.first[p];for(let k=0;k<a.size;k++){let v=a.weights[p*a.size+k];if(v===0)continue;let E=b+k,x=E%u,M=f[x];if(l[x]!==E)o(E,M),l[x]=E;h.push(M),m.push(v)}let $=0;while($<h.length){let k=h[$],v=m[$];if(h.length-$>=4){let E=h[$+1],x=h[$+2],M=h[$+3],R=m[$+1],F=m[$+2],N=m[$+3];if($===0)for(let j=0;j<c;j++)d[j]=k[j]*v+E[j]*R+x[j]*F+M[j]*N;else for(let j=0;j<c;j++)d[j]=d[j]+(k[j]*v+E[j]*R+x[j]*F+M[j]*N);$+=4}else{if($===0)for(let E=0;E<c;E++)d[E]=k[E]*v;else for(let E=0;E<c;E++)d[E]=d[E]+k[E]*v;$+=1}}if(h.length===0)d.fill(0);s(p,d)}}function e0(t,e,n,r,i){let o=0,s=n;while(o<s){let c=o+s>>1;if(t[c]+e-1<r)o=c+1;else s=c}let a=o;s=n;while(o<s){let c=o+s>>1;if(t[c]<=i)o=c+1;else s=c}return[a,o]}function Vs(t,e,n,r){let i=yd(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(s*4),c=new Uint8Array(n*r*4);return t0(t.height,e,n,r,4,(u,f)=>{let l=u*s*4,d=s,h=-1;for(let b=0,$=0;b<s*4;b+=4,$++){let k=o[l+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if($<d)d=$;h=$,a[b]=o[l+b]*k,a[b+1]=o[l+b+1]*k,a[b+2]=o[l+b+2]*k,a[b+3]=k}if(f.fill(0),h<0)return;let[m,p]=e0(i.first,i.size,n,d,h);for(let b=m;b<p;b++){let $=i.first[b]*4,k=b*i.size,v=0,E=0,x=0,M=0;for(let R=0;R<i.size;R++){let F=i.weights[k+R],N=$+R*4;v+=a[N]*F,E+=a[N+1]*F,x+=a[N+2]*F,M+=a[N+3]*F}f[b*4]=v,f[b*4+1]=E,f[b*4+2]=x,f[b*4+3]=M}},(u,f)=>{let l=u*n*4;for(let d=0;d<n;d++){let h=d*4,m=f[h+3];if(m<=0)continue;let p=f[h]/m;c[l+h]=(p<0?0:p>255?255:p)+0.5,p=f[h+1]/m,c[l+h+1]=(p<0?0:p>255?255:p)+0.5,p=f[h+2]/m,c[l+h+2]=(p<0?0:p>255?255:p)+0.5,c[l+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function n0(t,e,n,r){let i=yd(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(n*r);return t0(t.height,e,n,r,1,(c,u)=>{let f=c*s,l=s,d=-1;for(let p=0;p<s;p++)if(o[f+p]!==0){if(p<l)l=p;d=p}if(u.fill(0),d<0)return;let[h,m]=e0(i.first,i.size,n,l,d);for(let p=h;p<m;p++){let b=f+i.first[p],$=p*i.size,k=0;for(let v=0;v<i.size;v++)k+=o[b+v]*i.weights[$+v];u[p]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function Xs(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(f,l)=>Math.exp(-((l-n)**2)/(2*e*e))),i=r.reduce((f,l)=>f+l,0),{width:o,height:s,data:a}=t,c=new Float32Array(o*s);for(let f=0;f<s;f++){let l=f*o;for(let d=0;d<o;d++){let h=0;for(let m=-n;m<=n;m++)h+=(a[l+Math.min(o-1,Math.max(0,d+m))]??0)*(r[m+n]??0);c[l+d]=h/i}}let u=new Float32Array(o*s);for(let f=0;f<s;f++){let l=f*o;for(let d=-n;d<=n;d++){let h=(r[d+n]??0)/i,m=Math.min(s-1,Math.max(0,f+d))*o;for(let p=0;p<o;p++)u[l+p]=(u[l+p]??0)+(c[m+p]??0)*h}}return{width:o,height:s,data:u}}function Qs(t){let e=new Uint8Array(t.data.length);for(let n=0;n<e.length;n++){let r=t.data[n];e[n]=(r<0?0:r>255?255:r)+0.5}return{width:t.width,height:t.height,data:e}}function Ii(t){let e=new Uint8Array(t.width*t.height);for(let n=0;n<e.length;n++)e[n]=t.data[n*4+3]??0;return{width:t.width,height:t.height,data:e}}var fP=Array.from({length:256},(t,e)=>{let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;return n>>>0});function dP(t){let e=4294967295;for(let n of t)e=(fP[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function Pr(t,e){let n=Buffer.alloc(12+e.length);return n.writeUInt32BE(e.length,0),n.write(t,4,"latin1"),n.set(e,8),n.writeUInt32BE(dP(n.subarray(4,8+e.length)),8+e.length),n}function r0(t,e,n){let r=new Uint8Array(n*(e+1));r.set(t.subarray(0,e),1);for(let i=1;i<n;i++){let o=i*(e+1),s=i*e,a=s-e;r[o]=2;for(let c=0;c<e;c++)r[o+1+c]=t[s+c]-t[a+c]}return r}function i0(t){return oP(t,{level:1,strategy:iP.Z_RLE})}function o0(t,e,n){let r=Buffer.alloc(13);return r.writeUInt32BE(t.width,0),r.writeUInt32BE(t.height,4),r[8]=8,r[9]=e,Buffer.concat([Buffer.from(Fo),Pr("IHDR",r),...n,Pr("IDAT",i0(r0(t.data,t.width,t.height))),Pr("IEND",new Uint8Array)])}function s0(t){let[e,n,r]=st(t),i=new Uint8Array(768);for(let o=0;o<256;o++)i.set([e,n,r],o*3);return Pr("PLTE",i)}function a0(t,e,n,r,i){let o=Buffer.alloc(13);return o.writeUInt32BE(t,0),o.writeUInt32BE(e,4),o[8]=8,o[9]=n,Buffer.concat([Buffer.from(Fo),Pr("IHDR",o),Pr("IDAT",i0(r0(i,t*r,e))),Pr("IEND",new Uint8Array)])}function Tr(t){return a0(t.width,t.height,2,3,t.data)}function We(t){return a0(t.width,t.height,6,4,t.data)}function Ri(t,e){return o0(t,Jw,[s0(e),Pr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function vd(t){return o0(t,0,[])}function Kc(t,e){if(!Oi(t)||t[25]!==Jw)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from(Fo)],i=Fo.length;while(i+8<=n.length){let o=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?s0(e):n.subarray(i,o)),i=o}return Buffer.concat(r)}var Hr=100,Re=25000000,$P=536870912,Lo=["safe","questionable","explicit"],Pi=["nudity","underwear"],xd=["comic","monochrome","sketch","chibi"],g0=["off","5","10","25","50","100"],b0=["off","720","1080","1440","1800","2560"],w0={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},kP={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},yP=/^(?:rating|score|width|height|filetype|dimension):/,ta={safe:"s",questionable:"q",explicit:"e"},$0=8191,vP=20000,EP=5000,c0=3000,u0=8,SP=8,MP=8000,xP=3000,k0=60000,l0=3,OP=3,IP="https://static.zerochan.net",y0="https://s1.zerochan.net",Od=`ttheme/${ft.version} (+${ft.homepage})`,RP=["orig","tile","thumb","cut"],v0=new Map,PP=DP(process.env.TTHEME_FIND_HOSTS),AP=qP(process.env.TTHEME_FIND_CUTOUTS);gP(xP);var NP=["artist","character","copyright"];function f0(t){try{return hP(t)}catch{return[]}}function Co(t){return t.startsWith("//")?`https:${t}`:t}function Lr(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function na(t){let e=t.trim();if(!e)return[];let n=JSON.parse(e);if(Array.isArray(n))return n;let r=n.posts;return Array.isArray(r)?r:[]}function TP(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,o])=>[i,String(o)]))}function Sd(t,e,n){let r=Co(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:Lr(r)}}function Zn(t){return String(t??"").split(/\s+/).filter(Boolean)}function Md(t){let e=typeof t==="number"?new Date(t*1000):typeof t==="string"?new Date(t):void 0;return e&&!Number.isNaN(e.getTime())?e.toISOString().slice(0,10):void 0}function E0(t,e){let n=Co(String(e.preview??""));if(!e.file||!n||!Number(t.id))return[];let r=Number(t.width??t.image_width)||0,i=Number(t.height??t.image_height)||0;return[{id:Number(t.id),width:r,height:i,file:e.file,preview:n,ext:e.ext,owner:String(e.owner??""),score:Number(t.score)||0,rating:String(t.rating??""),md5:String(e.md5??""),source:String(t.source??""),tags:Zn(e.tags),named:e.named,...Md(t.created_at)?{posted:Md(t.created_at)}:{},solo:e.solo,family:Number(t.parent_id)||(t.has_children===!0?Number(t.id):0),smaller:e.versions.filter((o)=>o.file&&o.width>0&&o.height>0&&o.width*o.height<r*i)}]}function HP(t){let e=TP(t);return na(t).flatMap((n)=>{let r=Co(String(n.file_url??"")),i=String(n.tags??""),o=(s)=>Zn(i).filter((a)=>e.get(a)===s);return E0(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||Lr(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:o("artist"),character:o("character"),copyright:o("copyright")},solo:void 0,versions:[Sd(n.jpeg_url,n.jpeg_width,n.jpeg_height),Sd(n.sample_url,n.sample_width,n.sample_height)]})})}function FP(t){return na(t).flatMap((e)=>{let n=Co(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return E0(e,{preview:i.variants?.find((o)=>o.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||Lr(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:Zn(e.tag_string_artist),character:Zn(e.tag_string_character),copyright:Zn(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((o)=>Sd(o.url,o.width,o.height)).filter((o)=>o.ext==="jpg"||o.ext==="png").sort((o,s)=>s.width*s.height-o.width*o.height)})})}function S0(t){return t.toLowerCase().replace(/\s+/g,"_")}function LP(t){return(Array.isArray(t)?t:[]).map((e)=>S0(String(e)))}function CP(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function jP(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let o=Number(i.id);if(!o)return[];let s=LP(i.tags),a=Co(String(i.full??""));return[{id:o,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:Lr(a),preview:`${y0}/${CP(i.tag??i.primary)}.600.${o}.jpg`,owner:"",score:0,rating:s.some((c)=>w0.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:s,named:{artist:[],character:[],copyright:[]},solo:s.includes("solo"),family:0,smaller:[]}]})}var _P={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function d0(t){return t.replace(/&(?:#(\d+)|amp|quot|apos|lt|gt);/g,(e,n)=>n?String.fromCharCode(Number(n)):{"&amp;":"&","&quot;":'"',"&apos;":"'","&lt;":"<","&gt;":">"}[e]??e)}function GP(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let o=_P[r],s=S0(d0(i));if(o&&!e[o].includes(s))e[o].push(s)}let n=Md(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:d0(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function BP(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function UP(t){return na(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function WP(t){return na(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function KP(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function zP(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function qP(t){let e=new Map;for(let n of(t??"").split(/\s+/).filter(Boolean)){let r=n.indexOf("=");if(r>0)e.set(n.slice(0,r),n.slice(r+1).split(",").filter(Boolean))}return e}function DP(t){let e=new Map;for(let n of(t??"").split(/[\s,]+/).filter(Boolean)){let r=n.indexOf("="),i=n.slice(0,r);try{let o=new URL(n.slice(r+1));if(i&&o.protocol==="https:")e.set(i,o.origin)}catch{}}return e}function zc(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let o=e.filter((s)=>i.includes(s));return o.length>0?o:[...n]}function Ai(t){return zc(t,Lo,["safe"])}function jo(t){return zc(t,Pi,Pi,"none")}function qc(t){return zc(t,xd,[],"none")}function ra(t){let e=V.map((n)=>n.name);return zc(t,e,e)}function Id(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function ia(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function Rd(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function Pd(t){let e=PP.get(t.key),n=AP.get(t.key);return{...t,origin:e??t.origin,moved:e!==void 0&&e!==t.origin,cutouts:n??t.cutouts,vouched:t.vouched&&n===void 0}}function M0(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function x0(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function h0(t){let e=Pd(t),n=(r)=>new URLSearchParams({api_version:"2",include_tags:"1",...r});return{...e,scored:!0,narrow:({score:r,size:i})=>[...r>0?[`score:>=${r}`]:[],...x0(i)],cutouts:M0(e.cutouts),ratings:Rd([ta.safe],[ta.questionable],[ta.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${ta[i]}`;let o=Lo.filter((a)=>!r.includes(a)),[s]=o;return o.length===1&&s?`-rating:${ta[s]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(Hr),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/post.xml?${new URLSearchParams({limit:"1",tags:r})}`,postUrl:(r)=>`${e.origin}/post.json?${n({tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/post/show/${r}`,parse:HP,count:KP,uploadedBy:(r)=>`user:${r}`}}function JP(t){let e=Pd(t),n=Rd(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:o})=>[...r>0?[`score:>=${r}`]:[],...x0(i),...o?["filetype:png"]:[]],cutouts:M0(e.cutouts),ratings:n,rate:(r)=>r.length===Lo.length?"":`rating:${r.flatMap((i)=>[...n[i]]).join(",")}`,best:"order:score",tagBudget:2,ors:!0,postsUrl:(r,i)=>`${e.origin}/posts.json?${new URLSearchParams({limit:String(Hr),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/counts/posts.json?${new URLSearchParams({tags:r})}`,postUrl:(r)=>`${e.origin}/posts.json?${new URLSearchParams({limit:"1",tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/posts/${r}`,parse:FP,count:zP,uploadedBy:(r)=>`user:${r}`}}function Ed(t){return t.split(/\s+/).filter((e)=>e&&!/^(?:order|dimension):/.test(e)).map((e)=>e.split("_").map(encodeURIComponent).join("+")).join(",")}function m0(t){let e=t.split(/\s+/),n=e.find((r)=>r.startsWith("dimension:"))?.slice(10);return{s:e.includes("order:fav")?"fav":"id",...n?{d:n}:{}}}function YP(t){let e=Pd(t);return{...e,scored:!1,narrow:({size:n})=>n>=1800?["dimension:huge"]:n>0?["dimension:large"]:[],cutouts:e.cutouts[0]??"",ratings:Rd(["g"],["q"],["e"]),rate:()=>"",best:"order:fav",tagBudget:3,ors:!1,missing:404,postsUrl:(n,r)=>`${e.origin}/${Ed(n)}?${new URLSearchParams({json:"",l:String(Hr),p:String(r+1),...m0(n)})}`,countUrl:(n)=>`${e.origin}/${Ed(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:jP,count:BP,credits:GP,counts:(n)=>Ed(n).split(",").length===1&&!("d"in m0(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(y0,IP).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function ZP(t){let e=p0(`https://${t}`);return V.find((n)=>p0(n.origin)===e)}function Ad(t){return t.split(/\s+/).filter((e)=>e&&!yP.test(e)).length}function Dc(t,e){let n=t.trim();if(/^\d+$/.test(n))return{site:e,id:Number(n)};let r=/^([\w.]+):(\d+)$/.exec(n);if(r){let a=V.find((c)=>c.key===r[1]||c.name===r[1]);return a&&{site:a,id:Number(r[2])}}let i;try{i=new URL(n)}catch{return}let o=ZP(i.host),s=Number(i.searchParams.get("id")??i.pathname.split("/").filter(Boolean).at(-1));return o&&s>0?{site:o,id:s}:void 0}var V=[JP({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),h0({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),h0({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),YP({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],ce=V.find((t)=>t.key==="danbooru"),Cr=134217728;function Pe(t,e){let n=V.indexOf(t);return(n===-1?V.length:n)*Cr+e}function p0(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function Ni(t,e,n=e){return e.mirror&&n===e?{site:ce,url:e.mirror.file}:{site:t,url:n.file}}function Jc(t,e){return e.mirror?{site:ce,url:e.mirror.preview}:{site:t,url:e.preview}}function Yc(t,e=Pi){return t.tags.filter((n)=>e.some((r)=>w0[r].has(n)))}function O0(t,e){return t.tags.filter((n)=>e.some((r)=>kP[r].has(n)))}function Zc(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function I0(t,e){return t.rate(["safe"])===""?void 0:Lo.find((n)=>t.ratings[n].has(e.rating))}function En(t){return[t,...t.smaller].find((e)=>e.width*e.height<=Re)}function R0(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[o])=>i<o?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function jr(){return ea(process.env.XDG_CACHE_HOME??ea(bP(),".cache"),"ttheme")}function rn(t){return ea(jr(),t.key)}function P0(t=$P,e=jr()){let n=[],r=0;for(let i of f0(e))for(let o of RP){let s=ea(e,i,o);for(let a of f0(s)){let c=ea(s,a);try{let{size:u,mtimeMs:f}=pP(c);n.push({path:c,size:u,at:f}),r+=u}catch{}}}n.sort((i,o)=>i.at-o.at);for(let i of n){if(r<=t)return;try{mP(i.path,{force:!0}),r-=i.size}catch{}}}function VP(t,e){if(t!==null&&/^\s*\d+\s*$/.test(t))return Number(t)*1000;let n=t===null?Number.NaN:Date.parse(t);return Number.isNaN(n)?k0:Math.max(0,n-e)}function Vn(t){return v0.get(t.key)??0}function XP(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function QP(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function tA(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function Fr(t,e,n,r={},i=vP){let o=e;for(let s=1,a=0;;s++){let c=Vn(t)-Date.now();if(c>0)await wP(c,void 0,{signal:n});let u;try{u=await fetch(o,{headers:{"User-Agent":Od,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(l){if(s<l0&&!n.aborted&&XP(l))continue;throw l}let f=u.headers.get("location");if(f&&u.status>=300&&u.status<400&&a<OP){await u.body?.cancel(),o=tA(o,f),a++,s--;continue}if(u.status===429&&s<l0){await u.body?.cancel();let l=VP(u.headers.get("retry-after"),Date.now());if(l>k0)throw Error(`${t.name} asks to wait ${Math.ceil(l/1000)}s`);v0.set(t.key,Math.max(Vn(t),Date.now()+l));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(QP(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function Vc(t,e,n){try{return await(await Fr(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function A0(t,e,n,r){return t.parse(await Vc(t,t.postsUrl(e,n),r))}async function Nd(t,e,n){return t.count(await Vc(t,t.countUrl(e),n))}async function _o(t,e,n){let[r]=t.parse(await Vc(t,t.postUrl(e),n));return r}async function Xc(t,e,n){return t.credits?.(await Vc(t,t.pageUrl(e),n))}var eA=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,nA=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function oa(t){let e=eA.exec(t)?.[1]??nA.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function Qc(t,e){return t.credits!==void 0&&e.named.artist.length===0}function sa(t,e){for(let n of NP){let r=e.named?.[n]??[];if(t.named[n].length===0&&r.length>0)t.named[n]=r}if(t.source||=e.source??"",t.owner||=e.owner??"",!t.posted&&e.posted)t.posted=e.posted}function rA(t){let e=new URLSearchParams({limit:String(2*Hr),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${ce.origin}/posts.json?${e}`}function iA(t){return new Map(na(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:Zn(e.tag_string),named:{artist:Zn(e.tag_string_artist),character:Zn(e.tag_string_character),copyright:Zn(e.tag_string_copyright)},source:String(e.source??""),file:Co(String(e.file_url??""))}]]:[]}))}function tu(t,e){for(let n of t){let r=e.get(n.md5);if(!r)continue;if(n.tags=[...new Set([...n.tags,...r.tags])],sa(n,r),n.solo=r.tags.includes("solo"),r.file.includes("/original/")){if(n.mirror={file:r.file,preview:r.file.replace("/original/","/360x360/").replace(/\.[a-z0-9]+$/i,".jpg")},!n.file)n.file=r.file,n.ext=Lr(r.file)}}}async function eu(t,e){let n=new Map;if(Vn(ce)>Date.now())return n;for(let r=0;r<t.length;r+=Hr){let i=await(await Fr(ce,rA(t.slice(r,r+Hr)),e,{},EP)).text();for(let[o,s]of iA(i))n.set(o,s)}return n}async function aa(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await Fr(t,r,n,{Range:`bytes=0-${$0}`}),o=vn(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=Lr(r),o}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function N0(t,e){if(Vn(ce)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String(u0)}),o=`${ce.origin}/autocomplete.json?${i}`;return UP(await(await Fr(ce,o,e,{},c0)).text())}catch(i){if(e.aborted)throw i}let n=V.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String(u0)});return WP(await(await Fr(n,`${n.origin}/tag.json?${r}`,e,{},c0)).text())}function oA(t){try{return(JSON.parse(t).related_tags??[]).flatMap(({tag:n})=>n?.name?[{value:n.name,count:Number(n.post_count)||0}]:[])}catch{return[]}}async function T0(t,e){if(Vn(ce)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(SP)});return oA(await(await Fr(ce,`${ce.origin}/related_tag.json?${n}`,e,{},MP)).text())}function H0(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function F0(t,e,n){let r=await Fr(t,e,n,{Range:`bytes=0-${$0}`});return vn(new Uint8Array(await r.arrayBuffer()))}async function nu(t,e,n,r){let i=await Fr(t,e,n,{},0),o=Number(i.headers.get("content-length"))||0,s=i.body?.getReader();if(!s)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:l,value:d}=await s.read();if(l)break;a.push(d),c+=d.length,r?.(c,o)}let u=new Uint8Array(c),f=0;for(let l of a)u.set(l,f),f+=l.length;return u}var hA=12,mA=/^[0-9a-f]{40}$/;function Go(){return Bo(jr(),"drawn")}function L0(t){return sA("sha1").update(JSON.stringify(t)).digest("hex")}function C0(t){return aA(Bo(Go(),t))}function j0(t){let e=Bo(Go(),t);try{let n=uA(e),r=n.readUInt32BE(0),i=JSON.parse(n.toString("utf8",4,4+r)),o=n.subarray(4+r,4+r+i.figure),s=n.subarray(4+r+i.figure,4+r+i.figure+i.picture);if(o.length!==i.figure||s.length!==i.picture)return;let a=new Date;return dA(e,a,a),{stem:i.stem,fill:i.fill,...i.peak?{peak:i.peak}:{},figure:o,picture:s}}catch{return}}function Td(t,e){let n=Buffer.from(JSON.stringify({stem:e.stem,fill:e.fill,...e.peak?{peak:e.peak}:{},figure:e.figure.length,picture:e.picture.length})),r=Buffer.alloc(4);r.writeUInt32BE(n.length),L(Bo(Go(),t),Buffer.concat([r,n,e.figure,e.picture])),pA()}function pA(){let t=cA(Go()).filter((e)=>mA.test(e)).flatMap((e)=>{try{return[{name:e,at:fA(Bo(Go(),e)).mtimeMs}]}catch{return[]}}).sort((e,n)=>n.at-e.at);for(let{name:e}of t.slice(hA))lA(Bo(Go(),e),{force:!0})}import{readdirSync as vA,readFileSync as D0}from"node:fs";import{basename as EA,join as J0}from"node:path";/*!
2
+ import{createRequire as FP}from"node:module";var PP=Object.create;var{getPrototypeOf:IP,defineProperty:Ab,getOwnPropertyNames:RP}=Object;var AP=Object.prototype.hasOwnProperty;function NP(t){return this[t]}var TP,HP,nd=(t,e,n)=>{var r=t!=null&&typeof t==="object";if(r){var i=e?TP??=new WeakMap:HP??=new WeakMap,o=i.get(t);if(o)return o}n=t!=null?PP(IP(t)):{};let s=e||!t||!t.__esModule?Ab(n,"default",{value:t,enumerable:!0}):n;for(let a of RP(t))if(!AP.call(s,a))Ab(s,a,{get:NP.bind(t,a),enumerable:!0});if(r)i.set(t,s);return s};var Mt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Qt=FP(import.meta.url);var md=Mt((j_,aw)=>{var rI=Qt("util"),sw=Qt("stream"),rn=aw.exports=function(){sw.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};rI.inherits(rn,sw);rn.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){if(this._process(),this._paused&&this._reads&&this._reads.length>0)this._paused=!1,this.emit("drain")}.bind(this))};rn.prototype.write=function(t,e){if(!this.writable)return this.emit("error",Error("Stream not writable")),!1;let n;if(Buffer.isBuffer(t))n=t;else n=Buffer.from(t,e||this._encoding);if(this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0)this._paused=!0;return this.writable&&!this._paused};rn.prototype.end=function(t,e){if(t)this.write(t,e);if(this.writable=!1,!this._buffers)return;if(this._buffers.length===0)this._end();else this._buffers.push(null),this._process()};rn.prototype.destroySoon=rn.prototype.end;rn.prototype._end=function(){if(this._reads.length>0)this.emit("error",Error("Unexpected end of input"));this.destroy()};rn.prototype.destroy=function(){if(!this._buffers)return;this.writable=!1,this._reads=null,this._buffers=null,this.emit("close")};rn.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];if(e.length>t.length)this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length));else this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e)};rn.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);while(e<t.length){let i=this._buffers[n++],o=Math.min(i.length,t.length-e);if(i.copy(r,e,0,o),e+=o,o!==i.length)this._buffers[--n]=i.slice(o)}if(n>0)this._buffers.splice(0,n);this._buffered-=t.length,t.func.call(this,r)};rn.prototype._process=function(){try{while(this._buffered>0&&this._reads&&this._reads.length>0){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}if(this._buffers&&!this.writable)this._end()}catch(t){this.emit("error",t)}}});var pd=Mt((iI)=>{var Rr=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];iI.getImagePasses=function(t,e){let n=[],r=t%8,i=e%8,o=(t-r)/8,s=(e-i)/8;for(let a=0;a<Rr.length;a++){let c=Rr[a],u=o*c.x.length,f=s*c.y.length;for(let l=0;l<c.x.length;l++)if(c.x[l]<r)u++;else break;for(let l=0;l<c.y.length;l++)if(c.y[l]<i)f++;else break;if(u>0&&f>0)n.push({width:u,height:f,index:a})}return n};iI.getInterlaceIterator=function(t){return function(e,n,r){let i=e%Rr[r].x.length,o=(e-i)/Rr[r].x.length*8+Rr[r].x[i],s=n%Rr[r].y.length,a=(n-s)/Rr[r].y.length*8+Rr[r].y[s];return o*4+a*t*4}}});var gd=Mt((G_,cw)=>{cw.exports=function(e,n,r){let i=e+n-r,o=Math.abs(i-e),s=Math.abs(i-n),a=Math.abs(i-r);if(o<=s&&o<=a)return e;if(s<=a)return n;return r}});var bd=Mt((B_,lw)=>{var aI=pd(),cI=gd();function uw(t,e,n){let r=t*e;if(n!==8)r=Math.ceil(r/(8/n));return r}var Fo=lw.exports=function(t,e){let{width:n,height:r,interlace:i,bpp:o,depth:s}=t;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let a=aI.getImagePasses(n,r);for(let c=0;c<a.length;c++)this._images.push({byteWidth:uw(a[c].width,o,s),height:a[c].height,lineIndex:0})}else this._images.push({byteWidth:uw(n,o,s),height:r,lineIndex:0});if(s===8)this._xComparison=o;else if(s===16)this._xComparison=o*2;else this._xComparison=1};Fo.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};Fo.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,i=r-1;for(let o=0;o<n;o++){let s=t[1+o],a=o>i?e[o-r]:0;e[o]=s+a}};Fo.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let i=0;i<n;i++){let o=t[1+i],s=r?r[i]:0;e[i]=o+s}};Fo.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,f=Math.floor((u+c)/2);e[s]=a+f}};Fo.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,i=r-1,o=this._lastLine;for(let s=0;s<n;s++){let a=t[1+s],c=o?o[s]:0,u=s>i?e[s-r]:0,f=s>i&&o?o[s-r]:0,l=cI(u,c,f);e[s]=a+l}};Fo.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],i=r.byteWidth;if(e===0)n=t.slice(1,i+1);else switch(n=Buffer.alloc(i),e){case 1:this._unFilterType1(t,n,i);break;case 2:this._unFilterType2(t,n,i);break;case 3:this._unFilterType3(t,n,i);break;case 4:this._unFilterType4(t,n,i);break;default:throw Error("Unrecognised filter type - "+e)}if(this.write(n),r.lineIndex++,r.lineIndex>=r.height)this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex];else this._lastLine=n;if(r)this.read(r.byteWidth+1,this._reverseFilterLine.bind(this));else this._lastLine=null,this.complete()}});var hw=Mt((U_,dw)=>{var uI=Qt("util"),fw=md(),lI=bd(),fI=dw.exports=function(t){fw.call(this);let e=[],n=this;this._filter=new lI(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};uI.inherits(fI,fw)});var Lo=Mt((W_,mw)=>{mw.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var kd=Mt((K_,pw)=>{var wd=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)if(e&1)e=3988292384^e>>>1;else e=e>>>1;wd[t]=e}})();var $d=pw.exports=function(){this._crc=-1};$d.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=wd[(this._crc^t[e])&255]^this._crc>>>8;return!0};$d.prototype.crc32=function(){return this._crc^-1};$d.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=wd[(e^t[n])&255]^e>>>8;return e^-1}});var yd=Mt((z_,gw)=>{var Ct=Lo(),dI=kd(),Gt=gw.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[Ct.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[Ct.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[Ct.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[Ct.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[Ct.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[Ct.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};Gt.prototype.start=function(){this.read(Ct.PNG_SIGNATURE.length,this._parseSignature.bind(this))};Gt.prototype._parseSignature=function(t){let e=Ct.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};Gt.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let o=4;o<8;o++)r+=String.fromCharCode(t[o]);let i=Boolean(t[4]&32);if(!this._hasIHDR&&n!==Ct.TYPE_IHDR){this.error(Error("Expected IHDR on beggining"));return}if(this._crc=new dI,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!i){this.error(Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};Gt.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};Gt.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};Gt.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(Error("Crc error - "+e+" - "+n));return}if(!this._hasIEND)this.read(8,this._parseChunkBegin.bind(this))};Gt.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};Gt.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],i=t[9],o=t[10],s=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(Error("Unsupported bit depth "+r));return}if(!(i in Ct.COLORTYPE_TO_BPP_MAP)){this.error(Error("Unsupported color type"));return}if(o!==0){this.error(Error("Unsupported compression method"));return}if(s!==0){this.error(Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(Error("Unsupported interlace method"));return}this._colorType=i;let c=Ct.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:Boolean(a),palette:Boolean(i&Ct.COLORTYPE_PALETTE),color:Boolean(i&Ct.COLORTYPE_COLOR),alpha:Boolean(i&Ct.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};Gt.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};Gt.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};Gt.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};Gt.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===Ct.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}if(this._colorType===Ct.COLORTYPE_GRAYSCALE)this.transColor([t.readUInt16BE(0)]);if(this._colorType===Ct.COLORTYPE_COLOR)this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]);this._handleChunkEnd()};Gt.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};Gt.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/Ct.GAMMA_DIVISION),this._handleChunkEnd()};Gt.prototype._handleIDAT=function(t){if(!this._emittedHeadersFinished)this._emittedHeadersFinished=!0,this.headersFinished();this.read(-t,this._parseIDAT.bind(this,t))};Gt.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===Ct.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw Error("Expected palette not found");this.inflateData(e);let n=t-e.length;if(n>0)this._handleIDAT(n);else this._handleChunkEnd()};Gt.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};Gt.prototype._parseIEND=function(t){if(this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished)this.finished()}});var vd=Mt((wI)=>{var bw=pd(),hI=[function(){},function(t,e,n,r){if(r===e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw Error("Ran out of data");let i=e[r];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],mI=[function(){},function(t,e,n,r){let i=e[0];t[n]=i,t[n+1]=i,t[n+2]=i,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function pI(t,e){let n=[],r=0;function i(){if(r===t.length)throw Error("Ran out of data");let o=t[r];r++;let s,a,c,u,f,l,d,h;switch(e){default:throw Error("unrecognised depth");case 16:d=t[r],r++,n.push((o<<8)+d);break;case 4:d=o&15,h=o>>4,n.push(h,d);break;case 2:f=o&3,l=o>>2&3,d=o>>4&3,h=o>>6&3,n.push(h,d,l,f);break;case 1:s=o&1,a=o>>1&1,c=o>>2&1,u=o>>3&1,f=o>>4&1,l=o>>5&1,d=o>>6&1,h=o>>7&1,n.push(h,d,l,f,u,c,a,s);break}}return{get:function(o){while(n.length<o)i();let s=n.slice(0,o);return n=n.slice(o),s},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw Error("extra data found")}}}function gI(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++)for(let f=0;f<s;f++){let l=n(f,u,c);hI[r](e,i,l,o),o+=r}return o}function bI(t,e,n,r,i,o){let{width:s,height:a,index:c}=t;for(let u=0;u<a;u++){for(let f=0;f<s;f++){let l=i.get(r),d=n(f,u,c);mI[r](e,l,d,o)}i.resetAfterLine()}}wI.dataToBitMap=function(t,e){let{width:n,height:r,depth:i,bpp:o,interlace:s}=e,a;if(i!==8)a=pI(t,i);let c;if(i<=8)c=Buffer.alloc(n*r*4);else c=new Uint16Array(n*r*4);let u=Math.pow(2,i)-1,f=0,l,d;if(s)l=bw.getImagePasses(n,r),d=bw.getInterlaceIterator(n,r);else{let h=0;d=function(){let m=h;return h+=4,m},l=[{width:n,height:r}]}for(let h=0;h<l.length;h++)if(i===8)f=gI(l[h],c,d,o,t,f);else bI(l[h],c,d,o,a,u);if(i===8){if(f!==t.length)throw Error("extra data found")}else a.end();return c}});var Sd=Mt((q_,ww)=>{function kI(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=i[t[o]];if(!c)throw Error("index "+t[o]+" not in palette");for(let u=0;u<4;u++)e[o+u]=c[u];o+=4}}function yI(t,e,n,r,i){let o=0;for(let s=0;s<r;s++)for(let a=0;a<n;a++){let c=!1;if(i.length===1){if(i[0]===t[o])c=!0}else if(i[0]===t[o]&&i[1]===t[o+1]&&i[2]===t[o+2])c=!0;if(c)for(let u=0;u<4;u++)e[o+u]=0;o+=4}}function vI(t,e,n,r,i){let o=255,s=Math.pow(2,i)-1,a=0;for(let c=0;c<r;c++)for(let u=0;u<n;u++){for(let f=0;f<4;f++)e[a+f]=Math.floor(t[a+f]*o/s+0.5);a+=4}}ww.exports=function(t,e,n=!1){let{depth:r,width:i,height:o,colorType:s,transColor:a,palette:c}=e,u=t;if(s===3)kI(t,u,i,o,c);else{if(a)yI(t,u,i,o,a);if(r!==8&&!n){if(r===16)u=Buffer.alloc(i*o*4);vI(t,u,i,o,r)}}return u}});var yw=Mt((J_,kw)=>{var SI=Qt("util"),Ed=Qt("zlib"),$w=md(),EI=hw(),MI=yd(),xI=vd(),OI=Sd(),kn=kw.exports=function(t){$w.call(this),this._parser=new MI(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};SI.inherits(kn,$w);kn.prototype._handleError=function(t){if(this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy)this._inflate.destroy();if(this._filter)this._filter.destroy(),this._filter.on("error",function(){});this.errord=!0};kn.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Ed.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,Ed.Z_MIN_CHUNK);this._inflate=Ed.createInflate({chunkSize:r});let i=n,o=this.emit.bind(this,"error");this._inflate.on("error",function(a){if(!i)return;o(a)}),this._filter.on("complete",this._complete.bind(this));let s=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){if(!i)return;if(a.length>i)a=a.slice(0,i);i-=a.length,s(a)}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};kn.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new EI(this._bitmapInfo)};kn.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};kn.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};kn.prototype._simpleTransparency=function(){this._metaData.alpha=!0};kn.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};kn.prototype._finished=function(){if(this.errord)return;if(!this._inflate)this.emit("error","No Inflate block");else this._inflate.end()};kn.prototype._complete=function(t){if(this.errord)return;let e;try{let n=xI.dataToBitMap(t,this._bitmapInfo);e=OI(n,this._bitmapInfo,this._options.skipRescale),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Sw=Mt((Y_,vw)=>{var We=Lo();vw.exports=function(t,e,n,r){let i=[We.COLORTYPE_COLOR_ALPHA,We.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let m=function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256}();if(r.bitDepth===8||r.bitDepth===16&&m)return t}let o=r.bitDepth!==16?t:new Uint16Array(t.buffer),s=255,a=We.COLORTYPE_TO_BPP_MAP[r.inputColorType];if(a===4&&!r.inputHasAlpha)a=3;let c=We.COLORTYPE_TO_BPP_MAP[r.colorType];if(r.bitDepth===16)s=65535,c*=2;let u=Buffer.alloc(e*n*c),f=0,l=0,d=r.bgColor||{};if(d.red===void 0)d.red=s;if(d.green===void 0)d.green=s;if(d.blue===void 0)d.blue=s;function h(){let m,p,b,$=s;switch(r.inputColorType){case We.COLORTYPE_COLOR_ALPHA:$=o[f+3],m=o[f],p=o[f+1],b=o[f+2];break;case We.COLORTYPE_COLOR:m=o[f],p=o[f+1],b=o[f+2];break;case We.COLORTYPE_ALPHA:$=o[f+1],m=o[f],p=m,b=m;break;case We.COLORTYPE_GRAYSCALE:m=o[f],p=m,b=m;break;default:throw Error("input color type:"+r.inputColorType+" is not supported at present")}if(r.inputHasAlpha){if(!i)$/=s,m=Math.min(Math.max(Math.round((1-$)*d.red+$*m),0),s),p=Math.min(Math.max(Math.round((1-$)*d.green+$*p),0),s),b=Math.min(Math.max(Math.round((1-$)*d.blue+$*b),0),s)}return{red:m,green:p,blue:b,alpha:$}}for(let m=0;m<n;m++)for(let p=0;p<e;p++){let b=h(o,f);switch(r.colorType){case We.COLORTYPE_COLOR_ALPHA:case We.COLORTYPE_COLOR:if(r.bitDepth===8){if(u[l]=b.red,u[l+1]=b.green,u[l+2]=b.blue,i)u[l+3]=b.alpha}else if(u.writeUInt16BE(b.red,l),u.writeUInt16BE(b.green,l+2),u.writeUInt16BE(b.blue,l+4),i)u.writeUInt16BE(b.alpha,l+6);break;case We.COLORTYPE_ALPHA:case We.COLORTYPE_GRAYSCALE:{let $=(b.red+b.green+b.blue)/3;if(r.bitDepth===8){if(u[l]=$,i)u[l+1]=b.alpha}else if(u.writeUInt16BE($,l),i)u.writeUInt16BE(b.alpha,l+2);break}default:throw Error("unrecognised color Type "+r.colorType)}f+=a,l+=c}return u}});var xw=Mt((V_,Mw)=>{var Ew=gd();function PI(t,e,n,r,i){for(let o=0;o<n;o++)r[i+o]=t[e+o]}function II(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++)r+=Math.abs(t[o]);return r}function RI(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=t[e+s]-a;r[i+s]=c}}function AI(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=t[e+o]-s;i+=Math.abs(a)}return i}function NI(t,e,n,r,i){for(let o=0;o<n;o++){let s=e>0?t[e+o-n]:0,a=t[e+o]-s;r[i+o]=a}}function TI(t,e,n){let r=0,i=e+n;for(let o=e;o<i;o++){let s=e>0?t[o-n]:0,a=t[o]-s;r+=Math.abs(a)}return r}function HI(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=t[e+s]-(a+c>>1);r[i+s]=u}}function FI(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=t[e+o]-(s+a>>1);i+=Math.abs(c)}return i}function LI(t,e,n,r,i,o){for(let s=0;s<n;s++){let a=s>=o?t[e+s-o]:0,c=e>0?t[e+s-n]:0,u=e>0&&s>=o?t[e+s-(n+o)]:0,f=t[e+s]-Ew(a,c,u);r[i+s]=f}}function CI(t,e,n,r){let i=0;for(let o=0;o<n;o++){let s=o>=r?t[e+o-r]:0,a=e>0?t[e+o-n]:0,c=e>0&&o>=r?t[e+o-(n+r)]:0,u=t[e+o]-Ew(s,a,c);i+=Math.abs(u)}return i}var jI={0:PI,1:RI,2:NI,3:HI,4:LI},_I={0:II,1:AI,2:TI,3:FI,4:CI};Mw.exports=function(t,e,n,r,i){let o;if(!("filterType"in r)||r.filterType===-1)o=[0,1,2,3,4];else if(typeof r.filterType==="number")o=[r.filterType];else throw Error("unrecognised filter types");if(r.bitDepth===16)i*=2;let s=e*i,a=0,c=0,u=Buffer.alloc((s+1)*n),f=o[0];for(let l=0;l<n;l++){if(o.length>1){let d=1/0;for(let h=0;h<o.length;h++){let m=_I[o[h]](t,c,s,i);if(m<d)f=o[h],d=m}}u[a]=f,a++,jI[f](t,c,s,u,a,i),a+=s,c+=s}return u}});var Md=Mt((Z_,Ow)=>{var te=Lo(),GI=kd(),BI=Sw(),UI=xw(),WI=Qt("zlib"),Ar=Ow.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32768,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||WI.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType==="number"?t.colorType:te.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType==="number"?t.inputColorType:te.COLORTYPE_COLOR_ALPHA,[te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw Error("option color type:"+t.colorType+" is not supported at present");if([te.COLORTYPE_GRAYSCALE,te.COLORTYPE_COLOR,te.COLORTYPE_COLOR_ALPHA,te.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw Error("option bit depth:"+t.bitDepth+" is not supported at present")};Ar.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ar.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ar.prototype.filterData=function(t,e,n){let r=BI(t,e,n,this._options),i=te.COLORTYPE_TO_BPP_MAP[this._options.colorType];return UI(r,e,n,this._options,i)};Ar.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);if(r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e)e.copy(r,8);return r.writeInt32BE(GI.crc32(r.slice(4,r.length-4)),r.length-4),r};Ar.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*te.GAMMA_DIVISION),0),this._packChunk(te.TYPE_gAMA,e)};Ar.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(te.TYPE_IHDR,n)};Ar.prototype.packIDAT=function(t){return this._packChunk(te.TYPE_IDAT,t)};Ar.prototype.packIEND=function(){return this._packChunk(te.TYPE_IEND,null)}});var Aw=Mt((X_,Rw)=>{var KI=Qt("util"),Pw=Qt("stream"),zI=Lo(),DI=Md(),Iw=Rw.exports=function(t){Pw.call(this);let e=t||{};this._packer=new DI(e),this._deflate=this._packer.createDeflate(),this.readable=!0};KI.inherits(Iw,Pw);Iw.prototype.pack=function(t,e,n,r){if(this.emit("data",Buffer.from(zI.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r)this.emit("data",this._packer.packGAMA(r));let i=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(o){this.emit("data",this._packer.packIDAT(o))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Cw=Mt((na,Lw)=>{var Nw=Qt("assert").ok,Co=Qt("zlib"),qI=Qt("util"),Tw=Qt("buffer").kMaxLength;function Pi(t){if(!(this instanceof Pi))return new Pi(t);if(t&&t.chunkSize<Co.Z_MIN_CHUNK)t.chunkSize=Co.Z_MIN_CHUNK;if(Co.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null)this._maxLength=t.maxLength}function JI(t){return new Pi(t)}function Hw(t,e){if(e)process.nextTick(e);if(!t._handle)return;t._handle.close(),t._handle=null}Pi.prototype._processChunk=function(t,e,n){if(typeof n==="function")return Co.Inflate._processChunk.call(this,t,e,n);let r=this,i=t&&t.length,o=this._chunkSize-this._offset,s=this._maxLength,a=0,c=[],u=0,f;this.on("error",function(m){f=m});function l(m,p){if(r._hadError)return;let b=o-p;if(Nw(b>=0,"have should not go down"),b>0){let $=r._buffer.slice(r._offset,r._offset+b);if(r._offset+=b,$.length>s)$=$.slice(0,s);if(c.push($),u+=$.length,s-=$.length,s===0)return!1}if(p===0||r._offset>=r._chunkSize)o=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize);if(p===0)return a+=i-m,i=m,!0;return!1}Nw(this._handle,"zlib binding closed");let d;do d=this._handle.writeSync(e,t,a,i,this._buffer,this._offset,o),d=d||this._writeState;while(!this._hadError&&l(d[0],d[1]));if(this._hadError)throw f;if(u>=Tw)throw Hw(this),RangeError("Cannot create final Buffer. It would be larger than 0x"+Tw.toString(16)+" bytes");let h=Buffer.concat(c,u);return Hw(this),h};qI.inherits(Pi,Co.Inflate);function YI(t,e){if(typeof e==="string")e=Buffer.from(e);if(!(e instanceof Buffer))throw TypeError("Not a string or buffer");let n=t._finishFlushFlag;if(n==null)n=Co.Z_FINISH;return t._processChunk(e,n)}function Fw(t,e){return YI(new Pi(e),t)}Lw.exports=na=Fw;na.Inflate=Pi;na.createInflate=JI;na.inflateSync=Fw});var xd=Mt((Q_,_w)=>{var jw=_w.exports=function(t){this._buffer=t,this._reads=[]};jw.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};jw.prototype.process=function(){while(this._reads.length>0&&this._buffer.length){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)throw Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)throw Error("unrecognised content at end of stream")}});var Gw=Mt((XI)=>{var VI=xd(),ZI=bd();XI.process=function(t,e){let n=[],r=new VI(t);return new ZI(e,{read:r.read.bind(r),write:function(o){n.push(o)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Kw=Mt((eG,Ww)=>{var Bw=!0,Uw=Qt("zlib"),tR=Cw();if(!Uw.deflateSync)Bw=!1;var eR=xd(),nR=Gw(),rR=yd(),iR=vd(),oR=Sd();Ww.exports=function(t,e){if(!Bw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(S){n=S}let i;function o(S){i=S}function s(S){i.transColor=S}function a(S){i.palette=S}function c(){i.alpha=!0}let u;function f(S){u=S}let l=[];function d(S){l.push(S)}let h=new eR(t);if(new rR(e,{read:h.read.bind(h),error:r,metadata:o,gamma:f,palette:a,transColor:s,inflateData:d,simpleTransparency:c}).start(),h.process(),n)throw n;let p=Buffer.concat(l);l.length=0;let b;if(i.interlace)b=Uw.inflateSync(p);else{let x=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;b=tR(p,{chunkSize:x,maxLength:x})}if(p=null,!b||!b.length)throw Error("bad png - invalid inflate data response");let $=nR.process(b,i);p=null;let k=iR.dataToBitMap($,i);$=null;let v=oR(k,i,e.skipRescale);return i.data=v,i.gamma=u||0,i}});var Jw=Mt((nG,qw)=>{var zw=!0,Dw=Qt("zlib");if(!Dw.deflateSync)zw=!1;var sR=Lo(),aR=Md();qw.exports=function(t,e){if(!zw)throw Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=new aR(e||{}),i=[];if(i.push(Buffer.from(sR.PNG_SIGNATURE)),i.push(r.packIHDR(t.width,t.height)),t.gamma)i.push(r.packGAMA(t.gamma));let o=r.filterData(t.data,t.width,t.height),s=Dw.deflateSync(o,r.getDeflateOptions());if(o=null,!s||!s.length)throw Error("bad png - invalid compressed data response");return i.push(r.packIDAT(s)),i.push(r.packIEND()),Buffer.concat(i)}});var Yw=Mt((lR)=>{var cR=Kw(),uR=Jw();lR.read=function(t,e){return cR(t,e||{})};lR.write=function(t,e){return uR(t,e)}});var Zw=Mt((bR)=>{var hR=Qt("util"),Vw=Qt("stream"),mR=yw(),pR=Aw(),gR=Yw(),ce=bR.PNG=function(t){if(Vw.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data)this.data.fill(0);this.gamma=0,this.readable=this.writable=!0,this._parser=new mR(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new pR(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};hR.inherits(ce,Vw);ce.sync=gR;ce.prototype.pack=function(){if(!this.data||!this.data.length)return this.emit("error","No data provided"),this;return process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this};ce.prototype.parse=function(t,e){if(e){let n,r;n=function(i){this.removeListener("error",r),this.data=i,e(null,this)}.bind(this),r=function(i){this.removeListener("parsed",n),e(i,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};ce.prototype.write=function(t){return this._parser.write(t),!0};ce.prototype.end=function(t){this._parser.end(t)};ce.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};ce.prototype._gamma=function(t){this.gamma=t};ce.prototype._handleClose=function(){if(!this._parser.writable&&!this._packer.readable)this.emit("close")};ce.bitblt=function(t,e,n,r,i,o,s,a){if(n|=0,r|=0,i|=0,o|=0,s|=0,a|=0,n>t.width||r>t.height||n+i>t.width||r+o>t.height)throw Error("bitblt reading outside image");if(s>e.width||a>e.height||s+i>e.width||a+o>e.height)throw Error("bitblt writing outside image");for(let c=0;c<o;c++)t.data.copy(e.data,(a+c)*e.width+s<<2,(r+c)*t.width+n<<2,(r+c)*t.width+n+i<<2)};ce.prototype.bitblt=function(t,e,n,r,i,o,s){return ce.bitblt(this,t,e,n,r,i,o,s),this};ce.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let i=0;i<3;i++){let o=t.data[r+i]/255;o=Math.pow(o,0.45454545454545453/t.gamma),t.data[r+i]=Math.round(o*255)}}t.gamma=0}};ce.prototype.adjustGamma=function(){ce.adjustGamma(this)}});var Wh=Mt((xU,ey)=>{var Uh={to(t,e){if(!e)return`\x1B[${t+1}G`;return`\x1B[${e+1};${t+1}H`},move(t,e){let n="";if(t<0)n+=`\x1B[${-t}D`;else if(t>0)n+=`\x1B[${t}C`;if(e<0)n+=`\x1B[${-e}A`;else if(e>0)n+=`\x1B[${e}B`;return n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},RT={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},AT={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?Uh.up():"");if(t)e+=Uh.left;return e}};ey.exports={cursor:Uh,scroll:RT,erase:AT,beep:"\x07"}});import{spawnSync as b_}from"node:child_process";import{isMainThread as w_}from"node:worker_threads";import{parseArgs as u_}from"node:util";var lt={name:"@kecan0406/ttheme",version:"1.2.20",type:"module",bin:{ttheme:"bin/ttheme.js"},files:["bin","dist/manifest.json","shell","!shell/check.zsh"],description:"Character terminal palettes for Ghostty, iTerm2, kitty, Alacritty, WezTerm, Windows Terminal, Warp, Konsole and Terminal.app",license:"MIT",author:"kecan0406",repository:{type:"git",url:"git+https://github.com/kecan0406/ttheme.git"},homepage:"https://github.com/kecan0406/ttheme#readme",bugs:"https://github.com/kecan0406/ttheme/issues",keywords:["terminal","theme","ghostty","kitty","alacritty","wezterm","iterm2","konsole","warp","windows-terminal"],devDependencies:{"@biomejs/biome":"^2.5.15","@clack/prompts":"^1.8.1","@jsquash/jpeg":"^1.6.0","@material/material-color-utilities":"^0.4.0","@oxlint/plugins":"1.87.0","@types/bun":"^1.4.2","@types/pngjs":"6.0.5","@xterm/headless":"6.0.0","fast-string-width":"^3.0.2",oxlint:"1.87.0",pngjs:"7.0.0","smol-toml":"^1.9.0",typescript:"^7.0.2",uqr:"^0.1.3"},engines:{bun:">=1.3",node:">=22"}};var Nb=(()=>{let t=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(e)=>{let n=0;t.lastIndex=0;while(t.test(e))n+=1;return e.length-n}})(),Tb=(t)=>{return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510},Hb=(t)=>{return t===8987||t===9001||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12771||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=19903||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t>=131072&&t<=196605||t>=196608&&t<=262141};var CP=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,jP=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Fb=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,_P=/\t{1,1000}/y,Lb=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,GP=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,BP=/\p{M}+/gu,UP={limit:1/0,ellipsis:""},Cb=(t,e={},n={})=>{let r=e.limit??1/0,i=e.ellipsis??"",o=e?.ellipsisWidth??(i?Cb(i,UP,n).width:0),s=0,a=n.controlWidth??0,c=n.tabWidth??8,u=n.emojiWidth??2,f=2,l=n.regularWidth??1,d=n.wideWidth??2,h=[[GP,l],[CP,0],[jP,a],[_P,c],[Lb,u],[Fb,d]],m=0,p=0,b=t.length,$=0,k=!1,v=b,S=Math.max(0,r-o),x=0,M=0,I=0,L=0;t:while(!0){if(M>x||p>=b&&p>m){let N=t.slice(x,M)||t.slice(m,p);$=0;for(let _ of N.replaceAll(BP,"")){let D=_.codePointAt(0)||0;if(Tb(D))L=2;else if(Hb(D))L=d;else L=l;if(I+L>S)v=Math.min(v,Math.max(x,m)+$);if(I+L>r){k=!0;break t}$+=_.length,I+=L}x=M=0}if(p>=b)break t;for(let N=0,_=h.length;N<_;N++){let[D,B]=h[N];if(D.lastIndex=p,D.test(t)){if($=D===Fb?Nb(t.slice(p,D.lastIndex)):D===Lb?1:D.lastIndex-p,L=$*B,I+L>S)v=Math.min(v,p+Math.floor((S-I)/B));if(I+L>r){k=!0;break t}I+=L,x=m,M=p,p=m=D.lastIndex;continue t}}p+=1}return{width:k?S:I,index:k?v:b,truncated:k,ellipsed:k&&r>=o}},jb=Cb;var WP={limit:1/0,ellipsis:"",ellipsisWidth:0},KP=(t,e={})=>{return jb(t,WP,e).width},G=KP;var zP=/^#[0-9a-f]{6}$/;function he(t){return zP.test(t)}function ot(t){let e=Number.parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,e&255]}function At(t,e,n){let r=ot(t),i=ot(e);return`#${r.map((o,s)=>Math.round(o+((i[s]??0)-o)*n).toString(16).padStart(2,"0")).join("")}`}function St(t){let[e,n,r]=ot(t).map((i)=>{let o=i/255;return o<=0.03928?o/12.92:((o+0.055)/1.055)**2.4});return 0.2126*e+0.7152*n+0.0722*r}function $t(t,e){let n=St(t),r=St(e);return(Math.max(n,r)+0.05)/(Math.min(n,r)+0.05)}function Jc(t,e){return Math.round($t(t,e)*100)/100}function DP(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function xt(t){let[e,n,r]=ot(t).map(DP),i=Math.cbrt(0.4122214708*e+0.5363325363*n+0.0514459929*r),o=Math.cbrt(0.2119034982*e+0.6806995451*n+0.1073969566*r),s=Math.cbrt(0.0883024619*e+0.2817188376*n+0.6299787005*r),a=1.9779984951*i-2.428592205*o+0.4505937099*s,c=0.0259040371*i+0.7827717662*o-0.808675766*s;return{l:0.2104542553*i+0.793617785*o-0.0040720468*s,c:Math.hypot(a,c),h:(Math.atan2(c,a)*180/Math.PI+360)%360}}var _b={dim:["2","22"],bold:["1","22"],under:["4","24"],reverse:["7","27"],accent:["36","39"],pill:["7;1;36","22;27;39"],match:["1;4;36","22;24;39"],ok:["32","39"],warn:["33","39"],error:["31","39"]},qP={stage:0.08,bar:0.14,selection:0.2,tab:0.3,line:0.45},A={gutter:"▌",current:"◆",signature:"✦",closed:"▸",opened:"▾",on:"●",off:"○",ok:"✓",miss:"✗",above:"↑",below:"↓",update:"⇡",auto:"↻",star:"★",link:"⧉",search:"⌕",linked:"⇠",contrast:"◐",swatch:"■",pictures:"▣",sep:"·",cut:"…"},qn=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];function Me(t){return`\x1B[${t}m`}function bt(t){return Me(_b[t][0])}function rd(t){return Me(_b[t][1])}var me=Me("0"),wt=Me("39"),Gb=Me("49"),ae=Me("39;49");function Ei(t){return Me(String(t<8?30+t:82+t))}function Bb(t){return Me(String(t<8?40+t:92+t))}function Ub(t,e){return Me(`38;5;${t};48;5;${e}`)}function Yc(t){let e=t.replace("#","");return[e.slice(0,2),e.slice(2,4),e.slice(4,6)].map((n)=>Number.parseInt(n,16)).join(";")}function Jn(t){return Me(`38;2;${Yc(t)}`)}function id(t){return Me(`48;2;${Yc(t)}`)}function Wb(t,e){return Me(`48;2;${Yc(t)};38;2;${Yc(e)}`)}function Kb(t,e=wt){return`${t.map((n)=>`${Jn(n)}${A.swatch}`).join(" ")}${e}`}function Mi(t,e,n){return At(t,e,qP[n])}function od(t){let e=!1,n=!1,r=!1,i=!1,o=!1,s=!1;for(let c of t.split("\x1B[").slice(1)){let u=/^([0-9;]*)m/.exec(c)?.[1];if(u===void 0)continue;let f=(u||"0").split(";").map(Number);for(let l=0;l<f.length;l++){let d=f[l];if(d===0)e=n=r=i=o=s=!1;else if(d===1||d===2)e=!0;else if(d===22)e=!1;else if(d===3||d===23)n=d===3;else if(d===4||d===24)r=d===4;else if(d===7||d===27)i=d===7;else if(d===38||d===48)o||=d===38,s||=d===48,l+=f[l+1]===5?2:4;else if(d===39)o=!1;else if(d===49)s=!1;else if(d>=30&&d<=37||d>=90&&d<=97)o=!0;else if(d>=40&&d<=47||d>=100&&d<=107)s=!0}}let a=[e&&"22",n&&"23",r&&"24",i&&"27",o&&"39",s&&"49"].filter(Boolean);return a.length>0?Me(a.join(";")):""}function xe(t){let e=(n)=>(r)=>t?`${bt(n)}${r}${rd(n)}`:r;return{color:t,dim:e("dim"),bold:e("bold"),accent:e("accent"),pill:e("pill"),ok:e("ok"),warn:e("warn"),error:e("error"),fg:(n)=>t?Jn(n):"",bg:(n)=>t?id(n):""}}function Vc(t,e){return e&&!/\p{Cc}/u.test(e)?`\x1B]8;;${e}\x1B\\${t}\x1B]8;;\x1B\\`:t}function sd(t,e){if(t[e]!=="\x1B")return 0;if(t[e+1]==="]"){let r=t.indexOf("\x07",e+2),i=t.indexOf("\x1B\\",e+2),o=r!==-1&&(i===-1||r<i)?r+1:i!==-1?i+2:0;return o?o-e:0}if(t[e+1]!=="[")return 0;let n=e+2;while(n<t.length&&!/[@-~]/.test(t[n]))n++;return n<t.length?n-e+1:0}var zb;function ad(t){return zb??=new Intl.Segmenter(void 0,{granularity:"grapheme"}),zb.segment(t)}function Zc(t){let e=[],n=0;while(n<t.length){let r=sd(t,n);if(r>0){e.push({text:t.slice(n,n+r),start:n,end:n+r,width:0,sequence:!0}),n+=r;continue}let i=t.indexOf("\x1B",n+1),o=i===-1?t.length:i;for(let{segment:s,index:a}of ad(t.slice(n,o)))e.push({text:s,start:n+a,end:n+a+s.length,width:G(s),sequence:!1});n=o}return e}function JP(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?e:void 0}function cd(t,e){let n="",r=0,i=0;for(let o of Zc(t)){if(!o.sequence){if(r+o.width>e)break;r+=o.width}else{let s=JP(o.text);if(s!==void 0)i=s==="0"?Math.max(0,i-1):i+1}n+=o.text}return{head:n,used:r,ends:"\x1B[?0y".repeat(i)}}function tt(t,e,n=!0){if(e<=0)return"";let r=G(t);if(r<=e)return n?t+" ".repeat(e-r):t;let{head:i,used:o,ends:s}=cd(t,e-1);return`${i}${od(i)}…${s}${n?" ".repeat(e-1-o):""}`}function Db(t,e){let{head:n,used:r,ends:i}=cd(t,e);return`${n}${od(n)}${i}${" ".repeat(e-r)}`}function Pt(t,e,n){let r=n-G(e)-1;return r<=0?tt(t,n):`${tt(t,r)} ${e}`}function Et(t,e){let n=[],r="";for(let i of t.split(/\s+/).filter(Boolean)){let o=r?`${r} ${i}`:i;if(G(o)<=e){r=o;continue}if(r)n.push(r);while(G(i)>e){let{head:s}=cd(i,e),a=Math.max(s.lastIndexOf("/")+1,s.lastIndexOf("#")),c=a>0?a:s.length||Zc(i)[0].end;n.push(i.slice(0,c)),i=i.slice(c)}r=i}if(r)n.push(r);return n}import{existsSync as xk,readFileSync as Th}from"node:fs";import{join as Ok}from"node:path";var xr=7,qb=3,ud=0.15,Jb=1.6,fd=[1,2,3,4,5,6,9,10,11,12,13,14],Yb=[7,15],Or=[1,2,3,4,5,6],Oe={1:{name:"red",center:19,width:25},2:{name:"green",center:132,width:35},3:{name:"yellow",center:88,width:35},4:{name:"blue",center:250,width:60},5:{name:"magenta",center:329,width:40},6:{name:"cyan",center:197,width:60}},xi=0.03,nn=25,No=15,To=0.08;function Yn(t,e){let n=t.ansi[e];if(n===void 0)throw Error(`${t.name}: missing ANSI ${e}`);return n}function ld(t,e,n){let r=t.background;return e.flatMap((i)=>{let o=Yn(t,i);return $t(o,r)<n?[`ANSI ${i} ${o} on ${r} is ${Jc(o,r)}:1, needs ${n}:1`]:[]})}function Vb(t,e){return Math.min(...e.map((n)=>$t(Yn(t,n),t.background)))}var Zb=[{rule:"foreground",label:"foreground on background",unit:"ratio",min:xr,measure:({foreground:t,background:e})=>$t(t,e),check:({foreground:t,background:e})=>$t(t,e)<xr?[`foreground ${t} on ${e} is ${Jc(t,e)}:1, needs ${xr}:1`]:[]},{rule:"accents",label:"weakest accent on background",unit:"ratio",min:qb,measure:(t)=>Vb(t,fd),check:(t)=>ld(t,fd,qb)},{rule:"ansi0-dark",label:"ansi0 luminance",unit:"luminance",max:ud,measure:(t)=>St(Yn(t,0)),check:(t)=>{let e=Yn(t,0);return St(e)>ud?[`ANSI 0 ${e} has luminance ${St(e).toFixed(3)}, needs <= ${ud}`]:[]}},{rule:"light-ansi",label:"ansi7 and ansi15 on background",unit:"ratio",min:xr,measure:(t)=>Vb(t,Yb),check:(t)=>ld(t,Yb,xr)},{rule:"ansi8-visible",label:"ansi8 on background",unit:"ratio",min:Jb,measure:(t)=>$t(Yn(t,8),t.background),check:(t)=>ld(t,[8],Jb)},{rule:"selection",label:"foreground on selection",unit:"ratio",min:xr,measure:({foreground:t,selectionBackground:e})=>e===void 0?Number.NaN:$t(t,e),check:({foreground:t,selectionBackground:e})=>e!==void 0&&$t(t,e)<xr?[`foreground ${t} on selection ${e} is ${Jc(t,e)}:1, needs ${xr}:1`]:[]}];function Pe(t,e){let n=Math.abs(t-e)%360;return Math.min(n,360-n)}var bn=(t)=>t>8?t-8:t;function Ho(t){let e=t.signatureSlots.filter((n)=>n.startsWith("ansi")).map((n)=>Number(n.slice(4)));return new Set(e.flatMap((n)=>Or.includes(bn(n))?[n,n>8?n-8:n+8]:[n]))}function Qs(t,e){let n=xt(Yn(t,e));return n.c<xi?void 0:n}function Pr(t){let e=Ho(t);return fd.flatMap((n)=>{let r=Qs(t,n),i=Oe[bn(n)];if(r===void 0||i===void 0||e.has(n))return[];let o=Pe(r.h,i.center)-i.width;return o>0?[{slot:n,hue:r.h,over:o}]:[]})}function Vn(t){let e=new Set(t.signatureSlots);return Or.flatMap((n)=>{let r=Qs(t,n),i=Qs(t,n+8);if(r===void 0||i===void 0||e.has(`ansi${n}`)&&e.has(`ansi${n+8}`))return[];return[{normal:n,gap:Pe(r.h,i.h)}]})}function Zn(t){let e=Ho(t);return[0,8].flatMap((n)=>Or.flatMap((r)=>Or.filter((i)=>i>r).flatMap((i)=>{let[o,s]=[n+r,n+i],a=Qs(t,o),c=Qs(t,s);if(a===void 0||c===void 0||e.has(o)&&e.has(s))return[];return Pe(a.h,c.h)<No&&Math.abs(a.l-c.l)<To?[[o,s]]:[]})))}var YP=[{rule:"ansi-role",label:"accent hue outside its ANSI role",unit:"degrees",max:0,measure:(t)=>Math.max(0,...Pr(t).map((e)=>e.over)),check:(t)=>Pr(t).map(({slot:e,hue:n,over:r})=>{let i=Oe[bn(e)];return`ANSI ${e} ${Yn(t,e)} has hue ${n.toFixed(0)}°, ${r.toFixed(0)}° outside ${i.name} (${i.center}±${i.width}°)`})},{rule:"bright-follows",label:"widest normal to bright hue gap",unit:"degrees",max:nn,measure:(t)=>Math.max(0,...Vn(t).map((e)=>e.gap)),check:(t)=>Vn(t).filter((e)=>e.gap>nn).map(({normal:e,gap:n})=>`ANSI ${e+8} is ${n.toFixed(0)}° from ANSI ${e}, needs <= ${nn}°`)},{rule:"distinct",label:"accent pairs that read as one color",unit:"pairs",max:0,measure:(t)=>Zn(t).length,check:(t)=>Zn(t).map(([e,n])=>`ANSI ${e} ${Yn(t,e)} and ANSI ${n} ${Yn(t,n)} are within ${No}° hue and ${To} lightness`)}],Xc=[...Zb,...YP],dd=Xc.map((t)=>t.rule),Ie=Xc.map(({rule:t,label:e,unit:n,min:r,max:i})=>({rule:t,label:e,unit:n,...r===void 0?{}:{min:r},...i===void 0?{}:{max:i}}));function wn(t){return Xc.map((e)=>Math.round(e.measure(t)*1000)/1000)}function Xb(t,e){return t.filter((n)=>!e.waive.includes(n.rule)).flatMap((n)=>n.check(e).map((r)=>({theme:e.name,rule:n.rule,detail:r})))}function Xn(t){return Xb(Xc,t)}function Qb(t){return Xb(Zb,t)}function tw(t){return t.flatMap(Xn)}import{chmodSync as VP,copyFileSync as ZP,existsSync as Ir,mkdirSync as XP,readFileSync as ta,realpathSync as QP,renameSync as nw,rmSync as ew,statSync as tI,writeFileSync as rw}from"node:fs";import{dirname as eI}from"node:path";function ea(t){return`${t}.ttheme.bak`}var nI=/^(?:#|--) ttheme begin$|path = "ttheme-|^DefaultProfile=ttheme-/m;function hd(t){let e=ea(t);if(Ir(t)&&!Ir(e)&&!nI.test(ta(t,"utf8")))ZP(t,e)}function C(t,e){let n=Ir(t)?QP(t):t;XP(eI(n),{recursive:!0});let r=`${n}.ttheme-${process.pid}`;if(rw(r,e),Ir(n))VP(r,tI(n).mode&4095);nw(r,n)}function Oi(t,e,n){if(rw(t,n),t!==e)nw(t,e)}function $n(t,e){if((Ir(t)?ta(t,"utf8"):void 0)===e)return!1;return hd(t),C(t,e),!0}function iw(t,e){return t.replace(/\n*$/,"")===e.replace(/\n*$/,"")}function ow(t,e){let n=ea(t),r=Ir(n)?ta(n,"utf8"):void 0;if(e===""&&r===void 0)return ew(t,{force:!0}),"removed";let i=r!==void 0&&iw(r,e);if(C(t,i?r:e),r===void 0||i)return ew(n,{force:!0}),"restored";return"kept backup"}function Qc(t){let e=ea(t);return Ir(t)&&Ir(e)&&iw(ta(t,"utf8"),ta(e,"utf8"))?[e]:[]}import{createHash as k$}from"node:crypto";import{copyFileSync as fN,existsSync as eh,mkdirSync as dN,readdirSync as hN,readFileSync as Jo,renameSync as y$,rmSync as qo,statSync as mN}from"node:fs";import{basename as v$,isAbsolute as pN,join as Y}from"node:path";import{readdirSync as RR,rmSync as AR,statSync as NR}from"node:fs";import{setDefaultAutoSelectFamilyAttemptTimeout as TR}from"node:net";import{homedir as HR}from"node:os";import{join as aa}from"node:path";import{setTimeout as FR}from"node:timers/promises";var e0=nd(Zw(),1);import{constants as yR,deflateSync as vR,inflateSync as SR}from"node:zlib";import{inflateRawSync as $R}from"node:zlib";var wR=(()=>{var t=import.meta.url;return function(e={}){var n=e,r,i,o=new Promise((g,w)=>{r=g,i=w});let a=globalThis.ServiceWorkerGlobalScope!==void 0&&typeof self<"u"&&globalThis.caches&&globalThis.caches.default!==void 0,c=typeof process==="object"&&process.release&&process.release.name==="node";if(a||c){if(!globalThis.ImageData)globalThis.ImageData=class{constructor(w,y,E){this.data=w,this.width=y,this.height=E}};if(import.meta.url===void 0)import.meta.url="https://localhost";if(typeof self<"u"&&self.location===void 0)self.location={href:""}}var u=Object.assign({},n),f=[],l="./this.program",d=(g,w)=>{throw w},h=typeof window=="object",m=typeof importScripts=="function",p=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b="";function $(g){if(n.locateFile)return n.locateFile(g,b);return b+g}var k,v,S;if(h||m){if(m)b=self.location.href;else if(typeof document<"u"&&document.currentScript)b=document.currentScript.src;if(t)b=t;if(b.startsWith("blob:"))b="";else b=b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1);{if(k=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.send(null),w.responseText},m)S=(g)=>{var w=new XMLHttpRequest;return w.open("GET",g,!1),w.responseType="arraybuffer",w.send(null),new Uint8Array(w.response)};v=(g,w,y)=>{var E=new XMLHttpRequest;E.open("GET",g,!0),E.responseType="arraybuffer",E.onload=()=>{if(E.status==200||E.status==0&&E.response){w(E.response);return}y()},E.onerror=y,E.send(null)}}}var x=n.print||console.log.bind(console),M=n.printErr||console.error.bind(console);if(Object.assign(n,u),u=null,n.arguments)f=n.arguments;if(n.thisProgram)l=n.thisProgram;if(n.quit)d=n.quit;var I;if(n.wasmBinary)I=n.wasmBinary;var L,N=!1,_,D,B,F,pt,Xt,it,Mr,Be;function gn(){var g=L.buffer;n.HEAP8=D=new Int8Array(g),n.HEAP16=F=new Int16Array(g),n.HEAPU8=B=new Uint8Array(g),n.HEAPU16=pt=new Uint16Array(g),n.HEAP32=Xt=new Int32Array(g),n.HEAPU32=it=new Uint32Array(g),n.HEAPF32=Mr=new Float32Array(g),n.HEAPF64=Be=new Float64Array(g)}var Oo=[],Kc=[],wi=[],Uf=!1;function Wf(){if(n.preRun){if(typeof n.preRun=="function")n.preRun=[n.preRun];while(n.preRun.length)_2(n.preRun.shift())}Df(Oo)}function Kf(){Uf=!0,Df(Kc)}function j2(){if(n.postRun){if(typeof n.postRun=="function")n.postRun=[n.postRun];while(n.postRun.length)B2(n.postRun.shift())}Df(wi)}function _2(g){Oo.unshift(g)}function G2(g){Kc.unshift(g)}function B2(g){wi.unshift(g)}var $i=0,zf=null,Zs=null;function U2(g){$i++,n.monitorRunDependencies?.($i)}function W2(g){if($i--,n.monitorRunDependencies?.($i),$i==0){if(zf!==null)clearInterval(zf),zf=null;if(Zs){var w=Zs;Zs=null,w()}}}function fb(g){n.onAbort?.(g),g="Aborted("+g+")",M(g),N=!0,_=1,g+=". Build with -sASSERTIONS for more info.";var w=new WebAssembly.RuntimeError(g);throw i(w),w}var K2="data:application/octet-stream;base64,",db=(g)=>g.startsWith(K2),ki;if(n.locateFile){if(ki="mozjpeg_dec.wasm",!db(ki))ki=$(ki)}else ki=new URL("mozjpeg_dec.wasm",import.meta.url).href;function hb(g){if(g==ki&&I)return new Uint8Array(I);if(S)return S(g);throw"both async and sync fetching of the wasm failed"}function z2(g){if(!I&&(h||m)){if(typeof fetch=="function")return fetch(g,{credentials:"same-origin"}).then((w)=>{if(!w.ok)throw`failed to load wasm binary file at '${g}'`;return w.arrayBuffer()}).catch(()=>hb(g))}return Promise.resolve().then(()=>hb(g))}function mb(g,w,y){return z2(g).then((E)=>WebAssembly.instantiate(E,w)).then(y,(E)=>{M(`failed to asynchronously prepare wasm: ${E}`),fb(E)})}function D2(g,w,y,E){if(!g&&typeof WebAssembly.instantiateStreaming=="function"&&!db(w)&&typeof fetch=="function")return fetch(w,{credentials:"same-origin"}).then((P)=>{var R=WebAssembly.instantiateStreaming(P,y);return R.then(E,function(U){return M(`wasm streaming compile failed: ${U}`),M("falling back to ArrayBuffer instantiation"),mb(w,y,E)})});return mb(w,y,E)}function q2(){var g={a:bP};function w(E,P){return oe=E.exports,L=oe.A,gn(),vb=oe.F,G2(oe.B),W2("wasm-instantiate"),oe}U2("wasm-instantiate");function y(E){w(E.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(g,w)}catch(E){M(`Module.instantiateWasm callback failed with error: ${E}`),i(E)}return D2(I,ki,g,y).catch(i),{}}function J2(g){this.name="ExitStatus",this.message=`Program terminated with exit(${g})`,this.status=g}var Df=(g)=>{while(g.length>0)g.shift()(n)},Y2=n.noExitRuntime||!0;class pb{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){it[this.ptr+4>>2]=g}get_type(){return it[this.ptr+4>>2]}set_destructor(g){it[this.ptr+8>>2]=g}get_destructor(){return it[this.ptr+8>>2]}set_caught(g){g=g?1:0,D[this.ptr+12]=g}get_caught(){return D[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,D[this.ptr+13]=g}get_rethrown(){return D[this.ptr+13]!=0}init(g,w){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(w)}set_adjusted_ptr(g){it[this.ptr+16>>2]=g}get_adjusted_ptr(){return it[this.ptr+16>>2]}get_exception_ptr(){var g=Ib(this.get_type());if(g)return it[this.excPtr>>2];var w=this.get_adjusted_ptr();if(w!==0)return w;return this.excPtr}}var gb=0,V2=0,Z2=(g,w,y)=>{var E=new pb(g);throw E.init(w,y),gb=g,V2++,gb},X2=(g,w,y,E,P)=>{},Q2=()=>{var g=Array(256);for(var w=0;w<256;++w)g[w]=String.fromCharCode(w);bb=g},bb,en=(g)=>{var w="",y=g;while(B[y])w+=bb[B[y++]];return w},Po={},yi={},zc={},wb,Ee=(g)=>{throw new wb(g)},$b,kb=(g)=>{throw new $b(g)},tO=(g,w,y)=>{g.forEach(function(H){zc[H]=w});function E(H){var K=y(H);if(K.length!==g.length)kb("Mismatched type converter count");for(var Q=0;Q<g.length;++Q)Kn(g[Q],K[Q])}var P=Array(w.length),R=[],U=0;if(w.forEach((H,K)=>{if(yi.hasOwnProperty(H))P[K]=yi[H];else{if(R.push(H),!Po.hasOwnProperty(H))Po[H]=[];Po[H].push(()=>{if(P[K]=yi[H],++U,U===R.length)E(P)})}}),R.length===0)E(P)};function eO(g,w,y={}){var E=w.name;if(!g)Ee(`type "${E}" must have a positive integer typeid pointer`);if(yi.hasOwnProperty(g))if(y.ignoreDuplicateRegistrations)return;else Ee(`Cannot register type '${E}' twice`);if(yi[g]=w,delete zc[g],Po.hasOwnProperty(g)){var P=Po[g];delete Po[g],P.forEach((R)=>R())}}function Kn(g,w,y={}){if(!("argPackAdvance"in w))throw TypeError("registerType registeredInstance requires argPackAdvance");return eO(g,w,y)}var vi=8,nO=(g,w,y,E)=>{w=en(w),Kn(g,{name:w,fromWireType:function(P){return!!P},toWireType:function(P,R){return R?y:E},argPackAdvance:vi,readValueFromPointer:function(P){return this.fromWireType(B[P])},destructorFunction:null})},qf=[],zn=[],Jf=(g)=>{if(g>9&&--zn[g+1]===0)zn[g]=void 0,qf.push(g)},rO=()=>zn.length/2-5-qf.length,iO=()=>{zn.push(0,1,void 0,1,null,1,!0,1,!1,1),n.count_emval_handles=rO},Si={toValue:(g)=>{if(!g)Ee("Cannot use deleted val. handle = "+g);return zn[g]},toHandle:(g)=>{switch(g){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let w=qf.pop()||zn.length;return zn[w]=g,zn[w+1]=1,w}}}};function Yf(g){return this.fromWireType(it[g>>2])}var oO={name:"emscripten::val",fromWireType:(g)=>{var w=Si.toValue(g);return Jf(g),w},toWireType:(g,w)=>Si.toHandle(w),argPackAdvance:vi,readValueFromPointer:Yf,destructorFunction:null},sO=(g)=>Kn(g,oO),aO=(g,w)=>{switch(w){case 4:return function(y){return this.fromWireType(Mr[y>>2])};case 8:return function(y){return this.fromWireType(Be[y>>3])};default:throw TypeError(`invalid float width (${w}): ${g}`)}},cO=(g,w,y)=>{w=en(w),Kn(g,{name:w,fromWireType:(E)=>E,toWireType:(E,P)=>P,argPackAdvance:vi,readValueFromPointer:aO(w,y),destructorFunction:null})},Vf=(g,w)=>Object.defineProperty(w,"name",{value:g}),yb=(g)=>{while(g.length){var w=g.pop(),y=g.pop();y(w)}};function uO(g){for(var w=1;w<g.length;++w)if(g[w]!==null&&g[w].destructorFunction===void 0)return!0;return!1}function lO(g,w,y,E,P,R){var U=w.length;if(U<2)Ee("argTypes array size mismatch! Must at least get return value and 'this' types!");var H=w[1]!==null&&y!==null,K=uO(w),Q=w[0].name!=="void",gt=U-2,Lt=Array(gt),se=[],Ue=[],Io=function(...td){if(td.length!==gt)Ee(`function ${g} called with ${td.length} arguments, expected ${gt}`);Ue.length=0;var ed;if(se.length=H?2:1,se[0]=P,H)ed=w[1].toWireType(Ue,this),se[1]=ed;for(var Ro=0;Ro<gt;++Ro)Lt[Ro]=w[Ro+2].toWireType(Ue,td[Ro]),se.push(Lt[Ro]);var EP=E(...se);function MP(xP){if(K)yb(Ue);else for(var Ao=H?1:2;Ao<w.length;Ao++){var OP=Ao===1?ed:Lt[Ao-2];if(w[Ao].destructorFunction!==null)w[Ao].destructorFunction(OP)}if(Q)return w[0].fromWireType(xP)}return MP(EP)};return Vf(g,Io)}var fO=(g,w,y)=>{if(g[w].overloadTable===void 0){var E=g[w];g[w]=function(...P){if(!g[w].overloadTable.hasOwnProperty(P.length))Ee(`Function '${y}' called with an invalid number of arguments (${P.length}) - expects one of (${g[w].overloadTable})!`);return g[w].overloadTable[P.length].apply(this,P)},g[w].overloadTable=[],g[w].overloadTable[E.argCount]=E}},dO=(g,w,y)=>{if(n.hasOwnProperty(g)){if(y===void 0||n[g].overloadTable!==void 0&&n[g].overloadTable[y]!==void 0)Ee(`Cannot register public name '${g}' twice`);if(fO(n,g,g),n.hasOwnProperty(y))Ee(`Cannot register multiple overloads of a function with the same number of arguments (${y})!`);n[g].overloadTable[y]=w}else if(n[g]=w,y!==void 0)n[g].numArguments=y},hO=(g,w)=>{var y=[];for(var E=0;E<g;E++)y.push(it[w+E*4>>2]);return y},mO=(g,w,y)=>{if(!n.hasOwnProperty(g))kb("Replacing nonexistent public symbol");if(n[g].overloadTable!==void 0&&y!==void 0)n[g].overloadTable[y]=w;else n[g]=w,n[g].argCount=y},pO=(g,w,y)=>{g=g.replace(/p/g,"i");var E=n["dynCall_"+g];return E(w,...y)},Dc=[],vb,Sb=(g)=>{var w=Dc[g];if(!w){if(g>=Dc.length)Dc.length=g+1;Dc[g]=w=vb.get(g)}return w},gO=(g,w,y=[])=>{if(g.includes("j"))return pO(g,w,y);var E=Sb(w)(...y);return E},bO=(g,w)=>(...y)=>gO(g,w,y),wO=(g,w)=>{g=en(g);function y(){if(g.includes("j"))return bO(g,w);return Sb(w)}var E=y();if(typeof E!="function")Ee(`unknown function pointer with signature ${g}: ${w}`);return E},$O=(g,w)=>{var y=Vf(w,function(E){this.name=w,this.message=E;var P=Error(E).stack;if(P!==void 0)this.stack=this.toString()+`
3
+ `+P.replace(/^Error(:[^\n]*)?\n/,"")});return y.prototype=Object.create(g.prototype),y.prototype.constructor=y,y.prototype.toString=function(){if(this.message===void 0)return this.name;else return`${this.name}: ${this.message}`},y},Eb,Mb=(g)=>{var w=Pb(g),y=en(w);return Dn(w),y},kO=(g,w)=>{var y=[],E={};function P(R){if(E[R])return;if(yi[R])return;if(zc[R]){zc[R].forEach(P);return}y.push(R),E[R]=!0}throw w.forEach(P),new Eb(`${g}: `+y.map(Mb).join([", "]))},yO=(g)=>{g=g.trim();let w=g.indexOf("(");if(w!==-1)return g.substr(0,w);else return g},vO=(g,w,y,E,P,R,U)=>{var H=hO(w,y);g=en(g),g=yO(g),P=wO(E,P),dO(g,function(){kO(`Cannot call ${g} due to unbound types`,H)},w-1),tO([],H,(K)=>{var Q=[K[0],null].concat(K.slice(1));return mO(g,lO(g,Q,null,P,R,U),w-1),[]})},SO=(g,w,y)=>{switch(w){case 1:return y?(E)=>D[E]:(E)=>B[E];case 2:return y?(E)=>F[E>>1]:(E)=>pt[E>>1];case 4:return y?(E)=>Xt[E>>2]:(E)=>it[E>>2];default:throw TypeError(`invalid integer width (${w}): ${g}`)}},EO=(g,w,y,E,P)=>{if(w=en(w),P===-1)P=4294967295;var R=(gt)=>gt;if(E===0){var U=32-8*y;R=(gt)=>gt<<U>>>U}var H=w.includes("unsigned"),K=(gt,Lt)=>{},Q;if(H)Q=function(gt,Lt){return K(Lt,this.name),Lt>>>0};else Q=function(gt,Lt){return K(Lt,this.name),Lt};Kn(g,{name:w,fromWireType:R,toWireType:Q,argPackAdvance:vi,readValueFromPointer:SO(w,y,E!==0),destructorFunction:null})},MO=(g,w,y)=>{var E=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],P=E[w];function R(U){var H=it[U>>2],K=it[U+4>>2];return new P(D.buffer,K,H)}y=en(y),Kn(g,{name:y,fromWireType:R,argPackAdvance:vi,readValueFromPointer:R},{ignoreDuplicateRegistrations:!0})},xO=(g,w,y,E)=>{if(!(E>0))return 0;var P=y,R=y+E-1;for(var U=0;U<g.length;++U){var H=g.charCodeAt(U);if(H>=55296&&H<=57343){var K=g.charCodeAt(++U);H=65536+((H&1023)<<10)|K&1023}if(H<=127){if(y>=R)break;w[y++]=H}else if(H<=2047){if(y+1>=R)break;w[y++]=192|H>>6,w[y++]=128|H&63}else if(H<=65535){if(y+2>=R)break;w[y++]=224|H>>12,w[y++]=128|H>>6&63,w[y++]=128|H&63}else{if(y+3>=R)break;w[y++]=240|H>>18,w[y++]=128|H>>12&63,w[y++]=128|H>>6&63,w[y++]=128|H&63}}return w[y]=0,y-P},OO=(g,w,y)=>xO(g,B,w,y),PO=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E<=127)w++;else if(E<=2047)w+=2;else if(E>=55296&&E<=57343)w+=4,++y;else w+=3}return w},xb=(g,w,y)=>{var E=w+y,P="";while(!(w>=E)){var R=g[w++];if(!R)return P;if(!(R&128)){P+=String.fromCharCode(R);continue}var U=g[w++]&63;if((R&224)==192){P+=String.fromCharCode((R&31)<<6|U);continue}var H=g[w++]&63;if((R&240)==224)R=(R&15)<<12|U<<6|H;else R=(R&7)<<18|U<<12|H<<6|g[w++]&63;if(R<65536)P+=String.fromCharCode(R);else{var K=R-65536;P+=String.fromCharCode(55296|K>>10,56320|K&1023)}}return P},IO=(g,w)=>g?xb(B,g,w):"",RO=(g,w)=>{w=en(w);var y=w==="std::string";Kn(g,{name:w,fromWireType(E){var P=it[E>>2],R=E+4,U;if(y){var H=R;for(var K=0;K<=P;++K){var Q=R+K;if(K==P||B[Q]==0){var gt=Q-H,Lt=IO(H,gt);if(U===void 0)U=Lt;else U+=String.fromCharCode(0),U+=Lt;H=Q+1}}}else{var se=Array(P);for(var K=0;K<P;++K)se[K]=String.fromCharCode(B[R+K]);U=se.join("")}return Dn(E),U},toWireType(E,P){if(P instanceof ArrayBuffer)P=new Uint8Array(P);var R,U=typeof P=="string";if(!(U||P instanceof Uint8Array||P instanceof Uint8ClampedArray||P instanceof Int8Array))Ee("Cannot pass non-string to std::string");if(y&&U)R=PO(P);else R=P.length;var H=Qf(4+R+1),K=H+4;if(it[H>>2]=R,y&&U)OO(P,K,R+1);else if(U)for(var Q=0;Q<R;++Q){var gt=P.charCodeAt(Q);if(gt>255)Dn(K),Ee("String has UTF-16 code units that do not fit in 8 bits");B[K+Q]=gt}else for(var Q=0;Q<R;++Q)B[K+Q]=P[Q];if(E!==null)E.push(Dn,H);return H},argPackAdvance:vi,readValueFromPointer:Yf,destructorFunction(E){Dn(E)}})},AO=(g,w)=>{var y="";for(var E=0;!(E>=w/2);++E){var P=F[g+E*2>>1];if(P==0)break;y+=String.fromCharCode(P)}return y},NO=(g,w,y)=>{if(y??=2147483647,y<2)return 0;y-=2;var E=w,P=y<g.length*2?y/2:g.length;for(var R=0;R<P;++R){var U=g.charCodeAt(R);F[w>>1]=U,w+=2}return F[w>>1]=0,w-E},TO=(g)=>g.length*2,HO=(g,w)=>{var y=0,E="";while(!(y>=w/4)){var P=Xt[g+y*4>>2];if(P==0)break;if(++y,P>=65536){var R=P-65536;E+=String.fromCharCode(55296|R>>10,56320|R&1023)}else E+=String.fromCharCode(P)}return E},FO=(g,w,y)=>{if(y??=2147483647,y<4)return 0;var E=w,P=E+y-4;for(var R=0;R<g.length;++R){var U=g.charCodeAt(R);if(U>=55296&&U<=57343){var H=g.charCodeAt(++R);U=65536+((U&1023)<<10)|H&1023}if(Xt[w>>2]=U,w+=4,w+4>P)break}return Xt[w>>2]=0,w-E},LO=(g)=>{var w=0;for(var y=0;y<g.length;++y){var E=g.charCodeAt(y);if(E>=55296&&E<=57343)++y;w+=4}return w},CO=(g,w,y)=>{y=en(y);var E,P,R,U;if(w===2)E=AO,P=NO,U=TO,R=(H)=>pt[H>>1];else if(w===4)E=HO,P=FO,U=LO,R=(H)=>it[H>>2];Kn(g,{name:y,fromWireType:(H)=>{var K=it[H>>2],Q,gt=H+4;for(var Lt=0;Lt<=K;++Lt){var se=H+4+Lt*w;if(Lt==K||R(se)==0){var Ue=se-gt,Io=E(gt,Ue);if(Q===void 0)Q=Io;else Q+=String.fromCharCode(0),Q+=Io;gt=se+w}}return Dn(H),Q},toWireType:(H,K)=>{if(typeof K!="string")Ee(`Cannot pass non-string to C++ string type ${y}`);var Q=U(K),gt=Qf(4+Q+w);if(it[gt>>2]=Q/w,P(K,gt+4,Q+w),H!==null)H.push(Dn,gt);return gt},argPackAdvance:vi,readValueFromPointer:Yf,destructorFunction(H){Dn(H)}})},jO=(g,w)=>{w=en(w),Kn(g,{isVoid:!0,name:w,argPackAdvance:0,fromWireType:()=>{return},toWireType:(y,E)=>{return}})},_O=(g,w,y)=>B.copyWithin(g,w,w+y),Zf=[],GO=(g,w,y,E)=>{return g=Zf[g],w=Si.toValue(w),g(null,w,y,E)},BO={},UO=(g)=>{var w=BO[g];if(w===void 0)return en(g);return w},Ob=()=>{if(typeof globalThis=="object")return globalThis;function g(w){w.$$$embind_global$$$=w;var y=typeof $$$embind_global$$$=="object"&&w.$$$embind_global$$$==w;if(!y)delete w.$$$embind_global$$$;return y}if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;if(typeof global=="object"&&g(global))$$$embind_global$$$=global;else if(typeof self=="object"&&g(self))$$$embind_global$$$=self;if(typeof $$$embind_global$$$=="object")return $$$embind_global$$$;throw Error("unable to get global object.")},WO=(g)=>{if(g===0)return Si.toHandle(Ob());else return g=UO(g),Si.toHandle(Ob()[g])},KO=(g)=>{var w=Zf.length;return Zf.push(g),w},zO=(g,w)=>{var y=yi[g];if(y===void 0)Ee(`${w} has unknown type ${Mb(g)}`);return y},DO=(g,w)=>{var y=Array(g);for(var E=0;E<g;++E)y[E]=zO(it[w+E*4>>2],"parameter "+E);return y},qO=Reflect.construct,JO=(g,w,y)=>{var E=[],P=g.toWireType(E,y);if(E.length)it[w>>2]=Si.toHandle(E);return P},YO=(g,w,y)=>{var E=DO(g,w),P=E.shift();g--;var R=Array(g),U=(K,Q,gt,Lt)=>{var se=0;for(var Ue=0;Ue<g;++Ue)R[Ue]=E[Ue].readValueFromPointer(Lt+se),se+=E[Ue].argPackAdvance;var Io=y===1?qO(Q,R):Q.apply(K,R);return JO(P,gt,Io)},H=`methodCaller<(${E.map((K)=>K.name).join(", ")}) => ${P.name}>`;return KO(Vf(H,U))},VO=(g)=>{if(g>9)zn[g+1]+=1},ZO=(g)=>{var w=Si.toValue(g);yb(w),Jf(g)},XO=()=>{fb("")},QO=()=>2147483648,tP=(g)=>{var w=L.buffer,y=(g-w.byteLength+65535)/65536;try{return L.grow(y),gn(),1}catch(E){}},eP=(g)=>{var w=B.length;g>>>=0;var y=QO();if(g>y)return!1;var E=(K,Q)=>K+(Q-K%Q)%Q;for(var P=1;P<=4;P*=2){var R=w*(1+0.2/P);R=Math.min(R,g+100663296);var U=Math.min(y,E(Math.max(g,R),65536)),H=tP(U);if(H)return!0}return!1},Xf={},nP=()=>l||"./this.program",Xs=()=>{if(!Xs.strings){var g=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:g,_:nP()};for(var y in Xf)if(Xf[y]===void 0)delete w[y];else w[y]=Xf[y];var E=[];for(var y in w)E.push(`${y}=${w[y]}`);Xs.strings=E}return Xs.strings},rP=(g,w)=>{for(var y=0;y<g.length;++y)D[w++]=g.charCodeAt(y);D[w]=0},iP=(g,w)=>{var y=0;return Xs().forEach((E,P)=>{var R=w+y;it[g+P*4>>2]=R,rP(E,R),y+=E.length+1}),0},oP=(g,w)=>{var y=Xs();it[g>>2]=y.length;var E=0;return y.forEach((P)=>E+=P.length+1),it[w>>2]=E,0},sP=0,aP=()=>Y2||sP>0,cP=(g)=>{if(_=g,!aP())n.onExit?.(g),N=!0;d(g,new J2(g))},uP=(g,w)=>{_=g,cP(g)},lP=uP,fP=(g)=>52,dP=(g,w)=>w+2097152>>>0<4194305-!!g?(g>>>0)+w*4294967296:NaN;function hP(g,w,y,E,P){var R=dP(w,y);return 70}var mP=[null,[],[]],pP=(g,w)=>{var y=mP[g];if(w===0||w===10)(g===1?x:M)(xb(y,0)),y.length=0;else y.push(w)},gP=(g,w,y,E)=>{var P=0;for(var R=0;R<y;R++){var U=it[w>>2],H=it[w+4>>2];w+=8;for(var K=0;K<H;K++)pP(g,B[U+K]);P+=H}return it[E>>2]=P,0};Q2(),wb=n.BindingError=class extends Error{constructor(w){super(w);this.name="BindingError"}},$b=n.InternalError=class extends Error{constructor(w){super(w);this.name="InternalError"}},iO(),Eb=n.UnboundTypeError=$O(Error,"UnboundTypeError");var bP={o:Z2,q:X2,m:nO,l:sO,j:cO,f:vO,b:EO,a:MO,e:RO,c:CO,n:jO,v:_O,i:GO,d:Jf,k:WO,h:YO,y:VO,g:ZO,r:XO,s:eP,t:iP,u:oP,z:lP,w:fP,p:hP,x:gP},oe=q2(),wP=()=>(wP=oe.B)(),Pb=(g)=>(Pb=oe.C)(g),Qf=(g)=>(Qf=oe.D)(g),Dn=(g)=>(Dn=oe.E)(g),$P=(g)=>($P=oe._emscripten_stack_restore)(g),kP=(g)=>(kP=oe._emscripten_stack_alloc)(g),yP=()=>(yP=oe.emscripten_stack_get_current)(),vP=(g)=>(vP=oe.__cxa_increment_exception_refcount)(g),Ib=(g)=>(Ib=oe.G)(g),SP=n.dynCall_jiji=(g,w,y,E,P)=>(SP=n.dynCall_jiji=oe.H)(g,w,y,E,P),qc;Zs=function g(){if(!qc)Rb();if(!qc)Zs=g};function Rb(){if($i>0)return;if(Wf(),$i>0)return;function g(){if(qc)return;if(qc=!0,n.calledRun=!0,N)return;if(Kf(),r(n),n.onRuntimeInitialized)n.onRuntimeInitialized();j2()}if(n.setStatus)n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),g()},1);else g()}if(n.preInit){if(typeof n.preInit=="function")n.preInit=[n.preInit];while(n.preInit.length>0)n.preInit.pop()()}return Rb(),o}})(),Xw=wR;function Pd(t){if(t[0]!==255||t[1]!==216)return null;let e=2;while(e+9<t.length){if(t[e]!==255){e++;continue}let n=t[e+1];if(n===255){e++;continue}let r=t[e+2]<<8|t[e+3];if(n>=192&&n<=207&&n!==196&&n!==200&&n!==204)return{height:t[e+5]<<8|t[e+6],width:t[e+7]<<8|t[e+8]};e+=2+r}return null}var Od;function kR(){if(Od)return Od;let t=new WebAssembly.Module($R(Buffer.from("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","base64"))),e={noInitialRun:!0,print:()=>{return},printErr:()=>{return},instantiateWasm:(n,r)=>{let i=new WebAssembly.Instance(t,n);return r(i),i.exports}};if(Xw(e),typeof e.decode!=="function")throw Error("the JPEG decoder did not start");return Od=e,e}function Qw(t,e){let n=Pd(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);let r=null;try{r=kR().decode(t,!0)}catch{r=null}if(!r)throw Error("not a JPEG image this decoder can read");return{width:r.width,height:r.height,data:new Uint8Array(r.data.buffer,r.data.byteOffset,r.data.length)}}var jo=[137,80,78,71,13,10,26,10],n0=13,r0=3;function Ii(t){return t.length>=jo.length&&jo.every((e,n)=>t[n]===e)}var i0={0:1,2:3,4:2,6:4};function ER(t){if(t.length<33||!Ii(t))return;let e=Buffer.from(t.buffer,t.byteOffset,t.byteLength),n=e.readUInt32BE(16),r=e.readUInt32BE(20),i=e[25];if(e[24]!==8||e[28]!==0||i0[i]===void 0)return;let o=[];for(let s=8;s+12<=e.length;){let a=e.readUInt32BE(s),c=e.toString("latin1",s+4,s+8);if(c==="IDAT")o.push(e.subarray(s+8,s+8+a));else if(c==="tRNS"||c==="IEND"){if(c==="tRNS"&&i!==4&&i!==6)return;break}s+=12+a}return o.length>0?{width:n,height:r,type:i,idat:o}:void 0}function MR(t,e,n,r){let i=new Uint8Array(e);for(let o=0;o<n;o++){let s=o*(e+1),a=t[s],c=s+1,u=o>0?t:i,f=o>0?c-e-1:0;if(a===1)for(let l=r;l<e;l++)t[c+l]=t[c+l]+t[c+l-r];else if(a===2)for(let l=0;l<e;l++)t[c+l]=t[c+l]+u[f+l];else if(a===3){for(let l=0;l<r;l++)t[c+l]=t[c+l]+(u[f+l]>>1);for(let l=r;l<e;l++)t[c+l]=t[c+l]+(t[c+l-r]+u[f+l]>>1)}else if(a===4){for(let l=0;l<r;l++)t[c+l]=t[c+l]+u[f+l];for(let l=r;l<e;l++){let d=t[c+l-r],h=u[f+l],m=u[f+l-r],p=Math.abs(h-m),b=Math.abs(d-m),$=Math.abs(d+h-2*m);t[c+l]=t[c+l]+(p<=b&&p<=$?d:b<=$?h:m)}}else if(a!==0)throw Error(`bad PNG filter ${a}`)}}function xR(t){let{width:e,height:n,type:r}=t,i=i0[r],o=e*i,s=SR(Buffer.concat(t.idat),{chunkSize:Math.min(268435456,Math.max(65536,n*(o+1)))});if(s.length<n*(o+1))throw Error("truncated PNG");MR(s,o,n,i);let a=new Uint8Array(e*n*4);for(let c=0;c<n;c++){let u=c*(o+1)+1,f=c*e*4;if(r===6)a.set(s.subarray(u,u+o),f);else if(r===2)for(let l=0,d=u,h=f;l<e;l++,d+=3,h+=4)a[h]=s[d],a[h+1]=s[d+1],a[h+2]=s[d+2],a[h+3]=255;else if(r===0)for(let l=0,d=f;l<e;l++,d+=4){let h=s[u+l];a[d]=h,a[d+1]=h,a[d+2]=h,a[d+3]=255}else for(let l=0,d=u,h=f;l<e;l++,d+=2,h+=4){let m=s[d];a[h]=m,a[h+1]=m,a[h+2]=m,a[h+3]=s[d+1]}}return{width:e,height:n,data:a}}function Bt(t){let e=ER(t);if(e)return xR(e);let n=e0.PNG.sync.read(Buffer.from(t));return{width:n.width,height:n.height,data:new Uint8Array(n.data)}}function Tr(t,e){if(Ii(t)){let n=yn(t);if(n&&n.width*n.height>e)throw Error(`${n.width}×${n.height} is over ${e/1e6} megapixels`);return Bt(t)}if(t[0]===255&&t[1]===216)return Qw(t,e);throw Error("not a PNG or JPEG image")}function o0(t,e){let{width:n,height:r,at:i}=e,o=Math.max(0,i.x),s=Math.max(0,i.y),a=Math.min(n,i.x+i.w),c=Math.min(r,i.y+i.h);if(a<=o||c<=s)return;let u={x:o,y:s,w:a-o,h:c-s};if(i.w===t.width&&i.h===t.height)return{part:t,box:u,dx:o-i.x,dy:s-i.y};let f={x:(o-i.x)*t.width/i.w,y:(s-i.y)*t.height/i.h,w:u.w*t.width/i.w,h:u.h*t.height/i.h};return{part:ra(t,f,u.w,u.h),box:u,dx:0,dy:0}}function s0(t,e){let n=new Uint8Array(e.width*e.height*4),r=o0(t,e);if(r){let{part:i,box:o,dx:s,dy:a}=r;for(let c=0;c<o.h;c++){let u=((c+a)*i.width+s)*4;n.set(i.data.subarray(u,u+o.w*4),((o.y+c)*e.width+o.x)*4)}}return{width:e.width,height:e.height,data:n}}function Hr(t,e,n,r={width:t.width,height:t.height,at:{x:0,y:0,w:t.width,h:t.height}}){let i=ot(e),{width:o,height:s}=r,a=new Uint8Array(o*s*3);for(let h=0;h<o*3;h+=3)a.set(i,h);for(let h=1;h<s;h++)a.copyWithin(h*o*3,0,o*3);let c=o0(t,r);if(!c)return{width:o,height:s,data:a};let{part:u,box:f,dx:l,dy:d}=c;for(let h=0;h<f.h;h++)for(let m=0;m<f.w;m++){let p=((h+d)*u.width+m+l)*4,b=((f.y+h)*o+f.x+m)*3,$=u.data[p+3]/255*n;for(let k=0;k<3;k++)a[b+k]=Math.round(i[k]*(1-$)+u.data[p+k]*$)}return{width:o,height:s,data:a}}function t0(t,e){for(let n=0;n+e.length<=t.length;n++){let r=!0;for(let i=0;i<e.length&&r;i++)r=t[n+i]===e.charCodeAt(i);if(r)return n}return-1}function yn(t){if(t.length<33||!Ii(t))return null;let e=new DataView(t.buffer,t.byteOffset,t.byteLength),n=e.getUint32(16),r=e.getUint32(20);if(t[25]===4||t[25]===6)return{width:n,height:r,alpha:!0};let i=t0(t,"IDAT");return{width:n,height:r,alpha:t0(i===-1?t:t.subarray(0,i),"tRNS")!==-1}}function a0(t,e=n0){let{width:n,height:r,data:i}=t,o=(f)=>{for(let l=f*n*4+3,d=l+n*4;l<d;l+=4)if(i[l]>=e)return!0;return!1},s=0;while(s<r&&!o(s))s++;if(s===r)return null;let a=r-1;while(!o(a))a--;let c=n,u=-1;for(let f=s;f<=a;f++){let l=f*n*4+3;for(let d=0;d<c;d++)if(i[l+d*4]>=e){c=d;break}for(let d=n-1;d>u;d--)if(i[l+d*4]>=e){u=d;break}}return{x:c,y:s,w:u-c+1,h:a-s+1}}function Qn(t,e={x:0,y:0,w:t.width,h:t.height}){let n=0;for(let r=e.y;r<e.y+e.h;r++)for(let i=e.x;i<e.x+e.w;i++)if((t.data[(r*t.width+i)*4+3]??0)<n0)n++;return Math.round(n*100/(e.w*e.h))}function c0(t,e,n){let r=Math.min(e/t.width,n/t.height),i=Math.max(1,Math.round(t.width*r)),o=Math.max(1,Math.round(t.height*r)),s=ra(t,{x:0,y:0,w:t.width,h:t.height},i,o),a=new Uint8Array(e*n*4),c=Math.floor((e-i)/2),u=Math.floor((n-o)/2);for(let f=0;f<o;f++)a.set(s.data.subarray(f*i*4,(f+1)*i*4),((u+f)*e+c)*4);return{width:e,height:n,data:a}}function OR(t){let e=Math.abs(t);if(e<1)return(7*e*e*e-12*e*e+5.333333333333333)/6;if(e<2)return(-2.3333333333333335*e*e*e+12*e*e-20*e+10.666666666666666)/6;return 0}function Id(t,e,n,r){if(n===r&&Number.isInteger(e)&&e>=0&&e+r<=t)return{first:Int32Array.from({length:r},(f,l)=>e+l),size:1,weights:new Float32Array(r).fill(1)};let i=n/r,o=Math.max(1,i),s=2*o,a=Math.min(t,Math.ceil(2*s)+2),c=new Int32Array(r),u=new Float32Array(r*a);for(let f=0;f<r;f++){let l=e+(f+0.5)*i,d=Math.floor(l-s-0.5),h=Math.max(0,Math.min(t-a,d));c[f]=h;let m=0;for(let p=d;p<=Math.ceil(l+s-0.5);p++){let b=OR((p+0.5-l)/o),$=f*a+Math.min(t-1,Math.max(0,p))-h;u[$]=(u[$]??0)+b,m+=b}for(let p=f*a;p<(f+1)*a;p++)u[p]=(u[p]??0)/m}return{first:c,size:a,weights:u}}function u0(t,e,n,r,i,o,s){let a=Id(t,e.y,e.h,r),c=n*i,u=a.size+1,f=Array.from({length:u},()=>new Float32Array(c)),l=new Int32Array(u).fill(-1),d=new Float32Array(c),h=[],m=[];for(let p=0;p<r;p++){h.length=0,m.length=0;let b=a.first[p];for(let k=0;k<a.size;k++){let v=a.weights[p*a.size+k];if(v===0)continue;let S=b+k,x=S%u,M=f[x];if(l[x]!==S)o(S,M),l[x]=S;h.push(M),m.push(v)}let $=0;while($<h.length){let k=h[$],v=m[$];if(h.length-$>=4){let S=h[$+1],x=h[$+2],M=h[$+3],I=m[$+1],L=m[$+2],N=m[$+3];if($===0)for(let _=0;_<c;_++)d[_]=k[_]*v+S[_]*I+x[_]*L+M[_]*N;else for(let _=0;_<c;_++)d[_]=d[_]+(k[_]*v+S[_]*I+x[_]*L+M[_]*N);$+=4}else{if($===0)for(let S=0;S<c;S++)d[S]=k[S]*v;else for(let S=0;S<c;S++)d[S]=d[S]+k[S]*v;$+=1}}if(h.length===0)d.fill(0);s(p,d)}}function l0(t,e,n,r,i){let o=0,s=n;while(o<s){let c=o+s>>1;if(t[c]+e-1<r)o=c+1;else s=c}let a=o;s=n;while(o<s){let c=o+s>>1;if(t[c]<=i)o=c+1;else s=c}return[a,o]}function ra(t,e,n,r){let i=Id(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(s*4),c=new Uint8Array(n*r*4);return u0(t.height,e,n,r,4,(u,f)=>{let l=u*s*4,d=s,h=-1;for(let b=0,$=0;b<s*4;b+=4,$++){let k=o[l+b+3];if(k===0){a[b]=0,a[b+1]=0,a[b+2]=0,a[b+3]=0;continue}if($<d)d=$;h=$,a[b]=o[l+b]*k,a[b+1]=o[l+b+1]*k,a[b+2]=o[l+b+2]*k,a[b+3]=k}if(f.fill(0),h<0)return;let[m,p]=l0(i.first,i.size,n,d,h);for(let b=m;b<p;b++){let $=i.first[b]*4,k=b*i.size,v=0,S=0,x=0,M=0;for(let I=0;I<i.size;I++){let L=i.weights[k+I],N=$+I*4;v+=a[N]*L,S+=a[N+1]*L,x+=a[N+2]*L,M+=a[N+3]*L}f[b*4]=v,f[b*4+1]=S,f[b*4+2]=x,f[b*4+3]=M}},(u,f)=>{let l=u*n*4;for(let d=0;d<n;d++){let h=d*4,m=f[h+3];if(m<=0)continue;let p=f[h]/m;c[l+h]=(p<0?0:p>255?255:p)+0.5,p=f[h+1]/m,c[l+h+1]=(p<0?0:p>255?255:p)+0.5,p=f[h+2]/m,c[l+h+2]=(p<0?0:p>255?255:p)+0.5,c[l+h+3]=(m>255?255:m)+0.5}}),{width:n,height:r,data:c}}function f0(t,e,n,r){let i=Id(t.width,e.x,e.w,n),o=t.data,s=t.width,a=new Float32Array(n*r);return u0(t.height,e,n,r,1,(c,u)=>{let f=c*s,l=s,d=-1;for(let p=0;p<s;p++)if(o[f+p]!==0){if(p<l)l=p;d=p}if(u.fill(0),d<0)return;let[h,m]=l0(i.first,i.size,n,l,d);for(let p=h;p<m;p++){let b=f+i.first[p],$=p*i.size,k=0;for(let v=0;v<i.size;v++)k+=o[b+v]*i.weights[$+v];u[p]=k}},(c,u)=>{a.set(u,c*n)}),{width:n,height:r,data:a}}function ia(t,e){if(e<=0)return t;let n=Math.max(1,Math.ceil(e*3)),r=Array.from({length:2*n+1},(f,l)=>Math.exp(-((l-n)**2)/(2*e*e))),i=r.reduce((f,l)=>f+l,0),{width:o,height:s,data:a}=t,c=new Float32Array(o*s);for(let f=0;f<s;f++){let l=f*o;for(let d=0;d<o;d++){let h=0;for(let m=-n;m<=n;m++)h+=(a[l+Math.min(o-1,Math.max(0,d+m))]??0)*(r[m+n]??0);c[l+d]=h/i}}let u=new Float32Array(o*s);for(let f=0;f<s;f++){let l=f*o;for(let d=-n;d<=n;d++){let h=(r[d+n]??0)/i,m=Math.min(s-1,Math.max(0,f+d))*o;for(let p=0;p<o;p++)u[l+p]=(u[l+p]??0)+(c[m+p]??0)*h}}return{width:o,height:s,data:u}}function oa(t){let e=new Uint8Array(t.data.length);for(let n=0;n<e.length;n++){let r=t.data[n];e[n]=(r<0?0:r>255?255:r)+0.5}return{width:t.width,height:t.height,data:e}}function Ri(t){let e=new Uint8Array(t.width*t.height);for(let n=0;n<e.length;n++)e[n]=t.data[n*4+3]??0;return{width:t.width,height:t.height,data:e}}var PR=Array.from({length:256},(t,e)=>{let n=e;for(let r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;return n>>>0});function IR(t){let e=4294967295;for(let n of t)e=(PR[(e^n)&255]??0)^e>>>8;return(e^4294967295)>>>0}function Nr(t,e){let n=Buffer.alloc(12+e.length);return n.writeUInt32BE(e.length,0),n.write(t,4,"latin1"),n.set(e,8),n.writeUInt32BE(IR(n.subarray(4,8+e.length)),8+e.length),n}function d0(t,e,n){let r=new Uint8Array(n*(e+1));r.set(t.subarray(0,e),1);for(let i=1;i<n;i++){let o=i*(e+1),s=i*e,a=s-e;r[o]=2;for(let c=0;c<e;c++)r[o+1+c]=t[s+c]-t[a+c]}return r}function h0(t){return vR(t,{level:1,strategy:yR.Z_RLE})}function m0(t,e,n){let r=Buffer.alloc(13);return r.writeUInt32BE(t.width,0),r.writeUInt32BE(t.height,4),r[8]=8,r[9]=e,Buffer.concat([Buffer.from(jo),Nr("IHDR",r),...n,Nr("IDAT",h0(d0(t.data,t.width,t.height))),Nr("IEND",new Uint8Array)])}function p0(t){let[e,n,r]=ot(t),i=new Uint8Array(768);for(let o=0;o<256;o++)i.set([e,n,r],o*3);return Nr("PLTE",i)}function g0(t,e,n,r,i){let o=Buffer.alloc(13);return o.writeUInt32BE(t,0),o.writeUInt32BE(e,4),o[8]=8,o[9]=n,Buffer.concat([Buffer.from(jo),Nr("IHDR",o),Nr("IDAT",h0(d0(i,t*r,e))),Nr("IEND",new Uint8Array)])}function Fr(t){return g0(t.width,t.height,2,3,t.data)}function Ke(t){return g0(t.width,t.height,6,4,t.data)}function Ai(t,e){return m0(t,r0,[p0(e),Nr("tRNS",Uint8Array.from({length:256},(n,r)=>r))])}function Rd(t){return m0(t,0,[])}function tu(t,e){if(!Ii(t)||t[25]!==r0)return;let n=Buffer.from(t.buffer,t.byteOffset,t.byteLength),r=[Buffer.from(jo)],i=jo.length;while(i+8<=n.length){let o=i+12+n.readUInt32BE(i);r.push(n.toString("latin1",i+4,i+8)==="PLTE"?p0(e):n.subarray(i,o)),i=o}return Buffer.concat(r)}var vn=100,Re=25000000,LR=536870912,_o=["safe","questionable","explicit"],Ni=["nudity","underwear"],Hd=["comic","monochrome","sketch","chibi"],M0=["off","5","10","25","50","100"],x0=["off","720","1080","1440","1800","2560"],O0={nudity:new Set(["nude","naked","topless","bottomless","nipples","naked_towel","undressing"]),underwear:new Set(["underwear","panties","pantsu","bra","lingerie","pantyshot"])},CR={comic:new Set(["comic","4koma"]),monochrome:new Set(["monochrome","greyscale"]),sketch:new Set(["sketch","lineart","line_art"]),chibi:new Set(["chibi"])},jR=/^(?:rating|score|width|height|filetype|dimension):/,sa={safe:"s",questionable:"q",explicit:"e"},P0=8191,_R=20000,I0=5000,b0=3000,w0=8,GR=8,BR=8000,UR=3000,R0=60000,$0=3,WR=3,KR="https://static.zerochan.net",A0="https://s1.zerochan.net",Fd=`ttheme/${lt.version} (+${lt.homepage})`,zR=["orig","tile","thumb","cut"],N0=new Map,DR=uA(process.env.TTHEME_FIND_HOSTS),qR=cA(process.env.TTHEME_FIND_CUTOUTS);TR(UR);var JR=["artist","character","copyright"];function k0(t){try{return RR(t)}catch{return[]}}function Go(t){return t.startsWith("//")?`https:${t}`:t}function Lr(t){return(/\.([a-z0-9]+)(?:\?.*)?$/i.exec(t)?.[1]??"").toLowerCase()}function Bo(t){let e=t.trim();if(!e)return[];let n=JSON.parse(e);if(Array.isArray(n))return n;let r=n.posts;return Array.isArray(r)?r:[]}function YR(t){let e=t.trim(),r=(e?JSON.parse(e):{}).tags??{};return new Map(Object.entries(r).map(([i,o])=>[i,String(o)]))}function Nd(t,e,n){let r=Go(String(t??""));return{file:r,width:Number(e)||0,height:Number(n)||0,ext:Lr(r)}}function tr(t){return String(t??"").split(/\s+/).filter(Boolean)}function Td(t){let e=typeof t==="number"?new Date(t*1000):typeof t==="string"?new Date(t):void 0;return e&&!Number.isNaN(e.getTime())?e.toISOString().slice(0,10):void 0}function T0(t,e){let n=Go(String(e.preview??""));if(!e.file||!n||!Number(t.id))return[];let r=Number(t.width??t.image_width)||0,i=Number(t.height??t.image_height)||0;return[{id:Number(t.id),width:r,height:i,file:e.file,preview:n,ext:e.ext,owner:String(e.owner??""),score:Number(t.score)||0,rating:String(t.rating??""),md5:String(e.md5??""),source:String(t.source??""),tags:tr(e.tags),named:e.named,...Td(t.created_at)?{posted:Td(t.created_at)}:{},solo:e.solo,family:Number(t.parent_id)||(t.has_children===!0?Number(t.id):0),smaller:e.versions.filter((o)=>o.file&&o.width>0&&o.height>0&&o.width*o.height<r*i)}]}function VR(t){let e=YR(t);return Bo(t).flatMap((n)=>{let r=Go(String(n.file_url??"")),i=String(n.tags??""),o=(s)=>tr(i).filter((a)=>e.get(a)===s);return T0(n,{preview:n.preview_url,file:r,ext:String(n.file_ext||Lr(r)).toLowerCase(),owner:n.author,md5:n.md5,tags:i,named:{artist:o("artist"),character:o("character"),copyright:o("copyright")},solo:void 0,versions:[Nd(n.jpeg_url,n.jpeg_width,n.jpeg_height),Nd(n.sample_url,n.sample_width,n.sample_height)]})})}function ZR(t){return Bo(t).flatMap((e)=>{let n=Go(String(e.file_url??"")),r=String(e.tag_string??""),i=e.media_asset??{};return T0(e,{preview:i.variants?.find((o)=>o.type==="360x360")?.url??e.preview_file_url,file:n,ext:String(e.file_ext||Lr(n)).toLowerCase(),owner:"",md5:e.md5,tags:r,named:{artist:tr(e.tag_string_artist),character:tr(e.tag_string_character),copyright:tr(e.tag_string_copyright)},solo:r.split(/\s+/).includes("solo"),versions:(i.variants??[]).map((o)=>Nd(o.url,o.width,o.height)).filter((o)=>o.ext==="jpg"||o.ext==="png").sort((o,s)=>s.width*s.height-o.width*o.height)})})}function H0(t){return t.toLowerCase().replace(/\s+/g,"_")}function XR(t){return(Array.isArray(t)?t:[]).map((e)=>H0(String(e)))}function QR(t){return String(t??"").replace(/[^0-9a-z]+/gi,".").replace(/^\.+|\.+$/g,"")||"zerochan"}function tA(t){let e=t.trim(),n=e?JSON.parse(e):{};return(Array.isArray(n.items)?n.items:n.id?[n]:[]).flatMap((i)=>{let o=Number(i.id);if(!o)return[];let s=XR(i.tags),a=Go(String(i.full??""));return[{id:o,width:Number(i.width)||0,height:Number(i.height)||0,file:a,ext:Lr(a),preview:`${A0}/${QR(i.tag??i.primary)}.600.${o}.jpg`,owner:"",score:0,rating:s.some((c)=>O0.nudity.has(c))?"q":"g",md5:String(i.md5??i.hash??""),source:String(i.source??""),tags:s,named:{artist:[],character:[],copyright:[]},solo:s.includes("solo"),family:0,smaller:[]}]})}var eA={mangaka:"artist",studio:"artist",character:"character",series:"copyright",game:"copyright"};function y0(t){return t.replace(/&(?:#(\d+)|amp|quot|apos|lt|gt);/g,(e,n)=>n?String.fromCharCode(Number(n)):{"&amp;":"&","&quot;":'"',"&apos;":"'","&lt;":"<","&gt;":">"}[e]??e)}function nA(t){let e={artist:[],character:[],copyright:[]};for(let[,r,i]of t.matchAll(/<li class="([a-z]+)[^"]*"[^>]*\bdata-tag="([^"]*)"/g)){let o=eA[r],s=H0(y0(i));if(o&&!e[o].includes(s))e[o].push(s)}let n=Td(/"datePublished":\s*"([^"]+)"/.exec(t)?.[1]);return{named:e,source:"",owner:y0(/\buploader = \{\s*name: '([^']*)'/.exec(t)?.[1]??""),...n?{posted:n}:{}}}function rA(t){return Number(/Zerochan has ([\d,]+) /.exec(t)?.[1]?.replace(/,/g,"")??0)}function iA(t){return Bo(t).flatMap((e)=>{let n=String(e.value??"");return n?[{value:n,count:Number(e.post_count)||0}]:[]})}function oA(t){return Bo(t).flatMap((e)=>{let n=String(e.name??"");return n?[{value:n,count:Number(e.count)||0}]:[]})}function sA(t){return Number(/count="(\d+)"/.exec(t)?.[1]??0)}function aA(t){let n=(t.trim()?JSON.parse(t):{}).counts?.posts;return n===null?Number.NaN:Number(n)||0}function cA(t){let e=new Map;for(let n of(t??"").split(/\s+/).filter(Boolean)){let r=n.indexOf("=");if(r>0)e.set(n.slice(0,r),n.slice(r+1).split(",").filter(Boolean))}return e}function uA(t){let e=new Map;for(let n of(t??"").split(/[\s,]+/).filter(Boolean)){let r=n.indexOf("="),i=n.slice(0,r);try{let o=new URL(n.slice(r+1));if(i&&o.protocol==="https:")e.set(i,o.origin)}catch{}}return e}function eu(t,e,n,r){let i=(t??"").split(/\s+/);if(r!==void 0&&i.includes(r))return[];let o=e.filter((s)=>i.includes(s));return o.length>0?o:[...n]}function Ti(t){return eu(t,_o,["safe"])}function Uo(t){return eu(t,Ni,Ni,"none")}function nu(t){return eu(t,Hd,[],"none")}function ca(t){let e=Z.map((n)=>n.name);return eu(t,e,e)}function Ld(t,e,n){return{score:Number(t)||0,size:Number(e)||0,png:n==="on"}}function ua(t){return[...new Set((t??"").toLowerCase().split(/[\s,]+/).map((e)=>e.replace(/^-+/,"")).filter(Boolean))]}function Cd(t,e,n){return{safe:new Set(t),questionable:new Set(e),explicit:new Set(n)}}function jd(t){let e=DR.get(t.key),n=qR.get(t.key);return{...t,origin:e??t.origin,moved:e!==void 0&&e!==t.origin,cutouts:n??t.cutouts,vouched:t.vouched&&n===void 0}}function F0(t){return t.length<2?t.join(""):t.map((e)=>`~${e}`).join(" ")}function L0(t){return t>0?[`width:>=${t}`,`height:>=${t}`]:[]}function v0(t){let e=jd(t),n=(r)=>new URLSearchParams({api_version:"2",include_tags:"1",...r});return{...e,scored:!0,narrow:({score:r,size:i})=>[...r>0?[`score:>=${r}`]:[],...L0(i)],cutouts:F0(e.cutouts),ratings:Cd([sa.safe],[sa.questionable],[sa.explicit]),rate:(r)=>{let[i]=r;if(r.length===1&&i)return`rating:${sa[i]}`;let o=_o.filter((a)=>!r.includes(a)),[s]=o;return o.length===1&&s?`-rating:${sa[s]}`:""},best:"order:score",tagBudget:Number.POSITIVE_INFINITY,ors:!0,postsUrl:(r,i)=>`${e.origin}/post.json?${n({limit:String(vn),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/post.xml?${new URLSearchParams({limit:"1",tags:r})}`,postUrl:(r)=>`${e.origin}/post.json?${n({tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/post/show/${r}`,parse:VR,count:sA,uploadedBy:(r)=>`user:${r}`}}function lA(t){let e=jd(t),n=Cd(["g"],["s","q"],["e"]);return{...e,scored:!0,narrow:({score:r,size:i,png:o})=>[...r>0?[`score:>=${r}`]:[],...L0(i),...o?["filetype:png"]:[]],cutouts:F0(e.cutouts),ratings:n,rate:(r)=>r.length===_o.length?"":`rating:${r.flatMap((i)=>[...n[i]]).join(",")}`,best:"order:score",tagBudget:2,ors:!0,postsUrl:(r,i)=>`${e.origin}/posts.json?${new URLSearchParams({limit:String(vn),page:String(i+1),tags:r})}`,countUrl:(r)=>`${e.origin}/counts/posts.json?${new URLSearchParams({tags:r})}`,postUrl:(r)=>`${e.origin}/posts.json?${new URLSearchParams({limit:"1",tags:`id:${r}`})}`,pageUrl:(r)=>`${e.origin}/posts/${r}`,parse:ZR,count:aA,uploadedBy:(r)=>`user:${r}`}}function Ad(t){return t.split(/\s+/).filter((e)=>e&&!/^(?:order|dimension):/.test(e)).map((e)=>e.split("_").map(encodeURIComponent).join("+")).join(",")}function S0(t){let e=t.split(/\s+/),n=e.find((r)=>r.startsWith("dimension:"))?.slice(10);return{s:e.includes("order:fav")?"fav":"id",...n?{d:n}:{}}}function fA(t){let e=jd(t);return{...e,scored:!1,narrow:({size:n})=>n>=1800?["dimension:huge"]:n>0?["dimension:large"]:[],cutouts:e.cutouts[0]??"",ratings:Cd(["g"],["q"],["e"]),rate:()=>"",best:"order:fav",tagBudget:3,ors:!1,missing:404,postsUrl:(n,r)=>`${e.origin}/${Ad(n)}?${new URLSearchParams({json:"",l:String(vn),p:String(r+1),...S0(n)})}`,countUrl:(n)=>`${e.origin}/${Ad(n)}?${new URLSearchParams({xml:"",l:"1"})}`,postUrl:(n)=>`${e.origin}/${n}?json=`,pageUrl:(n)=>`${e.origin}/${n}`,parse:tA,count:rA,credits:nA,counts:(n)=>Ad(n).split(",").length===1&&!("d"in S0(n)),guesses:(n)=>(n.tags.includes("transparent_background")?["png","jpg"]:["jpg","png"]).map((r)=>n.preview.replace(A0,KR).replace(/\.600\.(\d+)\.jpg$/,`.full.$1.${r}`))}}function dA(t){let e=E0(`https://${t}`);return Z.find((n)=>E0(n.origin)===e)}function _d(t){return t.split(/\s+/).filter((e)=>e&&!jR.test(e)).length}function ru(t,e){let n=t.trim();if(/^\d+$/.test(n))return{site:e,id:Number(n)};let r=/^([\w.]+):(\d+)$/.exec(n);if(r){let a=Z.find((c)=>c.key===r[1]||c.name===r[1]);return a&&{site:a,id:Number(r[2])}}let i;try{i=new URL(n)}catch{return}let o=dA(i.host),s=Number(i.searchParams.get("id")??i.pathname.split("/").filter(Boolean).at(-1));return o&&s>0?{site:o,id:s}:void 0}var Z=[lA({key:"danbooru",name:"danbooru",origin:"https://shima.donmai.us",cutouts:["transparent_background"],vouched:!1,ansi:2}),v0({key:"konachan",name:"konachan",origin:"https://konachan.net",cutouts:["transparent","vector"],vouched:!1,ansi:6}),v0({key:"yande",name:"yande.re",origin:"https://yande.re",cutouts:["transparent_png"],vouched:!0,ansi:5}),fA({key:"zerochan",name:"zerochan",origin:"https://www.zerochan.net",cutouts:["transparent_background"],vouched:!1,ansi:3})],Ot=Z.find((t)=>t.key==="danbooru"),Cr=134217728;function Ae(t,e){let n=Z.indexOf(t);return(n===-1?Z.length:n)*Cr+e}function E0(t){let e;try{e=new URL(t).hostname}catch{return""}return e.split(".").slice(-2).join(".")}function Hi(t,e,n=e){return e.mirror&&n===e?{site:Ot,url:e.mirror.file}:{site:t,url:n.file}}function iu(t,e){return e.mirror?{site:Ot,url:e.mirror.preview}:{site:t,url:e.preview}}function ou(t,e=Ni){return t.tags.filter((n)=>e.some((r)=>O0[r].has(n)))}function C0(t,e){return t.tags.filter((n)=>e.some((r)=>CR[r].has(n)))}function su(t,e,n=["safe"]){return n.some((r)=>t.ratings[r].has(e.rating))}function j0(t,e){return t.rate(["safe"])===""?void 0:_o.find((n)=>t.ratings[n].has(e.rating))}function En(t){return[t,...t.smaller].find((e)=>e.width*e.height<=Re)}function _0(t){let e=new Map;for(let[n,r]of[...t].sort(([i],[o])=>i<o?-1:1)){if(r==="")continue;e.set(r,[...e.get(r)??[],n])}return e}function jr(){return aa(process.env.XDG_CACHE_HOME??aa(HR(),".cache"),"ttheme")}function on(t){return aa(jr(),t.key)}function G0(t=LR,e=jr()){let n=[],r=0;for(let i of k0(e))for(let o of zR){let s=aa(e,i,o);for(let a of k0(s)){let c=aa(s,a);try{let{size:u,mtimeMs:f}=NR(c);n.push({path:c,size:u,at:f}),r+=u}catch{}}}n.sort((i,o)=>i.at-o.at);for(let i of n){if(r<=t)return;try{AR(i.path,{force:!0}),r-=i.size}catch{}}}function hA(t,e){if(t!==null&&/^\s*\d+\s*$/.test(t))return Number(t)*1000;let n=t===null?Number.NaN:Date.parse(t);return Number.isNaN(n)?R0:Math.max(0,n-e)}function Sn(t){return N0.get(t.key)??0}function mA(t){for(let e=t;e instanceof Error;e=e.cause)if(e.code==="ECONNRESET")return!0;return!1}function pA(t){return(t.headers.get("server")??"").startsWith("cloudflare")&&t.headers.get("cf-mitigated")==="challenge"}function gA(t,e){let n=new URL(e,t);if(!n.search)n.search=new URL(t).search;return n.href}async function er(t,e,n,r={},i=_R){let o=e;for(let s=1,a=0;;s++){let c=Sn(t)-Date.now();if(c>0)await FR(c,void 0,{signal:n});let u;try{u=await fetch(o,{headers:{"User-Agent":Fd,Referer:`${t.origin}/`,...r},redirect:"manual",signal:i?AbortSignal.any([n,AbortSignal.timeout(i)]):n})}catch(l){if(s<$0&&!n.aborted&&mA(l))continue;throw l}let f=u.headers.get("location");if(f&&u.status>=300&&u.status<400&&a<WR){await u.body?.cancel(),o=gA(o,f),a++,s--;continue}if(u.status===429&&s<$0){await u.body?.cancel();let l=hA(u.headers.get("retry-after"),Date.now());if(l>R0)throw Error(`${t.name} asks to wait ${Math.ceil(l/1000)}s`);N0.set(t.key,Math.max(Sn(t),Date.now()+l));continue}if(!u.ok)throw await u.body?.cancel(),Object.assign(Error(pA(u)?`${t.name} is behind a Cloudflare challenge`:`${t.name} answered ${u.status}`),{status:u.status});return u}}async function au(t,e,n){try{return await(await er(t,e,n)).text()}catch(r){if(t.missing!==void 0&&r.status===t.missing)return"";throw r}}async function B0(t,e,n,r){return t.parse(await au(t,t.postsUrl(e,n),r))}async function Gd(t,e,n){return t.count(await au(t,t.countUrl(e),n))}async function Fi(t,e,n){let[r]=t.parse(await au(t,t.postUrl(e),n));return r}async function la(t,e,n){return t.credits?.(await au(t,t.pageUrl(e),n))}var bA=/^https?:\/\/(?:i\.pximg\.net|i\d*\.pixiv\.net|img\d*\.pixiv\.net)\/\S*\/(\d+)(?:_p\d+)?(?:_\w+)?\.\w+(?:[?#]\S*)?$/i,wA=/^https?:\/\/(?:www\.)?pixiv\.net\/member_illust\.php\?\S*\billust_id=(\d+)/i;function Li(t){let e=bA.exec(t)?.[1]??wA.exec(t)?.[1];return e?`https://www.pixiv.net/artworks/${e}`:t}function fa(t,e){return t.credits!==void 0&&e.named.artist.length===0}function Wo(t,e){for(let n of JR){let r=e.named?.[n]??[];if(t.named[n].length===0&&r.length>0)t.named[n]=r}if(t.source||=e.source??"",t.owner||=e.owner??"",!t.posted&&e.posted)t.posted=e.posted}function $A(t){let e=new URLSearchParams({limit:String(2*vn),only:"md5,tag_string,tag_string_artist,tag_string_character,tag_string_copyright,source,file_url",tags:`md5:${t.join(",")}`});return`${Ot.origin}/posts.json?${e}`}function kA(t){return new Map(Bo(t).flatMap((e)=>{let n=String(e.md5??"");return n?[[n,{tags:tr(e.tag_string),named:{artist:tr(e.tag_string_artist),character:tr(e.tag_string_character),copyright:tr(e.tag_string_copyright)},source:String(e.source??""),file:Go(String(e.file_url??""))}]]:[]}))}function da(t,e){for(let n of t){let r=e.get(n.md5);if(!r)continue;if(n.tags=[...new Set([...n.tags,...r.tags])],Wo(n,r),n.solo=r.tags.includes("solo"),r.file.includes("/original/")){if(n.mirror={file:r.file,preview:r.file.replace("/original/","/360x360/").replace(/\.[a-z0-9]+$/i,".jpg")},!n.file)n.file=r.file,n.ext=Lr(r.file)}}}async function ha(t,e){let n=new Map;if(Sn(Ot)>Date.now())return n;for(let r=0;r<t.length;r+=vn){let i=await(await er(Ot,$A(t.slice(r,r+vn)),e,{},I0)).text();for(let[o,s]of kA(i))n.set(o,s)}return n}function yA(t){let e=new URLSearchParams([...t.map((n)=>["search[name_array][]",n]),["only","name,is_deleted,urls"],["limit",String(t.length)]]);return`${Ot.origin}/artists.json?${e}`}function vA(t){return new Map(Bo(t).flatMap((e)=>{let n=String(e.name??"");if(!n||e.is_deleted===!0)return[];let r=Array.isArray(e.urls)?e.urls:[];return[[n,r.flatMap((i)=>i.is_active===!1||!i.url?[]:[String(i.url)])]]}))}async function U0(t,e){let n=new Map;if(Sn(Ot)>Date.now())return n;for(let r=0;r<t.length;r+=vn){let i=await(await er(Ot,yA(t.slice(r,r+vn)),e,{},I0)).text();for(let[o,s]of vA(i))n.set(o,s)}return n}async function ma(t,e,n){if(e.file||!t.guesses)return;for(let r of t.guesses(e))try{let i=await er(t,r,n,{Range:`bytes=0-${P0}`}),o=yn(new Uint8Array(await i.arrayBuffer()));return e.file=r,e.ext=Lr(r),o}catch(i){if(n.aborted||i.status!==404)throw i}throw Error(`${t.name} keeps no png or jpg of ${e.id}`)}async function W0(t,e){if(Sn(Ot)<=Date.now())try{let i=new URLSearchParams({"search[query]":t,"search[type]":"tag_query",limit:String(w0)}),o=`${Ot.origin}/autocomplete.json?${i}`;return iA(await(await er(Ot,o,e,{},b0)).text())}catch(i){if(e.aborted)throw i}let n=Z.find((i)=>i.key==="yande"),r=new URLSearchParams({name:t,order:"count",limit:String(w0)});return oA(await(await er(n,`${n.origin}/tag.json?${r}`,e,{},b0)).text())}function SA(t){try{return(JSON.parse(t).related_tags??[]).flatMap(({tag:n})=>n?.name?[{value:n.name,count:Number(n.post_count)||0}]:[])}catch{return[]}}async function K0(t,e){if(Sn(Ot)>Date.now())return[];let n=new URLSearchParams({"search[query]":t,"search[category]":"character",limit:String(GR)});return SA(await(await er(Ot,`${Ot.origin}/related_tag.json?${n}`,e,{},BR)).text())}function z0(t,e){return e.slice(0,t.ors?t.tagBudget:1)}async function D0(t,e,n){let r=await er(t,e,n,{Range:`bytes=0-${P0}`});return yn(new Uint8Array(await r.arrayBuffer()))}async function cu(t,e,n,r){let i=await er(t,e,n,{},0),o=Number(i.headers.get("content-length"))||0,s=i.body?.getReader();if(!s)return new Uint8Array(await i.arrayBuffer());let a=[],c=0;for(;;){let{done:l,value:d}=await s.read();if(l)break;a.push(d),c+=d.length,r?.(c,o)}let u=new Uint8Array(c),f=0;for(let l of a)u.set(l,f),f+=l.length;return u}var EA=["pixiv","x","bsky","fanbox","skeb","patreon","fantia"],q0=[["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?users\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/users/${t}`],["pixiv",/^https?:\/\/(?:www\.)?pixiv\.net\/member\.php\?id=(\d+)$/i,(t)=>`https://www.pixiv.net/users/${t}`],["x",/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(?!(?:i|intent|home|search|explore|hashtag|share|settings)\/?$)(\w{1,15})\/?$/i,(t)=>`https://x.com/${t}`],["bsky",/^https?:\/\/bsky\.app\/profile\/(?!did:)([\w.-]+)\/?$/i,(t)=>`https://bsky.app/profile/${t}`],["fanbox",/^https?:\/\/([\w-]+)\.fanbox\.cc\/?$/i,(t)=>`https://${t}.fanbox.cc`],["fanbox",/^https?:\/\/(?:www\.)?pixiv\.net\/fanbox\/creator\/(\d+)\/?$/i,(t)=>`https://www.pixiv.net/fanbox/creator/${t}`],["skeb",/^https?:\/\/skeb\.jp\/@([\w-]+)\/?$/i,(t)=>`https://skeb.jp/@${t}`],["patreon",/^https?:\/\/(?:www\.)?patreon\.com\/(?:c\/)?(?!(?:user|posts|join|home|login|search)\/?$)([\w-]+)\/?$/i,(t)=>`https://www.patreon.com/${t}`],["fantia",/^https?:\/\/fantia\.jp\/fanclubs\/(\d+)\/?$/i,(t)=>`https://fantia.jp/fanclubs/${t}`]],MA=[[/^https?:\/\/(?:www\.)?pixiv\.net\/(?:en\/)?artworks\/(\d+)/i,(t)=>`pixiv ${t[1]}`],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\/(\w{1,15})\/status\/\d+/i,(t)=>`x ${t[1]}`],[/^https?:\/\/bsky\.app\/profile\/([\w.-]+)\/post\//i,(t)=>`bsky ${t[1]}`],[/^https?:\/\/([\w-]+)\.fanbox\.cc\/posts\/\d+/i,(t)=>`fanbox ${t[1]}`]],xA=[[/^https?:\/\/(?:www\.)?pixiv\.net\//i,"pixiv"],[/^https?:\/\/(?:www\.|mobile\.)?(?:twitter|x)\.com\//i,"x"],[/^https?:\/\/bsky\.app\//i,"bsky"]],OA=["x","pixiv","bsky"],PA={"shima.donmai.us":"danbooru.donmai.us"},IA=/^https?:\/\/[^\s\p{Cc}]+$/u;function J0(t){return IA.test(t)}function RA(t){return q0.find(([,e])=>e.test(t))?.[0]}function AA(t){return EA.flatMap((e)=>{for(let[n,r,i]of q0){if(n!==e)continue;for(let o of t){let s=r.exec(o)?.[1];if(s)return[i(s)]}}return[]})}function pa(t){return(t??[]).flatMap((e)=>{let n=RA(e);return n?[{kind:n,url:e}]:[]})}function NA(t){for(let[e,n]of MA){let r=e.exec(t);if(r)return n(r)}try{return new URL(t).hostname.replace(/^www\./,"")}catch{return t}}function TA(t){try{let e=new URL(t),n=PA[e.hostname];if(n)e.hostname=n;return e.href}catch{return t}}function HA(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function Bd(t){let e=t.source??"";return J0(e)?{label:NA(e),url:e}:void 0}function FA(t){let e=(t.from??"").split(" "),n=e[2]??"";return J0(n)?{label:e.slice(0,2).join(" "),url:n}:void 0}function LA(t,e){let n=e?xA.find(([i])=>i.test(e))?.[1]:void 0,r=pa(t);return OA.flatMap((i)=>i===n?[]:r.filter((o)=>o.kind===i))[0]?.url}function Y0(t){let e=Bd(t)?.url??FA(t)?.url,n=t.artist??[];if(!e&&n.length===0)return;let r=n.length>0?`Background art by ${n.map((i)=>{let o=LA(t.profiles?.[i],e);return o?`${i} (${HA(o)})`:i}).join(", ")}`:"Background art (artist unknown)";return e?`${r} · ${TA(e)}`:r}async function uu(t,e){let n=await U0(t,e);return new Map(t.map((r)=>[r,AA(n.get(r)??[])]))}import{createHash as CA}from"node:crypto";import{existsSync as jA,readdirSync as _A,readFileSync as GA,rmSync as BA,statSync as UA,utimesSync as WA}from"node:fs";import{join as zo}from"node:path";var KA=12,zA=/^[0-9a-f]{40}$/;function Ko(){return zo(jr(),"drawn")}function V0(t){return CA("sha1").update(JSON.stringify(t)).digest("hex")}function Z0(t){return jA(zo(Ko(),t))}function X0(t){let e=zo(Ko(),t);try{let n=GA(e),r=n.readUInt32BE(0),i=JSON.parse(n.toString("utf8",4,4+r)),o=n.subarray(4+r,4+r+i.figure),s=n.subarray(4+r+i.figure,4+r+i.figure+i.picture);if(o.length!==i.figure||s.length!==i.picture)return;let a=new Date;return WA(e,a,a),{stem:i.stem,fill:i.fill,...i.peak?{peak:i.peak}:{},figure:o,picture:s}}catch{return}}function Ud(t,e){let n=Buffer.from(JSON.stringify({stem:e.stem,fill:e.fill,...e.peak?{peak:e.peak}:{},figure:e.figure.length,picture:e.picture.length})),r=Buffer.alloc(4);r.writeUInt32BE(n.length),C(zo(Ko(),t),Buffer.concat([r,n,e.figure,e.picture])),DA()}function DA(){let t=_A(Ko()).filter((e)=>zA.test(e)).flatMap((e)=>{try{return[{name:e,at:UA(zo(Ko(),e)).mtimeMs}]}catch{return[]}}).sort((e,n)=>n.at-e.at);for(let{name:e}of t.slice(KA))BA(zo(Ko(),e),{force:!0})}import{readdirSync as QA,readFileSync as a$}from"node:fs";import{basename as tN,join as c$}from"node:path";/*!
4
4
  * Copyright (c) Squirrel Chat et al., All rights reserved.
5
5
  * SPDX-License-Identifier: BSD-3-Clause
6
6
  *
@@ -26,11 +26,11 @@ import{createRequire as $I}from"node:module";var dI=Object.create;var{getPrototy
26
26
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
27
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- */function gA(t,e){let n=t.slice(0,e).split(/\r?\n/);return[n.length,n.pop().length+1]}function bA(t,e,n){let r=t.split(/\r?\n/),i="",o=(Math.log10(e+1)|0)+1;for(let s=e-1;s<=e+1;s++){let a=r[s-1];if(!a)continue;if(i+=s.toString().padEnd(o," "),i+=": ",i+=a,i+=`
29
+ */function qA(t,e){let n=t.slice(0,e).split(/\r?\n/);return[n.length,n.pop().length+1]}function JA(t,e,n){let r=t.split(/\r?\n/),i="",o=(Math.log10(e+1)|0)+1;for(let s=e-1;s<=e+1;s++){let a=r[s-1];if(!a)continue;if(i+=s.toString().padEnd(o," "),i+=": ",i+=a,i+=`
30
30
  `,s===e)i+=" ".repeat(o+n+2),i+=`^
31
- `}return i}class D extends Error{line;column;codeblock;constructor(t,e){let[n,r]=gA(e.toml,e.ptr),i=bA(e.toml,n,r);super(`Invalid TOML document: ${t}
31
+ `}return i}class q extends Error{line;column;codeblock;constructor(t,e){let[n,r]=qA(e.toml,e.ptr),i=JA(e.toml,n,r);super(`Invalid TOML document: ${t}
32
32
 
33
- ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(t,{toml:e.s,ptr:n??e.p})}}/*!
33
+ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new q(t,{toml:e.s,ptr:n??e.p})}}/*!
34
34
  * Copyright (c) Squirrel Chat et al., All rights reserved.
35
35
  * SPDX-License-Identifier: BSD-3-Clause
36
36
  *
@@ -56,8 +56,8 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
56
56
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
57
57
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
58
58
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59
- */function ru(t){let e=t.p,n=t.s.charCodeAt(t.p++),r=n,i=n===39,o=n===t.s.charCodeAt(t.p)&&n===t.s.charCodeAt(t.p+1);if(o){if((n=t.s.charCodeAt(t.p+=2))===10)t.p++;else if(n===13&&t.s.charCodeAt(t.p+1)===10)t.p+=2}let s="",a=t.p,c=0;for(;t.p<t.s.length;t.p++)if(n=t.s.charCodeAt(t.p),o&&(n===10||n===13&&t.s.charCodeAt(t.p+1)===10))c=c&&3;else if(n<32&&n!==9||n===127)D.x("control characters are not allowed in strings",t);else if((!c||c===3)&&n===r&&(!o||t.s.charCodeAt(t.p+1)===r&&t.s.charCodeAt(t.p+2)===r)){if(o){if(t.s.charCodeAt(t.p+3)===r)t.p++;if(t.s.charCodeAt(t.p+3)===r)t.p++}if(!c){let u=t.s.slice(a,t.p);s=s?s+u:u}return t.p+=o?3:1,s}else if(!c){if(!i&&n===92)s+=t.s.slice(a,a=t.p),c=1}else if(c===1)if(n===120||n===117||n===85){let u=t.p++-1,f=0,l=n===120?2:n===117?4:8;for(let d=0;d<l;d++,t.p++){let h=t.s.charCodeAt(t.p),m=h>=48&&h<=57?h-48:h>=65&&h<=70?h-65+10:h>=97&&h<=102?h-97+10:-1;if(m<0)D.x("invalid non-hex character in unicode escape",t);f=f<<4|m}if(f<0||f>1114111||f>=55296&&f<=57343)D.x("invalid unicode escape",t,u);s+=String.fromCodePoint(f),a=t.p--,c=0}else if(o&&(n===32||n===9))c=2;else{if(n===98)s+="\b";else if(n===116)s+="\t";else if(n===110)s+=`
60
- `;else if(n===102)s+="\f";else if(n===114)s+="\r";else if(n===101)s+="\x1B";else if(n===34)s+='"';else if(n===92)s+="\\";else D.x("unrecognised escape sequence",t);a=t.p+1,c=0}else if(n!==32&&n!==9){if(c===2)D.x("invalid escape: only line-ending whitespace may be escaped",t,a);c=!i&&n===92?1:0,a=t.p}D.x("unfinished string",t,e)}/*!
59
+ */function lu(t){let e=t.p,n=t.s.charCodeAt(t.p++),r=n,i=n===39,o=n===t.s.charCodeAt(t.p)&&n===t.s.charCodeAt(t.p+1);if(o){if((n=t.s.charCodeAt(t.p+=2))===10)t.p++;else if(n===13&&t.s.charCodeAt(t.p+1)===10)t.p+=2}let s="",a=t.p,c=0;for(;t.p<t.s.length;t.p++)if(n=t.s.charCodeAt(t.p),o&&(n===10||n===13&&t.s.charCodeAt(t.p+1)===10))c=c&&3;else if(n<32&&n!==9||n===127)q.x("control characters are not allowed in strings",t);else if((!c||c===3)&&n===r&&(!o||t.s.charCodeAt(t.p+1)===r&&t.s.charCodeAt(t.p+2)===r)){if(o){if(t.s.charCodeAt(t.p+3)===r)t.p++;if(t.s.charCodeAt(t.p+3)===r)t.p++}if(!c){let u=t.s.slice(a,t.p);s=s?s+u:u}return t.p+=o?3:1,s}else if(!c){if(!i&&n===92)s+=t.s.slice(a,a=t.p),c=1}else if(c===1)if(n===120||n===117||n===85){let u=t.p++-1,f=0,l=n===120?2:n===117?4:8;for(let d=0;d<l;d++,t.p++){let h=t.s.charCodeAt(t.p),m=h>=48&&h<=57?h-48:h>=65&&h<=70?h-65+10:h>=97&&h<=102?h-97+10:-1;if(m<0)q.x("invalid non-hex character in unicode escape",t);f=f<<4|m}if(f<0||f>1114111||f>=55296&&f<=57343)q.x("invalid unicode escape",t,u);s+=String.fromCodePoint(f),a=t.p--,c=0}else if(o&&(n===32||n===9))c=2;else{if(n===98)s+="\b";else if(n===116)s+="\t";else if(n===110)s+=`
60
+ `;else if(n===102)s+="\f";else if(n===114)s+="\r";else if(n===101)s+="\x1B";else if(n===34)s+='"';else if(n===92)s+="\\";else q.x("unrecognised escape sequence",t);a=t.p+1,c=0}else if(n!==32&&n!==9){if(c===2)q.x("invalid escape: only line-ending whitespace may be escaped",t,a);c=!i&&n===92?1:0,a=t.p}q.x("unfinished string",t,e)}/*!
61
61
  * Copyright (c) Squirrel Chat et al., All rights reserved.
62
62
  * SPDX-License-Identifier: BSD-3-Clause
63
63
  *
@@ -83,7 +83,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
83
83
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
84
84
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
85
85
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
86
- */var wA=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;class _r extends Date{#e=!1;#n=!1;#t=null;constructor(t,e,n){let r=!0,i=!0,o="Z",s;if(typeof t==="string")if(e)t:{if(e<3){if(+t.slice(11,13)>23){t="";break t}if(e===2)o=null,t+="Z";else if((s=t.charCodeAt(t.length-1))!==90&&s!==122)o=t.slice(t.length-6);if(n)t=t.slice(0,10)+"T"+t.slice(11)}else if(e===4)t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`;r=e!==4,i=e!==3}else{let a=t.match(wA);if(a){if(!a[1])r=!1,t=`0000-01-01T${t}`;if(i=!!a[2],i&&t[10]===" "&&(t=t.replace(" ","T")),a[2]&&+a[2]>23)t="";else if(o=a[3]||null,!o&&i)t+="Z"}else t=""}super(t);if(!isNaN(this.getTime()))this.#e=r,this.#n=i,this.#t=o}isDateTime(){return this.#e&&this.#n}isLocal(){return!this.#e||!this.#n||!this.#t}isDate(){return this.#e&&!this.#n}isTime(){return this.#n&&!this.#e}isValid(){return this.#e||this.#n}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#t===null)return t.slice(0,-1);if(this.#t==="Z"||this.#t==="z")return t;let e=+this.#t.slice(1,3)*60+ +this.#t.slice(4,6);return e=this.#t[0]==="-"?e:-e,new Date(this.getTime()-e*60000).toISOString().slice(0,-1)+this.#t}static wrapAsOffsetDateTime(t,e="Z"){let n=new _r(t);return n.#t=e,n}static wrapAsLocalDateTime(t){let e=new _r(t);return e.#t=null,e}static wrapAsLocalDate(t){let e=new _r(t);return e.#n=!1,e.#t=null,e}static wrapAsLocalTime(t){let e=new _r(t);return e.#e=!1,e.#t=null,e}}/*!
86
+ */var YA=/^(\d{4}-\d{2}-\d{2})?[Tt ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|z|[-+]\d{2}:\d{2})?$/i;class _r extends Date{#e=!1;#r=!1;#t=null;constructor(t,e,n){let r=!0,i=!0,o="Z",s;if(typeof t==="string")if(e)t:{if(e<3){if(+t.slice(11,13)>23){t="";break t}if(e===2)o=null,t+="Z";else if((s=t.charCodeAt(t.length-1))!==90&&s!==122)o=t.slice(t.length-6);if(n)t=t.slice(0,10)+"T"+t.slice(11)}else if(e===4)t=+t.slice(0,2)>23?"":`0000-01-01T${t}Z`;r=e!==4,i=e!==3}else{let a=t.match(YA);if(a){if(!a[1])r=!1,t=`0000-01-01T${t}`;if(i=!!a[2],i&&t[10]===" "&&(t=t.replace(" ","T")),a[2]&&+a[2]>23)t="";else if(o=a[3]||null,!o&&i)t+="Z"}else t=""}super(t);if(!isNaN(this.getTime()))this.#e=r,this.#r=i,this.#t=o}isDateTime(){return this.#e&&this.#r}isLocal(){return!this.#e||!this.#r||!this.#t}isDate(){return this.#e&&!this.#r}isTime(){return this.#r&&!this.#e}isValid(){return this.#e||this.#r}toISOString(){let t=super.toISOString();if(this.isDate())return t.slice(0,10);if(this.isTime())return t.slice(11,23);if(this.#t===null)return t.slice(0,-1);if(this.#t==="Z"||this.#t==="z")return t;let e=+this.#t.slice(1,3)*60+ +this.#t.slice(4,6);return e=this.#t[0]==="-"?e:-e,new Date(this.getTime()-e*60000).toISOString().slice(0,-1)+this.#t}static wrapAsOffsetDateTime(t,e="Z"){let n=new _r(t);return n.#t=e,n}static wrapAsLocalDateTime(t){let e=new _r(t);return e.#t=null,e}static wrapAsLocalDate(t){let e=new _r(t);return e.#r=!1,e.#t=null,e}static wrapAsLocalTime(t){let e=new _r(t);return e.#e=!1,e.#t=null,e}}/*!
87
87
  * Copyright (c) Squirrel Chat et al., All rights reserved.
88
88
  * SPDX-License-Identifier: BSD-3-Clause
89
89
  *
@@ -109,7 +109,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
109
109
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
110
110
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
111
111
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
112
- */function Ae(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function Fd(t,e){return t===32||t===9||t===10||t===13||e&&(t===e||t===44)||t===35}function ua(t,e){let n=t.p,r=t.s.charCodeAt(t.p);if(r===91||r===123){t.d--||D.x("document contains excessively nested structures. aborting.",t);let i=r===91?B0(t):G0(t);return t.d++,i}if(r===34||r===39)return ru(t);if(r===116){if(t.s.charCodeAt(++t.p)!==114||t.s.charCodeAt(++t.p)!==117||t.s.charCodeAt(++t.p)!==101)D.x("invalid value",t,n);return t.p++,!0}if(r===102){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==108||t.s.charCodeAt(++t.p)!==115||t.s.charCodeAt(++t.p)!==101)D.x("invalid value",t,n);return t.p++,!1}if(r===43||r===45)return iu(t,t.p,t.s.charCodeAt(++t.p),44-r,e);if(t.s.charCodeAt(t.p+4)===45&&t.s.charCodeAt(t.p+7)===45)return $A(t,r,e);if(t.s.charCodeAt(t.p+2)===58)return kA(t,r,e);return iu(t,t.p,r,0,e)}function iu(t,e,n,r,i){let o=n,s=0,a=!1;if(o===105){if(t.s.charCodeAt(++t.p)!==110||t.s.charCodeAt(++t.p)!==102)D.x("invalid value",t,e);return t.p++,(r||1)/0}if(o===110){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==110)D.x("invalid value",t,e);return t.p++,NaN}if(o===48){if(++t.p>=t.s.length||Fd(o=t.s.charCodeAt(t.p),i))return t.bi===!0?0n:0;if(!r){if(o===120)return Hd(t,e,16,i);else if(o===98)return Hd(t,e,2,i);else if(o===111)return Hd(t,e,8,i)}if(o===46)s=2;else if(o===101||o===69)s=4;else D.x("illegal leading zero",t,e)}else if(!Ae(o))D.x("invalid value",t,e);while(++t.p<t.s.length&&(o=t.s.charCodeAt(t.p),!Fd(o,i))){if(!s)s=1;if(o===95){if(!(s&1))D.x("illegal underscore",t);s+=11,a=!0}else if(s===1&&o===46)s=2;else if((s===1||s===3)&&(o===101||o===69))s=4;else if(s===4&&(o===43||o===45));else if(!Ae(o))D.x("illegal character in numeric literal",t);else if(s>9)s-=11;else if(!(s&1))s++}if(!s){let u=(n-48)*(r||1);return t.bi===!0?BigInt(u):u}if(!(s&1))D.x("unfinished numeric value",t,e);let c=t.s.slice(e,t.p);if(a)c=c.replaceAll("_","");return s>1?parseFloat(c):_0(t,c,10,e)}function Hd(t,e,n,r){let i,o=1;while(++t.p<t.s.length&&(i=t.s.charCodeAt(t.p),!Fd(i,r)))if(i===95){if(o&1)D.x("illegal underscore",t);o=3}else if(!Ae(i,n))D.x("illegal character in numeric literal",t);else if(o&1)o--;if(o&1)D.x("unfinished numeric value",t);let s=t.s.slice(e+2,t.p);if(o)s=s.replaceAll("_","");return _0(t,s,n,e)}function _0(t,e,n,r){if(t.bi!==!0)t:{let i=parseInt(e,n);if(!Number.isSafeInteger(i)){if(t.bi)break t;D.x("integer value cannot be represented losslessly",t,r)}return i}return n===10?BigInt(e):BigInt((n===2?"0b":n===8?"0o":"0x")+e)}function $A(t,e,n){let r=t.p++,i;if(!Ae(e)||!Ae(t.s.charCodeAt(t.p++))||!Ae(t.s.charCodeAt(t.p++))||!Ae(t.s.charCodeAt(t.p++)))return iu(t,t.p=r,e,0,n);if(t.p+=5,!Ae(t.s.charCodeAt(t.p++)))D.x("invalid date-time: date part is malformed",t,r);if(t.p>=t.s.length||((e=t.s.charCodeAt(t.p))!==32||(i=!0,!Ae(t.s.charCodeAt(t.p+1))))&&e!==84&&e!==116){let s=t.s.slice(r,t.p);return ca(t,s,3,!1,r)}if(t.s.charCodeAt(t.p+=3)!==58)D.x("invalid date-time: time part is malformed",t,r);if(t.s.charCodeAt(t.p+=3)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Ae(t.s.charCodeAt(++t.p)));if(e=t.s.charCodeAt(t.p)){if(e===90||e===122){let s=t.s.slice(r,++t.p);return ca(t,s,1,i,r,"[+00:00]")}if(e===43||e===45){let s=t.s.slice(r,t.p+=6);return ca(t,s,1,i,r,!t.ld&&"["+t.s.slice(t.p-6,t.p)+"]")}}let o=t.s.slice(r,t.p);return ca(t,o,2,i,r)}function kA(t,e,n){let r=t.p;if(!Ae(e)||!Ae(t.s.charCodeAt(++t.p)))return iu(t,--t.p,e,0,n);if(t.s.charCodeAt(t.p+=4)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Ae(t.s.charCodeAt(++t.p)));let i=t.s.slice(r,t.p);return ca(t,i,4,!1,r)}function ca(t,e,n,r,i,o){if(t.ld){let s=new _r(e,n,r);if(!s.isValid())D.x("invalid date",t,i);return s}try{if(o)e+=o;switch(n){case 1:return Temporal.ZonedDateTime.from(e);case 2:return Temporal.PlainDateTime.from(e);case 3:return Temporal.PlainDate.from(e);case 4:return Temporal.PlainTime.from(e)}}catch(s){D.x(s instanceof Error?s.message:""+s,t,i)}}/*!
112
+ */function Ne(t,e=10){return e===16?t>47&&t<58||t>64&&t<71||t>96&&t<103:t>47&&t<48+e}function Kd(t,e){return t===32||t===9||t===10||t===13||e&&(t===e||t===44)||t===35}function ba(t,e){let n=t.p,r=t.s.charCodeAt(t.p);if(r===91||r===123){t.d--||q.x("document contains excessively nested structures. aborting.",t);let i=r===91?e$(t):t$(t);return t.d++,i}if(r===34||r===39)return lu(t);if(r===116){if(t.s.charCodeAt(++t.p)!==114||t.s.charCodeAt(++t.p)!==117||t.s.charCodeAt(++t.p)!==101)q.x("invalid value",t,n);return t.p++,!0}if(r===102){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==108||t.s.charCodeAt(++t.p)!==115||t.s.charCodeAt(++t.p)!==101)q.x("invalid value",t,n);return t.p++,!1}if(r===43||r===45)return fu(t,t.p,t.s.charCodeAt(++t.p),44-r,e);if(t.s.charCodeAt(t.p+4)===45&&t.s.charCodeAt(t.p+7)===45)return VA(t,r,e);if(t.s.charCodeAt(t.p+2)===58)return ZA(t,r,e);return fu(t,t.p,r,0,e)}function fu(t,e,n,r,i){let o=n,s=0,a=!1;if(o===105){if(t.s.charCodeAt(++t.p)!==110||t.s.charCodeAt(++t.p)!==102)q.x("invalid value",t,e);return t.p++,(r||1)/0}if(o===110){if(t.s.charCodeAt(++t.p)!==97||t.s.charCodeAt(++t.p)!==110)q.x("invalid value",t,e);return t.p++,NaN}if(o===48){if(++t.p>=t.s.length||Kd(o=t.s.charCodeAt(t.p),i))return t.bi===!0?0n:0;if(!r){if(o===120)return Wd(t,e,16,i);else if(o===98)return Wd(t,e,2,i);else if(o===111)return Wd(t,e,8,i)}if(o===46)s=2;else if(o===101||o===69)s=4;else q.x("illegal leading zero",t,e)}else if(!Ne(o))q.x("invalid value",t,e);while(++t.p<t.s.length&&(o=t.s.charCodeAt(t.p),!Kd(o,i))){if(!s)s=1;if(o===95){if(!(s&1))q.x("illegal underscore",t);s+=11,a=!0}else if(s===1&&o===46)s=2;else if((s===1||s===3)&&(o===101||o===69))s=4;else if(s===4&&(o===43||o===45));else if(!Ne(o))q.x("illegal character in numeric literal",t);else if(s>9)s-=11;else if(!(s&1))s++}if(!s){let u=(n-48)*(r||1);return t.bi===!0?BigInt(u):u}if(!(s&1))q.x("unfinished numeric value",t,e);let c=t.s.slice(e,t.p);if(a)c=c.replaceAll("_","");return s>1?parseFloat(c):Q0(t,c,10,e)}function Wd(t,e,n,r){let i,o=1;while(++t.p<t.s.length&&(i=t.s.charCodeAt(t.p),!Kd(i,r)))if(i===95){if(o&1)q.x("illegal underscore",t);o=3}else if(!Ne(i,n))q.x("illegal character in numeric literal",t);else if(o&1)o--;if(o&1)q.x("unfinished numeric value",t);let s=t.s.slice(e+2,t.p);if(o)s=s.replaceAll("_","");return Q0(t,s,n,e)}function Q0(t,e,n,r){if(t.bi!==!0)t:{let i=parseInt(e,n);if(!Number.isSafeInteger(i)){if(t.bi)break t;q.x("integer value cannot be represented losslessly",t,r)}return i}return n===10?BigInt(e):BigInt((n===2?"0b":n===8?"0o":"0x")+e)}function VA(t,e,n){let r=t.p++,i;if(!Ne(e)||!Ne(t.s.charCodeAt(t.p++))||!Ne(t.s.charCodeAt(t.p++))||!Ne(t.s.charCodeAt(t.p++)))return fu(t,t.p=r,e,0,n);if(t.p+=5,!Ne(t.s.charCodeAt(t.p++)))q.x("invalid date-time: date part is malformed",t,r);if(t.p>=t.s.length||((e=t.s.charCodeAt(t.p))!==32||(i=!0,!Ne(t.s.charCodeAt(t.p+1))))&&e!==84&&e!==116){let s=t.s.slice(r,t.p);return ga(t,s,3,!1,r)}if(t.s.charCodeAt(t.p+=3)!==58)q.x("invalid date-time: time part is malformed",t,r);if(t.s.charCodeAt(t.p+=3)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Ne(t.s.charCodeAt(++t.p)));if(e=t.s.charCodeAt(t.p)){if(e===90||e===122){let s=t.s.slice(r,++t.p);return ga(t,s,1,i,r,"[+00:00]")}if(e===43||e===45){let s=t.s.slice(r,t.p+=6);return ga(t,s,1,i,r,!t.ld&&"["+t.s.slice(t.p-6,t.p)+"]")}}let o=t.s.slice(r,t.p);return ga(t,o,2,i,r)}function ZA(t,e,n){let r=t.p;if(!Ne(e)||!Ne(t.s.charCodeAt(++t.p)))return fu(t,--t.p,e,0,n);if(t.s.charCodeAt(t.p+=4)===58)t.p+=3;if(t.s.charCodeAt(t.p)===46)while(Ne(t.s.charCodeAt(++t.p)));let i=t.s.slice(r,t.p);return ga(t,i,4,!1,r)}function ga(t,e,n,r,i,o){if(t.ld){let s=new _r(e,n,r);if(!s.isValid())q.x("invalid date",t,i);return s}try{if(o)e+=o;switch(n){case 1:return Temporal.ZonedDateTime.from(e);case 2:return Temporal.PlainDateTime.from(e);case 3:return Temporal.PlainDate.from(e);case 4:return Temporal.PlainTime.from(e)}}catch(s){q.x(s instanceof Error?s.message:""+s,t,i)}}/*!
113
113
  * Copyright (c) Squirrel Chat et al., All rights reserved.
114
114
  * SPDX-License-Identifier: BSD-3-Clause
115
115
  *
@@ -135,7 +135,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
135
135
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
136
136
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
137
137
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
138
- */function yA(t){for(;t.p<t.s.length;t.p++){let e=t.s.charCodeAt(t.p);if(e===10)break;if(e===13&&t.s.charCodeAt(t.p+1)===10){t.p++;break}if(e<32&&e!==9||e===127)D.x("control characters are not allowed in comments",t)}}function on(t,e,n){let r;while(t.p<t.s.length){while(t.p<t.s.length&&((r=t.s.charCodeAt(t.p))===32||r===9||!e&&(r===10||r===13&&t.s.charCodeAt(t.p+1)===10)))t.p++;if(n||r!==35)break;yA(t)}}/*!
138
+ */function XA(t){for(;t.p<t.s.length;t.p++){let e=t.s.charCodeAt(t.p);if(e===10)break;if(e===13&&t.s.charCodeAt(t.p+1)===10){t.p++;break}if(e<32&&e!==9||e===127)q.x("control characters are not allowed in comments",t)}}function sn(t,e,n){let r;while(t.p<t.s.length){while(t.p<t.s.length&&((r=t.s.charCodeAt(t.p))===32||r===9||!e&&(r===10||r===13&&t.s.charCodeAt(t.p+1)===10)))t.p++;if(n||r!==35)break;XA(t)}}/*!
139
139
  * Copyright (c) Squirrel Chat et al., All rights reserved.
140
140
  * SPDX-License-Identifier: BSD-3-Clause
141
141
  *
@@ -161,7 +161,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
161
161
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
162
162
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
163
163
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
164
- */function ou(t,e=61){let n,r=0,i=[],o,s=t.s.charCodeAt(n=t.p);do if(s===e){if(!r)D.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(o,t.p));return t.p++,i}else if(s===46){if(!r)D.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(o,t.p));r=0}else if(!r&&(s===34||s===39)){if(s===t.s.charCodeAt(t.p+1)&&s===t.s.charCodeAt(t.p+2))D.x("illegal quoted key: multiline strings are not allowed",t);i.push(ru(t)),r=2,t.p--}else if(s===32||s===9){if(r===1)i.push(t.s.slice(o,t.p)),r=2}else if(r===2||s<48&&s!==45||s>57&&s<65||s>90&&s<97&&s!==95||s>122)D.x("illegal character in key",t);else if(!r)r=1,o=t.p;while(s=t.s.charCodeAt(++t.p));D.x("incomplete key-value: cannot find end of key",t,n)}function G0(t){let e=t.p++,n=Object.create(null),r=new Set,i;while(t.p<t.s.length){if(on(t),(i=t.s.charCodeAt(t.p))===125)return t.p++,n;let o,s=n,a=!1,c=t.p,u=ou(t);for(let l=0;l<u.length;l++){if(l)s=a?s[o]:s[o]=Object.create(null);if(o=u[l],(a=Object.hasOwn(s,o))&&(typeof s[o]!=="object"||r.has(s[o])))D.x("trying to redefine an already defined value",t,c);let d=o==="__proto__";if(t.uk&&(d||o==="constructor")){s=t.uk!==1&&D.x("document contains an unsafe property",t,c);break}if(!a&&d)Object.defineProperty(s,o,{enumerable:!0,configurable:!0,writable:!0})}if(a)D.x("trying to redefine an already defined value",t,c);on(t,!0,!0);let f=ua(t,125);if(s&&typeof(s[o]=f)==="object")r.add(f);if(on(t),(i=t.s.charCodeAt(t.p++))===125)return n;if(i!==44)D.x("expected comma or end of structure",t,t.p-1)}D.x("unfinished table",t,e)}function B0(t){let e=t.p++,n=[],r;while(t.p<t.s.length){if(on(t),(r=t.s.charCodeAt(t.p))===93)return t.p++,n;if(n.push(ua(t,93)),on(t),(r=t.s.charCodeAt(t.p++))===93)return n;if(r!==44)D.x("expected comma or end of structure",t,t.p-1)}D.x("unfinished array",t,e)}/*!
164
+ */function du(t,e=61){let n,r=0,i=[],o,s=t.s.charCodeAt(n=t.p);do if(s===e){if(!r)q.x("unexpected end of key",t);if(r===1)i.push(t.s.slice(o,t.p));return t.p++,i}else if(s===46){if(!r)q.x("illegal empty bare key",t);if(r===1)i.push(t.s.slice(o,t.p));r=0}else if(!r&&(s===34||s===39)){if(s===t.s.charCodeAt(t.p+1)&&s===t.s.charCodeAt(t.p+2))q.x("illegal quoted key: multiline strings are not allowed",t);i.push(lu(t)),r=2,t.p--}else if(s===32||s===9){if(r===1)i.push(t.s.slice(o,t.p)),r=2}else if(r===2||s<48&&s!==45||s>57&&s<65||s>90&&s<97&&s!==95||s>122)q.x("illegal character in key",t);else if(!r)r=1,o=t.p;while(s=t.s.charCodeAt(++t.p));q.x("incomplete key-value: cannot find end of key",t,n)}function t$(t){let e=t.p++,n=Object.create(null),r=new Set,i;while(t.p<t.s.length){if(sn(t),(i=t.s.charCodeAt(t.p))===125)return t.p++,n;let o,s=n,a=!1,c=t.p,u=du(t);for(let l=0;l<u.length;l++){if(l)s=a?s[o]:s[o]=Object.create(null);if(o=u[l],(a=Object.hasOwn(s,o))&&(typeof s[o]!=="object"||r.has(s[o])))q.x("trying to redefine an already defined value",t,c);let d=o==="__proto__";if(t.uk&&(d||o==="constructor")){s=t.uk!==1&&q.x("document contains an unsafe property",t,c);break}if(!a&&d)Object.defineProperty(s,o,{enumerable:!0,configurable:!0,writable:!0})}if(a)q.x("trying to redefine an already defined value",t,c);sn(t,!0,!0);let f=ba(t,125);if(s&&typeof(s[o]=f)==="object")r.add(f);if(sn(t),(i=t.s.charCodeAt(t.p++))===125)return n;if(i!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished table",t,e)}function e$(t){let e=t.p++,n=[],r;while(t.p<t.s.length){if(sn(t),(r=t.s.charCodeAt(t.p))===93)return t.p++,n;if(n.push(ba(t,93)),sn(t),(r=t.s.charCodeAt(t.p++))===93)return n;if(r!==44)q.x("expected comma or end of structure",t,t.p-1)}q.x("unfinished array",t,e)}/*!
165
165
  * Copyright (c) Squirrel Chat et al., All rights reserved.
166
166
  * SPDX-License-Identifier: BSD-3-Clause
167
167
  *
@@ -187,7 +187,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
187
187
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
188
188
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
189
189
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
190
- */function U0(t,e,n,r,i){let o=n,s=r,a,c=!1,u;for(let f=0;f<e.length;f++){if(f){if(o=c?o[a]:o[a]=Object.create(null),s=(u=s[a]).c,i===0&&(u.t===1||u.t===2))return null;if(u.t===2){let l=o.length-1;o=o[l],s=s[l].c}}if(a=e[f],(c=Object.hasOwn(o,a))&&s[a]?.t===0&&s[a]?.d)return null;if(!c){let l=a==="__proto__";if(t.uk&&(l||a==="constructor"))return!1;if(l)Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(s,a,{enumerable:!0,configurable:!0,writable:!0});s[a]={t:f<e.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(u=s[a],u.t!==i&&!(i===1&&u.t===3))return null;if(i===2){if(!u.d)u.d=!0,o[a]=[];o[a].push(o=Object.create(null)),u.c[u.i++]=u={t:1,d:!1,i:0,c:Object.create(null)}}if(u.d)return null;if(u.d=!0,i===1)o=c?o[a]:o[a]=Object.create(null);else if(i===0&&c)return null;return[a,o,u.c]}function W0(t,e,n){if(e===null||t.uk===2)D.x(e===null?"trying to redefine an already defined table or value":"document contains an unsafe property",t,n)}function Ti(t,e={}){let n={s:t,p:0,d:e.maxDepth??1000,bi:e.integersAsBigInt??!1,ld:e.useLegacyDate??!0,uk:e.unsafeKeyBehaviour==="throw"?2:e.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),i=Object.create(null),o,s=!1,a=r,c=i;if(t.charCodeAt(0)===65279)n.p++;on(n);while(n.p<t.length){if(t.charCodeAt(n.p)===91){let u=t.charCodeAt(++n.p)===91;o=n.p+=+u,s=!1;let f=ou(n,93);if(u){if(t.charCodeAt(n.p)!==93)D.x("expected end of table array declaration",n);n.p++}let l=U0(n,f,r,i,u?2:1);if(!l)W0(n,l,o),s=!0;else c=l[2],a=l[1]}else{o=n.p;let u=ou(n),f=U0(n,u,a,c,0);if(!f&&!s)W0(n,f,o);on(n,!0,!0);let l=ua(n,void 0);if(f&&!s)f[1][f[0]]=l}if(on(n,!0),n.p<t.length&&(o=t.charCodeAt(n.p))!==10&&(o!==13||t.charCodeAt(n.p+1)!==10))D.x("each key-value declaration must be followed by an end-of-line",n);on(n)}return r}/*!
190
+ */function n$(t,e,n,r,i){let o=n,s=r,a,c=!1,u;for(let f=0;f<e.length;f++){if(f){if(o=c?o[a]:o[a]=Object.create(null),s=(u=s[a]).c,i===0&&(u.t===1||u.t===2))return null;if(u.t===2){let l=o.length-1;o=o[l],s=s[l].c}}if(a=e[f],(c=Object.hasOwn(o,a))&&s[a]?.t===0&&s[a]?.d)return null;if(!c){let l=a==="__proto__";if(t.uk&&(l||a==="constructor"))return!1;if(l)Object.defineProperty(o,a,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(s,a,{enumerable:!0,configurable:!0,writable:!0});s[a]={t:f<e.length-1&&i===2?3:i,d:!1,i:0,c:Object.create(null)}}}if(u=s[a],u.t!==i&&!(i===1&&u.t===3))return null;if(i===2){if(!u.d)u.d=!0,o[a]=[];o[a].push(o=Object.create(null)),u.c[u.i++]=u={t:1,d:!1,i:0,c:Object.create(null)}}if(u.d)return null;if(u.d=!0,i===1)o=c?o[a]:o[a]=Object.create(null);else if(i===0&&c)return null;return[a,o,u.c]}function r$(t,e,n){if(e===null||t.uk===2)q.x(e===null?"trying to redefine an already defined table or value":"document contains an unsafe property",t,n)}function Ci(t,e={}){let n={s:t,p:0,d:e.maxDepth??1000,bi:e.integersAsBigInt??!1,ld:e.useLegacyDate??!0,uk:e.unsafeKeyBehaviour==="throw"?2:e.unsafeKeyBehaviour==="drop"?1:0},r=Object.create(null),i=Object.create(null),o,s=!1,a=r,c=i;if(t.charCodeAt(0)===65279)n.p++;sn(n);while(n.p<t.length){if(t.charCodeAt(n.p)===91){let u=t.charCodeAt(++n.p)===91;o=n.p+=+u,s=!1;let f=du(n,93);if(u){if(t.charCodeAt(n.p)!==93)q.x("expected end of table array declaration",n);n.p++}let l=n$(n,f,r,i,u?2:1);if(!l)r$(n,l,o),s=!0;else c=l[2],a=l[1]}else{o=n.p;let u=du(n),f=n$(n,u,a,c,0);if(!f&&!s)r$(n,f,o);sn(n,!0,!0);let l=ba(n,void 0);if(f&&!s)f[1][f[0]]=l}if(sn(n,!0),n.p<t.length&&(o=t.charCodeAt(n.p))!==10&&(o!==13||t.charCodeAt(n.p+1)!==10))q.x("each key-value declaration must be followed by an end-of-line",n);sn(n)}return r}/*!
191
191
  * Copyright (c) Squirrel Chat et al., All rights reserved.
192
192
  * SPDX-License-Identifier: BSD-3-Clause
193
193
  *
@@ -213,7 +213,7 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
213
213
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
214
214
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
215
215
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
216
- */var lG=!!"".isWellFormed;/*!
216
+ */var ZG=!!"".isWellFormed;/*!
217
217
  * Copyright (c) Squirrel Chat et al., All rights reserved.
218
218
  * SPDX-License-Identifier: BSD-3-Clause
219
219
  *
@@ -239,175 +239,177 @@ ${i}`,e);this.line=n,this.column=r,this.codeblock=i}static x(t,e,n){throw new D(
239
239
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
240
240
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
241
241
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
242
- */var qt=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"],la="Original",SA=1e6,Sn="_groups.toml",K0=3,z0=8,Ld="[a-z0-9]+(?:-[a-z0-9]+)*",MA=new RegExp(`^(?:(${Ld})@(${Ld})/)?(${Ld})$`),Y0=["background","foreground","cursor","selection"];function it(t,e){throw Error(`${t}: ${e}`)}function Hi(t,e,n){if(typeof n!=="string"||!he(n))it(t,`${e} must be "#rrggbb" (lowercase), got ${JSON.stringify(n)}`);return n}function da(t,e,n){if(typeof n!=="string"||n.length===0)it(t,`${e} must be a non-empty string`);return n}function ue(t){return t.replace("@","--").replace("/","--")}function C(t){return`ttheme-${ue(t)}`}function ut(t){let e=t.indexOf("/");return e<0?void 0:t.slice(0,e)}function pe(t){return t.slice(t.indexOf("/")+1)}function Ne(t){let e=MA.exec(t);if(!e)return"takes lowercase letters, digits and single hyphens, as <palette> or <owner>@<market>/<palette>";if((e[1]?.length??0)>39)return"has an owner longer than a GitHub handle can be";return(e[2]?.length??0)>40||(e[3]?.length??0)>40?"is longer than 40 characters":void 0}function ha(t){if(/[\p{Cc}"$`\\]/u.test(t))return"holds a control character, a quote, $, ` or \\";return t.length>80?"is longer than 80 characters":void 0}function fa(t,e,n){let r=da(t,e,n),i=ha(r);if(i)it(t,`${e} ${JSON.stringify(r)} ${i}`);return r}function q0(t,e,n){let r=da(t,e,n),i=Ne(r);if(i)it(t,`${e} "${r}" ${i}`);return r}function Uo(t){return t&&typeof t==="object"?t:{}}function xA(t,e,n){if(e===void 0)return[n.cursor,n.selectionBackground,n.background];let r=Array.isArray(e)?e:[e];if(r.length===0)it(t,"ghostty.icon_screen must not be empty");return r.map((i,o)=>Hi(t,`ghostty.icon_screen[${o}]`,i))}function OA(t,e,n){let r=Uo(e);return{iconGhost:r.icon_ghost===void 0?n.cursor:Hi(t,"ghostty.icon_ghost",r.icon_ghost),iconScreen:xA(t,r.icon_screen,n)}}function IA(t){return new Map([...Y0.map((e)=>[e,t[e]]),...t.ansi.map((e,n)=>[`ansi${n}`,e])])}function RA(t,e,n){if(!Array.isArray(e)||e.length!==K0)it(t,`meta.signature must name exactly ${K0} palette slots`);let r=IA(n),i=[],o=[];for(let[s,a]of e.entries()){let c=`meta.signature[${s}]`,u=da(t,c,a),f=r.get(u);if(f===void 0)it(t,`${c} ${JSON.stringify(a)} is not a palette slot — use ${Y0.join(", ")} or ansi0-ansi15`);i.push(u),o.push(f)}if(new Set(o).size!==o.length)it(t,"meta.signature slots must resolve to three different colors");return{names:i,colors:o}}function PA(t,e,n,r=!1){if(e===void 0)return;if(!n)it(t,"meta.booru_sites renames meta.booru per site, so it needs meta.booru");if(!e||typeof e!=="object"||Array.isArray(e))it(t,'meta.booru_sites must be a table of site = "tag" or site = ["tag", ...]');let i={};for(let[o,s]of Object.entries(e)){let a=V.find((u)=>u.key===o);if(!a){if(r)continue;it(t,`meta.booru_sites.${o} is not a find site — use ${V.map((u)=>u.key).join(", ")}`)}let c=typeof s==="string"?[s]:Array.isArray(s)?s:void 0;if(!c||c.some((u)=>typeof u!=="string"||u===""||/\s/.test(u)))it(t,`meta.booru_sites.${o} must be one tag or a list of tags, got ${JSON.stringify(s)}`);if(c.length>1&&!a.ors)it(t,`meta.booru_sites.${o} takes one tag — ${a.name} does not OR tags`);if(c.length>a.tagBudget)it(t,`meta.booru_sites.${o} takes ${a.tagBudget} tags at most — ${a.name} searches that many at a time`);i[o]=c}return i}function AA(t,e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length===0||e.length>z0)it(t,`[[picture]] holds 1 to ${z0} pictures`);let r=e.flatMap((i,o)=>{let s=Uo(i),a=`picture[${o}]`,c=V.find((h)=>h.key===s.site);if(!c){if(n)return[];it(t,`${a}.site must be one of ${V.map((h)=>h.key).join(", ")}`)}if(typeof s.id!=="number"||!Number.isSafeInteger(s.id)||s.id<=0)it(t,`${a}.id must be the post's number on ${c.name}`);let{size:u,position:f,opacity:l}=s;if(u!==void 0&&u!=="fill"&&!(Number.isInteger(u)&&Number(u)>=20&&Number(u)<=999))it(t,`${a}.size must be "fill" or a percentage from 20 to 999`);let d=f===void 0||qt.includes(f);if(!d&&!n)it(t,`${a}.position must be one of ${qt.join(", ")}`);if(l!==void 0&&!(typeof l==="number"&&l>=0&&l<=1))it(t,`${a}.opacity must be a number from 0 to 1`);return[{site:c.key,id:s.id,...u!==void 0?{size:u}:{},...f!==void 0&&d?{position:f}:{},...l!==void 0?{opacity:l}:{}}]});return r.length>0?r:void 0}function jd(t,e){try{return Ti(e)}catch(n){it(t,`is not valid TOML — ${(n instanceof Error?n.message:String(n)).split(`
243
- `)[0]}`)}}function NA(t){let n=jd(Sn,D0(J0(t,Sn),"utf8")).group;if(!Array.isArray(n)||n.length===0)it(Sn,"needs at least one [[group]] table");return n.map((r)=>{let i=Uo(r);return{name:fa(Sn,"group.name",i.name),native:i.native===void 0?void 0:fa(Sn,"group.native",i.native),lead:da(Sn,"group.lead",i.lead)}})}function TA(t,e){if(!Array.isArray(e)||e.length===0)it(t,'meta.native_names must be a list of names, like ["後藤ひとり"]');return e.map((n,r)=>{let i=fa(t,`meta.native_names[${r}]`,n);if(i.includes("|"))it(t,`meta.native_names[${r}] ${JSON.stringify(i)} contains |`);return i})}var Cd={"":["$schema","meta","colors","contrast","ghostty","picture"],meta:["name","base","group","ansi_source","booru","booru_sites","native_names","signature","order","role"],colors:["background","foreground","cursor","selection_background","ansi"],contrast:["waive","reason"],ghostty:["icon_ghost","icon_screen"],picture:["site","id","size","position","opacity"]};function Z0(t,e){let n=jd(t,e),r=(i,o,s=[])=>o&&typeof o==="object"&&!Array.isArray(o)?Object.keys(o).filter((a)=>!s.includes(a)).map((a)=>i?`${i}.${a}`:a):[];return[...r("",n,Cd[""]),...["meta","colors","contrast","ghostty"].flatMap((i)=>r(i,n[i],Cd[i])),...(Array.isArray(n.picture)?n.picture:[]).flatMap((i,o)=>r(`picture[${o}]`,i,Cd.picture))]}function _d(t,e,n){let r=jd(t,e),i=Uo(r.meta),o=Uo(r.colors),s=Uo(r.contrast),a=o.ansi;if(!Array.isArray(a)||a.length!==16)it(t,`colors.ansi must hold exactly 16 colors, got ${Array.isArray(a)?a.length:typeof a}`);let c=q0(t,"meta.name",i.name);if(c!==n.name)it(t,`meta.name "${c}" does not match its file — it lives at ${n.name}`);let u=n.open===!0;for(let j of["order","role"])if(u&&i[j]!==void 0)it(t,`meta.${j} is for the official palettes — a market palette follows its base`);let f=i.role;if(f!==void 0&&f!=="default")it(t,`meta.role must be "default", got ${JSON.stringify(f)}`);let l=i.base===void 0?void 0:q0(t,"meta.base",i.base);if(l!==void 0&&!u)it(t,"meta.base is for market palettes");let d=l===void 0?void 0:n.bases?.get(l),h=u&&i.group===void 0?d?.group??la:fa(t,"meta.group",i.group),m=n.groups.get(h);if(!m&&!(u&&(h===la||n.open)))it(t,`meta.group "${h}" has no [[group]] table in ${Sn}`);let p=Hi(t,"colors.background",o.background),b=Hi(t,"colors.foreground",o.foreground),$=Hi(t,"colors.cursor",o.cursor),k=Hi(t,"colors.selection_background",o.selection_background),v=a.map((j,z)=>Hi(t,`colors.ansi[${z}]`,j)),E=RA(t,i.signature,{background:p,foreground:b,cursor:$,selection:k,ansi:v}),x=i.booru===void 0?void 0:da(t,"meta.booru",i.booru);if(x!==void 0&&/[\s\p{Cc}]/u.test(x))it(t,`meta.booru must be a single booru tag, got ${JSON.stringify(x)}`);let M=PA(t,i.booru_sites,x,n.foreign===!0),R=i.native_names===void 0?void 0:TA(t,i.native_names),F=Array.isArray(s.waive)?s.waive.map(String):[];if(F.length>0&&typeof s.reason!=="string")it(t,"contrast.waive needs a contrast.reason explaining why");let N=AA(t,r.picture,n.foreign===!0);return{name:c,...l?{base:l}:{},group:h,native:m?.native,...R?{nativeNames:R}:{},lead:!u&&m?.lead===c,order:u?d?.order??SA:Number(i.order),role:f,ansiSource:u&&i.ansi_source===void 0?l??"original":fa(t,"meta.ansi_source",i.ansi_source),...x?{booru:x}:{},...M?{booruSites:M}:{},background:p,foreground:b,cursor:$,selectionBackground:k,ansi:v,signature:E.colors,signatureSlots:E.names,ghostty:OA(t,r.ghostty,{background:p,cursor:$,selectionBackground:k}),waive:F,waiveReason:typeof s.reason==="string"?s.reason:void 0,...N?{pictures:N}:{}}}function V0(t){let e=NA(t),n=new Map(e.map((o)=>[o.name,o]));if(n.size!==e.length)it(Sn,"group.name must be unique");let r=vA(t).filter((o)=>o.endsWith(".toml")&&!o.startsWith("_")).map((o)=>_d(o,D0(J0(t,o),"utf8"),{name:EA(o,".toml"),groups:n})).sort((o,s)=>o.order-s.order);if(new Set(r.map((o)=>o.order)).size!==r.length)throw Error("themes: meta.order must be unique across all themes");for(let o of e){let s=r.filter((a)=>a.group===o.name);if(s.length===0)it(Sn,`group "${o.name}" has no themes`);if(!s.some((a)=>a.name===o.lead))it(Sn,`group "${o.name}" lead "${o.lead}" is not one of its themes`)}return r}function X0(t){return t.filter((e)=>e.role===void 0)}function Fi(t){let e=(r,i)=>r<i?-1:r>i?1:0,n=(r)=>ut(r.name)?r.name:r.base??r.name;return[...t].sort((r,i)=>Number(ut(r.name)!==void 0)-Number(ut(i.name)!==void 0)||e(r.group.toLowerCase(),i.group.toLowerCase())||Number(r.catalog===void 0)-Number(i.catalog===void 0)||e((r.catalog??"").toLowerCase(),(i.catalog??"").toLowerCase())||e(n(r),n(i))||Number(r.base!==void 0)-Number(i.base!==void 0)||e(r.name,i.name))}var ma={width:2560,height:1550},_A=1,GA=2560,BA=0.1,u$=0.99,UA=2,Li={tall:1.15,reach:0.4,widest:0.95,headroom:0.04,margin:0.03,stands:12},WA=Et(At("#19161e","#9b86c8",0.2)),KA="shelf",au="originals",zA="images.json",Bd=1;function qA(t,e){if(e==="background"||e==="foreground"||e==="cursor")return t[e];if(e==="selection"&&t.selection)return t.selection;let n=/^ansi(\d|1[0-5])$/.exec(e),r=n?t.ansi[Number(n[1])]:void 0;if(!r)throw Error(`${t.name} has no slot ${e}`);return r}function Q0(t){if(t(1))return 1;let e=0,n=1;for(let r=0;r<40;r++){let i=(e+n)/2;if(t(i))e=i;else n=i}return e}function l$(t,e){let n=(s)=>Kb({name:t.name,background:At(t.background,e,s),foreground:t.foreground,ansi:t.ansi,waive:t.waived??[]}).map((a)=>a.rule),r=new Set(n(0)),i=Q0((s)=>n(s).every((a)=>r.has(a))),o=Q0((s)=>Et(At(t.background,e,s))<=WA);return{cap:i,matched:o,opacity:Math.floor(Math.min(i,o)*100)/100}}function t$(t,e){let n=qA(t,e),{cap:r,matched:i,opacity:o}=l$(t,n),s=st(t.background),a=Math.hypot(...st(n).map((c,u)=>(c-(s[u]??0))*o));return{slot:e,color:n,cap:r,matched:i,opacity:o,reach:a}}function f$(t,e){return l$(t,e).opacity}function Mn(t,e){let n=t$(t,"cursor");if(n.opacity>=BA)return n;return e.filter((r)=>r!=="cursor"&&r!=="background").map((r)=>t$(t,r)).reduce((r,i)=>i.reach>r.reach?i:r,n)}function DA(t){return Xw(t)??{x:0,y:0,w:t.width,h:t.height}}function Dd(t,e){if(t<=0||e<=0)return ma;let n=Math.min(1,ma.width/Math.max(t,e));return{width:Math.round(t*n),height:Math.round(e*n)}}function d$(t,e,n,r){if(r<Li.stands){let c=t.w*n>t.h*e?{x:t.x+(t.w-t.h*e/n)/2,y:t.y,w:t.h*e/n,h:t.h}:{x:t.x,y:t.y,w:t.w,h:t.w*n/e};return{crop:c,at:{x:0,y:0,w:e,h:n},focus:(c.y-t.y+c.h/2)/t.h}}let i=Math.max(Li.tall*n,Li.reach*e*t.h/t.w),o=i*t.w/t.h;if(o>Li.widest*e)o=Li.widest*e,i=o*t.h/t.w;let s=Li.headroom*n,a=Math.min(1,(n-s)/i);return{crop:{x:t.x,y:t.y,w:t.w,h:t.h*a},at:{x:e*(1-Li.margin)-o,y:s,w:o,h:i*a},focus:Math.min(1,(n/2-s)/i)}}function JA(t,e){return 0.299*(t[e]??0)+0.587*(t[e+1]??0)+0.114*(t[e+2]??0)}function YA(t,e){let n=new Uint32Array(256),r=Math.max(1,Math.floor(e.w*e.h/400000)),i=0;for(let s=0;s<e.w*e.h;s+=r){let a=((e.y+Math.floor(s/e.w))*t.width+e.x+s%e.w)*4;if((t.data[a+3]??0)>=128){let c=Math.round(JA(t.data,a));n[c]=(n[c]??0)+1,i++}}let o=0;for(let s=0;s<256&&i>0;s++)if(o+=n[s]??0,o>=i*u$)return Math.min(UA,Math.max(1,255/Math.max(1,s)));return 1}var Gd=Float64Array.from({length:256},(t,e)=>{let n=e/255;return n<=0.04045?n/12.92:((n+0.055)/1.055)**2.4});function ZA(t,e,n){return`#${[t,e,n].map((r)=>Math.round(r).toString(16).padStart(2,"0")).join("")}`}function VA(t,e){let n=new Uint32Array(256),r=new Float64Array(768),i=Math.max(1,Math.floor(e.w*e.h/400000)),o=0;for(let a=0;a<e.w*e.h;a+=i){let c=((e.y+Math.floor(a/e.w))*t.width+e.x+a%e.w)*4;if((t.data[c+3]??0)>=128){let u=t.data[c]??0,f=t.data[c+1]??0,l=t.data[c+2]??0,d=Math.round(255*Math.sqrt(0.2126*(Gd[u]??0)+0.7152*(Gd[f]??0)+0.0722*(Gd[l]??0)));n[d]=(n[d]??0)+1,r[d*3]=(r[d*3]??0)+u,r[d*3+1]=(r[d*3+1]??0)+f,r[d*3+2]=(r[d*3+2]??0)+l,o++}}let s=0;for(let a=0;a<256&&o>0;a++)if(s+=n[a]??0,s>=o*u$){let c=Math.max(1,n[a]??1);return ZA((r[a*3]??0)/c,(r[a*3+1]??0)/c,(r[a*3+2]??0)/c)}return"#ffffff"}function XA(t,e){let n=t.data,r=new Uint8Array(t.width*t.height);for(let i=0,o=0;i<r.length;i++,o+=4){let s=n[o+3];if(s===0)continue;let a=(0.299*n[o]+0.587*n[o+1]+0.114*n[o+2])*e;r[i]=(a>255?255:a)*s/255+0.5}return{width:t.width,height:t.height,data:r}}function h$(t,e,n){let r=Math.max(0,Math.round(t.at.x)),i=Math.max(0,Math.round(t.at.y)),o=Math.min(e,Math.round(t.at.x+t.at.w)),s=Math.min(n,Math.round(t.at.y+t.at.h));if(o<=r||s<=i)return;let a=t.crop.w/t.at.w,c=t.crop.h/t.at.h;return{x0:r,y0:i,x1:o,y1:s,box:{x:t.crop.x+(r-t.at.x)*a,y:t.crop.y+(i-t.at.y)*c,w:(o-r)*a,h:(s-i)*c}}}function su(t,e,n,r){let i=new Float32Array(n*r),o=h$(e,n,r);if(o){let s=n0(t,o.box,o.x1-o.x0,o.y1-o.y0);for(let a=o.y0;a<o.y1;a++)i.set(s.data.subarray((a-o.y0)*(o.x1-o.x0),(a-o.y0+1)*(o.x1-o.x0)),a*n+o.x0)}return{width:n,height:r,data:i}}function Jd(t,e,n,r){let i=new Uint8Array(n*r*4),o=h$(e,n,r);if(o){let s=o.x1-o.x0,a=Vs(t,o.box,s,o.y1-o.y0);for(let c=o.y0;c<o.y1;c++)i.set(a.data.subarray((c-o.y0)*s*4,(c-o.y0+1)*s*4),(c*n+o.x0)*4)}return{width:n,height:r,data:i}}function Ud(t,e){if(e<=0)return t;let{width:n,height:r}=t,i=[0,1,2,3].map(()=>({width:n,height:r,data:new Float32Array(n*r)}));for(let a=0;a<n*r;a++){let c=t.data[a*4+3]??0;for(let u=0;u<3;u++)i[u].data[a]=(t.data[a*4+u]??0)*c/255;i[3].data[a]=c}let o=i.map((a)=>Xs(a,e).data),s=new Uint8Array(n*r*4);for(let a=0;a<n*r;a++){let c=o[3]?.[a]??0;if(c<=0)continue;for(let u=0;u<3;u++)s[a*4+u]=Math.min(255,Math.max(0,Math.round((o[u]?.[a]??0)*255/c)));s[a*4+3]=Math.min(255,Math.round(c))}return{width:n,height:r,data:s}}function Yd(t){let e=DA(t),n,r;return{box:e,clear:Yn(t,e),get ink(){return n??=XA(t,YA(t,e)),n},image:t,get peak(){return r??=VA(t,e),r}}}function m$(t,e,n,r,i){let o=Yd(t),{box:s,clear:a,ink:c}=o,u=d$(s,e,n,a),f=Math.min(1,GA/Math.max(s.w,s.h)),l={x:0,y:0,w:Math.round(s.w*f),h:Math.round(s.h*f)},d=r*l.w*u.crop.w/(s.w*u.at.w);if(i==="original")return{coloring:i,figure:Ud(Vs(t,s,l.w,l.h),d),fill:Ud(Jd(t,u,e,n),r),focus:u.focus,peak:o.peak};let h=su(c,{crop:s,at:l,focus:u.focus},l.w,l.h),m=su(c,u,e,n);return{coloring:i,figure:Qs(Xs(h,d)),fill:Qs(Xs(m,r)),focus:u.focus}}function QA(t,e,n,r){let i=st(e),o=st(n),s=new Uint8Array(t.width*t.height*4);for(let a=0;a<t.data.length;a++){let c=(t.data[a]??0)/255*r;for(let u=0;u<3;u++)s[a*4+u]=Math.round((i[u]??0)+((o[u]??0)-(i[u]??0))*c);s[a*4+3]=255}return{width:t.width,height:t.height,data:s}}function tN(t,e,n){let r=st(e),i=new Uint8Array(t.width*t.height*4);for(let o=0;o<t.width*t.height;o++){let s=(t.data[o*4+3]??0)/255*n;for(let a=0;a<3;a++)i[o*4+a]=Math.round((r[a]??0)+((t.data[o*4+a]??0)-(r[a]??0))*s);i[o*4+3]=255}return{width:t.width,height:t.height,data:i}}function p$(t,e,n,r,i,o,s,a="tone"){let{box:c,clear:u,ink:f}=t,l=d$(c,r,i,u),d=Math.round(100*l.at.w/l.crop.w/Math.min(r/c.w,i/c.h)),h=s?.size??"fill",m=h==="fill"?l:{crop:c,at:Jo(c.w,c.h,r,i,h,s?.at??5,!1,h>100?Math.round(l.focus*100):-1),focus:l.focus},p=a==="original"?f$(e,t.peak):n.opacity,b=s?.opacity??p;return{image:a==="original"?tN(Ud(Jd(t.image,m,r,i),o),e.background,b):QA(Qs(Xs(su(f,m,r,i),o)),e.background,n.color,b),fill:d,opacity:p}}function X(t){return Y(t,"ttheme","backgrounds")}function Wd(t){return Y(t,zA)}function Ci(t){try{return Ko(t,"utf8")}catch{return}}function Gr(t){try{return LA(t)}catch{return[]}}function Nt(t){let e=Ci(Wd(t));if(e===void 0)return eN(t);let n=JSON.parse(e);if(n.version!==Bd)throw Error(`${Wd(t)} is version ${n.version} — this ttheme reads version ${Bd}`);return n}function Ke(t){return t.coloring??"tone"}function Zd(t){return{name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,...t.selection?{selection:t.selection}:{},ansi:t.ansi,...t.waived?{waived:t.waived}:{}}}function zo(t){return{hue:{color:t.backdrop.color,opacity:t.backdrop.opacity},colors:Zd(t)}}function qo(t){return t.tone===void 0&&Ke(t)==="tone"}function e$(t){return(t.artist??[]).map((e)=>e.replace(/[\s,]+/g,"_")).join(",")}function g$(t,e){let n=e.pictures.findIndex((i)=>i.key===e.active),r=e.pictures[n];return[...r.artist?.length?[`# by ${e$(r)}`]:[],...r.from?[`# from ${r.from}`]:[],`# image ${r.key} ${n+1}/${e.pictures.length}`,...e.pictures.map((i)=>[`# picture ${i.key} ${i.stem} ${i.fill} ${i.opacity} ${i.artist?.length?e$(i):"-"}`,...i.from?[i.from]:[]].join(" ")),...e.pictures.filter((i)=>Ke(i)==="original").map((i)=>`# colors ${i.key} original`),`background-image = ${Y(t,r.fill)}`,"background-image-fit = cover","background-image-position = top-right",`background-image-opacity = ${r.opacity}`,`config-file = ?${r.stem}.tune.conf`,`config-file = ?${r.stem}.off.conf`,""].join(`
244
- `)}function b$(t){let e=X(t);for(let[n,r]of Object.entries(Nt(e).palettes)){let i=Y(e,`${ue(n)}.conf`),o=g$(e,r);if(Ci(i)!==o)L(i,o)}}function ji(t,e,n){L(Wd(t),`${JSON.stringify(e,null,2)}
245
- `);for(let r of n){let i=e.palettes[r],o=Y(t,`${ue(r)}.conf`);if(i)L(o,g$(t,i));else Wo(o,{force:!0})}}function w$(t,e){let n=X(t),r=Nt(n),i=[];for(let[o,s]of e){let a=r.palettes[o];if(a&&!r.palettes[s])r.palettes[s]=a,delete r.palettes[o],i.push(o,s)}if(i.length>0)ji(n,r,i)}function $$(t,e){return Gr(t).filter((n)=>n.startsWith(`${e}.`)||n.startsWith(`${e}@`))}function Vd(t,e){for(let n of $$(t,e))Wo(Y(t,n),{force:!0})}function k$(t,e){Vd(t,e.stem);for(let n of[e.original,e.cut])if(n)Wo(Y(t,n),{force:!0})}function n$(t,e,n,r){let i=c$(/^background-image\s*=\s*(.*?)\s*$/m.exec(e??"")?.[1]??"");if(!i.startsWith(`${t}.`)||!/^\.[0-9a-f]{8}@fill-\d+\.png$/.test(i.slice(t.length)))return;let o=i.slice(0,i.indexOf("@")),s=r??/^# image (\S+)$/m.exec(e??"")?.[1]??`picture_${o.slice(t.length+1)}`,a=/^# from (.+)$/m.exec(e??"")?.[1],c=Number(/^background-image-opacity\s*=\s*(\S+)/m.exec(e??"")?.[1]??1),u=n.find((f)=>f.startsWith(`${t}-${s}.`));return{key:s,stem:o,fill:i,opacity:Number.isFinite(c)?c:1,...a?{from:a}:{},...u?{original:Y(au,u)}:{}}}function r$(t,e){if(qd(t))a$(t,e)}function eN(t){let e={version:Bd,palettes:{}};if(!qd(t))return e;let n=Gr(Y(t,au)),r=Gr(t).filter((o)=>o.endsWith(".conf")&&o!=="shown.conf"&&!/\.(tune|off)\.conf$/.test(o)).map((o)=>o.slice(0,-5)),i=Y(t,KA);for(let o of new Set([...r,...Gr(i)])){let s=[],a=n$(o,Ci(Y(t,`${o}.conf`)),n);if(a)r$(Y(t,`${o}.tune.conf`),Y(t,`${a.stem}.tune.conf`)),r$(Y(t,`${o}.off.conf`),Y(t,`${a.stem}.off.conf`)),s.push(a);for(let c of Gr(Y(i,o))){let u=Y(i,o,c),f=n$(o,Ci(Y(u,".conf")),n,c);if(!f)continue;for(let l of Gr(u)){let d=l===".tune.conf"||l===".off.conf"?`${f.stem}${l}`:`${o}${l}`;if(l!==".conf")a$(Y(u,l),Y(t,d))}Wo(u,{recursive:!0}),s.push(f)}if(Gr(Y(i,o)).length===0)Wo(Y(i,o),{recursive:!0,force:!0});if(s.length>0)s.sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0),e.palettes[o]={active:(a??s[0]).key,pictures:s}}if(Gr(i).length===0)Wo(i,{recursive:!0,force:!0});return ji(t,e,Object.keys(e.palettes)),e}function i$(t,e,n){return e.startsWith("~/")?Y(n,e.slice(2)):jA(e)?e:Y(t,e)}function Te(t,e,n){let r=new Map,i=(a,c)=>{let u=Ci(a);if(u===void 0)return!1;for(let f of u.split(`
246
- `)){let l=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(f);if(l?.[1]==="config-file"&&c<4)i(i$(t,l[2].replace(/^\?/,""),n),c+1);else if(l&&/^background-image(?:-fit|-opacity|-position)?$/.test(l[1]))r.set(l[1],l[2])}return!0};if(!i(Y(t,`${ue(e)}.conf`),0))return;let o=r.get("background-image")??"";if(o==="")return;let s=Number(r.get("background-image-opacity")??1);return{image:i$(t,o,n),opacity:Number.isFinite(s)?s:1,cover:r.get("background-image-fit")==="cover",position:r.get("background-image-position")??"center"}}function le(t){return`${t.site}_${t.id}`}function cu(t,e,n){let r=X(t),i=Nt(r),o=i.palettes[e];if(!o)throw Error(`${e} has no image`);let s=o.pictures.findIndex((u)=>u.key===(n??o.active));if(s===-1)throw Error(`${e} has no picture ${n}`);let[a]=o.pictures.splice(s,1);k$(r,a);let c=o.pictures[s%Math.max(o.pictures.length,1)];if(!c)delete i.palettes[e];else if(a.key===o.active)o.active=c.key;return ji(r,i,[e]),{key:a.key,left:o.pictures.length}}function y$(t,e,n,r){let i=n.coloring==="original"?We(n.figure):Ri(n.figure,r),o=n.coloring==="original"?We(n.fill):Ri(n.fill,r),s=`${ue(t)}.${s$("sha1").update(e).update(i).update(o).digest("hex").slice(0,8)}`,a=`${s}@fill-${Math.round(n.focus*100)}.png`;return{stem:s,fill:a,files:[[`${s}.png`,i],[a,o]]}}function v$(t,e,n,r){return n==="original"&&r?{coloring:"original",opacity:f$(t,r),peak:r}:{coloring:"tone",opacity:e.opacity,tone:e.color}}function Kd(t,e){return Y(au,`${ue(t)}-${e}`)}function Xd(t,e){return e.map(([n,r])=>{let i=Y(t,n);return L(i,r),i})}function uu(t,e,n,r,i,o,s,a="tone"){let c=X(t),u=e.name,f=le(i),l=Nt(c),d=l.palettes[u]??{active:f,pictures:[]},h=Dd(o.width,o.height),m=m$(r,h.width,h.height,s,a),p=y$(u,f,m,n.color),b=Kd(u,f),$={key:f,stem:p.stem,fill:p.fill,...v$(e,n,m.coloring,m.coloring==="original"?m.peak:void 0),blur:s,window:h,...i.from?{from:i.from}:{},...i.artist?.length?{artist:i.artist}:{},...i.source?{source:i.source}:{},original:`${b}.${i.ext}`,...i.cut?{cut:`${b}.cut.png`}:{}},k=d.pictures.find((E)=>E.key===f);if(k)k$(c,k);FA(Y(c,au),{recursive:!0});let v=Xd(c,[...p.files,[$.original,i.bytes],...$.cut?[[$.cut,vd(Ii(r))]]:[]]);return d.pictures=k?d.pictures.map((E)=>E===k?$:E):[...d.pictures,$],d.active=f,l.palettes[u]=d,ji(c,l,[u]),[...v,Y(c,`${ue(u)}.conf`)]}function Do(t,e,n){let r=X(t),i=Nt(r),o=i.palettes[e],s=o?o.pictures.findIndex((a)=>a.key===n):-1;if(!o||s===-1)throw Error(`${e} has no picture ${n}`);if(o.active!==n)o.active=n,ji(r,i,[e]);return{at:s+1,of:o.pictures.length}}function ge(t,e){let n=Nt(X(t)).palettes[e];if(!n)return[];return[...n.pictures.filter((i)=>i.key===n.active),...n.pictures.filter((i)=>i.key!==n.active)]}var zd="top-right";function Jo(t,e,n,r,i,o,s,a=-1){let c=Math.trunc,u=(o-1)%3,f=c((o-1)/3),l=n*e>=r*t!==!s,d=l?c(i*n/100):c(i*r*t/(100*e)),h=l?c(i*n*e/(100*t)):c(i*r/100),m=c(u*(n-d)/2),p=c(f*(r-h)/2);if(a>=0){if(d>n)m=c((n-d)/2);if(h>r)p=Math.max(r-h,Math.min(0,c(r/2)-c(a*h/100)))}return{x:m,y:p,w:d,h}}function Qd(t,e){let n=Ci(Y(t,`${e.stem}.tune.conf`));if(n===void 0)return{};let r=(u)=>new RegExp(`^${u}\\s*=\\s*(.*?)\\s*$`,"m").exec(n)?.[1]??"",i=c$(r("background-image")),o=/@(\d+)-/.exec(i)?.[1],s=/@fill-\d+\.png$/.test(i)?"fill":o?Number(o):r("background-image-fit")==="cover"?"fill":100,a=r("background-image-position").replace("center-center","center")||"center",c=Number(r("background-image-opacity")||1);return{...s!=="fill"?{size:s}:{},...a!==zd?{position:a}:{},...Number.isFinite(c)&&c!==e.opacity?{opacity:c}:{}}}function pa(t,e,n,r,i){let o=n.size??"fill",s=n.position??zd,a=n.opacity??e.opacity;if(o==="fill"&&s===zd&&a===e.opacity)return;let c=qt.indexOf(s)+1,u=Y(t,`${e.stem}.png`),f=Y(t,e.fill),l=!0,d=typeof o==="number"&&(o>100||!r&&s!=="center");if(o===100&&!d)f=u,l=!1;else if(typeof o==="number"){if(qo(e))throw Error(`${e.stem} was drawn before pictures kept their tone — init draws it again`);let m=Gt(new Uint8Array(Ko(u))),{width:p,height:b}=d?ma:m,$=d?Number(/@fill-(\d+)\.png$/.exec(e.fill)?.[1]??50):-1,k=Jo(m.width,m.height,p,b,o,c,!1,$);f=Y(t,`${e.stem}@${o}-${s}${d?`-${p}x${b}`:""}.png`);let E={crop:{x:0,y:0,w:m.width,h:m.height},at:k,focus:$};L(f,e.tone?Ri(Qs(su(Ii(m),E,p,b)),e.tone):We(Jd(m,E,p,b))),l=d}let h=Y(t,`${e.stem}.tune.conf`);return L(h,[`background-image = ${f.startsWith(`${i}/`)?`~${f.slice(i.length)}`:f}`,`background-image-fit = ${l?"cover":"contain"}`,`background-image-position = ${s}`,`background-image-opacity = ${a}`,""].join(`
247
- `)),h}function E$(t){let e=new Map;for(let[n,r]of Object.entries(Nt(X(t)).palettes)){let[,i,o]=/^([a-z.]+)_(\d+)$/.exec(r.active)??[];if(i&&o)e.set(n,{site:i,id:Number(o)})}return e}function S$(t){try{let e=vn(new Uint8Array(Ko(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function M$(t,e,n,r,i,o,s){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:f}=CA(Y(t,c));return`${c}:${u}:${f}`}catch{return}});if(!n.original||a.includes(void 0))return;return L0([_A,ue(e),n.key,...a,r.width,r.height,i,o,o==="tone"?s:""])}function nN(t,e,n){if(!n.window||n.blur===void 0)return;let r=M$(t,e,n,n.window,n.blur,Ke(n),n.tone??"");if(!r||C0(r))return;try{Td(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:Ko(Y(t,`${n.stem}.png`)),picture:Ko(Y(t,n.fill))})}catch{}}function x$(t,e,n,r,i,o,s,a,c){let u=c?void 0:M$(t,e,n,r,s,a,o.hue.color),f=u?j0(u):void 0;if(f)return{made:{stem:f.stem,fill:f.fill,files:[[`${f.stem}.png`,f.figure],[f.fill,f.picture]]},peak:f.peak,image:void 0};let l=i();if(!l)return null;let d=m$(l,r.width,r.height,s,a),h=y$(e,n.key,d,o.hue.color),m=d.coloring==="original"?d.peak:void 0;if(u)Td(u,{stem:h.stem,fill:h.fill,...m?{peak:m}:{},figure:h.files[0]?.[1],picture:h.files[1]?.[1]});return{made:h,peak:m,image:l}}function ga(t,e,n,r,i,o,s,a,c,u=Ke(n)){let f=X(t),l=n.window??S$(Y(f,n.fill))??ma,d=x$(f,e,n,l,r,i,o,u,c);if(!d)return null;let{made:h,peak:m,image:p}=d,b={...n,stem:h.stem,fill:h.fill,...v$(i.colors,i.hue,u,m),blur:o,window:l,...c?{cut:`${Kd(e,n.key)}.cut.png`}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&p)L(Y(f,`${Kd(e,n.key)}.cut.png`),vd(Ii(p)));if(h.stem===n.stem)return b;if(Ke(n)!==u)nN(f,e,n);Xd(f,h.files);let $=Qd(f,n);pa(f,b,Ke(n)===u?$:{...$,opacity:void 0},s,a);let k=Y(f,`${n.stem}.off.conf`);if(qd(k))HA(k,Y(f,`${b.stem}.off.conf`));return b}function O$(t,e,n,r,i,o,s){let a=X(t),c=n.window??S$(Y(a,n.fill))??ma;return x$(a,e,n,c,r,i,o,s,!1)!==null}function th(t,e){let n=X(t),r=Nt(n),i=new Set,o=[];for(let{name:s,picture:a}of e){let c=r.palettes[s],u=c?.pictures.findIndex((l)=>l.key===a.key)??-1,f=c?.pictures[u];if(!c||!f)continue;if(c.pictures[u]=a,i.add(s),f.stem!==a.stem)o.push(f.stem)}if(i.size===0)return;ji(n,r,[...i]);for(let s of o)Vd(n,s)}function rN(t,e,n,r){let i=$$(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(Ko(Y(t,a)));return[a,Kc(c,r.color)??Ri(Ii(Gt(c)),r.color)]}),o=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,s=`${ue(e)}.${s$("sha1").update(n.key).update(o(`${n.stem}.png`)).update(o(n.fill)).digest("hex").slice(0,8)}`;Xd(t,i.map(([a,c])=>[s+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=Ci(Y(t,`${n.stem}.${a}.conf`));if(c!==void 0)L(Y(t,`${s}.${a}.conf`),c.split(n.stem).join(s))}return{...n,stem:s,fill:s+n.fill.slice(n.stem.length),tone:r.color}}function o$(t,e){return Ke(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function I$(t,e){let n=X(t),r=Nt(n),i=[],o=[];for(let[s,a]of Object.entries(r.palettes)){let c=e.get(s);if(!c||!a.pictures.some((u)=>o$(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!o$(u,c))return u;let f=rN(n,s,u,c.hue);if(f.stem!==u.stem)o.push(u.stem);return f}),i.push(s)}if(i.length>0){ji(n,r,i);for(let s of o)Vd(n,s)}return i}var iN=1;function sn(t){let{slot:e,color:n,opacity:r}=Mn({name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi,waived:t.waive},t.signatureSlots);return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},...t.lead?{lead:!0}:{},order:t.order,ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},...t.role==="default"?{default:!0}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,signature:t.signature,signatureSlots:t.signatureSlots,ansi:t.ansi,gate:$n(t),...t.waive.length>0?{waived:t.waive}:{},backdrop:{slot:e,color:n,opacity:r},...t.pictures?{pictures:t.pictures}:{}}}function He(t){return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},lead:t.lead===!0,order:t.order,...t.default?{role:"default"}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selectionBackground:t.selection,ansi:t.ansi,signature:t.signature,signatureSlots:t.signatureSlots,ghostty:{iconGhost:t.cursor,iconScreen:[t.cursor,t.selection,t.background]},waive:t.waived??[],...t.pictures?{pictures:t.pictures}:{}}}var oN=6,sN=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function lu(t){let e=(o)=>o.startsWith("ansi")?t.ansi[Number(o.slice(4))]:o==="foreground"?t.foreground:o==="cursor"?t.cursor:o==="selection"?t.selection:void 0,n=(o)=>o.startsWith("ansi")?`ansi${Number(o.slice(4))%8}`:o,r=new Set,i=[];for(let o of["foreground",...t.signatureSlots,...sN]){let s=e(o);if(i.length===oN||!s||r.has(n(o))||i.includes(s))continue;r.add(n(o)),i.push(s)}return i}function Tt(t){return t.filter((e)=>e.default!==!0)}function fu(){return{schema:iN,version:ft.version,gate:Ie,palettes:[]}}import{existsSync as aN,readFileSync as hu,statSync as R$}from"node:fs";import{homedir as Xo}from"node:os";import{join as Zo}from"node:path";var cN=["core","kowiki","unlicensed"],uN=["ko","ja","en","zh","other"],N$=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],T$="TTNI";function Br(t=Xo()){return Zo(process.env.XDG_CACHE_HOME??Zo(t,".cache"),"ttheme","aninames")}var lN=/[ァ-ヶ]/g,fN=/[\s\p{P}\p{S}]+/gu;function Vo(t){return t.normalize("NFKC").toLowerCase().replace(lN,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(fN,"")}function _i(t,e){let n=Vo(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>Vo(r).includes(n))}function ih(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function H$(t){let e=Br(t);return cN.map((n)=>Zo(e,`ttheme-${n}.json`)).filter((n)=>aN(n))}var dN=6;function F$(t){return[`format ${dN}`,...t.map((e)=>`${e}:${R$(e).size}:${R$(e).mtimeMs}`)].join("|")}function hN(t){try{return JSON.parse(hu(t,"utf8"))}catch{return{}}}function mN(t){let e=new Map;for(let i of t)for(let[o,s]of Object.entries(hN(i))){let a=e.get(o)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};a.posts=Math.max(a.posts,s.posts??0),a.generated.push(...s.generated??[]),a.japanese.push(...s.names?.ja??[]),a.tag??=s.tag;for(let c of s.danbooru??[])a.tags.add(c);for(let c of uN)a.names.push(...s.names?.[c]??[]);if(s.rank!==void 0){let c=s.weight??1;a.rank=(a.rank*a.weight+s.rank*c)/(a.weight+c),a.weight+=c}e.set(o,a)}let n=[],r=Math.log1p([...e.values()].reduce((i,o)=>Math.max(i,o.posts),1));for(let i of e.values()){if(i.tags.size===0)continue;let o=[...i.tags];n.push({tag:i.tag&&i.tags.has(i.tag)?i.tag:o[0],tags:o,names:[...new Set(i.names)],japanese:[...new Set(i.japanese)],generated:[...new Set(i.generated)],rank:i.posts>0?Math.log1p(i.posts)/r:i.rank})}return n}function ba(t,e){let n=new t(e.length);return n.set(e),n}function eh(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:ba(Uint32Array,e)}}function pN(t,e){let n=mN(t),r=new Map,i=(v,E,x)=>{let M=r.get(v),R=E*4+x;if(!M)r.set(v,[R]);else if(M.at(-1)>>>2!==E)M.push(R);else if(M.at(-1)<R)M[M.length-1]=R};n.forEach((v,E)=>{let x=[...v.names,...v.tags.map((M)=>M.replaceAll("_"," "))];for(let[M,R]of[[x,1],[v.generated,0]])for(let F of M){let N=Vo(F);if(N&&ih(N))i(N,E,2|R);let j=F.split(/[\s・·_]+/);if(j.length<2)continue;for(let z of j){let G=Vo(z);if(G&&ih(G))i(G,E,R)}}});let o=[...r.keys()].sort(),s=[0],a=[];for(let v of o){for(let E of r.get(v)??[])a.push(E);s.push(a.length)}let c=n.flatMap((v,E)=>v.tags.map((x)=>[x,E])).sort(([v],[E])=>v<E?-1:v>E?1:0),u=eh(o.map((v)=>Buffer.from(v))),f=eh(n.map((v)=>Buffer.from(JSON.stringify([v.tag,v.tags,v.names,v.japanese,v.generated])))),l=eh(c.map(([v])=>Buffer.from(v))),d={keys:u.bytes,keyAt:u.at,ownAt:ba(Uint32Array,s),owners:ba(Uint32Array,a),cards:f.bytes,cardAt:f.at,ranks:ba(Float32Array,n.map((v)=>v.rank)),tags:l.bytes,tagAt:l.at,tagCard:ba(Uint32Array,c.map(([,v])=>v))},h=N$.map((v)=>{let E=d[v];return Buffer.from(E.buffer,E.byteOffset,E.byteLength)}),m=0,p=h.map((v)=>{let E=[m,v.length];return m+=Math.ceil(v.length/4)*4,E}),b=Buffer.from(JSON.stringify({stamp:e,sections:p})),$=Math.ceil((8+b.length)/4)*4,k=Buffer.alloc($+m);k.write(T$,0,"latin1"),k.writeUInt32LE(b.length,4),b.copy(k,8);for(let[v,E]of h.entries())E.copy(k,$+(p[v]?.[0]??0));return k}function P$(t,e,n,r){let i=e.byteOffset+n;if(i%4===0)return new t(e.buffer,i,r/4);return new t(e.buffer.slice(i,i+r),0,r/4)}function A$(t,e){if(t.toString("latin1",0,4)!==T$)return;let n=t.readUInt32LE(4),r=JSON.parse(t.toString("utf8",8,8+n));if(r.stamp!==e)return;let i=Math.ceil((8+n)/4)*4,o=(c)=>{let[u,f]=r.sections[N$.indexOf(c)];return[i+u,f]},s=(c)=>{let[u,f]=o(c);return t.subarray(u,u+f)},a=(c)=>P$(Uint32Array,t,...o(c));return{keys:s("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:s("cards"),cardAt:a("cardAt"),ranks:P$(Float32Array,t,...o("ranks")),tags:s("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var nh;function oh(t){try{let e=H$(t);if(e.length===0)return;let n=F$(e);if(nh?.stamp===n)return nh.index;let r=Zo(Br(t),"index.bin"),i;try{i=A$(hu(r),n)}catch{}if(!i){let o=pN(e,n);try{L(r,o)}catch{}i=A$(o,n)}if(i)nh={stamp:n,index:i};return i}catch{return}}function L$(t,e){let[n,r,i,o,s]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:o,generated:s,rank:t.ranks[e]??0}}function C$(t,e,n,r){let i=0,o=n;while(i<o){let s=i+o>>1;if(t.toString("utf8",e[s],e[s+1])<r)i=s+1;else o=s}return i}function j$(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=C$(t.tags,t.tagAt,r,e);if(i>=r||t.tags.compare(n,0,n.length,t.tagAt[i],t.tagAt[i+1])!==0)return;return t.tagCard[i]}var rh=/\s*[((][^()()]*[))]$/u,du={ko:4,en:4,ja:5,zh:3};function gN(t){if(!t)return[];let e=/\p{Script=Hangul}/u,n=/^[\p{Script=Latin}\p{N}\s.'’-]+$/u,r=new Set([...t.names,...t.generated].filter((l)=>!rh.test(l))),i=(l)=>!rh.test(l)||!r.has(l.replace(rh,"")),o=t.names.filter(i),s=o.filter((l)=>e.test(l)),a=[...s,...t.generated.slice(0,s.length>0?0:2)],c=o.filter((l)=>n.test(l)),u=t.japanese.filter(i),f=o.filter((l)=>!e.test(l)&&!n.test(l)&&!u.includes(l));return[...new Set([...a.slice(0,du.ko),...c.slice(0,du.en),...u.slice(0,du.ja),...f.slice(0,du.zh)])]}var Yo;function mu(t,e=Xo()){if(!t)return[];if(!Yo)try{Yo=JSON.parse(hu(Zo(Br(e),"aliases.json"),"utf8")).tags}catch{Yo={}}return Yo[t]??[]}function sh(t,e=Xo()){try{return bN(t,e)}catch{return new Map}}function bN(t,e){let n=new Map,r=H$(e);if(r.length===0||t.length===0)return n;let i=F$(r),o=Zo(Br(e),"aliases.json"),s;try{s=JSON.parse(hu(o,"utf8"))}catch{}if(s?.stamp===i&&t.every((f)=>(f in s.tags))){Yo=s.tags;for(let f of t)n.set(f,s.tags[f]??[]);return n}let a=oh(e);if(!a)return n;let c=new Set([...t,...s?.stamp===i?Object.keys(s.tags):[]]),u={};for(let f of c){let l=j$(a,f);u[f]=l===void 0?[]:gN(L$(a,l))}try{L(o,`${JSON.stringify({stamp:i,tags:u})}
248
- `)}catch{}Yo=u;for(let f of t)n.set(f,u[f]??[]);return n}function Gi(t,e=Xo()){sh(t.flatMap((n)=>n.booru?[n.booru]:[]),e)}var wN=0.25,$N=0.1;function _$(t,e,n=new Set,r=Xo()){let i=Vo(t);if(!i||!ih(i))return[];let o=oh(r);if(!o)return[];let s=Buffer.from(i),a=o.ownAt.length-1,c=new Set([...n].flatMap((f)=>j$(o,f)??[])),u=new Map;for(let f=C$(o.keys,o.keyAt,a,i);f<a;f++){let l=o.keyAt[f],d=o.keyAt[f+1]-l;if(d<s.length||o.keys.compare(s,0,s.length,l,l+s.length)!==0)break;let h=d===s.length;for(let m=o.ownAt[f];m<o.ownAt[f+1];m++){let p=o.owners[m],b=p>>>2,$=h?Math.max(0,(p&2?2:1)-(p&1?0:1)):0,k=(o.ranks[b]??0)+wN*$+(c.has(b)?$N:0);if((u.get(b)?.score??-1)<k)u.set(b,{score:k,key:f})}}return[...u].sort(([,f],[,l])=>l.score-f.score).slice(0,e).map(([f,{key:l}])=>{let d=L$(o,f),h=o.keys.toString("utf8",o.keyAt[l],o.keyAt[l+1]);return{tag:d.tags.find((m)=>n.has(m))??d.tag,name:[...d.names,...d.generated].find((m)=>Vo(m).includes(h))??d.tag.replaceAll("_"," ")}})}function pu(t=Xo()){oh(t)}import{createHash as RN}from"node:crypto";import{existsSync as PN,readdirSync as Y$,readFileSync as AN}from"node:fs";import{basename as Z$,join as wu}from"node:path";import{existsSync as kN,readFileSync as G$}from"node:fs";import{homedir as B$}from"node:os";import{isAbsolute as U$,join as Bi,resolve as yN}from"node:path";var Z="official",Bt="ttheme-market.toml",vN="https://www.schemastore.org/ttheme-market.json",W$="https://www.schemastore.org/ttheme-palette.json",K$=["$schema","name","description","owner","renames","force_remove_deleted_palettes","metadata"],z$=["name","email","url"],Qo="ttheme-market",EN=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i,SN=/^[\w.-]{1,100}$/,MN=/^\w[\w.+/-]{0,199}$/;function Xn(t){return Bi(t,"ttheme","installed.json")}function Dt(t){return t??[Z]}function ts(t){try{let{markets:e}=JSON.parse(G$(Xn(t),"utf8"));return Dt(Array.isArray(e)?e.filter((n)=>typeof n==="string"):void 0)}catch{return[Z]}}function Ht(t){return U$(t)}function kt(t){return t!==Z&&!Ht(t)}function Ur(t){let e=t.indexOf("#");return kt(t)&&e>=0?t.slice(0,e):t}function wa(t){let e=t.indexOf("#");return kt(t)&&e>=0?t.slice(e+1):void 0}function es(t,e){return Ur(t)===Ur(e)}function Wr(t,e){return kt(t)&&(e?.[t]??!1)}function xN(t){return!MN.test(t)||t.includes("..")||t.includes("//")||/(?:[./]|\.lock)$/.test(t)}function Kr(t,e=process.cwd()){if(t===Z)return Z;if(t==="~"||t.startsWith("~/"))return Bi(B$(),t.slice(1));if(t.startsWith(".")||U$(t))return yN(e,t);let[n="",r,...i]=t.split("#"),[o,s,...a]=n.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").split("/");if(!o||!EN.test(o)||!s||!SN.test(s)||a.length>0||i.length>0||r!==void 0&&xN(r))throw Error(`${t} is not a market — give a repository (alice/ttheme-dust, #v1 pins a tag or branch) or a path (./my-market)`);return`${o.toLowerCase()}/${s}${r===void 0?"":`#${r}`}`}function q$(t){let e=wa(t)?.split("/").map(encodeURIComponent).join("/")??"HEAD";return`https://codeload.github.com/${Ur(t)}/tar.gz/${e}`}function D$(t){return t.slice(0,t.indexOf("/"))}function uh(t){return Bi(t,"ttheme","markets")}function Qn(t,e){return Bi(uh(t),`${Ur(e).replace("/","--")}.json`)}function gu(t){return Bi(t,"ttheme","market")}function lh(t,e){return Bi(gu(t),e)}function ON(t,e){if(typeof t!=="string"||typeof e!=="string")return'needs a "name" and an [owner] table whose name is the GitHub handle';return Ne(`${t}@${e}/x`)}function be({owner:t,name:e}){return`${t}@${e}`}function J$({owner:t,name:e}){return`"$schema" = ${JSON.stringify(vN)}
242
+ */var qt=["top-left","top-center","top-right","center-left","center","center-right","bottom-left","bottom-center","bottom-right"],wa="Original",eN=1e6,Mn="_groups.toml",i$=3,o$=8,zd="[a-z0-9]+(?:-[a-z0-9]+)*",nN=new RegExp(`^(?:(${zd})@(${zd})/)?(${zd})$`),u$=["background","foreground","cursor","selection"];function nt(t,e){throw Error(`${t}: ${e}`)}function ji(t,e,n){if(typeof n!=="string"||!he(n))nt(t,`${e} must be "#rrggbb" (lowercase), got ${JSON.stringify(n)}`);return n}function ka(t,e,n){if(typeof n!=="string"||n.length===0)nt(t,`${e} must be a non-empty string`);return n}function ue(t){return t.replace("@","--").replace("/","--")}function j(t){return`ttheme-${ue(t)}`}function ut(t){let e=t.indexOf("/");return e<0?void 0:t.slice(0,e)}function pe(t){return t.slice(t.indexOf("/")+1)}function Te(t){let e=nN.exec(t);if(!e)return"takes lowercase letters, digits and single hyphens, as <palette> or <owner>@<market>/<palette>";if((e[1]?.length??0)>39)return"has an owner longer than a GitHub handle can be";return(e[2]?.length??0)>40||(e[3]?.length??0)>40?"is longer than 40 characters":void 0}function ya(t){if(/[\p{Cc}"$`\\]/u.test(t))return"holds a control character, a quote, $, ` or \\";return t.length>80?"is longer than 80 characters":void 0}function $a(t,e,n){let r=ka(t,e,n),i=ya(r);if(i)nt(t,`${e} ${JSON.stringify(r)} ${i}`);return r}function s$(t,e,n){let r=ka(t,e,n),i=Te(r);if(i)nt(t,`${e} "${r}" ${i}`);return r}function Do(t){return t&&typeof t==="object"?t:{}}function rN(t,e,n){if(e===void 0)return[n.cursor,n.selectionBackground,n.background];let r=Array.isArray(e)?e:[e];if(r.length===0)nt(t,"ghostty.icon_screen must not be empty");return r.map((i,o)=>ji(t,`ghostty.icon_screen[${o}]`,i))}function iN(t,e,n){let r=Do(e);return{iconGhost:r.icon_ghost===void 0?n.cursor:ji(t,"ghostty.icon_ghost",r.icon_ghost),iconScreen:rN(t,r.icon_screen,n)}}function oN(t){return new Map([...u$.map((e)=>[e,t[e]]),...t.ansi.map((e,n)=>[`ansi${n}`,e])])}function sN(t,e,n){if(!Array.isArray(e)||e.length!==i$)nt(t,`meta.signature must name exactly ${i$} palette slots`);let r=oN(n),i=[],o=[];for(let[s,a]of e.entries()){let c=`meta.signature[${s}]`,u=ka(t,c,a),f=r.get(u);if(f===void 0)nt(t,`${c} ${JSON.stringify(a)} is not a palette slot — use ${u$.join(", ")} or ansi0-ansi15`);i.push(u),o.push(f)}if(new Set(o).size!==o.length)nt(t,"meta.signature slots must resolve to three different colors");return{names:i,colors:o}}function aN(t,e,n,r=!1){if(e===void 0)return;if(!n)nt(t,"meta.booru_sites renames meta.booru per site, so it needs meta.booru");if(!e||typeof e!=="object"||Array.isArray(e))nt(t,'meta.booru_sites must be a table of site = "tag" or site = ["tag", ...]');let i={};for(let[o,s]of Object.entries(e)){let a=Z.find((u)=>u.key===o);if(!a){if(r)continue;nt(t,`meta.booru_sites.${o} is not a find site — use ${Z.map((u)=>u.key).join(", ")}`)}let c=typeof s==="string"?[s]:Array.isArray(s)?s:void 0;if(!c||c.some((u)=>typeof u!=="string"||u===""||/\s/.test(u)))nt(t,`meta.booru_sites.${o} must be one tag or a list of tags, got ${JSON.stringify(s)}`);if(c.length>1&&!a.ors)nt(t,`meta.booru_sites.${o} takes one tag — ${a.name} does not OR tags`);if(c.length>a.tagBudget)nt(t,`meta.booru_sites.${o} takes ${a.tagBudget} tags at most — ${a.name} searches that many at a time`);i[o]=c}return i}function cN(t,e,n){if(e===void 0)return;if(!Array.isArray(e)||e.length===0||e.length>o$)nt(t,`[[picture]] holds 1 to ${o$} pictures`);let r=e.flatMap((i,o)=>{let s=Do(i),a=`picture[${o}]`,c=Z.find((h)=>h.key===s.site);if(!c){if(n)return[];nt(t,`${a}.site must be one of ${Z.map((h)=>h.key).join(", ")}`)}if(typeof s.id!=="number"||!Number.isSafeInteger(s.id)||s.id<=0)nt(t,`${a}.id must be the post's number on ${c.name}`);let{size:u,position:f,opacity:l}=s;if(u!==void 0&&u!=="fill"&&!(Number.isInteger(u)&&Number(u)>=20&&Number(u)<=999))nt(t,`${a}.size must be "fill" or a percentage from 20 to 999`);let d=f===void 0||qt.includes(f);if(!d&&!n)nt(t,`${a}.position must be one of ${qt.join(", ")}`);if(l!==void 0&&!(typeof l==="number"&&l>=0&&l<=1))nt(t,`${a}.opacity must be a number from 0 to 1`);return[{site:c.key,id:s.id,...u!==void 0?{size:u}:{},...f!==void 0&&d?{position:f}:{},...l!==void 0?{opacity:l}:{}}]});return r.length>0?r:void 0}function qd(t,e){try{return Ci(e)}catch(n){nt(t,`is not valid TOML — ${(n instanceof Error?n.message:String(n)).split(`
243
+ `)[0]}`)}}function uN(t){let n=qd(Mn,a$(c$(t,Mn),"utf8")).group;if(!Array.isArray(n)||n.length===0)nt(Mn,"needs at least one [[group]] table");return n.map((r)=>{let i=Do(r);return{name:$a(Mn,"group.name",i.name),native:i.native===void 0?void 0:$a(Mn,"group.native",i.native),lead:ka(Mn,"group.lead",i.lead)}})}function lN(t,e){if(!Array.isArray(e)||e.length===0)nt(t,'meta.native_names must be a list of names, like ["後藤ひとり"]');return e.map((n,r)=>{let i=$a(t,`meta.native_names[${r}]`,n);if(i.includes("|"))nt(t,`meta.native_names[${r}] ${JSON.stringify(i)} contains |`);return i})}var Dd={"":["$schema","meta","colors","contrast","ghostty","picture"],meta:["name","base","group","ansi_source","booru","booru_sites","native_names","signature","order","role"],colors:["background","foreground","cursor","selection_background","ansi"],contrast:["waive","reason"],ghostty:["icon_ghost","icon_screen"],picture:["site","id","size","position","opacity"]};function l$(t,e){let n=qd(t,e),r=(i,o,s=[])=>o&&typeof o==="object"&&!Array.isArray(o)?Object.keys(o).filter((a)=>!s.includes(a)).map((a)=>i?`${i}.${a}`:a):[];return[...r("",n,Dd[""]),...["meta","colors","contrast","ghostty"].flatMap((i)=>r(i,n[i],Dd[i])),...(Array.isArray(n.picture)?n.picture:[]).flatMap((i,o)=>r(`picture[${o}]`,i,Dd.picture))]}function Jd(t,e,n){let r=qd(t,e),i=Do(r.meta),o=Do(r.colors),s=Do(r.contrast),a=o.ansi;if(!Array.isArray(a)||a.length!==16)nt(t,`colors.ansi must hold exactly 16 colors, got ${Array.isArray(a)?a.length:typeof a}`);let c=s$(t,"meta.name",i.name);if(c!==n.name)nt(t,`meta.name "${c}" does not match its file — it lives at ${n.name}`);let u=n.open===!0;for(let _ of["order","role"])if(u&&i[_]!==void 0)nt(t,`meta.${_} is for the official palettes — a market palette follows its base`);let f=i.role;if(f!==void 0&&f!=="default")nt(t,`meta.role must be "default", got ${JSON.stringify(f)}`);let l=i.base===void 0?void 0:s$(t,"meta.base",i.base);if(l!==void 0&&!u)nt(t,"meta.base is for market palettes");let d=l===void 0?void 0:n.bases?.get(l),h=u&&i.group===void 0?d?.group??wa:$a(t,"meta.group",i.group),m=n.groups.get(h);if(!m&&!(u&&(h===wa||n.open)))nt(t,`meta.group "${h}" has no [[group]] table in ${Mn}`);let p=ji(t,"colors.background",o.background),b=ji(t,"colors.foreground",o.foreground),$=ji(t,"colors.cursor",o.cursor),k=ji(t,"colors.selection_background",o.selection_background),v=a.map((_,D)=>ji(t,`colors.ansi[${D}]`,_)),S=sN(t,i.signature,{background:p,foreground:b,cursor:$,selection:k,ansi:v}),x=i.booru===void 0?void 0:ka(t,"meta.booru",i.booru);if(x!==void 0&&/[\s\p{Cc}]/u.test(x))nt(t,`meta.booru must be a single booru tag, got ${JSON.stringify(x)}`);let M=aN(t,i.booru_sites,x,n.foreign===!0),I=i.native_names===void 0?void 0:lN(t,i.native_names),L=Array.isArray(s.waive)?s.waive.map(String):[];if(L.length>0&&typeof s.reason!=="string")nt(t,"contrast.waive needs a contrast.reason explaining why");let N=cN(t,r.picture,n.foreign===!0);return{name:c,...l?{base:l}:{},group:h,native:m?.native,...I?{nativeNames:I}:{},lead:!u&&m?.lead===c,order:u?d?.order??eN:Number(i.order),role:f,ansiSource:u&&i.ansi_source===void 0?l??"original":$a(t,"meta.ansi_source",i.ansi_source),...x?{booru:x}:{},...M?{booruSites:M}:{},background:p,foreground:b,cursor:$,selectionBackground:k,ansi:v,signature:S.colors,signatureSlots:S.names,ghostty:iN(t,r.ghostty,{background:p,cursor:$,selectionBackground:k}),waive:L,waiveReason:typeof s.reason==="string"?s.reason:void 0,...N?{pictures:N}:{}}}function f$(t){let e=uN(t),n=new Map(e.map((o)=>[o.name,o]));if(n.size!==e.length)nt(Mn,"group.name must be unique");let r=QA(t).filter((o)=>o.endsWith(".toml")&&!o.startsWith("_")).map((o)=>Jd(o,a$(c$(t,o),"utf8"),{name:tN(o,".toml"),groups:n})).sort((o,s)=>o.order-s.order);if(new Set(r.map((o)=>o.order)).size!==r.length)throw Error("themes: meta.order must be unique across all themes");for(let o of e){let s=r.filter((a)=>a.group===o.name);if(s.length===0)nt(Mn,`group "${o.name}" has no themes`);if(!s.some((a)=>a.name===o.lead))nt(Mn,`group "${o.name}" lead "${o.lead}" is not one of its themes`)}return r}function d$(t){return t.filter((e)=>e.role===void 0)}function _i(t){let e=(r,i)=>r<i?-1:r>i?1:0,n=(r)=>ut(r.name)?r.name:r.base??r.name;return[...t].sort((r,i)=>Number(ut(r.name)!==void 0)-Number(ut(i.name)!==void 0)||e(r.group.toLowerCase(),i.group.toLowerCase())||Number(r.catalog===void 0)-Number(i.catalog===void 0)||e((r.catalog??"").toLowerCase(),(i.catalog??"").toLowerCase())||e(n(r),n(i))||Number(r.base!==void 0)-Number(i.base!==void 0)||e(r.name,i.name))}var va={width:2560,height:1550},gN=1,bN=2560,wN=0.1,S$=0.99,$N=2,Gi={tall:1.15,reach:0.4,widest:0.95,headroom:0.04,margin:0.03,stands:12},kN=St(At("#19161e","#9b86c8",0.2)),yN="shelf",mu="originals",vN="images.json",Vd=1;function SN(t,e){if(e==="background"||e==="foreground"||e==="cursor")return t[e];if(e==="selection"&&t.selection)return t.selection;let n=/^ansi(\d|1[0-5])$/.exec(e),r=n?t.ansi[Number(n[1])]:void 0;if(!r)throw Error(`${t.name} has no slot ${e}`);return r}function h$(t){if(t(1))return 1;let e=0,n=1;for(let r=0;r<40;r++){let i=(e+n)/2;if(t(i))e=i;else n=i}return e}function E$(t,e){let n=(s)=>Qb({name:t.name,background:At(t.background,e,s),foreground:t.foreground,ansi:t.ansi,waive:t.waived??[]}).map((a)=>a.rule),r=new Set(n(0)),i=h$((s)=>n(s).every((a)=>r.has(a))),o=h$((s)=>St(At(t.background,e,s))<=kN);return{cap:i,matched:o,opacity:Math.floor(Math.min(i,o)*100)/100}}function m$(t,e){let n=SN(t,e),{cap:r,matched:i,opacity:o}=E$(t,n),s=ot(t.background),a=Math.hypot(...ot(n).map((c,u)=>(c-(s[u]??0))*o));return{slot:e,color:n,cap:r,matched:i,opacity:o,reach:a}}function M$(t,e){return E$(t,e).opacity}function xn(t,e){let n=m$(t,"cursor");if(n.opacity>=wN)return n;return e.filter((r)=>r!=="cursor"&&r!=="background").map((r)=>m$(t,r)).reduce((r,i)=>i.reach>r.reach?i:r,n)}function EN(t){return a0(t)??{x:0,y:0,w:t.width,h:t.height}}function nh(t,e){if(t<=0||e<=0)return va;let n=Math.min(1,va.width/Math.max(t,e));return{width:Math.round(t*n),height:Math.round(e*n)}}function x$(t,e,n,r){if(r<Gi.stands){let c=t.w*n>t.h*e?{x:t.x+(t.w-t.h*e/n)/2,y:t.y,w:t.h*e/n,h:t.h}:{x:t.x,y:t.y,w:t.w,h:t.w*n/e};return{crop:c,at:{x:0,y:0,w:e,h:n},focus:(c.y-t.y+c.h/2)/t.h}}let i=Math.max(Gi.tall*n,Gi.reach*e*t.h/t.w),o=i*t.w/t.h;if(o>Gi.widest*e)o=Gi.widest*e,i=o*t.h/t.w;let s=Gi.headroom*n,a=Math.min(1,(n-s)/i);return{crop:{x:t.x,y:t.y,w:t.w,h:t.h*a},at:{x:e*(1-Gi.margin)-o,y:s,w:o,h:i*a},focus:Math.min(1,(n/2-s)/i)}}function MN(t,e){return 0.299*(t[e]??0)+0.587*(t[e+1]??0)+0.114*(t[e+2]??0)}function xN(t,e){let n=new Uint32Array(256),r=Math.max(1,Math.floor(e.w*e.h/400000)),i=0;for(let s=0;s<e.w*e.h;s+=r){let a=((e.y+Math.floor(s/e.w))*t.width+e.x+s%e.w)*4;if((t.data[a+3]??0)>=128){let c=Math.round(MN(t.data,a));n[c]=(n[c]??0)+1,i++}}let o=0;for(let s=0;s<256&&i>0;s++)if(o+=n[s]??0,o>=i*S$)return Math.min($N,Math.max(1,255/Math.max(1,s)));return 1}var Yd=Float64Array.from({length:256},(t,e)=>{let n=e/255;return n<=0.04045?n/12.92:((n+0.055)/1.055)**2.4});function ON(t,e,n){return`#${[t,e,n].map((r)=>Math.round(r).toString(16).padStart(2,"0")).join("")}`}function PN(t,e){let n=new Uint32Array(256),r=new Float64Array(768),i=Math.max(1,Math.floor(e.w*e.h/400000)),o=0;for(let a=0;a<e.w*e.h;a+=i){let c=((e.y+Math.floor(a/e.w))*t.width+e.x+a%e.w)*4;if((t.data[c+3]??0)>=128){let u=t.data[c]??0,f=t.data[c+1]??0,l=t.data[c+2]??0,d=Math.round(255*Math.sqrt(0.2126*(Yd[u]??0)+0.7152*(Yd[f]??0)+0.0722*(Yd[l]??0)));n[d]=(n[d]??0)+1,r[d*3]=(r[d*3]??0)+u,r[d*3+1]=(r[d*3+1]??0)+f,r[d*3+2]=(r[d*3+2]??0)+l,o++}}let s=0;for(let a=0;a<256&&o>0;a++)if(s+=n[a]??0,s>=o*S$){let c=Math.max(1,n[a]??1);return ON((r[a*3]??0)/c,(r[a*3+1]??0)/c,(r[a*3+2]??0)/c)}return"#ffffff"}function IN(t,e){let n=t.data,r=new Uint8Array(t.width*t.height);for(let i=0,o=0;i<r.length;i++,o+=4){let s=n[o+3];if(s===0)continue;let a=(0.299*n[o]+0.587*n[o+1]+0.114*n[o+2])*e;r[i]=(a>255?255:a)*s/255+0.5}return{width:t.width,height:t.height,data:r}}function O$(t,e,n){let r=Math.max(0,Math.round(t.at.x)),i=Math.max(0,Math.round(t.at.y)),o=Math.min(e,Math.round(t.at.x+t.at.w)),s=Math.min(n,Math.round(t.at.y+t.at.h));if(o<=r||s<=i)return;let a=t.crop.w/t.at.w,c=t.crop.h/t.at.h;return{x0:r,y0:i,x1:o,y1:s,box:{x:t.crop.x+(r-t.at.x)*a,y:t.crop.y+(i-t.at.y)*c,w:(o-r)*a,h:(s-i)*c}}}function hu(t,e,n,r){let i=new Float32Array(n*r),o=O$(e,n,r);if(o){let s=f0(t,o.box,o.x1-o.x0,o.y1-o.y0);for(let a=o.y0;a<o.y1;a++)i.set(s.data.subarray((a-o.y0)*(o.x1-o.x0),(a-o.y0+1)*(o.x1-o.x0)),a*n+o.x0)}return{width:n,height:r,data:i}}function rh(t,e,n,r){let i=new Uint8Array(n*r*4),o=O$(e,n,r);if(o){let s=o.x1-o.x0,a=ra(t,o.box,s,o.y1-o.y0);for(let c=o.y0;c<o.y1;c++)i.set(a.data.subarray((c-o.y0)*s*4,(c-o.y0+1)*s*4),(c*n+o.x0)*4)}return{width:n,height:r,data:i}}function Zd(t,e){if(e<=0)return t;let{width:n,height:r}=t,i=[0,1,2,3].map(()=>({width:n,height:r,data:new Float32Array(n*r)}));for(let a=0;a<n*r;a++){let c=t.data[a*4+3]??0;for(let u=0;u<3;u++)i[u].data[a]=(t.data[a*4+u]??0)*c/255;i[3].data[a]=c}let o=i.map((a)=>ia(a,e).data),s=new Uint8Array(n*r*4);for(let a=0;a<n*r;a++){let c=o[3]?.[a]??0;if(c<=0)continue;for(let u=0;u<3;u++)s[a*4+u]=Math.min(255,Math.max(0,Math.round((o[u]?.[a]??0)*255/c)));s[a*4+3]=Math.min(255,Math.round(c))}return{width:n,height:r,data:s}}function ih(t){let e=EN(t),n,r;return{box:e,clear:Qn(t,e),get ink(){return n??=IN(t,xN(t,e)),n},image:t,get peak(){return r??=PN(t,e),r}}}function P$(t,e,n,r,i){let o=ih(t),{box:s,clear:a,ink:c}=o,u=x$(s,e,n,a),f=Math.min(1,bN/Math.max(s.w,s.h)),l={x:0,y:0,w:Math.round(s.w*f),h:Math.round(s.h*f)},d=r*l.w*u.crop.w/(s.w*u.at.w);if(i==="original")return{coloring:i,figure:Zd(ra(t,s,l.w,l.h),d),fill:Zd(rh(t,u,e,n),r),focus:u.focus,peak:o.peak};let h=hu(c,{crop:s,at:l,focus:u.focus},l.w,l.h),m=hu(c,u,e,n);return{coloring:i,figure:oa(ia(h,d)),fill:oa(ia(m,r)),focus:u.focus}}function RN(t,e,n,r){let i=ot(e),o=ot(n),s=new Uint8Array(t.width*t.height*4);for(let a=0;a<t.data.length;a++){let c=(t.data[a]??0)/255*r;for(let u=0;u<3;u++)s[a*4+u]=Math.round((i[u]??0)+((o[u]??0)-(i[u]??0))*c);s[a*4+3]=255}return{width:t.width,height:t.height,data:s}}function AN(t,e,n){let r=ot(e),i=new Uint8Array(t.width*t.height*4);for(let o=0;o<t.width*t.height;o++){let s=(t.data[o*4+3]??0)/255*n;for(let a=0;a<3;a++)i[o*4+a]=Math.round((r[a]??0)+((t.data[o*4+a]??0)-(r[a]??0))*s);i[o*4+3]=255}return{width:t.width,height:t.height,data:i}}function I$(t,e,n,r,i,o,s,a="tone"){let{box:c,clear:u,ink:f}=t,l=x$(c,r,i,u),d=Math.round(100*l.at.w/l.crop.w/Math.min(r/c.w,i/c.h)),h=s?.size??"fill",m=h==="fill"?l:{crop:c,at:Xo(c.w,c.h,r,i,h,s?.at??5,!1,h>100?Math.round(l.focus*100):-1),focus:l.focus},p=a==="original"?M$(e,t.peak):n.opacity,b=s?.opacity??p;return{image:a==="original"?AN(Zd(rh(t.image,m,r,i),o),e.background,b):RN(oa(ia(hu(f,m,r,i),o)),e.background,n.color,b),fill:d,opacity:p}}function X(t){return Y(t,"ttheme","backgrounds")}function Xd(t){return Y(t,vN)}function Bi(t){try{return Jo(t,"utf8")}catch{return}}function Gr(t){try{return hN(t)}catch{return[]}}function Nt(t){let e=Bi(Xd(t));if(e===void 0)return TN(t);let n=JSON.parse(e);if(n.version!==Vd)throw Error(`${Xd(t)} is version ${n.version} — this ttheme reads version ${Vd}`);return n}function ze(t){return t.coloring??"tone"}function oh(t){return{name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,...t.selection?{selection:t.selection}:{},ansi:t.ansi,...t.waived?{waived:t.waived}:{}}}function Yo(t){return{hue:{color:t.backdrop.color,opacity:t.backdrop.opacity},colors:oh(t)}}function Vo(t){return t.tone===void 0&&ze(t)==="tone"}function R$(t){return t.replace(/[\s,\p{Cc}]+/gu,"_")}function p$(t){return(t.artist??[]).map(R$).join(",")}function NN(t){let e=Bd(t),n=Y0(t)?.replace(/\p{Cc}+/gu,"");return[...n?[`# credit ${t.key} ${n}`]:[],...e?[`# source ${t.key} ${e.label} ${e.url}`]:[],...(t.artist??[]).flatMap((r)=>{let i=pa(t.profiles?.[r]);return i.length>0?[`# profile ${t.key} ${R$(r)} ${i.map((o)=>`${o.kind} ${o.url}`).join(" ")}`]:[]})]}function A$(t,e){let n=e.pictures.findIndex((i)=>i.key===e.active),r=e.pictures[n];return[...r.artist?.length?[`# by ${p$(r)}`]:[],...r.from?[`# from ${r.from}`]:[],`# image ${r.key} ${n+1}/${e.pictures.length}`,...e.pictures.map((i)=>[`# picture ${i.key} ${i.stem} ${i.fill} ${i.opacity} ${i.artist?.length?p$(i):"-"}`,...i.from?[i.from]:[]].join(" ")),...e.pictures.filter((i)=>ze(i)==="original").map((i)=>`# colors ${i.key} original`),...e.pictures.flatMap(NN),`background-image = ${Y(t,r.fill)}`,"background-image-fit = cover","background-image-position = top-right",`background-image-opacity = ${r.opacity}`,`config-file = ?${r.stem}.tune.conf`,`config-file = ?${r.stem}.off.conf`,""].join(`
244
+ `)}function N$(t){let e=X(t);for(let[n,r]of Object.entries(Nt(e).palettes)){let i=Y(e,`${ue(n)}.conf`),o=A$(e,r);if(Bi(i)!==o)C(i,o)}}function Ui(t,e,n){C(Xd(t),`${JSON.stringify(e,null,2)}
245
+ `);for(let r of n){let i=e.palettes[r],o=Y(t,`${ue(r)}.conf`);if(i)C(o,A$(t,i));else qo(o,{force:!0})}}function T$(t,e){let n=X(t),r=Nt(n),i=[];for(let[o,s]of e){let a=r.palettes[o];if(a&&!r.palettes[s])r.palettes[s]=a,delete r.palettes[o],i.push(o,s)}if(i.length>0)Ui(n,r,i)}function H$(t,e){return Gr(t).filter((n)=>n.startsWith(`${e}.`)||n.startsWith(`${e}@`))}function sh(t,e){for(let n of H$(t,e))qo(Y(t,n),{force:!0})}function F$(t,e){sh(t,e.stem);for(let n of[e.original,e.cut])if(n)qo(Y(t,n),{force:!0})}function g$(t,e,n,r){let i=v$(/^background-image\s*=\s*(.*?)\s*$/m.exec(e??"")?.[1]??"");if(!i.startsWith(`${t}.`)||!/^\.[0-9a-f]{8}@fill-\d+\.png$/.test(i.slice(t.length)))return;let o=i.slice(0,i.indexOf("@")),s=r??/^# image (\S+)$/m.exec(e??"")?.[1]??`picture_${o.slice(t.length+1)}`,a=/^# from (.+)$/m.exec(e??"")?.[1],c=Number(/^background-image-opacity\s*=\s*(\S+)/m.exec(e??"")?.[1]??1),u=n.find((f)=>f.startsWith(`${t}-${s}.`));return{key:s,stem:o,fill:i,opacity:Number.isFinite(c)?c:1,...a?{from:a}:{},...u?{original:Y(mu,u)}:{}}}function b$(t,e){if(eh(t))y$(t,e)}function TN(t){let e={version:Vd,palettes:{}};if(!eh(t))return e;let n=Gr(Y(t,mu)),r=Gr(t).filter((o)=>o.endsWith(".conf")&&o!=="shown.conf"&&!/\.(tune|off)\.conf$/.test(o)).map((o)=>o.slice(0,-5)),i=Y(t,yN);for(let o of new Set([...r,...Gr(i)])){let s=[],a=g$(o,Bi(Y(t,`${o}.conf`)),n);if(a)b$(Y(t,`${o}.tune.conf`),Y(t,`${a.stem}.tune.conf`)),b$(Y(t,`${o}.off.conf`),Y(t,`${a.stem}.off.conf`)),s.push(a);for(let c of Gr(Y(i,o))){let u=Y(i,o,c),f=g$(o,Bi(Y(u,".conf")),n,c);if(!f)continue;for(let l of Gr(u)){let d=l===".tune.conf"||l===".off.conf"?`${f.stem}${l}`:`${o}${l}`;if(l!==".conf")y$(Y(u,l),Y(t,d))}qo(u,{recursive:!0}),s.push(f)}if(Gr(Y(i,o)).length===0)qo(Y(i,o),{recursive:!0,force:!0});if(s.length>0)s.sort((c,u)=>c.key<u.key?-1:c.key>u.key?1:0),e.palettes[o]={active:(a??s[0]).key,pictures:s}}if(Gr(i).length===0)qo(i,{recursive:!0,force:!0});return Ui(t,e,Object.keys(e.palettes)),e}function w$(t,e,n){return e.startsWith("~/")?Y(n,e.slice(2)):pN(e)?e:Y(t,e)}function He(t,e,n){let r=new Map,i=(a,c)=>{let u=Bi(a);if(u===void 0)return!1;for(let f of u.split(`
246
+ `)){let l=/^([a-z-]+)\s*=\s*(.*?)\s*$/.exec(f);if(l?.[1]==="config-file"&&c<4)i(w$(t,l[2].replace(/^\?/,""),n),c+1);else if(l&&/^background-image(?:-fit|-opacity|-position)?$/.test(l[1]))r.set(l[1],l[2])}return!0};if(!i(Y(t,`${ue(e)}.conf`),0))return;let o=r.get("background-image")??"";if(o==="")return;let s=Number(r.get("background-image-opacity")??1);return{image:w$(t,o,n),opacity:Number.isFinite(s)?s:1,cover:r.get("background-image-fit")==="cover",position:r.get("background-image-position")??"center"}}function le(t){return`${t.site}_${t.id}`}function pu(t,e,n){let r=X(t),i=Nt(r),o=i.palettes[e];if(!o)throw Error(`${e} has no image`);let s=o.pictures.findIndex((u)=>u.key===(n??o.active));if(s===-1)throw Error(`${e} has no picture ${n}`);let[a]=o.pictures.splice(s,1);F$(r,a);let c=o.pictures[s%Math.max(o.pictures.length,1)];if(!c)delete i.palettes[e];else if(a.key===o.active)o.active=c.key;return Ui(r,i,[e]),{key:a.key,left:o.pictures.length}}function L$(t,e,n,r){let i=n.coloring==="original"?Ke(n.figure):Ai(n.figure,r),o=n.coloring==="original"?Ke(n.fill):Ai(n.fill,r),s=`${ue(t)}.${k$("sha1").update(e).update(i).update(o).digest("hex").slice(0,8)}`,a=`${s}@fill-${Math.round(n.focus*100)}.png`;return{stem:s,fill:a,files:[[`${s}.png`,i],[a,o]]}}function C$(t,e,n,r){return n==="original"&&r?{coloring:"original",opacity:M$(t,r),peak:r}:{coloring:"tone",opacity:e.opacity,tone:e.color}}function Qd(t,e){return Y(mu,`${ue(t)}-${e}`)}function ah(t,e){return e.map(([n,r])=>{let i=Y(t,n);return C(i,r),i})}function gu(t,e,n,r,i,o,s,a="tone"){let c=X(t),u=e.name,f=le(i),l=Nt(c),d=l.palettes[u]??{active:f,pictures:[]},h=nh(o.width,o.height),m=P$(r,h.width,h.height,s,a),p=L$(u,f,m,n.color),b=Qd(u,f),$={key:f,stem:p.stem,fill:p.fill,...C$(e,n,m.coloring,m.coloring==="original"?m.peak:void 0),blur:s,window:h,...i.from?{from:i.from}:{},...i.artist?.length?{artist:i.artist}:{},...i.profiles&&Object.keys(i.profiles).length>0?{profiles:i.profiles}:{},...i.source?{source:i.source}:{},original:`${b}.${i.ext}`,...i.cut?{cut:`${b}.cut.png`}:{}},k=d.pictures.find((S)=>S.key===f);if(k)F$(c,k);dN(Y(c,mu),{recursive:!0});let v=ah(c,[...p.files,[$.original,i.bytes],...$.cut?[[$.cut,Rd(Ri(r))]]:[]]);return d.pictures=k?d.pictures.map((S)=>S===k?$:S):[...d.pictures,$],d.active=f,l.palettes[u]=d,Ui(c,l,[u]),[...v,Y(c,`${ue(u)}.conf`)]}function Zo(t,e,n){let r=X(t),i=Nt(r),o=i.palettes[e],s=o?o.pictures.findIndex((a)=>a.key===n):-1;if(!o||s===-1)throw Error(`${e} has no picture ${n}`);if(o.active!==n)o.active=n,Ui(r,i,[e]);return{at:s+1,of:o.pictures.length}}function ge(t,e){let n=Nt(X(t)).palettes[e];if(!n)return[];return[...n.pictures.filter((i)=>i.key===n.active),...n.pictures.filter((i)=>i.key!==n.active)]}var th="top-right";function Xo(t,e,n,r,i,o,s,a=-1){let c=Math.trunc,u=(o-1)%3,f=c((o-1)/3),l=n*e>=r*t!==!s,d=l?c(i*n/100):c(i*r*t/(100*e)),h=l?c(i*n*e/(100*t)):c(i*r/100),m=c(u*(n-d)/2),p=c(f*(r-h)/2);if(a>=0){if(d>n)m=c((n-d)/2);if(h>r)p=Math.max(r-h,Math.min(0,c(r/2)-c(a*h/100)))}return{x:m,y:p,w:d,h}}function ch(t,e){let n=Bi(Y(t,`${e.stem}.tune.conf`));if(n===void 0)return{};let r=(u)=>new RegExp(`^${u}\\s*=\\s*(.*?)\\s*$`,"m").exec(n)?.[1]??"",i=v$(r("background-image")),o=/@(\d+)-/.exec(i)?.[1],s=/@fill-\d+\.png$/.test(i)?"fill":o?Number(o):r("background-image-fit")==="cover"?"fill":100,a=r("background-image-position").replace("center-center","center")||"center",c=Number(r("background-image-opacity")||1);return{...s!=="fill"?{size:s}:{},...a!==th?{position:a}:{},...Number.isFinite(c)&&c!==e.opacity?{opacity:c}:{}}}function Sa(t,e,n,r,i){let o=n.size??"fill",s=n.position??th,a=n.opacity??e.opacity;if(o==="fill"&&s===th&&a===e.opacity)return;let c=qt.indexOf(s)+1,u=Y(t,`${e.stem}.png`),f=Y(t,e.fill),l=!0,d=typeof o==="number"&&(o>100||!r&&s!=="center");if(o===100&&!d)f=u,l=!1;else if(typeof o==="number"){if(Vo(e))throw Error(`${e.stem} was drawn before pictures kept their tone — init draws it again`);let m=Bt(new Uint8Array(Jo(u))),{width:p,height:b}=d?va:m,$=d?Number(/@fill-(\d+)\.png$/.exec(e.fill)?.[1]??50):-1,k=Xo(m.width,m.height,p,b,o,c,!1,$);f=Y(t,`${e.stem}@${o}-${s}${d?`-${p}x${b}`:""}.png`);let S={crop:{x:0,y:0,w:m.width,h:m.height},at:k,focus:$};C(f,e.tone?Ai(oa(hu(Ri(m),S,p,b)),e.tone):Ke(rh(m,S,p,b))),l=d}let h=Y(t,`${e.stem}.tune.conf`);return C(h,[`background-image = ${f.startsWith(`${i}/`)?`~${f.slice(i.length)}`:f}`,`background-image-fit = ${l?"cover":"contain"}`,`background-image-position = ${s}`,`background-image-opacity = ${a}`,""].join(`
247
+ `)),h}function j$(t){let e=new Map;for(let[n,r]of Object.entries(Nt(X(t)).palettes)){let[,i,o]=/^([a-z.]+)_(\d+)$/.exec(r.active)??[];if(i&&o)e.set(n,{site:i,id:Number(o)})}return e}function _$(t){try{let e=yn(new Uint8Array(Jo(t)));return e?{width:e.width,height:e.height}:void 0}catch{return}}function G$(t,e,n,r,i,o,s){let a=[n.original,n.cut].map((c)=>{if(!c)return"";try{let{size:u,mtimeMs:f}=mN(Y(t,c));return`${c}:${u}:${f}`}catch{return}});if(!n.original||a.includes(void 0))return;return V0([gN,ue(e),n.key,...a,r.width,r.height,i,o,o==="tone"?s:""])}function HN(t,e,n){if(!n.window||n.blur===void 0)return;let r=G$(t,e,n,n.window,n.blur,ze(n),n.tone??"");if(!r||Z0(r))return;try{Ud(r,{stem:n.stem,fill:n.fill,...n.peak?{peak:n.peak}:{},figure:Jo(Y(t,`${n.stem}.png`)),picture:Jo(Y(t,n.fill))})}catch{}}function B$(t,e,n,r,i,o,s,a,c){let u=c?void 0:G$(t,e,n,r,s,a,o.hue.color),f=u?X0(u):void 0;if(f)return{made:{stem:f.stem,fill:f.fill,files:[[`${f.stem}.png`,f.figure],[f.fill,f.picture]]},peak:f.peak,image:void 0};let l=i();if(!l)return null;let d=P$(l,r.width,r.height,s,a),h=L$(e,n.key,d,o.hue.color),m=d.coloring==="original"?d.peak:void 0;if(u)Ud(u,{stem:h.stem,fill:h.fill,...m?{peak:m}:{},figure:h.files[0]?.[1],picture:h.files[1]?.[1]});return{made:h,peak:m,image:l}}function Ea(t,e,n,r,i,o,s,a,c,u=ze(n)){let f=X(t),l=n.window??_$(Y(f,n.fill))??va,d=B$(f,e,n,l,r,i,o,u,c);if(!d)return null;let{made:h,peak:m,image:p}=d,b={...n,stem:h.stem,fill:h.fill,...C$(i.colors,i.hue,u,m),blur:o,window:l,...c?{cut:`${Qd(e,n.key)}.cut.png`}:{}};if(u==="original")delete b.tone;else delete b.peak;if(c&&p)C(Y(f,`${Qd(e,n.key)}.cut.png`),Rd(Ri(p)));if(h.stem===n.stem)return b;if(ze(n)!==u)HN(f,e,n);ah(f,h.files);let $=ch(f,n);Sa(f,b,ze(n)===u?$:{...$,opacity:void 0},s,a);let k=Y(f,`${n.stem}.off.conf`);if(eh(k))fN(k,Y(f,`${b.stem}.off.conf`));return b}function U$(t,e,n,r,i,o,s){let a=X(t),c=n.window??_$(Y(a,n.fill))??va;return B$(a,e,n,c,r,i,o,s,!1)!==null}function uh(t,e){let n=X(t),r=Nt(n),i=new Set,o=[];for(let{name:s,picture:a}of e){let c=r.palettes[s],u=c?.pictures.findIndex((l)=>l.key===a.key)??-1,f=c?.pictures[u];if(!c||!f)continue;if(c.pictures[u]=a,i.add(s),f.stem!==a.stem)o.push(f.stem)}if(i.size===0)return;Ui(n,r,[...i]);for(let s of o)sh(n,s)}function FN(t,e,n,r){let i=H$(t,n.stem).filter((a)=>a.endsWith(".png")).map((a)=>{let c=new Uint8Array(Jo(Y(t,a)));return[a,tu(c,r.color)??Ai(Ri(Bt(c)),r.color)]}),o=(a)=>i.find(([c])=>c===a)?.[1]??new Uint8Array,s=`${ue(e)}.${k$("sha1").update(n.key).update(o(`${n.stem}.png`)).update(o(n.fill)).digest("hex").slice(0,8)}`;ah(t,i.map(([a,c])=>[s+a.slice(n.stem.length),c]));for(let a of["tune","off"]){let c=Bi(Y(t,`${n.stem}.${a}.conf`));if(c!==void 0)C(Y(t,`${s}.${a}.conf`),c.split(n.stem).join(s))}return{...n,stem:s,fill:s+n.fill.slice(n.stem.length),tone:r.color}}function $$(t,e){return ze(t)!=="original"&&t.tone!==void 0&&t.tone!==e.hue.color}function W$(t,e){let n=X(t),r=Nt(n),i=[],o=[];for(let[s,a]of Object.entries(r.palettes)){let c=e.get(s);if(!c||!a.pictures.some((u)=>$$(u,c)))continue;a.pictures=a.pictures.map((u)=>{if(!$$(u,c))return u;let f=FN(n,s,u,c.hue);if(f.stem!==u.stem)o.push(u.stem);return f}),i.push(s)}if(i.length>0){Ui(n,r,i);for(let s of o)sh(n,s)}return i}var LN=1;function an(t){let{slot:e,color:n,opacity:r}=xn({name:t.name,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi,waived:t.waive},t.signatureSlots);return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},...t.lead?{lead:!0}:{},order:t.order,ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},...t.role==="default"?{default:!0}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,signature:t.signature,signatureSlots:t.signatureSlots,ansi:t.ansi,gate:wn(t),...t.waive.length>0?{waived:t.waive}:{},backdrop:{slot:e,color:n,opacity:r},...t.pictures?{pictures:t.pictures}:{}}}function Fe(t){return{name:t.name,...t.base?{base:t.base}:{},group:t.group,...t.native?{native:t.native}:{},...t.nativeNames?{nativeNames:t.nativeNames}:{},lead:t.lead===!0,order:t.order,...t.default?{role:"default"}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},background:t.background,foreground:t.foreground,cursor:t.cursor,selectionBackground:t.selection,ansi:t.ansi,signature:t.signature,signatureSlots:t.signatureSlots,ghostty:{iconGhost:t.cursor,iconScreen:[t.cursor,t.selection,t.background]},waive:t.waived??[],...t.pictures?{pictures:t.pictures}:{}}}var CN=6,jN=["ansi1","ansi2","ansi4","ansi3","ansi5","ansi6"];function bu(t){let e=(o)=>o.startsWith("ansi")?t.ansi[Number(o.slice(4))]:o==="foreground"?t.foreground:o==="cursor"?t.cursor:o==="selection"?t.selection:void 0,n=(o)=>o.startsWith("ansi")?`ansi${Number(o.slice(4))%8}`:o,r=new Set,i=[];for(let o of["foreground",...t.signatureSlots,...jN]){let s=e(o);if(i.length===CN||!s||r.has(n(o))||i.includes(s))continue;r.add(n(o)),i.push(s)}return i}function Tt(t){return t.filter((e)=>e.default!==!0)}function wu(){return{schema:LN,version:lt.version,gate:Ie,palettes:[]}}import{existsSync as _N,readFileSync as ku,statSync as K$}from"node:fs";import{homedir as ns}from"node:os";import{join as ts}from"node:path";var GN=["core","kowiki","unlicensed"],BN=["ko","ja","en","zh","other"],q$=["keys","keyAt","ownAt","owners","cards","cardAt","ranks","tags","tagAt","tagCard"],J$="TTNI";function Br(t=ns()){return ts(process.env.XDG_CACHE_HOME??ts(t,".cache"),"ttheme","aninames")}var UN=/[ァ-ヶ]/g,WN=/[\s\p{P}\p{S}]+/gu;function es(t){return t.normalize("NFKC").toLowerCase().replace(UN,(e)=>String.fromCharCode(e.charCodeAt(0)-96)).replace(WN,"")}function Wi(t,e){let n=es(e);if(n===""){let r=e.toLowerCase();return t.some((i)=>i.toLowerCase().includes(r))}return t.some((r)=>es(r).includes(n))}function hh(t){return t.length>=2||/[\p{Script=Han}\p{Script=Hangul}\p{Script=Hiragana}]/u.test(t)}function Y$(t){let e=Br(t);return GN.map((n)=>ts(e,`ttheme-${n}.json`)).filter((n)=>_N(n))}var KN=6;function V$(t){return[`format ${KN}`,...t.map((e)=>`${e}:${K$(e).size}:${K$(e).mtimeMs}`)].join("|")}function zN(t){try{return JSON.parse(ku(t,"utf8"))}catch{return{}}}function DN(t){let e=new Map;for(let i of t)for(let[o,s]of Object.entries(zN(i))){let a=e.get(o)??{tags:new Set,names:[],japanese:[],generated:[],rank:0,weight:0,posts:0};a.posts=Math.max(a.posts,s.posts??0),a.generated.push(...s.generated??[]),a.japanese.push(...s.names?.ja??[]),a.tag??=s.tag;for(let c of s.danbooru??[])a.tags.add(c);for(let c of BN)a.names.push(...s.names?.[c]??[]);if(s.rank!==void 0){let c=s.weight??1;a.rank=(a.rank*a.weight+s.rank*c)/(a.weight+c),a.weight+=c}e.set(o,a)}let n=[],r=Math.log1p([...e.values()].reduce((i,o)=>Math.max(i,o.posts),1));for(let i of e.values()){if(i.tags.size===0)continue;let o=[...i.tags];n.push({tag:i.tag&&i.tags.has(i.tag)?i.tag:o[0],tags:o,names:[...new Set(i.names)],japanese:[...new Set(i.japanese)],generated:[...new Set(i.generated)],rank:i.posts>0?Math.log1p(i.posts)/r:i.rank})}return n}function Ma(t,e){let n=new t(e.length);return n.set(e),n}function lh(t){let e=[0];for(let n of t)e.push(e.at(-1)+n.length);return{bytes:Buffer.concat(t),at:Ma(Uint32Array,e)}}function qN(t,e){let n=DN(t),r=new Map,i=(v,S,x)=>{let M=r.get(v),I=S*4+x;if(!M)r.set(v,[I]);else if(M.at(-1)>>>2!==S)M.push(I);else if(M.at(-1)<I)M[M.length-1]=I};n.forEach((v,S)=>{let x=[...v.names,...v.tags.map((M)=>M.replaceAll("_"," "))];for(let[M,I]of[[x,1],[v.generated,0]])for(let L of M){let N=es(L);if(N&&hh(N))i(N,S,2|I);let _=L.split(/[\s・·_]+/);if(_.length<2)continue;for(let D of _){let B=es(D);if(B&&hh(B))i(B,S,I)}}});let o=[...r.keys()].sort(),s=[0],a=[];for(let v of o){for(let S of r.get(v)??[])a.push(S);s.push(a.length)}let c=n.flatMap((v,S)=>v.tags.map((x)=>[x,S])).sort(([v],[S])=>v<S?-1:v>S?1:0),u=lh(o.map((v)=>Buffer.from(v))),f=lh(n.map((v)=>Buffer.from(JSON.stringify([v.tag,v.tags,v.names,v.japanese,v.generated])))),l=lh(c.map(([v])=>Buffer.from(v))),d={keys:u.bytes,keyAt:u.at,ownAt:Ma(Uint32Array,s),owners:Ma(Uint32Array,a),cards:f.bytes,cardAt:f.at,ranks:Ma(Float32Array,n.map((v)=>v.rank)),tags:l.bytes,tagAt:l.at,tagCard:Ma(Uint32Array,c.map(([,v])=>v))},h=q$.map((v)=>{let S=d[v];return Buffer.from(S.buffer,S.byteOffset,S.byteLength)}),m=0,p=h.map((v)=>{let S=[m,v.length];return m+=Math.ceil(v.length/4)*4,S}),b=Buffer.from(JSON.stringify({stamp:e,sections:p})),$=Math.ceil((8+b.length)/4)*4,k=Buffer.alloc($+m);k.write(J$,0,"latin1"),k.writeUInt32LE(b.length,4),b.copy(k,8);for(let[v,S]of h.entries())S.copy(k,$+(p[v]?.[0]??0));return k}function z$(t,e,n,r){let i=e.byteOffset+n;if(i%4===0)return new t(e.buffer,i,r/4);return new t(e.buffer.slice(i,i+r),0,r/4)}function D$(t,e){if(t.toString("latin1",0,4)!==J$)return;let n=t.readUInt32LE(4),r=JSON.parse(t.toString("utf8",8,8+n));if(r.stamp!==e)return;let i=Math.ceil((8+n)/4)*4,o=(c)=>{let[u,f]=r.sections[q$.indexOf(c)];return[i+u,f]},s=(c)=>{let[u,f]=o(c);return t.subarray(u,u+f)},a=(c)=>z$(Uint32Array,t,...o(c));return{keys:s("keys"),keyAt:a("keyAt"),ownAt:a("ownAt"),owners:a("owners"),cards:s("cards"),cardAt:a("cardAt"),ranks:z$(Float32Array,t,...o("ranks")),tags:s("tags"),tagAt:a("tagAt"),tagCard:a("tagCard")}}var fh;function mh(t){try{let e=Y$(t);if(e.length===0)return;let n=V$(e);if(fh?.stamp===n)return fh.index;let r=ts(Br(t),"index.bin"),i;try{i=D$(ku(r),n)}catch{}if(!i){let o=qN(e,n);try{C(r,o)}catch{}i=D$(o,n)}if(i)fh={stamp:n,index:i};return i}catch{return}}function Z$(t,e){let[n,r,i,o,s]=JSON.parse(t.cards.toString("utf8",t.cardAt[e],t.cardAt[e+1]));return{tag:n,tags:r,names:i,japanese:o,generated:s,rank:t.ranks[e]??0}}function X$(t,e,n,r){let i=0,o=n;while(i<o){let s=i+o>>1;if(t.toString("utf8",e[s],e[s+1])<r)i=s+1;else o=s}return i}function Q$(t,e){let n=Buffer.from(e),r=t.tagCard.length,i=X$(t.tags,t.tagAt,r,e);if(i>=r||t.tags.compare(n,0,n.length,t.tagAt[i],t.tagAt[i+1])!==0)return;return t.tagCard[i]}var dh=/\s*[((][^()()]*[))]$/u,$u={ko:4,en:4,ja:5,zh:3};function JN(t){if(!t)return[];let e=/\p{Script=Hangul}/u,n=/^[\p{Script=Latin}\p{N}\s.'’-]+$/u,r=new Set([...t.names,...t.generated].filter((l)=>!dh.test(l))),i=(l)=>!dh.test(l)||!r.has(l.replace(dh,"")),o=t.names.filter(i),s=o.filter((l)=>e.test(l)),a=[...s,...t.generated.slice(0,s.length>0?0:2)],c=o.filter((l)=>n.test(l)),u=t.japanese.filter(i),f=o.filter((l)=>!e.test(l)&&!n.test(l)&&!u.includes(l));return[...new Set([...a.slice(0,$u.ko),...c.slice(0,$u.en),...u.slice(0,$u.ja),...f.slice(0,$u.zh)])]}var Qo;function yu(t,e=ns()){if(!t)return[];if(!Qo)try{Qo=JSON.parse(ku(ts(Br(e),"aliases.json"),"utf8")).tags}catch{Qo={}}return Qo[t]??[]}function ph(t,e=ns()){try{return YN(t,e)}catch{return new Map}}function YN(t,e){let n=new Map,r=Y$(e);if(r.length===0||t.length===0)return n;let i=V$(r),o=ts(Br(e),"aliases.json"),s;try{s=JSON.parse(ku(o,"utf8"))}catch{}if(s?.stamp===i&&t.every((f)=>(f in s.tags))){Qo=s.tags;for(let f of t)n.set(f,s.tags[f]??[]);return n}let a=mh(e);if(!a)return n;let c=new Set([...t,...s?.stamp===i?Object.keys(s.tags):[]]),u={};for(let f of c){let l=Q$(a,f);u[f]=l===void 0?[]:JN(Z$(a,l))}try{C(o,`${JSON.stringify({stamp:i,tags:u})}
248
+ `)}catch{}Qo=u;for(let f of t)n.set(f,u[f]??[]);return n}function Ki(t,e=ns()){ph(t.flatMap((n)=>n.booru?[n.booru]:[]),e)}var VN=0.25,ZN=0.1;function tk(t,e,n=new Set,r=ns()){let i=es(t);if(!i||!hh(i))return[];let o=mh(r);if(!o)return[];let s=Buffer.from(i),a=o.ownAt.length-1,c=new Set([...n].flatMap((f)=>Q$(o,f)??[])),u=new Map;for(let f=X$(o.keys,o.keyAt,a,i);f<a;f++){let l=o.keyAt[f],d=o.keyAt[f+1]-l;if(d<s.length||o.keys.compare(s,0,s.length,l,l+s.length)!==0)break;let h=d===s.length;for(let m=o.ownAt[f];m<o.ownAt[f+1];m++){let p=o.owners[m],b=p>>>2,$=h?Math.max(0,(p&2?2:1)-(p&1?0:1)):0,k=(o.ranks[b]??0)+VN*$+(c.has(b)?ZN:0);if((u.get(b)?.score??-1)<k)u.set(b,{score:k,key:f})}}return[...u].sort(([,f],[,l])=>l.score-f.score).slice(0,e).map(([f,{key:l}])=>{let d=Z$(o,f),h=o.keys.toString("utf8",o.keyAt[l],o.keyAt[l+1]);return{tag:d.tags.find((m)=>n.has(m))??d.tag,name:[...d.names,...d.generated].find((m)=>es(m).includes(h))??d.tag.replaceAll("_"," ")}})}function vu(t=ns()){mh(t)}import{createHash as aT}from"node:crypto";import{existsSync as cT,readdirSync as lk,readFileSync as uT}from"node:fs";import{basename as fk,join as Mu}from"node:path";import{existsSync as XN,readFileSync as ek}from"node:fs";import{homedir as nk}from"node:os";import{isAbsolute as rk,join as zi,resolve as QN}from"node:path";var V="official",Ut="ttheme-market.toml",tT="https://www.schemastore.org/ttheme-market.json",ik="https://www.schemastore.org/ttheme-palette.json",ok=["$schema","name","description","owner","renames","force_remove_deleted_palettes","metadata"],sk=["name","email","url"],rs="ttheme-market",eT=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i,nT=/^[\w.-]{1,100}$/,rT=/^\w[\w.+/-]{0,199}$/;function nr(t){return zi(t,"ttheme","installed.json")}function Jt(t){return t??[V]}function is(t){try{let{markets:e}=JSON.parse(ek(nr(t),"utf8"));return Jt(Array.isArray(e)?e.filter((n)=>typeof n==="string"):void 0)}catch{return[V]}}function Ht(t){return rk(t)}function kt(t){return t!==V&&!Ht(t)}function Ur(t){let e=t.indexOf("#");return kt(t)&&e>=0?t.slice(0,e):t}function xa(t){let e=t.indexOf("#");return kt(t)&&e>=0?t.slice(e+1):void 0}function os(t,e){return Ur(t)===Ur(e)}function Wr(t,e){return kt(t)&&(e?.[t]??!1)}function iT(t){return!rT.test(t)||t.includes("..")||t.includes("//")||/(?:[./]|\.lock)$/.test(t)}function Kr(t,e=process.cwd()){if(t===V)return V;if(t==="~"||t.startsWith("~/"))return zi(nk(),t.slice(1));if(t.startsWith(".")||rk(t))return QN(e,t);let[n="",r,...i]=t.split("#"),[o,s,...a]=n.replace(/^https:\/\/github\.com\//,"").replace(/\.git$/,"").split("/");if(!o||!eT.test(o)||!s||!nT.test(s)||a.length>0||i.length>0||r!==void 0&&iT(r))throw Error(`${t} is not a market — give a repository (alice/ttheme-dust, #v1 pins a tag or branch) or a path (./my-market)`);return`${o.toLowerCase()}/${s}${r===void 0?"":`#${r}`}`}function ak(t){let e=xa(t)?.split("/").map(encodeURIComponent).join("/")??"HEAD";return`https://codeload.github.com/${Ur(t)}/tar.gz/${e}`}function ck(t){return t.slice(0,t.indexOf("/"))}function wh(t){return zi(t,"ttheme","markets")}function rr(t,e){return zi(wh(t),`${Ur(e).replace("/","--")}.json`)}function Su(t){return zi(t,"ttheme","market")}function $h(t,e){return zi(Su(t),e)}function oT(t,e){if(typeof t!=="string"||typeof e!=="string")return'needs a "name" and an [owner] table whose name is the GitHub handle';return Te(`${t}@${e}/x`)}function be({owner:t,name:e}){return`${t}@${e}`}function uk({owner:t,name:e}){return`"$schema" = ${JSON.stringify(tT)}
249
249
  name = ${JSON.stringify(e)}
250
250
 
251
251
  [owner]
252
252
  name = ${JSON.stringify(t)}
253
- `}function ch(t,e,n,r){if(typeof n!=="string"||n===""||/\p{Cc}/u.test(n)||n.length>200)throw Error(`${t}: ${e} must be ${r}`);return n}function ah(t,e,n){return n===void 0?void 0:ch(t,e,n,"one line of text, 200 characters at most")}function IN(t,e){if(e===void 0)return{};if(!e||typeof e!=="object"||Array.isArray(e))throw Error(`${t}: [renames] maps an old palette name to its new name, or to false once it is gone`);let n={};for(let[r,i]of Object.entries(e)){if(Ne(r)||i!==!1&&(typeof i!=="string"||Ne(i)))throw Error(`${t}: renames.${r} must map a palette name to a palette name, or to false`);n[r]=i}return n}function fh(t,e){let n;try{n=Ti(t)}catch(d){throw Error(`${e} is not valid TOML — ${d.message.split(`
254
- `)[0]}`)}let r=ch(e,"name",n.name,"the market name"),i=n.owner;if(!i||typeof i!=="object"||Array.isArray(i))throw Error(`${e}: owner is a table — [owner] with name = "<GitHub handle>"`);let o=i,s={name:ch(e,"owner.name",o.name,"the GitHub handle")},a=ah(e,"owner.email",o.email),c=ah(e,"owner.url",o.url),u=ah(e,"description",n.description),f=n.force_remove_deleted_palettes;if(f!==void 0&&typeof f!=="boolean")throw Error(`${e}: force_remove_deleted_palettes must be true or false`);let l=ON(s.name,r);if(l)throw Error(`${e} ${l}`);return{owner:s.name,name:r,about:{...s,...a?{email:a}:{},...c?{url:c}:{}},...u?{description:u}:{},renames:IN(e,n.renames),forceRemove:f===!0}}function an(t){let e=Bi(t,Bt);if(!kN(e))throw Error(`${t} has no ${Bt} — \`ttheme market init ${t}\` makes one`);return fh(G$(e,"utf8"),e)}function ot(t){if(t===Z)return"the ttheme catalog";if(!Ht(t))return`github.com/${t}`;let e=B$();return t===e||t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}var $a="tt2:",mh="https://ttheme.vercel.app/p/",bu=4,V$=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)];function Ui(t,e=!0){return ts(t).filter(Ht).flatMap((n)=>{try{let r=an(n);return[{dir:n,...r,id:be(r)}]}catch(r){if(e)process.stderr.write(`ttheme: skipping the market at ${n} — ${r.message}
255
- `);return[]}})}function $u(t){return wu(t,"palettes")}function dh(t,e){return t<e?-1:t>e?1:0}function ph(t,e){let n=[],r=[];for(let i of t){let[o,s,a,...c]=i.split("/");if(o!=="palettes"||!s||s.startsWith(".")||c.length>0)continue;if(a===void 0){if(s.endsWith(".toml"))r.push({file:{path:e(i),slug:Z$(s,".toml")},name:s})}else if(a.endsWith(".toml"))n.push({file:{path:e(i),slug:Z$(a,".toml"),catalog:s},name:a})}return n.sort((i,o)=>dh(i.file.catalog??"",o.file.catalog??"")||dh(i.name,o.name)),r.sort((i,o)=>dh(i.name,o.name)),[...n,...r].map(({file:i})=>i)}function ns(t){let e=$u(t);if(!PN(e))return[];let n=Y$(e,{withFileTypes:!0}).flatMap((r)=>r.isDirectory()?Y$(wu(e,r.name)).map((i)=>`palettes/${r.name}/${i}`):[`palettes/${r.name}`]);return ph(n,(r)=>wu(t,r))}function NN(t,e){let n=e.get(t.slug);if(n)return`${t.slug} is also ${n.catalog?`in ${n.catalog}`:"outside a catalog"} — a palette name is used once in a market`;let r=t.catalog===void 0?void 0:ha(t.catalog);return r?`the catalog folder ${JSON.stringify(t.catalog)} ${r}`:void 0}function gh(t,e){let n=ut(e);if(!n)throw Error(`${e} is an official palette — yours are named <you>@<market>/<palette>`);let r=Ui(t,!1).find((o)=>o.id===n);if(!r)throw Error(`${n} is not a local market — \`ttheme market add <dir>\` adds the folder that holds it`);let i=pe(e);return ns(r.dir).find((o)=>o.slug===i)?.path??wu($u(r.dir),`${i}.toml`)}function TN(t,e,n=!1){let r=new Map;for(let o of e)if(o.group!==la&&!r.has(o.group)){let s=e.find((a)=>a.group===o.group&&a.lead)?.name??"";r.set(o.group,{name:o.group,...o.native?{native:o.native}:{},lead:s})}let i=new Map(e.filter((o)=>!o.default&&!ut(o.name)).map((o)=>[o.name,{group:o.group,order:o.order}]));return{name:t,groups:r,bases:i,open:!0,...n?{foreign:!0}:{}}}function xn(t,e,n,r=!1){let i=pe(t),{native:o,...s}=_d(`${i}.toml`,e,TN(i,n,r)),a=ut(t);return{...s,name:t,...a?{group:a,lead:!1}:{}}}function fe(t){return t?(e,n)=>process.stderr.write(`ttheme: skipping ${e} — ${n}
256
- `):()=>{}}function bh(t,e,n,r,i,o=!1){let s=new Map;return t.flatMap((a)=>{try{let c=NN(a,s);if(c)throw Error(c);s.set(a.slug,a);let u=sn(xn(`${n}/${a.slug}`,e(a),r,o));return[a.catalog?{...u,catalog:a.catalog}:u]}catch(c){return i(a.path,c.message),[]}})}function On(t,e,n,r=fe(!0)){return bh(ns(t),(i)=>AN(i.path,"utf8"),e,n,r)}function ku(t,e,n=!0){return Ui(t,n).flatMap(({dir:r,id:i})=>On(r,i,e,fe(n)))}function wh(t,e=t.name,n){return{name:e,...t.base?{base:t.base}:{},...t.group!==la?{group:t.group}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},signature:t.signatureSlots,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi,...t.waived&&t.waived.length>0?{waive:t.waived,reason:n??"kept from the palette"}:{},...t.pictures?{pictures:t.pictures}:{}}}var Rt=(t)=>JSON.stringify(t);function X$(t){return["[[picture]]",`site = ${Rt(t.site)}`,`id = ${t.id}`,...t.size===void 0?[]:[`size = ${typeof t.size==="number"?t.size:Rt(t.size)}`],...t.position===void 0?[]:[`position = ${Rt(t.position)}`],...t.opacity===void 0?[]:[`opacity = ${t.opacity}`]]}function Q$(t,e){return e.length===0?t:`${t.replace(/\n*$/,`
253
+ `}function bh(t,e,n,r){if(typeof n!=="string"||n===""||/\p{Cc}/u.test(n)||n.length>200)throw Error(`${t}: ${e} must be ${r}`);return n}function gh(t,e,n){return n===void 0?void 0:bh(t,e,n,"one line of text, 200 characters at most")}function sT(t,e){if(e===void 0)return{};if(!e||typeof e!=="object"||Array.isArray(e))throw Error(`${t}: [renames] maps an old palette name to its new name, or to false once it is gone`);let n={};for(let[r,i]of Object.entries(e)){if(Te(r)||i!==!1&&(typeof i!=="string"||Te(i)))throw Error(`${t}: renames.${r} must map a palette name to a palette name, or to false`);n[r]=i}return n}function kh(t,e){let n;try{n=Ci(t)}catch(d){throw Error(`${e} is not valid TOML — ${d.message.split(`
254
+ `)[0]}`)}let r=bh(e,"name",n.name,"the market name"),i=n.owner;if(!i||typeof i!=="object"||Array.isArray(i))throw Error(`${e}: owner is a table — [owner] with name = "<GitHub handle>"`);let o=i,s={name:bh(e,"owner.name",o.name,"the GitHub handle")},a=gh(e,"owner.email",o.email),c=gh(e,"owner.url",o.url),u=gh(e,"description",n.description),f=n.force_remove_deleted_palettes;if(f!==void 0&&typeof f!=="boolean")throw Error(`${e}: force_remove_deleted_palettes must be true or false`);let l=oT(s.name,r);if(l)throw Error(`${e} ${l}`);return{owner:s.name,name:r,about:{...s,...a?{email:a}:{},...c?{url:c}:{}},...u?{description:u}:{},renames:sT(e,n.renames),forceRemove:f===!0}}function cn(t){let e=zi(t,Ut);if(!XN(e))throw Error(`${t} has no ${Ut} — \`ttheme market init ${t}\` makes one`);return kh(ek(e,"utf8"),e)}function rt(t){if(t===V)return"the ttheme catalog";if(!Ht(t))return`github.com/${t}`;let e=nk();return t===e||t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}var Oa="tt2:",Sh="https://ttheme.vercel.app/p/",Eu=4,dk=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)];function Di(t,e=!0){return is(t).filter(Ht).flatMap((n)=>{try{let r=cn(n);return[{dir:n,...r,id:be(r)}]}catch(r){if(e)process.stderr.write(`ttheme: skipping the market at ${n} — ${r.message}
255
+ `);return[]}})}function xu(t){return Mu(t,"palettes")}function yh(t,e){return t<e?-1:t>e?1:0}function Eh(t,e){let n=[],r=[];for(let i of t){let[o,s,a,...c]=i.split("/");if(o!=="palettes"||!s||s.startsWith(".")||c.length>0)continue;if(a===void 0){if(s.endsWith(".toml"))r.push({file:{path:e(i),slug:fk(s,".toml")},name:s})}else if(a.endsWith(".toml"))n.push({file:{path:e(i),slug:fk(a,".toml"),catalog:s},name:a})}return n.sort((i,o)=>yh(i.file.catalog??"",o.file.catalog??"")||yh(i.name,o.name)),r.sort((i,o)=>yh(i.name,o.name)),[...n,...r].map(({file:i})=>i)}function ss(t){let e=xu(t);if(!cT(e))return[];let n=lk(e,{withFileTypes:!0}).flatMap((r)=>r.isDirectory()?lk(Mu(e,r.name)).map((i)=>`palettes/${r.name}/${i}`):[`palettes/${r.name}`]);return Eh(n,(r)=>Mu(t,r))}function lT(t,e){let n=e.get(t.slug);if(n)return`${t.slug} is also ${n.catalog?`in ${n.catalog}`:"outside a catalog"} — a palette name is used once in a market`;let r=t.catalog===void 0?void 0:ya(t.catalog);return r?`the catalog folder ${JSON.stringify(t.catalog)} ${r}`:void 0}function Mh(t,e){let n=ut(e);if(!n)throw Error(`${e} is an official palette — yours are named <you>@<market>/<palette>`);let r=Di(t,!1).find((o)=>o.id===n);if(!r)throw Error(`${n} is not a local market — \`ttheme market add <dir>\` adds the folder that holds it`);let i=pe(e);return ss(r.dir).find((o)=>o.slug===i)?.path??Mu(xu(r.dir),`${i}.toml`)}function fT(t,e,n=!1){let r=new Map;for(let o of e)if(o.group!==wa&&!r.has(o.group)){let s=e.find((a)=>a.group===o.group&&a.lead)?.name??"";r.set(o.group,{name:o.group,...o.native?{native:o.native}:{},lead:s})}let i=new Map(e.filter((o)=>!o.default&&!ut(o.name)).map((o)=>[o.name,{group:o.group,order:o.order}]));return{name:t,groups:r,bases:i,open:!0,...n?{foreign:!0}:{}}}function On(t,e,n,r=!1){let i=pe(t),{native:o,...s}=Jd(`${i}.toml`,e,fT(i,n,r)),a=ut(t);return{...s,name:t,...a?{group:a,lead:!1}:{}}}function fe(t){return t?(e,n)=>process.stderr.write(`ttheme: skipping ${e} — ${n}
256
+ `):()=>{}}function xh(t,e,n,r,i,o=!1){let s=new Map;return t.flatMap((a)=>{try{let c=lT(a,s);if(c)throw Error(c);s.set(a.slug,a);let u=an(On(`${n}/${a.slug}`,e(a),r,o));return[a.catalog?{...u,catalog:a.catalog}:u]}catch(c){return i(a.path,c.message),[]}})}function Pn(t,e,n,r=fe(!0)){return xh(ss(t),(i)=>uT(i.path,"utf8"),e,n,r)}function Ou(t,e,n=!0){return Di(t,n).flatMap(({dir:r,id:i})=>Pn(r,i,e,fe(n)))}function Oh(t,e=t.name,n){return{name:e,...t.base?{base:t.base}:{},...t.group!==wa?{group:t.group}:{},ansiSource:t.ansiSource,...t.booru?{booru:t.booru}:{},...t.booruSites?{booruSites:t.booruSites}:{},signature:t.signatureSlots,background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi,...t.waived&&t.waived.length>0?{waive:t.waived,reason:n??"kept from the palette"}:{},...t.pictures?{pictures:t.pictures}:{}}}var It=(t)=>JSON.stringify(t);function hk(t){return["[[picture]]",`site = ${It(t.site)}`,`id = ${t.id}`,...t.size===void 0?[]:[`size = ${typeof t.size==="number"?t.size:It(t.size)}`],...t.position===void 0?[]:[`position = ${It(t.position)}`],...t.opacity===void 0?[]:[`opacity = ${t.opacity}`]]}function mk(t,e){return e.length===0?t:`${t.replace(/\n*$/,`
257
257
  `)}${e.map((n)=>`
258
- ${X$(n).join(`
258
+ ${hk(n).join(`
259
259
  `)}
260
- `).join("")}`}function $h(t){let e=[`"$schema" = ${Rt(W$)}`,"","[meta]",`name = ${Rt(pe(t.name))}`,...t.base?[`base = ${Rt(t.base)}`]:[],...t.group?[`group = ${Rt(t.group)}`]:[],...t.ansiSource?[`ansi_source = ${Rt(t.ansiSource)}`]:[],...t.booru?[`booru = ${Rt(t.booru)}`]:[],`signature = [${t.signature.map(Rt).join(", ")}]`,...t.booruSites?["","[meta.booru_sites]",...Object.entries(t.booruSites).map(([n,r])=>`${n} = [${r.map(Rt).join(", ")}]`)]:[],"","[colors]",`background = ${Rt(t.background)}`,`foreground = ${Rt(t.foreground)}`,`cursor = ${Rt(t.cursor)}`,`selection_background = ${Rt(t.selection)}`,"ansi = [",...t.ansi.slice(0,8).map((n)=>` ${Rt(n)},`),"",...t.ansi.slice(8).map((n)=>` ${Rt(n)},`),"]"];if(t.waive&&t.waive.length>0)e.push("","[contrast]",`waive = [${t.waive.map(Rt).join(", ")}]`,`reason = ${Rt(t.reason??"")}`);for(let n of t.pictures??[])e.push("",...X$(n));return`${e.join(`
260
+ `).join("")}`}function Ph(t){let e=[`"$schema" = ${It(ik)}`,"","[meta]",`name = ${It(pe(t.name))}`,...t.base?[`base = ${It(t.base)}`]:[],...t.group?[`group = ${It(t.group)}`]:[],...t.ansiSource?[`ansi_source = ${It(t.ansiSource)}`]:[],...t.booru?[`booru = ${It(t.booru)}`]:[],`signature = [${t.signature.map(It).join(", ")}]`,...t.booruSites?["","[meta.booru_sites]",...Object.entries(t.booruSites).map(([n,r])=>`${n} = [${r.map(It).join(", ")}]`)]:[],"","[colors]",`background = ${It(t.background)}`,`foreground = ${It(t.foreground)}`,`cursor = ${It(t.cursor)}`,`selection_background = ${It(t.selection)}`,"ansi = [",...t.ansi.slice(0,8).map((n)=>` ${It(n)},`),"",...t.ansi.slice(8).map((n)=>` ${It(n)},`),"]"];if(t.waive&&t.waive.length>0)e.push("","[contrast]",`waive = [${t.waive.map(It).join(", ")}]`,`reason = ${It(t.reason??"")}`);for(let n of t.pictures??[])e.push("",...hk(n));return`${e.join(`
261
261
  `)}
262
- `}class tk{bytes=[];u8(t){this.bytes.push(t&255)}u16(t){this.u8(t>>8),this.u8(t)}u32(t){this.u16(Math.floor(t/65536)),this.u16(t%65536)}str(t=""){let e=new TextEncoder().encode(t);if(e.length>255)throw Error(`"${t}" is too long to share`);this.u8(e.length),this.bytes.push(...e)}color(t){let e=Number.parseInt(t.slice(1),16);this.u8(e>>16),this.u8(e>>8),this.u8(e)}done(){let t=Buffer.from(this.bytes);return Buffer.concat([t,nk(t)]).toString("base64url")}}class ek{at=0;bytes;constructor(t){this.bytes=t}u8(){let t=this.bytes[this.at++];if(t===void 0)throw Error("the share code is cut short");return t}u16(){return this.u8()*256+this.u8()}u32(){return this.u16()*65536+this.u16()}str(){let t=this.u8(),e=this.bytes.subarray(this.at,this.at+t);if(e.length!==t)throw Error("the share code is cut short");this.at+=t;try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw Error("the share code holds text it cannot read — was it copied whole?")}}color(){return`#${[this.u8(),this.u8(),this.u8()].map((t)=>t.toString(16).padStart(2,"0")).join("")}`}end(){if(this.at!==this.bytes.length)throw Error("the share code has bytes left over")}}function nk(t){return RN("sha256").update(t).digest().subarray(0,bu)}function hh(t){return/^tt\d+:/.test(t)}function rk(t){return`${mh}${t}`}function rs(t){let e=t.trim();if(!/^https?:\/\//i.test(e))return hh(e)?e:void 0;let r=(URL.canParse(e)?/^\/p\/([^/]+)\/?$/.exec(new URL(e).pathname)?.[1]:void 0)?.replace(/%3a/gi,":");return r&&hh(r)?r:void 0}function ik(t,e){let n=yh(t);return sn(xn(n.name,$h(n),e,!0))}function kh(t){let e=new tk;e.str(t.name);for(let r of[t.background,t.foreground,t.cursor,t.selection,...t.ansi])e.color(r);for(let r of t.signature)e.u8(V$.indexOf(r));e.str(t.base),e.str(t.group),e.str(t.ansiSource),e.str(t.booru),e.u16((t.waive??[]).reduce((r,i)=>r|1<<rd.indexOf(i),0)),e.str(t.waive&&t.waive.length>0?t.reason:"");let n=t.pictures??[];e.u8(n.length);for(let r of n)e.u8(V.findIndex((i)=>i.key===r.site)),e.u32(r.id),e.u16(r.size===void 0?0:r.size==="fill"?1:r.size),e.u8(r.position===void 0?0:qt.indexOf(r.position)+1),e.u16(r.opacity===void 0?0:Math.round(r.opacity*1000)+1);return`${$a}${e.done()}`}function yh(t){if(!t.startsWith($a))throw Error(hh(t)?`this ttheme reads ${$a} share codes, not ${t.slice(0,t.indexOf(":")+1)}`:`a share code starts with ${$a}`);let e=t.slice($a.length);if(!/^[A-Za-z0-9_-]+$/.test(e))throw Error("the share code holds characters it never uses — was it copied whole?");let n=Buffer.from(e,"base64url");if(n.length<=bu)throw Error("the share code is cut short");let r=n.subarray(0,-bu);if(!nk(r).equals(n.subarray(-bu)))throw Error("the share code does not add up — was it copied whole?");let i=new ek(new Uint8Array(r)),o=i.str(),[s,a,c,u,...f]=Array.from({length:20},()=>i.color()),l=[i.u8(),i.u8(),i.u8()].map((E)=>V$[E]??`slot${E}`),d=i.str(),h=i.str(),m=i.str(),p=i.str(),b=i.u16(),$=i.str(),k=rd.filter((E,x)=>b&1<<x),v=Array.from({length:i.u8()},()=>{let E=V[i.u8()]?.key??"unknown",x=i.u32(),M=i.u16(),R=i.u8(),F=i.u16();return{site:E,id:x,...M===1?{size:"fill"}:M>1?{size:M}:{},...R>0?{position:qt[R-1]??"unknown"}:{},...F>0?{opacity:(F-1)/1000}:{}}});if(i.end(),![s,a,c,u,...f].every(he))throw Error("the share code holds a color that is not one");return{name:o,...d?{base:d}:{},...h?{group:h}:{},...m?{ansiSource:m}:{},...p?{booru:p}:{},signature:l,background:s,foreground:a,cursor:c,selection:u,ansi:f,...k.length>0?{waive:k,reason:$}:{},...v.length>0?{pictures:v}:{}}}function is(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi}}function vh(t,e){let n=t.indexOf("ansi = ["),r=t.indexOf("]",n);if(n<0||r<0)throw Error("no ansi = [...] list to rewrite");let i=0,o=t.slice(n,r).replace(/"#[0-9a-fA-F]{6}"/g,()=>Rt(e.ansi[i++]));return[["background",e.background],["foreground",e.foreground],["cursor",e.cursor],["selection_background",e.selection]].reduce((a,[c,u])=>a.replace(new RegExp(`^(${c}\\s*=\\s*)"#[0-9a-fA-F]{6}"`,"m"),(f,l)=>`${l}${Rt(u)}`),t.slice(0,n)+o+t.slice(r))}function ok(t,e){return t.replace(/^(signature\s*=\s*)\[[^\]]*\]/m,(n,r)=>`${r}[${e.map(Rt).join(", ")}]`)}function ka(t){let e=$n(He(t)),n=new Set(t.waived??[]),r=Math.max(...Ie.map((i)=>i.label.length));return Ie.map((i,o)=>{let s=e[o],a=n.has(i.rule)||Number.isNaN(s)||(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max),c=i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",u=Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2);return` ${a?"✓":"✗"} ${i.label.padEnd(r)} ${u.padStart(6)} ${c}${n.has(i.rule)?" waived":""}`})}import{existsSync as HN,readFileSync as FN,rmSync as LN}from"node:fs";import{join as CN}from"node:path";var va=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],jN=1;function sk(t){return CN(t,"ttheme","tone.json")}function ak(t){return va.includes(t)}function Ut(t){let e=sk(t);if(!HN(e))return{};let n;try{n=JSON.parse(FN(e,"utf8"))}catch{return{}}let r=n?.palettes;if(typeof r!=="object"||r===null)return{};let i={};for(let[o,s]of Object.entries(r)){if(typeof s!=="object"||s===null)continue;let a={};for(let[c,u]of Object.entries(s))if(ak(c)&&typeof u==="string"&&he(u.toLowerCase()))a[c]=u.toLowerCase();if(Object.keys(a).length>0)i[o]=a}return i}function Ea(t,e){let n=sk(t),r=Object.fromEntries(Object.entries(e).filter(([,i])=>Object.keys(i).length>0));if(Object.keys(r).length===0){LN(n,{force:!0});return}L(n,`${JSON.stringify({version:jN,palettes:r},null,2)}
263
- `)}function ya(t,e){if(e==="background"||e==="foreground"||e==="cursor"||e==="selection")return t[e];return t.ansi[Number(e.slice(4))]}function ck(t){return va.map((e)=>ya(t,e))}function Eh(t,e){let n={};return va.forEach((r,i)=>{let o=e[i].toLowerCase();if(o!==ya(t,r).toLowerCase())n[r]=o}),n}function Sa(t,e){if(!e)return t;let n=(u)=>e[u]===void 0||e[u]===ya(t,u).toLowerCase();if(va.every(n))return t;let r=(u)=>e[u]??ya(t,u),i={background:r("background"),foreground:r("foreground"),cursor:r("cursor"),selection:r("selection"),ansi:va.slice(4).map(r)},o=t.signatureSlots.map((u)=>ak(u)?r(u):ya(i,u)),s={...t,...i,signature:o},a=He(s),c=Mn({name:s.name,background:i.background,foreground:i.foreground,cursor:i.cursor,selection:i.selection,ansi:i.ansi,waived:a.waive},s.signatureSlots);return{...s,gate:$n(a),backdrop:c}}function yu(t,e){return Object.keys(e).length===0?t:t.map((n)=>Sa(n,e[n.name]))}function vu(t,e,n){let r={...t};if(Object.keys(n).length===0)delete r[e];else r[e]=n;return r}function uk(t,e,n){let r=Ut(t);if(!Object.keys(r).some((o)=>e.has(o)||n.includes(o)))return;Ea(t,Object.fromEntries(Object.entries(r).filter(([o])=>!n.includes(o)).map(([o,s])=>[e.get(o)??o,s])))}var hk=20000;function tr(t){return dk(t,"ttheme","catalog.json")}function mk(t,e){L(tr(t),`${JSON.stringify(e,null,2)}
264
- `)}function ct(t,e=!0,n){let r=ts(t),i=tr(t),o=fu();if(r.includes(Z))if(n)o=n;else{if(!fk(i))throw Error(`no catalog at ${i} — run \`ttheme init\` first`);o=zr(Sh(i,"utf8"))}let s=r.filter(kt).flatMap((a)=>GN(t,a,o.palettes,e));return{...o,palettes:[...o.palettes,...s]}}function _N(t){let e;try{e=JSON.parse(t)}catch{throw Error("is not valid JSON")}let n=e?.files;if(!n||typeof n!=="object"||Object.values(n).some((r)=>typeof r!=="string"))throw Error("is not a copy of a market this ttheme fetched — `ttheme update` fetches it again");return{...typeof e?.etag==="string"?{etag:e.etag}:{},files:n}}function er(t,e){return _N(Sh(Qn(t,e),"utf8"))}function pk(t,e){return be({owner:D$(t),name:e.name})}function gk(t,e){let n=e.files[Bt];if(n===void 0)throw Error(`${ot(t)} has no ${Bt} — \`ttheme market init\` makes one`);return fh(n,Bt)}function Eu(t,e){return pk(t,gk(t,e))}function Wi(t,e,n,r){let i=gk(t,e),o=pk(t,i),s=ot(t),a=new Map(Object.entries(e.files).map(([u,f])=>[`${s}/${u}`,f])),c=ph(Object.keys(e.files),(u)=>`${s}/${u}`);return{id:o,info:i,entries:bh(c,(u)=>a.get(u.path)??"",o,n,r,!0)}}function GN(t,e,n,r){let i=Qn(t,e);if(!fk(i))return[];try{return Wi(e,er(t,e),n,fe(!1)).entries}catch(o){if(r)process.stderr.write(`ttheme: skipping ${i} — ${o.message}
265
- `);return[]}}function zr(t){let e;try{e=JSON.parse(t)}catch{throw Error("catalog is not valid JSON")}let n=e;if(typeof n?.version!=="string"||!Array.isArray(n.palettes))throw Error("catalog has no version or palettes");for(let r of n.palettes){let i=bk(r);if(i)throw Error(`catalog entry ${JSON.stringify(r?.name)} ${i}`)}return n}function bk(t){if(typeof t?.name!=="string"||!Array.isArray(t.ansi)||t.ansi.length!==16)return"is missing name or its 16 ANSI colors";let e=Ne(t.name)??(t.base===void 0?void 0:Ne(t.base));if(e)return e;if(![t.background,t.foreground,t.cursor,t.selection,...t.ansi].every((n)=>typeof n==="string"&&he(n)))return'holds a color that is not "#rrggbb"';for(let n of[t.group,t.native??"-",t.catalog??"-",t.ansiSource]){let r=typeof n==="string"?ha(n):"has a field that is not text";if(r)return r}return}function wk(t){return dk(t,"ttheme","kept.json")}function os(t,e){L(wk(t),`${JSON.stringify({palettes:e},null,2)}
266
- `)}function qr(t){try{let{palettes:e}=JSON.parse(Sh(wk(t),"utf8"));return Array.isArray(e)?e.filter((n)=>bk(n)===void 0):[]}catch{return[]}}function lk(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi,t.pictures??[]])}function ss(t,e){let n=new Map(qr(t).map((r)=>[r.name,r]));return e.palettes.filter((r)=>{let i=n.get(r.name);return ut(r.name)!==void 0&&i!==void 0&&lk(i)!==lk(r)})}function nr(t,e,n=!0){let r=qr(t),i=new Map(r.filter((a)=>ut(a.name)!==void 0).map((a)=>[a.name,a])),o=[...e.palettes.map((a)=>i.get(a.name)??a),...ku(t,e.palettes,n)],s=new Set(o.map((a)=>a.name));return{...e,palettes:[...o,...r.filter((a)=>!s.has(a.name))]}}function Wt(t,e,n=!0){let r=nr(t,e,n);return{...r,palettes:yu(r.palettes,Ut(t))}}function we(t){return Wt(t,ct(t))}class Su extends Error{}class Mu extends Error{}async function Mh(t,e=hk,n,r={}){let i;try{let o=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([o,n]):o})}catch(o){throw Error(`cannot reach ${t} — ${o instanceof Error?o.message:String(o)}`)}if(i.status===404)throw new Su(`nothing at ${t}`);if(i.status===403||i.status===429)throw new Mu(`${new URL(t).host} is turning requests away for now (${i.status}) — try again in a minute`);if(!i.ok&&i.status!==304)throw Error(`${t} answered ${i.status}`);return i}async function $k(t,e,n=hk,r){return e(await(await Mh(t,n,r)).text())}function Ma(t){let e=new Set(t.waived??[]),n=t.gate??$n(He(t));return Ie.flatMap((r,i)=>{let o=n[i];if(e.has(r.rule)||typeof o!=="number"||Number.isNaN(o))return[];if(r.min!==void 0&&o<r.min)return[`${r.label} ${o} < ${r.min}`];if(r.max!==void 0&&o>r.max)return[`${r.label} ${o} > ${r.max}`];return[]})}function In(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in the catalog — ${xh(t,[e])}`);return n}function xh(t,e){let n=e.map((s)=>s.toLowerCase()),r=t.filter((s)=>n.some((a)=>s.name.includes(a))),i=t.filter((s)=>!r.includes(s)&&n.some((a)=>s.group.toLowerCase().includes(a))),o=[...r,...i].map((s)=>s.name).slice(0,3);return o.length>0?`did you mean: ${o.join(", ")}?`:"`ttheme list` shows what is there"}function kk(t,e){return t.filter((n)=>_i([n.name,n.group,n.native??"",n.ansiSource,...n.nativeNames??[],...mu(n.booru)],e))}function yk(t,e,n){let r=n.toLowerCase(),i=(o)=>o.name===e.name?0:o.group===e.group?1:2;return t.filter((o)=>o.booru?.toLowerCase().includes(r)).map((o,s)=>({p:o,at:s})).sort((o,s)=>i(o.p)-i(s.p)||o.at-s.at).map(({p:o})=>o)}function vk(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var BN=9999,as;function ze(t,e){if(!as||e===""||as.length>=BN)return e;return`\x1B[?${as.push(t)}y${e}\x1B[?0y`}function Sk(t){let e=as,n=[];as=n;try{return{drawn:t(),targets:n}}finally{as=e}}function Mk(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function UN(t){let e=t.slice(2,-1);return t.startsWith("\x1B[")&&t.endsWith("G")&&/^\d*$/.test(e)?Math.max(1,Number(e||1))-1:void 0}function WN(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],o="",s=0,a="",c=()=>{let f=i.pop();if(f&&s>f.col)r.push({row:e,col:f.col,width:s-f.col,height:1,target:f.target})},u=0;while(u<t.length){let f=t.indexOf("\x1B",u);if(f!==u){let m=f===-1?t.length:f;a+=t.slice(u,m),o+=t.slice(u,m),u=m;continue}let l=t.slice(u,u+(Vf(t,u)||1));u+=l.length;let d=Mk(l),h=d===void 0?UN(l):void 0;if(d===void 0&&h===void 0){o+=l;continue}if(s+=_(a),a="",h!==void 0)s=h,o+=l;else if(d===0)c();else if(d!==void 0)i.push({target:n[d-1],col:s})}s+=_(a);while(i.length>0)c();return{text:o,zones:r}}function xk(t,e,n){let r=[],i=[],o="",s=(p)=>{let b=Mk(p);if(b===0)r.pop();else if(b!==void 0)r.push(p);else if(p.startsWith("\x1B]8;"))o=p.slice(p.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":p;else if(p.startsWith("\x1B[")&&p.endsWith("m"))i.push(p)},a=t.includes("\x1B")||n.includes("\x1B")?me:"",c=Uc(t),u="",f=0,l=0;while(l<c.length&&f<e){let p=c[l];if(p.sequence)s(p.text);else if(f+p.width>e)break;else f+=p.width;u+=p.text,l++}u+=" ".repeat(e-Math.min(e,f));let d=`${"\x1B[?0y".repeat(r.length)}${o?"\x1B]8;;\x1B\\":""}${a}`,h=e+_(n);while(l<c.length&&f<h){let p=c[l];if(p.sequence)s(p.text);else f+=p.width;l++}if(l>=c.length)return`${u}${d}${n}${a}`;let m=`${i.join("")}${o}${r.join("")}${" ".repeat(Math.max(0,f-h))}`;return`${u}${d}${n}${a}${m}${t.slice(c[l].start)}`}function Ok(t,e){let n=[];return{lines:t.map((i,o)=>{let s=WN(i,o,e);return n.push(...s.zones),s.text}),zones:n}}function Ek(t,e,n,r=0.5,i=0.5){let o=n-t.col,s=e-t.row;return{target:t.target,x:o,y:s,exact:{x:o+r,y:s+i},width:t.width,height:t.height,inside:o>=0&&o<t.width&&s>=0&&s<t.height}}function KN(t,e,n){let r;for(let i of t)if(e>=i.row&&e<i.row+i.height&&n>=i.col&&n<i.col+i.width&&(!r||i.width*i.height<=r.width*r.height))r=i;return r}var zN={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace",del:"delete","←":"left","→":"right"};function Oh(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return zN[t]??([...t].length===1&&t!==" "?t:void 0)}function jt(t,e){let n=Oh(t);return n?ze({kind:"key",key:n},e):e}class Ih{zones=[];held;point(t){if(t.action==="drag"||t.action==="release"){let n=this.held;if(t.action==="release")this.held=void 0;return n&&Ek(n,t.row,t.col,t.fx,t.fy)}let e=KN(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&Ek(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}function Ik(t,e,n,r=(i)=>i){if(!t.color)return r(n?`[${e}]`:` ${e} `);return n?t.pill(r(` ${e} `)):t.dim(r(` ${e} `))}function qe(t,e){return t.color?t.pill(` ${e} `):`[${e}]`}function Rk(t,e,n){return jt(e.split(" ")[0]??"",`${t.bold(e)} ${t.dim(n)}`)}function xu(t,e){return e===void 0?t.dim(A.sep):e?t.dim(A.ok):t.bold(A.miss)}var qN={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Jt(t,e,n=[]){let[r,i]=[...qN[e]],o=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[s,a]of n)[...a].forEach((c,u)=>{if(s+u>0&&s+u<t-1)o[s+u]=c});return o.join("")}function De(t,e,n){return`${t.dim("│")}${nt(e,n-2)}${t.dim("│")}`}var rr=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],Ou=10,Iu=20;function Pk(t){return rr.find((e)=>e.name===t.TTHEME_HUB)?.name}function Ak(t,e){let n=rr.findIndex((r)=>r.name===t);return Iu+(n+e+rr.length)%rr.length+1}function Nk(t){return Iu+rr.findIndex((e)=>e.name===t)+1}function Rh(t,e){let n=Me(e);return` ${rr.map(({name:i,title:o})=>{let s={kind:"hub",tab:i};return Ik(n,o,i===t,(a)=>ze(s,a))}).join(" ")} ${n.dim("tab next")}`}import{execFileSync as qF}from"node:child_process";import{existsSync as bl,mkdirSync as DF,readdirSync as JF,readFileSync as wl,rmSync as YF}from"node:fs";import{basename as yv,join as za,relative as wv}from"node:path";import{styleText as Tu}from"node:util";import{stdout as Wk,stdin as tT}from"node:process";import eT from"node:readline";var Ru="\x1B",Ck="›",DN=39,Ah="\x07",jk="[",JN="]",_k="m",Nh=`${JN}8;;`,Tk=new RegExp(`(?:\\${jk}(?<code>\\d+)m|\\${Nh}(?<uri>.*)${Ah})`,"y"),Hk=(t)=>{if(t>=30&&t<=37)return 39;if(t>=90&&t<=97)return 39;if(t>=40&&t<=47)return 49;if(t>=100&&t<=107)return 49;if(t===1||t===2)return 22;if(t===3)return 23;if(t===4)return 24;if(t===7)return 27;if(t===8)return 28;if(t===9)return 29;if(t===0)return 0;return},Fk=(t)=>`${Ru}${jk}${t}${_k}`,Lk=(t)=>`${Ru}${Nh}${t}${Ah}`,Ph=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,o=!1,s=t.at(-1),a=s===void 0?0:_(s),c=r.next(),u=r.next(),f=0;while(!c.done){let l=c.value,d=_(l);if(a+d<=n)t[t.length-1]+=l;else t.push(l),a=0;if(l===Ru||l===Ck)i=!0,o=e.startsWith(Nh,f+1);if(i){if(o){if(l===Ah)i=!1,o=!1}else if(l===_k)i=!1}else if(a+=d,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),f+=l.length}if(s=t.at(-1),!a&&s!==void 0&&s.length&&t.length>1)t[t.length-2]+=t.pop()},YN=(t)=>{let e=t.split(" "),n=e.length;while(n){if(_(e[n-1]))break;n--}if(n===e.length)return t;return e.slice(0,n).join(" ")+e.slice(n).join("")},ZN=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,o,s=t.split(" "),a=[""],c=0;for(let l=0;l<s.length;l++){let d=s[l];if(n.trim!==!1){let m=a.at(-1)??"",p=m.trimStart();if(m.length!==p.length)a[a.length-1]=p,c=_(p)}if(l!==0){if(c>=e&&(n.wordWrap===!1||n.trim===!1))a.push(""),c=0;if(c||n.trim===!1)a[a.length-1]+=" ",c++}let h=_(d);if(n.hard&&h>e){let m=e-c,p=1+Math.floor((h-m-1)/e);if(Math.floor((h-1)/e)<p)a.push("");Ph(a,d,e),c=_(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){Ph(a,d,e),c=_(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){Ph(a,d,e),c=_(a.at(-1)??"");continue}a[a.length-1]+=d,c+=h}if(n.trim!==!1)a=a.map((l)=>YN(l));let u=a.join(`
267
- `),f=!1;for(let l=0;l<u.length;l++){let d=u[l];if(r+=d,!f){if(f=d>="\uD800"&&d<="\uDBFF",f)continue}else f=!1;if(d===Ru||d===Ck){Tk.lastIndex=l+1;let m=Tk.exec(u)?.groups;if(m?.code!==void 0){let p=Number.parseFloat(m.code);i=p===DN?void 0:p}else if(m?.uri!==void 0)o=m.uri.length===0?void 0:m.uri}if(u[l+1]===`
268
- `){if(o)r+=Lk("");let h=i?Hk(i):void 0;if(i&&h)r+=Fk(h)}else if(d===`
269
- `){if(i&&Hk(i))r+=Fk(i);if(o)r+=Lk(o)}}return r},VN=/\r?\n/;function Dr(t,e,n){return String(t).normalize().split(VN).map((r)=>ZN(r,e,n)).join(`
270
- `)}var Fe=Df(Hh(),1);function ir(t,e,n){if(!n.some((s)=>!s.disabled))return t;let r=t+e,i=Math.max(n.length-1,0),o=r<0?i:r>i?0:r;return n[o]?.disabled?ir(o,e<0?-1:1,n):o}function Pu(t,e,n,r){let i=r.split(`
271
- `),o=0,s=t;for(let c of i){if(s<=c.length)break;s-=c.length+1,o++}for(o=Math.max(0,Math.min(i.length-1,o+n)),s=Math.min(s,i[o].length)+e;s<0&&o>0;)o--,s+=i[o].length+1;for(;s>i[o].length&&o<i.length-1;)s-=i[o].length+1,o++;s=Math.max(0,Math.min(i[o].length,s));let a=0;for(let c=0;c<o;c++)a+=i[c].length+1;return a+s}var nT=["up","down","left","right","space","enter","cancel"],rT=["January","February","March","April","May","June","July","August","September","October","November","December"],Yt={actions:new Set(nT),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...rT],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(t,e)=>`There are only ${t} days in ${e}`,afterMin:(t)=>`Date must be on or after ${t.toISOString().slice(0,10)}`,beforeMax:(t)=>`Date must be on or before ${t.toISOString().slice(0,10)}`}}};function Kk(t,e){if(typeof t=="string")return Yt.aliases.get(t)===e;for(let n of t)if(n!==void 0&&Kk(n,e))return!0;return!1}function iT(t,e){if(t===e)return;let n=t.split(`
262
+ `}class pk{bytes=[];u8(t){this.bytes.push(t&255)}u16(t){this.u8(t>>8),this.u8(t)}u32(t){this.u16(Math.floor(t/65536)),this.u16(t%65536)}str(t=""){let e=new TextEncoder().encode(t);if(e.length>255)throw Error(`"${t}" is too long to share`);this.u8(e.length),this.bytes.push(...e)}color(t){let e=Number.parseInt(t.slice(1),16);this.u8(e>>16),this.u8(e>>8),this.u8(e)}done(){let t=Buffer.from(this.bytes);return Buffer.concat([t,bk(t)]).toString("base64url")}}class gk{at=0;bytes;constructor(t){this.bytes=t}u8(){let t=this.bytes[this.at++];if(t===void 0)throw Error("the share code is cut short");return t}u16(){return this.u8()*256+this.u8()}u32(){return this.u16()*65536+this.u16()}str(){let t=this.u8(),e=this.bytes.subarray(this.at,this.at+t);if(e.length!==t)throw Error("the share code is cut short");this.at+=t;try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw Error("the share code holds text it cannot read — was it copied whole?")}}color(){return`#${[this.u8(),this.u8(),this.u8()].map((t)=>t.toString(16).padStart(2,"0")).join("")}`}end(){if(this.at!==this.bytes.length)throw Error("the share code has bytes left over")}}function bk(t){return aT("sha256").update(t).digest().subarray(0,Eu)}function vh(t){return/^tt\d+:/.test(t)}function wk(t){return`${Sh}${t}`}function as(t){let e=t.trim();if(!/^https?:\/\//i.test(e))return vh(e)?e:void 0;let r=(URL.canParse(e)?/^\/p\/([^/]+)\/?$/.exec(new URL(e).pathname)?.[1]:void 0)?.replace(/%3a/gi,":");return r&&vh(r)?r:void 0}function $k(t,e){let n=Rh(t);return an(On(n.name,Ph(n),e,!0))}function Ih(t){let e=new pk;e.str(t.name);for(let r of[t.background,t.foreground,t.cursor,t.selection,...t.ansi])e.color(r);for(let r of t.signature)e.u8(dk.indexOf(r));e.str(t.base),e.str(t.group),e.str(t.ansiSource),e.str(t.booru),e.u16((t.waive??[]).reduce((r,i)=>r|1<<dd.indexOf(i),0)),e.str(t.waive&&t.waive.length>0?t.reason:"");let n=t.pictures??[];if(n.length>255)throw Error(`a share code carries at most 255 pictures, and ${t.name} holds ${n.length}`);e.u8(n.length);for(let r of n)e.u8(Z.findIndex((i)=>i.key===r.site)),e.u32(r.id),e.u16(r.size===void 0?0:r.size==="fill"?1:r.size),e.u8(r.position===void 0?0:qt.indexOf(r.position)+1),e.u16(r.opacity===void 0?0:Math.round(r.opacity*1000)+1);return`${Oa}${e.done()}`}function Rh(t){if(!t.startsWith(Oa))throw Error(vh(t)?`this ttheme reads ${Oa} share codes, not ${t.slice(0,t.indexOf(":")+1)}`:`a share code starts with ${Oa}`);let e=t.slice(Oa.length);if(!/^[A-Za-z0-9_-]+$/.test(e))throw Error("the share code holds characters it never uses — was it copied whole?");let n=Buffer.from(e,"base64url");if(n.length<=Eu)throw Error("the share code is cut short");let r=n.subarray(0,-Eu);if(!bk(r).equals(n.subarray(-Eu)))throw Error("the share code does not add up — was it copied whole?");let i=new gk(new Uint8Array(r)),o=i.str(),[s,a,c,u,...f]=Array.from({length:20},()=>i.color()),l=[i.u8(),i.u8(),i.u8()].map((S)=>dk[S]??`slot${S}`),d=i.str(),h=i.str(),m=i.str(),p=i.str(),b=i.u16(),$=i.str(),k=dd.filter((S,x)=>b&1<<x),v=Array.from({length:i.u8()},()=>{let S=Z[i.u8()]?.key??"unknown",x=i.u32(),M=i.u16(),I=i.u8(),L=i.u16();return{site:S,id:x,...M===1?{size:"fill"}:M>1?{size:M}:{},...I>0?{position:qt[I-1]??"unknown"}:{},...L>0?{opacity:(L-1)/1000}:{}}});if(i.end(),![s,a,c,u,...f].every(he))throw Error("the share code holds a color that is not one");return{name:o,...d?{base:d}:{},...h?{group:h}:{},...m?{ansiSource:m}:{},...p?{booru:p}:{},signature:l,background:s,foreground:a,cursor:c,selection:u,ansi:f,...k.length>0?{waive:k,reason:$}:{},...v.length>0?{pictures:v}:{}}}function cs(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selectionBackground,ansi:t.ansi}}function Ah(t,e){let n=t.indexOf("ansi = ["),r=t.indexOf("]",n);if(n<0||r<0)throw Error("no ansi = [...] list to rewrite");let i=0,o=t.slice(n,r).replace(/"#[0-9a-fA-F]{6}"/g,()=>It(e.ansi[i++]));return[["background",e.background],["foreground",e.foreground],["cursor",e.cursor],["selection_background",e.selection]].reduce((a,[c,u])=>a.replace(new RegExp(`^(${c}\\s*=\\s*)"#[0-9a-fA-F]{6}"`,"m"),(f,l)=>`${l}${It(u)}`),t.slice(0,n)+o+t.slice(r))}function kk(t,e){return t.replace(/^(signature\s*=\s*)\[[^\]]*\]/m,(n,r)=>`${r}[${e.map(It).join(", ")}]`)}function Pa(t){let e=wn(Fe(t)),n=new Set(t.waived??[]),r=Math.max(...Ie.map((i)=>i.label.length));return Ie.map((i,o)=>{let s=e[o],a=n.has(i.rule)||Number.isNaN(s)||(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max),c=i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",u=Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2);return` ${a?"✓":"✗"} ${i.label.padEnd(r)} ${u.padStart(6)} ${c}${n.has(i.rule)?" waived":""}`})}import{existsSync as dT,readFileSync as hT,rmSync as mT}from"node:fs";import{join as pT}from"node:path";var Ra=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],gT=1;function yk(t){return pT(t,"ttheme","tone.json")}function vk(t){return Ra.includes(t)}function Wt(t){let e=yk(t);if(!dT(e))return{};let n;try{n=JSON.parse(hT(e,"utf8"))}catch{return{}}let r=n?.palettes;if(typeof r!=="object"||r===null)return{};let i={};for(let[o,s]of Object.entries(r)){if(typeof s!=="object"||s===null)continue;let a={};for(let[c,u]of Object.entries(s))if(vk(c)&&typeof u==="string"&&he(u.toLowerCase()))a[c]=u.toLowerCase();if(Object.keys(a).length>0)i[o]=a}return i}function Aa(t,e){let n=yk(t),r=Object.fromEntries(Object.entries(e).filter(([,i])=>Object.keys(i).length>0));if(Object.keys(r).length===0){mT(n,{force:!0});return}C(n,`${JSON.stringify({version:gT,palettes:r},null,2)}
263
+ `)}function Ia(t,e){if(e==="background"||e==="foreground"||e==="cursor"||e==="selection")return t[e];return t.ansi[Number(e.slice(4))]}function Sk(t){return Ra.map((e)=>Ia(t,e))}function Nh(t,e){let n={};return Ra.forEach((r,i)=>{let o=e[i].toLowerCase();if(o!==Ia(t,r).toLowerCase())n[r]=o}),n}function Na(t,e){if(!e)return t;let n=(u)=>e[u]===void 0||e[u]===Ia(t,u).toLowerCase();if(Ra.every(n))return t;let r=(u)=>e[u]??Ia(t,u),i={background:r("background"),foreground:r("foreground"),cursor:r("cursor"),selection:r("selection"),ansi:Ra.slice(4).map(r)},o=t.signatureSlots.map((u)=>vk(u)?r(u):Ia(i,u)),s={...t,...i,signature:o},a=Fe(s),c=xn({name:s.name,background:i.background,foreground:i.foreground,cursor:i.cursor,selection:i.selection,ansi:i.ansi,waived:a.waive},s.signatureSlots);return{...s,gate:wn(a),backdrop:c}}function Pu(t,e){return Object.keys(e).length===0?t:t.map((n)=>Na(n,e[n.name]))}function Iu(t,e,n){let r={...t};if(Object.keys(n).length===0)delete r[e];else r[e]=n;return r}function Ek(t,e,n){let r=Wt(t);if(!Object.keys(r).some((o)=>e.has(o)||n.includes(o)))return;Aa(t,Object.fromEntries(Object.entries(r).filter(([o])=>!n.includes(o)).map(([o,s])=>[e.get(o)??o,s])))}var Pk=20000;function ir(t){return Ok(t,"ttheme","catalog.json")}function Ik(t,e){C(ir(t),`${JSON.stringify(e,null,2)}
264
+ `)}function at(t,e=!0,n){let r=is(t),i=ir(t),o=wu();if(r.includes(V))if(n)o=n;else{if(!xk(i))throw Error(`no catalog at ${i} — run \`ttheme init\` first`);o=zr(Th(i,"utf8"))}let s=r.filter(kt).flatMap((a)=>wT(t,a,o.palettes,e));return{...o,palettes:[...o.palettes,...s]}}function bT(t){let e;try{e=JSON.parse(t)}catch{throw Error("is not valid JSON")}let n=e?.files;if(!n||typeof n!=="object"||Object.values(n).some((r)=>typeof r!=="string"))throw Error("is not a copy of a market this ttheme fetched — `ttheme update` fetches it again");return{...typeof e?.etag==="string"?{etag:e.etag}:{},files:n}}function or(t,e){return bT(Th(rr(t,e),"utf8"))}function Rk(t,e){return be({owner:ck(t),name:e.name})}function Ak(t,e){let n=e.files[Ut];if(n===void 0)throw Error(`${rt(t)} has no ${Ut} — \`ttheme market init\` makes one`);return kh(n,Ut)}function Ru(t,e){return Rk(t,Ak(t,e))}function qi(t,e,n,r){let i=Ak(t,e),o=Rk(t,i),s=rt(t),a=new Map(Object.entries(e.files).map(([u,f])=>[`${s}/${u}`,f])),c=Eh(Object.keys(e.files),(u)=>`${s}/${u}`);return{id:o,info:i,entries:xh(c,(u)=>a.get(u.path)??"",o,n,r,!0)}}function wT(t,e,n,r){let i=rr(t,e);if(!xk(i))return[];try{return qi(e,or(t,e),n,fe(!1)).entries}catch(o){if(r)process.stderr.write(`ttheme: skipping ${i} — ${o.message}
265
+ `);return[]}}function zr(t){let e;try{e=JSON.parse(t)}catch{throw Error("catalog is not valid JSON")}let n=e;if(typeof n?.version!=="string"||!Array.isArray(n.palettes))throw Error("catalog has no version or palettes");for(let r of n.palettes){let i=Nk(r);if(i)throw Error(`catalog entry ${JSON.stringify(r?.name)} ${i}`)}return n}function Nk(t){if(typeof t?.name!=="string"||!Array.isArray(t.ansi)||t.ansi.length!==16)return"is missing name or its 16 ANSI colors";let e=Te(t.name)??(t.base===void 0?void 0:Te(t.base));if(e)return e;if(![t.background,t.foreground,t.cursor,t.selection,...t.ansi].every((n)=>typeof n==="string"&&he(n)))return'holds a color that is not "#rrggbb"';for(let n of[t.group,t.native??"-",t.catalog??"-",t.ansiSource]){let r=typeof n==="string"?ya(n):"has a field that is not text";if(r)return r}return}function Tk(t){return Ok(t,"ttheme","kept.json")}function us(t,e){C(Tk(t),`${JSON.stringify({palettes:e},null,2)}
266
+ `)}function Dr(t){try{let{palettes:e}=JSON.parse(Th(Tk(t),"utf8"));return Array.isArray(e)?e.filter((n)=>Nk(n)===void 0):[]}catch{return[]}}function Mk(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi,t.pictures??[]])}function ls(t,e){let n=new Map(Dr(t).map((r)=>[r.name,r]));return e.palettes.filter((r)=>{let i=n.get(r.name);return ut(r.name)!==void 0&&i!==void 0&&Mk(i)!==Mk(r)})}function sr(t,e,n=!0){let r=Dr(t),i=new Map(r.filter((a)=>ut(a.name)!==void 0).map((a)=>[a.name,a])),o=[...e.palettes.map((a)=>i.get(a.name)??a),...Ou(t,e.palettes,n)],s=new Set(o.map((a)=>a.name));return{...e,palettes:[...o,...r.filter((a)=>!s.has(a.name))]}}function Kt(t,e,n=!0){let r=sr(t,e,n);return{...r,palettes:Pu(r.palettes,Wt(t))}}function we(t){return Kt(t,at(t))}class Au extends Error{}class Nu extends Error{}async function Hh(t,e=Pk,n,r={}){let i;try{let o=AbortSignal.timeout(e);i=await fetch(t,{headers:r,signal:n?AbortSignal.any([o,n]):o})}catch(o){throw Error(`cannot reach ${t} — ${o instanceof Error?o.message:String(o)}`)}if(i.status===404)throw new Au(`nothing at ${t}`);if(i.status===403||i.status===429)throw new Nu(`${new URL(t).host} is turning requests away for now (${i.status}) — try again in a minute`);if(!i.ok&&i.status!==304)throw Error(`${t} answered ${i.status}`);return i}async function Hk(t,e,n=Pk,r){return e(await(await Hh(t,n,r)).text())}function Ta(t){let e=new Set(t.waived??[]),n=t.gate??wn(Fe(t));return Ie.flatMap((r,i)=>{let o=n[i];if(e.has(r.rule)||typeof o!=="number"||Number.isNaN(o))return[];if(r.min!==void 0&&o<r.min)return[`${r.label} ${o} < ${r.min}`];if(r.max!==void 0&&o>r.max)return[`${r.label} ${o} > ${r.max}`];return[]})}function In(t,e){let n=t.find((r)=>r.name===e);if(!n)throw Error(`no palette named ${e} in the catalog — ${Fh(t,[e])}`);return n}function Fh(t,e){let n=e.map((s)=>s.toLowerCase()),r=t.filter((s)=>n.some((a)=>s.name.includes(a))),i=t.filter((s)=>!r.includes(s)&&n.some((a)=>s.group.toLowerCase().includes(a))),o=[...r,...i].map((s)=>s.name).slice(0,3);return o.length>0?`did you mean: ${o.join(", ")}?`:"`ttheme list` shows what is there"}function Fk(t,e){return t.filter((n)=>Wi([n.name,n.group,n.native??"",n.ansiSource,...n.nativeNames??[],...yu(n.booru)],e))}function Lk(t,e,n){let r=n.toLowerCase(),i=(o)=>o.name===e.name?0:o.group===e.group?1:2;return t.filter((o)=>o.booru?.toLowerCase().includes(r)).map((o,s)=>({p:o,at:s})).sort((o,s)=>i(o.p)-i(s.p)||o.at-s.at).map(({p:o})=>o)}function Ck(t,e){return t.booruSites?.[e]??(t.booru?[t.booru]:[])}var $T=9999,fs;function De(t,e){if(!fs||e===""||fs.length>=$T)return e;return`\x1B[?${fs.push(t)}y${e}\x1B[?0y`}function _k(t){let e=fs,n=[];fs=n;try{return{drawn:t(),targets:n}}finally{fs=e}}function Gk(t){let e=t.slice(3,-1);return t.startsWith("\x1B[?")&&t.endsWith("y")&&/^\d{1,4}$/.test(e)?Number(e):void 0}function kT(t){let e=t.slice(2,-1);return t.startsWith("\x1B[")&&t.endsWith("G")&&/^\d*$/.test(e)?Math.max(1,Number(e||1))-1:void 0}function yT(t,e,n){if(!t.includes("\x1B[?"))return{text:t,zones:[]};let r=[],i=[],o="",s=0,a="",c=()=>{let f=i.pop();if(f&&s>f.col)r.push({row:e,col:f.col,width:s-f.col,height:1,target:f.target})},u=0;while(u<t.length){let f=t.indexOf("\x1B",u);if(f!==u){let m=f===-1?t.length:f;a+=t.slice(u,m),o+=t.slice(u,m),u=m;continue}let l=t.slice(u,u+(sd(t,u)||1));u+=l.length;let d=Gk(l),h=d===void 0?kT(l):void 0;if(d===void 0&&h===void 0){o+=l;continue}if(s+=G(a),a="",h!==void 0)s=h,o+=l;else if(d===0)c();else if(d!==void 0)i.push({target:n[d-1],col:s})}s+=G(a);while(i.length>0)c();return{text:o,zones:r}}function Bk(t,e,n){let r=[],i=[],o="",s=(b)=>{let $=Gk(b);if($===0)r.pop();else if($!==void 0)r.push(b);else if(b.startsWith("\x1B]8;"))o=b.slice(b.indexOf(";",4)+1).replace("\x07","").replace("\x1B\\","")===""?"":b;else if(b.startsWith("\x1B[")&&b.endsWith("m"))i.push(b)},a=t.includes("\x1B")||n.includes("\x1B")?me:"",c=Zc(t),u="",f=0,l=0;while(l<c.length&&f<e){let b=c[l];if(b.sequence)s(b.text);else if(f+b.width>e)break;else f+=b.width;u+=b.text,l++}u+=" ".repeat(e-Math.min(e,f));let d=`${"\x1B[?0y".repeat(r.length)}${o?"\x1B]8;;\x1B\\":""}${a}`,h=e+G(n);while(l<c.length&&f<h){let b=c[l];if(b.sequence)s(b.text);else f+=b.width;l++}let m=l<c.length?t.slice(c[l].start):"";if(m===""&&f<=h)return`${u}${d}${n}${a}`;let p=`${i.join("")}${o}${r.join("")}${" ".repeat(Math.max(0,f-h))}`;return`${u}${d}${n}${a}${p}${m}`}function Uk(t,e){let n=[];return{lines:t.map((i,o)=>{let s=yT(i,o,e);return n.push(...s.zones),s.text}),zones:n}}function jk(t,e,n,r=0.5,i=0.5){let o=n-t.col,s=e-t.row;return{target:t.target,x:o,y:s,exact:{x:o+r,y:s+i},width:t.width,height:t.height,inside:o>=0&&o<t.width&&s>=0&&s<t.height}}function vT(t,e,n){let r;for(let i of t)if(e>=i.row&&e<i.row+i.height&&n>=i.col&&n<i.col+i.width&&(!r||i.width*i.height<=r.width*r.height))r=i;return r}var ST={space:" ",enter:"enter",esc:"esc",tab:"tab",bksp:"backspace",del:"delete","←":"left","→":"right"};function Lh(t){let e=/^(ctrl|alt)\+([a-z])$/.exec(t);if(e)return`${e[1]}-${e[2]}`;return ST[t]??([...t].length===1&&t!==" "?t:void 0)}function jt(t,e){let n=Lh(t);return n?De({kind:"key",key:n},e):e}class Ch{zones=[];held;point(t){if(t.action==="drag"||t.action==="release"){let n=this.held;if(t.action==="release")this.held=void 0;return n&&jk(n,t.row,t.col,t.fx,t.fy)}let e=vT(this.zones,t.row,t.col);if(t.action==="press")this.held=t.button==="left"?e:void 0;return e&&jk(e,t.row,t.col,t.fx,t.fy)}drop(){this.held=void 0}}function Wk(t,e,n,r=(i)=>i){if(!t.color)return r(n?`[${e}]`:` ${e} `);return n?t.pill(r(` ${e} `)):t.dim(r(` ${e} `))}function qe(t,e){return t.color?t.pill(` ${e} `):`[${e}]`}function Kk(t,e,n){return jt(e.split(" ")[0]??"",`${t.bold(e)} ${t.dim(n)}`)}function Tu(t,e){return e===void 0?t.dim(A.sep):e?t.dim(A.ok):t.bold(A.miss)}var ET={top:"╭╮",mid:"├┤",bottom:"╰╯"};function Yt(t,e,n=[]){let[r,i]=[...ET[e]],o=[...`${r}${"─".repeat(Math.max(0,t-2))}${i}`];for(let[s,a]of n)[...a].forEach((c,u)=>{if(s+u>0&&s+u<t-1)o[s+u]=c});return o.join("")}function Je(t,e,n){return`${t.dim("│")}${tt(e,n-2)}${t.dim("│")}`}var ar=[{name:"preview",title:"Preview"},{name:"browse",title:"Browse"}],Hu=10,Fu=20;function zk(t){return ar.find((e)=>e.name===t.TTHEME_HUB)?.name}function Dk(t,e){let n=ar.findIndex((r)=>r.name===t);return Fu+(n+e+ar.length)%ar.length+1}function qk(t){return Fu+ar.findIndex((e)=>e.name===t)+1}function jh(t,e){let n=xe(e);return` ${ar.map(({name:i,title:o})=>{let s={kind:"hub",tab:i};return Wk(n,o,i===t,(a)=>De(s,a))}).join(" ")} ${n.dim("tab next")}`}import{execFileSync as EL}from"node:child_process";import{existsSync as xl,mkdirSync as ML,readdirSync as xL,readFileSync as Ol,rmSync as OL}from"node:fs";import{basename as _v,join as tc,relative as Lv}from"node:path";import{styleText as Gu}from"node:util";import{stdout as iy,stdin as NT}from"node:process";import TT from"node:readline";var Lu="\x1B",Xk="›",MT=39,Gh="\x07",Qk="[",xT="]",ty="m",Bh=`${xT}8;;`,Jk=new RegExp(`(?:\\${Qk}(?<code>\\d+)m|\\${Bh}(?<uri>.*)${Gh})`,"y"),Yk=(t)=>{if(t>=30&&t<=37)return 39;if(t>=90&&t<=97)return 39;if(t>=40&&t<=47)return 49;if(t>=100&&t<=107)return 49;if(t===1||t===2)return 22;if(t===3)return 23;if(t===4)return 24;if(t===7)return 27;if(t===8)return 28;if(t===9)return 29;if(t===0)return 0;return},Vk=(t)=>`${Lu}${Qk}${t}${ty}`,Zk=(t)=>`${Lu}${Bh}${t}${Gh}`,_h=(t,e,n)=>{let r=e[Symbol.iterator](),i=!1,o=!1,s=t.at(-1),a=s===void 0?0:G(s),c=r.next(),u=r.next(),f=0;while(!c.done){let l=c.value,d=G(l);if(a+d<=n)t[t.length-1]+=l;else t.push(l),a=0;if(l===Lu||l===Xk)i=!0,o=e.startsWith(Bh,f+1);if(i){if(o){if(l===Gh)i=!1,o=!1}else if(l===ty)i=!1}else if(a+=d,a===n&&!u.done)t.push(""),a=0;c=u,u=r.next(),f+=l.length}if(s=t.at(-1),!a&&s!==void 0&&s.length&&t.length>1)t[t.length-2]+=t.pop()},OT=(t)=>{let e=t.split(" "),n=e.length;while(n){if(G(e[n-1]))break;n--}if(n===e.length)return t;return e.slice(0,n).join(" ")+e.slice(n).join("")},PT=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",i,o,s=t.split(" "),a=[""],c=0;for(let l=0;l<s.length;l++){let d=s[l];if(n.trim!==!1){let m=a.at(-1)??"",p=m.trimStart();if(m.length!==p.length)a[a.length-1]=p,c=G(p)}if(l!==0){if(c>=e&&(n.wordWrap===!1||n.trim===!1))a.push(""),c=0;if(c||n.trim===!1)a[a.length-1]+=" ",c++}let h=G(d);if(n.hard&&h>e){let m=e-c,p=1+Math.floor((h-m-1)/e);if(Math.floor((h-1)/e)<p)a.push("");_h(a,d,e),c=G(a.at(-1)??"");continue}if(c+h>e&&c&&h){if(n.wordWrap===!1&&c<e){_h(a,d,e),c=G(a.at(-1)??"");continue}a.push(""),c=0}if(c+h>e&&n.wordWrap===!1){_h(a,d,e),c=G(a.at(-1)??"");continue}a[a.length-1]+=d,c+=h}if(n.trim!==!1)a=a.map((l)=>OT(l));let u=a.join(`
267
+ `),f=!1;for(let l=0;l<u.length;l++){let d=u[l];if(r+=d,!f){if(f=d>="\uD800"&&d<="\uDBFF",f)continue}else f=!1;if(d===Lu||d===Xk){Jk.lastIndex=l+1;let m=Jk.exec(u)?.groups;if(m?.code!==void 0){let p=Number.parseFloat(m.code);i=p===MT?void 0:p}else if(m?.uri!==void 0)o=m.uri.length===0?void 0:m.uri}if(u[l+1]===`
268
+ `){if(o)r+=Zk("");let h=i?Yk(i):void 0;if(i&&h)r+=Vk(h)}else if(d===`
269
+ `){if(i&&Yk(i))r+=Vk(i);if(o)r+=Zk(o)}}return r},IT=/\r?\n/;function qr(t,e,n){return String(t).normalize().split(IT).map((r)=>PT(r,e,n)).join(`
270
+ `)}var Le=nd(Wh(),1);function cr(t,e,n){if(!n.some((s)=>!s.disabled))return t;let r=t+e,i=Math.max(n.length-1,0),o=r<0?i:r>i?0:r;return n[o]?.disabled?cr(o,e<0?-1:1,n):o}function Cu(t,e,n,r){let i=r.split(`
271
+ `),o=0,s=t;for(let c of i){if(s<=c.length)break;s-=c.length+1,o++}for(o=Math.max(0,Math.min(i.length-1,o+n)),s=Math.min(s,i[o].length)+e;s<0&&o>0;)o--,s+=i[o].length+1;for(;s>i[o].length&&o<i.length-1;)s-=i[o].length+1,o++;s=Math.max(0,Math.min(i[o].length,s));let a=0;for(let c=0;c<o;c++)a+=i[c].length+1;return a+s}var HT=["up","down","left","right","space","enter","cancel"],FT=["January","February","March","April","May","June","July","August","September","October","November","December"],_t={actions:new Set(HT),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,accessible:void 0,date:{monthNames:[...FT],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(t,e)=>`There are only ${t} days in ${e}`,afterMin:(t)=>`Date must be on or after ${t.toISOString().slice(0,10)}`,beforeMax:(t)=>`Date must be on or before ${t.toISOString().slice(0,10)}`}}};function LT(t){if(t!==void 0)return t;if(_t.accessible!==void 0)return _t.accessible;let e=process.env.ACCESSIBLE;return e!==void 0&&e!==""&&e!=="0"&&e!=="false"}function oy(t,e){if(typeof t=="string")return _t.aliases.get(t)===e;for(let n of t)if(n!==void 0&&oy(n,e))return!0;return!1}function CT(t,e){if(t===e)return;let n=t.split(`
272
272
  `),r=e.split(`
273
- `),i=Math.max(n.length,r.length),o=[];for(let s=0;s<i;s++)n[s]!==r[s]&&o.push(s);return{lines:o,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var WB=globalThis.process.platform.startsWith("win"),Lh=Symbol("clack:cancel");function te(t){return t===Lh}function Au(t,e){let n=t;n.isTTY&&n.setRawMode(e)}var Hu=(t)=>("columns"in t)&&typeof t.columns=="number"?t.columns:80,jh=(t)=>("rows"in t)&&typeof t.rows=="number"?t.rows:20;function Jr(t,e,n,r=n,i=n,o){let s=Hu(t??Wk);return Dr(e,s-n.length,{hard:!0,trim:!1}).split(`
273
+ `),i=Math.max(n.length,r.length),o=[];for(let s=0;s<i;s++)n[s]!==r[s]&&o.push(s);return{lines:o,numLinesBefore:n.length,numLinesAfter:r.length,numLines:i}}var AU=globalThis.process.platform.startsWith("win"),Bu=Symbol("clack:cancel");function ee(t){return t===Bu}function ju(t,e){let n=t;n.isTTY&&n.setRawMode(e)}var Uu=(t)=>("columns"in t)&&typeof t.columns=="number"?t.columns:80,Dh=(t)=>("rows"in t)&&typeof t.rows=="number"?t.rows:20;function Jr(t,e,n,r=n,i=n,o){let s=Uu(t??iy);return qr(e,s-n.length,{hard:!0,trim:!1}).split(`
274
274
  `).map((a,c,u)=>{let f=o?o(a,c):a;return c===0?`${r}${f}`:c===u.length-1?`${i}${f}`:`${n}${f}`}).join(`
275
- `)}function zk(t,e){if("~standard"in t){let n=t["~standard"].validate(e);if(n instanceof Promise)throw TypeError("Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.");return n.issues?.at(0)?.message}return t(e)}class or{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(t,e=!0){let{input:n=tT,output:r=Wk,render:i,signal:o,...s}=t;this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=e,this._abortSignal=o,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(t,e){let n=this._subscribers.get(t)??[];n.push(e),this._subscribers.set(t,n)}on(t,e){this.setSubscriber(t,{cb:e})}once(t,e){this.setSubscriber(t,{cb:e,once:!0})}emit(t,...e){let n=this._subscribers.get(t)??[],r=[];for(let i of n)i.cb(...e),i.once&&r.push(()=>n.splice(n.indexOf(i),1));for(let i of r)i()}prompt(){return new Promise((t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(Lh);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=eT.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),Au(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Fe.cursor.show),this.output.off("resize",this.render),Au(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(Fe.cursor.show),this.output.off("resize",this.render),Au(this.input,!1),t(Lh)})})}_isActionKey(t,e){return t==="\t"}_shouldSubmit(t,e){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,e){this.userInput=t??"",this.emit("userInput",this.userInput),e&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(t,e){if(this._track&&e.name!=="return"&&(e.name&&this._isActionKey(t,e)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),e?.name&&(!this._track&&Yt.aliases.has(e.name)&&this.emit("cursor",Yt.aliases.get(e.name)),Yt.actions.has(e.name)&&this.emit("cursor",e.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,e),e?.name==="return"&&this._shouldSubmit(t,e)){if(this.opts.validate){let n=zk(this.opts.validate,this.value);n&&(this.error=n instanceof Error?n.message:n,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}Kk([t,e?.name,e?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
276
- `),Au(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Dr(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
277
- `).length-1;this.output.write(Fe.cursor.move(-999,t*-1))}render(){let t=Dr(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(Fe.cursor.hide);else{let e=iT(this._prevFrame,t),n=jh(this.output);if(this.restoreCursor(),e){let r=Math.max(0,e.numLinesAfter-n),i=Math.max(0,e.numLinesBefore-n),o=e.lines.find((s)=>s>=r);if(o===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(Fe.cursor.move(0,o-i)),this.output.write(Fe.erase.lines(1));let s=t.split(`
278
- `);this.output.write(s[o]),this._prevFrame=t,this.output.write(Fe.cursor.move(0,s.length-o-1));return}else if(e.lines.length>1){if(r<i)o=r;else{let a=o-i;a>0&&this.output.write(Fe.cursor.move(0,a))}this.output.write(Fe.erase.down());let s=t.split(`
275
+ `)}function sy(t,e){if("~standard"in t){let n=t["~standard"].validate(e);return n instanceof Promise?n.then((r)=>r.issues?.at(0)?.message):n.issues?.at(0)?.message}return t(e)}class ur{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";get accessible(){return LT(this.opts.accessible)}constructor(t,e=!0){let{input:n=NT,output:r=iy,render:i,signal:o,...s}=t;this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=e,this._abortSignal=o,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(t,e){let n=this._subscribers.get(t)??[];n.push(e),this._subscribers.set(t,n)}on(t,e){this.setSubscriber(t,{cb:e})}once(t,e){this.setSubscriber(t,{cb:e,once:!0})}emit(t,...e){let n=this._subscribers.get(t)??[],r=[];for(let i of n)i.cb(...e),i.once&&r.push(()=>n.splice(n.indexOf(i),1));for(let i of r)i()}prompt(){return new Promise((t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(Bu);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=TT.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),ju(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Le.cursor.show),this.output.off("resize",this.render),ju(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(Le.cursor.show),this.output.off("resize",this.render),ju(this.input,!1),t(Bu)})})}_isActionKey(t,e){return t==="\t"}_shouldSubmit(t,e){return!0}_setValue(t){this.value=t,this.emit("value",this.value)}_setUserInput(t,e){this.userInput=t??"",this.emit("userInput",this.userInput),e&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}async onKeypress(t,e){if(this.state!=="validating"){if(this._track&&e.name!=="return"&&(e.name&&this._isActionKey(t,e)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),e?.name&&(!this._track&&_t.aliases.has(e.name)&&this.emit("cursor",_t.aliases.get(e.name)),_t.actions.has(e.name)&&this.emit("cursor",e.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),this.emit("key",t,e),e?.name==="return"&&this._shouldSubmit(t,e)){if(this.opts.validate){let n=sy(this.opts.validate,this.value),r;n instanceof Promise?(this.state="validating",this.render(),r=await n):r=n,r&&(this.error=r instanceof Error?r.message:r,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}oy([t,e?.name,e?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
276
+ `),ju(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=qr(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
277
+ `).length-1;this.output.write(Le.cursor.move(-999,t*-1))}render(){let t=qr(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(Le.cursor.hide);else{let e=CT(this._prevFrame,t),n=Dh(this.output);if(this.restoreCursor(),e){let r=Math.max(0,e.numLinesAfter-n),i=Math.max(0,e.numLinesBefore-n),o=e.lines.find((s)=>s>=r);if(o===void 0){this._prevFrame=t;return}if(e.lines.length===1){this.output.write(Le.cursor.move(0,o-i)),this.output.write(Le.erase.lines(1));let s=t.split(`
278
+ `);this.output.write(s[o]),this._prevFrame=t,this.output.write(Le.cursor.move(0,s.length-o-1));return}else if(e.lines.length>1){if(r<i)o=r;else{let a=o-i;a>0&&this.output.write(Le.cursor.move(0,a))}this.output.write(Le.erase.down());let s=t.split(`
279
279
  `).slice(o);this.output.write(s.join(`
280
- `)),this._prevFrame=t;return}}this.output.write(Fe.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function oT(t,e){if(t===void 0||e.length===0)return 0;let n=e.findIndex((r)=>r.value===t);return n!==-1?n:0}function sT(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function aT(t,e){if(e)return t?e:e[0]}var cT=class extends or{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#n="";#t;#o;#a;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return Tu(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let e=this.userInput.slice(0,this.cursor),n=this.userInput.slice(this.cursor,this.cursor+1),r=this.userInput.slice(this.cursor+1);return`${e}${Tu("inverse",n)}${r}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#a=e.placeholder;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??sT;let r;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?r=e.initialValue:r=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(r=[this.options[0]?.value]),r)for(let i of r){let o=n.findIndex((s)=>s.value===i);o!==-1&&(this.toggleSelected(i),this.#e=o)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,o)=>this.#r(i,o)),this.on("userInput",(i)=>this.#i(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#r(e,n){let r=n.name==="up",i=n.name==="down",o=n.name==="return",s=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((f)=>!f.disabled&&(this.#t?this.#t(a,f):!0));if(n.name==="tab"&&s&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}r||i?(this.#e=ir(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):o?this.value=aT(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter((n)=>n!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#i(e){if(e!==this.#n){this.#n=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((o)=>this.#t?.(e,o)):this.filteredOptions=[...n];let r=oT(this.focusedValue,this.filteredOptions);this.#e=ir(r,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class _h extends or{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(e)=>{this.output.write(Fe.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var uT={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function Bk(t){return[...t].map((e)=>uT[e])}function lT(t){let e=new Intl.DateTimeFormat(t,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),n=[],r="/";for(let i of e)i.type==="literal"?r=i.value.trim()||i.value:(i.type==="year"||i.type==="month"||i.type==="day")&&n.push({type:i.type,len:i.type==="year"?4:2});return{segments:n,separator:r}}function Fh(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function Nu(t){return{year:Fh(t.year),month:Fh(t.month),day:Fh(t.day)}}function Ch(t,e){return new Date(t||2001,e||1,0).getDate()}function qk(t){let{year:e,month:n,day:r}=Nu(t);if(!e||e<0||e>9999||!n||n<1||n>12||!r||r<1)return;let i=new Date(Date.UTC(e,n-1,r));if(!(i.getUTCFullYear()!==e||i.getUTCMonth()!==n-1||i.getUTCDate()!==r))return{year:e,month:n,day:r}}function Uk(t){let e=qk(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function fT(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,o=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:o?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:o&&e.year===o.year?o.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:o&&e.year===o.year&&e.month===o.month?o.day:Ch(e.year,e.month)}}class Dk extends or{#e;#n;#t;#o;#a;#r={segmentIndex:0,positionInSegment:0};#i=!0;#s=null;inlineError="";get segmentCursor(){return{...this.#r}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#n}get formattedValue(){return this.#f(this.#t)}#f(t){return this.#e.map((e)=>t[e.type]).join(this.#n)}#c(){this._setUserInput(this.#f(this.#t)),this._setValue(Uk(this.#t)??void 0)}constructor(t){let e=t.format?{segments:Bk(t.format),separator:t.separator??"/"}:lT(t.locale),n=t.separator??e.separator,r=t.format?Bk(t.format):e.segments,i=t.initialValue??t.defaultValue,o=i?{year:String(i.getUTCFullYear()).padStart(4,"0"),month:String(i.getUTCMonth()+1).padStart(2,"0"),day:String(i.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},s=r.map((a)=>o[a.type]).join(n);super({...t,initialUserInput:s},!1),this.#e=r,this.#n=n,this.#t=o,this.#o=t.minDate,this.#a=t.maxDate,this.#c(),this.on("cursor",(a)=>this.#m(a)),this.on("key",(a,c)=>this.#p(a,c)),this.on("finalize",()=>this.#g(t))}#u(){let t=Math.max(0,Math.min(this.#r.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#r.positionInSegment=Math.max(0,Math.min(this.#r.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#s=null;let e=this.#u();e&&(this.#r.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#r.positionInSegment=0,this.#i=!0)}#d(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",o=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,s=fT(n.type,Nu(this.#t),this.#o,this.#a),a;i?a=t===1?s.min:s.max:a=Math.max(Math.min(s.max,o+t),s.min),this.#t={...this.#t,[n.type]:a.toString().padStart(n.len,"0")},this.#i=!0,this.#s=null,this.#c()}#m(t){if(t)switch(t){case"right":return this.#l(1);case"left":return this.#l(-1);case"up":return this.#d(1);case"down":return this.#d(-1)}}#p(t,e){if(e?.name==="backspace"||e?.sequence===""||e?.sequence==="\b"||t===""||t==="\b"){this.inlineError="";let n=this.#u();if(!n)return;if(!this.#t[n.segment.type].replace(/_/g,"")){this.#l(-1);return}this.#t[n.segment.type]="_".repeat(n.segment.len),this.#i=!0,this.#r.positionInSegment=0,this.#c();return}if(e?.name==="tab"){this.inlineError="";let n=this.#u();if(!n)return;let r=e.shift?-1:1,i=n.index+r;i>=0&&i<this.#e.length&&(this.#r.segmentIndex=i,this.#r.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){let n=this.#u();if(!n)return;let{segment:r}=n,i=!this.#t[r.type].replace(/_/g,"");if(this.#i&&this.#s!==null&&!i){let d=this.#s+t,h={...this.#t,[r.type]:d},m=this.#h(h,r);if(m){this.inlineError=m,this.#s=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=d,this.#s=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#r.segmentIndex=n.index+1,this.#r.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#r.positionInSegment=0),this.#i=!1,this.#s=null;let o=this.#t[r.type],s=o.indexOf("_"),a=s>=0?s:Math.min(this.#r.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=o.slice(0,a)+t+o.slice(a+1),u=!1;if(a===0&&o==="__"&&(r.type==="month"||r.type==="day")){let d=Number.parseInt(t,10);c=`0${t}`,u=d<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(o.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let d={...this.#t,[r.type]:c},h=this.#h(d,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let f=c.includes("_")?void 0:qk(this.#t);if(f){let{year:d,month:h}=f,m=Ch(d,h);this.#t={year:String(Math.max(0,Math.min(9999,d))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,f.day))).padStart(2,"0")}}this.#c();let l=c.indexOf("_");u?(this.#i=!0,this.#s=t):l>=0?this.#r.positionInSegment=l:s>=0&&n.index<this.#e.length-1?(this.#r.segmentIndex=n.index+1,this.#r.positionInSegment=0,this.#i=!0):this.#r.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=Nu(t);if(e.type==="month"&&(n<0||n>12))return Yt.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return Yt.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=Nu(this.#t);if(e&&n&&r){let i=Ch(e,n);this.#t={...this.#t,day:String(Math.min(r,i)).padStart(2,"0")}}this.value=Uk(this.#t)??t.defaultValue??void 0}}var dT=class extends or{options;cursor=0;#e;getGroupItems(e){return this.options.filter((n)=>n.group===e)}isGroupSelected(e){let n=this.getGroupItems(e),r=this.value;return r===void 0?!1:n.every((i)=>r.includes(i.value))}toggleValue(){let e=this.options[this.cursor];if(e!==void 0)if(this.value===void 0&&(this.value=[]),e.group===!0){let n=e.value,r=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((i)=>r.findIndex((o)=>o.value===i)===-1):this.value=[...this.value,...r.map((i)=>i.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(e.value);this.value=n?this.value.filter((r)=>r!==e.value):[...this.value,e.value]}}constructor(e){super(e,!1);let{options:n}=e;this.#e=e.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([r,i])=>[{value:r,group:!0,label:r},...i.map((o)=>({...o,group:r}))]),this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),this.#e?0:1),this.on("cursor",(r)=>{switch(r){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}},hT=new Set(["up","down","left","right"]);class Jk extends or{#e=!1;#n;focused="editor";get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${t}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return n===`
280
+ `)),this._prevFrame=t;return}}this.output.write(Le.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}}function jT(t,e){if(t===void 0||e.length===0)return 0;let n=e.findIndex((r)=>r.value===t);return n!==-1?n:0}function _T(t,e){return(e.label??String(e.value)).toLowerCase().includes(t.toLowerCase())}function GT(t,e){if(e)return t?e:e[0]}var BT=class extends ur{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#r="";#t;#s;#a;#n;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return Gu(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let e=this.userInput.slice(0,this.cursor),n=this.userInput.slice(this.cursor,this.cursor+1),r=this.userInput.slice(this.cursor+1);return`${e}${Gu("inverse",n)}${r}`}get options(){return typeof this.#s=="function"?this.#s():this.#s}constructor(e){super(e),this.#s=e.options,this.#a=e.placeholder,this.#n=e.completeOnTab===!0;let n=this.options;this.filteredOptions=[...n],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??_T;let r;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?r=e.initialValue:r=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(r=[this.options[0]?.value]),r)for(let i of r){let o=n.findIndex((s)=>s.value===i);o!==-1&&(this.toggleSelected(i),this.#e=o)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,o)=>this.#i(i,o)),this.on("userInput",(i)=>this.#o(i))}_isActionKey(e,n){return e==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&e!==void 0&&e!==""}#i(e,n){let r=n.name==="up",i=n.name==="down",o=n.name==="return",s=this.userInput===""||this.userInput==="\t",a=this.#a,c=this.options,u=a!==void 0&&a!==""&&c.some((f)=>!f.disabled&&(this.#t?this.#t(a,f):!0));if(n.name==="tab"&&s&&u){this.userInput==="\t"&&this._clearUserInput(),this._setUserInput(a,!0),this.isNavigating=!1;return}if(n.name==="tab"&&this.#n&&!this.multiple&&this.focusedValue!==void 0){let f=String(this.focusedValue);this._clearUserInput(),this._setUserInput(f,!0),this.isNavigating=!1;return}r||i?(this.#e=cr(this.#e,r?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):o?this.value=GT(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter((n)=>n!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#o(e){if(e!==this.#r){this.#r=e;let n=this.options;e&&this.#t?this.filteredOptions=n.filter((o)=>this.#t?.(e,o)):this.filteredOptions=[...n];let r=jT(this.focusedValue,this.filteredOptions);this.#e=cr(r,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}};class qh extends ur{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(e)=>{this.output.write(Le.cursor.move(0,-1)),this.value=e,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var UT={Y:{type:"year",len:4},M:{type:"month",len:2},D:{type:"day",len:2}};function ny(t){return[...t].map((e)=>UT[e])}function WT(t){let e=new Intl.DateTimeFormat(t,{year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(2000,0,15)),n=[],r="/";for(let i of e)i.type==="literal"?r=i.value.trim()||i.value:(i.type==="year"||i.type==="month"||i.type==="day")&&n.push({type:i.type,len:i.type==="year"?4:2});return{segments:n,separator:r}}function Kh(t){return Number.parseInt((t||"0").replace(/_/g,"0"),10)||0}function _u(t){return{year:Kh(t.year),month:Kh(t.month),day:Kh(t.day)}}function zh(t,e){return new Date(t||2001,e||1,0).getDate()}function ay(t){let{year:e,month:n,day:r}=_u(t);if(!e||e<0||e>9999||!n||n<1||n>12||!r||r<1)return;let i=new Date(Date.UTC(e,n-1,r));if(!(i.getUTCFullYear()!==e||i.getUTCMonth()!==n-1||i.getUTCDate()!==r))return{year:e,month:n,day:r}}function ry(t){let e=ay(t);return e?new Date(Date.UTC(e.year,e.month-1,e.day)):void 0}function KT(t,e,n,r){let i=n?{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate()}:null,o=r?{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate()}:null;return t==="year"?{min:i?.year??1,max:o?.year??9999}:t==="month"?{min:i&&e.year===i.year?i.month:1,max:o&&e.year===o.year?o.month:12}:{min:i&&e.year===i.year&&e.month===i.month?i.day:1,max:o&&e.year===o.year&&e.month===o.month?o.day:zh(e.year,e.month)}}class cy extends ur{#e;#r;#t;#s;#a;#n={segmentIndex:0,positionInSegment:0};#i=!0;#o=null;inlineError="";get segmentCursor(){return{...this.#n}}get segmentValues(){return{...this.#t}}get segments(){return this.#e}get separator(){return this.#r}get formattedValue(){return this.#f(this.#t)}#f(t){return this.#e.map((e)=>t[e.type]).join(this.#r)}#c(){this._setUserInput(this.#f(this.#t)),this._setValue(ry(this.#t)??void 0)}constructor(t){let e=t.format?{segments:ny(t.format),separator:t.separator??"/"}:WT(t.locale),n=t.separator??e.separator,r=t.format?ny(t.format):e.segments,i=t.initialValue??t.defaultValue,o=i?{year:String(i.getUTCFullYear()).padStart(4,"0"),month:String(i.getUTCMonth()+1).padStart(2,"0"),day:String(i.getUTCDate()).padStart(2,"0")}:{year:"____",month:"__",day:"__"},s=r.map((a)=>o[a.type]).join(n);super({...t,initialUserInput:s},!1),this.#e=r,this.#r=n,this.#t=o,this.#s=t.minDate,this.#a=t.maxDate,this.#c(),this.on("cursor",(a)=>this.#m(a)),this.on("key",(a,c)=>this.#p(a,c)),this.on("finalize",()=>this.#g(t))}#u(){let t=Math.max(0,Math.min(this.#n.segmentIndex,this.#e.length-1)),e=this.#e[t];if(e)return this.#n.positionInSegment=Math.max(0,Math.min(this.#n.positionInSegment,e.len-1)),{segment:e,index:t}}#l(t){this.inlineError="",this.#o=null;let e=this.#u();e&&(this.#n.segmentIndex=Math.max(0,Math.min(this.#e.length-1,e.index+t)),this.#n.positionInSegment=0,this.#i=!0)}#d(t){let e=this.#u();if(!e)return;let{segment:n}=e,r=this.#t[n.type],i=!r||r.replace(/_/g,"")==="",o=Number.parseInt((r||"0").replace(/_/g,"0"),10)||0,s=KT(n.type,_u(this.#t),this.#s,this.#a),a;i?a=t===1?s.min:s.max:a=Math.max(Math.min(s.max,o+t),s.min),this.#t={...this.#t,[n.type]:a.toString().padStart(n.len,"0")},this.#i=!0,this.#o=null,this.#c()}#m(t){if(t)switch(t){case"right":return this.#l(1);case"left":return this.#l(-1);case"up":return this.#d(1);case"down":return this.#d(-1)}}#p(t,e){if(e?.name==="backspace"||e?.sequence===""||e?.sequence==="\b"||t===""||t==="\b"){this.inlineError="";let n=this.#u();if(!n)return;if(!this.#t[n.segment.type].replace(/_/g,"")){this.#l(-1);return}this.#t[n.segment.type]="_".repeat(n.segment.len),this.#i=!0,this.#n.positionInSegment=0,this.#c();return}if(e?.name==="tab"){this.inlineError="";let n=this.#u();if(!n)return;let r=e.shift?-1:1,i=n.index+r;i>=0&&i<this.#e.length&&(this.#n.segmentIndex=i,this.#n.positionInSegment=0,this.#i=!0);return}if(t&&/^[0-9]$/.test(t)){let n=this.#u();if(!n)return;let{segment:r}=n,i=!this.#t[r.type].replace(/_/g,"");if(this.#i&&this.#o!==null&&!i){let d=this.#o+t,h={...this.#t,[r.type]:d},m=this.#h(h,r);if(m){this.inlineError=m,this.#o=null,this.#i=!1;return}this.inlineError="",this.#t[r.type]=d,this.#o=null,this.#i=!1,this.#c(),n.index<this.#e.length-1&&(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0);return}this.#i&&!i&&(this.#t[r.type]="_".repeat(r.len),this.#n.positionInSegment=0),this.#i=!1,this.#o=null;let o=this.#t[r.type],s=o.indexOf("_"),a=s>=0?s:Math.min(this.#n.positionInSegment,r.len-1);if(a<0||a>=r.len)return;let c=o.slice(0,a)+t+o.slice(a+1),u=!1;if(a===0&&o==="__"&&(r.type==="month"||r.type==="day")){let d=Number.parseInt(t,10);c=`0${t}`,u=d<=(r.type==="month"?1:2)}if(r.type==="year"&&(c=(o.replace(/_/g,"")+t).padStart(r.len,"_")),!c.includes("_")){let d={...this.#t,[r.type]:c},h=this.#h(d,r);if(h){this.inlineError=h;return}}this.inlineError="",this.#t[r.type]=c;let f=c.includes("_")?void 0:ay(this.#t);if(f){let{year:d,month:h}=f,m=zh(d,h);this.#t={year:String(Math.max(0,Math.min(9999,d))).padStart(4,"0"),month:String(Math.max(1,Math.min(12,h))).padStart(2,"0"),day:String(Math.max(1,Math.min(m,f.day))).padStart(2,"0")}}this.#c();let l=c.indexOf("_");u?(this.#i=!0,this.#o=t):l>=0?this.#n.positionInSegment=l:s>=0&&n.index<this.#e.length-1?(this.#n.segmentIndex=n.index+1,this.#n.positionInSegment=0,this.#i=!0):this.#n.positionInSegment=Math.min(a+1,r.len-1)}}#h(t,e){let{month:n,day:r}=_u(t);if(e.type==="month"&&(n<0||n>12))return _t.date.messages.invalidMonth;if(e.type==="day"&&(r<0||r>31))return _t.date.messages.invalidDay(31,"any month")}#g(t){let{year:e,month:n,day:r}=_u(this.#t);if(e&&n&&r){let i=zh(e,n);this.#t={...this.#t,day:String(Math.min(r,i)).padStart(2,"0")}}this.value=ry(this.#t)??t.defaultValue??void 0}}var zT=class extends ur{options;cursor=0;#e;getGroupItems(e){return this.options.filter((n)=>n.group===e)}isGroupSelected(e){let n=this.getGroupItems(e),r=this.value;return r===void 0?!1:n.every((i)=>r.includes(i.value))}toggleValue(){let e=this.options[this.cursor];if(e!==void 0)if(this.value===void 0&&(this.value=[]),e.group===!0){let n=e.value,r=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((i)=>r.findIndex((o)=>o.value===i)===-1):this.value=[...this.value,...r.map((i)=>i.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(e.value);this.value=n?this.value.filter((r)=>r!==e.value):[...this.value,e.value]}}constructor(e){super(e,!1);let{options:n}=e;this.#e=e.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([r,i])=>[{value:r,group:!0,label:r},...i.map((o)=>({...o,group:r}))]),this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),this.#e?0:1),this.on("cursor",(r)=>{switch(r){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let i=this.options[this.cursor]?.group===!0;!this.#e&&i&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}},DT=new Set(["up","down","left","right"]);class uy extends ur{#e=!1;#r;focused="editor";get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${t}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return n===`
281
281
  `?`${e}█
282
- ${r}`:`${e}${Tu("inverse",n)}${r}`}get cursor(){return this._cursor}#t(t){if(this.userInput.length===0){this._setUserInput(t);return}this._setUserInput(this.userInput.slice(0,this.cursor)+t+this.userInput.slice(this.cursor))}#o(t){let e=this.value??"";switch(t){case"up":this._cursor=Pu(this._cursor,0,-1,e);return;case"down":this._cursor=Pu(this._cursor,0,1,e);return;case"left":this._cursor=Pu(this._cursor,-1,0,e);return;case"right":this._cursor=Pu(this._cursor,1,0,e);return}}_shouldSubmit(t,e){if(this.#n)return this.focused==="submit"?!0:(this.#t(`
282
+ ${r}`:`${e}${Gu("inverse",n)}${r}`}get cursor(){return this._cursor}#t(t){if(this.userInput.length===0){this._setUserInput(t);return}this._setUserInput(this.userInput.slice(0,this.cursor)+t+this.userInput.slice(this.cursor))}#s(t){let e=this.value??"";switch(t){case"up":this._cursor=Cu(this._cursor,0,-1,e);return;case"down":this._cursor=Cu(this._cursor,0,1,e);return;case"left":this._cursor=Cu(this._cursor,-1,0,e);return;case"right":this._cursor=Cu(this._cursor,1,0,e);return}}_shouldSubmit(t,e){if(this.#r)return this.focused==="submit"?!0:(this.#t(`
283
283
  `),this._cursor++,!1);let n=this.#e;return this.#e=!0,n&&this.cursor===this.userInput.length?(this.userInput[this.cursor-1]===`
284
284
  `&&(this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--),!0):(this.#t(`
285
- `),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#n=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&hT.has(r.name)){this.#e=!1,this.#o(r.name);return}if(n==="\t"&&this.#n){this.focused=this.focused==="editor"?"submit":"editor";return}if(r?.name!=="return"){if(this.#e=!1,r?.name==="backspace"&&this.cursor>0){this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--;return}if(r?.name==="delete"&&this.cursor<this.userInput.length){this._setUserInput(this.userInput.slice(0,this.cursor)+this.userInput.slice(this.cursor+1));return}n&&(this.#n&&this.focused==="submit"&&(this.focused="editor"),this.#t(n??""),this._cursor++)}}),this.on("userInput",(n)=>{this._setValue(n)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}class Gh extends or{options;cursor=0;get _value(){return this.options[this.cursor]?.value}get _enabledOptions(){return this.options.filter((t)=>t.disabled!==!0)}toggleAll(){let t=this._enabledOptions,e=this.value!==void 0&&this.value.length===t.length;this.value=e?[]:t.map((n)=>n.value)}toggleInvert(){let t=this.value;if(!t)return;let e=this._enabledOptions.filter((n)=>!t.includes(n.value));this.value=e.map((n)=>n.value)}toggleValue(){this.value===void 0&&(this.value=[]);let t=this.value.includes(this._value);this.value=t?this.value.filter((e)=>e!==this._value):[...this.value,this._value]}constructor(t){super(t,!1),this.options=t.options,this.value=[...t.initialValues??[]];let e=Math.max(this.options.findIndex(({value:n})=>n===t.cursorAt),0);this.cursor=this.options[e]?.disabled?ir(e,1,this.options):e,this.on("key",(n,r)=>{r.name==="a"&&this.toggleAll(),r.name==="i"&&this.toggleInvert()}),this.on("cursor",(n)=>{switch(n){case"left":case"up":this.cursor=ir(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=ir(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var Yk=class extends or{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let e=this._selectedValue;this.value=e===void 0?void 0:e.value}constructor(e){super(e,!1),this.options=e.options;let n=this.options.findIndex(({value:i})=>i===e.initialValue),r=n===-1?0:n;this.cursor=this.options[r]?.disabled?ir(r,1,this.options):r,this.changeValue(),this.on("cursor",(i)=>{switch(i){case"left":case"up":this.cursor=ir(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=ir(this.cursor,1,this.options);break}this.changeValue()})}};class Bh extends or{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return`${e}${Tu("inverse",n)}${r}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",(e)=>{this._setValue(e)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}import{styleText as O,stripVTControlCharacters as VB}from"node:util";import Je from"node:process";var ty=Df(Hh(),1);function mT(){if(Je.platform!=="win32")return Je.env.TERM!=="linux";return Boolean(Je.env.CI)||Boolean(Je.env.WT_SESSION)||Boolean(Je.env.TERMINUS_SUBLIME)||Je.env.ConEmuTask==="{cmd::Cmder}"||Je.env.TERM_PROGRAM==="Terminus-Sublime"||Je.env.TERM_PROGRAM==="vscode"||Je.env.TERM==="xterm-256color"||Je.env.TERM==="alacritty"||Je.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var pT=mT();var ht=(t,e)=>pT?t:e,gT=ht("◆","*"),bT=ht("■","x"),wT=ht("▲","x"),Kh=ht("◇","o"),$T=ht("┌","T"),rt=ht("│","|"),sr=ht("└","—"),eU=ht("┐","T"),nU=ht("┘","—"),Uh=ht("●",">"),Lu=ht("○"," "),kT=ht("◻","[•]"),Zk=ht("◼","[+]"),Vk=ht("◻","[ ]"),rU=ht("▪","•"),Xk=ht("─","-"),yT=ht("╮","+"),vT=ht("├","+"),ET=ht("╯","+"),ST=ht("╰","+"),iU=ht("╭","+"),MT=ht("●","•"),xT=ht("◆","*"),OT=ht("▲","!"),IT=ht("■","x"),Cu=(t)=>{switch(t){case"initial":case"active":return O("cyan",gT);case"cancel":return O("red",bT);case"error":return O("yellow",wT);case"submit":return O("green",Kh)}},ey=(t)=>{switch(t){case"initial":case"active":return O("cyan",rt);case"cancel":return O("red",rt);case"error":return O("yellow",rt);case"submit":return O("green",rt)}};function ny(t,e){let n=[`${e?`${O("cyan",rt)} `:""}${t.join(" • ")}`];return e&&n.push(O("cyan",sr)),n}var Qk=(t,e,n,r,i,o=!1)=>{let s=e,a=0;if(o)for(let c=r-1;c>=n;c--){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}else for(let c=n;c<r;c++){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}return{lineCount:s,removals:a}},Wh=({cursor:t,options:e,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:o=0,rowPadding:s=4})=>{let a=Hu(r)-o,c=jh(r),u=O("dim","..."),f=Math.max(c-s,0),l=Math.max(Math.min(i,f),5),d=0;t>=l-3&&(d=Math.max(Math.min(t-l+3,e.length-l),0));let h=l<e.length&&d>0,m=l<e.length&&d+l<e.length,p=Math.min(d+l,e.length),b=[],$=0;h&&$++,m&&$++;let k=d+(h?1:0),v=p-(m?1:0);for(let x=k;x<v;x++){let M=e[x],R=M?n(M,x===t):"",F=Dr(R,a,{hard:!0,trim:!1}).split(`
286
- `);b.push(F),$+=F.length}if($>f){let x=0,M=0,R=$,F=t-k,N=f,j=()=>Qk(b,R,0,F,N),z=()=>Qk(b,R,F+1,b.length,N,!0);h?({lineCount:R,removals:x}=j(),R>N&&(m||(N-=1),{lineCount:R,removals:M}=z())):(m||(N-=1),{lineCount:R,removals:M}=z(),R>N&&(N-=1,{lineCount:R,removals:x}=j())),x>0&&(h=!0,b.splice(0,x)),M>0&&(m=!0,b.splice(b.length-M,M))}let E=[];h&&E.push(u);for(let x of b)for(let M of x)E.push(M);return m&&E.push(u),E};var Le=(t)=>{let e=t.active??"Yes",n=t.inactive??"No";return new _h({active:e,inactive:n,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){let r=t.withGuide??Yt.withGuide,i=`${Cu(this.state)} `,o=r?`${O("gray",rt)} `:"",s=Jr(t.output,t.message,o,i),a=`${r?`${O("gray",rt)}
285
+ `),this._cursor++,!1)}constructor(t){let e=t.initialUserInput??t.initialValue;super({...t,initialUserInput:e},!1),e!==void 0&&(this._cursor=e.length),this.#r=t.showSubmit??!1,this.on("key",(n,r)=>{if(r?.name&&DT.has(r.name)){this.#e=!1,this.#s(r.name);return}if(n==="\t"&&this.#r){this.focused=this.focused==="editor"?"submit":"editor";return}if(r?.name!=="return"){if(this.#e=!1,r?.name==="backspace"&&this.cursor>0){this._setUserInput(this.userInput.slice(0,this.cursor-1)+this.userInput.slice(this.cursor)),this._cursor--;return}if(r?.name==="delete"&&this.cursor<this.userInput.length){this._setUserInput(this.userInput.slice(0,this.cursor)+this.userInput.slice(this.cursor+1));return}n&&(this.#r&&this.focused==="submit"&&(this.focused="editor"),this.#t(n??""),this._cursor++)}}),this.on("userInput",(n)=>{this._setValue(n)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}class Jh extends ur{options;cursor=0;get _value(){return this.options[this.cursor]?.value}get _enabledOptions(){return this.options.filter((t)=>t.disabled!==!0)}toggleAll(){let t=this._enabledOptions,e=this.value!==void 0&&this.value.length===t.length;this.value=e?[]:t.map((n)=>n.value)}toggleInvert(){let t=this.value;if(!t)return;let e=this._enabledOptions.filter((n)=>!t.includes(n.value));this.value=e.map((n)=>n.value)}toggleValue(){this.value===void 0&&(this.value=[]);let t=this.value.includes(this._value);this.value=t?this.value.filter((e)=>e!==this._value):[...this.value,this._value]}constructor(t){super(t,!1),this.options=t.options,this.value=[...t.initialValues??[]];let e=Math.max(this.options.findIndex(({value:n})=>n===t.cursorAt),0);this.cursor=this.options[e]?.disabled?cr(e,1,this.options):e,this.on("key",(n,r)=>{r.name==="a"&&this.toggleAll(),r.name==="i"&&this.toggleInvert()}),this.on("cursor",(n)=>{switch(n){case"left":case"up":this.cursor=cr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=cr(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var ly=class extends ur{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){let e=this._selectedValue;this.value=e===void 0?void 0:e.value}constructor(e){super(e,!1),this.options=e.options;let n=this.options.findIndex(({value:i})=>i===e.initialValue),r=n===-1?0:n;this.cursor=this.options[r]?.disabled?cr(r,1,this.options):r,this.changeValue(),this.on("cursor",(i)=>{switch(i){case"left":case"up":this.cursor=cr(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=cr(this.cursor,1,this.options);break}this.changeValue()})}};class Yh extends ur{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}█`;let e=t.slice(0,this.cursor),n=t.slice(this.cursor,this.cursor+1),r=t.slice(this.cursor+1);return`${e}${Gu("inverse",n)}${r}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",(e)=>{this._setValue(e)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}import{styleText as O,stripVTControlCharacters as _U}from"node:util";import Ye from"node:process";var gy=nd(Wh(),1);function qT(){if(Ye.platform!=="win32")return Ye.env.TERM!=="linux";return Boolean(Ye.env.CI)||Boolean(Ye.env.WT_SESSION)||Boolean(Ye.env.TERMINUS_SUBLIME)||Ye.env.ConEmuTask==="{cmd::Cmder}"||Ye.env.TERM_PROGRAM==="Terminus-Sublime"||Ye.env.TERM_PROGRAM==="vscode"||Ye.env.TERM==="xterm-256color"||Ye.env.TERM==="alacritty"||Ye.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var JT=qT();var ht=(t,e)=>JT?t:e,fy=ht("◆","*"),YT=ht("■","x"),VT=ht("▲","x"),Xh=ht("◇","o"),ZT=ht("┌","T"),et=ht("│","|"),Rn=ht("└","—"),WU=ht("┐","T"),KU=ht("┘","—"),Vh=ht("●",">"),Ku=ht("○"," "),XT=ht("◻","[•]"),dy=ht("◼","[+]"),hy=ht("◻","[ ]"),zU=ht("▪","•"),my=ht("─","-"),QT=ht("╮","+"),tH=ht("├","+"),eH=ht("╯","+"),nH=ht("╰","+"),DU=ht("╭","+"),rH=ht("●","•"),iH=ht("◆","*"),oH=ht("▲","!"),sH=ht("■","x"),zu=(t)=>{switch(t){case"initial":case"active":return O("cyan",fy);case"cancel":return O("red",YT);case"error":return O("yellow",VT);case"submit":return O("green",Xh);case"validating":return O("dim",fy)}},by=(t)=>{switch(t){case"initial":case"active":return O("cyan",et);case"cancel":return O("red",et);case"error":return O("yellow",et);case"submit":return O("green",et)}};function wy(t,e){let n=[`${e?`${O("cyan",et)} `:""}${t.join(" • ")}`];return e&&n.push(O("cyan",Rn)),n}var py=(t,e,n,r,i,o=!1)=>{let s=e,a=0;if(o)for(let c=r-1;c>=n;c--){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}else for(let c=n;c<r;c++){let u=t[c];if(u&&(s-=u.length),a++,s<=i)break}return{lineCount:s,removals:a}},Zh=({cursor:t,options:e,style:n,output:r=process.stdout,maxItems:i=Number.POSITIVE_INFINITY,columnPadding:o=0,rowPadding:s=4})=>{let a=Uu(r)-o,c=Dh(r),u=O("dim","..."),f=Math.max(c-s,0),l=Math.max(Math.min(i,f),5),d=0;t>=l-3&&(d=Math.max(Math.min(t-l+3,e.length-l),0));let h=l<e.length&&d>0,m=l<e.length&&d+l<e.length,p=Math.min(d+l,e.length),b=[],$=0;h&&$++,m&&$++;let k=d+(h?1:0),v=p-(m?1:0);for(let x=k;x<v;x++){let M=e[x],I=M?n(M,x===t):"",L=qr(I,a,{hard:!0,trim:!1}).split(`
286
+ `);b.push(L),$+=L.length}if($>f){let x=0,M=0,I=$,L=t-k,N=f,_=()=>py(b,I,0,L,N),D=()=>py(b,I,L+1,b.length,N,!0);h?({lineCount:I,removals:x}=_(),I>N&&(m||(N-=1),{lineCount:I,removals:M}=D())):(m||(N-=1),{lineCount:I,removals:M}=D(),I>N&&(N-=1,{lineCount:I,removals:x}=_())),x>0&&(h=!0,b.splice(0,x)),M>0&&(m=!0,b.splice(b.length-M,M))}let S=[];h&&S.push(u);for(let x of b)for(let M of x)S.push(M);return m&&S.push(u),S};var Ce=(t)=>{let e=t.active??"Yes",n=t.inactive??"No";return new qh({active:e,inactive:n,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue??!0,render(){let r=t.withGuide??_t.withGuide,i=`${zu(this.state)} `,o=r?`${O("gray",et)} `:"",s=Jr(t.output,t.message,o,i),a=`${r?`${O("gray",et)}
287
287
  `:""}${s}
288
- `,c=this.value?e:n;switch(this.state){case"submit":{let u=r?`${O("gray",rt)} `:"";return`${a}${u}${O("dim",c)}`}case"cancel":{let u=r?`${O("gray",rt)} `:"";return`${a}${u}${O(["strikethrough","dim"],c)}${r?`
289
- ${O("gray",rt)}`:""}`}default:{let u=r?`${O("cyan",rt)} `:"",f=r?O("cyan",sr):"";return`${a}${u}${this.value?`${O("green",Uh)} ${e}`:`${O("dim",Lu)} ${O("dim",e)}`}${t.vertical?r?`
290
- ${O("cyan",rt)} `:`
291
- `:` ${O("dim","/")} `}${this.value?`${O("dim",Lu)} ${O("dim",n)}`:`${O("green",Uh)} ${n}`}
288
+ `,c=this.value?e:n;switch(this.state){case"submit":{let u=r?`${O("gray",et)} `:"";return`${a}${u}${O("dim",c)}`}case"cancel":{let u=r?`${O("gray",et)} `:"";return`${a}${u}${O(["strikethrough","dim"],c)}${r?`
289
+ ${O("gray",et)}`:""}`}default:{let u=r?`${O("cyan",et)} `:"",f=r?O("cyan",Rn):"";return`${a}${u}${this.value?`${O("green",Vh)} ${e}`:`${O("dim",Ku)} ${O("dim",e)}`}${t.vertical?r?`
290
+ ${O("cyan",et)} `:`
291
+ `:` ${O("dim","/")} `}${this.value?`${O("dim",Ku)} ${O("dim",n)}`:`${O("green",Vh)} ${n}`}
292
292
  ${f}
293
- `}}}}).prompt()};var RT=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Space:")} select`,`${O("dim","Enter:")} confirm`],xa=(t,e)=>t.split(`
293
+ `}}}}).prompt()};var aH=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Space:")} select`,`${O("dim","Enter:")} confirm`],Ha=(t,e)=>t.split(`
294
294
  `).map((n)=>e(n)).join(`
295
- `),ry=(t)=>{let e=(i,o)=>{let s=i.label??String(i.value);return o==="disabled"?`${O("gray",Vk)} ${xa(s,(a)=>O(["strikethrough","gray"],a))}${i.hint?` ${O("dim",`(${i.hint??"disabled"})`)}`:""}`:o==="active"?`${O("cyan",kT)} ${s}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="selected"?`${O("green",Zk)} ${xa(s,(a)=>O("dim",a))}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="cancelled"?`${xa(s,(a)=>O(["strikethrough","dim"],a))}`:o==="active-selected"?`${O("green",Zk)} ${s}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="submitted"?`${xa(s,(a)=>O("dim",a))}`:`${O("dim",Vk)} ${xa(s,(a)=>O("dim",a))}`},n=t.required??!0,r=t.showInstructions??!0;return new Gh({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValues:t.initialValues,required:n,cursorAt:t.cursorAt,validate(i){if(n&&(i===void 0||i.length===0))return`Please select at least one option.
296
- ${O("reset",O("dim",`Press ${O(["gray","bgWhite","inverse"]," space ")} to select, ${O("gray",O("bgWhite",O("inverse"," enter ")))} to submit`))}`},render(){let i=t.withGuide??Yt.withGuide,o=Jr(t.output,t.message,i?`${ey(this.state)} `:"",`${Cu(this.state)} `),s=`${i?`${O("gray",rt)}
295
+ `),$y=(t)=>{let e=(i,o)=>{let s=i.label??String(i.value);return o==="disabled"?`${O("gray",hy)} ${Ha(s,(a)=>O(["strikethrough","gray"],a))}${i.hint?` ${O("dim",`(${i.hint??"disabled"})`)}`:""}`:o==="active"?`${O("cyan",XT)} ${s}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="selected"?`${O("green",dy)} ${Ha(s,(a)=>O("dim",a))}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="cancelled"?`${Ha(s,(a)=>O(["strikethrough","dim"],a))}`:o==="active-selected"?`${O("green",dy)} ${s}${i.hint?` ${O("dim",`(${i.hint})`)}`:""}`:o==="submitted"?`${Ha(s,(a)=>O("dim",a))}`:`${O("dim",hy)} ${Ha(s,(a)=>O("dim",a))}`},n=t.required??!0,r=t.showInstructions??!0;return new Jh({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValues:t.initialValues,required:n,cursorAt:t.cursorAt,validate(i){if(n&&(i===void 0||i.length===0))return`Please select at least one option.
296
+ ${O("reset",O("dim",`Press ${O(["gray","bgWhite","inverse"]," space ")} to select, ${O("gray",O("bgWhite",O("inverse"," enter ")))} to submit`))}`},render(){let i=t.withGuide??_t.withGuide,o=Jr(t.output,t.message,i?`${by(this.state)} `:"",`${zu(this.state)} `),s=`${i?`${O("gray",et)}
297
297
  `:""}${o}
298
- `,a=this.value??[],c=(u,f)=>{if(u.disabled)return e(u,"disabled");let l=a.includes(u.value);return f&&l?e(u,"active-selected"):l?e(u,"selected"):e(u,f?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"submitted")).join(O("dim",", "))||O("dim","none"),f=Jr(t.output,u,i?`${O("gray",rt)} `:"");return`${s}${f}`}case"cancel":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"cancelled")).join(O("dim",", "));if(u.trim()==="")return`${s}${O("gray",rt)}`;let f=Jr(t.output,u,i?`${O("gray",rt)} `:"");return`${s}${f}${i?`
299
- ${O("gray",rt)}`:""}`}case"error":{let u=i?`${O("yellow",rt)} `:"",f=this.error.split(`
300
- `).map((h,m)=>m===0?`${i?`${O("yellow",sr)} `:""}${O("yellow",h)}`:` ${h}`).join(`
298
+ `,a=this.value??[],c=(u,f)=>{if(u.disabled)return e(u,"disabled");let l=a.includes(u.value);return f&&l?e(u,"active-selected"):l?e(u,"selected"):e(u,f?"active":"inactive")};switch(this.state){case"submit":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"submitted")).join(O("dim",", "))||O("dim","none"),f=Jr(t.output,u,i?`${O("gray",et)} `:"");return`${s}${f}`}case"cancel":{let u=this.options.filter(({value:l})=>a.includes(l)).map((l)=>e(l,"cancelled")).join(O("dim",", "));if(u.trim()==="")return`${s}${O("gray",et)}`;let f=Jr(t.output,u,i?`${O("gray",et)} `:"");return`${s}${f}${i?`
299
+ ${O("gray",et)}`:""}`}case"error":{let u=i?`${O("yellow",et)} `:"",f=this.error.split(`
300
+ `).map((h,m)=>m===0?`${i?`${O("yellow",Rn)} `:""}${O("yellow",h)}`:` ${h}`).join(`
301
301
  `),l=s.split(`
302
302
  `).length,d=f.split(`
303
- `).length+1;return`${s}${u}${Wh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:l+d,style:c}).join(`
303
+ `).length+1;return`${s}${u}${Zh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:l+d,style:c}).join(`
304
304
  ${u}`)}
305
305
  ${f}
306
- `}default:{let u=i?`${O("cyan",rt)} `:"",f=s.split(`
307
- `).length,l=r?ny(RT,i):i?[O("cyan",sr)]:[],d=l.join(`
308
- `),h=l.length+1;return`${s}${u}${Wh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:f+h,style:c}).join(`
306
+ `}default:{let u=i?`${O("cyan",et)} `:"",f=s.split(`
307
+ `).length,l=r?wy(aH,i):i?[O("cyan",Rn)]:[],d=l.join(`
308
+ `),h=l.length+1;return`${s}${u}${Zh({output:t.output,options:this.options,cursor:this.cursor,maxItems:t.maxItems,columnPadding:u.length,rowPadding:f+h,style:c}).join(`
309
309
  ${u}`)}
310
310
  ${d}
311
- `}}}}).prompt()};var Yr={message:(t=[],{symbol:e=O("gray",rt),secondarySymbol:n=O("gray",rt),output:r=process.stdout,spacing:i=1,withGuide:o}={})=>{let s=[],a=o??Yt.withGuide,c=a?n:"",u=a?`${e} `:"",f=a?`${n} `:"";for(let d=0;d<i;d++)s.push(c);let l=Array.isArray(t)?t:t.split(`
311
+ `}}}}).prompt()};var Yr={message:(t=[],{symbol:e=O("gray",et),secondarySymbol:n=O("gray",et),output:r=process.stdout,spacing:i=1,withGuide:o}={})=>{let s=[],a=o??_t.withGuide,c=a?n:"",u=a?`${e} `:"",f=a?`${n} `:"";for(let d=0;d<i;d++)s.push(c);let l=Array.isArray(t)?t:t.split(`
312
312
  `);if(l.length>0){let[d,...h]=l;d.length>0?s.push(`${u}${d}`):s.push(a?e:"");for(let m of h)m.length>0?s.push(`${f}${m}`):s.push(a?n:"")}r.write(`${s.join(`
313
313
  `)}
314
- `)},info:(t,e)=>{Yr.message(t,{...e,symbol:O("blue",MT)})},success:(t,e)=>{Yr.message(t,{...e,symbol:O("green",xT)})},step:(t,e)=>{Yr.message(t,{...e,symbol:O("green",Kh)})},warn:(t,e)=>{Yr.message(t,{...e,symbol:O("yellow",OT)})},warning:(t,e)=>{Yr.warn(t,e)},error:(t,e)=>{Yr.message(t,{...e,symbol:O("red",IT)})}},Zr=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Yt.withGuide?`${O("gray",sr)} `:"";n.write(`${r}${O("red",t)}
314
+ `)},info:(t,e)=>{Yr.message(t,{...e,symbol:O("blue",rH)})},success:(t,e)=>{Yr.message(t,{...e,symbol:O("green",iH)})},step:(t,e)=>{Yr.message(t,{...e,symbol:O("green",Xh)})},warn:(t,e)=>{Yr.message(t,{...e,symbol:O("yellow",oH)})},warning:(t,e)=>{Yr.warn(t,e)},error:(t,e)=>{Yr.message(t,{...e,symbol:O("red",sH)})}},Vr=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??_t.withGuide?`${O("gray",Rn)} `:"";n.write(`${r}${O("red",t)}
315
315
 
316
- `)},ju=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Yt.withGuide?`${O("gray",$T)} `:"";n.write(`${r}${t}
317
- `)},Oa=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??Yt.withGuide?`${O("gray",rt)}
318
- ${O("gray",sr)} `:"";n.write(`${r}${t}
316
+ `)},Du=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??_t.withGuide?`${O("gray",ZT)} `:"";n.write(`${r}${t}
317
+ `)},Fa=(t="",e)=>{let n=e?.output??process.stdout,r=e?.withGuide??_t.withGuide?`${O("gray",et)}
318
+ ${O("gray",Rn)} `:"";n.write(`${r}${t}
319
319
 
320
- `)};var PT=(t)=>t,AT=(t,e,n)=>{let r={hard:!0,trim:!1},i=Dr(t,e,r).split(`
321
- `),o=i.reduce((c,u)=>Math.max(_(u),c),0),s=i.map(n).reduce((c,u)=>Math.max(_(u),c),0),a=e-(s-o);return Dr(t,a,r)},Rn=(t="",e="",n)=>{let r=n?.output??Je.stdout,i=n?.withGuide??Yt.withGuide,o=n?.format??PT,s=["",...AT(t,Hu(r)-6,o).split(`
322
- `).map(o),""],a=_(e),c=Math.max(s.reduce((d,h)=>{let m=_(h);return m>d?m:d},0),a)+2,u=s.map((d)=>`${O("gray",rt)} ${d}${" ".repeat(c-_(d))}${O("gray",rt)}`).join(`
323
- `),f=i?`${O("gray",rt)}
324
- `:"",l=i?vT:ST;r.write(`${f}${O("green",Kh)} ${O("reset",e)} ${O("gray",Xk.repeat(Math.max(c-a-1,1))+yT)}
320
+ `)};var cH=(t)=>t,uH=(t,e,n)=>{let r={hard:!0,trim:!1},i=qr(t,e,r).split(`
321
+ `),o=i.reduce((c,u)=>Math.max(G(u),c),0),s=i.map(n).reduce((c,u)=>Math.max(G(u),c),0),a=e-(s-o);return qr(t,a,r)},An=(t="",e="",n)=>{let r=n?.output??Ye.stdout,i=n?.withGuide??_t.withGuide,o=n?.format??cH,s=["",...uH(t,Uu(r)-6,o).split(`
322
+ `).map(o),""],a=G(e),c=Math.max(s.reduce((d,h)=>{let m=G(h);return m>d?m:d},0),a)+2,u=s.map((d)=>`${O("gray",et)} ${d}${" ".repeat(c-G(d))}${O("gray",et)}`).join(`
323
+ `),f=i?`${O("gray",et)}
324
+ `:"",l=i?tH:nH;r.write(`${f}${O("green",Xh)} ${O("reset",e)} ${O("gray",my.repeat(Math.max(c-a-1,1))+QT)}
325
325
  ${u}
326
- ${O("gray",l+Xk.repeat(c+2)+ET)}
327
- `)};var oU={light:ht("─","-"),heavy:ht("━","="),block:ht("█","#")};var NT=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Enter:")} confirm`],Fu=(t,e)=>t.includes(`
326
+ ${O("gray",l+my.repeat(c+2)+eH)}
327
+ `)};var qU={light:ht("─","-"),heavy:ht("━","="),block:ht("█","#")};var lH=[`${O("dim","↑/↓")} to navigate`,`${O("dim","Enter:")} confirm`],Wu=(t,e)=>t.includes(`
328
328
  `)?t.split(`
329
329
  `).map((n)=>e(n)).join(`
330
- `):e(t),zh=(t)=>{let e=(r,i)=>{if(r===void 0)return"";let o=r.label??String(r.value);switch(i){case"disabled":return`${O("gray",Lu)} ${Fu(o,(s)=>O("gray",s))}${r.hint?` ${O("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${Fu(o,(s)=>O("dim",s))}`;case"active":return`${O("green",Uh)} ${o}${r.hint?` ${O("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${Fu(o,(s)=>O(["strikethrough","dim"],s))}`;default:return`${O("dim",Lu)} ${Fu(o,(s)=>O("dim",s))}`}},n=t.showInstructions??!0;return new Yk({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){let r=t.withGuide??Yt.withGuide,i=`${Cu(this.state)} `,o=`${ey(this.state)} `,s=Jr(t.output,t.message,o,i),a=`${r?`${O("gray",rt)}
330
+ `):e(t),Qh=(t)=>{let e=(r,i)=>{if(r===void 0)return"";let o=r.label??String(r.value);switch(i){case"disabled":return`${O("gray",Ku)} ${Wu(o,(s)=>O("gray",s))}${r.hint?` ${O("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${Wu(o,(s)=>O("dim",s))}`;case"active":return`${O("green",Vh)} ${o}${r.hint?` ${O("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${Wu(o,(s)=>O(["strikethrough","dim"],s))}`;default:return`${O("dim",Ku)} ${Wu(o,(s)=>O("dim",s))}`}},n=t.showInstructions??!0;return new ly({options:t.options,signal:t.signal,input:t.input,output:t.output,initialValue:t.initialValue,render(){let r=t.withGuide??_t.withGuide,i=`${zu(this.state)} `,o=`${by(this.state)} `,s=Jr(t.output,t.message,o,i),a=`${r?`${O("gray",et)}
331
331
  `:""}${s}
332
- `;switch(this.state){case"submit":{let c=r?`${O("gray",rt)} `:"",u=Jr(t.output,e(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${O("gray",rt)} `:"",u=Jr(t.output,e(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
333
- ${O("gray",rt)}`:""}`}default:{let c=r?`${O("cyan",rt)} `:"",u=a.split(`
334
- `).length,f=n?ny(NT,r):r?[O("cyan",sr)]:[],l=f.join(`
335
- `),d=f.length+1;return`${a}${c}${Wh({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:u+d,style:(h,m)=>e(h,h.disabled?"disabled":m?"active":"inactive")}).join(`
332
+ `;switch(this.state){case"submit":{let c=r?`${O("gray",et)} `:"",u=Jr(t.output,e(this.options[this.cursor],"selected"),c);return`${a}${u}`}case"cancel":{let c=r?`${O("gray",et)} `:"",u=Jr(t.output,e(this.options[this.cursor],"cancelled"),c);return`${a}${u}${r?`
333
+ ${O("gray",et)}`:""}`}default:{let c=r?`${O("cyan",et)} `:"",u=a.split(`
334
+ `).length,f=n?wy(lH,r):r?[O("cyan",Rn)]:[],l=f.join(`
335
+ `),d=f.length+1;return`${a}${c}${Zh({output:t.output,cursor:this.cursor,options:this.options,maxItems:t.maxItems,columnPadding:c.length,rowPadding:u+d,style:(h,m)=>e(h,h.disabled?"disabled":m?"active":"inactive")}).join(`
336
336
  ${c}`)}
337
337
  ${l}
338
- `}}}}).prompt()};var sU=`${O("gray",rt)} `;var qh=(t)=>new Bh({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,output:t.output,signal:t.signal,input:t.input,render(){let e=t?.withGuide??Yt.withGuide,n=`${`${e?`${O("gray",rt)}
339
- `:""}${Cu(this.state)} `}${t.message}
340
- `,r=t.placeholder&&t.placeholder.length>0?O("inverse",t.placeholder[0])+O("dim",t.placeholder.slice(1)):O(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,o=this.value??"";switch(this.state){case"error":{let s=this.error?` ${O("yellow",this.error)}`:"",a=e?`${O("yellow",rt)} `:"",c=e?O("yellow",sr):"";return`${n.trim()}
338
+ `}}}}).prompt()};var JU=`${O("gray",et)} `;var tm=(t)=>new Yh({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,output:t.output,signal:t.signal,input:t.input,render(){let e=t?.withGuide??_t.withGuide,n=`${`${e?`${O("gray",et)}
339
+ `:""}${zu(this.state)} `}${t.message}
340
+ `,r=t.placeholder&&t.placeholder.length>0?O("inverse",t.placeholder[0])+O("dim",t.placeholder.slice(1)):O(["inverse","hidden"],"_"),i=this.userInput?this.userInputWithCursor:r,o=this.value??"";switch(this.state){case"validating":{let s=e?`${O("cyan",et)} `:"",a=e?O("cyan",Rn):"",c=O("dim",i),u=O("dim","Validating...");return`${n}${s}${c}
341
+ ${a} ${u}
342
+ `}case"error":{let s=this.error?` ${O("yellow",this.error)}`:"",a=e?`${O("yellow",et)} `:"",c=e?O("yellow",Rn):"";return`${n.trim()}
341
343
  ${a}${i}
342
344
  ${c}${s}
343
- `}case"submit":{let s=o?` ${O("dim",o)}`:"",a=e?O("gray",rt):"";return`${n}${a}${s}`}case"cancel":{let s=o?` ${O(["strikethrough","dim"],o)}`:"",a=e?O("gray",rt):"";return`${n}${a}${s}${o.trim()?`
344
- ${a}`:""}`}default:{let s=e?`${O("cyan",rt)} `:"",a=e?O("cyan",sr):"";return`${n}${s}${i}
345
+ `}case"submit":{let s=o?`${e?" ":""}${O("dim",o)}`:"",a=e?O("gray",et):"";return`${n}${a}${s}`}case"cancel":{let s=o?` ${O(["strikethrough","dim"],o)}`:"",a=e?O("gray",et):"";return`${n}${a}${s}${o.trim()?`
346
+ ${a}`:""}`}default:{let s=e?`${O("cyan",et)} `:"",a=e?O("cyan",Rn):"";return`${n}${s}${i}
345
347
  ${a}
346
- `}}}}).prompt();import{existsSync as ll,readFileSync as T1,rmSync as qm}from"node:fs";import{homedir as dn}from"node:os";import{join as Es}from"node:path";var iy=44,Zt=[{name:"Shell",lines:["«B4»~/code/demo«d» on «5»main«2» +2«3» ~1","«2»❯ «»git status -sb","«w»## «2»main«»...«1»origin/main«3» [ahead 1]","«1» M«» src/main.rs","«1»??«» notes.md","","«w»«2»❯ «»ls","«w»«B4»docs«» «B4»src«» «B4»tests«» Cargo.toml README.md","«w»","«2»❯ «»cargo test","«2» ✓«» parses config","«n»«1» ✗«» renders frame","«w»«1» ✗«» renders frame«d» expected «2»3«d», received «1»2","","«2»❯ «»echo «s»selected text«» «c» "]},{name:"Code",lines:["«d» 12 │ «5»import«» { readFile } «5»from «2»'node:fs/promises'","«d» 13 │","«d» 14 │ «8»// Read a palette and check its sixteen colors","«d» 15 │ «5»export async function «4»load«»(path: «6»string«») {","«d» 16 │ «5»const«» text = «5»await «4»readFile«»(path, «2»'utf8'«»)","«b» 17 «d»│ «5»const«» colors = «s»parse(text)«».colors ?? {}","«d» 18 │ «5»if«» (colors.ansi.length !== «3»16«») {","«d» 19 │ «5»throw new «6»Error«»(«2»'needs 16 colors'«»)","«d» 20 │ }","«d» 21 │ «5»return«» { ...colors, ratio: «c»4«3».5«» }","«d» 22 │ }"]},{name:"Diff",lines:["«2»❯ «»git diff --stat","«» src/theme.ts | 3 «2»++«1»-","«2»❯ «»git diff","«b»diff --git a/src/theme.ts b/src/theme.ts","«6»@@ -16,3 +16,4 @@«» export async function load(","«» const text = await readFile(path, 'utf8')","«1»- const colors = parse(text).colors","«2»+ const colors = parse(text).colors ?? {}","«2»+ const ratio = contrast(colors)","«2»❯ «»git log --oneline --graph -4","«3»* 3f2a1c9 («B6»HEAD -> «B2»main«3»)«» Check contrast on load","«3»* 9b04e7d«» Merge branch ansi","«1»|«5»\\","«1»| «5»* «3»51cd0aa«» Add sixteen ANSI colors","«1»|«5»/","«3»* 07be2f1 («B1»origin/main«3», «B3»tag: v1.0«3»)«» Read palette files"]},{name:"Logs",lines:["«2»❯ «»npm run dev","«B2» VITE v6.2.0«d» ready in «b»412«d» ms","«2» ➜ «b»Local«»: «6»http://localhost:5173/","«d»10:42:07 «2»INFO «» GET /api/palettes «2»200«d» 12 ms","«d»10:42:08 «2»INFO «» GET /api/themes/kita «2»200«d» 8 ms","«d»10:42:09 «3»WARN «» slow query: palettes «3»812 ms","«d»10:42:10 «4»DEBUG«» cache hit themes/kita","«d»10:42:11 «B1»ERROR«» POST /api/share «1»500«d» 41 ms","«1» Error«»: read ECONNRESET","«d» at «»TCP.onStreamRead «d»(«6»node:net:216:20«d»)","«d» at «»share «d»(«6»src/share.ts:48:11«d»)","«d»10:42:12 «2»INFO «» retry 1/3 in 200 ms"]},{name:"Monitor",lines:["«6» 1 «b»[«2»|||||||||||||«1»||«» 42.1%«b»]«6» Tasks: «b»128«», 412 thr; «B2»3«» running","«6» 2 «b»[«2»||||||«4»||«» 21.4%«b»]«6» Load average: «b»1.42 «»1.18 0.97","«6» 3 «b»[«2»||||||||||||||«1»|||||«» 71.0%«b»]«6» Uptime: «b»3 days, 04:12:55","«6» 4 «b»[«2»||«» 7.9%«b»]","«6» Mem«b»[«2»||||||||«4»||«3»||«» 6.21G/16.0G«b»]","«6» Swp«b»[«1»|«» 0.10G/2.00G«b»]","","«K2» PID USER CPU% MEM% TIME+ Command ","«s» 4127 kec 38.2 2.1 3:12.44 node dev.js ","«» 2210 kec 12.0 4.8 1:02.10 «b»ghostty","«» 3301 kec 4.4 1.2 0:05.61 «b»zsh","«» 812 «1»root«» 3.1 0.3 0:44.02 «d»kernel_task","«» 167 «1»root«» 0.9 0.1 0:12.80 «d»WindowServer"]}];function Ki(t){let e=Zt.length;return Zt[(t%e+e)%e]}function cs(t,e){let n=t.split("«"),r=n[0]?[[n[0],""]]:[];for(let i of n.slice(1)){let o=i.indexOf("»"),s=i.slice(0,o),a=i.slice(o+1);if(s==="w"||s==="n"){if(s==="w"!==e>=44)return}if(a)r.push([a,s==="w"||s==="n"?"":s])}return r}import{createHash as BT}from"node:crypto";import{existsSync as Bu,readFileSync as tm,rmSync as cy}from"node:fs";import{homedir as uy}from"node:os";import{join as zi}from"node:path";function Vr(t){return[`# ${t.name} — ${t.group}${t.native?` (${t.native})`:""}`,`# ANSI: ${t.ansiSource}`]}function ar(t,e){return[`[${t}]`,`Color=${st(e).join(",")}`,""]}function Dh(t,e,n=["Wallpaper="]){let r=(i)=>At(i,t.background,0.5);return[...ar("Background",t.background),...ar("BackgroundFaint",t.background),...ar("BackgroundIntense",t.background),...t.ansi.slice(0,8).flatMap((i,o)=>[...ar(`Color${o}`,i),...ar(`Color${o}Faint`,r(i)),...ar(`Color${o}Intense`,t.ansi[o+8])]),...ar("Foreground",t.foreground),...ar("ForegroundFaint",r(t.foreground)),...ar("ForegroundIntense",t.foreground),"[General]","Blur=false","ColorRandomization=false",`Description=${e}`,"Opacity=1",...n,""]}var oy={left:"0",top:"0",center:"0.5",right:"1",bottom:"1"};function TT(t){if(!t||t.opacity<=0)return["Wallpaper="];let[e="center",n="center"]=t.position.split("-");return[`Wallpaper=${t.image}`,`FillStyle=${t.cover?"Crop":"Adapt"}`,`Anchor=${oy[n]??"0.5"},${oy[e]??"0.5"}`,`WallpaperOpacity=${t.opacity}`]}function Jh(t,e){return[...Vr(t),"",...Dh(t,`ttheme · ${t.name}`,TT(e))].join(`
347
- `)}var Yh={id:"konsole",limits:"draws no OSC 4, so a tab repaints by switching color scheme",emit(t){return[{path:`konsole/${C(t.name)}.colorscheme`,content:Jh(t)}]}};import{openSync as HT,writeSync as FT}from"node:fs";import{ReadStream as LT}from"node:tty";var cn=["11","10","12","17",...Array.from({length:16},(t,e)=>`4;${e}`)];function Ft(t=process.env){return Boolean(t.NO_COLOR)||t.TERM==="dumb"}function CT(t,e){return`\x1B]${cn[t]};${e}\x1B\\`}function cr(t,e){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi].map((n,r)=>e&&!e.includes(r)?"":CT(r,n)).join("")}function jT(t){return`\x1B]${t.startsWith("4;")?`104;${t.slice(2)}`:`1${t}`}\x1B\\`}function _T(t){let e=new Map;for(let n of t.split("\x1B")){let r=n.match(/^\](\d+(?:;\d+)?);(rgba?:[0-9a-fA-F/]+)/),[,i,o]=r??[];if(i&&o)e.set(i,o)}return e}function sy(t){return`#${t.slice(t.indexOf(":")+1).split("/").slice(0,3).map((n)=>n.slice(0,2).padStart(2,"0")).join("")}`}function ay(t){return cn.map((e)=>{let n=t.get(e);return n?sy(n):void 0})}function _u(t,e=[...t.keys()],n=!1){return e.map((r)=>{let i=t.get(r);return i?`\x1B]${r};${n?sy(i):i}\x1B\\`:jT(r)}).join("")}function Gu(t,e){return`\x1B]50;ColorScheme=${t};UseCustomCursorColor=true;customCursorColor=${e}\x07`}function Zh(t=cn,e="\x1B[5n"){return`${t.map((n)=>`\x1B]${n};?\x1B\\`).join("")}${e}`}function GT(t){return t.includes("\x1B[0n")}async function Vh(t=cn){let e,n;try{e=HT("/dev/tty","r+"),n=new LT(e),n.setRawMode(!0)}catch{return new Map}try{FT(e,Zh(t));let r="";return await new Promise((i)=>{let o=setTimeout(i,120);n.on("data",(s)=>{if(r+=s.toString(),GT(r))clearTimeout(o),i()})}),_T(r)}finally{n.setRawMode(!1),n.destroy()}}function em(t){if(t.NVIM)return"nvim";if(t.VIM_TERMINAL)return"vim";if(t.INSIDE_EMACS)return"emacs";return t.TERM_PROGRAM==="vscode"?"vscode":void 0}function Vt(t){if(em(t))return"editor";if(t.TERM_PROGRAM==="WarpTerminal")return"warp";if(t.GHOSTTY_RESOURCES_DIR||t.TERM_PROGRAM==="ghostty")return"ghostty";if(t.KITTY_WINDOW_ID)return"kitty";if(t.WEZTERM_PANE)return"wezterm";if(t.ALACRITTY_WINDOW_ID)return"alacritty";if(t.KONSOLE_VERSION)return"konsole";if(t.ITERM_SESSION_ID||t.TERM_PROGRAM==="iTerm.app")return"iterm2";if(t.TERM_PROGRAM==="Apple_Terminal")return"terminal-app";if(t.WT_SESSION&&!t.TERM_PROGRAM)return"windows-terminal";if(t.TERM?.startsWith("foot"))return"foot";return"unknown"}var $e={ghostty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},kitty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},iterm2:{links:!0,pictures:!0,bands:!0,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1]},wezterm:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!1,paints:!0,wipes:!0,views:!0},alacritty:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"windows-terminal":{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},konsole:{links:!1,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1],hex:!0,schemes:!0},foot:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"terminal-app":{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},warp:{links:!0,pictures:!0,bands:!0,files:!1,moves:!1,layers:!1,paints:!1},editor:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!1},unknown:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0}};function Xh(t,e,n){let r="";for(let i of t.split(`
348
- `)){let o=i.trim();if(o.startsWith("[")&&o.endsWith("]"))r=o.slice(1,-1);else if(r===e&&o.startsWith(`${n}=`))return o.slice(n.length+1)}return}function UT(t){let e=t.XDG_CONFIG_HOME??zi(uy(),".config"),n=zi(e,"konsolerc"),r=Bu(n)?Xh(tm(n,"utf8"),"Desktop Entry","DefaultProfile"):void 0;for(let i=0;i<8&&r&&r!=="FALLBACK/";i++){let o=r.endsWith(".profile")?r:`${r}.profile`,s=hy(t).map((u)=>zi(u,o)).find((u)=>Bu(u));if(!s)return!1;let a=tm(s,"utf8"),c=Xh(a,"Interaction Options","AllowEscapedLinks");if(c!==void 0)return c==="true";r=Xh(a,"General","Parent")}return!1}function ly(t){let e=Vt(t);return e==="konsole"?UT(t):$e[e].links}function us(t,e){let n=Vt(t),r=$e[n];return r.pictures&&!t.TMUX&&(!r.views||e.includes(n))}function Uu(t){return $e[Vt(t)].bands}function Wu(t){return $e[Vt(t)].files}function ls(t){return $e[Vt(t)].layers}function fy(t){return $e[Vt(t)].moves}function dy(t){return $e[Vt(t)].wipes===!0}function qi(t){return $e[Vt(t)].views===!0}function Di(t){return`\x1B]1337;SetUserVar=ttheme_view=${Buffer.from(t).toString("base64")}\x07`}var Ji="\x1B[H\x1B[K\x1B[2H\x1B[J\x1B[H",nm=120,Qh=4,WT=40;function KT(t){let e=t.TTHEME_ITERM_SHOWN;return t.TTHEME_ITERM_SWITCH==="1"&&t.TTHEME_ITERM_DYED==="0"&&e?`ttheme · ${e}`:void 0}function zT(t,e){let n=$e.iterm2.repaint??[],r=cn.map((c,u)=>u).filter((c)=>!n.includes(c)),i=new Set(n),o=KT(t),s=[],a=()=>{for(let c of s)clearTimeout(c);s=[]};return{slots:n,paint(c){a();for(let u=0;u<r.length;u+=Qh){let f=r.slice(u,u+Qh),l=setTimeout(()=>{for(let d of f)i.add(d);e(cr(c,f))},nm+u/Qh*WT);l.unref?.(),s.push(l)}return cr(c,n)},wear:(c)=>cr(c),saved:()=>Vh(),restore(c){a();let u=cn.filter((f,l)=>i.has(l));return o?`\x1B[?2026h${_u(new Map,u)}\x1B]1337;SetProfile=${o}\x07\x1B[?2026l`:_u(c,u)},stop:a}}var qT=3,DT=/^(Wallpaper|FillStyle|Anchor|WallpaperOpacity|WallpaperFlipType)=/;function hy(t){return[t.XDG_DATA_HOME??zi(uy(),".local","share"),...(t.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((e)=>zi(e,"konsole"))}function JT(t,e){let n=/(?:^|;)ColorScheme=([^;]+)/.exec(e)?.[1],r=n&&t.map((c)=>zi(c,`${n}.colorscheme`)).find((c)=>Bu(c));if(!r)return["Wallpaper="];let i=tm(r,"utf8").split(`
349
- `),o=i.findIndex((c)=>c.trim()==="[General]"),s=i.findIndex((c,u)=>u>o&&c.trimStart().startsWith("[")),a=o<0?[]:i.slice(o+1,s<0?void 0:s).filter((c)=>DT.test(c));return a.length>0?a:["Wallpaper="]}function YT(t,e){let n=hy(t),r=n[0],i=JT(n,e),o=[],s=(c,u,f)=>{let l=Dh(u,`ttheme · ${c}`,i).join(`
350
- `),d=`${C("view")}.${BT("sha1").update(l).digest("hex").slice(0,10)}`,h=zi(r,`${d}.colorscheme`);if(!Bu(h))L(h,l);if(!o.includes(h))o.push(h);for(let m of o.splice(0,Math.max(0,o.length-qT)))cy(m,{force:!0});return Gu(d,f)},a=()=>{for(let c of o.splice(0))cy(c,{force:!0})};return{slots:[],paint:(c)=>s(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?Gu(C(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function my(t,e,n=(r)=>{process.stdout.write(r)}){let r=Vt(t),i=$e[r];if(!e||Ft(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return zT(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return YT(t,t.TTHEME_KONSOLE_LOOK);let o=i.repaint??cn.map((a,c)=>c),s=cn.filter((a,c)=>o.includes(c));return{slots:o,paint:(a)=>cr(a,o),wear:(a,c)=>!i.schemes?cr(a):c.includes(r)?Gu(C(a.name),a.cursor):void 0,saved:()=>Vh(s),restore:(a)=>_u(a,s,i.hex===!0)}}var ee=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var ZT=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"catalog",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],ds=[{name:"use",args:["<palette>"],about:"Paint this tab — a unique prefix works: ttheme use ho",section:"tab",shell:!0},{name:"default",args:["<palette>"],about:"Make a palette the one new tabs open with",section:"startup"},{name:"on",args:[],about:"Wear the default palette in new tabs again",section:"startup"},{name:"off",args:[],about:"Take the palette and picture off every tab — the terminal's own colors until `ttheme on`",section:"startup"},{name:"pin",args:["[dir|ssh:<host>]"],about:"Pin a palette to a directory or an ssh host — the pin covers everything below it, or its whole repository; cd or ssh in repaints, leaving restores",section:"tab",shell:!0},{name:"unpin",args:["[dir|ssh:<host>]"],about:"Drop a pin — this directory's, every one below it, the one above that paints it, or an ssh host's",section:"tab",shell:!0},{name:"pins",args:[],about:"Map every pin as a file tree — the pinned directories in their palettes' colors, every ssh host, and the pin that covers this one",section:"tab",shell:!0},{name:"config",args:[],about:"Edit settings in $EDITOR — they apply in new tabs",section:"startup",shell:!0},{name:"browse",args:[],about:"Pick palettes and markets in a live picker — shift+←/→ moves between Catalog, Installed, Markets and Errors",section:"catalog",hidden:!0},{name:"list",args:["[query]"],about:"Show the catalog, marking what is installed",section:"catalog",flags:{json:{type:"boolean",about:"Print the matches as JSON — name, group, catalog, installed"}}},{name:"add",args:["<palette...>"],about:"Install palettes — from the catalog, or from a share link: ttheme add https://ttheme.vercel.app/p/tt2:…",section:"catalog",flags:{market:{type:"string",value:"<source>",about:"Add this market first — a repository, a folder or official — and take bare palette names from it"}}},{name:"remove",args:["<palette...>"],about:"Uninstall palettes",section:"catalog"},{name:"update",args:["[market...]"],about:"Update ttheme and refresh your markets — official palettes come with ttheme; an installed palette from another market keeps its colors until Browse's Installed tab takes its update",section:"catalog"},{name:"market",args:["[action]","[source]"],about:"The markets you added — add, remove and search them; init makes one of your own",actions:[["(none)","List the markets you added — their palettes, auto-update and last update"],["add <source>","Add a market — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own"],["remove <market>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["search [query]","Repositories on GitHub with the ttheme-market topic"],["init [name]","Make a market of your own — <you>@<name>, in ~/.config/ttheme/market/<name> or a folder you give"],["check [dir]","Check a market's folder before you push it — ttheme-market.toml, every palette, the renames and the gate; nothing is written"]],section:"catalog"},{name:"new",args:["<name>"],about:"Make a palette of your own in the palette editor — <you>@<market>/<name>, from blank, installed at once",section:"own",flags:{from:{type:"string",value:"<palette>",about:"Start from this palette's colors instead of blank"},in:{type:"string",value:"<market>",about:"The local market to put it in — when you have more than one"}}},{name:"edit",args:["[palette]"],about:"Change a palette in the palette editor — your own in its file, any other as your tone over its market's colors, which R and s in the editor put back; with none named, asks to edit the one this tab wears",section:"own"},{name:"check",args:["[palette]"],about:"Measure a palette against the contrast gate — where it misses, suggest colors that pass; with none named, asks to check the one this tab wears",section:"own",flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["[palette]"],about:"Print a share link and its QR code — the page shows the palette, and ttheme add <link> installs it anywhere, pictures included; with none named, asks to share the one this tab wears — or shares it without asking when the link goes to a pipe",section:"own",flags:{tone:{type:"string",value:"<tuned|original>",choices:["tuned","original"],about:"Share it as you tuned it, or as it was — asked when you tuned it and omit this"}}},{name:"init",args:[],about:"Install the shell layer and wire your terminals",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Accept every default without prompting"}}},{name:"uninstall",args:[],about:"Remove ttheme — its block comes out of every terminal config and what it wrote is deleted",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Remove without asking"}}},{name:"wire",args:["<terminal>"],about:"Wire one more terminal into this setup, after showing what it edits — the shell offers it in a terminal that paints only through the config init would have wired",section:"setup",hidden:!0},{name:"info",args:[],about:"Print what a bug report needs — version, OS, shell, terminal and the settings you changed",section:"support"},{name:"build",args:[],about:"Emit dist/ for every terminal, plus the zsh palette table — from a checkout",section:"setup",hidden:!0,flags:{only:{type:"string",multiple:!0,value:"<terminal>",choices:ee,about:"Rebuild just this terminal — repeat it for more"}}},{name:"find",args:["<palette>"],about:"Pick a booru background for a palette — preview opens this on tab",section:"setup",hidden:!0},{name:"image",args:["<palette>","<action>","[picture]"],about:"Show one of a palette's saved backgrounds, remove one, draw one in its palette's tone or its own colors (or get the other ready before it is asked for), or pass on tuning — preview calls this",section:"setup",hidden:!0},{name:"flatten",args:["<source>","<out>","<background>","<opacity>","[canvas]","[place]","[into]"],about:"Lay a picture on a background color at an opacity, placed on a canvas when given one, for Warp, which fades the window instead, and Terminal.app, which takes it written into the file its profile points at and renamed to the out — preview calls this",section:"setup",hidden:!0},{name:"bake",args:["<source>","<out>","<canvas>","<place>"],about:"Place a picture on a transparent canvas the way sips bakes preview's tuning — preview in Warp calls this",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>","[width]"],about:"Print a palette's colors for preview's panel at its width, open them in the palette editor, or reset them to its market's — preview calls this",section:"setup",hidden:!0},{name:"sync",args:[],about:"Write every wired terminal's config again from what is installed and config.zsh — ttheme config and preview call this when TTHEME_TAB_PALETTE changed",section:"setup",hidden:!0},{name:"redraw",args:[],about:"Draw the background pictures again after TTHEME_BG_BLUR changed — ttheme config and preview call this",section:"setup",hidden:!0},{name:"latest",args:[],about:"Ask npm for the newest ttheme — any command starts this in the background once a day",section:"setup",hidden:!0},{name:"names",args:[],about:"Download aninames' character names when its release changed and index them — any command starts this in the background once a day",section:"setup",hidden:!0}];function VT(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function fs(t,e=XT){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function py(t){return t.split(" — ")[0]}function by(t){return Object.entries(t.flags??{}).map(([e,{short:n,value:r,about:i}])=>[`${n?`-${n}, `:""}--${e}${r?` ${r}`:""}`,i])}function wy(t,e){let n=e?[...t.actions??[],...by(t)]:[];return[[[t.name,...t.args].join(" "),py(t.about)],...n.map(([r,i])=>[` ${r}`,py(i)])]}var $y=[`ttheme ${ft.version}`,ft.description,"Usage: ttheme <command> [options] [args]"],ky=[["ttheme help","Every command"],["ttheme help all","Every command with its options, and examples"],["ttheme help <command>","One command in full"]],yy=[["-h, --help","Show help — after a command, that command's"],["-v, --version","Print the version"]],XT=Math.max(...[...ky,...yy,...ds.filter((t)=>!t.hidden).flatMap((t)=>wy(t,!0))].map(([t])=>t.length)),gy=[["npx @kecan0406/ttheme init -y","Wire the terminals found here, no prompts"],["ttheme add homura madoka","Install two palettes"],["ttheme use homura","Paint this tab with one"],["ttheme list --json madoka","The madoka series as JSON"],["ttheme market add alice/ttheme-pastel","alice's market, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme add dusk --market alice/ttheme-pastel","The same in one step"],["ttheme new rei --from rei","Your own rei, <you>@<market>/rei, to edit and share"]];function vy(){return[...$y,"","Use --help to list every command, or init to set ttheme up"].join(`
351
- `)}function rm(t){let e=by(t);return[`Usage: ttheme ${VT(t)}`,"",t.about,...t.actions?["","Actions:",...fs(t.actions)]:[],...e.length>0?["","Options:",...fs(e)]:[]].join(`
352
- `)}function Ra(t,e=!1){let n=ds.filter((i)=>!i.hidden&&!(e&&i.section==="setup")),r=ZT.filter(({section:i})=>n.some((o)=>o.section===i));return[...$y,"ttheme alone opens Preview and Browse as tabs — tab and shift+tab move between them","","Getting help:",...fs(ky),"","Global options:",...fs(yy),...r.flatMap(({section:i,title:o})=>["",`${o}:`,...fs(n.filter((s)=>s.section===i).flatMap((s)=>wy(s,t)))]),...t?["","Examples:",...fs(gy,Math.max(...gy.map(([i])=>i.length)))]:[],"","https://ttheme.vercel.app"].join(`
353
- `)}import{readFileSync as QT}from"node:fs";import{join as tH}from"node:path";var im="# ttheme begin",om="# ttheme end",hs=/# ttheme begin\n[\s\S]*?# ttheme end\n?/,ke="Managed by ttheme — npx @kecan0406/ttheme@latest uninstall takes it out",Pn="Generated by ttheme — rewritten on every add, remove and default; do not edit.";function Xr(t,e,n){return t.startsWith(`${e}/`)?`${n}${t.slice(e.length)}`:void 0}function Qr(t,e){let n=`${im}
348
+ `}}}}).prompt();import{existsSync as wl,readFileSync as Z1,rmSync as tp}from"node:fs";import{homedir as hn}from"node:os";import{join as xs}from"node:path";var ky=44,Vt=[{name:"Shell",lines:["«B4»~/code/demo«d» on «5»main«2» +2«3» ~1","«2»❯ «»git status -sb","«w»## «2»main«»...«1»origin/main«3» [ahead 1]","«1» M«» src/main.rs","«1»??«» notes.md","","«w»«2»❯ «»ls","«w»«B4»docs«» «B4»src«» «B4»tests«» Cargo.toml README.md","«w»","«2»❯ «»cargo test","«2» ✓«» parses config","«n»«1» ✗«» renders frame","«w»«1» ✗«» renders frame«d» expected «2»3«d», received «1»2","","«2»❯ «»echo «s»selected text«» «c» "]},{name:"Code",lines:["«d» 12 │ «5»import«» { readFile } «5»from «2»'node:fs/promises'","«d» 13 │","«d» 14 │ «8»// Read a palette and check its sixteen colors","«d» 15 │ «5»export async function «4»load«»(path: «6»string«») {","«d» 16 │ «5»const«» text = «5»await «4»readFile«»(path, «2»'utf8'«»)","«b» 17 «d»│ «5»const«» colors = «s»parse(text)«».colors ?? {}","«d» 18 │ «5»if«» (colors.ansi.length !== «3»16«») {","«d» 19 │ «5»throw new «6»Error«»(«2»'needs 16 colors'«»)","«d» 20 │ }","«d» 21 │ «5»return«» { ...colors, ratio: «c»4«3».5«» }","«d» 22 │ }"]},{name:"Diff",lines:["«2»❯ «»git diff --stat","«» src/theme.ts | 3 «2»++«1»-","«2»❯ «»git diff","«b»diff --git a/src/theme.ts b/src/theme.ts","«6»@@ -16,3 +16,4 @@«» export async function load(","«» const text = await readFile(path, 'utf8')","«1»- const colors = parse(text).colors","«2»+ const colors = parse(text).colors ?? {}","«2»+ const ratio = contrast(colors)","«2»❯ «»git log --oneline --graph -4","«3»* 3f2a1c9 («B6»HEAD -> «B2»main«3»)«» Check contrast on load","«3»* 9b04e7d«» Merge branch ansi","«1»|«5»\\","«1»| «5»* «3»51cd0aa«» Add sixteen ANSI colors","«1»|«5»/","«3»* 07be2f1 («B1»origin/main«3», «B3»tag: v1.0«3»)«» Read palette files"]},{name:"Logs",lines:["«2»❯ «»npm run dev","«B2» VITE v6.2.0«d» ready in «b»412«d» ms","«2» ➜ «b»Local«»: «6»http://localhost:5173/","«d»10:42:07 «2»INFO «» GET /api/palettes «2»200«d» 12 ms","«d»10:42:08 «2»INFO «» GET /api/themes/kita «2»200«d» 8 ms","«d»10:42:09 «3»WARN «» slow query: palettes «3»812 ms","«d»10:42:10 «4»DEBUG«» cache hit themes/kita","«d»10:42:11 «B1»ERROR«» POST /api/share «1»500«d» 41 ms","«1» Error«»: read ECONNRESET","«d» at «»TCP.onStreamRead «d»(«6»node:net:216:20«d»)","«d» at «»share «d»(«6»src/share.ts:48:11«d»)","«d»10:42:12 «2»INFO «» retry 1/3 in 200 ms"]},{name:"Monitor",lines:["«6» 1 «b»[«2»|||||||||||||«1»||«» 42.1%«b»]«6» Tasks: «b»128«», 412 thr; «B2»3«» running","«6» 2 «b»[«2»||||||«4»||«» 21.4%«b»]«6» Load average: «b»1.42 «»1.18 0.97","«6» 3 «b»[«2»||||||||||||||«1»|||||«» 71.0%«b»]«6» Uptime: «b»3 days, 04:12:55","«6» 4 «b»[«2»||«» 7.9%«b»]","«6» Mem«b»[«2»||||||||«4»||«3»||«» 6.21G/16.0G«b»]","«6» Swp«b»[«1»|«» 0.10G/2.00G«b»]","","«K2» PID USER CPU% MEM% TIME+ Command ","«s» 4127 kec 38.2 2.1 3:12.44 node dev.js ","«» 2210 kec 12.0 4.8 1:02.10 «b»ghostty","«» 3301 kec 4.4 1.2 0:05.61 «b»zsh","«» 812 «1»root«» 3.1 0.3 0:44.02 «d»kernel_task","«» 167 «1»root«» 0.9 0.1 0:12.80 «d»WindowServer"]}];function Ji(t){let e=Vt.length;return Vt[(t%e+e)%e]}function ds(t,e){let n=t.split("«"),r=n[0]?[[n[0],""]]:[];for(let i of n.slice(1)){let o=i.indexOf("»"),s=i.slice(0,o),a=i.slice(o+1);if(s==="w"||s==="n"){if(s==="w"!==e>=44)return}if(a)r.push([a,s==="w"||s==="n"?"":s])}return r}import{createHash as $H}from"node:crypto";import{existsSync as Yu,readFileSync as cm,rmSync as Ey}from"node:fs";import{homedir as My}from"node:os";import{join as Yi}from"node:path";function Zr(t){return[`# ${t.name} — ${t.group}${t.native?` (${t.native})`:""}`,`# ANSI: ${t.ansiSource}`]}function lr(t,e){return[`[${t}]`,`Color=${ot(e).join(",")}`,""]}function em(t,e,n=["Wallpaper="]){let r=(i)=>At(i,t.background,0.5);return[...lr("Background",t.background),...lr("BackgroundFaint",t.background),...lr("BackgroundIntense",t.background),...t.ansi.slice(0,8).flatMap((i,o)=>[...lr(`Color${o}`,i),...lr(`Color${o}Faint`,r(i)),...lr(`Color${o}Intense`,t.ansi[o+8])]),...lr("Foreground",t.foreground),...lr("ForegroundFaint",r(t.foreground)),...lr("ForegroundIntense",t.foreground),"[General]","Blur=false","ColorRandomization=false",`Description=${e}`,"Opacity=1",...n,""]}var yy={left:"0",top:"0",center:"0.5",right:"1",bottom:"1"};function fH(t){if(!t||t.opacity<=0)return["Wallpaper="];let[e="center",n="center"]=t.position.split("-");return[`Wallpaper=${t.image}`,`FillStyle=${t.cover?"Crop":"Adapt"}`,`Anchor=${yy[n]??"0.5"},${yy[e]??"0.5"}`,`WallpaperOpacity=${t.opacity}`]}function nm(t,e){return[...Zr(t),"",...em(t,`ttheme · ${t.name}`,fH(e))].join(`
349
+ `)}var rm={id:"konsole",limits:"draws no OSC 4, so a tab repaints by switching color scheme",emit(t){return[{path:`konsole/${j(t.name)}.colorscheme`,content:nm(t)}]}};import{openSync as dH,writeSync as hH}from"node:fs";import{ReadStream as mH}from"node:tty";var un=["11","10","12","17",...Array.from({length:16},(t,e)=>`4;${e}`)];function Ft(t=process.env){return Boolean(t.NO_COLOR)||t.TERM==="dumb"}function pH(t,e){return`\x1B]${un[t]};${e}\x1B\\`}function fr(t,e){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi].map((n,r)=>e&&!e.includes(r)?"":pH(r,n)).join("")}function gH(t){return`\x1B]${t.startsWith("4;")?`104;${t.slice(2)}`:`1${t}`}\x1B\\`}function bH(t){let e=new Map;for(let n of t.split("\x1B")){let r=n.match(/^\](\d+(?:;\d+)?);(rgba?:[0-9a-fA-F/]+)/),[,i,o]=r??[];if(i&&o)e.set(i,o)}return e}function vy(t){return`#${t.slice(t.indexOf(":")+1).split("/").slice(0,3).map((n)=>n.slice(0,2).padStart(2,"0")).join("")}`}function Sy(t){return un.map((e)=>{let n=t.get(e);return n?vy(n):void 0})}function qu(t,e=[...t.keys()],n=!1){return e.map((r)=>{let i=t.get(r);return i?`\x1B]${r};${n?vy(i):i}\x1B\\`:gH(r)}).join("")}function Ju(t,e){return`\x1B]50;ColorScheme=${t};UseCustomCursorColor=true;customCursorColor=${e}\x07`}function im(t=un,e="\x1B[5n"){return`${t.map((n)=>`\x1B]${n};?\x1B\\`).join("")}${e}`}function wH(t){return t.includes("\x1B[0n")}async function om(t=un){let e,n;try{e=dH("/dev/tty","r+"),n=new mH(e),n.setRawMode(!0)}catch{return new Map}try{hH(e,im(t));let r="";return await new Promise((i)=>{let o=setTimeout(i,120);n.on("data",(s)=>{if(r+=s.toString(),wH(r))clearTimeout(o),i()})}),bH(r)}finally{n.setRawMode(!1),n.destroy()}}function um(t){if(t.NVIM)return"nvim";if(t.VIM_TERMINAL)return"vim";if(t.INSIDE_EMACS)return"emacs";return t.TERM_PROGRAM==="vscode"?"vscode":void 0}function Zt(t){if(um(t))return"editor";if(t.TERM_PROGRAM==="WarpTerminal")return"warp";if(t.GHOSTTY_RESOURCES_DIR||t.TERM_PROGRAM==="ghostty")return"ghostty";if(t.KITTY_WINDOW_ID)return"kitty";if(t.WEZTERM_PANE)return"wezterm";if(t.ALACRITTY_WINDOW_ID)return"alacritty";if(t.KONSOLE_VERSION)return"konsole";if(t.ITERM_SESSION_ID||t.TERM_PROGRAM==="iTerm.app")return"iterm2";if(t.TERM_PROGRAM==="Apple_Terminal")return"terminal-app";if(t.WT_SESSION&&!t.TERM_PROGRAM)return"windows-terminal";if(t.TERM?.startsWith("foot"))return"foot";return"unknown"}var $e={ghostty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},kitty:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},iterm2:{links:!0,pictures:!0,bands:!0,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1]},wezterm:{links:!0,pictures:!0,bands:!1,files:!0,moves:!0,layers:!1,paints:!0,wipes:!0,views:!0},alacritty:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"windows-terminal":{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},konsole:{links:!1,pictures:!0,bands:!1,files:!0,moves:!0,layers:!0,paints:!0,repaint:[0,1],hex:!0,schemes:!0},foot:{links:!0,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},"terminal-app":{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0},warp:{links:!0,pictures:!0,bands:!0,files:!1,moves:!1,layers:!1,paints:!1},editor:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!1},unknown:{links:!1,pictures:!1,bands:!1,files:!0,moves:!0,layers:!0,paints:!0}};function sm(t,e,n){let r="";for(let i of t.split(`
350
+ `)){let o=i.trim();if(o.startsWith("[")&&o.endsWith("]"))r=o.slice(1,-1);else if(r===e&&o.startsWith(`${n}=`))return o.slice(n.length+1)}return}function kH(t){let e=t.XDG_CONFIG_HOME??Yi(My(),".config"),n=Yi(e,"konsolerc"),r=Yu(n)?sm(cm(n,"utf8"),"Desktop Entry","DefaultProfile"):void 0;for(let i=0;i<8&&r&&r!=="FALLBACK/";i++){let o=r.endsWith(".profile")?r:`${r}.profile`,s=Iy(t).map((u)=>Yi(u,o)).find((u)=>Yu(u));if(!s)return!1;let a=cm(s,"utf8"),c=sm(a,"Interaction Options","AllowEscapedLinks");if(c!==void 0)return c==="true";r=sm(a,"General","Parent")}return!1}function xy(t){let e=Zt(t);return e==="konsole"?kH(t):$e[e].links}function hs(t,e){let n=Zt(t),r=$e[n];return r.pictures&&!t.TMUX&&(!r.views||e.includes(n))}function Vu(t){return $e[Zt(t)].bands}function Zu(t){return $e[Zt(t)].files}function ms(t){return $e[Zt(t)].layers}function Oy(t){return $e[Zt(t)].moves}function Py(t){return $e[Zt(t)].wipes===!0}function Vi(t){return $e[Zt(t)].views===!0}function Zi(t){return`\x1B]1337;SetUserVar=ttheme_view=${Buffer.from(t).toString("base64")}\x07`}var Xi="\x1B[H\x1B[K\x1B[2H\x1B[J\x1B[H",lm=120,am=4,yH=40;function vH(t){let e=t.TTHEME_ITERM_SHOWN;return t.TTHEME_ITERM_SWITCH==="1"&&t.TTHEME_ITERM_DYED==="0"&&e?`ttheme · ${e}`:void 0}function SH(t,e){let n=$e.iterm2.repaint??[],r=un.map((c,u)=>u).filter((c)=>!n.includes(c)),i=new Set(n),o=vH(t),s=[],a=()=>{for(let c of s)clearTimeout(c);s=[]};return{slots:n,paint(c){a();for(let u=0;u<r.length;u+=am){let f=r.slice(u,u+am),l=setTimeout(()=>{for(let d of f)i.add(d);e(fr(c,f))},lm+u/am*yH);l.unref?.(),s.push(l)}return fr(c,n)},wear:(c)=>fr(c),saved:()=>om(),restore(c){a();let u=un.filter((f,l)=>i.has(l));return o?`\x1B[?2026h${qu(new Map,u)}\x1B]1337;SetProfile=${o}\x07\x1B[?2026l`:qu(c,u)},stop:a}}var EH=3,MH=/^(Wallpaper|FillStyle|Anchor|WallpaperOpacity|WallpaperFlipType)=/;function Iy(t){return[t.XDG_DATA_HOME??Yi(My(),".local","share"),...(t.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((e)=>Yi(e,"konsole"))}function xH(t,e){let n=/(?:^|;)ColorScheme=([^;]+)/.exec(e)?.[1],r=n&&t.map((c)=>Yi(c,`${n}.colorscheme`)).find((c)=>Yu(c));if(!r)return["Wallpaper="];let i=cm(r,"utf8").split(`
351
+ `),o=i.findIndex((c)=>c.trim()==="[General]"),s=i.findIndex((c,u)=>u>o&&c.trimStart().startsWith("[")),a=o<0?[]:i.slice(o+1,s<0?void 0:s).filter((c)=>MH.test(c));return a.length>0?a:["Wallpaper="]}function OH(t,e){let n=Iy(t),r=n[0],i=xH(n,e),o=[],s=(c,u,f)=>{let l=em(u,`ttheme · ${c}`,i).join(`
352
+ `),d=`${j("view")}.${$H("sha1").update(l).digest("hex").slice(0,10)}`,h=Yi(r,`${d}.colorscheme`);if(!Yu(h))C(h,l);if(!o.includes(h))o.push(h);for(let m of o.splice(0,Math.max(0,o.length-EH)))Ey(m,{force:!0});return Ju(d,f)},a=()=>{for(let c of o.splice(0))Ey(c,{force:!0})};return{slots:[],paint:(c)=>s(c.name,c,c.cursor),wear:(c,u)=>u.includes("konsole")?Ju(j(c.name),c.cursor):void 0,saved:async()=>new Map,restore:()=>{return a(),`\x1B]50;${e}\x07`},stop:a}}function Ry(t,e,n=(r)=>{process.stdout.write(r)}){let r=Zt(t),i=$e[r];if(!e||Ft(t)||t.TMUX||!i.paints)return;if(r==="iterm2")return SH(t,n);if(r==="konsole"&&t.TTHEME_KONSOLE_LOOK)return OH(t,t.TTHEME_KONSOLE_LOOK);let o=i.repaint??un.map((a,c)=>c),s=un.filter((a,c)=>o.includes(c));return{slots:o,paint:(a)=>fr(a,o),wear:(a,c)=>!i.schemes?fr(a):c.includes(r)?Ju(j(a.name),a.cursor):void 0,saved:()=>om(s),restore:(a)=>qu(a,s,i.hex===!0)}}var ne=["ghostty","kitty","alacritty","wezterm","iterm2","windows-terminal","warp","konsole","terminal-app"];var PH=[{section:"tab",title:"This tab"},{section:"startup",title:"New tabs"},{section:"catalog",title:"Palettes"},{section:"own",title:"Your own"},{section:"setup",title:"Setup"},{section:"support",title:"Support"}],gs=[{name:"use",args:["<palette>"],about:"Paint this tab — a unique prefix works: ttheme use ho",section:"tab",shell:!0},{name:"default",args:["<palette>"],about:"Make a palette the one new tabs open with",section:"startup"},{name:"on",args:[],about:"Wear the default palette in new tabs again",section:"startup"},{name:"off",args:[],about:"Take the palette and picture off every tab — the terminal's own colors until `ttheme on`",section:"startup"},{name:"pin",args:["[dir|ssh:<host>]"],about:"Pin a palette to a directory or an ssh host — the pin covers everything below it, or its whole repository; cd or ssh in repaints, leaving restores",section:"tab",shell:!0},{name:"unpin",args:["[dir|ssh:<host>]"],about:"Drop a pin — this directory's, every one below it, the one above that paints it, or an ssh host's",section:"tab",shell:!0},{name:"pins",args:[],about:"Map every pin as a file tree — the pinned directories in their palettes' colors, every ssh host, and the pin that covers this one",section:"tab",shell:!0},{name:"config",args:[],about:"Edit settings in $EDITOR — they apply in new tabs",section:"startup",shell:!0},{name:"browse",args:[],about:"Pick palettes and markets in a live picker — one list with every market as a row, which ctrl+s narrows to one market at a time",section:"catalog",hidden:!0},{name:"list",args:["[query]"],about:"Show the catalog, marking what is installed",section:"catalog",flags:{json:{type:"boolean",about:"Print the matches as JSON — name, group, catalog, installed"}}},{name:"add",args:["<palette...>"],about:"Install palettes — from the catalog, or from a share link: ttheme add https://ttheme.vercel.app/p/tt2:…",section:"catalog",flags:{market:{type:"string",value:"<source>",about:"Add this market first — a repository, a folder or official — and take bare palette names from it"}}},{name:"remove",args:["<palette...>"],about:"Uninstall palettes",section:"catalog"},{name:"update",args:["[market...]"],about:"Update ttheme and refresh your markets — official palettes come with ttheme; an installed palette from another market keeps its colors until ctrl+r on it in Browse takes its update",section:"catalog"},{name:"market",args:["[action]","[source]"],about:"The markets you added — add, remove and search them; init makes one of your own",actions:[["(none)","List the markets you added — their palettes, auto-update and last update"],["add <source>","Add a market — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own"],["remove <market>","Drop one by its name (alice@pastel) — the palettes you installed from it keep working"],["search [query]","Repositories on GitHub with the ttheme-market topic"],["init [name]","Make a market of your own — <you>@<name>, in ~/.config/ttheme/market/<name> or a folder you give"],["check [dir]","Check a market's folder before you push it — ttheme-market.toml, every palette, the renames and the gate; nothing is written"]],section:"catalog"},{name:"new",args:["<name>"],about:"Make a palette of your own in the palette editor — <you>@<market>/<name>, from blank, installed at once",section:"own",flags:{from:{type:"string",value:"<palette>",about:"Start from this palette's colors instead of blank"},in:{type:"string",value:"<market>",about:"The local market to put it in — when you have more than one"}}},{name:"edit",args:["[palette]"],about:"Change a palette in the palette editor — your own in its file, any other as your tone over its market's colors, which R and s in the editor put back; with none named, asks to edit the one this tab wears",section:"own"},{name:"check",args:["[palette]"],about:"Measure a palette against the contrast gate — where it misses, suggest colors that pass; with none named, asks to check the one this tab wears",section:"own",flags:{fix:{type:"boolean",about:"Write the suggested colors into your palette"}}},{name:"share",args:["[palette]"],about:"Print a share link and its QR code — the page shows the palette, and ttheme add <link> installs it anywhere, pictures included; with none named, asks to share the one this tab wears — or shares it without asking when the link goes to a pipe",section:"own",flags:{tone:{type:"string",value:"<tuned|original>",choices:["tuned","original"],about:"Share it as you tuned it, or as it was — asked when you tuned it and omit this"}}},{name:"init",args:[],about:"Install the shell layer and wire your terminals",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Accept every default without prompting"}}},{name:"uninstall",args:[],about:"Remove ttheme — its block comes out of every terminal config and what it wrote is deleted",section:"setup",flags:{yes:{type:"boolean",short:"y",about:"Remove without asking"}}},{name:"wire",args:["<terminal>"],about:"Wire one more terminal into this setup, after showing what it edits — the shell offers it in a terminal that paints only through the config init would have wired",section:"setup",hidden:!0},{name:"info",args:[],about:"Print what a bug report needs — version, OS, shell, terminal and the settings you changed",section:"support"},{name:"build",args:[],about:"Emit dist/ for every terminal, plus the zsh palette table — from a checkout",section:"setup",hidden:!0,flags:{only:{type:"string",multiple:!0,value:"<terminal>",choices:ne,about:"Rebuild just this terminal — repeat it for more"}}},{name:"find",args:["<palette>"],about:"Pick a booru background for a palette — preview opens this on tab",section:"setup",hidden:!0},{name:"image",args:["<palette>","<action>","[picture]"],about:"Show one of a palette's saved backgrounds, remove one, draw one in its palette's tone or its own colors (or get the other ready before it is asked for), or pass on tuning — preview calls this",section:"setup",hidden:!0},{name:"flatten",args:["<source>","<out>","<background>","<opacity>","[canvas]","[place]","[into]"],about:"Lay a picture on a background color at an opacity, placed on a canvas when given one, for Warp, which fades the window instead, and Terminal.app, which takes it written into the file its profile points at and renamed to the out — preview calls this",section:"setup",hidden:!0},{name:"bake",args:["<source>","<out>","<canvas>","<place>"],about:"Place a picture on a transparent canvas the way sips bakes preview's tuning — preview in Warp calls this",section:"setup",hidden:!0},{name:"tone",args:["<palette>","<action>","[width]"],about:"Print a palette's colors for preview's panel at its width, open them in the palette editor, or reset them to its market's — preview calls this",section:"setup",hidden:!0},{name:"sync",args:[],about:"Write every wired terminal's config again from what is installed and config.zsh — ttheme config and preview call this when TTHEME_TAB_PALETTE changed",section:"setup",hidden:!0},{name:"redraw",args:[],about:"Draw the background pictures again after TTHEME_BG_BLUR changed — ttheme config and preview call this",section:"setup",hidden:!0},{name:"latest",args:[],about:"Ask npm for the newest ttheme — any command starts this in the background once a day",section:"setup",hidden:!0},{name:"names",args:[],about:"Download aninames' character names when its release changed and index them — any command starts this in the background once a day",section:"setup",hidden:!0}];function IH(t){let e=Object.entries(t.flags??{}).map(([n,{value:r}])=>`[--${n}${r?` ${r}`:""}]`);return[t.name,...e,...t.args].join(" ")}function ps(t,e=RH){return t.map(([n,r])=>` ${n.padEnd(e)} ${r}`)}function Ay(t){return t.split(" — ")[0]}function Ty(t){return Object.entries(t.flags??{}).map(([e,{short:n,value:r,about:i}])=>[`${n?`-${n}, `:""}--${e}${r?` ${r}`:""}`,i])}function Hy(t,e){let n=e?[...t.actions??[],...Ty(t)]:[];return[[[t.name,...t.args].join(" "),Ay(t.about)],...n.map(([r,i])=>[` ${r}`,Ay(i)])]}var Fy=[`ttheme ${lt.version}`,lt.description,"Usage: ttheme <command> [options] [args]"],Ly=[["ttheme help","Every command"],["ttheme help all","Every command with its options, and examples"],["ttheme help <command>","One command in full"]],Cy=[["-h, --help","Show help — after a command, that command's"],["-v, --version","Print the version"]],RH=Math.max(...[...Ly,...Cy,...gs.filter((t)=>!t.hidden).flatMap((t)=>Hy(t,!0))].map(([t])=>t.length)),Ny=[["npx @kecan0406/ttheme init -y","Wire the terminals found here, no prompts"],["ttheme add homura madoka","Install two palettes"],["ttheme use homura","Paint this tab with one"],["ttheme list --json madoka","The madoka series as JSON"],["ttheme market add alice/ttheme-pastel","alice's market, alice@pastel — ttheme add alice@pastel/dusk"],["ttheme add dusk --market alice/ttheme-pastel","The same in one step"],["ttheme new rei --from rei","Your own rei, <you>@<market>/rei, to edit and share"]];function jy(){return[...Fy,"","Use --help to list every command, or init to set ttheme up"].join(`
353
+ `)}function fm(t){let e=Ty(t);return[`Usage: ttheme ${IH(t)}`,"",t.about,...t.actions?["","Actions:",...ps(t.actions)]:[],...e.length>0?["","Options:",...ps(e)]:[]].join(`
354
+ `)}function Ca(t,e=!1){let n=gs.filter((i)=>!i.hidden&&!(e&&i.section==="setup")),r=PH.filter(({section:i})=>n.some((o)=>o.section===i));return[...Fy,"ttheme alone opens Preview and Browse as tabs — tab and shift+tab move between them","","Getting help:",...ps(Ly),"","Global options:",...ps(Cy),...r.flatMap(({section:i,title:o})=>["",`${o}:`,...ps(n.filter((s)=>s.section===i).flatMap((s)=>Hy(s,t)))]),...t?["","Examples:",...ps(Ny,Math.max(...Ny.map(([i])=>i.length)))]:[],"","https://ttheme.vercel.app"].join(`
355
+ `)}import{readFileSync as AH}from"node:fs";import{join as NH}from"node:path";var dm="# ttheme begin",hm="# ttheme end",Qi=/# ttheme begin\n[\s\S]*?# ttheme end\n?/,ke="Managed by ttheme — npx @kecan0406/ttheme@latest uninstall takes it out",Nn="Generated by ttheme — rewritten on every add, remove and default; do not edit.";function Xr(t,e,n){return t.startsWith(`${e}/`)?`${n}${t.slice(e.length)}`:void 0}function Qr(t,e){let n=`${dm}
354
356
  ${e}
355
- ${om}
356
- `;if(hs.test(t))return t.replace(hs,n);if(t==="")return n;return`${t.replace(/\n*$/,`
357
+ ${hm}
358
+ `;if(Qi.test(t))return t.replace(Qi,n);if(t==="")return n;return`${t.replace(/\n*$/,`
357
359
  `)}
358
- ${n}`}function ur(t){let e=t.replace(/\n?# ttheme begin\n[\s\S]*?# ttheme end(?=\n|$)/,"");if(e===t)return t;return e.trim()===""?"":e.replace(/\n*$/,`
359
- `)}function ms(t,e){let n=t.replace(hs,"");return new RegExp(String.raw`^[ \t]*${e}(?:[ \t]*=|[ \t]+\S)`,"m").test(n)}var Ku='"${XDG_CONFIG_HOME:-$HOME/.config}/ttheme/ttheme.zsh"';function Ey(){return`# ${ke}
360
- [[ -r ${Ku} ]] && source ${Ku}`}var eH="# ttheme settings — uncomment a line to change it; exported variables win over this file",ps={TTHEME_TAB_PALETTE:{doc:"# new tabs: off keeps the configured terminal theme, seq rotates through the palettes (default off)",default:"off"},TTHEME_ANNOUNCE:{doc:'# the palette notice under "Last login:": 1 shows it, 0 silences it (default 1)',default:"1"},TTHEME_FX:{doc:"# search hint animation: typewriter, decode or glitch (default typewriter)",default:"typewriter"},TTHEME_SORT:{doc:"# series and palettes in ttheme and preview: abc sorts them by name, series keeps the order they were added (default abc)",default:"abc"},TTHEME_MOUSE:{doc:"# clicks, the wheel and drags in preview, browse, the palette editor and find: on, or off to leave the mouse to the terminal, so a drag selects text again without a modifier (default on)",default:"on"},TTHEME_BG_BLUR:{doc:"# soften the background pictures behind the text: a blur radius in screen pixels, 0 keeps them sharp — changing it draws every picture again (default 0)",default:"0"},TTHEME_BG_COLORS:{doc:"# the colors new background pictures are drawn in: tone tints a picture in one color of its palette, original keeps its own — preview switches each picture later (default tone)",default:"tone"},TTHEME_WARP_FAST:{doc:"# Warp tab switches: on keeps Warp rereading its settings while it is in front with tabs of different palettes, so the tab you switch to shows its palette in about 0.2 s instead of 0.6 s — about 8% CPU meanwhile; off leaves it to Warp (default on)",default:"on"},TTHEME_NAMES:{doc:"# character names in every language for searching palettes and find's search box, from aninames' weekly release: on downloads them (about 7 MB) and checks once a day in the background; off leaves them as they are (default on)",default:"on"},TTHEME_AUTO_UPDATE:{doc:"# checks in the background: on refreshes the markets you set to update on their own once a day and says when a newer ttheme is out; off leaves both to ttheme update (default on)",default:"on"},TTHEME_MARKET_LOOKUP:{doc:"# the Markets tab in browse: on looks GitHub up by itself — the markets carrying the ttheme-market topic when the tab opens or you type, and the palettes of a repository you type or move onto; off waits for space (default on)",default:"on"},TTHEME_FIND_RATING:{doc:"# the ratings find lists, any of safe, questionable and explicit, each booru read in its own rating vocabulary (default safe)",default:"safe"},TTHEME_FIND_BLOCK:{doc:'# the posts find drops by tag: nudity, underwear, both, or none to keep them all (default "nudity underwear")',default:"nudity underwear"},TTHEME_FIND_POSTS:{doc:"# what find lists first: all is every post of the character, cutouts are the transparent ones (default all)",default:"all"},TTHEME_FIND_SOLO:{doc:"# on keeps the posts tagged solo, the character alone, by danbooru or zerochan; off lists every post (default on)",default:"on"},TTHEME_FIND_CUTOUTS:{doc:'# the tags find calls a transparent cutout, per site as key=tag,tag pairs — e.g. "konachan=transparent,vector yande=transparent_png" (default the built-in tags)',default:""},TTHEME_FIND_ORDER:{doc:"# the order find lists posts in: fit ranks each page by how well it makes a backdrop, newest or score (default fit)",default:"fit"},TTHEME_FIND_SETS:{doc:"# runs of the same picture at the same size from one uploader: fold shows them as one tile, show lists each (default fold)",default:"fold"},TTHEME_FIND_REMOVE_BG:{doc:"# an opaque picture tried on in find: on cuts the character out with macOS Vision, off leaves it as it is (default on)",default:"on"},TTHEME_FIND_MIN_SCORE:{doc:"# the lowest score find lists: off, or a number such as 5, 10, 25, 50 or 100 — danbooru, konachan and yande.re filter by it, zerochan keeps no score (default off)",default:"off"},TTHEME_FIND_MIN_SIZE:{doc:"# the shortest side a picture find lists must reach, in pixels: off, or a number such as 720, 1080, 1440, 1800 or 2560 (default off)",default:"off"},TTHEME_FIND_SITES:{doc:"# the sites find mixes in its all tab: any of danbooru, konachan, yande.re and zerochan (default all four)",default:"danbooru konachan yande.re zerochan"},TTHEME_FIND_HIDE:{doc:"# the kinds of picture find leaves out by tag: comic, monochrome, sketch, chibi, or none to keep them all (default none)",default:"none"},TTHEME_FIND_HIDE_TAGS:{doc:'# more tags find leaves out, spaced — e.g. "cosplay multiple_girls" (default none)',default:""},TTHEME_FIND_PNG:{doc:"# on lists PNG originals only — a zerochan post counts only where danbooru holds the same file (default off)",default:"off"},TTHEME_FIND_HOSTS:{doc:'# send a find site somewhere else, as key=https://host pairs — e.g. "danbooru=https://danbooru.donmai.us" (default none)',default:""}};function Pa(t){return ps[t]?.default}function sm(t,e){let n=`: \${${t}:=${e}}`;return Pa(t)===e?`# ${n}`:n}function Sy(t){return new RegExp(String.raw`^#? ?: \$\{${t}[^\n]*$`,"m")}function nH(t,e){if(Sy(e).test(t))return t;let n=ps[e];return`${t.replace(/\n*$/,`
360
+ ${n}`}function Tn(t){let e=t.replace(/\n?# ttheme begin\n[\s\S]*?# ttheme end(?=\n|$)/,"");if(e===t)return t;return e.trim()===""?"":e.replace(/\n*$/,`
361
+ `)}function bs(t,e){let n=t.replace(Qi,"");return new RegExp(String.raw`^[ \t]*${e}(?:[ \t]*=|[ \t]+\S)`,"m").test(n)}var Xu='"${XDG_CONFIG_HOME:-$HOME/.config}/ttheme/ttheme.zsh"';function _y(){return`# ${ke}
362
+ [[ -r ${Xu} ]] && source ${Xu}`}var TH="# ttheme settings — uncomment a line to change it; exported variables win over this file",ws={TTHEME_TAB_PALETTE:{doc:"# new tabs: off keeps the configured terminal theme, seq rotates through the palettes (default off)",default:"off"},TTHEME_ANNOUNCE:{doc:'# the palette notice under "Last login:": 1 shows it, 0 silences it (default 1)',default:"1"},TTHEME_FX:{doc:"# search hint animation: typewriter, decode or glitch (default typewriter)",default:"typewriter"},TTHEME_SORT:{doc:"# series and palettes in ttheme and preview: abc sorts them by name, series keeps the order they were added (default abc)",default:"abc"},TTHEME_MOUSE:{doc:"# clicks, the wheel and drags in preview, browse, the palette editor and find: on, or off to leave the mouse to the terminal, so a drag selects text again without a modifier (default on)",default:"on"},TTHEME_BG_BLUR:{doc:"# soften the background pictures behind the text: a blur radius in screen pixels, 0 keeps them sharp — changing it draws every picture again (default 0)",default:"0"},TTHEME_BG_COLORS:{doc:"# the colors new background pictures are drawn in: tone tints a picture in one color of its palette, original keeps its own — preview switches each picture later (default tone)",default:"tone"},TTHEME_WARP_FAST:{doc:"# Warp tab switches: on keeps Warp rereading its settings while it is in front with tabs of different palettes, so the tab you switch to shows its palette in about 0.2 s instead of 0.6 s — about 8% CPU meanwhile; off leaves it to Warp (default on)",default:"on"},TTHEME_NAMES:{doc:"# character names in every language for searching palettes and find's search box, from aninames' weekly release: on downloads them (about 7 MB) and checks once a day in the background; off leaves them as they are (default on)",default:"on"},TTHEME_AUTO_UPDATE:{doc:"# checks in the background: on refreshes the markets you set to update on their own once a day and says when a newer ttheme is out; off leaves both to ttheme update (default on)",default:"on"},TTHEME_MARKET_LOOKUP:{doc:"# GitHub lookups in browse: on looks GitHub up by itself — the markets carrying the ttheme-market topic when browse opens or you type, and the palettes of a repository you type or move onto; off waits for space (default on)",default:"on"},TTHEME_FIND_RATING:{doc:"# the ratings find lists, any of safe, questionable and explicit, each booru read in its own rating vocabulary (default safe)",default:"safe"},TTHEME_FIND_BLOCK:{doc:'# the posts find drops by tag: nudity, underwear, both, or none to keep them all (default "nudity underwear")',default:"nudity underwear"},TTHEME_FIND_POSTS:{doc:"# what find lists first: all is every post of the character, cutouts are the transparent ones (default all)",default:"all"},TTHEME_FIND_SOLO:{doc:"# on keeps the posts tagged solo, the character alone, by danbooru or zerochan; off lists every post (default on)",default:"on"},TTHEME_FIND_CUTOUTS:{doc:'# the tags find calls a transparent cutout, per site as key=tag,tag pairs — e.g. "konachan=transparent,vector yande=transparent_png" (default the built-in tags)',default:""},TTHEME_FIND_ORDER:{doc:"# the order find lists posts in: fit ranks each page by how well it makes a backdrop, newest or score (default fit)",default:"fit"},TTHEME_FIND_SETS:{doc:"# runs of the same picture at the same size from one uploader: fold shows them as one tile, show lists each (default fold)",default:"fold"},TTHEME_FIND_REMOVE_BG:{doc:"# an opaque picture tried on in find: on cuts the character out with macOS Vision, off leaves it as it is (default on)",default:"on"},TTHEME_FIND_MIN_SCORE:{doc:"# the lowest score find lists: off, or a number such as 5, 10, 25, 50 or 100 — danbooru, konachan and yande.re filter by it, zerochan keeps no score (default off)",default:"off"},TTHEME_FIND_MIN_SIZE:{doc:"# the shortest side a picture find lists must reach, in pixels: off, or a number such as 720, 1080, 1440, 1800 or 2560 (default off)",default:"off"},TTHEME_FIND_SITES:{doc:"# the sites find mixes in its all tab: any of danbooru, konachan, yande.re and zerochan (default all four)",default:"danbooru konachan yande.re zerochan"},TTHEME_FIND_HIDE:{doc:"# the kinds of picture find leaves out by tag: comic, monochrome, sketch, chibi, or none to keep them all (default none)",default:"none"},TTHEME_FIND_HIDE_TAGS:{doc:'# more tags find leaves out, spaced — e.g. "cosplay multiple_girls" (default none)',default:""},TTHEME_FIND_PNG:{doc:"# on lists PNG originals only — a zerochan post counts only where danbooru holds the same file (default off)",default:"off"},TTHEME_FIND_HOSTS:{doc:'# send a find site somewhere else, as key=https://host pairs — e.g. "danbooru=https://danbooru.donmai.us" (default none)',default:""}};function ja(t){return ws[t]?.default}function mm(t,e){let n=`: \${${t}:=${e}}`;return ja(t)===e?`# ${n}`:n}function Gy(t){return new RegExp(String.raw`^#? ?: \$\{${t}[^\n]*$`,"m")}function HH(t,e){if(Gy(e).test(t))return t;let n=ws[e];return`${t.replace(/\n*$/,`
361
363
  `)}
362
364
  ${n.doc}
363
- ${sm(e,n.default)}
364
- `}var zu=Object.keys(ps),rH=8;function gs(t,e){let n="";try{n=QT(tH(t,"ttheme","config.zsh"),"utf8")}catch{}return(new RegExp(String.raw`^: \$\{${e}:=([^}\n]*)\}`,"m").exec(n)?.[1]??ps[e].default).replace(/^(["'])(.*)\1$/,"$2")}function ti(t){let e=Number(gs(t,"TTHEME_BG_BLUR"));return Number.isFinite(e)?Math.min(rH,Math.max(0,e)):0}function qu(t){return gs(t,"TTHEME_BG_COLORS")==="original"?"original":"tone"}function am(){let t=Object.entries(ps).map(([e,n])=>`${n.doc}
365
- ${sm(e,n.default)}`);return`${[eH,...t].join(`
365
+ ${mm(e,n.default)}
366
+ `}var Qu=Object.keys(ws),FH=8;function $s(t,e){let n="";try{n=AH(NH(t,"ttheme","config.zsh"),"utf8")}catch{}return(new RegExp(String.raw`^: \$\{${e}:=([^}\n]*)\}`,"m").exec(n)?.[1]??ws[e].default).replace(/^(["'])(.*)\1$/,"$2")}function ti(t){let e=Number($s(t,"TTHEME_BG_BLUR"));return Number.isFinite(e)?Math.min(FH,Math.max(0,e)):0}function tl(t){return $s(t,"TTHEME_BG_COLORS")==="original"?"original":"tone"}function pm(){let t=Object.entries(ws).map(([e,n])=>`${n.doc}
367
+ ${mm(e,n.default)}`);return`${[TH,...t].join(`
366
368
 
367
369
  `)}
368
- `}function Du(t,e,n){let r=sm(e,n),i=Sy(e);if(i.test(t))return t.replace(i,r);return`${t.replace(/\n*$/,`
370
+ `}function el(t,e,n){let r=mm(e,n),i=Gy(e);if(i.test(t))return t.replace(i,r);return`${t.replace(/\n*$/,`
369
371
  `)}
370
372
  ${r}
371
- `}function My(t){if(t==="")return am();return Object.keys(ps).reduce(nH,t)}var Ju=/["$`\\]/;function iH(t){return t.replace(/_\([^)]*\)$/,"").replaceAll("_"," ")}function cm(t,e,n=[],r={},i=[]){for(let l of t)for(let d of[l.name,l.group,l.native??"",...l.nativeNames??[],l.ansiSource])if(Ju.test(d))throw Error(`${l.name}: "${d}" contains a character that breaks zsh quoting`);let o=Math.max(0,...t.map((l)=>l.name.length)),s=(l,d)=>` ${l.name.padEnd(o)} "${d}"`,a=(l)=>l.map((d)=>d.name).join(" "),c=Tt(t),u=(l)=>`'${l.replaceAll("'","'\\''")}'`,f=ds.filter((l)=>l.section!=="setup"&&!l.hidden);return["# Generated by `mise run build` — do not edit.","# Source of truth: themes/*.toml in the ttheme repo.","",`typeset -g TTHEME_VERSION=${ft.version}`,"",'# the palette new tabs open with, which the iTerm2 "ttheme · default" profile wears',`typeset -g TTHEME_STARTUP=${e??""}`,"","# the terminals ttheme is wired into: a picture change reaches every one of them, from whichever runs the shell",`typeset -ga TTHEME_TERMINALS=(${n.join(" ")})`,...Object.keys(r).length>0?["","# what a wired terminal's adapter needs to know of it (src/terminals/)",...Object.entries(r).map(([l,d])=>`typeset -g ${l}=${u(d)}`)]:[],"","# the commands the shell layer knows (src/verbs.ts): help, completion and argument checks read them",`typeset -ga TTHEME_VERBS=(${f.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_TAB_VERBS=(${f.filter((l)=>l.section==="tab").map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_SHELL_VERBS=(${f.filter((l)=>l.shell).map((l)=>l.name).join(" ")})`,"typeset -gA TTHEME_VERB_ARGS=(",...f.map((l)=>` ${l.name} ${u(l.args.join(" "))}`),")","typeset -gA TTHEME_VERB_ABOUT=(",...f.map((l)=>` ${l.name} ${u(l.about)}`),")",`typeset -g TTHEME_HELP=${u(Ra(!1,!0))}`,`typeset -g TTHEME_HELP_ALL=${u(Ra(!0,!0))}`,"","# the screens the bare ttheme switches between (src/hub.ts): the exit status of a screen run by the CLI says where it went",`typeset -ga TTHEME_HUB_TABS=(${rr.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_HUB_TITLES=(${rr.map((l)=>l.title).join(" ")})`,`typeset -gi TTHEME_HUB_CLOSED=${Ou} TTHEME_HUB_SWITCH=${Iu}`,"","# the settings config.zsh holds, handed to the CLI on every call",`typeset -ga TTHEME_SETTINGS=(${zu.join(" ")})`,"","# seed for `ttheme config` when no config.zsh exists yet",`typeset -g TTHEME_CONFIG_TEMPLATE='${am().trimEnd().replaceAll("'","'\\''")}'`,"","typeset -gA TTHEME_PALETTE=(",...t.map((l)=>s(l,[l.background,l.foreground,l.cursor,l.selection,...l.ansi].join(" "))),")","","# the palettes whose colors your tone moves off their market's (tone.json): lists mark them, and preview's panel offers to reset them",`typeset -ga TTHEME_TUNED=(${t.filter((l)=>i.includes(l.name)).map((l)=>l.name).join(" ")})`,"","# series order: new tabs cycle through it and TTHEME_SORT=series lists it — the default role stays applyable but unlisted",`typeset -ga TTHEME_ORDER=(${a(c)})`,"","# the same palettes by series name, then palette name: TTHEME_SORT=abc lists them this way",`typeset -ga TTHEME_ABC=(${a(Fi(c))})`,"","typeset -gA TTHEME_GROUP=(",...t.map((l)=>s(l,l.group)),")","","# the catalog a market palette sits in — the folder under the market's palettes/, one level below the market in every list","typeset -gA TTHEME_CATALOG=(",...t.filter((l)=>l.catalog).map((l)=>s(l,l.catalog??"")),")","","# original-language title, rendered dim next to the group","typeset -gA TTHEME_NATIVE=(",...t.filter((l)=>l.native).map((l)=>s(l,l.native??"")),")","","# the character's names in its original language, |-separated, and as its booru tag spells it: preview searches both","typeset -gA TTHEME_NATIVE_NAMES=(",...t.filter((l)=>l.nativeNames).map((l)=>s(l,(l.nativeNames??[]).join("|"))),")","typeset -gA TTHEME_CHARACTER=(",...t.filter((l)=>l.booru&&!Ju.test(l.booru)).map((l)=>s(l,iH(l.booru??""))),")","","# the example scenes preview draws beside the list (src/scenes.ts), each line as «role»text runs",`typeset -ga TTHEME_SCENES=(${Zt.map((l)=>l.name).join(" ")})`,...Zt.flatMap((l,d)=>[`typeset -ga TTHEME_SCENE_${d+1}=(`,...l.lines.map((h)=>` ${u(h)}`),")"]),"","# each booru's ANSI color, which marks a link to one of its posts",`typeset -gA TTHEME_SITE_ANSI=(${V.map((l)=>`${l.name} ${l.ansi}`).join(" ")})`,"","# the terminals that open OSC 8 links (src/terminal.ts)",`typeset -ga TTHEME_LINKS=(${Object.entries($e).flatMap(([l,d])=>d.links?[l]:[]).join(" ")})`,"","# the six colors a list row shows: foreground, the signature, then red and green","typeset -gA TTHEME_SWATCH=(",...t.map((l)=>s(l,lu(l).join(" "))),")","","# where each palette's 16 ANSI colors came from","typeset -gA TTHEME_SRC=(",...t.map((l)=>s(l,l.ansiSource)),")",""].join(`
372
- `)}function xy(t){let e=Object.entries(t).flatMap(([r,i])=>{let o=i.filter((s)=>!Ju.test(s)&&!s.includes("|"));return o.length>0&&!Ju.test(r)?[[r,o.join("|")]]:[]}),n=Math.max(0,...e.map(([r])=>r.length));return["# the character's other names in every language, |-separated, from the aninames index in the cache: preview reads this when it opens and searches them too","typeset -gA TTHEME_ALIASES=(",...e.map(([r,i])=>` ${r.padEnd(n)} "${i}"`),")",""].join(`
373
- `)}var um={id:"shell",emitShared(t){return[{path:"shell/palettes.zsh",content:cm(t.map(sn))}]}};import{execFileSync as oH}from"node:child_process";import{existsSync as Oy,readdirSync as sH,readFileSync as aH}from"node:fs";import{join as Iy}from"node:path";function lt(t){return Oy(t)?aH(t,"utf8"):""}function wt(t,e){return t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}function Yu(t){let e=t.split(`
374
- `).filter((n)=>n!==""&&!n.startsWith("#"));return[...new Set(e.map((n)=>n.split(/[ =]/)[0]))].join(", ")}function un(t,e){let n=lt(t),r=e(n);return r===n?[]:[{file:t,content:r}]}function Aa(t){return process.env.XDG_DATA_HOME??Iy(t,".local","share")}function bs(t){return Oy(t)?sH(t).flatMap((e)=>e.startsWith(C(""))?[Iy(t,e)]:[]):[]}function lm(t,e){if(!t.shelf)return[];let n=`${[t.id,t.shelf.from].filter(Boolean).join("/")}/`;return(t.emitter.emit?.(e)??[]).flatMap((r)=>{let i=r.path.startsWith(n)?r.path.slice(n.length):"";return i!==""&&!i.includes("/")?[{file:i,content:r.content}]:[]})}function Ye(){return{platform:process.platform,env:process.env,run:(t,e)=>{try{return oH(t,[...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5000}).trim()}catch{return}}}}import{existsSync as Vu}from"node:fs";import{join as ni}from"node:path";var cH=["black","red","green","yellow","blue","magenta","cyan","white"];function Ry(t,e){return[t,...cH.map((n,r)=>`${n} = '${e[r]}'`),""].join(`
375
- `)}var fm={id:"alacritty",limits:"no runtime color API (OSC only)",emit(t){let e=[...Vr(t),"","[colors.primary]",`background = '${t.background}'`,`foreground = '${t.foreground}'`,"","[colors.cursor]",`cursor = '${t.cursor}'`,`text = '${t.background}'`,"","[colors.selection]",`background = '${t.selectionBackground}'`,`text = '${t.foreground}'`,"",Ry("[colors.normal]",t.ansi.slice(0,8)),Ry("[colors.bright]",t.ansi.slice(8,16))].join(`
376
- `);return[{path:`alacritty/themes/${C(t.name)}.toml`,content:e}]}};var dm={id:"ghostty",emit(t){let e=[...Vr(t),`background = ${t.background}`,`foreground = ${t.foreground}`,`cursor-color = ${t.cursor}`,`selection-background = ${t.selectionBackground}`,`selection-foreground = ${t.foreground}`,...t.ansi.map((n,r)=>`palette = ${r}=${n}`),"","macos-icon = custom-style",`macos-icon-ghost-color = ${t.ghostty.iconGhost}`,`macos-icon-screen-color = ${t.ghostty.iconScreen.join(",")}`,"macos-icon-frame = chrome",""].join(`
377
- `);return[{path:`ghostty/themes/${C(t.name)}`,content:e}]}};function ei(t){let[e,n,r]=st(t);return{"Alpha Component":1,"Blue Component":r/255,"Color Space":"P3","Green Component":n/255,"Red Component":e/255}}function Ay(t){return{...Object.fromEntries(t.ansi.map((e,n)=>[`Ansi ${n} Color`,ei(e)])),"Background Color":ei(t.background),"Bold Color":ei(t.foreground),"Cursor Color":ei(t.cursor),"Cursor Text Color":ei(t.background),"Foreground Color":ei(t.foreground),"Selected Text Color":ei(t.foreground),"Selection Color":ei(t.selectionBackground)}}function Py(t){return t?{"Background Image Location":t.image,"Background Image Mode":t.cover?2:3,Blend:t.opacity}:{"Background Image Location":""}}function Ny(t,e,n,r,i=!1){let o=(c,u)=>({Name:`ttheme · ${u}`,Guid:C(u),...r?{"Dynamic Profile Parent GUID":r}:{},"Use Separate Colors for Light and Dark Mode":!1,...Py(e.get(c.name)),...Ay(c)}),s={Name:"ttheme · default",Guid:C("default"),"Dynamic Profile Parent GUID":r,...Py(void 0)},a=[...n?[o(n,"default")]:i&&r?[s]:[],...t.map((c)=>o(c,c.name))];return`${JSON.stringify({Profiles:a},null,2)}
378
- `}function uH(t,e){return[` <key>${t}</key>`,"\t<dict>",...Object.entries(e).flatMap(([n,r])=>[` <key>${n}</key>`,typeof r==="string"?` <string>${r}</string>`:` <real>${r}</real>`]),"\t</dict>"].join(`
379
- `)}var hm={id:"iterm2",limits:"colors are Display P3, the space iTerm2 reads OSC colors in",emit(t){let e=['<?xml version="1.0" encoding="UTF-8"?>','<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">','<plist version="1.0">',"<dict>",...Object.entries(Ay(t)).map(([n,r])=>uH(n,r)),"</dict>","</plist>",""].join(`
380
- `);return[{path:`iterm2/${C(t.name)}.itermcolors`,content:e}]}};var mm={id:"kitty",emit(t){let e=[...Vr(t),`background ${t.background}`,`foreground ${t.foreground}`,`cursor ${t.cursor}`,`cursor_text_color ${t.background}`,`selection_background ${t.selectionBackground}`,`selection_foreground ${t.foreground}`,...t.ansi.map((n,r)=>`color${r} ${n}`),""].join(`
381
- `);return[{path:`kitty/themes/${C(t.name)}.conf`,content:e}]}};function Ty(t){return[`# ${Pn}`,"import os","",`THEMES = ${JSON.stringify(t.themes)}`,`BACKGROUNDS = ${JSON.stringify(t.backgrounds)}`,"PLACES = {"," 'top-left': 'top-left', 'top-center': 'top', 'top-right': 'top-right',"," 'center-left': 'left', 'center': 'center', 'center-center': 'center', 'center-right': 'right',"," 'bottom-left': 'bottom-left', 'bottom-center': 'bottom', 'bottom-right': 'bottom-right',","}","","shown = {}","faded = {}","worn = {}","","","def locate(path):"," if path.startswith('~/'):"," return os.path.expanduser(path)"," return path if os.path.isabs(path) else os.path.join(BACKGROUNDS, path)","","","def read(path, into):"," try:"," with open(path, encoding='utf-8') as f:"," lines = f.read().splitlines()"," except OSError:"," return False"," for line in lines:"," key, sep, value = line.partition('=')"," key, value = key.strip(), value.strip()"," if not sep or not key or key.startswith('#'):"," continue"," if key == 'config-file':"," read(locate(value.lstrip('?')), into)"," else:"," into[key] = value"," return True","","","def logo(palette):"," c = {}"," if not palette or not read(os.path.join(BACKGROUNDS, palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf'), c):"," return None"," image = c.get('background-image', '')"," try:"," opacity = min(float(c.get('background-image-opacity', '1')), 1.0)"," except ValueError:"," opacity = 1.0"," if not image or opacity <= 0:"," return None"," return locate(image), PLACES.get(c.get('background-image-position', 'center'), 'center'), opacity","","","def fade(path, opacity):"," key = f'{path}#{opacity}'"," if key not in faded:"," from kitty.fast_data_types import load_png_data, png_from_32bit_rgba_data"," with open(path, 'rb') as f:"," rgba, width, height = load_png_data(f.read())"," data = bytearray(rgba)"," data[3::4] = data[3::4].translate(bytes(round(a * opacity) for a in range(256)))"," if len(faded) > 8:"," faded.clear()"," faded[key] = png_from_32bit_rgba_data(bytes(data), width, height)"," return key, faded[key]","","","def show(window):"," want = logo(window.user_vars.get('ttheme_shown') or '')"," if window.id in shown and shown[window.id] == want:"," return"," shown[window.id] = want"," try:"," if want is None:"," window.set_logo('')"," elif want[2] < 1:"," key, png = fade(want[0], want[2])"," window.set_logo(key, want[1], 1, png)"," else:"," window.set_logo(want[0], want[1], 1)"," except Exception:"," shown.pop(window.id, None)","","","def theme(palette):"," path = os.path.join(THEMES, 'ttheme-' + palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf')"," if not palette or not os.path.exists(path):"," return None"," from kitty.colors import parse_colors"," return parse_colors([path])","","","def wear(palette):"," colors = theme(palette) if worn.get('startup') != palette else None"," if colors is None:"," return"," from kitty.colors import patch_colors"," patch_colors(colors[0], colors[1], True, ())"," worn['startup'] = palette","","","def rewear(boss):"," from kitty.colors import patch_colors"," for window in tuple(boss.all_windows):"," colors = theme(window.user_vars.get('ttheme_worn') or '')"," if colors is not None:"," patch_colors(colors[0], colors[1], False, (window,))","","","def on_load(boss, data):"," if getattr(boss, 'ttheme_rewears', False):"," return"," load = boss.load_config_file",""," def reload(*args, **kwargs):"," load(*args, **kwargs)"," worn.pop('startup', None)"," rewear(boss)",""," boss.load_config_file = reload"," boss.ttheme_rewears = True","","","def on_set_user_var(boss, window, data):"," if data['key'] == 'ttheme_shown':"," show(window)"," elif data['key'] == 'ttheme_startup':"," wear(data['value'] or '')","","","def on_focus_change(boss, window, data):"," if data['focused']:"," show(window)","","","def on_close(boss, window, data):"," shown.pop(window.id, None)",""].join(`
382
- `)}function lH(t){let[e]=t;if(!e)throw Error("manifest needs at least one theme");return{...fu(),palettes:t.map(sn)}}var pm={id:"meta",emitShared(t){return[{path:"manifest.json",content:`${JSON.stringify(lH(t),null,2)}
383
- `}]}};var gm={id:"terminal-app",limits:"profiles go into its own settings at init, so the archive carries none"};import{createHash as fH}from"node:crypto";var dH=["black","red","green","yellow","blue","magenta","cyan","white"];function Hy(t,e){return[` ${t}:`,...dH.map((n,r)=>` ${n}: "${e[r]}"`)]}function hH(t,e,n){let r=fH("sha1");for(let i of e)r.update(i);return`${C(t)}.${r.digest("hex").slice(0,8)}.${n}`}function Fy(t,e,n){let r=2166136261;for(let i of Buffer.from(`${e}
384
- ${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${C(t)}.${r.toString(16).padStart(8,"0")}.png`}function Na(t,e){return e?hH(t,[e.image,String(Ly(e))],"yaml"):`${C(t)}.yaml`}function Ly(t){return Math.max(0,Math.min(100,Math.round(t.opacity*100)))}function Ta(t,e){return[`name: "${t.name}"`,`background: "${t.background}"`,`foreground: "${t.foreground}"`,`accent: "${t.cursor}"`,`cursor: "${t.cursor}"`,`details: ${Et(t.background)<0.18?"darker":"lighter"}`,...e?["background_image:",` path: "${e.image}"`,` opacity: ${Ly(e)}`]:[],"terminal_colors:",...Hy("normal",t.ansi.slice(0,8)),...Hy("bright",t.ansi.slice(8,16)),""].join(`
385
- `)}var bm={id:"warp",limits:"no selection color, and Warp paints one theme app-wide",emit(t){return[{path:`warp/themes/${Na(t.name)}`,content:Ta(t)}]}};var Cy=(t)=>`[${t.map((e)=>`"${e}"`).join(", ")}]`,wm={id:"wezterm",limits:"OSC repaints per pane, pictures show per window",emit(t){let e=["[metadata]",`name = "${C(t.name)}"`,`origin_url = "${t.ansiSource}"`,"","[colors]",`foreground = "${t.foreground}"`,`background = "${t.background}"`,`cursor_bg = "${t.cursor}"`,`cursor_border = "${t.cursor}"`,`cursor_fg = "${t.background}"`,`selection_bg = "${t.selectionBackground}"`,`selection_fg = "${t.foreground}"`,"",`ansi = ${Cy(t.ansi.slice(0,8))}`,`brights = ${Cy(t.ansi.slice(8,16))}`,""].join(`
386
- `);return[{path:`wezterm/colors/${C(t.name)}.toml`,content:e}]}},ws=(t)=>JSON.stringify(t);function jy(t){return[`-- ${Pn}`,"local wezterm = require 'wezterm'","",`local MODULE = ${ws(t.path)}`,`local COLORS = ${ws(t.colors)}`,`local BACKGROUNDS = ${ws(t.backgrounds)}`,`local STARTUP = ${t.startup?ws(C(t.startup)):"nil"}`,"local PALETTES = {",...t.palettes.map((e)=>` [${ws(e.name)}] = ${ws(e.background)},`),"}","","local X = { left = 'Left', center = 'Center', right = 'Right' }","local Y = { top = 'Top', center = 'Middle', bottom = 'Bottom' }","local SIZE = { cover = 'Cover', contain = 'Contain', stretch = '100%' }","","local function locate(path)"," if path:sub(1, 2) == '~/' then"," return os.getenv('HOME') .. path:sub(2)"," elseif path:sub(1, 1) == '/' or path:match('^%a:[/\\\\]') then"," return path"," end"," return BACKGROUNDS .. '/' .. path","end","","local function read(path, into)"," local f = io.open(path, 'r')"," if not f then"," return false"," end"," for line in f:lines() do"," local key, value = line:match('^%s*([%w%-]+)%s*=%s*(.-)%s*$')"," if key == 'config-file' then"," read(locate((value:gsub('^%?', ''))), into)"," elseif key then"," into[key] = value"," end"," end"," f:close()"," return true","end","","local function layers(palette)"," local color = PALETTES[palette]"," local c = {}"," if not color or not read(BACKGROUNDS .. '/' .. ((palette:gsub('@', '--', 1)):gsub('/', '--', 1)) .. '.conf', c) then"," return nil, 'none'"," end"," local image = c['background-image'] or ''"," local opacity = tonumber(c['background-image-opacity'] or '1') or 1"," if image == '' or opacity <= 0 then"," return nil, 'none'"," end"," local fit = c['background-image-fit'] or 'contain'"," local position = c['background-image-position'] or 'center'"," local y, x = position:match('^(%a+)-(%a+)$')"," local rep = c['background-image-repeat'] == 'true' and 'Repeat' or 'NoRepeat'"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = locate(image) },"," opacity = opacity,"," width = SIZE[fit],"," height = SIZE[fit],"," horizontal_align = X[x or 'center'],"," vertical_align = Y[y or 'center'],"," repeat_x = rep,"," repeat_y = rep,"," },"," }, table.concat({ color, image, opacity, fit, position, rep }, '|')","end","","local function framed(window, view)"," local color, image, opacity, W, H, w, h, x, y, at ="," view:match('^([^|]*)|([^|]*)|([^|]*)|(%d+)|(%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%d)$')"," if not image or image == '' or tonumber(W) == 0 or tonumber(H) == 0 then"," return nil, 'none'"," end"," local d = window:get_dimensions()"," local k = math.max(d.pixel_width / W, d.pixel_height / H)"," local n = tonumber(at) - 1"," local ax, ay = n % 3, n // 3"," local px = function(n) return string.format('%.2fpx', n) end"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = image },"," opacity = tonumber(opacity) or 1,"," width = px(w * k),"," height = px(h * k),"," horizontal_align = 'Left',"," vertical_align = 'Top',"," horizontal_offset = px(ax * (d.pixel_width - W * k) / 2 + x * k),"," vertical_offset = px(ay * (d.pixel_height - H * k) / 2 + y * k),"," repeat_x = 'NoRepeat',"," repeat_y = 'NoRepeat',"," },"," }, table.concat({ view, d.pixel_width, d.pixel_height }, '|')","end","","local shown = {}","","local function show(window, pane)"," local vars = pane:get_user_vars()"," local id = window:window_id()"," local background, key"," if vars.ttheme_view and vars.ttheme_view ~= '' then"," background, key = framed(window, vars.ttheme_view)"," elseif vars.ttheme_shown and vars.ttheme_shown ~= '' then"," background, key = layers(vars.ttheme_shown)"," elseif shown[id] == nil then"," return"," end"," if shown[id] == key then"," return"," end"," shown[id] = key"," local overrides = window:get_config_overrides() or {}"," overrides.background = background"," window:set_config_overrides(overrides)","end","","wezterm.on('user-var-changed', function(window, pane, name)"," if name == 'ttheme_shown' or name == 'ttheme_view' then"," show(window, pane)"," end","end)","wezterm.on('update-status', show)","","return function(config)"," local dirs = config.color_scheme_dirs or {}"," table.insert(dirs, COLORS)"," config.color_scheme_dirs = dirs"," if STARTUP then"," config.color_scheme = STARTUP"," end"," wezterm.add_to_config_reload_watch_list(MODULE)","end",""].join(`
387
- `)}var _y=["black","red","green","yellow","blue","purple","cyan","white"];function Gy(t){return{name:C(t.name),background:t.background,foreground:t.foreground,cursorColor:t.cursor,selectionBackground:t.selectionBackground,...Object.fromEntries(_y.map((e,n)=>[e,t.ansi[n]])),...Object.fromEntries(_y.map((e,n)=>[`bright${e[0]?.toUpperCase()}${e.slice(1)}`,t.ansi[n+8]]))}}function $m(t,e,n){let r={...e&&n?{profiles:[{updates:e,colorScheme:C(n)}]}:{},schemes:t.map(Gy)};return`${JSON.stringify(r,null,2)}
388
- `}var km={id:"windows-terminal",limits:"a picture belongs to a profile, which a pane cannot change, so none; OSC repaints per pane",emit(t){return[{path:`windows-terminal/schemes/${C(t.name)}.json`,content:`${JSON.stringify(Gy(t),null,2)}
389
- `}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:$m(t)}]}};function mH(t){let e=t.replace(hs,"");return/^[ \t]*\[colors[\].]/m.test(e)||/^[ \t]*colors[ \t]*[.=]/m.test(e)}var pH=/^[ \t]*\[general\][ \t]*(?:#.*)?$/m,By=/^[ \t]*\[/m,Uy=/^[ \t]*import[ \t]*=/m,gH=/^[ \t]*general[ \t]*[.=]/m;function Em(t){return`import = [${JSON.stringify(t)}]`}function ym(t,e){let n=t.replace(hs,""),r=pH.exec(n);if(!r){let a=n.search(By),c=a<0?n:n.slice(0,a);if(gH.test(n)||Uy.test(c))return;return Qr(t,`# ${ke}
373
+ `}function By(t){if(t==="")return pm();return Object.keys(ws).reduce(HH,t)}var nl=/["$`\\]/;function LH(t){return t.replace(/_\([^)]*\)$/,"").replaceAll("_"," ")}function gm(t,e,n=[],r={},i=[]){for(let l of t)for(let d of[l.name,l.group,l.native??"",...l.nativeNames??[],l.ansiSource])if(nl.test(d))throw Error(`${l.name}: "${d}" contains a character that breaks zsh quoting`);let o=Math.max(0,...t.map((l)=>l.name.length)),s=(l,d)=>` ${l.name.padEnd(o)} "${d}"`,a=(l)=>l.map((d)=>d.name).join(" "),c=Tt(t),u=(l)=>`'${l.replaceAll("'","'\\''")}'`,f=gs.filter((l)=>l.section!=="setup"&&!l.hidden);return["# Generated by `mise run build` — do not edit.","# Source of truth: themes/*.toml in the ttheme repo.","",`typeset -g TTHEME_VERSION=${lt.version}`,"",'# the palette new tabs open with, which the iTerm2 "ttheme · default" profile wears',`typeset -g TTHEME_STARTUP=${e??""}`,"","# the terminals ttheme is wired into: a picture change reaches every one of them, from whichever runs the shell",`typeset -ga TTHEME_TERMINALS=(${n.join(" ")})`,...Object.keys(r).length>0?["","# what a wired terminal's adapter needs to know of it (src/terminals/)",...Object.entries(r).map(([l,d])=>`typeset -g ${l}=${u(d)}`)]:[],"","# the commands the shell layer knows (src/verbs.ts): help, completion and argument checks read them",`typeset -ga TTHEME_VERBS=(${f.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_TAB_VERBS=(${f.filter((l)=>l.section==="tab").map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_SHELL_VERBS=(${f.filter((l)=>l.shell).map((l)=>l.name).join(" ")})`,"typeset -gA TTHEME_VERB_ARGS=(",...f.map((l)=>` ${l.name} ${u(l.args.join(" "))}`),")","typeset -gA TTHEME_VERB_ABOUT=(",...f.map((l)=>` ${l.name} ${u(l.about)}`),")",`typeset -g TTHEME_HELP=${u(Ca(!1,!0))}`,`typeset -g TTHEME_HELP_ALL=${u(Ca(!0,!0))}`,"","# the screens the bare ttheme switches between (src/hub.ts): the exit status of a screen run by the CLI says where it went",`typeset -ga TTHEME_HUB_TABS=(${ar.map((l)=>l.name).join(" ")})`,`typeset -ga TTHEME_HUB_TITLES=(${ar.map((l)=>l.title).join(" ")})`,`typeset -gi TTHEME_HUB_CLOSED=${Hu} TTHEME_HUB_SWITCH=${Fu}`,"","# the settings config.zsh holds, handed to the CLI on every call",`typeset -ga TTHEME_SETTINGS=(${Qu.join(" ")})`,"","# seed for `ttheme config` when no config.zsh exists yet",`typeset -g TTHEME_CONFIG_TEMPLATE='${pm().trimEnd().replaceAll("'","'\\''")}'`,"","typeset -gA TTHEME_PALETTE=(",...t.map((l)=>s(l,[l.background,l.foreground,l.cursor,l.selection,...l.ansi].join(" "))),")","","# the palettes whose colors your tone moves off their market's (tone.json): lists mark them, and preview's panel offers to reset them",`typeset -ga TTHEME_TUNED=(${t.filter((l)=>i.includes(l.name)).map((l)=>l.name).join(" ")})`,"","# series order: new tabs cycle through it and TTHEME_SORT=series lists it — the default role stays applyable but unlisted",`typeset -ga TTHEME_ORDER=(${a(c)})`,"","# the same palettes by series name, then palette name: TTHEME_SORT=abc lists them this way",`typeset -ga TTHEME_ABC=(${a(_i(c))})`,"","typeset -gA TTHEME_GROUP=(",...t.map((l)=>s(l,l.group)),")","","# the catalog a market palette sits in — the folder under the market's palettes/, one level below the market in every list","typeset -gA TTHEME_CATALOG=(",...t.filter((l)=>l.catalog).map((l)=>s(l,l.catalog??"")),")","","# original-language title, rendered dim next to the group","typeset -gA TTHEME_NATIVE=(",...t.filter((l)=>l.native).map((l)=>s(l,l.native??"")),")","","# the character's names in its original language, |-separated, and as its booru tag spells it: preview searches both","typeset -gA TTHEME_NATIVE_NAMES=(",...t.filter((l)=>l.nativeNames).map((l)=>s(l,(l.nativeNames??[]).join("|"))),")","typeset -gA TTHEME_CHARACTER=(",...t.filter((l)=>l.booru&&!nl.test(l.booru)).map((l)=>s(l,LH(l.booru??""))),")","","# the example scenes preview draws beside the list (src/scenes.ts), each line as «role»text runs",`typeset -ga TTHEME_SCENES=(${Vt.map((l)=>l.name).join(" ")})`,...Vt.flatMap((l,d)=>[`typeset -ga TTHEME_SCENE_${d+1}=(`,...l.lines.map((h)=>` ${u(h)}`),")"]),"","# each booru's ANSI color, which marks a link to one of its posts",`typeset -gA TTHEME_SITE_ANSI=(${Z.map((l)=>`${l.name} ${l.ansi}`).join(" ")})`,"","# the terminals that open OSC 8 links (src/terminal.ts)",`typeset -ga TTHEME_LINKS=(${Object.entries($e).flatMap(([l,d])=>d.links?[l]:[]).join(" ")})`,"","# the six colors a list row shows: foreground, the signature, then red and green","typeset -gA TTHEME_SWATCH=(",...t.map((l)=>s(l,bu(l).join(" "))),")","","# where each palette's 16 ANSI colors came from","typeset -gA TTHEME_SRC=(",...t.map((l)=>s(l,l.ansiSource)),")",""].join(`
374
+ `)}function Uy(t){let e=Object.entries(t).flatMap(([r,i])=>{let o=i.filter((s)=>!nl.test(s)&&!s.includes("|"));return o.length>0&&!nl.test(r)?[[r,o.join("|")]]:[]}),n=Math.max(0,...e.map(([r])=>r.length));return["# the character's other names in every language, |-separated, from the aninames index in the cache: preview reads this when it opens and searches them too","typeset -gA TTHEME_ALIASES=(",...e.map(([r,i])=>` ${r.padEnd(n)} "${i}"`),")",""].join(`
375
+ `)}var bm={id:"shell",emitShared(t){return[{path:"shell/palettes.zsh",content:gm(t.map(an))}]}};import{execFileSync as CH}from"node:child_process";import{existsSync as Wy,readdirSync as jH,readFileSync as _H}from"node:fs";import{join as Ky}from"node:path";function ct(t){return Wy(t)?_H(t,"utf8"):""}function ft(t,e){return t.startsWith(`${e}/`)?`~${t.slice(e.length)}`:t}function rl(t){let e=t.split(`
376
+ `).filter((n)=>n!==""&&!n.startsWith("#"));return[...new Set(e.map((n)=>n.split(/[ =]/)[0]))].join(", ")}function ln(t,e){let n=ct(t),r=e(n);return r===n?[]:[{file:t,content:r}]}function _a(t){return process.env.XDG_DATA_HOME??Ky(t,".local","share")}function ks(t){return Wy(t)?jH(t).flatMap((e)=>e.startsWith(j(""))?[Ky(t,e)]:[]):[]}function wm(t,e){if(!t.shelf)return[];let n=`${[t.id,t.shelf.from].filter(Boolean).join("/")}/`;return(t.emitter.emit?.(e)??[]).flatMap((r)=>{let i=r.path.startsWith(n)?r.path.slice(n.length):"";return i!==""&&!i.includes("/")?[{file:i,content:r.content}]:[]})}function Ve(){return{platform:process.platform,env:process.env,run:(t,e)=>{try{return CH(t,[...e],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5000}).trim()}catch{return}}}}import{existsSync as Ua}from"node:fs";import{join as ni}from"node:path";var GH=["black","red","green","yellow","blue","magenta","cyan","white"];function zy(t,e){return[t,...GH.map((n,r)=>`${n} = '${e[r]}'`),""].join(`
377
+ `)}var $m={id:"alacritty",limits:"no runtime color API (OSC only)",emit(t){let e=[...Zr(t),"","[colors.primary]",`background = '${t.background}'`,`foreground = '${t.foreground}'`,"","[colors.cursor]",`cursor = '${t.cursor}'`,`text = '${t.background}'`,"","[colors.selection]",`background = '${t.selectionBackground}'`,`text = '${t.foreground}'`,"",zy("[colors.normal]",t.ansi.slice(0,8)),zy("[colors.bright]",t.ansi.slice(8,16))].join(`
378
+ `);return[{path:`alacritty/themes/${j(t.name)}.toml`,content:e}]}};var km={id:"ghostty",emit(t){let e=[...Zr(t),`background = ${t.background}`,`foreground = ${t.foreground}`,`cursor-color = ${t.cursor}`,`selection-background = ${t.selectionBackground}`,`selection-foreground = ${t.foreground}`,...t.ansi.map((n,r)=>`palette = ${r}=${n}`),"","macos-icon = custom-style",`macos-icon-ghost-color = ${t.ghostty.iconGhost}`,`macos-icon-screen-color = ${t.ghostty.iconScreen.join(",")}`,"macos-icon-frame = chrome",""].join(`
379
+ `);return[{path:`ghostty/themes/${j(t.name)}`,content:e}]}};function ei(t){let[e,n,r]=ot(t);return{"Alpha Component":1,"Blue Component":r/255,"Color Space":"P3","Green Component":n/255,"Red Component":e/255}}function qy(t){return{...Object.fromEntries(t.ansi.map((e,n)=>[`Ansi ${n} Color`,ei(e)])),"Background Color":ei(t.background),"Bold Color":ei(t.foreground),"Cursor Color":ei(t.cursor),"Cursor Text Color":ei(t.background),"Foreground Color":ei(t.foreground),"Selected Text Color":ei(t.foreground),"Selection Color":ei(t.selectionBackground)}}function Dy(t){return t?{"Background Image Location":t.image,"Background Image Mode":t.cover?2:3,Blend:t.opacity}:{"Background Image Location":""}}function Jy(t,e,n,r,i=!1){let o=(c,u)=>({Name:`ttheme · ${u}`,Guid:j(u),...r?{"Dynamic Profile Parent GUID":r}:{},"Use Separate Colors for Light and Dark Mode":!1,...Dy(e.get(c.name)),...qy(c)}),s={Name:"ttheme · default",Guid:j("default"),"Dynamic Profile Parent GUID":r,...Dy(void 0)},a=[...n?[o(n,"default")]:i&&r?[s]:[],...t.map((c)=>o(c,c.name))];return`${JSON.stringify({Profiles:a},null,2)}
380
+ `}function BH(t,e){return[` <key>${t}</key>`,"\t<dict>",...Object.entries(e).flatMap(([n,r])=>[` <key>${n}</key>`,typeof r==="string"?` <string>${r}</string>`:` <real>${r}</real>`]),"\t</dict>"].join(`
381
+ `)}var ym={id:"iterm2",limits:"colors are Display P3, the space iTerm2 reads OSC colors in",emit(t){let e=['<?xml version="1.0" encoding="UTF-8"?>','<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">','<plist version="1.0">',"<dict>",...Object.entries(qy(t)).map(([n,r])=>BH(n,r)),"</dict>","</plist>",""].join(`
382
+ `);return[{path:`iterm2/${j(t.name)}.itermcolors`,content:e}]}};var vm={id:"kitty",emit(t){let e=[...Zr(t),`background ${t.background}`,`foreground ${t.foreground}`,`cursor ${t.cursor}`,`cursor_text_color ${t.background}`,`selection_background ${t.selectionBackground}`,`selection_foreground ${t.foreground}`,...t.ansi.map((n,r)=>`color${r} ${n}`),""].join(`
383
+ `);return[{path:`kitty/themes/${j(t.name)}.conf`,content:e}]}};function Yy(t){return[`# ${Nn}`,"import os","",`THEMES = ${JSON.stringify(t.themes)}`,`BACKGROUNDS = ${JSON.stringify(t.backgrounds)}`,"PLACES = {"," 'top-left': 'top-left', 'top-center': 'top', 'top-right': 'top-right',"," 'center-left': 'left', 'center': 'center', 'center-center': 'center', 'center-right': 'right',"," 'bottom-left': 'bottom-left', 'bottom-center': 'bottom', 'bottom-right': 'bottom-right',","}","","shown = {}","faded = {}","worn = {}","","","def locate(path):"," if path.startswith('~/'):"," return os.path.expanduser(path)"," return path if os.path.isabs(path) else os.path.join(BACKGROUNDS, path)","","","def read(path, into):"," try:"," with open(path, encoding='utf-8') as f:"," lines = f.read().splitlines()"," except OSError:"," return False"," for line in lines:"," key, sep, value = line.partition('=')"," key, value = key.strip(), value.strip()"," if not sep or not key or key.startswith('#'):"," continue"," if key == 'config-file':"," read(locate(value.lstrip('?')), into)"," else:"," into[key] = value"," return True","","","def logo(palette):"," c = {}"," if not palette or not read(os.path.join(BACKGROUNDS, palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf'), c):"," return None"," image = c.get('background-image', '')"," try:"," opacity = min(float(c.get('background-image-opacity', '1')), 1.0)"," except ValueError:"," opacity = 1.0"," if not image or opacity <= 0:"," return None"," return locate(image), PLACES.get(c.get('background-image-position', 'center'), 'center'), opacity","","","def fade(path, opacity):"," key = f'{path}#{opacity}'"," if key not in faded:"," from kitty.fast_data_types import load_png_data, png_from_32bit_rgba_data"," with open(path, 'rb') as f:"," rgba, width, height = load_png_data(f.read())"," data = bytearray(rgba)"," data[3::4] = data[3::4].translate(bytes(round(a * opacity) for a in range(256)))"," if len(faded) > 8:"," faded.clear()"," faded[key] = png_from_32bit_rgba_data(bytes(data), width, height)"," return key, faded[key]","","","def show(window):"," want = logo(window.user_vars.get('ttheme_shown') or '')"," if window.id in shown and shown[window.id] == want:"," return"," shown[window.id] = want"," try:"," if want is None:"," window.set_logo('')"," elif want[2] < 1:"," key, png = fade(want[0], want[2])"," window.set_logo(key, want[1], 1, png)"," else:"," window.set_logo(want[0], want[1], 1)"," except Exception:"," shown.pop(window.id, None)","","","def theme(palette):"," path = os.path.join(THEMES, 'ttheme-' + palette.replace('@', '--', 1).replace('/', '--', 1) + '.conf')"," if not palette or not os.path.exists(path):"," return None"," from kitty.colors import parse_colors"," return parse_colors([path])","","","def wear(palette):"," colors = theme(palette) if worn.get('startup') != palette else None"," if colors is None:"," return"," from kitty.colors import patch_colors"," patch_colors(colors[0], colors[1], True, ())"," worn['startup'] = palette","","","def rewear(boss):"," from kitty.colors import patch_colors"," for window in tuple(boss.all_windows):"," colors = theme(window.user_vars.get('ttheme_worn') or '')"," if colors is not None:"," patch_colors(colors[0], colors[1], False, (window,))","","","def on_load(boss, data):"," if getattr(boss, 'ttheme_rewears', False):"," return"," load = boss.load_config_file",""," def reload(*args, **kwargs):"," load(*args, **kwargs)"," worn.pop('startup', None)"," rewear(boss)",""," boss.load_config_file = reload"," boss.ttheme_rewears = True","","","def on_set_user_var(boss, window, data):"," if data['key'] == 'ttheme_shown':"," show(window)"," elif data['key'] == 'ttheme_startup':"," wear(data['value'] or '')","","","def on_focus_change(boss, window, data):"," if data['focused']:"," show(window)","","","def on_close(boss, window, data):"," shown.pop(window.id, None)",""].join(`
384
+ `)}function UH(t){let[e]=t;if(!e)throw Error("manifest needs at least one theme");return{...wu(),palettes:t.map(an)}}var Sm={id:"meta",emitShared(t){return[{path:"manifest.json",content:`${JSON.stringify(UH(t),null,2)}
385
+ `}]}};var Em={id:"terminal-app",limits:"profiles go into its own settings at init, so the archive carries none"};import{createHash as WH}from"node:crypto";var KH=["black","red","green","yellow","blue","magenta","cyan","white"];function Vy(t,e){return[` ${t}:`,...KH.map((n,r)=>` ${n}: "${e[r]}"`)]}function zH(t,e,n){let r=WH("sha1");for(let i of e)r.update(i);return`${j(t)}.${r.digest("hex").slice(0,8)}.${n}`}function Zy(t,e,n){let r=2166136261;for(let i of Buffer.from(`${e}
386
+ ${n.toLowerCase()}`,"utf8"))r=Math.imul(r^i,16777619)>>>0;return`${j(t)}.${r.toString(16).padStart(8,"0")}.png`}function Ga(t,e){return e?zH(t,[e.image,String(Xy(e))],"yaml"):`${j(t)}.yaml`}function Xy(t){return Math.max(0,Math.min(100,Math.round(t.opacity*100)))}function Ba(t,e){return[`name: "${t.name}"`,`background: "${t.background}"`,`foreground: "${t.foreground}"`,`accent: "${t.cursor}"`,`cursor: "${t.cursor}"`,`details: ${St(t.background)<0.18?"darker":"lighter"}`,...e?["background_image:",` path: "${e.image}"`,` opacity: ${Xy(e)}`]:[],"terminal_colors:",...Vy("normal",t.ansi.slice(0,8)),...Vy("bright",t.ansi.slice(8,16)),""].join(`
387
+ `)}var Mm={id:"warp",limits:"no selection color, and Warp paints one theme app-wide",emit(t){return[{path:`warp/themes/${Ga(t.name)}`,content:Ba(t)}]}};var Qy=(t)=>`[${t.map((e)=>`"${e}"`).join(", ")}]`,xm={id:"wezterm",limits:"OSC repaints per pane, pictures show per window",emit(t){let e=["[metadata]",`name = "${j(t.name)}"`,`origin_url = "${t.ansiSource}"`,"","[colors]",`foreground = "${t.foreground}"`,`background = "${t.background}"`,`cursor_bg = "${t.cursor}"`,`cursor_border = "${t.cursor}"`,`cursor_fg = "${t.background}"`,`selection_bg = "${t.selectionBackground}"`,`selection_fg = "${t.foreground}"`,"",`ansi = ${Qy(t.ansi.slice(0,8))}`,`brights = ${Qy(t.ansi.slice(8,16))}`,""].join(`
388
+ `);return[{path:`wezterm/colors/${j(t.name)}.toml`,content:e}]}},ys=(t)=>JSON.stringify(t);function t1(t){return[`-- ${Nn}`,"local wezterm = require 'wezterm'","",`local MODULE = ${ys(t.path)}`,`local COLORS = ${ys(t.colors)}`,`local BACKGROUNDS = ${ys(t.backgrounds)}`,`local STARTUP = ${t.startup?ys(j(t.startup)):"nil"}`,"local PALETTES = {",...t.palettes.map((e)=>` [${ys(e.name)}] = ${ys(e.background)},`),"}","","local X = { left = 'Left', center = 'Center', right = 'Right' }","local Y = { top = 'Top', center = 'Middle', bottom = 'Bottom' }","local SIZE = { cover = 'Cover', contain = 'Contain', stretch = '100%' }","","local function locate(path)"," if path:sub(1, 2) == '~/' then"," return os.getenv('HOME') .. path:sub(2)"," elseif path:sub(1, 1) == '/' or path:match('^%a:[/\\\\]') then"," return path"," end"," return BACKGROUNDS .. '/' .. path","end","","local function read(path, into)"," local f = io.open(path, 'r')"," if not f then"," return false"," end"," for line in f:lines() do"," local key, value = line:match('^%s*([%w%-]+)%s*=%s*(.-)%s*$')"," if key == 'config-file' then"," read(locate((value:gsub('^%?', ''))), into)"," elseif key then"," into[key] = value"," end"," end"," f:close()"," return true","end","","local function layers(palette)"," local color = PALETTES[palette]"," local c = {}"," if not color or not read(BACKGROUNDS .. '/' .. ((palette:gsub('@', '--', 1)):gsub('/', '--', 1)) .. '.conf', c) then"," return nil, 'none'"," end"," local image = c['background-image'] or ''"," local opacity = tonumber(c['background-image-opacity'] or '1') or 1"," if image == '' or opacity <= 0 then"," return nil, 'none'"," end"," local fit = c['background-image-fit'] or 'contain'"," local position = c['background-image-position'] or 'center'"," local y, x = position:match('^(%a+)-(%a+)$')"," local rep = c['background-image-repeat'] == 'true' and 'Repeat' or 'NoRepeat'"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = locate(image) },"," opacity = opacity,"," width = SIZE[fit],"," height = SIZE[fit],"," horizontal_align = X[x or 'center'],"," vertical_align = Y[y or 'center'],"," repeat_x = rep,"," repeat_y = rep,"," },"," }, table.concat({ color, image, opacity, fit, position, rep }, '|')","end","","local function framed(window, view)"," local color, image, opacity, W, H, w, h, x, y, at ="," view:match('^([^|]*)|([^|]*)|([^|]*)|(%d+)|(%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%-?%d+)|(%d)$')"," if not image or image == '' or tonumber(W) == 0 or tonumber(H) == 0 then"," return nil, 'none'"," end"," local d = window:get_dimensions()"," local k = math.max(d.pixel_width / W, d.pixel_height / H)"," local n = tonumber(at) - 1"," local ax, ay = n % 3, n // 3"," local px = function(n) return string.format('%.2fpx', n) end"," return {"," { source = { Color = color }, width = '100%', height = '100%' },"," {"," source = { File = image },"," opacity = tonumber(opacity) or 1,"," width = px(w * k),"," height = px(h * k),"," horizontal_align = 'Left',"," vertical_align = 'Top',"," horizontal_offset = px(ax * (d.pixel_width - W * k) / 2 + x * k),"," vertical_offset = px(ay * (d.pixel_height - H * k) / 2 + y * k),"," repeat_x = 'NoRepeat',"," repeat_y = 'NoRepeat',"," },"," }, table.concat({ view, d.pixel_width, d.pixel_height }, '|')","end","","local shown = {}","","local function show(window, pane)"," local vars = pane:get_user_vars()"," local id = window:window_id()"," local background, key"," if vars.ttheme_view and vars.ttheme_view ~= '' then"," background, key = framed(window, vars.ttheme_view)"," elseif vars.ttheme_shown and vars.ttheme_shown ~= '' then"," background, key = layers(vars.ttheme_shown)"," elseif shown[id] == nil then"," return"," end"," if shown[id] == key then"," return"," end"," shown[id] = key"," local overrides = window:get_config_overrides() or {}"," overrides.background = background"," window:set_config_overrides(overrides)","end","","wezterm.on('user-var-changed', function(window, pane, name)"," if name == 'ttheme_shown' or name == 'ttheme_view' then"," show(window, pane)"," end","end)","wezterm.on('update-status', show)","","return function(config)"," local dirs = config.color_scheme_dirs or {}"," table.insert(dirs, COLORS)"," config.color_scheme_dirs = dirs"," if STARTUP then"," config.color_scheme = STARTUP"," end"," wezterm.add_to_config_reload_watch_list(MODULE)","end",""].join(`
389
+ `)}var e1=["black","red","green","yellow","blue","purple","cyan","white"];function n1(t){return{name:j(t.name),background:t.background,foreground:t.foreground,cursorColor:t.cursor,selectionBackground:t.selectionBackground,...Object.fromEntries(e1.map((e,n)=>[e,t.ansi[n]])),...Object.fromEntries(e1.map((e,n)=>[`bright${e[0]?.toUpperCase()}${e.slice(1)}`,t.ansi[n+8]]))}}function Om(t,e,n){let r={...e&&n?{profiles:[{updates:e,colorScheme:j(n)}]}:{},schemes:t.map(n1)};return`${JSON.stringify(r,null,2)}
390
+ `}var Pm={id:"windows-terminal",limits:"a picture belongs to a profile, which a pane cannot change, so none; OSC repaints per pane",emit(t){return[{path:`windows-terminal/schemes/${j(t.name)}.json`,content:`${JSON.stringify(n1(t),null,2)}
391
+ `}]},emitShared(t){return[{path:"windows-terminal/ttheme.json",content:Om(t)}]}};function DH(t){let e=t.replace(Qi,"");return/^[ \t]*\[colors[\].]/m.test(e)||/^[ \t]*colors[ \t]*[.=]/m.test(e)}var qH=/^[ \t]*\[general\][ \t]*(?:#.*)?\r?$/m,r1=/^[ \t]*\[/m,i1=/^[ \t]*import[ \t]*=/m,JH=/^[ \t]*general[ \t]*[.=]/m;function Am(t){return`import = [${JSON.stringify(t)}]`}function Im(t,e){let n=t.replace(Qi,""),r=qH.exec(n);if(!r){let a=n.search(r1),c=a<0?n:n.slice(0,a);if(JH.test(n)||i1.test(c))return;return Qr(t,`# ${ke}
390
392
  [general]
391
- ${Em(e)}`)}let i=r.index+r[0].length,o=n.slice(i),s=o.search(By);if(Uy.test(s<0?o:o.slice(0,s)))return;return`${n.slice(0,i)}
392
- ${im}
393
+ ${Am(e)}`)}let i=r.index+r[0].length,o=n.slice(i),s=o.search(r1);if(i1.test(s<0?o:o.slice(0,s)))return;return`${n.slice(0,i)}
394
+ ${dm}
393
395
  # ${ke}
394
- ${Em(e)}
395
- ${om}${o}`}function Wy(t){return[...new Set([ni(t.configHome,"alacritty","alacritty.toml"),ni(t.configHome,"alacritty.toml"),ni(t.home,".config","alacritty","alacritty.toml"),ni(t.home,".alacritty.toml")])]}function vm(t){let e=Wy(t),n=e.find((i)=>Vu(i));if(n)return{file:n};let r=e.map((i)=>i.replace(/\.toml$/,".yml")).find((i)=>Vu(i));return{file:e[0],...r?{yaml:r}:{}}}function Sm(t){return ni(t,"ttheme","alacritty.toml")}function bH(t){return[`# ${Pn}`,...t?["[general]",Em(t)]:[],""].join(`
396
- `)}function Zu(t){let e=Sm(t.configHome);return Xr(e,t.home,"~")??e}function Ky(t){return ni(t.configHome,"alacritty","themes")}function wH(t){return t.startup?ni(Ky(t),`${C(t.startup)}.toml`):void 0}var Mm={id:"alacritty",name:"Alacritty",emitter:fm,shelf:{from:"themes",dir:Ky},offered:()=>!0,present:(t)=>Vu(ni(t.configHome,"alacritty")),sync(t,e){e.themes(Mm),e.write(Sm(t.configHome),bH(wH(t)));let n=vm(t),r=n.yaml?void 0:ym(lt(n.file),Zu(t));if(r!==void 0)e.wire(n.file,r)},plan(t){let e=vm(t);return!e.yaml&&ym(lt(e.file),Zu(t))!==void 0?[`Edit ${wt(e.file,t.home)} — a ttheme block: general.import`,`Write ${wt(Sm(t.configHome),t.home)} — general.import`]:[]},notes(t){let e=vm(t);if(e.yaml)return[`${wt(e.yaml,t.home)} is the config Alacritty reads, and ttheme edits TOML only — \`alacritty migrate\` converts it, and ttheme wires the TOML at its next add, remove or default`];let n=lt(e.file);return[...Vu(e.file)&&ym(n,Zu(t))===void 0?[`${wt(e.file,t.home)} already imports files under [general] — ttheme left it alone; add ${Zu(t)} to that import list yourself`]:[],...t.startup&&mH(n)?[`${wt(e.file,t.home)} sets its own colors, which win over an imported palette — remove them to open with ttheme's`]:[]]},next:()=>["Alacritty Reloads its config by itself"],unwire:(t)=>({edits:Wy(t).flatMap((e)=>un(e,ur)),removals:[],touches:[]})};import{existsSync as $H}from"node:fs";import{join as ln}from"node:path";var kH=["background","foreground","palette","cursor-color","cursor-text","selection-background","selection-foreground"];function Xu(t){return ln(t,"ghostty","config")}function zy(t){return ln(t,"ttheme","ghostty.conf")}function yH(t,e=process.platform){let n=ln(t.home,"Library","Application Support","com.mitchellh.ghostty");return[Xu(t.configHome),ln(t.configHome,"ghostty","config.ghostty"),...e==="darwin"?[ln(n,"config"),ln(n,"config.ghostty")]:[]]}function Qu(t,e){return yH(t).find((n)=>ms(lt(n),e))}function vH(t,e){let n=ln(t,"ghostty.conf");return`# ${ke}
397
- config-file = ?${Xr(n,e,"~")??n}`}function EH(t,e,n,r){return[`# ${Pn}`,...n?[`command = ${t}/launch-tab.zsh`,...r?["shell-integration = zsh"]:[]]:[],...e?[`theme = ${C(e)}`]:[],"config-file = ?backgrounds/shown.conf",""].join(`
398
- `)}function Dy(t){return gs(t.configHome,"TTHEME_TAB_PALETTE")!=="off"}function qy(t){return EH(ln(t.configHome,"ttheme"),t.startup,Dy(t)&&Qu(t,"command")===void 0,Qu(t,"shell-integration")===void 0)}var xm={id:"ghostty",name:"Ghostty",emitter:dm,shelf:{from:"themes",dir:(t)=>ln(t.configHome,"ghostty","themes")},offered:()=>!0,present:(t)=>$H(ln(t.configHome,"ghostty")),sync(t,e){e.themes(xm),e.write(zy(t.configHome),qy(t));let n=Xu(t.configHome);e.wire(n,Qr(lt(n),vH(ln(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${wt(Xu(t.configHome),t.home)} — a ttheme block: config-file`,`Write ${wt(zy(t.configHome),t.home)} — ${Yu(qy(t))}`]},notes(t){let e=Qu(t,"command"),n=t.startup?kH.map((r)=>Qu(t,r)).find(Boolean):void 0;return[...e&&Dy(t)?[`${wt(e,t.home)} sets its own command — ttheme leaves it, so a new tab takes its palette once zsh starts`]:[],...n?[`${wt(n,t.home)} sets its own colors, which win over a theme — remove them to open with ttheme's`]:[]]},next:()=>["Restart Ghostty New tabs pick up its config"],unwire:(t)=>({edits:un(Xu(t.configHome),ur),removals:[],touches:[]})};import{existsSync as Jy}from"node:fs";import{join as Vy}from"node:path";var Om="ttheme-default";function $s(t){return Vy(t,"Library","Application Support","iTerm2","DynamicProfiles","ttheme.json")}function Xy(t){return t.itermBase!==void 0&&t.palettes.length>0}function Yy(t){let e=X(t.configHome),n=new Map;for(let i of t.themes){let o=Te(e,i.name,t.home);if(o)n.set(i.name,o)}let r=new Set(Tt(t.entries).map((i)=>i.name));return Ny(t.themes.filter((i)=>r.has(i.name)),n,t.themes.find((i)=>i.name===t.startup),t.state.itermBase,Xy(t.state))}function Im(t){return t.env.TTHEME_ITERM_SUITE??"com.googlecode.iterm2"}function Zy(t){return t.run("defaults",["read",Im(t),"Default Bookmark Guid"])||void 0}function SH(t){return t.run("defaults",["read",Im(t),"PreventEscapeSequenceFromChangingProfile"])==="0"}var MH={key:"itermBase",profile:()=>"ttheme · default",base(t){let e=Zy(t.host);return e&&!e.startsWith("ttheme-")?{...t.state,itermBase:e}:t.state},point(t,e){let n=Zy(t.host),r=t.startup?e||n===Om?Om:void 0:n===Om&&!Xy(t.state)?t.state.itermBase:void 0;if(!r||r===n)return;return t.host.run("defaults",["write",Im(t.host),"Default Bookmark Guid","-string",r]),{restart:Boolean(t.host.run("pgrep",["-x","iTerm2"]))}}},Qy={id:"iterm2",name:"iTerm2",emitter:hm,bakes:!0,offered:(t,e)=>e.platform==="darwin",present:(t)=>Jy(Vy(t.home,"Library","Application Support","iTerm2")),sync(t,e){e.write($s(t.home),Yy(t))},pictures(t,e){e.write($s(t.home),Yy(t))},layer:(t,e)=>({TTHEME_ITERM_SWITCH:SH(e)?"1":"",TTHEME_ITERM_PROFILES:$s(t.home)}),plan:(t)=>[`Write ${wt($s(t.home),t.home)} — a "ttheme · <palette>" profile per palette`],notes:()=>[],next(t,e){let n=['iTerm2 profiles A "ttheme · <palette>" per palette in Settings › Profiles'];if(t.startup)n.push(e?.restart?`Restart iTerm2 New tabs open on "ttheme · default", which wears ${t.startup}`:`iTerm2 default "ttheme · default" wears ${t.startup} and follows \`ttheme default\``);return n},unwire:(t)=>({edits:[],removals:Jy($s(t.home))?[$s(t.home)]:[],touches:[]}),defaults:MH};import{existsSync as xH}from"node:fs";import{join as ri}from"node:path";function OH(t,e){let n=ri(t,"kitty.conf");return`# ${ke}
399
- include ${Xr(n,e,"~")??n}`}function IH(t,e,n=""){return[`# ${Pn}`,...t?[`include ${t}`]:[],`watcher ${e}`,...["window_logo_scale 100","window_logo_alpha 1"].filter((r)=>!ms(n,r.split(" ")[0])),""].join(`
400
- `)}function Ha(t){return ri(t,"kitty","kitty.conf")}function t1(t){return ri(t,"ttheme","kitty.conf")}function n1(t){return ri(t,"ttheme","kitty.py")}function Rm(t){return ri(t.configHome,"kitty","themes")}function e1(t){return IH(t.startup&&ri(Rm(t),`${C(t.startup)}.conf`),n1(t.configHome),lt(Ha(t.configHome)))}var Pm={id:"kitty",name:"kitty",emitter:mm,shelf:{from:"themes",dir:Rm},offered:()=>!0,present:(t)=>xH(ri(t.configHome,"kitty")),sync(t,e){e.themes(Pm),e.write(n1(t.configHome),Ty({themes:Rm(t),backgrounds:X(t.configHome)})),e.write(t1(t.configHome),e1(t));let n=Ha(t.configHome);e.wire(n,Qr(lt(n),OH(ri(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${wt(Ha(t.configHome),t.home)} — a ttheme block: include`,`Write ${wt(t1(t.configHome),t.home)} — ${Yu(e1(t))}`]},notes(t){let e=lt(Ha(t.configHome));return ms(e,"window_logo_scale")||ms(e,"window_logo_alpha")?["kitty.conf sets its own window_logo_scale or window_logo_alpha — pictures are drawn with them"]:[]},next:()=>["New kitty window Pictures follow it — kitty reloads its colors by itself"],unwire:(t)=>({edits:un(Ha(t.configHome),ur),removals:[],touches:[]})};import{createHash as RH}from"node:crypto";import{existsSync as tl}from"node:fs";import{basename as i1,isAbsolute as PH,join as Yi}from"node:path";function ks(t){return Yi(Aa(t),"konsole")}function Fa(t){return Yi(t,"konsolerc")}function o1(t){return`${C(t)}.profile`}function La(t){return`ttheme · ${t}`}function s1(t,e){let n=t.findIndex((i)=>i.trim()===`[${e}]`);if(n<0)return;let r=t.findIndex((i,o)=>o>n&&i.trimStart().startsWith("["));return[n,r<0?t.length:r]}function Am(t){return new RegExp(String.raw`^\s*${t}\s*=`)}function ii(t,e,n){let r=t.split(`
401
- `),i=s1(r,e);return(i&&r.slice(i[0]+1,i[1]).find((s)=>Am(n).test(s)))?.replace(Am(n),"").trim()}function a1(t,e){let n=t.split(`
402
- `),r=s1(n,"Desktop Entry"),i=e===void 0?[]:[`DefaultProfile=${e}`];if(!r)return e===void 0?t:`${t===""?"":t.replace(/\n*$/,`
396
+ ${Am(e)}
397
+ ${hm}${o}`}function o1(t){return[...new Set([ni(t.configHome,"alacritty","alacritty.toml"),ni(t.configHome,"alacritty.toml"),ni(t.home,".config","alacritty","alacritty.toml"),ni(t.home,".alacritty.toml")])]}function YH(t){let e=ct(t);return Qi.test(e)&&Tn(e)===""&&!Ua(ea(t))}function Rm(t){let e=o1(t),n=e.filter(YH),r=e.find((o)=>Ua(o)&&!n.includes(o)),i=r?void 0:e.map((o)=>o.replace(/\.toml$/,".yml")).find((o)=>Ua(o));if(!r&&!i)return{file:n[0]??e[0]};return{file:r??e[0],...i?{yaml:i}:{},...n.length>0?{leftover:n}:{}}}function Nm(t){return ni(t,"ttheme","alacritty.toml")}function VH(t){return[`# ${Nn}`,...t?["[general]",Am(t)]:[],""].join(`
398
+ `)}function il(t){let e=Nm(t.configHome);return Xr(e,t.home,"~")??e}function s1(t){return ni(t.configHome,"alacritty","themes")}function ZH(t){return t.startup?ni(s1(t),`${j(t.startup)}.toml`):void 0}var Tm={id:"alacritty",name:"Alacritty",emitter:$m,shelf:{from:"themes",dir:s1},offered:()=>!0,present:(t)=>Ua(ni(t.configHome,"alacritty")),sync(t,e){e.themes(Tm),e.write(Nm(t.configHome),VH(ZH(t)));let n=Rm(t);for(let i of n.leftover??[])e.remove(i);let r=n.yaml?void 0:Im(ct(n.file),il(t));if(r!==void 0)e.wire(n.file,r)},plan(t){let e=Rm(t);return!e.yaml&&Im(ct(e.file),il(t))!==void 0?[`Edit ${ft(e.file,t.home)} — a ttheme block: general.import`,`Write ${ft(Nm(t.configHome),t.home)} — general.import`]:[]},notes(t){let e=Rm(t),n=(e.leftover??[]).map((i)=>`${ft(i,t.home)} held only ttheme's import and hid ${ft(e.yaml??e.file,t.home)} from Alacritty — ttheme removed it`);if(e.yaml)return[...n,`${ft(e.yaml,t.home)} is the config Alacritty reads, and ttheme edits TOML only — \`alacritty migrate\` converts it, and ttheme wires the TOML at its next add, remove or default`];let r=ct(e.file);return[...n,...Ua(e.file)&&Im(r,il(t))===void 0?[`${ft(e.file,t.home)} already imports files under [general] — ttheme left it alone; add ${il(t)} to that import list yourself`]:[],...t.startup&&DH(r)?[`${ft(e.file,t.home)} sets its own colors, which win over an imported palette — remove them to open with ttheme's`]:[]]},next:()=>["Alacritty Reloads its config by itself"],unwire:(t)=>({edits:o1(t).flatMap((e)=>ln(e,Tn)),removals:[],touches:[]})};import{existsSync as XH}from"node:fs";import{join as fn}from"node:path";var QH=["background","foreground","palette","cursor-color","cursor-text","selection-background","selection-foreground"];function ol(t){return fn(t,"ghostty","config")}function a1(t){return fn(t,"ttheme","ghostty.conf")}function tF(t,e=process.platform){let n=fn(t.home,"Library","Application Support","com.mitchellh.ghostty");return[ol(t.configHome),fn(t.configHome,"ghostty","config.ghostty"),...e==="darwin"?[fn(n,"config"),fn(n,"config.ghostty")]:[]]}function sl(t,e){return tF(t).find((n)=>bs(ct(n),e))}function eF(t,e){let n=fn(t,"ghostty.conf");return`# ${ke}
399
+ config-file = ?${Xr(n,e,"~")??n}`}function nF(t,e,n,r){return[`# ${Nn}`,...n?[`command = ${t}/launch-tab.zsh`,...r?["shell-integration = zsh"]:[]]:[],...e?[`theme = ${j(e)}`]:[],"config-file = ?backgrounds/shown.conf",""].join(`
400
+ `)}function u1(t){return $s(t.configHome,"TTHEME_TAB_PALETTE")!=="off"}function c1(t){return nF(fn(t.configHome,"ttheme"),t.startup,u1(t)&&sl(t,"command")===void 0,sl(t,"shell-integration")===void 0)}var Hm={id:"ghostty",name:"Ghostty",emitter:km,shelf:{from:"themes",dir:(t)=>fn(t.configHome,"ghostty","themes")},offered:()=>!0,present:(t)=>XH(fn(t.configHome,"ghostty")),sync(t,e){e.themes(Hm),e.write(a1(t.configHome),c1(t));let n=ol(t.configHome);e.wire(n,Qr(ct(n),eF(fn(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${ft(ol(t.configHome),t.home)} — a ttheme block: config-file`,`Write ${ft(a1(t.configHome),t.home)} — ${rl(c1(t))}`]},notes(t){let e=sl(t,"command"),n=t.startup?QH.map((r)=>sl(t,r)).find(Boolean):void 0;return[...e&&u1(t)?[`${ft(e,t.home)} sets its own command — ttheme leaves it, so a new tab takes its palette once zsh starts`]:[],...n?[`${ft(n,t.home)} sets its own colors, which win over a theme — remove them to open with ttheme's`]:[]]},next:()=>["Restart Ghostty New tabs pick up its config"],unwire:(t)=>({edits:ln(ol(t.configHome),Tn),removals:[],touches:[]})};import{existsSync as l1}from"node:fs";import{join as h1}from"node:path";var Fm="ttheme-default";function vs(t){return h1(t,"Library","Application Support","iTerm2","DynamicProfiles","ttheme.json")}function m1(t){return t.itermBase!==void 0&&t.palettes.length>0}function f1(t){let e=X(t.configHome),n=new Map;for(let i of t.themes){let o=He(e,i.name,t.home);if(o)n.set(i.name,o)}let r=new Set(Tt(t.entries).map((i)=>i.name));return Jy(t.themes.filter((i)=>r.has(i.name)),n,t.themes.find((i)=>i.name===t.startup),t.state.itermBase,m1(t.state))}function Lm(t){return t.env.TTHEME_ITERM_SUITE??"com.googlecode.iterm2"}function d1(t){return t.run("defaults",["read",Lm(t),"Default Bookmark Guid"])||void 0}function rF(t){return t.run("defaults",["read",Lm(t),"PreventEscapeSequenceFromChangingProfile"])==="0"}var iF={key:"itermBase",profile:()=>"ttheme · default",base(t){let e=d1(t.host);return e&&!e.startsWith("ttheme-")?{...t.state,itermBase:e}:t.state},point(t,e){let n=d1(t.host),r=t.startup?e||n===Fm?Fm:void 0:n===Fm&&!m1(t.state)?t.state.itermBase:void 0;if(!r||r===n)return;return t.host.run("defaults",["write",Lm(t.host),"Default Bookmark Guid","-string",r]),{restart:Boolean(t.host.run("pgrep",["-x","iTerm2"]))}}},p1={id:"iterm2",name:"iTerm2",emitter:ym,bakes:!0,offered:(t,e)=>e.platform==="darwin",present:(t)=>l1(h1(t.home,"Library","Application Support","iTerm2")),sync(t,e){e.write(vs(t.home),f1(t))},pictures(t,e){e.write(vs(t.home),f1(t))},layer:(t,e)=>({TTHEME_ITERM_SWITCH:rF(e)?"1":"",TTHEME_ITERM_PROFILES:vs(t.home)}),plan:(t)=>[`Write ${ft(vs(t.home),t.home)} — a "ttheme · <palette>" profile per palette`],notes:()=>[],next(t,e){let n=['iTerm2 profiles A "ttheme · <palette>" per palette in Settings › Profiles'];if(t.startup)n.push(e?.restart?`Restart iTerm2 New tabs open on "ttheme · default", which wears ${t.startup}`:`iTerm2 default "ttheme · default" wears ${t.startup} and follows \`ttheme default\``);return n},unwire:(t)=>({edits:[],removals:l1(vs(t.home))?[vs(t.home)]:[],touches:[]}),defaults:iF};import{existsSync as oF}from"node:fs";import{join as ri}from"node:path";function sF(t,e){let n=ri(t,"kitty.conf");return`# ${ke}
401
+ include ${Xr(n,e,"~")??n}`}function aF(t,e,n=""){return[`# ${Nn}`,...t?[`include ${t}`]:[],`watcher ${e}`,...["window_logo_scale 100","window_logo_alpha 1"].filter((r)=>!bs(n,r.split(" ")[0])),""].join(`
402
+ `)}function Wa(t){return ri(t,"kitty","kitty.conf")}function g1(t){return ri(t,"ttheme","kitty.conf")}function w1(t){return ri(t,"ttheme","kitty.py")}function Cm(t){return ri(t.configHome,"kitty","themes")}function b1(t){return aF(t.startup&&ri(Cm(t),`${j(t.startup)}.conf`),w1(t.configHome),ct(Wa(t.configHome)))}var jm={id:"kitty",name:"kitty",emitter:vm,shelf:{from:"themes",dir:Cm},offered:()=>!0,present:(t)=>oF(ri(t.configHome,"kitty")),sync(t,e){e.themes(jm),e.write(w1(t.configHome),Yy({themes:Cm(t),backgrounds:X(t.configHome)})),e.write(g1(t.configHome),b1(t));let n=Wa(t.configHome);e.wire(n,Qr(ct(n),sF(ri(t.configHome,"ttheme"),t.home)))},plan(t){return[`Edit ${ft(Wa(t.configHome),t.home)} — a ttheme block: include`,`Write ${ft(g1(t.configHome),t.home)} — ${rl(b1(t))}`]},notes(t){let e=ct(Wa(t.configHome));return bs(e,"window_logo_scale")||bs(e,"window_logo_alpha")?["kitty.conf sets its own window_logo_scale or window_logo_alpha — pictures are drawn with them"]:[]},next:()=>["New kitty window Pictures follow it — kitty reloads its colors by itself"],unwire:(t)=>({edits:ln(Wa(t.configHome),Tn),removals:[],touches:[]})};import{createHash as cF}from"node:crypto";import{existsSync as al}from"node:fs";import{basename as k1,isAbsolute as uF,join as to}from"node:path";function Ss(t){return to(_a(t),"konsole")}function Ka(t){return to(t,"konsolerc")}function y1(t){return`${j(t)}.profile`}function za(t){return`ttheme · ${t}`}function v1(t,e){let n=t.findIndex((i)=>i.trim()===`[${e}]`);if(n<0)return;let r=t.findIndex((i,o)=>o>n&&i.trimStart().startsWith("["));return[n,r<0?t.length:r]}function _m(t){return new RegExp(String.raw`^\s*${t}\s*=`)}function ii(t,e,n){let r=t.split(`
403
+ `),i=v1(r,e);return(i&&r.slice(i[0]+1,i[1]).find((s)=>_m(n).test(s)))?.replace(_m(n),"").trim()}function S1(t,e){let n=t.split(`
404
+ `),r=v1(n,"Desktop Entry"),i=e===void 0?[]:[`DefaultProfile=${e}`];if(!r)return e===void 0?t:`${t===""?"":t.replace(/\n*$/,`
403
405
 
404
406
  `)}[Desktop Entry]
405
407
  ${i[0]}
406
- `;let o=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&Am("DefaultProfile").test(a));if(o>=0)n.splice(o,1,...i);else n.splice(r[0]+1,0,...i);let s=r[1]+i.length-(o>=0?1:0);if(n.slice(r[0]+1,s).every((a)=>a.trim()==="")){let a=r[0]>0&&n[r[0]-1]?.trim()===""?r[0]-1:r[0],c=s===n.length&&n[s-1]===""?s-1:s;n.splice(a,c-a)}return n.join(`
407
- `)}function AH(t){if(t&&he(t.toLowerCase()))return t.toLowerCase();let e=t?.split(",").map((n)=>Number(n.trim()));if(!e||e.length<3||e.slice(0,3).some((n)=>!Number.isInteger(n)||n<0||n>255))return;return`#${e.slice(0,3).map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function c1(t,e){let n=e.endsWith(".profile")?e:`${e}.profile`;if(PH(n))return tl(n)?n:void 0;let r=n.includes("/")?n:Yi("konsole",n);return[Aa(t.home),...(process.env.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((o)=>Yi(o,r)).find((o)=>tl(o))}function u1(t,e,n=0){let r=e&&e!=="FALLBACK/"&&n<8?c1(t,e):void 0;if(!r)return{};let i=lt(r),o=u1(t,ii(i,"General","Parent"),n+1);return{scheme:ii(i,"Appearance","ColorScheme")||o.scheme,use:ii(i,"Cursor Options","UseCustomCursorColor")??o.use,cursor:ii(i,"Cursor Options","CustomCursorColor")??o.cursor}}function NH(t,e){let n=u1(t,e),r=n.use==="true"?AH(n.cursor):void 0;return[`ColorScheme=${n.scheme??"Breeze"}`,`UseCustomCursorColor=${r?"true":"false"}`,...r?[`customCursorColor=${r}`]:[]].join(";")}function TH(t,e){return["[Appearance]",`ColorScheme=${C(t.name)}`,"","[Cursor Options]",`CustomCursorColor=${st(t.cursor).join(",")}`,`CustomCursorTextColor=${st(t.background).join(",")}`,"UseCustomCursorColor=true","","[General]",`Name=${La(t.name)}`,`Parent=${e}`,""].join(`
408
- `)}var l1=/^ttheme-(.+)\.([0-9a-f]{8})\.colorscheme$/;function HH(t){return RH("sha1").update(t).digest("hex").slice(0,8)}function r1(t,e){let n=ks(t.home),r=X(t.configHome),i=new Set;for(let o of t.themes){let s=Jh(o,Te(r,o.name,t.home)),a=Yi(n,`${C(o.name)}.${HH(s)}.colorscheme`);i.add(a),e.write(Yi(n,`${C(o.name)}.colorscheme`),s),e.write(a,s)}for(let o of bs(n))if(l1.test(i1(o))&&!i.has(o))e.remove(o)}function FH(t){return bs(t).flatMap((e)=>{let[,n,r]=l1.exec(i1(e))??[];return n&&r?[`${n} ${r}`]:[]}).sort().join(" ")}function LH(t){let e=new Set(Tt(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}var Nm=["--session","--print-reply","--reply-timeout=2000"];function CH(t){return[...(t.run("dbus-send",[...Nm,"--dest=org.freedesktop.DBus","/org/freedesktop/DBus","org.freedesktop.DBus.ListNames"])??"").matchAll(/string "(org\.kde\.konsole(?:-\d+)?)"/g)].flatMap(([,n=""])=>{let i=t.run("dbus-send",[...Nm,`--dest=${n}`,"/Windows","org.freedesktop.DBus.Introspectable.Introspect"])?.match(/<node name="(\d+)"/)?.[1];return i?[{service:n,window:`/Windows/${i}`}]:[]})}function jH(t,{service:e,window:n},r){let i=(o,...s)=>t.run("dbus-send",[...Nm,`--dest=${e}`,n,`org.kde.konsole.Window.${o}`,...s]);return i("setDefaultProfile",`string:${r}`),i("defaultProfile")?.includes(`string "${r}"`)===!0}function _H(t,e){let n=c1(t,e);return n?ii(lt(n),"General","Name"):void 0}function GH(t){return ii(lt(Fa(t)),"Desktop Entry","DefaultProfile")}var BH={key:"konsoleBase",profile:La,base(t){let e=GH(t.configHome);return e&&!e.startsWith(C(""))?{...t.state,konsoleBase:e}:t.state},point(t,e){let n=Fa(t.configHome),r=lt(n),i=ii(r,"Desktop Entry","DefaultProfile"),o=i?.startsWith(C(""))===!0,s=t.startup?e||o?o1(t.startup):void 0:o?t.state.konsoleBase??"":void 0;if(s===void 0||s===(i??"")&&!e)return;if(s!==(i??""))kn(n,a1(r,s||void 0));let a=t.startup?La(t.startup):s?_H(t,s):void 0,c=CH(t.host),u=a!==void 0&&c.every((f)=>jH(t.host,f,a));return{restart:c.length>0&&!u}}},f1={id:"konsole",name:"Konsole",emitter:Yh,shelf:{from:"",dir:(t)=>ks(t.home)},offered:(t,e)=>e.platform!=="darwin"&&e.platform!=="win32",present:(t)=>tl(ks(t.home))||tl(Fa(t.configHome)),sync(t,e){r1(t,e);let n=ks(t.home),r=t.state.konsoleBase??"FALLBACK/",i=new Set;for(let o of LH(t)){let s=Yi(n,o1(o.name));i.add(s),e.write(s,TH(o,r))}for(let o of bs(n))if(o.endsWith(".profile")&&!i.has(o))e.remove(o)},pictures:r1,layer:(t)=>({TTHEME_KONSOLE_BASE:NH(t,t.state.konsoleBase),TTHEME_KONSOLE_SCHEMES:FH(ks(t.home))}),plan(t){return[`Write ${wt(ks(t.home),t.home)}/${C("*")}.profile — a "ttheme · <palette>" profile per palette, on top of your own`,...t.startup?[`Edit ${wt(Fa(t.configHome),t.home)} — DefaultProfile; \`ttheme off\` puts yours back`]:[]]},notes:()=>[],next(t,e){let n=['Konsole profiles A "ttheme · <palette>" per palette in its profile list'];if(t.startup)n.push(e?.restart?`Restart Konsole New tabs open on "${La(t.startup)}"`:`Konsole default "${La(t.startup)}", which follows \`ttheme default\``);return n},unwire(t,e){let n=Fa(t.configHome),r=lt(n);return{edits:ii(r,"Desktop Entry","DefaultProfile")?.startsWith(C(""))?[{file:n,content:a1(r,e?.konsoleBase)}]:[],removals:[],touches:[]}},defaults:BH};import{createHash as UH}from"node:crypto";import{existsSync as m1,readdirSync as WH,readFileSync as KH,rmSync as zH}from"node:fs";import{join as Zi}from"node:path";var p1="com.apple.Terminal",Ca="ttheme · ";function fn(t){return`${Ca}${t}`}function el(t){return Zi(t,"ttheme","terminal-app.js")}function ys(t){return Zi(t,"ttheme","terminal-app")}function qH(t,e){return Zi(t.XDG_STATE_HOME??Zi(e,".local","state"),"ttheme","terminal-app.window")}var DH=`ObjC.import('AppKit')
408
+ `;let o=n.findIndex((a,c)=>c>r[0]&&c<r[1]&&_m("DefaultProfile").test(a));if(o>=0)n.splice(o,1,...i);else n.splice(r[0]+1,0,...i);let s=r[1]+i.length-(o>=0?1:0);if(n.slice(r[0]+1,s).every((a)=>a.trim()==="")){let a=r[0]>0&&n[r[0]-1]?.trim()===""?r[0]-1:r[0],c=s===n.length&&n[s-1]===""?s-1:s;n.splice(a,c-a)}return n.join(`
409
+ `)}function lF(t){if(t&&he(t.toLowerCase()))return t.toLowerCase();let e=t?.split(",").map((n)=>Number(n.trim()));if(!e||e.length<3||e.slice(0,3).some((n)=>!Number.isInteger(n)||n<0||n>255))return;return`#${e.slice(0,3).map((n)=>n.toString(16).padStart(2,"0")).join("")}`}function E1(t,e){let n=e.endsWith(".profile")?e:`${e}.profile`;if(uF(n))return al(n)?n:void 0;let r=n.includes("/")?n:to("konsole",n);return[_a(t.home),...(process.env.XDG_DATA_DIRS||"/usr/local/share:/usr/share").split(":")].map((o)=>to(o,r)).find((o)=>al(o))}function M1(t,e,n=0){let r=e&&e!=="FALLBACK/"&&n<8?E1(t,e):void 0;if(!r)return{};let i=ct(r),o=M1(t,ii(i,"General","Parent"),n+1);return{scheme:ii(i,"Appearance","ColorScheme")||o.scheme,use:ii(i,"Cursor Options","UseCustomCursorColor")??o.use,cursor:ii(i,"Cursor Options","CustomCursorColor")??o.cursor}}function fF(t,e){let n=M1(t,e),r=n.use==="true"?lF(n.cursor):void 0;return[`ColorScheme=${n.scheme??"Breeze"}`,`UseCustomCursorColor=${r?"true":"false"}`,...r?[`customCursorColor=${r}`]:[]].join(";")}function dF(t,e){return["[Appearance]",`ColorScheme=${j(t.name)}`,"","[Cursor Options]",`CustomCursorColor=${ot(t.cursor).join(",")}`,`CustomCursorTextColor=${ot(t.background).join(",")}`,"UseCustomCursorColor=true","","[General]",`Name=${za(t.name)}`,`Parent=${e}`,""].join(`
410
+ `)}var x1=/^ttheme-(.+)\.([0-9a-f]{8})\.colorscheme$/;function hF(t){return cF("sha1").update(t).digest("hex").slice(0,8)}function $1(t,e){let n=Ss(t.home),r=X(t.configHome),i=new Set;for(let o of t.themes){let s=nm(o,He(r,o.name,t.home)),a=to(n,`${j(o.name)}.${hF(s)}.colorscheme`);i.add(a),e.write(to(n,`${j(o.name)}.colorscheme`),s),e.write(a,s)}for(let o of ks(n))if(x1.test(k1(o))&&!i.has(o))e.remove(o)}function mF(t){return ks(t).flatMap((e)=>{let[,n,r]=x1.exec(k1(e))??[];return n&&r?[`${n} ${r}`]:[]}).sort().join(" ")}function pF(t){let e=new Set(Tt(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}var Gm=["--session","--print-reply","--reply-timeout=2000"];function gF(t){return[...(t.run("dbus-send",[...Gm,"--dest=org.freedesktop.DBus","/org/freedesktop/DBus","org.freedesktop.DBus.ListNames"])??"").matchAll(/string "(org\.kde\.konsole(?:-\d+)?)"/g)].flatMap(([,n=""])=>{let i=t.run("dbus-send",[...Gm,`--dest=${n}`,"/Windows","org.freedesktop.DBus.Introspectable.Introspect"])?.match(/<node name="(\d+)"/)?.[1];return i?[{service:n,window:`/Windows/${i}`}]:[]})}function bF(t,{service:e,window:n},r){let i=(o,...s)=>t.run("dbus-send",[...Gm,`--dest=${e}`,n,`org.kde.konsole.Window.${o}`,...s]);return i("setDefaultProfile",`string:${r}`),i("defaultProfile")?.includes(`string "${r}"`)===!0}function wF(t,e){let n=E1(t,e);return n?ii(ct(n),"General","Name"):void 0}function $F(t){return ii(ct(Ka(t)),"Desktop Entry","DefaultProfile")}var kF={key:"konsoleBase",profile:za,base(t){let e=$F(t.configHome);return e&&!e.startsWith(j(""))?{...t.state,konsoleBase:e}:t.state},point(t,e){let n=Ka(t.configHome),r=ct(n),i=ii(r,"Desktop Entry","DefaultProfile"),o=i?.startsWith(j(""))===!0,s=t.startup?e||o?y1(t.startup):void 0:o?t.state.konsoleBase??"":void 0;if(s===void 0||s===(i??"")&&!e)return;if(s!==(i??""))$n(n,S1(r,s||void 0));let a=t.startup?za(t.startup):s?wF(t,s):void 0,c=gF(t.host),u=a!==void 0&&c.every((f)=>bF(t.host,f,a));return{restart:c.length>0&&!u}}},O1={id:"konsole",name:"Konsole",emitter:rm,shelf:{from:"",dir:(t)=>Ss(t.home)},offered:(t,e)=>e.platform!=="darwin"&&e.platform!=="win32",present:(t)=>al(Ss(t.home))||al(Ka(t.configHome)),sync(t,e){$1(t,e);let n=Ss(t.home),r=t.state.konsoleBase??"FALLBACK/",i=new Set;for(let o of pF(t)){let s=to(n,y1(o.name));i.add(s),e.write(s,dF(o,r))}for(let o of ks(n))if(o.endsWith(".profile")&&!i.has(o))e.remove(o)},pictures:$1,layer:(t)=>({TTHEME_KONSOLE_BASE:fF(t,t.state.konsoleBase),TTHEME_KONSOLE_SCHEMES:mF(Ss(t.home))}),plan(t){return[`Write ${ft(Ss(t.home),t.home)}/${j("*")}.profile — a "ttheme · <palette>" profile per palette, on top of your own`,...t.startup?[`Edit ${ft(Ka(t.configHome),t.home)} — DefaultProfile; \`ttheme off\` puts yours back`]:[]]},notes:()=>[],next(t,e){let n=['Konsole profiles A "ttheme · <palette>" per palette in its profile list'];if(t.startup)n.push(e?.restart?`Restart Konsole New tabs open on "${za(t.startup)}"`:`Konsole default "${za(t.startup)}", which follows \`ttheme default\``);return n},unwire(t,e){let n=Ka(t.configHome),r=ct(n),i=ii(r,"Desktop Entry","DefaultProfile")?.startsWith(j(""))===!0;return{edits:i?[{file:n,content:S1(r,e?.konsoleBase)}]:[],removals:i?[]:Qc(n),touches:[]}},defaults:kF};import{createHash as yF}from"node:crypto";import{existsSync as R1,readdirSync as vF,readFileSync as SF,rmSync as EF}from"node:fs";import{join as eo}from"node:path";var A1="com.apple.Terminal",Da="ttheme · ";function dn(t){return`${Da}${t}`}function cl(t){return eo(t,"ttheme","terminal-app.js")}function Es(t){return eo(t,"ttheme","terminal-app")}function MF(t,e){return eo(t.XDG_STATE_HOME??eo(e,".local","state"),"ttheme","terminal-app.window")}var xF=`ObjC.import('AppKit')
409
411
 
410
- const OURS = '${Ca}'
412
+ const OURS = '${Da}'
411
413
  const IMAGE = 'BackgroundImageBookmark'
412
414
  const KEYS = ['BackgroundColor', 'TextColor', 'CursorColor', 'SelectionColor', 'ANSIBlackColor', 'ANSIRedColor',
413
415
  'ANSIGreenColor', 'ANSIYellowColor', 'ANSIBlueColor', 'ANSIMagentaColor', 'ANSICyanColor', 'ANSIWhiteColor',
@@ -591,66 +593,66 @@ function run(argv) {
591
593
  }
592
594
  return changed ? 'wrote' : 'same'
593
595
  }
594
- `;function Tm(t,e,n){return t.run("osascript",["-l","JavaScript",el(e),...n])}function Hm(t){return t.run("defaults",["read",p1,"Default Window Settings"])||void 0}function JH(t){return[t.background,t.foreground,t.cursor,t.selectionBackground,...t.ansi]}function g1(t){let e=new Set(Tt(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}function Fm(t,e){let n=Hm(e);return t.terminalBase??(n&&!n.startsWith(Ca)?n:"Basic")}function Lm(t,e){let n=/^(\d+)x(\d+)$/.exec(lt(qH(t,e)).trim());return n?{width:Number(n[1])*2,height:Number(n[2])*2}:void 0}function Cm(t,e,n,r){let i=r?.width??t,o=r?.height??e,s=qt.indexOf(n.position)+1||5,a=Jo(t,e,i,o,100,s,n.cover),c=Math.min(1,t/Math.max(1,a.w));return{width:Math.max(1,Math.round(i*c)),height:Math.max(1,Math.round(o*c)),at:{x:Math.round(a.x*c),y:Math.round(a.y*c),w:Math.round(a.w*c),h:Math.round(a.h*c)}}}var b1=/^ttheme-(.+)\.([0-9a-z-]+)\.png$/;function nl(t){let e=new Map;for(let n of m1(t)?WH(t):[]){let[,r]=b1.exec(n)??[];if(r)e.set(r,[...e.get(r)??[],n])}return e}function YH(t){return[...nl(t)].map(([e,n])=>`${e} ${(b1.exec(n[0])??[])[2]}`).sort().join(" ")}function d1(t){let e=ys(t.configHome),n=nl(e),r=Lm(t.host.env,t.home),i=new Map,o=(s)=>{for(let a of s)zH(Zi(e,a),{force:!0})};for(let s of g1(t)){let a=n.get(ue(s.name))??[];n.delete(ue(s.name));let c=Te(X(t.configHome),s.name,t.home),u=c&&m1(c.image)?new Uint8Array(KH(c.image)):void 0,f=u&&vn(u);if(!c||!u||!f||c.opacity<=0){o(a);continue}let l=Cm(f.width,f.height,c,r),d=UH("sha1").update(u).update(JSON.stringify([s.background.toLowerCase(),c.opacity,l])).digest("hex").slice(0,8),h=`${C(s.name)}.${d}.png`,m=Zi(e,h);if(!a.includes(h)){let p;try{p=Tr(Nr(Gt(u),s.background,c.opacity,l))}catch{o(a);continue}let[b,...$]=a;if(b)Mi(Zi(e,b),m,p);else L(m,p);o($)}else o(a.filter((p)=>p!==h));i.set(s.name,m)}for(let s of n.values())o(s);return i}function h1(t,e){Tm(t.host,t.configHome,["write",Fm(t.state,t.host),...g1(t).flatMap((n)=>[fn(n.name),...JH(n),e.get(n.name)??"-"])])}var ZH={key:"terminalBase",profile:fn,base(t){let e=Hm(t.host);return e&&!e.startsWith(Ca)?{...t.state,terminalBase:e}:t.state},point(t,e){let n=Hm(t.host),r=n?.startsWith(Ca)===!0;if(t.state.palettes.length===0)Tm(t.host,t.configHome,["drop"]);let i=t.startup?e||r?fn(t.startup):void 0:r?Fm(t.state,t.host):void 0;if(i===void 0||i===n&&!e)return;for(let s of["Default Window Settings","Startup Window Settings"])t.host.run("defaults",["write",p1,s,"-string",i]);return{restart:Boolean(t.host.run("pgrep",["-x","Terminal"]))&&Tm(t.host,t.configHome,["loaded",i])!=="1"}}},w1={id:"terminal-app",name:"Terminal.app",emitter:gm,offered:(t,e)=>e.platform==="darwin",present:()=>!1,sync(t,e){e.write(el(t.configHome),DH),h1(t,d1(t))},pictures(t){h1(t,d1(t))},layer:(t,e)=>({TTHEME_TERMINAL_APP_BASE:Fm(t.state,e),TTHEME_TERMINAL_PICTURES:YH(ys(t.configHome))}),plan:(t)=>[`Add a "${fn("<palette>")}" profile per palette to Terminal.app's settings — a copy of your own profile in the palette's colors, with its picture`,...t.startup?[`Make "${fn(t.startup)}" Terminal.app's default — \`ttheme off\` puts yours back`]:[]],notes:()=>[],next(t,e){let n=[`Terminal.app A "${fn("<palette>")}" profile per palette in Settings › Profiles`];if(t.startup)n.push(e?.restart?`Restart Terminal New windows and tabs open on "${fn(t.startup)}"`:`Terminal default "${fn(t.startup)}", which follows \`ttheme default\``);return n},unwire:()=>({edits:[],removals:[],touches:[]}),defaults:ZH};import{spawn as VH}from"node:child_process";import{existsSync as oi,mkdirSync as XH,readdirSync as jm,readFileSync as _m,realpathSync as QH,rmSync as tF,writeFileSync as eF}from"node:fs";import{dirname as v1,join as Ce}from"node:path";function Vi(t){return process.platform==="darwin"?Ce(t,".warp","themes"):Ce(Aa(t),"warp-terminal","themes")}function si(t,e){return process.platform==="darwin"?Ce(t,".warp","settings.toml"):Ce(e,"warp-terminal","settings.toml")}var rl='"dark"';function il(t){return Ce(t,"ttheme","warp.base")}var E1="[appearance.themes]";function S1(t){let e=t.findIndex((r)=>r.trim()===E1);if(e<0)return;let n=t.findIndex((r,i)=>i>e&&r.trimStart().startsWith("["));return[e,n<0?t.length:n]}function ai(t){let e=t.split(`
595
- `),n=S1(e);if(!n)return;return e.slice(n[0]+1,n[1]).find((i)=>/^theme\s*=/.test(i))?.replace(/^theme\s*=\s*/,"").trim()}function Bm(t,e=`${C(t)}.yaml`){return`{ custom = { name = "${t}", path = "${e}" } }`}function nF(t){return t?.includes(`path = "${C("")}`)===!0?/name = "([^"]+)"/.exec(t)?.[1]:void 0}function ol(t,e){let n=t.split(`
596
- `),r=S1(n);if(!r)return e===void 0?t:`${t.replace(/\n*$/,`
596
+ `;function Bm(t,e,n){return t.run("osascript",["-l","JavaScript",cl(e),...n])}function Um(t){return t.run("defaults",["read",A1,"Default Window Settings"])||void 0}function OF(t){return[t.background,t.foreground,t.cursor,t.selectionBackground,...t.ansi]}function N1(t){let e=new Set(Tt(t.entries).map((n)=>n.name));return t.themes.filter((n)=>e.has(n.name)||n.name===t.startup)}function Wm(t,e){let n=Um(e);return t.terminalBase??(n&&!n.startsWith(Da)?n:"Basic")}function Km(t,e){let n=/^(\d+)x(\d+)$/.exec(ct(MF(t,e)).trim());return n?{width:Number(n[1])*2,height:Number(n[2])*2}:void 0}function zm(t,e,n,r){let i=r?.width??t,o=r?.height??e,s=qt.indexOf(n.position)+1||5,a=Xo(t,e,i,o,100,s,n.cover),c=Math.min(1,t/Math.max(1,a.w));return{width:Math.max(1,Math.round(i*c)),height:Math.max(1,Math.round(o*c)),at:{x:Math.round(a.x*c),y:Math.round(a.y*c),w:Math.round(a.w*c),h:Math.round(a.h*c)}}}var T1=/^ttheme-(.+)\.([0-9a-z-]+)\.png$/;function ul(t){let e=new Map;for(let n of R1(t)?vF(t):[]){let[,r]=T1.exec(n)??[];if(r)e.set(r,[...e.get(r)??[],n])}return e}function PF(t){return[...ul(t)].map(([e,n])=>`${e} ${(T1.exec(n[0])??[])[2]}`).sort().join(" ")}function P1(t){let e=Es(t.configHome),n=ul(e),r=Km(t.host.env,t.home),i=new Map,o=(s)=>{for(let a of s)EF(eo(e,a),{force:!0})};for(let s of N1(t)){let a=n.get(ue(s.name))??[];n.delete(ue(s.name));let c=He(X(t.configHome),s.name,t.home),u=c&&R1(c.image)?new Uint8Array(SF(c.image)):void 0,f=u&&yn(u);if(!c||!u||!f||c.opacity<=0){o(a);continue}let l=zm(f.width,f.height,c,r),d=yF("sha1").update(u).update(JSON.stringify([s.background.toLowerCase(),c.opacity,l])).digest("hex").slice(0,8),h=`${j(s.name)}.${d}.png`,m=eo(e,h);if(!a.includes(h)){let p;try{p=Fr(Hr(Bt(u),s.background,c.opacity,l))}catch{o(a);continue}let[b,...$]=a;if(b)Oi(eo(e,b),m,p);else C(m,p);o($)}else o(a.filter((p)=>p!==h));i.set(s.name,m)}for(let s of n.values())o(s);return i}function I1(t,e){Bm(t.host,t.configHome,["write",Wm(t.state,t.host),...N1(t).flatMap((n)=>[dn(n.name),...OF(n),e.get(n.name)??"-"])])}var IF={key:"terminalBase",profile:dn,base(t){let e=Um(t.host);return e&&!e.startsWith(Da)?{...t.state,terminalBase:e}:t.state},point(t,e){let n=Um(t.host),r=n?.startsWith(Da)===!0;if(t.state.palettes.length===0)Bm(t.host,t.configHome,["drop"]);let i=t.startup?e||r?dn(t.startup):void 0:r?Wm(t.state,t.host):void 0;if(i===void 0||i===n&&!e)return;for(let s of["Default Window Settings","Startup Window Settings"])t.host.run("defaults",["write",A1,s,"-string",i]);return{restart:Boolean(t.host.run("pgrep",["-x","Terminal"]))&&Bm(t.host,t.configHome,["loaded",i])!=="1"}}},H1={id:"terminal-app",name:"Terminal.app",emitter:Em,offered:(t,e)=>e.platform==="darwin",present:()=>!1,sync(t,e){e.write(cl(t.configHome),xF),I1(t,P1(t))},pictures(t){I1(t,P1(t))},layer:(t,e)=>({TTHEME_TERMINAL_APP_BASE:Wm(t.state,e),TTHEME_TERMINAL_PICTURES:PF(Es(t.configHome))}),plan:(t)=>[`Add a "${dn("<palette>")}" profile per palette to Terminal.app's settings — a copy of your own profile in the palette's colors, with its picture`,...t.startup?[`Make "${dn(t.startup)}" Terminal.app's default — \`ttheme off\` puts yours back`]:[]],notes:()=>[],next(t,e){let n=[`Terminal.app A "${dn("<palette>")}" profile per palette in Settings › Profiles`];if(t.startup)n.push(e?.restart?`Restart Terminal New windows and tabs open on "${dn(t.startup)}"`:`Terminal default "${dn(t.startup)}", which follows \`ttheme default\``);return n},unwire:()=>({edits:[],removals:[],touches:[]}),defaults:IF};import{spawn as RF}from"node:child_process";import{randomUUID as AF}from"node:crypto";import{existsSync as oi,mkdirSync as F1,readdirSync as Dm,readFileSync as qm,realpathSync as NF,rmSync as L1,writeFileSync as C1}from"node:fs";import{dirname as Jm,join as ye}from"node:path";function no(t){return process.platform==="darwin"?ye(t,".warp","themes"):ye(_a(t),"warp-terminal","themes")}function si(t,e){return process.platform==="darwin"?ye(t,".warp","settings.toml"):ye(e,"warp-terminal","settings.toml")}var fl='"dark"';function dl(t){return ye(t,"ttheme","warp.base")}function TF(t){return ye(t,"ttheme","warp.later")}var B1="[appearance.themes]";function U1(t){let e=t.findIndex((r)=>r.trim()===B1);if(e<0)return;let n=t.findIndex((r,i)=>i>e&&r.trimStart().startsWith("["));return[e,n<0?t.length:n]}function ai(t){let e=t.split(`
597
+ `),n=U1(e);if(!n)return;return e.slice(n[0]+1,n[1]).find((i)=>/^theme\s*=/.test(i))?.replace(/^theme\s*=\s*/,"").trim()}function Ym(t,e=`${j(t)}.yaml`){return`{ custom = { name = "${t}", path = "${e}" } }`}function HF(t){return t?.includes(`path = "${j("")}`)===!0?/name = "([^"]+)"/.exec(t)?.[1]:void 0}function hl(t,e){let n=t.split(`
598
+ `),r=U1(n);if(!r)return e===void 0?t:`${t.replace(/\n*$/,`
597
599
  `)}
598
- ${E1}
600
+ ${B1}
599
601
  theme = ${e}
600
602
  `;let i=n.findIndex((o,s)=>s>r[0]&&s<r[1]&&/^theme\s*=/.test(o));if(i>=0)n.splice(i,1,...e===void 0?[]:[`theme = ${e}`]);else if(e!==void 0)n.splice(r[0]+1,0,`theme = ${e}`);return n.join(`
601
- `)}function Gm(t){return ai(t)?.includes(`path = "${C("")}`)===!0}var rF="setTimeout(() => { const fs = require('node:fs'); const [file, next, seen, theme] = process.argv.slice(-4); if (fs.readFileSync(file, 'utf8') !== seen || !fs.existsSync(theme)) return; const tmp = file + '.ttheme-' + process.pid; fs.writeFileSync(tmp, next); fs.chmodSync(tmp, fs.statSync(file).mode & 0o7777); fs.renameSync(tmp, file) }, 500)";function M1(t,e,n){return{image:Ce(t,Fy(e.name,n.image,e.background)),opacity:n.opacity}}function $1(t){let e=Vi(t.home),n=X(t.configHome),r=new Map,i=new Set;for(let o of t.themes){let s=Te(n,o.name,t.home),a=Na(o.name,s&&M1(e,o,s));r.set(o.name,a);for(let c of new Set([a,Na(o.name)]))if(!oi(Ce(e,c)))i.add(c)}return{files:r,fresh:i}}function k1(t,e,n){let r=Vi(t.home),i=X(t.configHome),o=new Set(n.values()),s=ai(lt(si(t.home,t.configHome)))??"";for(let u of t.themes){let f=Te(i,u.name,t.home),l=n.get(u.name);if(f&&l){let d=M1(r,u,f);if(!oi(d.image))try{let h=Gt(new Uint8Array(_m(f.image)));L(d.image,Tr(Nr(h,u.background,1)))}catch{n.set(u.name,Na(u.name));continue}e.write(Ce(r,l),Ta(u,d))}}if(!oi(r))return;let a=(u,f)=>u.startsWith(C(""))&&new RegExp(`\\.[0-9a-f]{8}\\.${f}$`).test(u);for(let u of jm(r))if(a(u,"yaml")&&!o.has(u)&&!s.includes(`path = "${u}"`))e.remove(Ce(r,u));let c=new Set;for(let u of jm(r)){let f=u.startsWith(C(""))&&u.endsWith(".yaml")?/^ {2}path: "(.+)"$/m.exec(lt(Ce(r,u)))?.[1]:void 0;if(f)c.add(f)}for(let u of jm(r))if(a(u,"png")&&!c.has(Ce(r,u)))e.remove(Ce(r,u))}function iF(t,e){let n=process.env.TTHEME_WARP_WEARS;return t!==void 0&&n!==void 0&&e.files.has(n)?n:t}function y1(t,e,n,r=!1){let i=si(t.home,t.configHome);if(!oi(i))return;let o=il(t.configHome),s=_m(i,"utf8"),a=r?nF(ai(s)):e;if(r&&(a===void 0||!n.files.has(a)))return;let c;if(a){if(!Gm(s)&&!oi(o))XH(v1(o),{recursive:!0}),eF(o,ai(s)??"");c=Bm(a,n.files.get(a))}else{if(!Gm(s))return;c=oi(o)&&_m(o,"utf8")||rl,tF(o,{force:!0})}let u=ol(s,c);if(u===s)return;let f=a===void 0?void 0:n.files.get(a)??`${C(a)}.yaml`;if(f!==void 0&&n.fresh.has(f))od(i),VH(process.execPath,["-e",rF,QH(i),u,s,Ce(Vi(t.home),f)],{detached:!0,stdio:"ignore"}).unref();else kn(i,u);return i}var Um={id:"warp",name:"Warp",emitter:bm,shelf:{from:"themes",dir:(t)=>Vi(t.home)},bakes:!0,offered:(t,e)=>e.platform!=="win32",present:(t)=>oi(v1(Vi(t.home))),sync(t,e){let n=$1(t);e.themes(Um),k1(t,e,n.files);let r=y1(t,iF(t.startup,n),n);if(r)e.note(r)},pictures(t,e){let n=$1(t);k1(t,e,n.files),y1(t,void 0,n,!0)},plan(t){let e=si(t.home,t.configHome);return t.startup&&oi(e)?[`Edit ${wt(e,t.home)} — [appearance.themes] theme; \`ttheme off\` puts yours back`]:[]},notes:()=>["Warp wears one theme for the whole app, set through its settings.toml — a tab that takes a palette (`ttheme use`, a pin, preview) switches it, and switching tabs puts on the palette of the tab in front, read from Warp’s session database with sqlite3"],next:()=>[],unwire(t){let e=si(t.home,t.configHome),n=lt(e);return{edits:Gm(n)?[{file:e,content:ol(n,lt(il(t.configHome))||rl)}]:[],removals:[],touches:[]}}};import{existsSync as cl}from"node:fs";import{join as vs}from"node:path";var x1=/-- ttheme begin\n[\s\S]*?-- ttheme end\n?/,oF=/^return config[ \t]*$/gm;function sF(t,e){let n=Xr(t,e,""),r=n===void 0?JSON.stringify(t):`require('wezterm').home_dir .. ${JSON.stringify(n)}`;return`-- ${ke}
602
- do local path = ${r} local file = io.open(path) if file then file:close() dofile(path)(config) end end`}var I1=`local wezterm = require 'wezterm'
603
+ `)}function ll(t){return ai(t)?.includes(`path = "${j("")}`)===!0}var FF="setTimeout(() => { const fs = require('node:fs'); const [file, next, seen, theme, later, token] = process.argv.slice(-6); if (!fs.existsSync(later) || fs.readFileSync(later, 'utf8') !== token || fs.readFileSync(file, 'utf8') !== seen || !fs.existsSync(theme)) return; const tmp = file + '.ttheme-' + process.pid; fs.writeFileSync(tmp, next); fs.chmodSync(tmp, fs.statSync(file).mode & 0o7777); fs.renameSync(tmp, file) }, 500)";function W1(t,e,n){return{image:ye(t,Zy(e.name,n.image,e.background)),opacity:n.opacity}}function j1(t){let e=no(t.home),n=X(t.configHome),r=new Map,i=new Set;for(let o of t.themes){let s=He(n,o.name,t.home),a=Ga(o.name,s&&W1(e,o,s));r.set(o.name,a);for(let c of new Set([a,Ga(o.name)]))if(!oi(ye(e,c)))i.add(c)}return{files:r,fresh:i}}function _1(t,e,n){let r=no(t.home),i=X(t.configHome),o=new Set(n.values()),s=ai(ct(si(t.home,t.configHome)))??"";for(let u of t.themes){let f=He(i,u.name,t.home),l=n.get(u.name);if(f&&l){let d=W1(r,u,f);if(!oi(d.image))try{let h=Bt(new Uint8Array(qm(f.image)));C(d.image,Fr(Hr(h,u.background,1)))}catch{n.set(u.name,Ga(u.name));continue}e.write(ye(r,l),Ba(u,d))}}if(!oi(r))return;let a=(u,f)=>u.startsWith(j(""))&&new RegExp(`\\.[0-9a-f]{8}\\.${f}$`).test(u);for(let u of Dm(r))if(a(u,"yaml")&&!o.has(u)&&!s.includes(`path = "${u}"`))e.remove(ye(r,u));let c=new Set;for(let u of Dm(r)){let f=u.startsWith(j(""))&&u.endsWith(".yaml")?/^ {2}path: "(.+)"$/m.exec(ct(ye(r,u)))?.[1]:void 0;if(f)c.add(f)}for(let u of Dm(r))if(a(u,"png")&&!c.has(ye(r,u)))e.remove(ye(r,u))}function LF(t,e){let n=process.env.TTHEME_WARP_WEARS;return t!==void 0&&n!==void 0&&e.files.has(n)?n:t}function G1(t,e,n,r=!1){let i=si(t.home,t.configHome);if(!oi(i))return;let o=dl(t.configHome),s=qm(i,"utf8"),a=r?HF(ai(s)):e;if(r&&(a===void 0||!n.files.has(a)))return;let c=TF(t.configHome);L1(c,{force:!0});let u;if(a){if(!ll(s)&&!oi(o))F1(Jm(o),{recursive:!0}),C1(o,ai(s)??"");u=Ym(a,n.files.get(a))}else{if(!ll(s))return;u=oi(o)&&qm(o,"utf8")||fl,L1(o,{force:!0})}let f=hl(s,u);if(f===s)return;let l=a===void 0?void 0:n.files.get(a)??`${j(a)}.yaml`;if(l!==void 0&&n.fresh.has(l)){hd(i);let d=AF();F1(Jm(c),{recursive:!0}),C1(c,d),RF(process.execPath,["-e",FF,NF(i),f,s,ye(no(t.home),l),c,d],{detached:!0,stdio:"ignore"}).unref()}else $n(i,f);return i}var Vm={id:"warp",name:"Warp",emitter:Mm,shelf:{from:"themes",dir:(t)=>no(t.home)},bakes:!0,offered:(t,e)=>e.platform!=="win32",present:(t)=>oi(Jm(no(t.home))),sync(t,e){let n=j1(t);e.themes(Vm),_1(t,e,n.files);let r=G1(t,LF(t.startup,n),n);if(r)e.note(r)},pictures(t,e){let n=j1(t);_1(t,e,n.files),G1(t,void 0,n,!0)},plan(t){let e=si(t.home,t.configHome);return t.startup&&oi(e)?[`Edit ${ft(e,t.home)} — [appearance.themes] theme; \`ttheme off\` puts yours back`]:[]},notes:()=>["Warp wears one theme for the whole app, set through its settings.toml — a tab that takes a palette (`ttheme use`, a pin, preview) switches it, and switching tabs puts on the palette of the tab in front, read from Warp’s session database with sqlite3"],next:()=>[],unwire(t){let e=si(t.home,t.configHome),n=ct(e);return{edits:ll(n)?[{file:e,content:hl(n,ct(dl(t.configHome))||fl)}]:[],removals:ll(n)?[]:Qc(e),touches:[]}}};import{existsSync as gl}from"node:fs";import{join as Ms}from"node:path";var K1=/-- ttheme begin\n[\s\S]*?-- ttheme end\n?/,CF=/^return config[ \t]*$/gm;function jF(t,e){let n=Xr(t,e,""),r=n===void 0?JSON.stringify(t):`require('wezterm').home_dir .. ${JSON.stringify(n)}`;return`-- ${ke}
604
+ do local path = ${r} local file = io.open(path) if file then file:close() dofile(path)(config) end end`}var D1=`local wezterm = require 'wezterm'
603
605
  local config = wezterm.config_builder()
604
606
 
605
- `;function aF(t){let e=t.replace(/-- ttheme begin\n[\s\S]*?-- ttheme end\n\n?/,"");return e===`${I1}return config
606
- `?"":e}function Wm(t,e){let n=`-- ttheme begin
607
+ `;function _F(t){let e=t.replace(/-- ttheme begin\n[\s\S]*?-- ttheme end\n\n?/,"");return e===`${D1}return config
608
+ `?"":e}function Zm(t,e){let n=`-- ttheme begin
607
609
  ${e}
608
610
  -- ttheme end
609
- `;if(x1.test(t))return t.replace(x1,n);if(t==="")return`${I1}${n}
611
+ `;if(K1.test(t))return t.replace(K1,n);if(t==="")return`${D1}${n}
610
612
  return config
611
- `;let r=[...t.matchAll(oF)].at(-1);if(r?.index===void 0)return;return`${t.slice(0,r.index)}${n}
612
- ${t.slice(r.index)}`}function sl(t,e){let n=vs(e,".wezterm.lua");return cl(n)?n:vs(t,"wezterm","wezterm.lua")}function O1(t){return vs(t.configHome,"wezterm","colors")}function al(t){return vs(t.configHome,"ttheme","wezterm.lua")}var Km={id:"wezterm",name:"WezTerm",emitter:wm,shelf:{from:"colors",dir:O1},offered:()=>!0,present:(t)=>cl(vs(t.configHome,"wezterm"))||cl(vs(t.home,".wezterm.lua")),sync(t,e){e.themes(Km),e.write(al(t),jy({path:al(t),colors:O1(t),backgrounds:X(t.configHome),...t.startup?{startup:t.startup}:{},palettes:t.themes}));let n=sl(t.configHome,t.home),r=Wm(lt(n),sF(al(t),t.home));if(r!==void 0)e.wire(n,r)},plan(t){let e=sl(t.configHome,t.home);return Wm(lt(e),"")!==void 0?[`Edit ${wt(e,t.home)} — a ttheme block before \`return config\`: color_scheme_dirs, color_scheme, pictures`]:[]},notes(t){let e=sl(t.configHome,t.home);return cl(e)&&Wm(lt(e),"")===void 0?[`${e} has no \`return config\` line — ttheme left it alone; call \`dofile("${al(t)}")(config)\` from it yourself`]:[]},next:()=>["WezTerm Reloads its config by itself"],unwire:(t)=>({edits:un(sl(t.configHome,t.home),aF),removals:[],touches:[]})};import{existsSync as P1,readFileSync as cF,utimesSync as uF}from"node:fs";import{dirname as lF,join as ul}from"node:path";function zm(t){return ul(t,"Microsoft","Windows Terminal","Fragments","ttheme","ttheme.json")}function R1(t){return[ul(t,"Packages","Microsoft.WindowsTerminal_8wekyb3d8bbwe","LocalState","settings.json"),ul(t,"Packages","Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe","LocalState","settings.json"),ul(t,"Microsoft","Windows Terminal","settings.json")].filter((e)=>P1(e))}function fF(t){for(let e of t){let n=/"defaultProfile"\s*:\s*"(\{[0-9a-fA-F-]+\})"/.exec(cF(e,"utf8"))?.[1];if(n)return n}return}function A1(t){if(t.platform==="win32")return t.env.LOCALAPPDATA;if(!t.env.WSL_DISTRO_NAME)return;let e=t.run("cmd.exe",["/d","/c","echo %LOCALAPPDATA%"]);return e&&t.run("wslpath",["-u",e])||void 0}var N1={id:"windows-terminal",name:"Windows Terminal",emitter:km,offered:(t)=>t.wtHome!==void 0,present:(t)=>t.wtHome!==void 0,installs:(t)=>({wtHome:t.wtHome,wtProfile:t.wtProfile}),sync(t,e){let{wtHome:n,wtProfile:r}=t.state;if(!n)return;let i=R1(n);if(e.write(zm(n),$m(t.themes,r??fF(i),t.startup))){let o=new Date;for(let s of i)uF(s,o,o);if(i.length>0)e.repaint()}},plan:(t)=>t.state.wtHome?[`Write ${zm(t.state.wtHome)} — its schemes, and touch settings.json so it reloads`]:[],notes:(t)=>t.state.wtHome?[]:["Windows Terminal: %LOCALAPPDATA% was not found — drop the release fragment into its Fragments folder yourself"],next:()=>["Windows Terminal Reloads its settings by itself"],unwire(t,e){let n=e?.wtHome,r=n?lF(zm(n)):void 0;return{edits:[],removals:r&&P1(r)?[r]:[],touches:n?R1(n):[]}}};var lr={ghostty:xm,kitty:Pm,alacritty:Mm,wezterm:Km,iterm2:Qy,"windows-terminal":N1,warp:Um,konsole:f1,"terminal-app":w1};function yt(t=ee){return t.map((e)=>lr[e])}function Qi(t){return t.startup&&t.palettes.includes(t.startup)?t.startup:t.palettes[0]}function je(t){return t.off?void 0:Qi(t)}function J(){return process.env.XDG_CONFIG_HOME??Es(dn(),".config")}var Xi=(t)=>typeof t==="string"&&t!==""?t:void 0,dF={author:Xi,startup:Xi,off:(t)=>t?!0:void 0,itermBase:Xi,konsoleBase:Xi,terminalBase:Xi,wtHome:Xi,wtProfile:Xi,markets:(t)=>Array.isArray(t)?t.filter((e)=>typeof e==="string"):void 0,updates:(t)=>t&&typeof t==="object"?Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]==="boolean")):void 0};function K(t){let e=Xn(t);if(!ll(e))throw Error(`nothing installed yet at ${e} — run \`ttheme init\` first`);let n=JSON.parse(T1(e,"utf8"));if(!Array.isArray(n?.palettes)||!Array.isArray(n.terminals))throw Error(`${e} has no palettes or terminals`);return{terminals:n.terminals.filter((r)=>ee.includes(r)),...Object.fromEntries(Object.entries(dF).flatMap(([r,i])=>{let o=i(n[r]);return o===void 0?[]:[[r,o]]})),palettes:n.palettes}}function Ze(t,e){L(Xn(t),`${JSON.stringify(e,null,2)}
613
- `)}function H1(t,e){let n=new Map(t.palettes.map((i)=>[i.name,i])),r=e.filter((i)=>!n.has(i));if(r.length>0){let i=[...new Set(r.flatMap((s)=>ut(s)??[]))].filter((s)=>!t.palettes.some((a)=>ut(a.name)===s)),o=i.length>0?`add ${i.join(", ")} first — \`ttheme market search\` finds a market's repository`:xh(Tt(t.palettes),r);throw Error(`not in any market: ${r.join(", ")} — ${o}`)}return t.palettes.filter((i)=>e.includes(i.name))}function ja(t,e,n){return{configHome:t,home:n,state:e,startup:je(e)}}function F1(t,e,n,r,i){return{...ja(t,n,r),entries:e,themes:e.map(He),host:i}}function L1(t){let e=[],n={written:e,repainted:!1,write(r,i){if(e.push(r),ll(r)&&T1(r,"utf8")===i)return!1;return L(r,i),!0},wire(r,i){e.push(r),kn(r,i)},note(r){e.push(r)},remove(r){qm(r,{force:!0})},themes(r){let i=r.shelf?.dir(t);if(!i)return;for(let o of t.themes)for(let{file:s,content:a}of lm(r,o))n.write(Es(i,s),a)},repaint(){n.repainted=!0}};return n}function hF(t,e){return Object.assign({},...yt(t.state.terminals).map((n)=>n.layer?.(t,e)??{}))}function Kt(t,e,n,r=dn(),i=Ye()){Nt(X(t));let o=H1(nr(t,e),n.palettes),s=yu(o,Ut(t));I$(t,new Map(s.map((u)=>[u.name,zo(u)]))),b$(t),os(t,o);let a=F1(t,s,n,r,i),c=L1(a);for(let u of yt(n.terminals))u.sync(a,c);return c.written.push(_1(a,i,c.repainted)),j1(t,s,r),c.written}function C1(t,e=dn()){if(!ll(Es(t,"ttheme","palettes.zsh")))return;let n=new Set(K(t).palettes);j1(t,we(t).palettes.filter((r)=>n.has(r.name)),e)}function j1(t,e,n){let r=Es(t,"ttheme","aliases.zsh"),i=xy(mF(e,n));if(lt(r)!==i)L(r,i)}function mF(t,e){let n=t.flatMap((o)=>o.booru?[o.booru]:[]),r=sh(n,e),i={};for(let o of t){let s=new Set(o.nativeNames??[]),a=(o.booru?r.get(o.booru)??[]:[]).filter((c)=>!s.has(c));if(a.length>0)i[o.name]=a}return i}function _1(t,e,n){let r=Es(t.configHome,"ttheme","palettes.zsh"),i=cm(t.entries,t.startup,t.state.terminals,hF(t,e),Object.keys(Ut(t.configHome)));if(n||lt(r)!==i)L(r,i),qm(`${r}.zwc`,{force:!0});return r}function _e(t,e=dn(),n=Ye()){let r=K(t),i=yt(r.terminals).filter((a)=>a.pictures);if(i.length===0)return;let o=F1(t,H1(we(t),r.palettes),r,e,n),s=L1(o);for(let a of i)a.pictures?.(o,s);_1(o,n,!1)}function to(t){return!yt(t).some((e)=>e.bakes)}function fl(t,e,n=dn()){let r=ja(t,e,n);return yt(e.terminals).flatMap((i)=>[...i.shelf?[`Write ${wt(i.shelf.dir(r),n)}/${C("*")} — a theme file per palette`]:[],...i.plan(r)])}function dl(t,e,n=dn()){let r=ja(t,e,n);return yt(e.terminals).flatMap((i)=>i.notes(r))}function hl(t,e,n,r=dn()){let i=ja(t,e,r);return yt(e.terminals).flatMap((o)=>o.next(i,n.get(o.id)))}function Ss(t,e,n,r,i=dn()){let o=[],s=Wt(t,e,!1).palettes;for(let a of yt(n)){let c=a.shelf?.dir({configHome:t,home:i});for(let u of c?s.filter((f)=>r.includes(f.name)):[])for(let{file:f}of lm(a,He(u))){let l=Es(c,f);if(ll(l))qm(l,{force:!0}),o.push(l)}}return o}function G1(t,e,n,r){return{...ja(t,e,r),host:n}}function _a(t,e,n,r=dn()){return yt(e.terminals).reduce((i,o)=>o.defaults?.base(G1(t,i,n,r))??i,e)}function eo(t,e,n,r,i=dn()){let o=new Map;for(let s of yt(e.terminals)){let a=s.defaults?.point(G1(t,e,r,i),n);if(a)o.set(s.id,a)}return o}function Ve(t,e,n,r,i=!1,o=Ye(),s=dn()){let a=i||!je(n)&&je(r)!==void 0,c=a?_a(t,r,o,s):r;return Kt(t,e,c,s,o),Ze(t,c),a||je(n)!==je(r)?eo(t,c,a,o,s):new Map}import{performance as B1}from"node:perf_hooks";var pF=16,Dm=80,U1="\x1B[?2026h",W1="\x1B[?2026l";class no{shown=[];pointer=new Ih;cursor="";wipe="";immediate;delayed;ticker;last=Number.NEGATIVE_INFINITY;stopped=!1;write;view;beat;constructor(t){this.write=t.write,this.view=t.view,this.beat=t.beat??(()=>{})}request(){if(this.stopped||this.immediate||this.delayed)return;let t=this.last+pF-B1.now();if(t>0)this.delayed=setTimeout(this.paint,t);else this.immediate=setImmediate(this.paint)}soon(){if(this.stopped||this.immediate)return;clearTimeout(this.delayed),this.delayed=void 0,this.immediate=setImmediate(this.paint)}now(){this.cancel(),this.paint()}reset(t=""){this.shown=[],this.cursor="",this.wipe=t}stop(){this.stopped=!0,this.cancel(),clearInterval(this.ticker),this.ticker=void 0}point(t){return this.pointer.point(t)}drop(){this.pointer.drop()}cancel(){clearImmediate(this.immediate),clearTimeout(this.delayed),this.immediate=void 0,this.delayed=void 0}paint=()=>{if(this.immediate=void 0,this.delayed=void 0,this.stopped)return;let{drawn:t,targets:e}=Sk(()=>this.view());if(!t)return;this.last=B1.now();let{lines:n,zones:r}=Ok(t.lines,e);this.pointer.zones=[...t.zones??[],...r];let i=this.wipe;this.wipe="";let o=new Set,s=Math.max(n.length,this.shown.length);for(let f=0;f<s;f++){let l=n[f];if(l!==this.shown[f])i+=`\x1B[${f+1};1H${me}\x1B[2K${l??""}`,o.add(f)}this.shown=n;let a=t.after?.(o)??"",c=t.cursor??"",u=c!==""&&(i!==""||a!==""||c!==this.cursor);if(this.cursor=c,i||a||u)this.write(`${U1}${i}${a}${me}${u?c:""}${W1}`);this.tick(t.ticking===!0)};tick(t){if(t&&!this.ticker)this.ticker=setInterval(()=>{this.beat(),this.request()},Dm);else if(!t&&this.ticker)clearInterval(this.ticker),this.ticker=void 0}}class Jm{shown=[];write;cols;constructor(t,e){this.write=t,this.cols=e}draw(t){this.put(t,"")}redraw(t){let e=`${this.shown.length>1?`\x1B[${this.shown.length-1}A`:""}${this.shown.length>0?"\r\x1B[J":""}`;this.shown=[],this.put(t,e)}end(t){this.put(t,""),this.write(`
614
- `),this.shown=[]}put(t,e){let n=t.map((o)=>nt(o,this.cols()-1,!1)),r=0;while(r<n.length&&r<this.shown.length&&n[r]===this.shown[r])r++;if(r===n.length&&n.length===this.shown.length)return;if(r===n.length)r=Math.max(0,n.length-1);let i="";if(this.shown.length===0)i=n.join(`
613
+ `;let r=[...t.matchAll(CF)].at(-1);if(r?.index===void 0)return;return`${t.slice(0,r.index)}${n}
614
+ ${t.slice(r.index)}`}function ml(t,e){let n=Ms(e,".wezterm.lua");return gl(n)?n:Ms(t,"wezterm","wezterm.lua")}function z1(t){return Ms(t.configHome,"wezterm","colors")}function pl(t){return Ms(t.configHome,"ttheme","wezterm.lua")}var Xm={id:"wezterm",name:"WezTerm",emitter:xm,shelf:{from:"colors",dir:z1},offered:()=>!0,present:(t)=>gl(Ms(t.configHome,"wezterm"))||gl(Ms(t.home,".wezterm.lua")),sync(t,e){e.themes(Xm),e.write(pl(t),t1({path:pl(t),colors:z1(t),backgrounds:X(t.configHome),...t.startup?{startup:t.startup}:{},palettes:t.themes}));let n=ml(t.configHome,t.home),r=Zm(ct(n),jF(pl(t),t.home));if(r!==void 0)e.wire(n,r)},plan(t){let e=ml(t.configHome,t.home);return Zm(ct(e),"")!==void 0?[`Edit ${ft(e,t.home)} — a ttheme block before \`return config\`: color_scheme_dirs, color_scheme, pictures`]:[]},notes(t){let e=ml(t.configHome,t.home);return gl(e)&&Zm(ct(e),"")===void 0?[`${e} has no \`return config\` line — ttheme left it alone; call \`dofile("${pl(t)}")(config)\` from it yourself`]:[]},next:()=>["WezTerm Reloads its config by itself"],unwire:(t)=>({edits:ln(ml(t.configHome,t.home),_F),removals:[],touches:[]})};import{existsSync as J1,readFileSync as GF,utimesSync as BF}from"node:fs";import{dirname as UF,join as bl}from"node:path";function Qm(t){return bl(t,"Microsoft","Windows Terminal","Fragments","ttheme","ttheme.json")}function q1(t){return[bl(t,"Packages","Microsoft.WindowsTerminal_8wekyb3d8bbwe","LocalState","settings.json"),bl(t,"Packages","Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe","LocalState","settings.json"),bl(t,"Microsoft","Windows Terminal","settings.json")].filter((e)=>J1(e))}function WF(t){for(let e of t){let n=/"defaultProfile"\s*:\s*"(\{[0-9a-fA-F-]+\})"/.exec(GF(e,"utf8"))?.[1];if(n)return n}return}function Y1(t){if(t.platform==="win32")return t.env.LOCALAPPDATA;if(!t.env.WSL_DISTRO_NAME)return;let e=t.run("cmd.exe",["/d","/c","echo %LOCALAPPDATA%"]);return e&&t.run("wslpath",["-u",e])||void 0}var V1={id:"windows-terminal",name:"Windows Terminal",emitter:Pm,offered:(t)=>t.wtHome!==void 0,present:(t)=>t.wtHome!==void 0,installs:(t)=>({wtHome:t.wtHome,wtProfile:t.wtProfile}),sync(t,e){let{wtHome:n,wtProfile:r}=t.state;if(!n)return;let i=q1(n);if(e.write(Qm(n),Om(t.themes,r??WF(i),t.startup))){let o=new Date;for(let s of i)BF(s,o,o);if(i.length>0)e.repaint()}},plan:(t)=>t.state.wtHome?[`Write ${Qm(t.state.wtHome)} — its schemes, and touch settings.json so it reloads`]:[],notes:(t)=>t.state.wtHome?[]:["Windows Terminal: %LOCALAPPDATA% was not found — drop the release fragment into its Fragments folder yourself"],next:()=>["Windows Terminal Reloads its settings by itself"],unwire(t,e){let n=e?.wtHome,r=n?UF(Qm(n)):void 0;return{edits:[],removals:r&&J1(r)?[r]:[],touches:n?q1(n):[]}}};var dr={ghostty:Hm,kitty:jm,alacritty:Tm,wezterm:Xm,iterm2:p1,"windows-terminal":V1,warp:Vm,konsole:O1,"terminal-app":H1};function yt(t=ne){return t.map((e)=>dr[e])}function io(t){return t.startup&&t.palettes.includes(t.startup)?t.startup:t.palettes[0]}function je(t){return t.off?void 0:io(t)}function J(){return process.env.XDG_CONFIG_HOME??xs(hn(),".config")}var ro=(t)=>typeof t==="string"&&t!==""?t:void 0,KF={author:ro,startup:ro,off:(t)=>t?!0:void 0,itermBase:ro,konsoleBase:ro,terminalBase:ro,wtHome:ro,wtProfile:ro,markets:(t)=>Array.isArray(t)?t.filter((e)=>typeof e==="string"):void 0,updates:(t)=>t&&typeof t==="object"?Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]==="boolean")):void 0};function z(t){let e=nr(t);if(!wl(e))throw Error(`nothing installed yet at ${e} — run \`ttheme init\` first`);let n=JSON.parse(Z1(e,"utf8"));if(!Array.isArray(n?.palettes)||!Array.isArray(n.terminals))throw Error(`${e} has no palettes or terminals`);return{terminals:n.terminals.filter((r)=>ne.includes(r)),...Object.fromEntries(Object.entries(KF).flatMap(([r,i])=>{let o=i(n[r]);return o===void 0?[]:[[r,o]]})),palettes:n.palettes}}function Ze(t,e){C(nr(t),`${JSON.stringify(e,null,2)}
615
+ `)}function X1(t,e){let n=new Map(t.palettes.map((i)=>[i.name,i])),r=e.filter((i)=>!n.has(i));if(r.length>0){let i=[...new Set(r.flatMap((s)=>ut(s)??[]))].filter((s)=>!t.palettes.some((a)=>ut(a.name)===s)),o=i.length>0?`add ${i.join(", ")} first — \`ttheme market search\` finds a market's repository`:Fh(Tt(t.palettes),r);throw Error(`not in any market: ${r.join(", ")} — ${o}`)}return t.palettes.filter((i)=>e.includes(i.name))}function qa(t,e,n){return{configHome:t,home:n,state:e,startup:je(e)}}function Q1(t,e,n,r,i){return{...qa(t,n,r),entries:e,themes:e.map(Fe),host:i}}function tv(t){let e=[],n={written:e,repainted:!1,write(r,i){if(e.push(r),wl(r)&&Z1(r,"utf8")===i)return!1;return C(r,i),!0},wire(r,i){e.push(r),$n(r,i)},note(r){e.push(r)},remove(r){tp(r,{force:!0})},themes(r){let i=r.shelf?.dir(t);if(!i)return;for(let o of t.themes)for(let{file:s,content:a}of wm(r,o))n.write(xs(i,s),a)},repaint(){n.repainted=!0}};return n}function zF(t,e){return Object.assign({},...yt(t.state.terminals).map((n)=>n.layer?.(t,e)??{}))}function zt(t,e,n,r=hn(),i=Ve()){Nt(X(t));let o=X1(sr(t,e),n.palettes),s=Pu(o,Wt(t));W$(t,new Map(s.map((u)=>[u.name,Yo(u)]))),N$(t),us(t,o);let a=Q1(t,s,n,r,i),c=tv(a);for(let u of yt(n.terminals))u.sync(a,c);return c.written.push(rv(a,i,c.repainted)),nv(t,s,r),c.written}function ev(t,e=hn()){if(!wl(xs(t,"ttheme","palettes.zsh")))return;let n=new Set(z(t).palettes);nv(t,we(t).palettes.filter((r)=>n.has(r.name)),e)}function nv(t,e,n){let r=xs(t,"ttheme","aliases.zsh"),i=Uy(DF(e,n));if(ct(r)!==i)C(r,i)}function DF(t,e){let n=t.flatMap((o)=>o.booru?[o.booru]:[]),r=ph(n,e),i={};for(let o of t){let s=new Set(o.nativeNames??[]),a=(o.booru?r.get(o.booru)??[]:[]).filter((c)=>!s.has(c));if(a.length>0)i[o.name]=a}return i}function rv(t,e,n){let r=xs(t.configHome,"ttheme","palettes.zsh"),i=gm(t.entries,t.startup,t.state.terminals,zF(t,e),Object.keys(Wt(t.configHome)));if(n||ct(r)!==i)C(r,i),tp(`${r}.zwc`,{force:!0});return r}function _e(t,e=hn(),n=Ve()){let r=z(t),i=yt(r.terminals).filter((a)=>a.pictures);if(i.length===0)return;let o=Q1(t,X1(we(t),r.palettes),r,e,n),s=tv(o);for(let a of i)a.pictures?.(o,s);rv(o,n,!1)}function oo(t){return!yt(t).some((e)=>e.bakes)}function $l(t,e,n=hn()){let r=qa(t,e,n);return yt(e.terminals).flatMap((i)=>[...i.shelf?[`Write ${ft(i.shelf.dir(r),n)}/${j("*")} — a theme file per palette`]:[],...i.plan(r)])}function kl(t,e,n=hn()){let r=qa(t,e,n);return yt(e.terminals).flatMap((i)=>i.notes(r))}function yl(t,e,n,r=hn()){let i=qa(t,e,r);return yt(e.terminals).flatMap((o)=>o.next(i,n.get(o.id)))}function Os(t,e,n,r,i=hn()){let o=[],s=Kt(t,e,!1).palettes;for(let a of yt(n)){let c=a.shelf?.dir({configHome:t,home:i});for(let u of c?s.filter((f)=>r.includes(f.name)):[])for(let{file:f}of wm(a,Fe(u))){let l=xs(c,f);if(wl(l))tp(l,{force:!0}),o.push(l)}}return o}function iv(t,e,n,r){return{...qa(t,e,r),host:n}}function Ja(t,e,n,r=hn()){return yt(e.terminals).reduce((i,o)=>o.defaults?.base(iv(t,i,n,r))??i,e)}function so(t,e,n,r,i=hn()){let o=new Map;for(let s of yt(e.terminals)){let a=s.defaults?.point(iv(t,e,r,i),n);if(a)o.set(s.id,a)}return o}function Xe(t,e,n,r,i=!1,o=Ve(),s=hn()){let a=i||!je(n)&&je(r)!==void 0,c=a?Ja(t,r,o,s):r;return zt(t,e,c,s,o),Ze(t,c),a||je(n)!==je(r)?so(t,c,a,o,s):new Map}import{performance as ov}from"node:perf_hooks";var qF=16,ep=80,sv="\x1B[?2026h",av="\x1B[?2026l";class ao{shown=[];pointer=new Ch;cursor="";wipe="";immediate;delayed;ticker;last=Number.NEGATIVE_INFINITY;stopped=!1;write;view;beat;constructor(t){this.write=t.write,this.view=t.view,this.beat=t.beat??(()=>{})}request(){if(this.stopped||this.immediate||this.delayed)return;let t=this.last+qF-ov.now();if(t>0)this.delayed=setTimeout(this.paint,t);else this.immediate=setImmediate(this.paint)}soon(){if(this.stopped||this.immediate)return;clearTimeout(this.delayed),this.delayed=void 0,this.immediate=setImmediate(this.paint)}now(){this.cancel(),this.paint()}reset(t=""){this.shown=[],this.cursor="",this.wipe=t}stop(){this.stopped=!0,this.cancel(),clearInterval(this.ticker),this.ticker=void 0}point(t){return this.pointer.point(t)}drop(){this.pointer.drop()}cancel(){clearImmediate(this.immediate),clearTimeout(this.delayed),this.immediate=void 0,this.delayed=void 0}paint=()=>{if(this.immediate=void 0,this.delayed=void 0,this.stopped)return;let{drawn:t,targets:e}=_k(()=>this.view());if(!t)return;this.last=ov.now();let{lines:n,zones:r}=Uk(t.lines,e);this.pointer.zones=[...t.zones??[],...r];let i=this.wipe;this.wipe="";let o=new Set,s=Math.max(n.length,this.shown.length);for(let f=0;f<s;f++){let l=n[f];if(l!==this.shown[f])i+=`\x1B[${f+1};1H${me}\x1B[2K${l??""}`,o.add(f)}this.shown=n;let a=t.after?.(o)??"",c=t.cursor??"",u=c!==""&&(i!==""||a!==""||c!==this.cursor);if(this.cursor=c,i||a||u)this.write(`${sv}${i}${a}${me}${u?c:""}${av}`);this.tick(t.ticking===!0)};tick(t){if(t&&!this.ticker)this.ticker=setInterval(()=>{this.beat(),this.request()},ep);else if(!t&&this.ticker)clearInterval(this.ticker),this.ticker=void 0}}class np{shown=[];write;cols;constructor(t,e){this.write=t,this.cols=e}draw(t){this.put(t,"")}redraw(t){let e=`${this.shown.length>1?`\x1B[${this.shown.length-1}A`:""}${this.shown.length>0?"\r\x1B[J":""}`;this.shown=[],this.put(t,e)}end(t){this.put(t,""),this.write(`
616
+ `),this.shown=[]}put(t,e){let n=t.map((o)=>tt(o,this.cols()-1,!1)),r=0;while(r<n.length&&r<this.shown.length&&n[r]===this.shown[r])r++;if(r===n.length&&n.length===this.shown.length)return;if(r===n.length)r=Math.max(0,n.length-1);let i="";if(this.shown.length===0)i=n.join(`
615
617
  `);else if(r>=this.shown.length)i=`
616
618
  ${n.slice(r).join(`
617
619
  `)}`;else{let o=this.shown.length-1-r;i=`${o>0?`\x1B[${o}A`:""}\r\x1B[J${n.slice(r).join(`
618
- `)}`}this.shown=n,this.write(`${U1}${e}${i}${W1}`)}}var gF=300;function ml(t){return t>=1e6?`${(t/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(t/1000))} KB`}function pl(t,e){if(!e)return ml(t);return e>=1e6?`${(t/1e6).toFixed(1)}/${(e/1e6).toFixed(1)} MB`:`${Math.round(t/1000)}/${Math.round(e/1000)} KB`}var Ms;async function K1(t,e){Ms=t;try{return await e()}finally{Ms=void 0}}function An(t){if(Ms)Ms.say(t);else console.log(t)}function ci(t=""){if(Ms){let u=Ms;return u.set(t),{set:(f)=>u.set(f),say:(f)=>u.say(f),done:()=>u.set("")}}let e=process.stdout;if(!e.isTTY||process.env.TERM==="dumb")return{set(){},say:(u)=>console.log(u),done(){}};let[n,r]=Ft()?["",""]:[gt("dim"),Jf("dim")],i=0,o=!1,s,a=()=>{e.write(`\r\x1B[2K${n}${nt(`${Wn[i%Wn.length]} ${t}`,(e.columns||80)-1,!1)}${r}`)},c=setTimeout(()=>{o=!0,a(),s=setInterval(()=>{i++,a()},Dm),s.unref()},gF);return c.unref(),{set(u){if(t=u,o)a()},say(u){if(o)e.write("\r\x1B[2K");if(console.log(u),o)a()},done(){if(clearTimeout(c),clearInterval(s),o)e.write("\r\x1B[2K"),o=!1}}}import{existsSync as np,mkdirSync as fv,readFileSync as dv,statSync as HF,utimesSync as FF}from"node:fs";import{homedir as LF}from"node:os";import{dirname as CF,join as uv}from"node:path";function gl(t){if(t.length>0&&process.stderr.isTTY)process.stderr.write(`${t.join(`
620
+ `)}`}this.shown=n,this.write(`${sv}${e}${i}${av}`)}}var JF=300;function vl(t){return t>=1e6?`${(t/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(t/1000))} KB`}function Sl(t,e){if(!e)return vl(t);return e>=1e6?`${(t/1e6).toFixed(1)}/${(e/1e6).toFixed(1)} MB`:`${Math.round(t/1000)}/${Math.round(e/1000)} KB`}var Ps;async function cv(t,e){Ps=t;try{return await e()}finally{Ps=void 0}}function Hn(t){if(Ps)Ps.say(t);else console.log(t)}function ci(t=""){if(Ps){let u=Ps;return u.set(t),{set:(f)=>u.set(f),say:(f)=>u.say(f),done:()=>u.set("")}}let e=process.stdout;if(!e.isTTY||process.env.TERM==="dumb")return{set(){},say:(u)=>console.log(u),done(){}};let[n,r]=Ft()?["",""]:[bt("dim"),rd("dim")],i=0,o=!1,s,a=()=>{e.write(`\r\x1B[2K${n}${tt(`${qn[i%qn.length]} ${t}`,(e.columns||80)-1,!1)}${r}`)},c=setTimeout(()=>{o=!0,a(),s=setInterval(()=>{i++,a()},ep),s.unref()},JF);return c.unref(),{set(u){if(t=u,o)a()},say(u){if(o)e.write("\r\x1B[2K");if(console.log(u),o)a()},done(){if(clearTimeout(c),clearInterval(s),o)e.write("\r\x1B[2K"),o=!1}}}import{existsSync as lp,mkdirSync as Iv,readFileSync as Rv,statSync as dL,utimesSync as hL}from"node:fs";import{homedir as mL}from"node:os";import{dirname as pL,join as Ov}from"node:path";function El(t){if(t.length>0&&process.stderr.isTTY)process.stderr.write(`${t.join(`
619
621
  `)}
620
- `)}import{existsSync as bF,readFileSync as wF}from"node:fs";import{join as $F}from"node:path";function kF(t){return $F(t,"ttheme","pins")}function z1(t,e,n){let r=kF(t);if(!bF(r))return;let i=wF(r,"utf8"),s=i.split(`
622
+ `)}import{existsSync as YF,readFileSync as VF}from"node:fs";import{join as ZF}from"node:path";function XF(t){return ZF(t,"ttheme","pins")}function uv(t,e,n){let r=XF(t);if(!YF(r))return;let i=VF(r,"utf8"),s=i.split(`
621
623
  `).flatMap((a)=>{let c=/^((?:[~/]|ssh:).*\s)(\S+)(\s*)$/.exec(a);if(!c)return[a];let[,u,f,l]=c;if(n.includes(f))return[];let d=e.get(f);return[d?`${u}${d}${l}`:a]}).join(`
622
- `);if(s!==i)L(r,s)}import{execFile as yF,spawn as vF,spawnSync as Ym}from"node:child_process";import{mkdirSync as EF,readFileSync as SF,realpathSync as q1}from"node:fs";import{homedir as MF,tmpdir as D1}from"node:os";import{dirname as xF,join as Zm}from"node:path";var Ga=`npx ${ft.name}@latest init`,Qm=86400000,OF=3600000,IF=1e4,Vm=/^(\d+)\.(\d+)\.(\d+)$/;function J1(t,e){let n=Vm.exec(t),r=Vm.exec(e);if(!n||!r)return!1;for(let i of[1,2,3]){let o=Number(n[i])-Number(r[i]);if(o!==0)return o>0}return!1}function Os(t=process.env){return t.TTHEME_AUTO_UPDATE!=="off"&&(t.CI===void 0||t.CI===""||t.CI==="false")}function Xm(){return Zm(process.env.XDG_STATE_HOME??Zm(MF(),".local","state"),"ttheme","release.json")}function Ba(){try{let t=JSON.parse(SF(Xm(),"utf8"));return{checked:typeof t.checked==="number"?t.checked:0,...typeof t.latest==="string"?{latest:t.latest}:{},...typeof t.told==="number"?{told:t.told}:{}}}catch{return{checked:0}}}function xs(t){EF(xF(Xm()),{recursive:!0}),L(Xm(),`${JSON.stringify(t)}
623
- `)}function Y1(t=IF){return new Promise((e,n)=>{yF("npm",["view",`${ft.name}@latest`,"version","--prefer-online"],{cwd:D1(),encoding:"utf8",timeout:t,env:{...process.env,npm_config_update_notifier:"false"}},(r,i,o)=>{if(r){let a=o.split(`
624
- `).find((f)=>/\S/.test(f))?.replace(/^npm (error|ERR!) /,""),{code:c,killed:u}=r;n(Error(c==="ENOENT"?"cannot run npm":u?`npm did not answer within ${t/1000} s`:`npm could not ask its registry — ${a??"it gave no reason"}`));return}let s=i.trim();if(!Vm.test(s)){n(Error("the npm registry named no version"));return}e(s)})})}function Z1(t=Date.now()){let e=Ba();if(!Os()||t-e.checked<Qm)return;try{xs({...e,checked:t}),vF(process.execPath,[process.argv[1],"latest"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}async function V1(){let t=Ba();try{return xs({...t,checked:Date.now(),latest:await Y1()}),0}catch{return xs({...t,checked:Date.now()-Qm+OF}),1}}function X1(t=J()){return Zm(t,"ttheme","ttheme.js")}function Q1(){try{return q1(process.argv[1])===q1(X1())}catch{return!1}}function RF(){return Q1()?"`ttheme update` updates it":`\`${Ga}\` updates it`}function tv(t,e=ft.version){return`ttheme ${t} is out, you have ${e} — ${RF()}`}function ev(t=Date.now()){let e=Ba();if(!Os()||!e.latest||!J1(e.latest,ft.version)||t-(e.told??0)<Qm)return;if(process.stderr.isTTY)xs({...e,told:t});gl([tv(e.latest)])}function nv(t,e){console.log(`Updating ttheme ${ft.version} → ${t}`);let n=Ym("npx",["--yes",`${ft.name}@${t}`,"init","--yes"],{cwd:D1(),stdio:"inherit",env:{...process.env,npm_config_prefer_online:"true"}});if(n.error)throw Error(`cannot run npx — ${n.error.message}; \`${Ga}\` updates ttheme once npm is there`);if(n.status!==0)throw Error(`npx stopped with status ${n.status} — ttheme ${ft.version} is still installed`);let r=X1(),i=Ym(process.execPath,[r,"--version"],{encoding:"utf8"}).stdout?.trim();if(i!==t)throw Error(`${r} is ${i||"unreadable"} after the update, not ${t} — \`${Ga}\` tries again`);let o=Ba();return xs({...o,latest:t}),Ym(process.execPath,[r,"update",...e],{stdio:"inherit",env:{...process.env,TTHEME_UPDATED:t}}).status??1}async function rv(){if(process.env.TTHEME_UPDATED)return{note:` ttheme ${ft.version} — updated`};let t;try{t=await Y1()}catch(e){return{note:` ttheme ${ft.version} — could not check for a newer one: ${e.message}`}}if(xs({...Ba(),checked:Date.now(),latest:t}),!J1(t,ft.version))return{note:` ttheme ${ft.version} — up to date`};return Q1()?{latest:t,note:""}:{note:` ${tv(t)}`}}function iv(t,e){let n=e,r=new Set;while(Object.hasOwn(t,n)&&!r.has(n)){r.add(n);let i=t[n];if(i===!1)return!1;n=i}return r.has(n)||n===e?void 0:n}function ov(t,e,n,r,i){let o=`${t}/`;for(let s of r){let a=s.startsWith(o)?s.slice(o.length):void 0;if(a===void 0||n.has(a))continue;let c=iv(e.renames,a);if(c===!1)i.removed.push(s);else if(c!==void 0&&n.has(c))i.renamed.set(s,`${o}${c}`);else if(e.forceRemove)i.removed.push(s)}}function sv(t,e){let n=[],r=[];for(let i of Object.keys(t)){if(e.has(i)){r.push(`renames.${i}: ${i} is still a palette here, so the rename never applies`);continue}let o=iv(t,i);if(o===void 0)n.push(`renames.${i}: the chain comes back to a name it already passed`);else if(o!==!1&&!e.has(o))n.push(`renames.${i}: the chain ends at ${o}, which is not a palette here — end it at one, or at false`)}return{errors:n,warnings:r}}import{gunzipSync as PF}from"node:zlib";var ro=512,av=67108864,tp=new TextDecoder;function Is(t,e,n){let r=t.subarray(e,e+n),i=r.indexOf(0);return tp.decode(i<0?r:r.subarray(0,i))}function AF(t){if((t[124]??0)&128)throw Error("the archive holds a file too large to be a palette");let e=Number.parseInt(Is(t,124,12).trim()||"0",8);if(!Number.isFinite(e)||e<0)throw Error("the archive has a header that does not read");return e}function NF(t){let e=0,n;while(e<t.length){let r=t.indexOf(32,e),i=r<0?Number.NaN:Number.parseInt(tp.decode(t.subarray(e,r)),10);if(!Number.isFinite(i)||i<=0)break;let o=tp.decode(t.subarray(r+1,e+i-1)),s=o.indexOf("=");if(o.slice(0,s)==="path")n=o.slice(s+1);e+=i}return n}function TF(t){if(t[0]!==31||t[1]!==139)return t;try{return PF(t,{maxOutputLength:av})}catch(e){throw Error(e instanceof RangeError?`the archive unpacks to more than ${av/1024/1024} MB`:"the archive is not a gzip file that reads")}}function cv(t){let e=TF(t),n=new Map,r,i=0;while(i+ro<=e.length){let o=e.subarray(i,i+ro);if(o.every((l)=>l===0))break;let s=AF(o),a=e.subarray(i+ro,i+ro+s);i+=ro+Math.ceil(s/ro)*ro;let c=String.fromCharCode(o[156]??0);if(c==="x"){r=NF(a)??r;continue}if(c==="L"){r=Is(a,0,a.length);continue}let u=Is(o,257,5)==="ustar"?Is(o,345,155):"",f=r??(u?`${u}/${Is(o,0,100)}`:Is(o,0,100));if(r=void 0,c==="0"||c==="\x00")n.set(f.split("/").slice(1).join("/"),a)}return n}var jF=86400000,_F=3600000,rp=5000;function ep(){return uv(process.env.XDG_STATE_HOME??uv(LF(),".local","state"),"ttheme","markets.json")}function fr(){try{let t=JSON.parse(dv(ep(),"utf8"));return Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]?.at==="number"&&typeof e[1].error==="string"))}catch{return{}}}function lv(t,e){let n=fr();if(e===void 0){if(!(t in n))return;delete n[t]}else n[t]={at:Date.now(),error:e};fv(CF(ep()),{recursive:!0}),L(ep(),`${JSON.stringify(n,null,2)}
625
- `)}function ip(t,e){let n=kt(e)?Qn(t,e):void 0;try{return n?HF(n).mtimeMs:void 0}catch{return}}function GF(t,e,n,r){return t&&(e===void 0||r-e>=jF)&&(n===void 0||r-n>=_F)}function op(t,e,n=Date.now()){let r=fr();return Dt(e.markets).filter((i)=>GF(Wr(i,e.updates),ip(t,i),r[i]?.at,n))}function BF(t,e){let n={},r=new TextDecoder;for(let[i,o]of cv(t))if(i===Bt||i.startsWith("palettes/")&&i.endsWith(".toml"))n[i]=r.decode(o);return{...e?{etag:e}:{},files:n}}async function hv(t,e,n,r){let i;try{i=await Mh(q$(t),e,n,r?{"if-none-match":r}:{})}catch(o){if(o instanceof Su){let s=wa(t);throw Error(`${ot(t)}${s?` has no ${s}`:" is not there"} — is the repository public?`)}throw o}if(i.status===304)return;return BF(new Uint8Array(await i.arrayBuffer()),i.headers.get("etag"))}function mv(t,e,n){let{id:r,info:i,entries:o}=Wi(t,e,n,fe(!1));return{source:t,id:r,entries:o,archive:e,info:i}}function Ua(t){return Ps(t,Z)}async function Wa(t,e,n,r){if(e===Z){if(!np(tr(t)))throw Error(`the ttheme catalog is not on this machine — \`${Ga}\` puts it back`);return{source:e,id:Z,entries:Ps(t,Z)}}let i=await hv(e,n,r);if(!i)throw Error(`${ot(e)} answered as if nothing had changed`);return mv(e,i,Ua(t))}function Rs(t,e){if(!("archive"in e))return;fv(uh(t),{recursive:!0}),L(Qn(t,e.source),`${JSON.stringify(e.archive)}
626
- `)}function UF(t,e){try{return er(t,e)}catch{return}}function Ps(t,e){try{if(e===Z)return zr(dv(tr(t),"utf8")).palettes;return Wi(e,er(t,e),Ua(t),fe(!1)).entries}catch{return[]}}function WF(t,e){let n=new Map(t.map((i)=>[i.name,JSON.stringify(i)])),r=new Map(e.map((i)=>[i.name,JSON.stringify(i)]));return{added:[...r.keys()].filter((i)=>!n.has(i)),changed:[...r].filter(([i,o])=>n.has(i)&&n.get(i)!==o).map(([i])=>i),gone:[...n.keys()].filter((i)=>!r.has(i))}}async function KF(t,e,n){if(!kt(e))return Wa(t,e,n);let r=UF(t,e),i=await hv(e,n,void 0,r?.etag);return i&&mv(e,i,Ua(t))}async function sp(t,e,n){let r=Ps(t,e),i;try{i=await KF(t,e,n)}catch(s){throw lv(e,s.message),s}if(i)Rs(t,i);else{let s=new Date;FF(Qn(t,e),s,s)}lv(e,void 0);let o=i?.entries??r;return{source:e,id:i?.id??Eu(e,er(t,e)),count:Tt(o).length,change:WF(r,o)}}async function ap(t,e,n){try{return{source:e,refreshed:await sp(t,e,n)}}catch(r){return{source:e,failure:r instanceof Error?r:Error(String(r))}}}function pv(t,e){return`${ot(t)}: ${e.message}`}function zt(t){return`${t} palette${t===1?"":"s"}`}function cp(t,e=Date.now()){let n=Math.floor(Math.max(0,e-t)/60000);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<48?`${r}h ago`:`${Math.floor(r/24)}d ago`}function gv({added:t,changed:e,gone:n}){return[t.length>0?`${t.length} new`:"",e.length>0?`${e.length} changed`:"",n.length>0?`${n.length} gone`:""].filter(Boolean).join(", ")}function up(t){let e=gv(t.change);return`${t.id} — ${zt(t.count)}${e?` (${e})`:""}`}function lp(t){return gv(t.change)?`Updated ${up(t)}`:void 0}function Ka(t,e,n=Ua(t)){try{if(Ht(e)){let r=an(e),i=be(r);return{id:i,info:r,entries:On(e,i,n,fe(!1))}}return kt(e)?Wi(e,er(t,e),n,fe(!1)):void 0}catch{return}}function zF(t){if(!np(Xn(t)))return[];let e=K(t),n=Ua(t),r={renamed:new Map,removed:[]};for(let u of Dt(e.markets)){let f=Ka(t,u,n);if(f)ov(f.id,f.info,new Set(f.entries.map((l)=>pe(l.name))),e.palettes,r)}if(r.renamed.size===0&&r.removed.length===0)return[];let i=ct(t,!1);Ss(t,i,e.terminals,[...r.renamed.keys(),...r.removed]),uk(t,r.renamed,r.removed),w$(t,r.renamed),z1(t,r.renamed,r.removed);let o=[...new Set(e.palettes.filter((u)=>!r.removed.includes(u)).map((u)=>r.renamed.get(u)??u))],{startup:s,...a}=e,c=s&&!r.removed.includes(s)?r.renamed.get(s)??s:void 0;return Ve(t,i,e,{...a,palettes:o,...c?{startup:c}:{}}),[...[...r.renamed].map(([u,f])=>`${u} is ${f} now — its market renamed it`),...r.removed.map((u)=>`${u} was removed from its market`)]}function fp(t){let e=ss(t,ct(t,!1)).map((n)=>n.name);if(e.length===0)return;return`${e.join(", ")} ${e.length===1?"has":"have"} an update from ${e.length===1?"its market":"their markets"} — ctrl+r in the Installed tab of Browse (\`ttheme\`) takes it`}function io(t,e){let n=zF(t),r=K(t),i=new Set(e.flatMap((s)=>s.change.gone)),o=r.palettes.filter((s)=>i.has(s)).map((s)=>`${s} left its market — ttheme keeps the copy you have`);return[...n,...o]}async function bv(t=J()){try{if(!Os()||!np(Xn(t)))return;let e=op(t,K(t));if(e.length===0)return;let n=ci(`Checking ${e.map(ot).join(", ")} for updates`),r=await Promise.all(e.map((s)=>ap(t,s,rp)));n.done();let i=r.flatMap((s)=>("refreshed"in s)?[s.refreshed]:[]),o=i.flatMap((s)=>lp(s)??[]);if(o.length===0)return;gl([...o,...io(t,i),...[fp(t)??[]].flat()])}catch{return}}var vv=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,ZF=["add","remove","search","init","check"];function hp(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function VF(){try{let t=qF("gh",["api","user","--jq",".login"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4}).trim().toLowerCase();return vv.test(t)?t:void 0}catch{return}}async function XF(t,e){if(e.author)return e.author;let n=VF();if(!n){if(!hp())throw Error("your palettes are named after your GitHub handle — log in with `gh auth login`, or run this in a terminal");let r=await qh({message:"Your GitHub handle — your palettes are named <handle>@<market>/<palette>",validate:(i)=>vv.test((i??"").toLowerCase())&&(i??"").length<=39?void 0:"that is not a GitHub handle"});if(te(r))throw Error("no handle given");n=r.toLowerCase()}return Ze(t,{...e,author:n}),console.log(`Your palettes are named ${n}@<market>/<palette>`),n}function ui(t,e){if(e===Z)return Z;return Ht(e)?be(an(e)):Eu(e,er(t,e))}function $l(t,e){try{return ui(t,e)}catch{return}}function Ev(t){return ut(t)??Z}function qa(t){return ct(t).palettes.filter((e)=>ut(e.name)===void 0)}function QF(t){let e=za(import.meta.dirname,"..","dist","manifest.json");return bl(e)?zr(wl(e,"utf8")).palettes:qa(t)}function Da(t,e,n){let{updates:r,...i}=t,o=Object.entries(n).filter(([s,a])=>kt(s)&&e.includes(s)&&a!==Wr(s,{}));return{...i,markets:e,...o.length>0?{updates:Object.fromEntries(o)}:{}}}function Sv(t,e,n,r){return e.find((i)=>i!==n&&!es(i,n)&&$l(t,i)===r)}function dp(t,e,n,r){let i=K(t),o=Dt(i.markets),s=Sv(t,o,e,n);if(s)throw Error(`${n} already names the market at ${ot(s)} — \`ttheme market remove ${n}\` first`);let a=r===void 0?{...i.updates}:{...i.updates,[e]:r};Ze(t,Da(i,o.includes(e)?o:[...o,e],a))}async function tL(t){if(!hp())return!1;let e=await Le({message:`Update ${t} on its own when its author changes it? ttheme checks once a day, when you run it`,initialValue:!1});if(te(e))throw Error("no answer given — nothing was added");return e}async function Mv(t,e){let n=ci(`Fetching ${ot(e)}`);try{return await Wa(t,e)}finally{n.done()}}async function eL(t,e,n){let r=await Mv(t,n),i=K(t),o=Dt(i.markets),s=Sv(t,o,n,r.id);if(s)throw Error(`${r.id} already names the market at ${ot(s)} — \`ttheme market remove ${r.id}\` first`);let{[e]:a,...c}=i.updates??{},u=a===void 0?c:{...c,[n]:a};return Ze(t,Da(i,o.map((f)=>f===e?n:f),u)),Rs(t,r),r}async function mp(t,e){let n=Kr(e),r=Dt(K(t).markets);if(r.includes(n))return console.log(`${ot(n)} is already added`),{source:n,id:ui(t,n),fresh:!1};let i=kt(n)?r.find((c)=>kt(c)&&es(c,n)):void 0;if(i){let c=await eL(t,i,n);return console.log(`Moved ${c.id} to ${wa(n)??"its default branch"} · ${ot(n)} — ${zt(Tt(c.entries).length)}`),{source:n,id:c.id,fresh:!1}}if(Ht(n)){let c=be(an(n));dp(t,n,c);let u=On(n,c,qa(t)).length;return console.log(`Added ${c} · ${ot(n)} — ${zt(u)}, read in place`),{source:n,id:c,fresh:!0}}let o=await Mv(t,n),s=n===Z?void 0:await tL(o.id);dp(t,n,o.id,s),Rs(t,o);let a=zt(Tt(o.entries).length);return console.log(n===Z?`Added the ttheme catalog — ${a}`:`Added ${o.id} · ${ot(n)} — ${a}${s?", updating on its own":""}`),{source:n,id:o.id,fresh:!0}}async function nL(t){let e=J(),{source:n,id:r,fresh:i}=await mp(e,t);if(!i)return;if(Ht(n))console.log("\nThe Browse tab of `ttheme` picks them · once the folder is on GitHub, `ttheme market add <owner>/<repo>` adds it anywhere");else if(n===Z)console.log("\nThe Browse tab of `ttheme` picks them");else console.log(`
627
- The Browse tab of \`ttheme\` picks them, or \`ttheme add ${r}/<palette>\``)}function pp(t,e){if(kt(e))YF(Qn(t,e),{force:!0})}function gp(t){return`${zt(t.length)} installed from it keep${t.length===1?"s":""} working: ${t.join(", ")} — \`ttheme remove\` drops ${t.length===1?"it":"them"}`}function rL(t){let e=J(),n=K(e),r=Dt(n.markets),i=r.find((u)=>$l(e,u)===t)??r.find((u)=>u===xv(t));if(!i)throw Error(`no market named ${t} — \`ttheme market\` lists them`);let o=$l(e,i),s=n.palettes.filter((u)=>Ev(u)===o),a=r.filter((u)=>u!==i),c=Da(n,a,n.updates??{});if(Ze(e,c),pp(e,i),Kt(e,ct(e),c),console.log(`Removed ${o??t} · ${ot(i)}`),s.length>0)console.log(gp(s))}function xv(t){try{return Kr(t)}catch{return}}function iL(t,e){try{if(e===Z)return Tt(zr(wl(tr(t),"utf8")).palettes).length;if(Ht(e))return On(e,ui(t,e),qa(t),fe(!1)).length;return Wi(e,er(t,e),qa(t),fe(!1)).entries.length}catch{return}}function bp(t,e,n=fr(),r=Date.now()){if(Ht(e))return"read in place";if(e===Z)return"comes with ttheme";let i=n[e],o=ip(t,e);if(i&&(o===void 0||i.at>o))return`update failed ${cp(i.at,r)}`;return o===void 0?"never updated":`updated ${cp(o,r)}`}function oL(){let t=J(),e=K(t),n=Dt(e.markets);if(n.length===0){console.log("No markets — `ttheme market add official` brings the ttheme catalog back");return}let r=fr(),i=n.map((a)=>{let c=$l(t,a)??"?",u=iL(t,a),f=e.palettes.filter((h)=>Ev(h)===c).length,l=Ht(a)?[]:[`auto-update ${Wr(a,e.updates)?"on":"off"}`],d=a===Z?void 0:Ka(t,a)?.info.description;return{name:c,where:ot(a),about:d,note:[u===void 0?"Unreadable":zt(u),...f>0?[`${f} installed`]:[],...l,bp(t,a,r)].join(" · ")}}),o=Math.max(...i.map((a)=>a.name.length)),s=Math.max(...i.map((a)=>a.where.length));for(let a of i)if(console.log(` ${a.name.padEnd(o)} ${a.where.padEnd(s)} ${a.note}`),a.about)console.log(` ${" ".repeat(o)} ${a.about}`)}function wp(t){return`${t.owner.login.toLowerCase()}/${t.name}`}async function $p(t,e){let n=encodeURIComponent(`topic:${Qo}${t?` ${t}`:""}`);try{let{items:r}=await $k(`https://api.github.com/search/repositories?q=${n}&sort=stars&per_page=50`,(i)=>JSON.parse(i),void 0,e);return r}catch(r){if(r instanceof Mu)throw Error("GitHub lets a search through about ten times a minute without signing in — try again in a minute");throw r}}async function sL(t){let e=J(),n=await $p(t);if(n.length===0){console.log(`No repository carries the ${Qo} topic${t?` and matches ${t}`:""} yet`);return}let r=new Set(Dt(K(e).markets).map(Ur)),i=n.map((s)=>{let a=wp(s);return{arg:a,added:r.has(a),stars:`★${s.stargazers_count}`,about:s.description??""}}),o=Math.max(...i.map((s)=>s.arg.length));for(let s of i)console.log(` ${s.added?"●":"○"} ${s.arg.padEnd(o)} ${s.stars.padStart(5)} ${s.about}`);console.log("\n`ttheme market add <name>` adds one")}function Ov({name:t}){return`ttheme-${t}`}function aL(t,e){DF($u(t),{recursive:!0}),L(za(t,Bt),J$(e)),L(za(t,"README.md"),`# ${be(e)}
624
+ `);if(s!==i)C(r,s)}import{execFile as QF,spawn as tL,spawnSync as rp}from"node:child_process";import{mkdirSync as eL,readFileSync as nL,realpathSync as lv}from"node:fs";import{homedir as rL,tmpdir as fv}from"node:os";import{dirname as iL,join as ip}from"node:path";var Ya=`npx ${lt.name}@latest init`,ap=86400000,oL=3600000,sL=1e4,op=/^(\d+)\.(\d+)\.(\d+)$/;function dv(t,e){let n=op.exec(t),r=op.exec(e);if(!n||!r)return!1;for(let i of[1,2,3]){let o=Number(n[i])-Number(r[i]);if(o!==0)return o>0}return!1}function Rs(t=process.env){return t.TTHEME_AUTO_UPDATE!=="off"&&(t.CI===void 0||t.CI===""||t.CI==="false")}function sp(){return ip(process.env.XDG_STATE_HOME??ip(rL(),".local","state"),"ttheme","release.json")}function Va(){try{let t=JSON.parse(nL(sp(),"utf8"));return{checked:typeof t.checked==="number"?t.checked:0,...typeof t.latest==="string"?{latest:t.latest}:{},...typeof t.told==="number"?{told:t.told}:{}}}catch{return{checked:0}}}function Is(t){eL(iL(sp()),{recursive:!0}),C(sp(),`${JSON.stringify(t)}
625
+ `)}function hv(t=sL){return new Promise((e,n)=>{QF("npm",["view",`${lt.name}@latest`,"version","--prefer-online"],{cwd:fv(),encoding:"utf8",timeout:t,env:{...process.env,npm_config_update_notifier:"false"}},(r,i,o)=>{if(r){let a=o.split(`
626
+ `).find((f)=>/\S/.test(f))?.replace(/^npm (error|ERR!) /,""),{code:c,killed:u}=r;n(Error(c==="ENOENT"?"cannot run npm":u?`npm did not answer within ${t/1000} s`:`npm could not ask its registry — ${a??"it gave no reason"}`));return}let s=i.trim();if(!op.test(s)){n(Error("the npm registry named no version"));return}e(s)})})}function mv(t=Date.now()){let e=Va();if(!Rs()||t-e.checked<ap)return;try{Is({...e,checked:t}),tL(process.execPath,[process.argv[1],"latest"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}async function pv(){let t=Va();try{return Is({...t,checked:Date.now(),latest:await hv()}),0}catch{return Is({...t,checked:Date.now()-ap+oL}),1}}function gv(t=J()){return ip(t,"ttheme","ttheme.js")}function bv(){try{return lv(process.argv[1])===lv(gv())}catch{return!1}}function aL(){return bv()?"`ttheme update` updates it":`\`${Ya}\` updates it`}function wv(t,e=lt.version){return`ttheme ${t} is out, you have ${e} — ${aL()}`}function $v(t=Date.now()){let e=Va();if(!Rs()||!e.latest||!dv(e.latest,lt.version)||t-(e.told??0)<ap)return;if(process.stderr.isTTY)Is({...e,told:t});El([wv(e.latest)])}function kv(t,e){console.log(`Updating ttheme ${lt.version} → ${t}`);let n=rp("npx",["--yes",`${lt.name}@${t}`,"init","--yes"],{cwd:fv(),stdio:"inherit",env:{...process.env,npm_config_prefer_online:"true"}});if(n.error)throw Error(`cannot run npx — ${n.error.message}; \`${Ya}\` updates ttheme once npm is there`);if(n.status!==0)throw Error(`npx stopped with status ${n.status} — ttheme ${lt.version} is still installed`);let r=gv(),i=rp(process.execPath,[r,"--version"],{encoding:"utf8"}).stdout?.trim();if(i!==t)throw Error(`${r} is ${i||"unreadable"} after the update, not ${t} — \`${Ya}\` tries again`);let o=Va();return Is({...o,latest:t}),rp(process.execPath,[r,"update",...e],{stdio:"inherit",env:{...process.env,TTHEME_UPDATED:t}}).status??1}async function yv(){if(process.env.TTHEME_UPDATED)return{note:` ttheme ${lt.version} — updated`};let t;try{t=await hv()}catch(e){return{note:` ttheme ${lt.version} — could not check for a newer one: ${e.message}`}}if(Is({...Va(),checked:Date.now(),latest:t}),!dv(t,lt.version))return{note:` ttheme ${lt.version} — up to date`};return bv()?{latest:t,note:""}:{note:` ${wv(t)}`}}function vv(t,e){let n=e,r=new Set;while(Object.hasOwn(t,n)&&!r.has(n)){r.add(n);let i=t[n];if(i===!1)return!1;n=i}return r.has(n)||n===e?void 0:n}function Sv(t,e,n,r,i){let o=`${t}/`;for(let s of r){let a=s.startsWith(o)?s.slice(o.length):void 0;if(a===void 0||n.has(a))continue;let c=vv(e.renames,a);if(c===!1)i.removed.push(s);else if(c!==void 0&&n.has(c))i.renamed.set(s,`${o}${c}`);else if(e.forceRemove)i.removed.push(s)}}function Ev(t,e){let n=[],r=[];for(let i of Object.keys(t)){if(e.has(i)){r.push(`renames.${i}: ${i} is still a palette here, so the rename never applies`);continue}let o=vv(t,i);if(o===void 0)n.push(`renames.${i}: the chain comes back to a name it already passed`);else if(o!==!1&&!e.has(o))n.push(`renames.${i}: the chain ends at ${o}, which is not a palette here — end it at one, or at false`)}return{errors:n,warnings:r}}import{gunzipSync as cL}from"node:zlib";var co=512,Mv=67108864,cp=new TextDecoder;function As(t,e,n){let r=t.subarray(e,e+n),i=r.indexOf(0);return cp.decode(i<0?r:r.subarray(0,i))}function uL(t){if((t[124]??0)&128)throw Error("the archive holds a file too large to be a palette");let e=Number.parseInt(As(t,124,12).trim()||"0",8);if(!Number.isFinite(e)||e<0)throw Error("the archive has a header that does not read");return e}function lL(t){let e=0,n;while(e<t.length){let r=t.indexOf(32,e),i=r<0?Number.NaN:Number.parseInt(cp.decode(t.subarray(e,r)),10);if(!Number.isFinite(i)||i<=0)break;let o=cp.decode(t.subarray(r+1,e+i-1)),s=o.indexOf("=");if(o.slice(0,s)==="path")n=o.slice(s+1);e+=i}return n}function fL(t){if(t[0]!==31||t[1]!==139)return t;try{return cL(t,{maxOutputLength:Mv})}catch(e){throw Error(e instanceof RangeError?`the archive unpacks to more than ${Mv/1024/1024} MB`:"the archive is not a gzip file that reads")}}function xv(t){let e=fL(t),n=new Map,r,i=0;while(i+co<=e.length){let o=e.subarray(i,i+co);if(o.every((l)=>l===0))break;let s=uL(o),a=e.subarray(i+co,i+co+s);i+=co+Math.ceil(s/co)*co;let c=String.fromCharCode(o[156]??0);if(c==="x"){r=lL(a)??r;continue}if(c==="L"){r=As(a,0,a.length);continue}let u=As(o,257,5)==="ustar"?As(o,345,155):"",f=r??(u?`${u}/${As(o,0,100)}`:As(o,0,100));if(r=void 0,c==="0"||c==="\x00")n.set(f.split("/").slice(1).join("/"),a)}return n}var gL=86400000,bL=3600000,fp=5000;function up(){return Ov(process.env.XDG_STATE_HOME??Ov(mL(),".local","state"),"ttheme","markets.json")}function hr(){try{let t=JSON.parse(Rv(up(),"utf8"));return Object.fromEntries(Object.entries(t).filter((e)=>typeof e[1]?.at==="number"&&typeof e[1].error==="string"))}catch{return{}}}function Pv(t,e){let n=hr();if(e===void 0){if(!(t in n))return;delete n[t]}else n[t]={at:Date.now(),error:e};Iv(pL(up()),{recursive:!0}),C(up(),`${JSON.stringify(n,null,2)}
627
+ `)}function dp(t,e){let n=kt(e)?rr(t,e):void 0;try{return n?dL(n).mtimeMs:void 0}catch{return}}function wL(t,e,n,r){return t&&(e===void 0||r-e>=gL)&&(n===void 0||r-n>=bL)}function hp(t,e,n=Date.now()){let r=hr();return Jt(e.markets).filter((i)=>wL(Wr(i,e.updates),dp(t,i),r[i]?.at,n))}function $L(t,e){let n={},r=new TextDecoder;for(let[i,o]of xv(t))if(i===Ut||i.startsWith("palettes/")&&i.endsWith(".toml"))n[i]=r.decode(o);return{...e?{etag:e}:{},files:n}}async function Av(t,e,n,r){let i;try{i=await Hh(ak(t),e,n,r?{"if-none-match":r}:{})}catch(o){if(o instanceof Au){let s=xa(t);throw Error(`${rt(t)}${s?` has no ${s}`:" is not there"} — is the repository public?`)}throw o}if(i.status===304)return;return $L(new Uint8Array(await i.arrayBuffer()),i.headers.get("etag"))}function Nv(t,e,n){let{id:r,info:i,entries:o}=qi(t,e,n,fe(!1));return{source:t,id:r,entries:o,archive:e,info:i}}function Za(t){return Ts(t,V)}async function Xa(t,e,n,r){if(e===V){if(!lp(ir(t)))throw Error(`the ttheme catalog is not on this machine — \`${Ya}\` puts it back`);return{source:e,id:V,entries:Ts(t,V)}}let i=await Av(e,n,r);if(!i)throw Error(`${rt(e)} answered as if nothing had changed`);return Nv(e,i,Za(t))}function Ns(t,e){if(!("archive"in e))return;Iv(wh(t),{recursive:!0}),C(rr(t,e.source),`${JSON.stringify(e.archive)}
628
+ `)}function kL(t,e){try{return or(t,e)}catch{return}}function Ts(t,e){try{if(e===V)return zr(Rv(ir(t),"utf8")).palettes;return qi(e,or(t,e),Za(t),fe(!1)).entries}catch{return[]}}function yL(t,e){let n=new Map(t.map((i)=>[i.name,JSON.stringify(i)])),r=new Map(e.map((i)=>[i.name,JSON.stringify(i)]));return{added:[...r.keys()].filter((i)=>!n.has(i)),changed:[...r].filter(([i,o])=>n.has(i)&&n.get(i)!==o).map(([i])=>i),gone:[...n.keys()].filter((i)=>!r.has(i))}}async function vL(t,e,n){if(!kt(e))return Xa(t,e,n);let r=kL(t,e),i=await Av(e,n,void 0,r?.etag);return i&&Nv(e,i,Za(t))}async function mp(t,e,n){let r=Ts(t,e),i;try{i=await vL(t,e,n)}catch(s){throw Pv(e,s.message),s}if(i)Ns(t,i);else{let s=new Date;hL(rr(t,e),s,s)}Pv(e,void 0);let o=i?.entries??r;return{source:e,id:i?.id??Ru(e,or(t,e)),count:Tt(o).length,change:yL(r,o)}}async function pp(t,e,n){try{return{source:e,refreshed:await mp(t,e,n)}}catch(r){return{source:e,failure:r instanceof Error?r:Error(String(r))}}}function Tv(t,e){return`${rt(t)}: ${e.message}`}function Dt(t){return`${t} palette${t===1?"":"s"}`}function gp(t,e=Date.now()){let n=Math.floor(Math.max(0,e-t)/60000);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<48?`${r}h ago`:`${Math.floor(r/24)}d ago`}function Hv({added:t,changed:e,gone:n}){return[t.length>0?`${t.length} new`:"",e.length>0?`${e.length} changed`:"",n.length>0?`${n.length} gone`:""].filter(Boolean).join(", ")}function bp(t){let e=Hv(t.change);return`${t.id} — ${Dt(t.count)}${e?` (${e})`:""}`}function wp(t){return Hv(t.change)?`Updated ${bp(t)}`:void 0}function Qa(t,e,n=Za(t)){try{if(Ht(e)){let r=cn(e),i=be(r);return{id:i,info:r,entries:Pn(e,i,n,fe(!1))}}return kt(e)?qi(e,or(t,e),n,fe(!1)):void 0}catch{return}}function SL(t){if(!lp(nr(t)))return[];let e=z(t),n=Za(t),r={renamed:new Map,removed:[]};for(let u of Jt(e.markets)){let f=Qa(t,u,n);if(f)Sv(f.id,f.info,new Set(f.entries.map((l)=>pe(l.name))),e.palettes,r)}if(r.renamed.size===0&&r.removed.length===0)return[];let i=at(t,!1);Os(t,i,e.terminals,[...r.renamed.keys(),...r.removed]),Ek(t,r.renamed,r.removed),T$(t,r.renamed),uv(t,r.renamed,r.removed);let o=[...new Set(e.palettes.filter((u)=>!r.removed.includes(u)).map((u)=>r.renamed.get(u)??u))],{startup:s,...a}=e,c=s&&!r.removed.includes(s)?r.renamed.get(s)??s:void 0;return Xe(t,i,e,{...a,palettes:o,...c?{startup:c}:{}}),[...[...r.renamed].map(([u,f])=>`${u} is ${f} now — its market renamed it`),...r.removed.map((u)=>`${u} was removed from its market`)]}function $p(t){let e=ls(t,at(t,!1)).map((n)=>n.name);if(e.length===0)return;return`${e.join(", ")} ${e.length===1?"has":"have"} an update from ${e.length===1?"its market":"their markets"} — ctrl+r on a palette marked ↑ in Browse (\`ttheme\`) takes it`}function uo(t,e){let n=SL(t),r=z(t),i=new Set(e.flatMap((s)=>s.change.gone)),o=r.palettes.filter((s)=>i.has(s)).map((s)=>`${s} left its market — ttheme keeps the copy you have`);return[...n,...o]}async function Fv(t=J()){try{if(!Rs()||!lp(nr(t)))return;let e=hp(t,z(t));if(e.length===0)return;let n=ci(`Checking ${e.map(rt).join(", ")} for updates`),r=await Promise.all(e.map((s)=>pp(t,s,fp)));n.done();let i=r.flatMap((s)=>("refreshed"in s)?[s.refreshed]:[]),o=i.flatMap((s)=>wp(s)??[]);if(o.length===0)return;El([...o,...uo(t,i),...[$p(t)??[]].flat()])}catch{return}}var Gv=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,PL=["add","remove","search","init","check"];function yp(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}function IL(){try{let t=EL("gh",["api","user","--jq",".login"],{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:1e4}).trim().toLowerCase();return Gv.test(t)?t:void 0}catch{return}}async function RL(t,e){if(e.author)return e.author;let n=IL();if(!n){if(!yp())throw Error("your palettes are named after your GitHub handle — log in with `gh auth login`, or run this in a terminal");let r=await tm({message:"Your GitHub handle — your palettes are named <handle>@<market>/<palette>",validate:(i)=>Gv.test((i??"").toLowerCase())&&(i??"").length<=39?void 0:"that is not a GitHub handle"});if(ee(r))throw Error("no handle given");n=r.toLowerCase()}return Ze(t,{...e,author:n}),console.log(`Your palettes are named ${n}@<market>/<palette>`),n}function ui(t,e){if(e===V)return V;return Ht(e)?be(cn(e)):Ru(e,or(t,e))}function Pl(t,e){try{return ui(t,e)}catch{return}}function Bv(t){return ut(t)??V}function ec(t){return at(t).palettes.filter((e)=>ut(e.name)===void 0)}function AL(t){let e=tc(import.meta.dirname,"..","dist","manifest.json");return xl(e)?zr(Ol(e,"utf8")).palettes:ec(t)}function nc(t,e,n){let{updates:r,...i}=t,o=Object.entries(n).filter(([s,a])=>kt(s)&&e.includes(s)&&a!==Wr(s,{}));return{...i,markets:e,...o.length>0?{updates:Object.fromEntries(o)}:{}}}function Uv(t,e,n,r){return e.find((i)=>i!==n&&!os(i,n)&&Pl(t,i)===r)}function kp(t,e,n,r){let i=z(t),o=Jt(i.markets),s=Uv(t,o,e,n);if(s)throw Error(`${n} already names the market at ${rt(s)} — \`ttheme market remove ${n}\` first`);let a=r===void 0?{...i.updates}:{...i.updates,[e]:r};Ze(t,nc(i,o.includes(e)?o:[...o,e],a))}async function NL(t){if(!yp())return!1;let e=await Ce({message:`Update ${t} on its own when its author changes it? ttheme checks once a day, when you run it`,initialValue:!1});if(ee(e))throw Error("no answer given — nothing was added");return e}async function Wv(t,e){let n=ci(`Fetching ${rt(e)}`);try{return await Xa(t,e)}finally{n.done()}}async function TL(t,e,n){let r=await Wv(t,n),i=z(t),o=Jt(i.markets),s=Uv(t,o,n,r.id);if(s)throw Error(`${r.id} already names the market at ${rt(s)} — \`ttheme market remove ${r.id}\` first`);let{[e]:a,...c}=i.updates??{},u=a===void 0?c:{...c,[n]:a};return Ze(t,nc(i,o.map((f)=>f===e?n:f),u)),Ns(t,r),r}async function vp(t,e){let n=Kr(e),r=Jt(z(t).markets);if(r.includes(n))return console.log(`${rt(n)} is already added`),{source:n,id:ui(t,n),fresh:!1};let i=kt(n)?r.find((c)=>kt(c)&&os(c,n)):void 0;if(i){let c=await TL(t,i,n);return console.log(`Moved ${c.id} to ${xa(n)??"its default branch"} · ${rt(n)} — ${Dt(Tt(c.entries).length)}`),{source:n,id:c.id,fresh:!1}}if(Ht(n)){let c=be(cn(n));kp(t,n,c);let u=Pn(n,c,ec(t)).length;return console.log(`Added ${c} · ${rt(n)} — ${Dt(u)}, read in place`),{source:n,id:c,fresh:!0}}let o=await Wv(t,n),s=n===V?void 0:await NL(o.id);kp(t,n,o.id,s),Ns(t,o);let a=Dt(Tt(o.entries).length);return console.log(n===V?`Added the ttheme catalog — ${a}`:`Added ${o.id} · ${rt(n)} — ${a}${s?", updating on its own":""}`),{source:n,id:o.id,fresh:!0}}async function HL(t){let e=J(),{source:n,id:r,fresh:i}=await vp(e,t);if(!i)return;if(Ht(n))console.log("\nThe Browse tab of `ttheme` picks them · once the folder is on GitHub, `ttheme market add <owner>/<repo>` adds it anywhere");else if(n===V)console.log("\nThe Browse tab of `ttheme` picks them");else console.log(`
629
+ The Browse tab of \`ttheme\` picks them, or \`ttheme add ${r}/<palette>\``)}function Sp(t,e){if(kt(e))OL(rr(t,e),{force:!0})}function Ep(t){return`${Dt(t.length)} installed from it keep${t.length===1?"s":""} working: ${t.join(", ")} — \`ttheme remove\` drops ${t.length===1?"it":"them"}`}function FL(t){let e=J(),n=z(e),r=Jt(n.markets),i=r.find((u)=>Pl(e,u)===t)??r.find((u)=>u===Kv(t));if(!i)throw Error(`no market named ${t} — \`ttheme market\` lists them`);let o=Pl(e,i),s=n.palettes.filter((u)=>Bv(u)===o),a=r.filter((u)=>u!==i),c=nc(n,a,n.updates??{});if(Ze(e,c),Sp(e,i),zt(e,at(e),c),console.log(`Removed ${o??t} · ${rt(i)}`),s.length>0)console.log(Ep(s))}function Kv(t){try{return Kr(t)}catch{return}}function LL(t,e){try{if(e===V)return Tt(zr(Ol(ir(t),"utf8")).palettes).length;if(Ht(e))return Pn(e,ui(t,e),ec(t),fe(!1)).length;return qi(e,or(t,e),ec(t),fe(!1)).entries.length}catch{return}}function Mp(t,e,n=hr(),r=Date.now()){if(Ht(e))return"read in place";if(e===V)return"comes with ttheme";let i=n[e],o=dp(t,e);if(i&&(o===void 0||i.at>o))return`update failed ${gp(i.at,r)}`;return o===void 0?"never updated":`updated ${gp(o,r)}`}function CL(){let t=J(),e=z(t),n=Jt(e.markets);if(n.length===0){console.log("No markets — `ttheme market add official` brings the ttheme catalog back");return}let r=hr(),i=n.map((a)=>{let c=Pl(t,a)??"?",u=LL(t,a),f=e.palettes.filter((h)=>Bv(h)===c).length,l=Ht(a)?[]:[`auto-update ${Wr(a,e.updates)?"on":"off"}`],d=a===V?void 0:Qa(t,a)?.info.description;return{name:c,where:rt(a),about:d,note:[u===void 0?"Unreadable":Dt(u),...f>0?[`${f} installed`]:[],...l,Mp(t,a,r)].join(" · ")}}),o=Math.max(...i.map((a)=>a.name.length)),s=Math.max(...i.map((a)=>a.where.length));for(let a of i)if(console.log(` ${a.name.padEnd(o)} ${a.where.padEnd(s)} ${a.note}`),a.about)console.log(` ${" ".repeat(o)} ${a.about}`)}function xp(t){return`${t.owner.login.toLowerCase()}/${t.name}`}function Ml(t){return t.replace(/[\p{Cc}\s]+/gu," ").trim()}async function Op(t,e){let n=encodeURIComponent(`topic:${rs}${t?` ${t}`:""}`);try{let{items:r}=await Hk(`https://api.github.com/search/repositories?q=${n}&sort=stars&per_page=50`,(i)=>JSON.parse(i),void 0,e);return r.map((i)=>({...i,full_name:Ml(i.full_name),name:Ml(i.name),description:i.description===null?null:Ml(i.description),owner:{...i.owner,login:Ml(i.owner.login)}}))}catch(r){if(r instanceof Nu)throw Error("GitHub lets a search through about ten times a minute without signing in — try again in a minute");throw r}}async function jL(t){let e=J(),n=await Op(t);if(n.length===0){console.log(`No repository carries the ${rs} topic${t?` and matches ${t}`:""} yet`);return}let r=new Set(Jt(z(e).markets).map(Ur)),i=n.map((s)=>{let a=xp(s);return{arg:a,added:r.has(a),stars:`★${s.stargazers_count}`,about:s.description??""}}),o=Math.max(...i.map((s)=>s.arg.length));for(let s of i)console.log(` ${s.added?"●":"○"} ${s.arg.padEnd(o)} ${s.stars.padStart(5)} ${s.about}`);console.log("\n`ttheme market add <name>` adds one")}function zv({name:t}){return`ttheme-${t}`}function _L(t,e){ML(xu(t),{recursive:!0}),C(tc(t,Ut),uk(e)),C(tc(t,"README.md"),`# ${be(e)}
628
630
 
629
631
  A [ttheme](https://github.com/kecan0406/ttheme) market:
630
632
 
631
633
  \`\`\`sh
632
- ttheme market add ${e.owner}/${Ov(e)}
634
+ ttheme market add ${e.owner}/${zv(e)}
633
635
  ttheme
634
636
  \`\`\`
635
- `)}function Iv(t){return Ne(`x@${t}/x`)?"takes lowercase letters, digits and single hyphens":void 0}async function Rv(){if(!hp())throw Error("name the market: ttheme market init <name>, or --in <name> on new");let t=await qh({message:"Your market's name — its palettes are <you>@<name>/<palette>",validate:(e)=>Iv((e??"").toLowerCase())});if(te(t))throw Error("no market name given");return t.toLowerCase()}async function Pv(t,e){let n=Ui(t);if(e){let s=n.find((a)=>a.name===e||a.id===e||a.dir===xv(e));if(!s)throw Error(`${e} is not one of your local markets — \`ttheme market init ${e}\` makes it one`);return s}let[r,...i]=n;if(r&&i.length===0)return r;if(r)throw Error(`you have ${n.length} local markets — --in names one: ${n.map((s)=>s.name).join(", ")}`);let o=await Rv();return Av(t,lh(t,o),o)}async function Av(t,e,n){let r=!bl(za(e,Bt)),i;if(r){let s=Iv(n);if(s)throw Error(`the market name ${n} ${s}`);if(bl(e)&&JF(e).length>0)throw Error(`${e} is not empty — pick a new folder for the market`);i={owner:await XF(t,K(t)),name:n},aL(e,i)}else i=an(e);let o=be(i);return dp(t,e,o),console.log(`${r?"Made":"Added"} your market ${o} · ${ot(e)}`),{dir:e,...i,id:o}}function $v(t){return t.startsWith(".")||t.startsWith("/")||t.startsWith("~")}async function cL(t){let e=J(),n=t&&!$v(t)?t.toLowerCase():t?yv(Kr(t)).toLowerCase():await Rv(),r=t&&$v(t)?Kr(t):lh(e,n),i=await Av(e,r,n),o=`${i.owner}/${Ov(i)}`;console.log(`
637
+ `)}function Dv(t){return Te(`x@${t}/x`)?"takes lowercase letters, digits and single hyphens":void 0}async function qv(){if(!yp())throw Error("name the market: ttheme market init <name>, or --in <name> on new");let t=await tm({message:"Your market's name — its palettes are <you>@<name>/<palette>",validate:(e)=>Dv((e??"").toLowerCase())});if(ee(t))throw Error("no market name given");return t.toLowerCase()}async function Jv(t,e){let n=Di(t);if(e){let s=n.find((a)=>a.name===e||a.id===e||a.dir===Kv(e));if(!s)throw Error(`${e} is not one of your local markets — \`ttheme market init ${e}\` makes it one`);return s}let[r,...i]=n;if(r&&i.length===0)return r;if(r)throw Error(`you have ${n.length} local markets — --in names one: ${n.map((s)=>s.name).join(", ")}`);let o=await qv();return Yv(t,$h(t,o),o)}async function Yv(t,e,n){let r=!xl(tc(e,Ut)),i;if(r){let s=Dv(n);if(s)throw Error(`the market name ${n} ${s}`);if(xl(e)&&xL(e).length>0)throw Error(`${e} is not empty — pick a new folder for the market`);i={owner:await RL(t,z(t)),name:n},_L(e,i)}else i=cn(e);let o=be(i);return kp(t,e,o),console.log(`${r?"Made":"Added"} your market ${o} · ${rt(e)}`),{dir:e,...i,id:o}}function Cv(t){return t.startsWith(".")||t.startsWith("/")||t.startsWith("~")}async function GL(t){let e=J(),n=t&&!Cv(t)?t.toLowerCase():t?_v(Kr(t)).toLowerCase():await qv(),r=t&&Cv(t)?Kr(t):$h(e,n),i=await Yv(e,r,n),o=`${i.owner}/${zv(i)}`;console.log(`
636
638
  \`ttheme new <palette> --from <palette>\` puts palettes in it, and a folder under palettes/ shelves them in a catalog — others see them once it is on GitHub:
637
639
 
638
- cd ${ot(r)}
640
+ cd ${rt(r)}
639
641
  git init -b main && git add -A && git commit -m "${i.id}"
640
642
  gh repo create ${o} --public --source . --push
641
- gh repo edit ${o} --add-topic ${Qo}
643
+ gh repo edit ${o} --add-topic ${rs}
642
644
 
643
- Every push is the market: \`ttheme market add ${o}\` works anywhere`)}function uL(t){let e=t?Kr(t):process.cwd(),n=za(e,Bt);if(!bl(n))throw Error(`${ot(e)} has no ${Bt} — \`ttheme market init ${ot(e)}\` makes one`);let r=[],i=[],o=wl(n,"utf8"),s;try{s=an(e)}catch(h){return console.error(` ✗ ${h.message}`),1}let a=Ti(o),c=a.owner;for(let h of Object.keys(a).filter((m)=>!K$.includes(m)))i.push(`${Bt}: unknown key ${h} — ttheme ignores it`);for(let h of Object.keys(c).filter((m)=>!z$.includes(m)))i.push(`${Bt}: unknown key owner.${h} — ttheme ignores it`);if(!s.description)i.push(`${Bt}: no description — Browse and the market page show one`);let u=be(s),f=On(e,u,QF(J()),(h,m)=>r.push(`${wv(e,h)}: ${m.replace(`${yv(h)}: `,"")}`));for(let h of ns(e)){let m;try{m=Z0(h.path,wl(h.path,"utf8"))}catch{m=[]}for(let p of m)i.push(`${wv(e,h.path)}: unknown key ${p} — ttheme ignores it`)}let l=sv(s.renames,new Set(f.map((h)=>pe(h.name))));r.push(...l.errors.map((h)=>`${Bt}: ${h}`)),i.push(...l.warnings.map((h)=>`${Bt}: ${h}`));for(let h of f){let m=ka(h).filter((b)=>b.startsWith(" ✗")),p=h.catalog?`${h.catalog}/${pe(h.name)}`:pe(h.name);console.log(` ${p}${m.length>0?`
645
+ Every push is the market: \`ttheme market add ${o}\` works anywhere`)}function BL(t){let e=t?Kr(t):process.cwd(),n=tc(e,Ut);if(!xl(n))throw Error(`${rt(e)} has no ${Ut} — \`ttheme market init ${rt(e)}\` makes one`);let r=[],i=[],o=Ol(n,"utf8"),s;try{s=cn(e)}catch(h){return console.error(` ✗ ${h.message}`),1}let a=Ci(o),c=a.owner;for(let h of Object.keys(a).filter((m)=>!ok.includes(m)))i.push(`${Ut}: unknown key ${h} — ttheme ignores it`);for(let h of Object.keys(c).filter((m)=>!sk.includes(m)))i.push(`${Ut}: unknown key owner.${h} — ttheme ignores it`);if(!s.description)i.push(`${Ut}: no description — Browse and the market page show one`);let u=be(s),f=Pn(e,u,AL(J()),(h,m)=>r.push(`${Lv(e,h)}: ${m.replace(`${_v(h)}: `,"")}`));for(let h of ss(e)){let m;try{m=l$(h.path,Ol(h.path,"utf8"))}catch{m=[]}for(let p of m)i.push(`${Lv(e,h.path)}: unknown key ${p} — ttheme ignores it`)}let l=Ev(s.renames,new Set(f.map((h)=>pe(h.name))));r.push(...l.errors.map((h)=>`${Ut}: ${h}`)),i.push(...l.warnings.map((h)=>`${Ut}: ${h}`));for(let h of f){let m=Pa(h).filter((b)=>b.startsWith(" ✗")),p=h.catalog?`${h.catalog}/${pe(h.name)}`:pe(h.name);console.log(` ${p}${m.length>0?`
644
646
  ${m.join(`
645
647
  `)}`:" passes the gate"}`)}for(let h of r)console.error(` ✗ ${h}`);for(let h of i)console.log(` ! ${h}`);let d=(h,m)=>`${h} ${m}${h===1?"":"s"}`;return console.log(`
646
- ${u} · ${zt(f.length)} · ${d(r.length,"error")} · ${d(i.length,"warning")}`),r.length>0?1:0}async function Nv(t,e){switch(t){case void 0:oL();return;case"add":await nL(kv(t,e));return;case"remove":rL(kv(t,e));return;case"search":await sL(e);return;case"init":await cL(e);return;case"check":return uL(e);default:throw Error(`unknown market action ${t} — ${ZF.join(", ")}, or none to list them`)}}function kv(t,e){if(!e)throw Error(t==="add"?"market add takes a repository or a folder: ttheme market add alice/ttheme-dust":"market remove takes a market name — `ttheme market` lists them");return e}function Tv(t,e){let n=ui(t,e);return`${n} — ${zt(On(e,n,qa(t),fe(!1)).length)}, read in place`}function Hv(t){return[...t].length===1&&t>=" "&&t!==""}function lL(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(Hv).join("")}function oo(t,e,n=()=>!0){if(e==="backspace")return[...Xf.segment(t)].slice(0,-1).map((r)=>r.segment).join("");if(e==="ctrl-u")return"";if(e==="ctrl-w"||e==="alt-backspace")return t.replace(/\S*\s*$/,"");return Hv(e)&&n(e)?t+e:void 0}class Ja{value;constructor(t=""){this.value=t}key(t){let e=oo(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=lL(t)}}import{performance as fL}from"node:perf_hooks";import{StringDecoder as dL}from"node:string_decoder";var hL=30,Fv=50,mL=500,pL=5,Lv=Buffer.from("\x1B[M"),yl="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",Kv="\x1B[?1016$p\x1B[16t",zv={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end","1~":"home","7~":"home","3~":"delete","4~":"end","8~":"end","5~":"pgup","6~":"pgdn",I:"focus-in",O:"focus-out",Z:"shift-tab","1;2C":"shift-right","1;2D":"shift-left"},gL={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},Cv=/\[([0-?]*)([ -/]*)([@-~])/y,bL=/^\[[0-?]*[ -/]*$/,jv=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,wL=/^\[<[-\d;]*$/,_v=/\](\d+)/y,$L=/^\]\d*$/,Gv=/\]\d+;/y,kL=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,yL=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,qv="\x1B[200~",kl="\x1B[201~";function vL(t){let e=gL[t];if(e)return e;let n=t.codePointAt(0)??0;if(n<27)return`ctrl-${String.fromCharCode(n+96)}`;return n<32?void 0:t}function As(t){return{kind:"key",key:t}}function Ns(t){return{events:[As("esc")],end:t+1}}function EL(t){let e={};for(let n of t.split(":")){let r=n.indexOf("=");if(r>0)e[n.slice(0,r)]=n.slice(r+1)}return e}var SL=["left","middle","right",void 0];function kp(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,o={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...o,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let s=SL[i],a=t&32?s?"drag":"move":r||!s?"release":"press";return{...o,action:a,button:s,wheel:0,sideways:!1,count:a==="press"?1:0}}function ML(t,e,n){let r=[],i=e;while(r.length<3&&i<t.length){let u=t.codePointAt(i);r.push(u),i+=u>65535?2:1}if(r.length<3)return n?{events:[],end:t.length}:void 0;let[o=0,s=0,a=0]=r,c=Math.max(o,s,a)<128?kp(o-32,s-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function xL(t,e,n,r,i){let o=Math.max(0,e)/i.w,s=Math.max(0,n)/i.h,a=Math.floor(o),c=Math.floor(s),u=kp(t,a,c,r);return u&&{...u,fx:o-a,fy:s-c}}function Bv(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[o=-1,s=0,a=0]=t.slice(1).split(";").map(Number),c=r?xL(o,s,a,n==="m",r):kp(o,s-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[o,s=0,a=0]=t.split(";").map(Number),c=o===6?"cell":o===4?"window":o===8?"grid":void 0;return c?[{kind:"size",of:c,h:s,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[o=0,s=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:o,value:s}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];let i=e===""?zv[`${t}${n}`]:void 0;return i?[As(i)]:[]}function OL(t,e,n,r){jv.lastIndex=e+1;let i=jv.exec(t);if(i)return{events:Bv(i[1],"",i[2],r),end:e+1+i[0].length};Cv.lastIndex=e+1;let o=Cv.exec(t);if(!o){let l=t.slice(e+1);return!n&&(bL.test(l)||wL.test(l))?void 0:Ns(e)}let[s,a="",c="",u=""]=o,f=e+1+s.length;if(a===""&&c===""&&u==="M")return ML(t,f,n);if(a==="200"&&u==="~"){let l=t.indexOf(kl,f);if(l===-1)return n?{events:[{kind:"paste",text:t.slice(f)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(f,l)}],end:l+kl.length}}return{events:Bv(a,c,u,r),end:f}}function IL(t){let e=kL.exec(t);if(e){let s=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*s),w:Math.round(Number(e[2])*s)}]}let n=yL.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...o]=t.split(";");return[{kind:"osc",code:r,meta:EL(i),payload:o.join(";")}]}function RL(t,e,n){_v.lastIndex=e+1;let r=_v.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&$L.test(t.slice(e+1))?void 0:Ns(e);let o=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(o.length===0)return n?{events:[],end:t.length}:void 0;let s=Math.min(...o);return{events:IL(t.slice(e+2,s)),end:s+(t[s]==="\x07"?1:2)}}function PL(t,e,n){let r=t[e+2];if(r===void 0)return n?Ns(e):void 0;if(!/^[A-Za-z]$/.test(r))return Ns(e);let i=zv[r];return{events:i?[As(i)]:[],end:e+3}}function AL(t,e,n,r){let i=t[e+1];if(i===void 0)return n?Ns(e):void 0;if(i==="[")return OL(t,e,n,r);if(i==="]")return RL(t,e,n);if(i==="O")return PL(t,e,n);if(i==="")return{events:[As("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[As(`alt-${i}`)],end:e+2};return Ns(e)}function Uv(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=AL(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let o=String.fromCodePoint(t.codePointAt(i)),s=vL(o);if(s)r.push(As(s));i+=o.length}return{events:r,rest:""}}function NL(t){let e=t.indexOf(Lv);if(e===-1)return{bytes:t,carry:void 0};let n=[],r=0;while(e!==-1&&e+6<=t.length){n.push(t.subarray(r,e));let[i=0,o=0,s=0]=t.subarray(e+3,e+6);if(o>32&&s>32)n.push(Buffer.from(`\x1B[<${i-32};${o-32};${s-32}M`));r=e+6,e=t.indexOf(Lv,r)}return n.push(t.subarray(r,e===-1?t.length:e)),{bytes:Buffer.concat(n),carry:e===-1?void 0:t.subarray(e)}}function Wv(t){return Gv.lastIndex=1,t.startsWith(qv)||t.startsWith("\x1B]")&&Gv.test(t)}function TL(t,e){let n=t.slice(-kl.length)+e;return t.startsWith(qv)?n.includes(kl):n.includes("\x07")||n.includes("\x1B\\")}class yp{held="";timer;carry;pressed;wheeled;utf8=new dL("utf8");burst;cell;take;constructor(t,e=()=>!1,n=()=>{return}){this.burst=e,this.cell=n,this.take=(r)=>{let i=this.counted(r);if(i.length>0)t(i)}}counted(t){let e=fL.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let o=n.wheel*(n.sideways?2:1),s=this.wheeled;if(s!==void 0&&s.way===o&&e-s.at<pL)return!1;return this.wheeled={at:e,way:o},!0}if(n.action==="release")n.count=this.pressed?.count??0;if(n.action!=="press"||!n.button)return!0;let r=this.pressed,i=r!==void 0&&r.button===n.button&&r.row===n.row&&Math.abs(r.col-n.col)<=1&&e-r.at<=mL;return n.count=i?r.count+1:1,this.pressed={at:e,button:n.button,row:n.row,col:n.col,count:n.count},!0})}feed(t){clearTimeout(this.timer);let e=typeof t==="string"?t:this.bytes(t);if(this.carry)this.wait(Fv);if(!this.held&&!e.includes("\x1B")&&this.burst(e)){this.take([{kind:"paste",text:e}]);return}if(Wv(this.held)&&!TL(this.held,e)){this.held+=e;return}let{events:n,rest:r}=Uv(this.held+e,!1,this.cell());if(this.held=r,r&&!Wv(r))this.wait(r.length===1?hL:Fv);if(n.length>0)this.take(n)}bytes(t){let{bytes:e,carry:n}=NL(this.carry?Buffer.concat([this.carry,t]):t);return this.carry=n,this.utf8.write(e)}wait(t){clearTimeout(this.timer),this.timer=setTimeout(()=>this.flush(),t)}flush(){clearTimeout(this.timer),this.carry=void 0;let{events:t}=Uv(this.held,!0,this.cell());if(this.held="",t.length>0)this.take(t)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class Ya{window;grid;see(t){if(t.kind!=="size")return;if(t.of==="cell")return{w:t.w,h:t.h};if(t.of==="window")this.window=t;else this.grid=t;let e=this.window,n=this.grid;return e&&n&&n.h>0&&n.w>0?{h:Math.floor(e.h/n.h),w:Math.floor(e.w/n.w)}:void 0}}class vp{known=!1;cell;see(t){if(t.kind==="mode"&&t.mode===1016)this.known=t.value===1||t.value===2;else if(t.kind==="size"&&t.of==="cell"&&t.w>0&&t.h>0)this.cell={w:t.w,h:t.h};else if(t.kind==="attributes")return{cell:this.known?this.cell:void 0};return}}var El={on:"\x1B[?1049h",off:"\x1B[?1049l"},Tn={on:"\x1B[?25l",off:"\x1B[?25h"},li={on:"\x1B[?7l",off:"\x1B[?7h"},dr={on:"\x1B[?2004h",off:"\x1B[?2004l"},Xv={on:"\x1B[?1004h",off:"\x1B[?1004l"},HL={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},Dv={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"};function fi(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[HL]}var Qv={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},FL=3000;class Va extends Error{exit;constructor(t){super(t);this.exit=128+Qv[t]}}var Nn=[],so=new Map,Za=new Map,Jv;function Yv(t){return Nn.findLast((e)=>e.input===t)}var Zv;function tE(t){for(let e of[...Nn].reverse())e.abort(t);if(!Zv)Zv=setTimeout(()=>{eE(),process.exit(t instanceof Va?t.exit:1)},FL).unref()}var LL=Object.fromEntries(Object.keys(Qv).map((t)=>[t,()=>tE(new Va(t))]));function eE(){for(let t of[...Nn].reverse())t.close()}function CL(){for(let t of Nn)t.reassert();Nn.at(-1)?.redraw()}function Vv(t){let e=t?"on":"off";for(let[n,r]of Object.entries(LL))process[e](n,r);if(process[e]("uncaughtException",tE),process[e]("exit",eE),process.platform!=="win32")process[e]("SIGCONT",CL)}function vl(){}class nE{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=vl;open=!0;aborted=!1;constructor(t={}){if(this.input=t.input??process.stdin,this.output=t.output??process.stdout,this.tty=this.output.isTTY===!0&&this.input.isTTY===!0,this.assumed=t.assume??[],this.keys=new yp((r)=>this.deliver(r),t.burst,()=>so.has(Dv)?Jv:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(vl),this.tty&&!Nn.some((r)=>r.tty))Vv(!0);Nn.push(this);let e="";for(let r of this.assumed)if(!so.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=Za.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);Za.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",vl)}hold(t){this.write(this.claim(t))}pixels(t){Jv=t,this.hold(Dv)}get cols(){return this.output.columns||80}get rows(){return this.output.rows||24}write(t){if(t&&this.open)this.output.write(t)}listen(t){this.take=t;let e=this.queued;if(this.queued=[],e.length>0)t(e)}onResize(t){this.resized=t}until(t){return Promise.race([t,this.failed])}loop(t,e=()=>{}){return this.until(new Promise((n)=>{let r=!1;this.listen((i)=>{for(let o of i){let s=r?void 0:t(o);if(s!==void 0)r=!0,n(s)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let o={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return s(u),!0}},s=(c)=>{if(clearTimeout(a),this.asking===o)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>s(void 0),n);this.asking=o,this.write(t)})}abort(t){if(this.aborted)return;this.aborted=!0,this.keys.stop(),this.reject(t)}redraw(){this.resized?.()}reassert(){if(this.open)this.input.setRawMode?.(!0),this.write([...this.assumed,...this.owned].map((t)=>t.on).join(""))}close(){if(!this.open)return;this.keys.stop(),this.input.off("data",this.received),this.output.off("resize",this.resizing);let t="";for(let n of[...this.modes].reverse()){let r=(so.get(n)??1)-1;if(r===0)so.delete(n),t+=n.off;else so.set(n,r)}this.write(t),this.open=!1;let e=(Za.get(this.input)??1)-1;if(e===0)Za.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else Za.set(this.input,e);if(this.output.off("error",vl),Nn.splice(Nn.indexOf(this),1),this.tty&&!Nn.some((n)=>n.tty))Vv(!1)}received=(t)=>{if(Yv(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(Yv(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=so.get(t)??0;if(so.set(t,e+1),e>0)return"";return this.owned.push(t),t.on}deliver(t){let e=this.asking,n=e?t.filter((r)=>!e.pick(r)):t;if(n.length===0)return;if(!this.take||this.asking?.hold){this.queued.push(...n);return}this.take(n)}release(){if(this.take&&this.queued.length>0){let t=this.queued;this.queued=[],this.take(t)}}}async function di(t,e){let n=new nE(t);try{return await e(n)}finally{n.close()}}var jL=3,iE={series:{top:(t)=>t.group,shelf:(t)=>Qa(t.group)?t.catalog:void 0},markets:{top:(t)=>Qa(t.group)?t.group:Z,shelf:(t)=>Qa(t.group)?t.catalog:t.group}};function tc(t,e){return`${t}/${e}`}function rE(t){return ut(t.name)?pe(t.name):t.name}function Ep(t,e){let n=e.shelf(t);return n===void 0?void 0:tc(e.top(t),n)}function Sl(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="group")return`group ${t.name}`;if(t?.kind==="catalog")return`catalog ${tc(t.group,t.name)}`;if(t?.kind==="extra")return`extra ${t.extra.key}`;return t?.kind??""}function Xa(t){return t?.kind==="rule"||t?.kind==="extra"&&t.extra.rule===!0}function Ml(t,e){return _i([t.name,t.group,t.native??"",t.catalog??"",...t.nativeNames??[],...mu(t.booru)],e)}function oE(t,e,n,r="series",i=[]){let o=iE[r],s=n.trim(),a=[],c=new Set,u=(f)=>({kind:"palette",entry:f});for(let f of t){let l=o.top(f);if(f.default||c.has(l))continue;c.add(l);let d=t.filter((b)=>!b.default&&o.top(b)===l),h=s?d.filter((b)=>Ml(b,s)):d;if(s&&h.length===0)continue;let m=s.length>0||e.has(l);if(a.push({kind:"group",name:l,...l===f.group&&f.native?{native:f.native}:{},lead:d.find((b)=>b.lead)??f,expanded:m,count:h.length}),!m)continue;let p=h.filter((b)=>o.shelf(b)!==void 0);for(let b of new Set(p.map(($)=>o.shelf($)))){let $=p.filter((E)=>o.shelf(E)===b),k=$.find((E)=>E.lead)??$[0],v=s.length>0||e.has(tc(l,b));if(a.push({kind:"catalog",group:l,name:b,...!Qa(k.group)&&k.native?{native:k.native}:{},lead:k,expanded:v,count:$.length}),v)a.push(...$.map(u))}a.push(...h.filter((b)=>o.shelf(b)===void 0).map(u))}for(let f of i)if(!c.has(f)&&(s===""||_i([f],s)))a.push({kind:"group",name:f,expanded:e.has(f),count:0});return a}function _L(t,e){let n=e.trim(),r=new Set(t.filter((i)=>!i.default&&(n===""||Ml(i,n))).map((i)=>i.group));return oE(t,new Set,"").filter((i)=>i.kind==="group"&&r.has(i.name))}function Qa(t){return t.includes("@")}function GL(t,e,n,r,i=!0){let o=n-1;if(o<0)return t;let s;if(!Number.isFinite(e))s=e>0?o:0;else if(e>0)s=t>=o?i?0:o:Math.min(o,t+e);else s=t<=0?i?o:0:Math.max(0,t+e);if(!r(s))return s;let a=Math.sign(e),c=s+a;if(c>=0&&c<=o)return c;return i&&Math.abs(e)===1?c<0?o:0:s-a}function xl(t,e){let n={home:Number.NEGATIVE_INFINITY,end:Number.POSITIVE_INFINITY,pgup:-e,pgdn:e};return t===void 0?void 0:n[t]}function BL(t){let e=t.findIndex((n)=>n.kind==="group"&&Qa(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="group")?[...t.slice(0,e),{kind:"rule"},...t.slice(e)]:t}function UL(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function Ol(t){return t==="decode"||t==="glitch"?t:"typewriter"}function Ts(t,e,n){return ze({kind:"row",at:t,part:e},n)}class Il{picked;scope;maxItems;named=[];series=[];layout;place;color;p;onFocus;note;badge;tops;extras;entries=[];seriesPad=0;namePad=0;expanded=new Set;rows=[];cursor=0;top=0;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.layout=t.layout??"series",this.place=iE[this.layout],this.maxItems=t.maxItems??12,this.color=t.color??!0,this.p=Me(this.color),this.onFocus=t.onFocus,this.note=t.note,this.badge=t.badge,this.tops=t.tops,this.extras=t.extras,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.series=[...new Set(this.named.map((e)=>e.group))],this.seriesPad=Math.max(0,...this.series.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+rE(e).length))}indent(t){return this.place.shelf(t)===void 0?" ":" "}setEntries(t){this.load(t),this.rebuild("stay")}setFilter(t){if(t!==this.filter)this.filter=t,this.rebuild("keep")}clear(){let t=this.rows[this.cursor];if(t?.kind==="palette"&&!t.entry.default){this.expanded.add(this.place.top(t.entry));let e=Ep(t.entry,this.place);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}refresh(){this.rebuild("stay")}select(t){let e=this.rows.findIndex((n)=>Sl(n)===t);if(e===-1)return!1;return this.cursor=e,this.sync(),!0}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.under(t,e).filter((r)=>n===""||Ml(r,n))}under(t,e){return this.named.filter((n)=>this.place.top(n)===t&&(e===void 0||this.place.shelf(n)===e))}inside(t){return t.kind==="palette"?[t.entry]:t.kind==="group"?this.under(t.name):t.kind==="catalog"?this.under(t.group,t.name):[]}everyone(t){return t.flatMap((e)=>e.kind==="group"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="group"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.group,t.name).map((r)=>r.name):t?.kind==="all"?this.everyone(this.rows).map((r)=>r.name):[];if(e.length===0)return;let n=e.some((r)=>!this.picked.has(r));for(let r of e)if(n)this.picked.add(r);else this.picked.delete(r)}pickedIn(t,e){return this.members(t,e).filter((n)=>this.picked.has(n.name)).length}pickedCount(){if(this.scope==="palette")return this.named.filter((t)=>this.picked.has(t.name)).length;return this.series.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="series"?this.series.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="series")return this.rows.filter((e)=>e.kind==="group").length;return t?this.named.filter((e)=>Ml(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="group"&&this.scope==="series"?t.lead:void 0;if(e&&e.name!==this.lastFocused)this.lastFocused=e.name,this.onFocus?.(e)}rebuild(t){let e=this.rows[this.cursor],n=this.scope==="series"?_L(this.entries,this.filter):oE(this.entries,this.expanded,this.filter,this.layout,this.tops?.()??[]),r=this.layout==="markets"||n.length===0?n:BL([{kind:"all",count:this.allCount(n)},...n]);this.rows=[...r,...(this.extras?.()??[]).map((o)=>({kind:"extra",extra:o}))];let i=n.length>0?this.rows.indexOf(n[UL(n)]):0;if(t==="first")this.cursor=i;else if(t==="keep"||t==="stay"){let o=Sl(e),s=e?.kind==="palette"||t==="stay"?this.rows.findIndex((c)=>Sl(c)===o):-1,a=e?.kind==="extra"&&t==="stay";this.cursor=s!==-1?s:a?Math.min(this.cursor,this.rows.length-1):i}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.settle(),this.sync()}settle(){if(!Xa(this.rows[this.cursor]))return;let t=this.rows.findIndex((n,r)=>r>this.cursor&&!Xa(n)),e=this.rows.findLastIndex((n,r)=>r<this.cursor&&!Xa(n));this.cursor=t!==-1?t:e!==-1?e:this.cursor}allCount(t){return this.scope==="series"?t.length:this.everyone(t).length}move(t,e=!0){this.cursor=GL(this.cursor,t,this.rows.length,(n)=>Xa(this.rows[n]),e),this.sync()}point(t){let e=this.rows[t];if(!e||Xa(e))return!1;return this.cursor=t,this.sync(),!0}flip(){let t=this.rows[this.cursor];if(t?.kind==="group"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="group"||t?.kind==="catalog")&&this.scope==="palette"&&!this.filter}open(){if(this.foldable())this.flip();else this.pick()}toggle(t){if(this.expanded.has(t))this.expanded.delete(t);else this.expanded.add(t);this.rebuild("clamp")}climb(t,e){this.expanded.delete(t),this.rebuild("clamp"),this.reach(e)}reach(t){this.cursor=Math.max(0,this.rows.findIndex((e)=>Sl(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="series")return;let e=this.rows[this.cursor];if(e?.kind==="group"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(tc(e.group,e.name));else if(!t)this.reach(`group ${e.group}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=Ep(e.entry,this.place);if(n===void 0){let r=this.place.top(e.entry);this.climb(r,`group ${r}`)}else this.climb(n,`catalog ${n}`)}}window(){if(this.cursor<this.top)this.top=this.cursor;if(this.cursor>=this.top+this.maxItems)this.top=this.cursor-this.maxItems+1;this.top=Math.min(this.top,Math.max(0,this.rows.length-this.maxItems));let t=this.rows.slice(this.top,this.top+this.maxItems);return{lines:t.map((e,n)=>this.renderRow(e,this.top+n)),above:this.top,below:this.rows.length-this.top-t.length}}renderRow(t,e){if(t.kind==="rule")return` ${this.p.dim("── Markets ──────────")}`;if(t.kind==="extra"){let n=t.extra.text(e===this.cursor,e);return t.extra.rule?n:Ts(e,"row",n)}return Ts(e,"row",this.rowText(t,e))}rowText(t,e){let n=e===this.cursor,r=t.kind==="palette"?t.entry:t.kind==="all"?void 0:t.lead,i=this.color&&n&&r!==void 0,{dim:o,bold:s}=this.p,a=(v)=>this.color?` ${Lb(lu(v),i?Kn(v.foreground):bt)}`:"",c=n?i?`${Kn(r.cursor)}${A.gutter}${bt} `:`${A.gutter} `:" ",u=(v)=>i?`${c}${Fb(r.selection,r.foreground)} ${v} ${se}`:`${c} ${v}`,f=(v)=>Ts(e,"box",`${v?A.on:A.off} `),l=(v)=>Ts(e,"fold",`${v?A.opened:A.closed} `);if(t.kind==="all")return u(`${f(this.everyone(this.rows).every((v)=>this.picked.has(v.name)))}Select all ${o(`(${t.count})`)}`);if(t.kind==="group"&&this.scope==="series"){let v=`(${t.count})${t.native?` ${t.native}`:""}`;return u(`${f(this.pickedIn(t.name)===t.count)}${s(t.name.padEnd(this.seriesPad))}${t.lead?a(t.lead):""}${this.color?" ":" "}${o(v)}`)}let d=this.rows[this.cursor],h=(v,E)=>this.color&&d?.kind==="palette"&&v?this.p.accent(s(E)):s(E);if(t.kind==="group"){let v=h(d?.kind==="palette"&&this.place.top(d.entry)===t.name,t.name),E=t.native?` ${o(t.native)}`:"",x=this.badge?.(t.name)??"";return u(`${l(t.expanded)}${v} ${o(`(${this.pickedIn(t.name)}/${t.count})`)}${E}${x}`)}if(t.kind==="catalog"){let v=d?.kind==="palette"&&Ep(d.entry,this.place)===tc(t.group,t.name),E=o(`(${this.pickedIn(t.group,t.name)}/${t.count})`),x=t.native?` ${o(t.native)}`:"";return u(` ${l(t.expanded)}${h(v,t.name)} ${E}${x}`)}let m=t.entry,p=this.indent(m),b=rE(m),$=this.color?b.padEnd(this.namePad-p.length):b,k=n?s($):$;return u(`${p}${f(this.picked.has(m.name))}${k}${a(m)}${this.note?.(m)??""}`)}}function Sp(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.series[Math.floor(Math.random()*t.series.length)];return e&&n?`${e.name} | ${n}`:""}class Rl{fx;make;redraw;roller;example="";step=0;seed=0;timer;constructor(t,e,n){this.fx=t,this.make=e,this.redraw=n,this.roll(),this.roller=setInterval(()=>{this.roll(),this.step=8,this.redraw()},3000),this.roller.unref?.()}stop(){clearInterval(this.roller),clearTimeout(this.timer)}roll(){let t=this.make();this.example=t.length>30?`${t.slice(0,29)}…`:t,this.seed=Math.floor(Math.random()*997)}text(){if(this.step===0)return this.example;if(!this.timer)this.timer=setTimeout(()=>{this.timer=void 0,this.step-=1,this.redraw()},60),this.timer.unref?.();let t=Math.floor(this.example.length*(8-this.step)/8);if(this.fx==="typewriter")return`${this.example.slice(0,t)}▏`;let e=this.fx==="decode"?"abcdefghijklmnopqrstuvwxyz":"▓▒░#*+=<>?/-_",n=this.fx==="decode"?(r)=>!/[a-z0-9]/i.test(r):(r)=>r===" ";return[...this.example].map((r,i)=>i+(i*7+this.seed)%3<t||n(r)?r:e[Math.floor(Math.random()*e.length)]??r).join("")}}var WL=5;class Mp{picked;list;scope;color;required;most;hint;field=new Ja;input;output;state="active";error="";redraw=()=>{};constructor(t){this.scope=t.scope??"palette",this.picked=new Set(t.installed??[]),this.color=t.color??!0,this.required=t.required??!1,this.most=t.maxItems??12,this.input=t.input,this.output=t.output,this.list=new Il({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new Rl(t.fx??"typewriter",()=>Sp(this.list),()=>this.redraw())}prompt(){return di({input:this.input,output:this.output,modes:[Tn,dr]},async(t)=>{let e=new Jm((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(jL,Math.min(this.most,t.rows-WL)),this.draw()};this.redraw=()=>e.draw(n()),t.onResize(()=>e.redraw(n())),this.redraw();try{let r=await t.loop((i)=>{return this.take(i),this.state==="submit"||this.state==="cancel"?this.state:void 0},()=>this.redraw());return this.redraw=()=>{},e.end(this.draw()),r}finally{this.hint.stop()}})}take(t){if(t.kind==="paste"){this.field.paste(t.text),this.list.setFilter(this.field.value);return}if(t.kind!=="key")return;let e=t.key;if(this.state==="error")this.state="active";let n=xl(e,this.list.maxItems);if(e==="esc"||e==="ctrl-c")this.state="cancel";else if(e==="enter")if(this.required&&this.picked.size===0)this.error=`Pick at least one ${this.scope}`,this.state="error";else this.state="submit";else if(e==="up"||e==="down")this.list.move(e==="up"?-1:1);else if(e==="left"||e==="right")this.list.fold(e==="right");else if(n!==void 0)this.list.move(n);else if(e===" ")this.list.pick();else if(this.field.key(e))this.list.setFilter(this.field.value)}draw(){let{dim:t,accent:e,warn:n}=Me(this.color),r=this.scope==="series"?"Series":"Catalog";if(this.state==="submit")return[`${t("◇")} ${r} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${r} · cancelled`)}`];let i=this.field.value,o=`${e("◆")} ${r} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,s=this.hint.text(),a=`${e("│")} ${i?`${i}_`:t(`Search…${s?` e.g. ${s}`:""}`)}`,{lines:c,below:u}=this.list.window(),f=c.length>0?c.map((p)=>`${e("│")} ${p}`):[`${e("│")} ${t(`No ${this.scope==="series"?"series":"palettes"} match '${i}'`)}`];while(f.length<this.list.maxItems)f.push(e("│"));let l=u>0?`${e("│")} ${t(`↓ ${u} more`)}`:e("│"),d=this.scope==="series"?"":" · ←→ fold",h=this.scope==="series"?"continue":"install",m=this.state==="error"?`${e("└")} ${n(this.error)}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${h} · esc cancel`)}`;return[o,a,...f,l,m]}}var xp=34,KL=72,zL=94,qL=22,sE=40,aE=10,Pl=3,cE=600,DL=500,JL=300,uE=12,lE={title:"",lines:[],brief:""};function Hs(t){let e=t.trim();if(e!==Z&&!e.includes("/")&&!e.startsWith("~"))return;try{return Kr(e)}catch{return}}function fE(t){return t.charAt(0).toUpperCase()+t.slice(1)}class Op{picked;field=new Ja;adds=new Map;removes=new Set;want=new Map;renew=new Set;updates;tuned;scope;busy=new Map;failed=new Map;peeked=new Map;peekFailed=new Map;staging=new Set;timers=new Map;refreshed=[];inflight=new Set;markets;kept;installed;startup;io;order;color;p;hub;owns;input;output;maxItems=12;paint;catalog;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;asking;leaving;goto;repos;searching=!1;searchError;searched;asked=0;help=!1;live;constructor(t){this.markets=t.markets,this.kept=t.kept,this.installed=new Set(t.installed),this.updates=new Set(t.updates??[]),this.tuned=new Set(t.tuned??[]),this.startup=t.startup,this.io=t.io,this.order=t.order??((e)=>e),this.color=t.color??!0,this.p=Me(this.color),this.hub=t.hub,this.owns=t.owns??!1,this.input=t.input,this.output=t.output,this.live=t.lookups??!0,this.paint=t.onFocus,this.picked=new Set(t.installed),this.catalog=new Il({entries:this.entries(),picked:this.picked,layout:"markets",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),badge:(e)=>this.badge(e),tops:()=>this.tops(),extras:()=>this.found(),onFocus:(e)=>this.focus(e)}),this.hint=new Rl(t.fx??"typewriter",()=>Sp(this.catalog),()=>this.redraw());for(let e of t.due)this.update(e);this.lookup()}run(){let t=[...this.owns?[El,Tn,li]:[],dr,...fi()],e=this.owns?[]:[Tn,li];return di({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=new no({write:(i)=>n.write(i),view:()=>this.state==="active"?{lines:this.view(),ticking:this.phase==="applying"}:void 0,beat:()=>{this.beat+=1}});this.screen=r,n.onResize(()=>{r.reset(),r.request()}),r.now();try{return await n.loop((i)=>{if(i.kind==="key")this.key(i.key);else if(i.kind==="paste")this.pasted(i.text);else if(i.kind==="mouse")this.mouse(i,r);return this.state==="active"?void 0:this.state},()=>r.soon())}finally{r.stop(),this.screen=void 0,this.hint.stop();for(let i of this.timers.values())clearTimeout(i);this.timers.clear()}})}applied(){return this.started}lines(){return this.log}failure(){return this.stopped}next(){return this.goto}async idle(){await Promise.allSettled([...this.inflight])}result(){let t=new Set(this.entries().map((e)=>e.name));return{picked:new Set([...this.picked].filter((e)=>t.has(e))),adds:[...this.adds.values()],removes:[...this.removes],auto:Object.fromEntries(this.want),renew:[...this.renew].filter((e)=>this.updates.has(e)&&this.picked.has(e)&&t.has(e)),refreshed:this.refreshed}}key(t){if(t==="ctrl-c"){this.state="cancel";return}if(this.help){if(t==="?"||t==="esc")this.help=!1;return}if(this.leaving!==void 0){if(t==="esc")this.leaving=void 0;else if(/^[yn]$/i.test(t)){if(t.toLowerCase()==="y")this.begin();else this.goto=this.leaving,this.state="cancel";this.leaving=void 0}return}if(this.asking){if(t==="esc")this.asking=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}let e=xl(t,this.maxItems),n=this.catalog;if(t==="enter")if(n.foldable())n.flip();else if(this.dirty())this.phase="review",this.offset=0;else this.state="submit";else if((t==="esc"||t==="ctrl-u")&&this.field.value)this.clear();else if(t==="esc")this.state="cancel";else if(t==="?")this.help=!0;else if(e!==void 0)this.move(e);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="left"||t==="right")n.fold(t==="right");else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Ak(this.hub,t==="tab"?1:-1))}else if(t==="shift-left"||t==="shift-right")this.autoUpdate(t==="shift-right");else if(t===" ")this.activate();else if(t==="delete"){let r=this.focusedMarket();if(r)this.toggleMarket(r)}else if(t==="ctrl-r")this.refresh();else if(t==="ctrl-s")this.cycle();else if(this.field.key(t))this.typed()}refresh(){let t=this.catalog.focusedRow(),e=this.focusedMarket();if(e){if(kt(e.source)&&!this.adds.has(e.source))this.update(e.source)}else if(t?.kind==="extra"){if(t.extra.found?.kind==="find")this.search()}else if(t?.kind!=="group")this.toggleRenew()}pasted(t){if(this.phase==="browse"&&!this.help&&!this.asking&&this.leaving===void 0)this.field.paste(t),this.typed()}mouse(t,e){if(this.help){if(t.action==="release")this.help=!1;return}let n=e.point(t),r=n?.target,i=this.phase==="browse"&&this.leaving===void 0&&!this.asking;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(!i)return;if(r.kind==="chip")this.scopeTo(r.source);else if(r.kind==="row")this.catalog.point(r.at),this.watch()}else if(t.action==="release"&&n?.inside){if(r.kind==="key")this.key(r.key);else if(r.kind==="page"){if(this.phase!=="browse")this.scroll(r.step*this.span());else if(i)this.move(r.step*this.maxItems)}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(Nk(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}wheel(t){if(this.phase!=="browse"){this.scroll(t);return}this.move(t,!1)}openRow(t,e){let n=this.catalog;if(n.focusedRow()?.kind==="extra"){if(t.part==="box"||e===2)this.activate()}else if(t.part==="box")n.pick();else if(t.part==="fold")n.flip();else if(e===2)n.open()}typed(){this.catalog.setFilter(this.field.value),this.later("search",cE,()=>this.lookup()),this.watch()}clear(){this.field.value="",this.catalog.clear(),this.later("search",cE,()=>this.lookup()),this.watch()}redraw(){if(this.state==="active")this.screen?.request()}focus(t){if(this.state!=="submit"&&this.state!=="cancel")this.paint?.(t)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}active(){return[...this.markets.filter((t)=>!this.removes.has(t.source)),...this.adds.values()]}entries(){let t=this.active().flatMap((i)=>i.entries),e=new Set(t.map((i)=>i.name)),n=new Map,r=this.markets.filter((i)=>this.removes.has(i.source)).flatMap((i)=>i.entries);for(let i of[...this.kept,...r])if(this.installed.has(i.name)&&!e.has(i.name))n.set(i.name,i);return this.order([...t,...n.values()])}scoped(t){let e=this.scope,n=e===void 0?void 0:this.active().find((i)=>i.source===e);if(!n)return this.scope=void 0,t;let r=new Set(n.entries.map((i)=>i.name));return t.filter((i)=>r.has(i.name))}reload(){this.catalog.setEntries(this.scoped(this.entries()))}chips(){let t=this.active().map((e)=>({source:e.source,label:e.id,count:e.entries.filter((n)=>!n.default).length}));return[{source:void 0,label:"All",count:this.entries().filter((e)=>!e.default).length},...t]}tops(){return[...this.markets,...this.adds.values()].filter((t)=>this.scope===void 0||t.source===this.scope).map((t)=>t.id)}marketNamed(t){return[...this.markets,...this.adds.values()].find((e)=>e.id===t)}focusedMarket(){let t=this.catalog.focusedRow();return t?.kind==="group"?this.marketNamed(t.name):void 0}cycle(){if(this.active().length<2)return;let t=this.chips(),e=Math.max(0,t.findIndex((n)=>n.source===this.scope));this.scopeTo(t[(e+1)%t.length]?.source)}scopeTo(t){this.scope=t,this.reload(),this.catalog.refocus()}move(t,e=!0){this.catalog.move(t,e),this.watch()}autoUpdate(t){let e=this.focusedMarket();if(e&&kt(e.source))if(t===e.auto)this.want.delete(e.source);else this.want.set(e.source,t)}activate(){let t=this.catalog.focusedRow();if(t?.kind!=="extra"){this.catalog.pick();return}let e=t.extra.found;if(e?.kind==="add")this.load(e.source,!0);else if(e?.kind==="repo"){let n=this.known(e.source);if(n)this.catalog.select(`group ${n.id}`);else this.load(e.source,!0)}else if(e?.kind==="find")this.search()}toggleMarket(t){if(this.adds.has(t.source))this.adds.delete(t.source),this.want.delete(t.source);else if(this.removes.has(t.source))this.removes.delete(t.source);else this.removes.add(t.source);this.reload()}known(t){return[...this.markets,...this.adds.values()].find((e)=>es(e.source,t))}load(t,e){let n=this.peeked.get(t);if(n){if(e)this.arrive(t,n);return}if(e)this.staging.add(t);if(this.busy.has(t))return;this.failed.delete(t),this.peekFailed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((r)=>{if(this.busy.delete(t),this.peeked.set(t,r),this.staging.delete(t))this.arrive(t,r);this.redraw()},(r)=>{if(this.busy.delete(t),this.staging.delete(t))this.failed.set(t,r.message);else this.peekFailed.set(t,r.message);this.redraw()})}arrive(t,e){let n=this.active().find((r)=>r.id===e.id);if(n)this.failed.set(t,`${e.id} already names the market at ${n.shown}`);else if(Ht(t)||t===Z)this.stage(e,e.auto);else this.asking=e;this.redraw()}later(t,e,n){this.cancel(t),this.timers.set(t,setTimeout(()=>{if(this.timers.delete(t),this.state!=="submit"&&this.state!=="cancel")n()},e))}cancel(t){clearTimeout(this.timers.get(t)),this.timers.delete(t)}wants(t){return!this.known(t)&&!this.peeked.has(t)&&!this.busy.has(t)&&!this.peekFailed.has(t)}focusedFound(){let t=this.catalog.focusedRow();return t?.kind==="extra"?t.extra.found:void 0}watch(){if(!this.live)return;let t=Hs(this.field.value);if(t&&this.wants(t))this.later("typed",DL,()=>this.load(t,!1));else this.cancel("typed");let e=this.focusedFound();if(e?.kind==="repo"&&this.wants(e.source)){let n=e.source;this.later("focus",JL,()=>{let r=this.focusedFound();if(r?.kind==="repo"&&r.source===n)this.load(n,!1)})}else this.cancel("focus")}answer(t){let e=this.asking;if(this.asking=void 0,e)this.stage(e,t)}stage(t,e){if(this.adds.set(t.source,t),e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e);let n=Hs(this.field.value);if(n&&es(n,t.source))this.field.value="",this.catalog.setFilter("");this.reload(),this.catalog.select(`group ${t.id}`)}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({market:e,refreshed:n,updates:r})=>{this.busy.delete(t),this.updates=new Set(r),this.markets=this.markets.map((i)=>i.source===t?e:i),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}wanted(){let t=this.field.value.trim();return t&&!Hs(t)?t:""}lookup(){if(this.live&&this.searched!==this.wanted())this.search()}search(){let t=this.wanted(),e=++this.asked;this.searched=t,this.searching=!0,this.searchError=void 0,this.track(this.io.search(t||void 0)).then((n)=>{if(e===this.asked)this.searching=!1,this.repos=n,this.catalog.refresh(),this.watch(),this.redraw()},(n)=>{if(e===this.asked)this.searching=!1,this.searchError=n.message,this.redraw()})}found(){let t=Hs(this.field.value),e=(...i)=>_i(i,this.field.value),n=(this.repos??[]).map((i)=>({repo:i,source:wp(i)})).filter(({repo:i,source:o})=>e(o,i.description??"")),r=[...t&&!this.known(t)?[{kind:"add",source:t}]:[],...n.map(({repo:i,source:o})=>({kind:"repo",repo:i,source:o})),...n.length>0?[]:[{kind:"find"}]];return[{key:"github",rule:!0,text:()=>` ${this.p.dim(`── On GitHub${this.searching?" · searching…":""} ──────────`)}`},...r.map((i)=>({key:i.kind==="find"?"find":`${i.kind} ${i.source}`,found:i,text:(o,s)=>this.foundLine(i,o,s)}))]}lit(t,e){return`${t?`${A.gutter} `:" "} ${e}`}status(t){return this.adds.has(t.source)?"Will add":this.removes.has(t.source)?"Will remove":this.busy.get(t.source)??(this.failed.has(t.source)||t.status.startsWith("update failed")?"Update failed":"")}badge(t){let e=this.marketNamed(t);if(!e)return"";return[kt(e.source)&&(this.want.get(e.source)??e.auto)?`${A.auto} auto-update`:"",this.status(e)].filter(Boolean).map((r)=>` ${this.p.dim(r)}`).join("")}peeking(t){let e=this.peeked.get(t);return e?zt(e.entries.filter((n)=>!n.default).length):""}foundLine(t,e,n){let r=(a)=>Ts(n,"box",`${a} `),i=(a)=>a?` ${this.p.dim(a)}`:"";if(t.kind==="add"){let a=this.failed.get(t.source)??this.peekFailed.get(t.source),c=this.peeked.get(t.source),u=a?` ${this.p.error(a)}`:i(this.busy.get(t.source)??(c?`${c.id} · ${this.peeking(t.source)}`:this.live?"Fetching its palettes…":"space fetches its palettes"));return this.lit(e,`${r("+")}Add ${ot(t.source)}${u}`)}if(t.kind==="find"){let a=this.field.value.trim(),c=a&&!Hs(a),u=!this.searching&&!this.searchError&&this.repos===void 0,f=this.searching?"Searching GitHub…":this.searchError?"GitHub search failed":u?c?`Find "${a}" on GitHub`:"Find markets on GitHub":c?`No market on GitHub matches "${a}"`:"No market on GitHub yet",l=this.searchError??(this.searching?"":u?"space searches":"space searches again");return this.lit(e,`${r(A.search)}${f}${i(l)}`)}let s=[this.busy.get(t.source)??this.peeking(t.source),t.repo.description??""].filter(Boolean).join(" · ");return this.lit(e,`${r(this.known(t.source)?A.on:A.off)}${t.source} ${this.p.dim(`${A.star}${t.repo.stargazers_count}`)}${i(s)}`)}changes(){return this.adds.size+this.removes.size+this.want.size}dirty(){let{picked:t,renew:e}=this.result();return this.changes()>0||e.length>0||t.size!==this.installed.size||[...t].some((n)=>!this.installed.has(n))}mark(t){let e=this.tuned.has(t.name)?` ${this.p.warn(A.on)}`:"";if(!this.updates.has(t.name)||!this.installed.has(t.name))return e;return`${e}${this.renew.has(t.name)?` ${this.p.bold(`${A.update} update`)}`:` ${this.p.dim(A.update)}`}`}toggleRenew(){let t=this.catalog,e=t.focusedRow(),n=(e?t.inside(e):[]).map((i)=>i.name).filter((i)=>this.updates.has(i)&&this.installed.has(i));if(n.length===0)return;let r=n.some((i)=>!this.renew.has(i));for(let i of n)if(r)this.renew.add(i);else this.renew.delete(i)}leave(t){if(this.dirty()){this.leaving=t;return}this.goto=t,this.state="cancel"}steer(t){if(this.phase==="review"){if(t==="enter")this.begin();else if(t==="esc")this.phase="browse"}else if(this.phase==="done"&&(t==="enter"||t==="esc"))this.state="submit";let e=t==="up"?-1:t==="down"?1:xl(t,this.span());if(e!==void 0)this.scroll(e)}scroll(t){this.offset=Number.isFinite(t)?Math.max(0,this.offset+t):t>0?Number.MAX_SAFE_INTEGER:0,this.redraw()}span(){return Math.max(Pl,this.rows()-(this.hub?1:0)-4)}begin(){this.phase="applying",this.started=!0,this.offset=0,this.log=[],this.working="";let t={say:(e)=>{this.log.push(...e.split(`
647
- `)),this.redraw()},status:(e)=>{this.working=e,this.redraw()}};this.track(this.io.apply(this.result(),t)).then(()=>this.ended(),(e)=>this.ended(e))}ended(t){this.working="",this.stopped=t,this.phase="done",this.offset=0,this.redraw()}pending(){let t=this.entries().filter((e)=>!e.default);return{names:t.filter((e)=>this.picked.has(e.name)&&!this.installed.has(e.name)),dropped:t.filter((e)=>this.installed.has(e.name)&&!this.picked.has(e.name))}}marketChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==Z&&(this.want.get(e.source)??e.auto)?"updates on its own":"";t.push(`+ ${e.id} ${this.p.dim([e.source===Z?"The ttheme catalog":e.shown,zt(e.entries.filter((r)=>!r.default).length),n].filter(Boolean).join(" · "))}`)}for(let e of this.removes){let n=this.markets.find((i)=>i.source===e),r=(n?.entries??[]).filter((i)=>!i.default&&this.installed.has(i.name)&&this.picked.has(i.name));t.push(`- ${n?.id??e} ${this.p.dim([n?.shown??ot(e),r.length>0?`its ${zt(r.length)} installed keep working`:""].filter(Boolean).join(" · "))}`)}for(let[e,n]of this.want){let r=this.markets.find((i)=>i.source===e);if(r&&!this.removes.has(e))t.push(`${A.auto} ${r.id} ${this.p.dim(n?"updates on its own from now":"stops updating on its own")}`)}return t}reviewLines(){let t=this.marketChanges(),{names:e,dropped:n}=this.pending(),r=new Set(this.result().renew),i=this.entries().filter((c)=>r.has(c.name)),o=Math.max(0,...[...e,...n,...i].map((c)=>c.name.length)),s=(c,u)=>` ${c} ${u.name.padEnd(o)} ${this.p.dim(ut(u.name)?u.catalog??"":u.group)}`,a=[e.length>0?`${e.length} to install`:"",n.length>0?`${n.length} to remove`:"",i.length>0?`${i.length} to update`:""].filter(Boolean);return[...t.length>0?[` ${this.p.bold("Markets")} ${this.p.dim(`(${t.length})`)}`,...t.map((c)=>` ${c}`),""]:[],...a.length>0?[` ${this.p.bold("Palettes")} ${this.p.dim(`(${a.join(" · ")})`)}`,...e.map((c)=>s("+",c)),...n.map((c)=>s("-",c)),...i.map((c)=>s(A.update,c))]:[]]}summary(){let{names:t,dropped:e}=this.pending(),n=this.adds.size;return[n>0?`${n} market${n===1?"":"s"} added`:"",this.removes.size>0?`${this.removes.size} removed`:"",t.length>0?`${t.length} installed`:"",e.length>0?`${e.length} removed`:"",this.result().renew.length>0?`${this.result().renew.length} updated`:""].filter(Boolean).join(" · ")}progressLines(){let t=this.log.map((e)=>` ${e}`);if(this.phase==="applying"){let e=Wn[this.beat%Wn.length];t.push(` ${this.p.dim(`${e} ${this.working||"Working…"}`)}`)}else if(this.stopped)t.push("",...St(this.stopped.message,Math.max(20,this.columns()-6)).map((e,n)=>` ${n===0?this.p.error(A.miss):" "} ${e}`));return t}frame(t,e){let n=t-1,r=this.phase==="review",i=r?this.reviewLines():this.progressLines(),o=this.phase==="review"?`${this.p.bold("Review changes")}`:this.phase==="applying"?this.p.bold("Applying changes"):this.stopped?`${this.p.error(A.miss)} ${this.p.bold("Stopped")}`:`${this.p.bold(`${A.ok} Applied`)} ${this.p.dim(this.summary()?`(${this.summary()})`:"")}`,s=this.span(),a=Math.max(0,i.length-s),c=this.phase==="applying"?a:Math.min(this.offset,a);this.offset=c;let u=i.slice(c,c+s),f=i.length-c-u.length,l=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...u];while(l.length<s+1)l.push("");l.push(f>0?` ${this.more(1,`↓ ${f} more`)}`:"");let d=a>0?[["↑↓","scroll"]]:[],h=r?{badge:"BROWSE (APPLY)",keys:[...d,["enter","apply"]],right:["esc","back"]}:this.phase==="applying"?{badge:"BROWSE (APPLY)",note:"Keys wait until it ends",keys:[]}:{badge:"BROWSE (APPLY)",keys:d,right:["enter","close"]};return[...this.hub?[nt(Rh(this.hub,this.color),n,!1)]:[],nt(` ${o}`,n,!1),...l.map((m)=>nt(m,n,!1)),` ${this.keyBar(h,n-1)}`].slice(0,e).join(`
648
- `)}keyBar(t,e){let n=`${qe(this.p,t.badge)}${this.color?" ":" "}`,r=([a,c])=>Rk(this.p,a,c),{note:i,keys:o,right:s}=t;for(;;){let a=`${n}${[t.lead??"",i?this.p.dim(i):"",...o.map(r)].filter(Boolean).join(" ")}`,c=s?r(s):"";if(_(a)+(s?3+_(c):0)<=e)return s?It(a,c,e):nt(a,e,!1);if(i)i=void 0;else if(o.length>2||!s&&o.length>1){let u=o.length-2;o=o.filter((f,l)=>l!==u)}else if(s)s=void 0;else return nt(a,e,!1)}}more(t,e){return this.p.dim(ze({kind:"page",step:t},e))}counts(){let t=[...this.busy.values()].includes("Updating…")?"Updating… · ":"",e=this.catalog;return`${t}${e.matched()}/${e.total()} · ${e.pickedCount()} picked`}searchText(){let t=this.field.value;if(t)return`${t}_`;let e=this.hint.text();return this.p.dim(`Search…${e?` e.g. ${e}`:""}`)}heading(){return`${this.p.bold("Browse")} ${this.p.dim(`(${this.counts()})`)}`}searchBox(t){let e=(r,i)=>this.p.dim(`${r}${"─".repeat(t-2)}${i}`),n=this.p.dim("│");return[e("╭","╮"),`${n} ${nt(`${this.p.dim(A.search)} ${this.searchText()}`,t-4)} ${n}`,e("╰","╯")]}strip(t){if(this.active().length<2)return;let e=this.chips(),n=Math.max(0,e.findIndex((p)=>p.source===this.scope)),r=e.map((p,b)=>b===n&&!this.color?`[${p.label} ${p.count}]`:`${p.label} ${p.count}`),i=" · ",o=(p)=>p>0?`${i}+${p} more`.length:0,s=(p)=>{let b=p>0?2:0,$=0;for(let k=p;k<r.length;k++){let v=b+($>0?i.length:0)+r[k].length;if(v+o(r.length-k-1)>t)break;b=v,$+=1}return $},a=0;while(a<n&&a+s(a)<=n)a+=1;let c=Math.max(1,s(a)),u=r.slice(a,a+c),f=r.length-a-c,l=u.map((p,b)=>{let $=ze({kind:"chip",source:e[a+b]?.source},p);if(a+b===n)return this.p.accent(this.p.bold($));return this.p.dim($)}),d=`${a>0?`${this.p.dim(jt("ctrl+s","…"))} `:""}${l.join(this.p.dim(i))}${f>0?this.p.dim(`${i}${jt("ctrl+s",`+${f} more`)}`):""}`,h=(a>0?2:0)+u.join(i).length+o(f),m="ctrl+s market";return h+2+m.length<=t?`${d} ${this.p.dim(jt("ctrl+s",m))}`:d}sourceOf(t){let e=t&&this.active().find((n)=>n.entries.some((r)=>r.name===t.name));if(!e)return"In no market you added";return e.source===Z?"The ttheme catalog":e.shown}paletteState(t){let e=this.picked.has(t.name),n=this.installed.has(t.name),r=e&&n?"Installed":e?"Will install":n?"Will remove":"Not installed",i=e&&n&&this.updates.has(t.name)?this.renew.has(t.name)?" · Will update":" · Update ready":"";return`${r}${i}${this.startup===t.name?" · Default":""}`}detail(t){let e=this.catalog.focusedRow();if(!e||e.kind==="rule"||e.kind==="all")return lE;if(e.kind==="extra")return e.extra.found?this.foundDetail(e.extra.found,t):lE;let n=e.kind==="group"?this.marketNamed(e.name):void 0;if(n)return this.marketDetail(n,t);if(e.kind==="group"||e.kind==="catalog"){let f=this.catalog.inside(e),l=this.sourceOf(e.lead),d=`${zt(f.length)} · ${f.filter((m)=>this.installed.has(m.name)).length} installed`,h=e.kind==="catalog"?e.group:void 0;return{title:this.p.bold(e.name),lines:[...e.native?St(e.native,t).map((m)=>this.p.dim(m)):[],...h?[h]:[],...St(l,t),d],brief:`${h??l} · ${d}`}}let r=e.entry,i=this.sourceOf(r),o=Ma(r),s=`Gate ${Ie.length-o.length}/${Ie.length}`,a=r.pictures?.length??0,c=[...a>0?[`${a} picture${a===1?"":"s"}`]:[],...r.base?[`Base ${r.base}`]:[]].join(" · "),u=ut(r.name)?r.catalog?[r.catalog]:[]:[r.group,...r.native?[this.p.dim(r.native)]:[]];return{title:this.color?this.p.bold(`${Kn(r.cursor)}${r.name}${bt}`):r.name,lines:[...St(i,t),...u,this.paletteState(r),"",o.length===0?`${s} · passes`:s,...o.flatMap((f)=>St(f,t-2).map((l,d)=>`${d===0?this.p.bold(A.miss):" "} ${l}`)),...c?["",c]:[]],brief:[i,s,...c?[c]:[],this.paletteState(r)].join(" · ")}}marketDetail(t,e){let n=t.source===Z?"The ttheme catalog":t.shown,r=t.entries.filter((f)=>!f.default),i=r.filter((f)=>this.installed.has(f.name)).map((f)=>f.name),o=`${zt(r.length)} · ${i.length} installed`,s=kt(t.source)?`Auto-update ${this.want.get(t.source)??t.auto?"on":"off"}`:fE(t.status),a=this.busy.get(t.source)??fE(t.status),c=this.failed.get(t.source),u=this.adds.has(t.source)?["Will add"]:this.removes.has(t.source)?[i.length>0?`Will remove — ${i.join(", ")} stay${i.length===1?"s":""} installed`:"Will remove"]:this.want.has(t.source)?[`Auto-update turns ${this.want.get(t.source)?"on":"off"}`]:[];return{title:this.p.bold(t.id),lines:[...St(n,e),...t.description?St(t.description,e).map((f)=>this.p.dim(f)):[],o,"",kt(t.source)?`${s} ${this.p.dim("⇧←→")}`:s,...kt(t.source)?[a]:[],...c?St(c,e).map((f)=>this.p.error(f)):[],...u.length>0?["",...u.flatMap((f)=>St(f,e))]:[]],brief:[n,s,...u,...kt(t.source)?[a]:[]].join(" · ")}}foundDetail(t,e){if(t.kind==="add"){let i=this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??(this.peeked.has(t.source)?"space adds it":this.live?"Fetching its palettes…":"space fetches its palettes");return{title:this.p.bold(ot(t.source)),lines:["Not added",...this.peekLines(t.source,e),"",...St(i,e)],brief:[this.peeking(t.source),i].filter(Boolean).join(" · ")}}if(t.kind==="find"){let i=this.field.value.trim(),o=this.searchError??(this.searching?"Searching…":this.repos?`${this.repos.length} found · space searches again`:"space searches GitHub");return{title:this.p.bold("GitHub"),lines:[...St(`Repositories with the ${Qo} topic`,e),...i&&!Hs(i)?[`Matching "${i}"`]:[],"",...St(o,e),"",...St("Type owner/repo or a folder to add one",e)],brief:o}}let r=this.known(t.source)?"Added":this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??"space adds it";return{title:this.p.bold(t.source),lines:[`★ ${t.repo.stargazers_count}`,...St(t.repo.description??"",e),...this.peekLines(t.source,e),"",...St(r,e)],brief:[this.peeking(t.source),r].filter(Boolean).join(" · ")}}peekLines(t,e){let n=this.peeked.get(t);if(!n)return[];let r=n.entries.filter((o)=>!o.default),i=`${r.slice(0,uE).map((o)=>pe(o.name)).join(", ")}${r.length>uE?", …":""}`;return["",n.id,...n.description?St(n.description,e):[],zt(r.length),...St(i,e).map((o)=>this.p.dim(o))]}footer(){if(this.help)return{badge:"HELP",keys:[],right:["? esc","close"]};if(this.leaving!==void 0)return{badge:"BROWSE",lead:"Apply your changes before you leave?",keys:[["y","apply"],["n","discard"]],right:["esc","stay"]};if(this.asking)return{badge:"BROWSE",lead:`Update ${this.asking.id} on its own when its author changes it?`,keys:[["y","yes"],["n","no"]],right:["esc","back"]};let t=this.field.value,e=["enter",this.dirty()?"apply":"close"],n=[...t?[["bksp","edit"]]:[],["?","keys"]];return{badge:t?"BROWSE (FILTER)":"BROWSE",keys:[...this.rowKeys(e),...n],right:t?["esc","clear filter"]:["esc","cancel"]}}rowKeys(t){let e=this.catalog,n=e.focusedRow();if(!n)return[t];if(n.kind==="extra"){let s=n.extra.found;if(s?.kind==="find")return[["space","search"],t];if(s?.kind==="add"||s?.kind==="repo"&&!this.known(s.source))return[["space","add"],t];return[t]}let r=e.foldable()&&(n.kind==="group"||n.kind==="catalog")?[n.expanded?["←","close"]:["→","open"]]:[],i=this.focusedMarket();if(i){let s=kt(i.source),a=this.adds.has(i.source)||this.removes.has(i.source);return[...r,["space","pick"],...s?[["⇧←→","auto-update"]]:[],...s&&!this.adds.has(i.source)?[["ctrl+r","update"]]:[],["del",a?"undo":"remove"],...r.length>0?[]:[t]]}if(r.length>0)return[...r,["space","pick"]];let o=n.kind==="palette"&&this.updates.has(n.entry.name)&&this.installed.has(n.entry.name);return[["space","pick"],...o?[["ctrl+r",this.renew.has(n.entry.name)?"keep":"update"]]:[],t]}columns(){return(this.output??process.stdout).columns??100}rows(){return(this.output??process.stdout).rows??24}fitItems(t){let e=Math.max(Pl,this.rows()-t);this.maxItems=e,this.catalog.maxItems=e}view(){let t=this.draw().split(`
649
- `);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}small(t,e,n){return`Needs ${sE}×${n} — now ${t}×${e}
650
- ${this.p.dim("esc cancels")}`}draw(){let t=this.columns(),e=this.rows();if(t<sE||e<aE)return this.small(t,e,aE);if(this.phase!=="browse")return this.frame(t,e);let n=t>=zL,r=t-1,i=n?Math.min(t-xp-4,KL):r,o=this.strip(r-1),s=[...e>=qL?[` ${this.heading()}`,...this.searchBox(t-3).map((b)=>` ${b}`)]:[It(` ${this.p.dim(A.search)} ${this.searchText()}`,this.p.dim(this.counts()),r)],...o?[` ${o}`]:[]],a=s.length+3+(n?0:1)+(this.hub?1:0);if(e<a+Pl)return this.small(t,e,a+Pl);this.fitItems(a);let{lines:c,above:u,below:f}=this.catalog.window(),l=c.map((b)=>` ${b}`);while(l.length<this.maxItems)l.push("");let d=[u>0?` ${this.more(-1,`↑ ${u} more`)}`:"",...l,f>0?` ${this.more(1,`↓ ${f} more`)}`:""],h=this.detail(n?xp:i-2),m=n?d.map((b,$)=>`${nt(b,i)} ${this.p.dim("│")} ${nt($===0?h.title:h.lines[$-1]??"",xp,!1)}`):[...d.map((b)=>nt(b,i,!1)),nt(` ${this.p.dim(h.brief)}`,i,!1)],p=[...this.hub?[nt(Rh(this.hub,this.color),r,!1)]:[],...s.map((b)=>nt(b,r,!1)),...m,` ${this.keyBar(this.footer(),r-1)}`];return(this.help?this.helpBox(p,t,e,p.length-m.length-1):p).join(`
651
- `)}helpRows(){return[["Move","↑↓ home end pgup pgdn"],["Open","←→ · enter on a market or a series"],["Pick","space · a palette, a series, a market"],["Filter","Any text · bksp · ctrl-u clears"],...this.active().length>=2?[["Scope","ctrl+s · one market, then all"]]:[],["Market","⇧←→ auto-update · ctrl+r updates it"],["","del removes it · again to undo"],["Add","owner/repo, a folder, or a row on GitHub"],["","space adds it · ctrl+r searches again"],["Update","ctrl+r on a palette marked ↑"],["Apply","enter reviews and applies · esc cancels"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]]}helpBox(t,e,n,r){let i=this.helpRows(),o=Math.min(e-2,58),s=Math.floor((e-o)/2),a=`│${" ".repeat(o-2)}│`,c=[`╭─ Help ${"─".repeat(o-9)}╮`,a,...i.map(([f,l])=>`│${nt(` ${this.p.bold(f.padEnd(10))}${l}`,o-4)} │`),a,`╰${"─".repeat(o-2)}╯`],u=Math.max(0,Math.min(Math.max(r,Math.floor((n-c.length)/2)),n-1-c.length));return t.map((f,l)=>{let d=c[l-u];return d===void 0?f:`${Cb(f,s)}${d}`})}}import{existsSync as l6}from"node:fs";import{existsSync as Rc,mkdirSync as D4,readFileSync as Hg}from"node:fs";import{dirname as J4}from"node:path";class de extends Error{}import{closeSync as p3,mkdtempSync as g3,openSync as b3,readSync as w3,rmSync as AS}from"node:fs";import{homedir as $3,tmpdir as k3}from"node:os";import{join as NS}from"node:path";import{readFileSync as YL}from"node:fs";var vt={pitch:25,cols:22,rows:9,height:13},co={cols:25,rows:21},ve={cols:10,rows:3,pitch:12,top:4},ye=ve.top+ve.rows+1,ZL=1073741824,Hp=2147483648,VL=-1073741826,XL=1600,QL=56,tC=4,dE=20,eC=50,hE=[["space","unfolds a set of ×N"],["o","opens the post page in a browser"],["c","switches between cutouts and every post"],["a","opens the advanced filters"],["1-9","turn a tag of the tags row on or off"],["ctrl+v","tries on a picture from the clipboard — or drop one on the window"]];function Fp(t){return Math.max(0,Math.floor((t-1)/ve.pitch))}function hr(t,e){let n=e-ye-2;return{perRow:Math.max(1,Math.floor((t-1)/vt.pitch)),rowsVis:Math.max(1,Math.floor(n/vt.height)),height:n}}function Hl(t,e=!0){if(e)return`\x1B_Ga=t,t=f,f=100,i=${t.id},q=2;${Buffer.from(t.path).toString("base64")}\x1B\\`;let n;try{n=YL(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t.id},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function yE(t,e){let n=t.crop===void 0?"":`,x=0,y=${t.crop*e.h},w=${t.cols*e.w},h=${t.rows*e.h}`;return`\x1B[${t.row+1};${t.col+1}H\x1B_Ga=p,i=${t.id},p=${t.id}${n},c=${t.cols},r=${t.rows},C=1,z=${t.z},q=2\x1B\\`}function Lp(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function ac(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}var Pt=gt("bold"),U=gt("dim"),ic=gt("ok"),Hn=gt("warn"),nc=Kn,Tl=Yf,Rp=!1;function Fl(t){return Rp=!0,t.beat}function Fs(t){return Wn[Fl(t)%Wn.length]}function dt(t){return _(t)}function Pp(t,e){if(_(t)<=e)return t;let n="";for(let r of t){if(_(n+r)>e)break;n+=r}return n}function hi(t){return vi(t)}function Cp(t){return`${gt("reverse")}${vi(t)}`}function uo(t,e,n,r){return n?[[`${A.link} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function Ip(t){let e=Oh(t);return e?{kind:"key",key:e}:void 0}function Ap(t){return t.reduce((e,[n])=>e+dt(n),0)}function nC(t,e){let n=[],r=e;for(let[i,o,s,a]of t){let c=dt(i);if(c<=r){n.push([i,o,s,a]),r-=c;continue}n.push([`${Pp(i,r)}…`,o,s,a]);break}return n}class Nl{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){return this.parts.push({col:t,text:e,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+dt(e)}run(t,e){let n=t;for(let[r,i,o,s]of e)n=this.put(n,r,i,o,s);return n}mark(t,e,n){this.parts.push({col:t,text:" ".repeat(Math.max(0,e)),sgr:"",spot:n,hidden:!0})}zones(t){return this.parts.flatMap(({col:e,text:n,link:r,spot:i})=>{let o=i??(r?{kind:"link",url:r}:void 0),s=e>=0&&e<this.cols?dt(Pp(n,this.cols-e)):0;return o&&s>0?[{row:t,col:e,width:s,height:1,target:o}]:[]})}right(t,e){this.run(t-e.reduce((n,[r])=>n+dt(r),0),e)}center(t,e){this.run(Math.floor((t-e.reduce((n,[r])=>n+dt(r),0))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:o}of this.parts){if(o||e>=this.cols||e<0)continue;let s=Pp(n,this.cols-e);t+=`\x1B[${e+1}G${r}${Bc(s,i)}${r?me:""}`}return t}}function rC(t){return t.replace(/_\([^)]*\)?$/,"")}function vE(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<XL?Hn:U]}function oc(t,e,n){let r=[...n.keys??[]],i=n.lead,o=n.right,s=()=>{let u=[...i?[Ap(i)]:[],...r.map(([l,d])=>dt(l)+1+dt(d))];return(n.badge?dt(n.badge)+4:0)+u.reduce((l,d)=>l+d,0)+3*Math.max(0,u.length-1)+(o?3+dt(o[0])+1+dt(o[1]):0)};while(s()>e)if(r.length>2)r.splice(-2,1);else if(o)o=void 0;else if(r.length>1)r.splice(-2,1);else break;if(i&&s()>e)i=nC(i,Math.max(0,Ap(i)-(s()-e)-1));let a=0;if(n.badge)a=t.put(0,` ${n.badge} `,gt("pill"))+2;if([...i?[i]:[],...r.map(([u,f])=>[[u,Pt,void 0,Ip(u)],[` ${f}`,U,void 0,Ip(u)]])].forEach((u,f)=>{a=t.run(a+(f?3:0),u)}),o){let u=Ip(o[0].split(" ")[0]??"");t.right(e,[[o[0],Pt,void 0,u],[` ${o[1]}`,U,void 0,u]])}}function iC(t,e){if(t==="d")return U;if(t==="b")return Pt;if(t==="s")return Tl(e.colors.selection);if(t==="c")return Tl(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]);if(n[1]==="K")return`${vi(0)}${Tb(r)}`;return`${n[1]==="B"?Pt:""}${vi(r)}`}function oC(t,e,n,r,i){let o=Zt.indexOf(Ki(r.scene)),s=Zt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===o?Pt+i:U,void 0,{kind:"scene",scene:u}]]),a=s.reduce((c,[u])=>c+dt(u),0)<=n;t?.run(e,a?s:[[Ki(r.scene).name,Pt+i],[` ${o+1}/${Zt.length}`,U]])}function sC(t,e,n,r,i,o,s){let{ansi:a,cursor:c}=o.colors;oC(t[e-2],n,r,o,s);let u=r<iy?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let f=n;for(let d=0;d<8;d++)f=(t[e]?.put(f,"▀".repeat(u),nc(a[d]??c)+Tl(a[d+8]??c))??f)+1;let l=e+2;for(let d of Ki(o.scene).lines){let h=cs(d,r);if(!h)continue;if(l>i)return;t[l]?.run(n,h.map(([m,p])=>[m,iC(p,o)])),l++}}function aC(t,e,n){let r=[[]];for(let s of t){let a=r[r.length-1];if(a.length===0||dt([...a,s].join(" "))<=e)a.push(s);else if(r.length<n)r.push([s]);else break}let i=r.reduce((s,a)=>s+a.length,0),o=r[r.length-1];while(i<t.length&&o.length>0&&dt([...o,`+${t.length-i}`].join(" "))>e)o.pop(),i--;if(i<t.length)o.push(`+${t.length-i}`);return r.filter((s)=>s.length>0).map((s)=>s.join(" "))}function mE(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function cC(t,e,n,r,i){let o=r.info,s=o?.artists??[],a=hi(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",o?.page?uo(mE(o.page),"",o.page,a):[["—",U]]],["Source",o?.source?uo(mE(o.source),"",o.link,i):[["—",U]]],["Artist",[s.length>0?[s.join(" "),""]:["—",U]]]].forEach(([u,f],l)=>{t[e+l]?.put(n,u,U),t[e+l]?.run(n+12,f)})}function uC(t,e,n,r,i,o){let s=o.info,a=o.tiles[o.focus];if(!s||!a)return;let c=o.shown?.id===a.key?o.shown:void 0,u=n+12,f=Math.max(12,r-12),l=[`${a.width}×${a.height}${s.ext?` ${s.ext.toUpperCase()}`:""}`,...c?[ml(c.bytes)]:[]].join(" · "),d=[s.rating??"—",a.score>0?`★${a.score}`:"",s.posted??""].filter(Boolean).join(" · "),h=(b,$)=>b.length>0?aC(b,f,$).map((k)=>[[k,""]]):[[["—",U]]],m=[["Characters",h(s.characters,2)],["Series",h(s.series,1)],["Tags",h(s.tags,3)],["Rating",[[[d,d==="—"?U:""]]]],["File",[[[l,""],...c?[[" ",""]]:[],...c?EE(c):[]]]],["Uploader",[[s.uploader?[s.uploader,""]:["—",U]]]]],p=e;for(let[b,$]of m){if(p+$.length-1>i)return;t[p]?.put(n,b,U);for(let k of $)t[p]?.run(u,k),p++}}var lC=["Size","Position","Opacity"],fC=[0,3,6];function dC(t,e){let{tune:n,untuned:r}=t;return e===0?n.size!==r.size:e===1?n.at!==r.at:n.opacity!==r.opacity}function hC(t){return t.toFixed(2)}function mC(t,e,n,r,i,o){let s=i.tuning;if(!s)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,Pt+o],[" Background",U],...a?[[" · ",U],...uo(`${a.site} ${a.id}`,U,a.page||void 0,hi(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,f=Math.max(100,s.fill);for(let[l,d]of lC.entries()){let h=e+fC[l],m=s.field===l,p=m?Pt:U;if(m)t[h]?.put(n,"▶",o,void 0,{kind:"field",field:l});t[h]?.put(n+2,d,p,void 0,{kind:"field",field:l});let b;if(l===1){for(let $=1;$<=9;$++){let k=$===i.tune.at,v=t[e+2+Math.floor(($-1)/3)],E=n+12+($-1)%3*3;v?.mark(E-1,3,{kind:"place",at:$}),v?.put(E,k?"■":"·",k?Pt+o:U)}b=qt[i.tune.at-1]??"center"}else{let $;if(l===0){let{size:k}=i.tune;$=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(f-u+1)),b=k==="fill"?"fill":`${k}%`}else $=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=hC(i.tune.opacity);$=Math.max(0,Math.min(c-1,$)),t[h]?.run(n+12,[["━".repeat($),o],["●",Pt],["─".repeat(c-1-$),U]]),t[h]?.mark(n+12,c,{kind:"track",field:l})}if(t[h]?.right(r-2,[[b,p]]),dC(i,l))t[h]?.put(r-1,"↺",m?Pt+o:U)}}function pC(t,e,n,r,i,o){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,o);for(let s=e+1;s<e+r-1;s++)t[s]?.put(n,"│",o),t[s]?.put(n+i-1,"│",o);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,o)}function Np(t,e=t.site,n=t.siteAnsi){return[` ${e} `,Cp(n)]}function rc(t){return`${V[Math.floor(t/Cr)]?.name??"local"} ${t%Cr}`}function ec(t,e,n){let r=V[Math.floor(e/Cr)],i=rc(e),o=t.indexOf(i);if(!r||o===-1)return[[t,n]];return[[t.slice(0,o),n],...uo(i,n,r.pageUrl(e%Cr),hi(r.ansi)),[t.slice(o+i.length),n]].filter(([a])=>a!=="")}function gC(t,e,n){let r=[{name:"all",moved:!1},...V].flatMap((o,s)=>{let a=`${o.name}${o.moved?"*":""}`,[c,u]=o.name===n.site?Np(n,a):[` ${a} `,U],f=[c,u,void 0,{kind:"site",tab:s}];return s?[[" ",""],f]:[f]}),i=r.reduce((o,[s])=>o+dt(s),0)<=e;t.run(0,i?r:[Np(n)])}function bC(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",U]],o=dt("tags "),s=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(o+dt(u)+1>e-2)break;i.push([u,c.on?`${gt("reverse")}${r}`:U,void 0,{kind:"chip",index:a}],[" ",""]),o+=dt(u)+1,s--}if(s>0)i.push([`+${s}`,U]);t.run(0,i)}function wC(t,e,n,r,i){t[ye-1]?.put(0,"─".repeat(n-1),U);let o=t[ve.top-1],s=Fp(n),a=r.held.length>s?Math.max(0,s-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let f=c*ve.pitch,l=u.up?Pt:"";if(o.run(f+1,u.page?uo(String(u.id),l,u.page,hi(u.ansi)):[["● ",hi(u.ansi)],[String(u.id),l]]),u.up)for(let d=0;d<ve.rows;d++)t[ve.top+d]?.put(f,"▌",i);if(u.thumb)e.push({id:ZL+c,path:u.thumb,row:ve.top,col:f+1,cols:ve.cols,rows:ve.rows,z:-1})}if(a<r.held.length)o.put(a*ve.pitch+1,`+${r.held.length-a}`,U)}function $C(t,e,n,r){if(n.editing!==void 0){let c=t.run(0,[["⌕ ",r],[n.editing,""],["█",r]]),u=n.suggest?.length?" ↑↓ pick enter searches":" enter searches";t.put(c,n.editing?u:` A tag, a post URL or an id, or drop a picture or ctrl+v — ${n.tag||"esc leaves"}`,U);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":U,void 0,{kind:"query"}]]),o=Pi.filter((c)=>!n.block.includes(c)),s=V.filter((c)=>!n.enabled.includes(c.name)).map((c)=>c.name),a=[n.preset,...n.solo?["solo"]:[],n.order,...n.rating.join("+")==="safe"?[]:[n.rating.join("+")],...o.length>0?[`allows ${o.join("+")}`]:[],...n.narrow.size>0?[`≥${n.narrow.size}px`]:[],...n.narrow.score>0?[`score≥${n.narrow.score}`]:[],...n.narrow.png?["png"]:[],...n.hide.length+n.hideTags.length>0?[`hides ${[...n.hide,...n.hideTags].join("+")}`]:[],...s.length>0?[`all skips ${s.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,U),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,U]);t.right(e,c)}}function EE(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,ic]];if(t.cut==="off")return[["Opaque · x cuts out",Hn]];if(t.cut==="failed")return[["Opaque · no cut-out",Hn]];return[t.clear>0?[`${t.clear}% transparent`,ic]:["Opaque",Hn]]}function pE(t){return t.site==="all"?"any site":t.site}function Tp(t,e){if(t.installing!==void 0)return ec(`${Fs(t)} Installing ${t.palette} ← ${rc(t.installing)}`,t.installing,Hn);if(t.hint)return[[t.hint,ic]];if(t.error)return[[t.error,Hn]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,Hn]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return ec(`${Fs(t)} Fetching ${rc(n)} · ${pl(r,i)}`,n,Hn)}if(t.cutting!==void 0)return ec(`${Fs(t)} Cutting out ${rc(t.cutting)}`,t.cutting,Hn);if(t.preparing!==void 0)return ec(`${Fs(t)} Preparing ${rc(t.preparing)}`,t.preparing,Hn);if(e)return[e];if(t.saved)return ec(t.saved.text,t.saved.key,ic);if(t.note)return[[t.note,U]];return}function SE(t){if(t.ranking)return"Ranking previews by palette colors";if(t.stage==="check")return t.preset==="cutouts"?"Checking PNG headers":"Loading previews";return"Fetching posts"}function ME(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function kC(t,e,n,r,i){let{background:o,cursor:s,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,f=Math.max(6,Math.round(n*0.22)),l=Fl(r)%(dE*2)/dE,d=Math.round((n-f)*(0.5-0.5*Math.cos(Math.PI*(l<1?l:2-l)))),h=At(o,s,i),m=At(o,At(a,o,0.15),i),p=Array.from({length:n},($,k)=>{let v=(u>=0?k<u:k>=d&&k<d+f)?h:m;return k===0||k===n-1?At(v,o,0.55):v}),b=0;for(let $=1;$<=n;$++)if($===n||p[$]!==p[b])t?.put(e+b," ".repeat($-b),Tl(p[b])),b=$}function yC(t,e,n,r,i){let{background:o,foreground:s}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(Fl(i)-i.loaderFrom)/tC),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[SE(i),Pt+nc(At(o,s,a))],[ME(i," "),nc(At(o,At(s,o,0.45),a))]]);let u=Math.min(QL,r-8);if(kC(t[c+(n>=3?2:1)],Math.floor((r-u)/2),u,i,a),n<5)return;t[c+4]?.center(r,i.sites.flatMap(({name:f,arrived:l},d)=>[...d?[[" · ",nc(At(o,s,0.25*a))]]:[],[f,nc(At(o,l?At(s,o,0.2):s,l?a:0.32*a))]]))}function vC(t,e,n,r,i,o){if(i<=r)return;let s=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-s,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+s;t[ye+c]?.put(e-1,u?"┃":"│",u?o:U)}}function EC(t,e,n){if(e)return[`${Fs(t)} ${SE(t)}${ME(t," · ")}`,U];let r=n.filter((o)=>!o.missing),i=r.filter((o)=>o.thumb).length;return i<r.length?[`${Fs(t)} Loading thumbnails · ${i}/${r.length}`,U]:void 0}function SC(t,e,n,r,i,o,s){let{perRow:a,rowsVis:c,height:u}=hr(r,i);$C(t[0],r,o,s),gC(t[1],r,o),bC(t[2],r,o,s),wC(t,e,r,o,s);let f=t.map((F,N)=>N>=ye&&N<ye+u?F:void 0),l=Math.floor(o.scroll/vt.height),d=Math.floor((o.scroll+u-1)/vt.height),h=[];for(let F=l;F<=d;F++){let N=ye+F*vt.height-o.scroll;for(let j=0;j<a;j++){let z=F*a+j,G=j*vt.pitch,et=o.tiles[z];if(!et)continue;h.push(et);let q=Math.max(N,ye),Ot=Math.min(N+vt.height,ye+u);if(Ot>q)n.push({row:q,col:G,width:vt.pitch-1,height:Ot-q,target:{kind:"tile",index:z}});let tt=z===o.focus;if(tt)pC(f,N,G,vt.height,vt.pitch-1,s);let Sr=N+1,pn=Math.max(Sr,ye),gn=Math.min(Sr+vt.rows,ye+u);if(et.thumb&&gn>pn)e.push({id:et.key,path:et.thumb,row:pn,col:G+1,cols:vt.cols,rows:gn-pn,...gn-pn<vt.rows?{crop:pn-Sr}:{},z:-1});let bn=[...o.installed.includes(et.key)?[["✓ ",ic]]:[],...et.page||o.site!=="all"?uo(String(et.id),tt?Pt:"",et.page||void 0,hi(et.siteAnsi)):[["● ",hi(et.siteAnsi)],[String(et.id),tt?Pt:""]],[" ",""],vE(et)],Fc=vt.cols-(et.mates.length>0?1:0);if(f[N+10]?.run(G+1,Ap(bn)>Fc?bn.map(([Tf,Hf,Ff])=>[Tf.replace(/^(\S) $/,"$1"),Hf,Ff]):bn),et.mates.length>0)f[N+10]?.put(G+vt.cols,"≈",s);f[N+11]?.put(G+1,et.artist?rC(et.artist).slice(0,vt.cols-8):"—",U);let gi=[];if(et.score>0)gi.push([`★${et.score}`,U]);if(et.variants>1)gi.push([` ×${et.variants}`,s]);if(gi.length>0)f[N+11]?.right(G+vt.cols+1,gi)}}let m=Math.ceil(o.tiles.length/a)*vt.height;vC(t,r,o,u,m,s);let p=Math.max(ye,ye+m-o.scroll),b=ye+u-p,$=o.searching&&b>=2;if($)yC(f,p,b,r-1,o);let k=o.searching&&o.tiles.length===0;if(k&&!o.error){let[F,N]=hE[Math.floor(Fl(o)/eC)%hE.length];t[i-2]?.run(0,[["Tip ",U],[F,Pt],[` ${N}`,U]])}let v=o.top*a,E=o.tiles.length-(o.top+c)*a,x=[...v>0?[`↑ ${v} above`]:[],...E>0?[`↓ ${E} more`]:[]];if(x.length>0)t[i-2]?.put(0,x.join(" "),U);if(!o.searching&&o.tiles.length===0&&!o.error&&o.tag)t[ye+1]?.put(0,o.preset==="cutouts"?`No transparent cutouts of ${o.tag} on ${pE(o)} — c searches every post, tab tries ${o.nextSite}`:`No posts of ${o.tag} on ${pE(o)} — tab tries ${o.nextSite}`,U);let M=EC(o,$,h),R=Tp(o,M);return oc(t[i-1],r,{badge:"IMAGE SEARCH",lead:R,keys:k&&R?.[0]===M?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),$}function MC(t,e,n,r,i,o){let s=i.tiles[i.focus];if(!s)return;let a=i.shown?.id===s.key?i.shown:void 0,c=[Np(i,s.site,s.siteAnsi),[" ",""],...uo(String(s.id),Pt,s.page||void 0,hi(s.siteAnsi)),[" ",""],vE(s)];if(s.score>0)c.push([` · ★${s.score}`,U]);if(a)c.push([` · ${ml(a.bytes)}`,U]);if(a){if(c.push([" ",""],...EE(a)),i.coloring==="original")c.push([" · own colors",U])}if(t[0]?.run(0,c),s.mates.length>0)t[0]?.right(n,[["≈ ",o],[s.mates.join(" "),U]]);if(cC(t,1,2,i,o),i.tuning)mC(t,8,2,2+Math.min(n-4,60),i,o);else if(i.details)uC(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else sC(t,7,2,n-4,r-2,i,o);if(i.shown)e.push({id:Hp+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:VL});if(i.tuning){oc(t[r-1],n,{badge:"IMAGE EDIT",lead:Tp(i),keys:[["↑↓","field"],["←→","step"],["=","reset"],["+","reset all"],i.tuning.field===1?["1-9","place"]:["⇧←→","×10"],["c","colors"],["enter","keep"]],right:["esc","undo"]});return}let u=Tp(i);oc(t[r-1],n,{badge:"IMAGE PREVIEW",lead:u,keys:i.installing===void 0?[["←→","browse"],["enter","install"],["t","tune"],["c","colors"],["i","details"],...i.details?[]:[["⇧←→","example"]],...i.shown?.cut==="on"||i.shown?.cut==="off"?[["x","cut out"]]:[],["?","keys"]]:[],right:i.installing===void 0?["esc","grid"]:void 0})}var xC=[["Field","↑↓ size, position, opacity"],["Step","←→ · ⇧←→ ×10"],["Place","1-9 the nine positions"],["Reset","= this field back to its default · + every field"],["Colors","c the palette's tone or its own colors, opacity back to its default"],["Keep","enter back to try, installed with the picture"],["Undo","esc"],["Close","? esc"]],OC={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${V.map((t)=>t.name).join(", ")}`],["Posts","c cutouts or every post"],["Search","/ a tag, a post URL or an id"],["Tags","1-9 turn a tag of the tags row on or off — the palette's own, then danbooru's related characters"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window or paste its link"],["Unfold","space a set of ×N"],["Open","o the post page in a browser"],["Settings","s rating, block, posts, solo, order, sets, remove bg"],["Advanced","a or Advanced › in settings min score, min size, sites, hide, hide tags, PNG only"],["Back","esc returns to preview"],["Close","? esc"]],try:[["Browse","←→"],["Install","enter"],["Tune","t size, position and opacity, installed with the picture"],["Colors","c the palette's tone or its own colors, installed with the picture"],["Details","i characters, series, tags, rating and file, under Post, Source and Artist"],["Example",`⇧←→ ${Zt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the post page in a browser"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},jp=6,IC=24;function sc(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function RC(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function gE(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>RC(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function xE(t,e,n){let r=t.indexOf(e);if(r!==-1)return t[(r+n+t.length)%t.length];let i=Number(e)||0;return(n>0?t.find((s)=>(Number(s)||0)>i):[...t].reverse().find((s)=>(Number(s)||0)<i))??t[n>0?0:t.length-1]}function ao(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&dt(r)+1+dt(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function PC(t){if(t.entry!=="number"||t.choices.includes(t.value))return t.choices;let e=t.choices.findIndex((n)=>(Number(n)||0)>Number(t.value));return e===-1?[...t.choices,t.value]:[...t.choices.slice(0,e),t.value,...t.choices.slice(e)]}function AC(t,e,n,r){let i=Cp(r),o=e&&n!==void 0;if(t.entry==="text")return[{text:` ${o?`${n}█`:t.value||"none"} `,sgr:o||e&&t.value?i:t.value?"":U}];let s=o?[]:t.value.split(" "),a=(o?t.choices:PC(t)).map((c,u)=>{let f=s.includes(c),l=t.multi&&e&&u===t.cursor?gt("under"):"";return{text:t.multi?` ${f?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:f?e?`${l}${i}`:"":l?`${l}${U}`:U,choice:c}});return o?[...a,{text:` ${n}█ `,sgr:i}]:a}function bE(t){if(t.entry==="text")return[{text:" ".repeat(IC),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(jp)}█ `,sgr:""}]:e}function NC(t){return t.reduce((e,n)=>e+dt(n.text)+1,0)-1}function wE(t,e){let n=[[]],r=0;for(let i of t){let o=dt(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+dt(o.text)>e)n.push([]),r=0;n[n.length-1]?.push(o),r+=dt(o.text)+1}return n}function $E(t){if(t.multi&&t.choices.every((e)=>t.default.split(" ").includes(e)))return"Default all";return`Default ${t.default&&t.default!==t.multi?.none?t.default:"none"}`}function kE(t){if(!t.tag)return"";if(!t.counts)return`${t.tag}: counting…`;let e=t.counts.map(({site:n,count:r})=>`${n} ${r===void 0?"no count":r.toLocaleString("en-US")}`);return`${t.tag}: ${e.join(" · ")}`}function TC(t,e){let n=t.advanced?"basic":"advanced";if(!e)return{keys:[["↑↓","setting"],["enter",n],["s","save"]],right:["esc","undo"]};if(t.typing!==void 0)return{keys:[["⌫","erase"],["enter","done"]],right:["esc","cancel"]};if(e.entry)return{keys:[["↑↓","setting"],...e.entry==="number"?[["←→","step"]]:[],["a",n],["enter","type"],["s","save"]],right:["esc","undo"]};return{keys:[["↑↓","setting"],["←→","value"],["a",n],...e.multi?[["space","toggle"]]:[],["enter","save"]],right:["esc","undo"]}}function HC(t,e,n,r,i){let o=r.panel??0,s=r.settings.length,c=6+Math.max(...r.settings.map((q)=>dt(q.label))),u=Math.max(...r.settings.map((q)=>dt($E(q)))),f=c+Math.max(...r.settings.map((q)=>NC(bE(q))))+u+5,l=Math.min(e-2,Math.max(48,f)),d=l-c-u-5,h=l-7,m=[!1,!0].map((q)=>({advanced:q,rows:sc({settings:r.settings,advanced:q}).slice(0,-1)})),p=r.settings.map((q)=>wE(bE(q),d).length),b=Math.max(...m.map((q)=>q.rows.reduce((Ot,tt)=>Ot+p[tt],0))),$=Math.max(...m.map((q)=>ao(gE({settings:r.settings,advanced:q.advanced}),h).length),...r.settings.map((q)=>ao(q.about,h).length)),k=`${r.tag}: ${V.map((q)=>`${q.name} 0,000,000`).join(" · ")}`,v=r.tag?Math.max(ao(k,h).length,ao(kE(r),h).length):0,E=b+$+v+8,x=Math.floor((e-l)/2),M=Math.max(1,Math.floor((n-1-E)/2)),R=Cp(r.siteAnsi);t[M]?.put(x,`╭─ Settings ${"─".repeat(Math.max(0,l-13))}╮`);for(let q=M+1;q<M+E-1;q++)t[q]?.put(x,`│${" ".repeat(l-2)}│`);let F=M+2;for(let q of sc(r).slice(0,-1)){let Ot=r.settings[q],tt=q===o;if(tt)t[F]?.put(x+2,"▶",i);if(t[F]?.mark(x+2,c-3,{kind:"setting",index:q}),t[F]?.put(x+4,Ot.label,tt?Pt:""),Ot.value!==Ot.default)t[F]?.right(x+l-3,[[$E(Ot),U]]);wE(AC(Ot,tt,r.typing,r.siteAnsi),d).forEach((Sr,pn)=>{let gn=x+c;for(let bn of Sr)gn=t[F+pn].put(gn,bn.text,bn.sgr,void 0,{kind:"choice",index:q,choice:bn.choice}),gn+=1}),F+=p[q]}let N=m.find((q)=>q.advanced!==r.advanced)?.rows??[],j=t[M+3+b];if(o===s)j.put(x+2,"▶",i);let z=j.put(x+3,r.advanced?" ‹ Basic ":" Advanced › ",o===s?R:Pt,void 0,{kind:"setting",index:s});if(N.some((q)=>r.settings[q]?.value!==r.settings[q]?.default))j.put(z+1,"•",U);t[M+5+b]?.put(x+2,"─".repeat(l-4),U),ao(r.settings[o]?.about??gE(r),h).forEach((q,Ot)=>{t[M+6+b+Ot]?.put(x+4,q)}),ao(kE(r),h).forEach((q,Ot)=>{t[M+6+b+$+Ot]?.put(x+4,q,U)}),t[M+E-1]?.put(x,`╰${"─".repeat(l-2)}╯`);let{keys:G,right:et}=TC(r,r.settings[o]);oc(t[n-1],e,{keys:G,right:et})}function FC(t,e,n,r){let i=r.tuning?xC:OC[r.mode],o=Math.min(e-2,Math.max(50,...i.map(([,l])=>dt(l)+16))),s=i.map(([l,d])=>({label:l,parts:ao(d,o-16)})),a=s.reduce((l,{parts:d})=>l+d.length,0)+4,c=Math.floor((e-o)/2),u=Math.max(2,Math.floor((n-a)/2));t[u]?.put(c,`╭─ Help ${"─".repeat(o-9)}╮`);for(let l=u+1;l<u+a-1;l++)t[l]?.put(c,`│${" ".repeat(o-2)}│`);let f=u+2;for(let{label:l,parts:d}of s){t[f]?.put(c+3,l,Pt);for(let h of d)t[f]?.put(c+13,h),f++}t[u+a-1]?.put(c,`╰${"─".repeat(o-2)}╯`),oc(t[n-1],e,{badge:"HELP",right:["? esc","close"]})}function LC(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),o=Math.max(...r.map((a)=>dt(a.value))),s=Math.max(7,...i.map(dt));r.forEach((a,c)=>{let u=c===e.pick,f=t[1+c];f?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?Pt+n:"",void 0,{kind:"suggest",index:c}]]),f?.right(2+o+2+s,[[i[c],U]])})}function Al(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function _p(t,e,n){let r=Array.from({length:n},()=>new Nl(e)),i=[],o=[],s=gt("accent");if(Rp=!1,e<co.cols||n<co.rows)return r[0]?.put(0,"ttheme find",Pt+s),r[1]?.put(0,`Needs ${co.cols}×${co.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",U,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:Al(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")MC(r,i,e,n,t,s);else a=SC(r,i,o,e,n,t,s);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new Nl(e);return LC(r,t,s),{lines:r.map((c)=>c.render()),images:[],zones:Al(r),loader:!1,tick:!1}}if(t.help||t.panel!==void 0){let c=t.mode==="try"?i:[];for(let u=0;u<n;u++)r[u]=new Nl(e);if(t.help)FC(r,e,n,t);else HC(r,e,n,t,s);return{lines:r.map((u)=>u.render()),images:c,zones:Al(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:Al(r,o),loader:a,tick:Rp}}var CC=130,jC=38,_C=96,GC=28,uc=[{id:"shell",scenes:["Diff","Logs","Shell"],name:"zsh",tail:!0},{id:"code",scenes:["Editor"],name:"nvim",tail:!1},{id:"monitor",scenes:["Top"],name:"htop",tail:!1}],BC={Shell:[0,1,2,3,4,6,7,9,10,12,14],Diff:[0,1,3,4,6,7,8,9,10,15],Logs:[0,1,2,3,4,5,6,7,8,9,10]},OE=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),UC=["«2»❯ «»colortest",`«d»0-7 ${OE(0)}`,`«d»8-15 ${OE(8)}`],IE=2;function WC(t){let e=uc.length;return uc[(t%e+e)%e]}function AE(){return uc.map((t)=>t.name)}function lc(t,e,n){let r=t>=CC&&e>=jC?"full":t>=_C&&e>=GC?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,o=t-i-1,s=i+1+IE,a=i+o-IE,c=3,u=e-3,f={col:s,row:c,cols:a-s+1,rows:u-c+1},l={col:s+1,row:c+3,cols:f.cols-2,rows:u-c-3},d=[{row:c,col:s,length:f.cols,down:!1},{row:c+2,col:s,length:f.cols,down:!1},{row:u,col:s,length:f.cols,down:!1},{row:c,col:s,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=WC(n);return{tier:r,side:i,width:o,frame:f,title:{col:l.col,row:c+1,cols:l.cols,rows:1},inner:l,rules:d,tiles:[{id:h.id,name:h.name,col:l.col,row:l.row,width:l.cols,rows:l.rows}]}}var cc="«2»▎ ",RE="«3»▎ ",KC="«1»▁ ",zC=[["","«5»import«» { «4»readFile«» } «5»from «2»'node:fs/promises'"],["","«5»import«» { «5»type «6»Hex«», «4»contrast«» } «5»from «2»'./color.ts'"],["",""],["","«8»/** A palette read from disk and checked against the gate. */"],[cc,"«5»export interface «6»Palette «»{"],[cc," name: «6»string"],[cc," ansi: «6»Hex«»[]"],[cc," ratio?: «6»number"],[cc,"}"],["",""],["","«5»const «»SIXTEEN = «3»16"],["","«5»const «»FLOOR = «3»4.5 «8»// WCAG AA for body text"],["",""],["","«5»export async function «4»load«»(path: «6»string«»): «6»Promise«»<«6»Palette«»> {"],[RE," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[RE," «5»const «»colors = «s»parse(text)«».colors ?? {}"],[""," «5»if «»(colors.ansi.length !== «K3»SIXTEEN«») { «1»● needs 16 ANSI colors"],[""," «5»throw new «6»Error«»(«2»'expected sixteen colors, got '«» + colors.ansi.length)"],[""," }"],[KC," «5»const «»ratio = «4»contrast«»(colors.ansi[«3»0«»], colors.ansi[«3»7«»]) «3»● ratio is read once"],[""," «5»return «»{ name: path, ...colors, ratio: «c»r«»atio }"],["","}"],["",""],["","«5»export function «4»passes«»(palette: «6»Palette«»): «6»boolean «»{"],[""," «5»return «»(palette.ratio ?? «3»0«») >= FLOOR «8»// TODO: check the bright pairs"],["","}"]],qC=21;function DC(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...zC.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===qC?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function Gp(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),o=0,s=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-o,Math.round(c*i));s+=`«${a}»${"|".repeat(u)}`,o+=u}return`${s}«»${" ".repeat(i-o)}${n}«b»]`}var JC=[[0.31,0.07,0],[0.22,0.02,0.03],[0.04,0.01,0],[0.52,0.12,0],[0.1,0.02,0],[0.41,0.11,0],[0.02,0,0],[0.15,0.03,0.04]],YC=["«s» 4127 kec 24 0 412G 612M «s»R 38.2 3.7 3:12.44 node dev.js"," 2210 kec 31 0 411G 1.2G «2»R«» 12.0 7.5 1:02.10 «d»/Applications/«b»Ghostty"," 3301 kec 31 0 409G 12M S 4.4 0.1 0:05.61 «b»zsh"," 3302 kec 31 0 409G 9.8M S 0.0 0.1 0:00.42 «d»├─ «b»nvim «»src/theme.ts"," 3310 kec 31 0 410G 88M S 1.2 0.5 0:03.18 «d»│ └─ «b»tsserver"," 3402 kec 24 0 409G 21M «2»R«» 0.6 0.1 0:01.02 «d»└─ «b»htop"," 501 kec 31 «4»10«» 409G 34M S 0.3 0.2 0:02.77 «b»bun «»test --watch"," 1180 kec 31 0 409G 72M «1»D«» 0.0 0.4 0:00.91 «b»rsync «»-a ~/Pictures backup:"," 812 «d»root«» «1» 4 -20«» 410G 1.5G S 3.1 9.4 0:44.02 «d»kernel_task"," 167 «d»root«» 31 0 411G 402M S 0.9 2.5 0:12.80 «d»WindowServer"," 344 «d»_mdns«» 31 0 408G 5.1M S 0.0 0.0 0:00.33 «d»mDNSResponder"],ZC=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function VC(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-_(e)))}`}function XC(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[o,s,a]=JC[i],c=`${((o+s+a)*100).toFixed(1)}%`;return Gp(String(i).padStart(3),[["2",o],["1",s],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${Gp("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${Gp("Swp",[["1",0.15]],"0.31G/2.00G",n)} «6»Load average: «b»2.14 «»1.87 «d»1.52`,`${" ".repeat(n)} «6»Uptime: «b»3 days, 04:12:55`,"",VC("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...YC.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-_(i.replace(/«[^»]*»/g,""))))}`:i)]}function QC(t){let e=t-2,n="",r=0;return ZC.forEach((i,o)=>{let s=`F${o+1}`,a=i.padEnd(6);if(r+s.length+a.length<=e)n+=`«»${s}«K6»${a}`,r+=s.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function PE(t,e,n){if(t==="Editor")return DC();if(t==="Top")return XC(n);let r=Zt.find((s)=>s.name===t)?.lines??[],i=e?BC[t]:void 0,o=i?i.map((s)=>r[s]??""):r;return t==="Shell"?[...o.slice(0,-1),...UC,...o.slice(-1)]:o}function Ll(t,e){let n=[];for(let r of t){let i=cs(r,e);if(!i)continue;let o=0;n.push(i.map(([s,a])=>{let c={text:s,role:a,col:o};return o+=_(s),c}))}return n}function t8(t){let r=t-2-_("«K4» NORMAL «s» main src/theme.ts [+] ".replace(/«[^»]*»/g,""))-_("«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% ".replace(/«[^»]*»/g,""));return`${"«K4» NORMAL «s» main src/theme.ts [+] "}${" ".repeat(Math.max(0,r))}${"«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% "}`}function e8(t,e){if(t.id==="code")return[t8(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[QC(e)]:[]}function n8(t,e,n){let r=Ll(e8(t,e),e),i=Math.max(0,n-r.length),o=[];for(let a of[...t.scenes].reverse()){let c=Ll(PE(a,!1,e),e),u=Ll(PE(a,!0,e),e),f=[c,u].find((l)=>o.length+l.length<=i);if(!f){if(o.length===0)o=t.tail?u.slice(u.length-i):u.slice(0,i);break}o=[...f,...o]}if(r.length===0)return o;let s=Ll(Array.from({length:i-o.length},()=>t.id==="code"?"«4»~":""),e);return[...o,...s,...r]}function fc(t){let e=uc.find((n)=>n.id===t.id);return e?n8(e,t.width,t.rows):[]}function Bp(t,e){let{text:n,ground:r}=TE(t);return n===e||r===e}function NE(t,e){let n=t.inner;return uc.map((r)=>({name:r.name,count:fc({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>Bp(i.role,e)).length}))}function TE(t){if(t==="s")return{text:1,ground:3};if(t==="c")return{text:1,ground:2};let e=/^([BK]?)(\d+)$/.exec(t);if(!e)return{text:1,ground:0};let n=4+Number(e[2]);return e[1]==="K"?{text:4,ground:n}:{text:n,ground:0}}function Up(t,e){if(e>=4){let n=/^([BK]?)(\d+)$/.exec(t);return n!==null&&Number(n[2])===e-4}return e===3&&t==="s"||e===2&&t==="c"}function Cl(t){let e=[];for(let n of t.tiles)fc(n).forEach((r,i)=>{r.forEach((o,s)=>{e.push({spot:{pane:n.id,line:i,run:s},col:o.col,text:o.text,role:o.role})})});return e}function Wp(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function HE(t,e){let n=Cl(t);return(n.find((r)=>Up(r.role,e))??n[0])?.spot}function jl(t,e){return e&&Cl(t).find((n)=>Wp(n.spot,e))?.spot}function FE(t,e,n){let r=Cl(t);if(r.length===0)return;let i=e?r.findIndex((d)=>Wp(d.spot,e)):-1;if(i<0)return r[0]?.spot;let o=r[i];if(n==="left"||n==="right")return r[(i+(n==="left"?r.length-1:1))%r.length]?.spot;if(n==="next"||n==="previous"){let d=t.tiles.map((p)=>p.id),h=d.indexOf(o.spot.pane),m=d[(h+(n==="next"?1:d.length-1))%d.length];return r.find((p)=>p.spot.pane===m)?.spot}let s=n==="up"?-1:1,a=r.filter((d)=>d.spot.pane===o.spot.pane),c=[...new Set(a.map((d)=>d.spot.line))],u=c[c.indexOf(o.spot.line)+s];if(u===void 0){let d=t.tiles.map((k)=>k.id),h=d.indexOf(o.spot.pane)+s,m=d[(h+d.length)%d.length],p=r.filter((k)=>k.spot.pane===m),b=s<0?p.at(-1)?.spot.line??0:p[0]?.spot.line??0,$=p.filter((k)=>k.spot.line===b);return($.find((k)=>k.col>=o.col)??$.at(-1))?.spot}let f=a.filter((d)=>d.spot.line===u);return(f.find((d)=>d.col<=o.col&&d.col+_(d.text)>o.col)??f.find((d)=>d.col>=o.col)??f.at(-1))?.spot}function LE(t,e){let n=Cl(t).find((r)=>Wp(r.spot,e));return n?TE(n.role):void 0}var r8={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function CE(t){let e=new Map,n=(i,o,s)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(o)??new Set;a.set(o,c),c.add(s)};for(let i of t)for(let o=0;o<i.length;o++){let s=i.down?i.row+o:i.row,a=i.down?i.col:i.col+o;if(o>0)n(s,a,i.down?"u":"l");if(o<i.length-1)n(s,a,i.down?"d":"r")}let r=new Map;for(let[i,o]of e){let s=new Map;for(let[a,c]of o){let u=[...c].sort().join("");s.set(a,r8[u]??(c.has("l")||c.has("r")?"─":"│"))}r.set(i,s)}return r}import{execFile as i8}from"node:child_process";import{createHash as BE}from"node:crypto";import{existsSync as o8,mkdtempSync as s8,readFileSync as Ul,rmSync as a8,statSync as UE,writeFileSync as WE}from"node:fs";import{homedir as c8,tmpdir as u8}from"node:os";import{join as _l}from"node:path";import{fileURLToPath as l8}from"node:url";import{promisify as f8}from"node:util";var Fn=f8(i8),Gl=67108864,d8=4096,qp=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],h8=["text/uri-list","text/plain;charset=utf-8","text/plain"],Kp=[...qp,"text/uri-list","text/plain"];function m8(t){try{return UE(t).isFile()}catch{return!1}}function p8(t){let e=[],n="",r="",i=!1;for(let o=0;o<t.length;o++){let s=t[o];if(r==="'")if(s==="'")r="";else n+=s;else if(r==='"')if(s==='"')r="";else if(s==="\\"&&'"\\$`'.includes(t[o+1]??""))n+=t[++o];else n+=s;else if(s==="\\"&&o+1<t.length)n+=t[++o],i=!0;else if(s==="'"||s==='"')r=s,i=!0;else if(/\s/.test(s)){if(i)e.push(n);n="",i=!1}else n+=s,i=!0}if(i)e.push(n);return e}function jE(t){if(/^file:\/\//i.test(t))try{return l8(t)}catch{return}if(t.startsWith("~/"))return _l(c8(),t.slice(2));return t.startsWith("/")?t:void 0}function Ls(t,e=m8){let n=[];for(let r of t.replace(/\r\n?/g,`
648
+ ${u} · ${Dt(f.length)} · ${d(r.length,"error")} · ${d(i.length,"warning")}`),r.length>0?1:0}async function Vv(t,e){switch(t){case void 0:CL();return;case"add":await HL(jv(t,e));return;case"remove":FL(jv(t,e));return;case"search":await jL(e);return;case"init":await GL(e);return;case"check":return BL(e);default:throw Error(`unknown market action ${t} — ${PL.join(", ")}, or none to list them`)}}function jv(t,e){if(!e)throw Error(t==="add"?"market add takes a repository or a folder: ttheme market add alice/ttheme-dust":"market remove takes a market name — `ttheme market` lists them");return e}function Zv(t,e){let n=ui(t,e);return`${n} — ${Dt(Pn(e,n,ec(t),fe(!1)).length)}, read in place`}function Xv(t){return[...t].length===1&&t>=" "&&t!==""}function UL(t){return[...t.replace(/[\r\n\t]+/g," ")].filter(Xv).join("")}function lo(t,e,n=()=>!0){if(e==="backspace")return[...ad(t)].slice(0,-1).map((r)=>r.segment).join("");if(e==="ctrl-u")return"";if(e==="ctrl-w"||e==="alt-backspace")return t.replace(/\S*\s*$/,"");return Xv(e)&&n(e)?t+e:void 0}class rc{value;constructor(t=""){this.value=t}key(t){let e=lo(this.value,t);if(e===void 0)return!1;return this.value=e,!0}paste(t){this.value+=UL(t)}}import{performance as WL}from"node:perf_hooks";import{StringDecoder as KL}from"node:string_decoder";var zL=30,DL=50,qL=500,JL=5,Hs=Buffer.from("\x1B[M"),Rl="\x1B]1337;ReportCellSize\x07\x1B[16t\x1B[14t\x1B[18t",sS="\x1B[?1016$p\x1B[16t",aS={A:"up",B:"down",C:"right",D:"left",H:"home",F:"end","1~":"home","7~":"home","3~":"delete","4~":"end","8~":"end","5~":"pgup","6~":"pgdn",I:"focus-in",O:"focus-out",Z:"shift-tab","1;2C":"shift-right","1;2D":"shift-left"},YL={"\r":"enter","\n":"enter","\t":"tab","\b":"backspace","":"backspace","\x1B":"esc","\x00":"ctrl-space"},Qv=/\[([0-?]*)([ -/]*)([@-~])/y,VL=/^\[[0-?]*[ -/]*$/,tS=/\[(<-?\d+;-?\d+;-?\d+)([Mm])/y,ZL=/^\[<[-\d;]*$/,eS=/\](\d+)/y,XL=/^\]\d*$/,nS=/\]\d+;/y,QL=/^1337;ReportCellSize=([\d.]+);([\d.]+)(?:;([\d.]+))?$/,tC=/^(1[0-2]|17|4;\d{1,3});(rgba?:[0-9a-fA-F/]+)$/,cS="\x1B[200~",Il="\x1B[201~";function eC(t){let e=YL[t];if(e)return e;let n=t.codePointAt(0)??0;if(n<27)return`ctrl-${String.fromCharCode(n+96)}`;return n<32?void 0:t}function Fs(t){return{kind:"key",key:t}}function Ls(t){return{events:[Fs("esc")],end:t+1}}function nC(t){let e={};for(let n of t.split(":")){let r=n.indexOf("=");if(r>0)e[n.slice(0,r)]=n.slice(r+1)}return e}var rC=["left","middle","right",void 0];function Pp(t,e,n,r){if(!Number.isInteger(t)||t<0||t>=128||!(e>=0)||!(n>=0))return;let i=t&3,o={kind:"mouse",row:n,col:e,shift:(t&4)!==0,alt:(t&8)!==0,ctrl:(t&16)!==0};if(t&64)return{...o,action:"wheel",button:void 0,wheel:i%2===0?-1:1,sideways:i>=2,count:0};let s=rC[i],a=t&32?s?"drag":"move":r||!s?"release":"press";return{...o,action:a,button:s,wheel:0,sideways:!1,count:a==="press"?1:0}}function iC(t,e,n){let r=[],i=e;while(r.length<3&&i<t.length){let u=t.codePointAt(i);r.push(u),i+=u>65535?2:1}if(r.length<3)return n?{events:[],end:t.length}:void 0;let[o=0,s=0,a=0]=r,c=Math.max(o,s,a)<128?Pp(o-32,s-33,a-33,!1):void 0;return{events:c?[c]:[],end:i}}function oC(t,e,n,r,i){let o=Math.max(0,e)/i.w,s=Math.max(0,n)/i.h,a=Math.floor(o),c=Math.floor(s),u=Pp(t,a,c,r);return u&&{...u,fx:o-a,fy:s-c}}function rS(t,e,n,r){if((n==="M"||n==="m")&&e===""&&t.startsWith("<")){let[o=-1,s=0,a=0]=t.slice(1).split(";").map(Number),c=r?oC(o,s,a,n==="m",r):Pp(o,s-1,a-1,n==="m");return c?[c]:[]}if(n==="t"&&e===""){let[o,s=0,a=0]=t.split(";").map(Number),c=o===6?"cell":o===4?"window":o===8?"grid":void 0;return c?[{kind:"size",of:c,h:s,w:a}]:[]}if(n==="y"&&e==="$"&&t.startsWith("?")){let[o=0,s=0]=t.slice(1).split(";").map(Number);return[{kind:"mode",mode:o,value:s}]}if(n==="c"&&t.startsWith("?"))return[{kind:"attributes"}];let i=e===""?aS[`${t}${n}`]:void 0;return i?[Fs(i)]:[]}function sC(t,e,n,r){tS.lastIndex=e+1;let i=tS.exec(t);if(i)return{events:rS(i[1],"",i[2],r),end:e+1+i[0].length};Qv.lastIndex=e+1;let o=Qv.exec(t);if(!o){let l=t.slice(e+1);return!n&&(VL.test(l)||ZL.test(l))?void 0:Ls(e)}let[s,a="",c="",u=""]=o,f=e+1+s.length;if(a===""&&c===""&&u==="M")return iC(t,f,n);if(a==="200"&&u==="~"){let l=t.indexOf(Il,f);if(l===-1)return n?{events:[{kind:"paste",text:t.slice(f)}],end:t.length}:void 0;return{events:[{kind:"paste",text:t.slice(f,l)}],end:l+Il.length}}return{events:rS(a,c,u,r),end:f}}function aC(t){let e=QL.exec(t);if(e){let s=Number(e[3]??1);return[{kind:"size",of:"cell",h:Math.round(Number(e[1])*s),w:Math.round(Number(e[2])*s)}]}let n=tC.exec(t);if(n)return[{kind:"color",code:n[1],value:n[2]}];let[r="",i="",...o]=t.split(";");return[{kind:"osc",code:r,meta:nC(i),payload:o.join(";")}]}function cC(t,e,n){eS.lastIndex=e+1;let r=eS.exec(t),i=r?t[e+1+r[0].length]:void 0;if(i!==";"&&i!=="\x07"&&i!=="\x1B")return!n&&XL.test(t.slice(e+1))?void 0:Ls(e);let o=[t.indexOf("\x07",e),t.indexOf("\x1B\\",e+2)].filter((a)=>a!==-1);if(o.length===0)return n?{events:[],end:t.length}:void 0;let s=Math.min(...o);return{events:aC(t.slice(e+2,s)),end:s+(t[s]==="\x07"?1:2)}}function uC(t,e,n){let r=t[e+2];if(r===void 0)return n?Ls(e):void 0;if(!/^[A-Za-z]$/.test(r))return Ls(e);let i=aS[r];return{events:i?[Fs(i)]:[],end:e+3}}function lC(t,e,n,r){let i=t[e+1];if(i===void 0)return n?Ls(e):void 0;if(i==="[")return sC(t,e,n,r);if(i==="]")return cC(t,e,n);if(i==="O")return uC(t,e,n);if(i==="")return{events:[Fs("alt-backspace")],end:e+2};if(/^[a-z]$/.test(i))return{events:[Fs(`alt-${i}`)],end:e+2};return Ls(e)}function iS(t,e=!1,n){let r=[],i=0;while(i<t.length){if(t[i]==="\x1B"){let a=lC(t,i,e,n);if(!a)return{events:r,rest:t.slice(i)};r.push(...a.events),i=a.end;continue}let o=String.fromCodePoint(t.codePointAt(i)),s=eC(o);if(s)r.push(Fs(s));i+=o.length}return{events:r,rest:""}}function fC(t,e){for(let n=Math.min(Hs.length-1,t.length-e);n>0;n--)if(t.subarray(t.length-n).equals(Hs.subarray(0,n)))return t.length-n;return t.length}function dC(t){let e=[],n=0,r=t.indexOf(Hs);while(r!==-1&&r+6<=t.length){e.push(t.subarray(n,r));let[o=0,s=0,a=0]=t.subarray(r+3,r+6);if(s>32&&a>32)e.push(Buffer.from(`\x1B[<${o-32};${s-32};${a-32}M`));n=r+6,r=t.indexOf(Hs,n)}let i=r===-1?fC(t,n):r;return e.push(t.subarray(n,i)),{bytes:Buffer.concat(e),carry:i<t.length?t.subarray(i):void 0}}function oS(t){return nS.lastIndex=1,t.startsWith(cS)||t.startsWith("\x1B]")&&nS.test(t)}function hC(t,e){let n=t.slice(-Il.length)+e;return t.startsWith(cS)?n.includes(Il):n.includes("\x07")||n.includes("\x1B\\")}class Ip{held="";timer;carry;pressed;wheeled;utf8=new KL("utf8");burst;cell;take;constructor(t,e=()=>!1,n=()=>{return}){this.burst=e,this.cell=n,this.take=(r)=>{let i=this.counted(r);if(i.length>0)t(i)}}counted(t){let e=WL.now();return t.filter((n)=>{if(n.kind!=="mouse")return!0;if(n.action==="wheel"){let o=n.wheel*(n.sideways?2:1),s=this.wheeled;if(s!==void 0&&s.way===o&&e-s.at<JL)return!1;return this.wheeled={at:e,way:o},!0}if(n.action==="release")n.count=this.pressed?.count??0;if(n.action!=="press"||!n.button)return!0;let r=this.pressed,i=r!==void 0&&r.button===n.button&&r.row===n.row&&Math.abs(r.col-n.col)<=1&&e-r.at<=qL;return n.count=i?r.count+1:1,this.pressed={at:e,button:n.button,row:n.row,col:n.col,count:n.count},!0})}feed(t){clearTimeout(this.timer);let e=typeof t==="string"?t:this.bytes(t);if(!this.held&&!e.includes("\x1B")&&this.burst(e)){this.settle(),this.take([{kind:"paste",text:e}]);return}if(oS(this.held)&&!hC(this.held,e)){this.held+=e;return}let{events:n,rest:r}=iS(this.held+e,!1,this.cell());if(this.held=r,this.settle(),n.length>0)this.take(n)}settle(){let t=this.held.length+(this.carry?.length??0);if(t>0&&!oS(this.held))this.wait(t===1?zL:DL)}bytes(t){let{bytes:e,carry:n}=dC(this.carry?Buffer.concat([this.carry,t]):t);return this.carry=n,this.utf8.write(e)}wait(t){clearTimeout(this.timer),this.timer=setTimeout(()=>this.flush(),t)}flush(){clearTimeout(this.timer);let t=this.carry;this.carry=void 0;let e=t&&!t.subarray(0,Hs.length).equals(Hs)?this.utf8.write(t):"",{events:n}=iS(this.held+e,!0,this.cell());if(this.held="",n.length>0)this.take(n)}stop(){clearTimeout(this.timer),this.held="",this.carry=void 0}}class ic{window;grid;see(t){if(t.kind!=="size")return;if(t.of==="cell")return{w:t.w,h:t.h};if(t.of==="window")this.window=t;else this.grid=t;let e=this.window,n=this.grid;return e&&n&&n.h>0&&n.w>0?{h:Math.floor(e.h/n.h),w:Math.floor(e.w/n.w)}:void 0}}class Rp{known=!1;cell;see(t){if(t.kind==="mode"&&t.mode===1016)this.known=t.value===1||t.value===2;else if(t.kind==="size"&&t.of==="cell"&&t.w>0&&t.h>0)this.cell={w:t.w,h:t.h};else if(t.kind==="attributes")return{cell:this.known?this.cell:void 0};return}}var Nl={on:"\x1B[?1049h",off:"\x1B[?1049l"},Ln={on:"\x1B[?25l",off:"\x1B[?25h"},li={on:"\x1B[?7l",off:"\x1B[?7h"},mr={on:"\x1B[?2004h",off:"\x1B[?2004l"},mS={on:"\x1B[?1004h",off:"\x1B[?1004l"},mC={on:"\x1B[?1000h\x1B[?1002h\x1B[?1006h",off:"\x1B[?1006l\x1B[?1002l\x1B[?1000l"},uS={on:"\x1B[?1016h",off:"\x1B[?1016l\x1B[?1006h"};function fi(t=process.env){return t.TTHEME_MOUSE==="off"?[]:[mC]}var pS={SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGTERM:15},pC=3000;class sc extends Error{exit;constructor(t){super(t);this.exit=128+pS[t]}}var Fn=[],fo=new Map,oc=new Map,lS;function fS(t){return Fn.findLast((e)=>e.input===t)}var dS;function gS(t){for(let e of[...Fn].reverse())e.abort(t);if(!dS)dS=setTimeout(()=>{bS(),process.exit(t instanceof sc?t.exit:1)},pC).unref()}var gC=Object.fromEntries(Object.keys(pS).map((t)=>[t,()=>gS(new sc(t))]));function bS(){for(let t of[...Fn].reverse())t.close()}function bC(){for(let t of Fn)t.reassert();Fn.at(-1)?.redraw()}function hS(t){let e=t?"on":"off";for(let[n,r]of Object.entries(gC))process[e](n,r);if(process[e]("uncaughtException",gS),process[e]("exit",bS),process.platform!=="win32")process[e]("SIGCONT",bC)}function Al(){}class wS{input;output;failed;modes=[];assumed;owned=[];keys;tty;take;resized;queued=[];asking;reject=Al;open=!0;aborted=!1;constructor(t={}){if(this.input=t.input??process.stdin,this.output=t.output??process.stdout,this.tty=this.output.isTTY===!0&&this.input.isTTY===!0,this.assumed=t.assume??[],this.keys=new Ip((r)=>this.deliver(r),t.burst,()=>fo.has(uS)?lS:void 0),this.failed=new Promise((r,i)=>{this.reject=i}),this.failed.catch(Al),this.tty&&!Fn.some((r)=>r.tty))hS(!0);Fn.push(this);let e="";for(let r of this.assumed)if(!fo.has(r))e+=r.on;for(let r of t.modes??[])e+=this.claim(r);this.write(e);let n=oc.get(this.input)??0;if(n===0)this.input.setRawMode?.(!0);oc.set(this.input,n+1),this.input.on("data",this.received),this.input.resume(),this.output.on("resize",this.resizing),this.output.on("error",Al)}hold(t){this.write(this.claim(t))}pixels(t){lS=t,this.hold(uS)}get cols(){return this.output.columns||80}get rows(){return this.output.rows||24}write(t){if(t&&this.open)this.output.write(t)}listen(t){this.take=t;let e=this.queued;if(this.queued=[],e.length>0)t(e)}onResize(t){this.resized=t}until(t){return Promise.race([t,this.failed])}loop(t,e=()=>{}){return this.until(new Promise((n)=>{let r=!1;this.listen((i)=>{for(let o of i){let s=r?void 0:t(o);if(s!==void 0)r=!0,n(s)}if(!r)e()})}))}ask(t,e,n,r=!0){return new Promise((i)=>{let o={hold:r,pick:(c)=>{let u=e(c);if(u===void 0)return!1;return s(u),!0}},s=(c)=>{if(clearTimeout(a),this.asking===o)this.asking=void 0;i(c),this.release()},a=setTimeout(()=>s(void 0),n);this.asking=o,this.write(t)})}abort(t){if(this.aborted)return;this.aborted=!0,this.keys.stop(),this.reject(t)}redraw(){this.resized?.()}reassert(){if(this.open)this.input.setRawMode?.(!0),this.write([...this.assumed,...this.owned].map((t)=>t.on).join(""))}close(){if(!this.open)return;this.keys.stop(),this.input.off("data",this.received),this.output.off("resize",this.resizing);let t="";for(let n of[...this.modes].reverse()){let r=(fo.get(n)??1)-1;if(r===0)fo.delete(n),t+=n.off;else fo.set(n,r)}this.write(t),this.open=!1;let e=(oc.get(this.input)??1)-1;if(e===0)oc.delete(this.input),this.input.setRawMode?.(!1),this.input.pause();else oc.set(this.input,e);if(this.output.off("error",Al),Fn.splice(Fn.indexOf(this),1),this.tty&&!Fn.some((n)=>n.tty))hS(!1)}received=(t)=>{if(fS(this.input)===this&&!this.aborted)this.keys.feed(t)};resizing=()=>{if(fS(this.input)===this)this.resized?.()};claim(t){this.modes.push(t);let e=fo.get(t)??0;if(fo.set(t,e+1),e>0)return"";return this.owned.push(t),t.on}deliver(t){let e=this.asking,n=e?t.filter((r)=>!e.pick(r)):t;if(n.length===0)return;if(!this.take||this.asking?.hold){this.queued.push(...n);return}this.take(n)}release(){if(this.take&&this.queued.length>0){let t=this.queued;this.queued=[],this.take(t)}}}async function di(t,e){let n=new wS(t);try{return await e(n)}finally{n.close()}}var wC=3,kS={series:{top:(t)=>t.group,shelf:(t)=>cc(t.group)?t.catalog:void 0},markets:{top:(t)=>cc(t.group)?t.group:V,shelf:(t)=>cc(t.group)?t.catalog:t.group}};function uc(t,e){return`${t}/${e}`}function $S(t){return ut(t.name)?pe(t.name):t.name}function Ap(t,e){let n=e.shelf(t);return n===void 0?void 0:uc(e.top(t),n)}function Tl(t){if(t?.kind==="palette")return`palette ${t.entry.name}`;if(t?.kind==="group")return`group ${t.name}`;if(t?.kind==="catalog")return`catalog ${uc(t.group,t.name)}`;if(t?.kind==="extra")return`extra ${t.extra.key}`;return t?.kind??""}function ac(t){return t?.kind==="rule"||t?.kind==="extra"&&t.extra.rule===!0}function Hl(t,e){return Wi([t.name,t.group,t.native??"",t.catalog??"",...t.nativeNames??[],...yu(t.booru)],e)}function yS(t,e,n,r="series",i=[]){let o=kS[r],s=n.trim(),a=[],c=new Set,u=(f)=>({kind:"palette",entry:f});for(let f of t){let l=o.top(f);if(f.default||c.has(l))continue;c.add(l);let d=t.filter((b)=>!b.default&&o.top(b)===l),h=s?d.filter((b)=>Hl(b,s)):d;if(s&&h.length===0)continue;let m=s.length>0||e.has(l);if(a.push({kind:"group",name:l,...l===f.group&&f.native?{native:f.native}:{},lead:d.find((b)=>b.lead)??f,expanded:m,count:h.length}),!m)continue;let p=h.filter((b)=>o.shelf(b)!==void 0);for(let b of new Set(p.map(($)=>o.shelf($)))){let $=p.filter((S)=>o.shelf(S)===b),k=$.find((S)=>S.lead)??$[0],v=s.length>0||e.has(uc(l,b));if(a.push({kind:"catalog",group:l,name:b,...!cc(k.group)&&k.native?{native:k.native}:{},lead:k,expanded:v,count:$.length}),v)a.push(...$.map(u))}a.push(...h.filter((b)=>o.shelf(b)===void 0).map(u))}for(let f of i)if(!c.has(f)&&(s===""||Wi([f],s)))a.push({kind:"group",name:f,expanded:e.has(f),count:0});return a}function $C(t,e){let n=e.trim(),r=new Set(t.filter((i)=>!i.default&&(n===""||Hl(i,n))).map((i)=>i.group));return yS(t,new Set,"").filter((i)=>i.kind==="group"&&r.has(i.name))}function cc(t){return t.includes("@")}function kC(t,e,n,r,i=!0){let o=n-1;if(o<0)return t;let s;if(!Number.isFinite(e))s=e>0?o:0;else if(e>0)s=t>=o?i?0:o:Math.min(o,t+e);else s=t<=0?i?o:0:Math.max(0,t+e);if(!r(s))return s;let a=Math.sign(e),c=s+a;if(c>=0&&c<=o)return c;return i&&Math.abs(e)===1?c<0?o:0:s-a}function Fl(t,e){let n={home:Number.NEGATIVE_INFINITY,end:Number.POSITIVE_INFINITY,pgup:-e,pgdn:e};return t===void 0?void 0:n[t]}function yC(t){let e=t.findIndex((n)=>n.kind==="group"&&cc(n.name));return e>0&&t.slice(0,e).some((n)=>n.kind==="group")?[...t.slice(0,e),{kind:"rule"},...t.slice(e)]:t}function vC(t){let e=t.findIndex((n)=>n.kind==="palette");return e===-1?0:e}function Ll(t){return t==="decode"||t==="glitch"?t:"typewriter"}function Cs(t,e,n){return De({kind:"row",at:t,part:e},n)}class Cl{picked;scope;maxItems;named=[];series=[];layout;place;color;p;onFocus;note;badge;tops;extras;entries=[];seriesPad=0;namePad=0;expanded=new Set;rows=[];cursor=0;top=0;filter="";lastFocused="";constructor(t){this.picked=t.picked,this.scope=t.scope??"palette",this.layout=t.layout??"series",this.place=kS[this.layout],this.maxItems=t.maxItems??12,this.color=t.color??!0,this.p=xe(this.color),this.onFocus=t.onFocus,this.note=t.note,this.badge=t.badge,this.tops=t.tops,this.extras=t.extras,this.load(t.entries),this.rebuild("first")}load(t){this.entries=t,this.named=t.filter((e)=>!e.default),this.series=[...new Set(this.named.map((e)=>e.group))],this.seriesPad=Math.max(0,...this.series.map((e)=>e.length)),this.namePad=Math.max(0,...this.named.map((e)=>this.indent(e).length+$S(e).length))}indent(t){return this.place.shelf(t)===void 0?" ":" "}setEntries(t){this.load(t),this.rebuild("stay")}setFilter(t){if(t!==this.filter)this.filter=t,this.rebuild("keep")}clear(){let t=this.rows[this.cursor];if(t?.kind==="palette"&&!t.entry.default){this.expanded.add(this.place.top(t.entry));let e=Ap(t.entry,this.place);if(e!==void 0)this.expanded.add(e)}this.setFilter("")}focusedRow(){return this.rows[this.cursor]}refocus(){this.lastFocused="",this.sync()}refresh(){this.rebuild("stay")}select(t){let e=this.rows.findIndex((n)=>Tl(n)===t);if(e===-1)return!1;return this.cursor=e,this.sync(),!0}members(t,e){let n=this.scope==="palette"?this.filter.trim():"";return this.under(t,e).filter((r)=>n===""||Hl(r,n))}under(t,e){return this.named.filter((n)=>this.place.top(n)===t&&(e===void 0||this.place.shelf(n)===e))}inside(t){return t.kind==="palette"?[t.entry]:t.kind==="group"?this.under(t.name):t.kind==="catalog"?this.under(t.group,t.name):[]}everyone(t){return t.flatMap((e)=>e.kind==="group"?this.members(e.name):[])}pick(){let t=this.rows[this.cursor],e=t?.kind==="palette"?[t.entry.name]:t?.kind==="group"?this.members(t.name).map((r)=>r.name):t?.kind==="catalog"?this.members(t.group,t.name).map((r)=>r.name):t?.kind==="all"?this.everyone(this.rows).map((r)=>r.name):[];if(e.length===0)return;let n=e.some((r)=>!this.picked.has(r));for(let r of e)if(n)this.picked.add(r);else this.picked.delete(r)}pickedIn(t,e){return this.members(t,e).filter((n)=>this.picked.has(n.name)).length}pickedCount(){if(this.scope==="palette")return this.named.filter((t)=>this.picked.has(t.name)).length;return this.series.filter((t)=>this.members(t).every((e)=>this.picked.has(e.name))).length}total(){return this.scope==="series"?this.series.length:this.named.length}matched(){let t=this.filter.trim();if(this.scope==="series")return this.rows.filter((e)=>e.kind==="group").length;return t?this.named.filter((e)=>Hl(e,t)).length:this.named.length}sync(){let t=this.rows[this.cursor],e=t?.kind==="palette"?t.entry:t?.kind==="group"&&this.scope==="series"?t.lead:void 0;if(e&&e.name!==this.lastFocused)this.lastFocused=e.name,this.onFocus?.(e)}rebuild(t){let e=this.rows[this.cursor],n=this.scope==="series"?$C(this.entries,this.filter):yS(this.entries,this.expanded,this.filter,this.layout,this.tops?.()??[]),r=this.layout==="markets"||n.length===0?n:yC([{kind:"all",count:this.allCount(n)},...n]);this.rows=[...r,...(this.extras?.()??[]).map((o)=>({kind:"extra",extra:o}))];let i=n.length>0?this.rows.indexOf(n[vC(n)]):0;if(t==="first")this.cursor=i;else if(t==="keep"||t==="stay"){let o=Tl(e),s=e?.kind==="palette"||t==="stay"?this.rows.findIndex((c)=>Tl(c)===o):-1,a=e?.kind==="extra"&&t==="stay";this.cursor=s!==-1?s:a?Math.min(this.cursor,this.rows.length-1):i}else if(this.cursor>=this.rows.length)this.cursor=Math.max(0,this.rows.length-1);this.settle(),this.sync()}settle(){if(!ac(this.rows[this.cursor]))return;let t=this.rows.findIndex((n,r)=>r>this.cursor&&!ac(n)),e=this.rows.findLastIndex((n,r)=>r<this.cursor&&!ac(n));this.cursor=t!==-1?t:e!==-1?e:this.cursor}allCount(t){return this.scope==="series"?t.length:this.everyone(t).length}move(t,e=!0){this.cursor=kC(this.cursor,t,this.rows.length,(n)=>ac(this.rows[n]),e),this.sync()}point(t){let e=this.rows[t];if(!e||ac(e))return!1;return this.cursor=t,this.sync(),!0}flip(){let t=this.rows[this.cursor];if(t?.kind==="group"||t?.kind==="catalog")this.fold(!t.expanded)}foldable(){let t=this.rows[this.cursor];return(t?.kind==="group"||t?.kind==="catalog")&&this.scope==="palette"&&!this.filter}open(){if(this.foldable())this.flip();else this.pick()}toggle(t){if(this.expanded.has(t))this.expanded.delete(t);else this.expanded.add(t);this.rebuild("clamp")}climb(t,e){this.expanded.delete(t),this.rebuild("clamp"),this.reach(e)}reach(t){this.cursor=Math.max(0,this.rows.findIndex((e)=>Tl(e)===t)),this.sync()}fold(t){if(this.filter||this.scope==="series")return;let e=this.rows[this.cursor];if(e?.kind==="group"){if(t!==e.expanded)this.toggle(e.name)}else if(e?.kind==="catalog"){if(t!==e.expanded)this.toggle(uc(e.group,e.name));else if(!t)this.reach(`group ${e.group}`)}else if(e?.kind==="palette"&&!t&&!e.entry.default){let n=Ap(e.entry,this.place);if(n===void 0){let r=this.place.top(e.entry);this.climb(r,`group ${r}`)}else this.climb(n,`catalog ${n}`)}}window(){if(this.cursor<this.top)this.top=this.cursor;if(this.cursor>=this.top+this.maxItems)this.top=this.cursor-this.maxItems+1;this.top=Math.min(this.top,Math.max(0,this.rows.length-this.maxItems));let t=this.rows.slice(this.top,this.top+this.maxItems);return{lines:t.map((e,n)=>this.renderRow(e,this.top+n)),above:this.top,below:this.rows.length-this.top-t.length}}renderRow(t,e){if(t.kind==="rule")return` ${this.p.dim("── Markets ──────────")}`;if(t.kind==="extra"){let n=t.extra.text(e===this.cursor,e);return t.extra.rule?n:Cs(e,"row",n)}return Cs(e,"row",this.rowText(t,e))}rowText(t,e){let n=e===this.cursor,r=t.kind==="palette"?t.entry:t.kind==="all"?void 0:t.lead,i=this.color&&n&&r!==void 0,{dim:o,bold:s}=this.p,a=(v)=>this.color?` ${Kb(bu(v),i?Jn(v.foreground):wt)}`:"",c=n?i?`${Jn(r.cursor)}${A.gutter}${wt} `:`${A.gutter} `:" ",u=(v)=>i?`${c}${Wb(r.selection,r.foreground)} ${v} ${ae}`:`${c} ${v}`,f=(v)=>Cs(e,"box",`${v?A.on:A.off} `),l=(v)=>Cs(e,"fold",`${v?A.opened:A.closed} `);if(t.kind==="all")return u(`${f(this.everyone(this.rows).every((v)=>this.picked.has(v.name)))}Select all ${o(`(${t.count})`)}`);if(t.kind==="group"&&this.scope==="series"){let v=`(${t.count})${t.native?` ${t.native}`:""}`;return u(`${f(this.pickedIn(t.name)===t.count)}${s(t.name.padEnd(this.seriesPad))}${t.lead?a(t.lead):""}${this.color?" ":" "}${o(v)}`)}let d=this.rows[this.cursor],h=(v,S)=>this.color&&d?.kind==="palette"&&v?this.p.accent(s(S)):s(S);if(t.kind==="group"){let v=h(d?.kind==="palette"&&this.place.top(d.entry)===t.name,t.name),S=t.native?` ${o(t.native)}`:"",x=this.badge?.(t.name)??"";return u(`${l(t.expanded)}${v} ${o(`(${this.pickedIn(t.name)}/${t.count})`)}${S}${x}`)}if(t.kind==="catalog"){let v=d?.kind==="palette"&&Ap(d.entry,this.place)===uc(t.group,t.name),S=o(`(${this.pickedIn(t.group,t.name)}/${t.count})`),x=t.native?` ${o(t.native)}`:"";return u(` ${l(t.expanded)}${h(v,t.name)} ${S}${x}`)}let m=t.entry,p=this.indent(m),b=$S(m),$=this.color?b.padEnd(this.namePad-p.length):b,k=n?s($):$;return u(`${p}${f(this.picked.has(m.name))}${k}${a(m)}${this.note?.(m)??""}`)}}function Np(t){let e=t.named[Math.floor(Math.random()*t.named.length)],n=t.series[Math.floor(Math.random()*t.series.length)];return e&&n?`${e.name} | ${n}`:""}class jl{fx;make;redraw;roller;example="";step=0;seed=0;timer;constructor(t,e,n){this.fx=t,this.make=e,this.redraw=n,this.roll(),this.roller=setInterval(()=>{this.roll(),this.step=8,this.redraw()},3000),this.roller.unref?.()}stop(){clearInterval(this.roller),clearTimeout(this.timer)}roll(){let t=this.make();this.example=t.length>30?`${t.slice(0,29)}…`:t,this.seed=Math.floor(Math.random()*997)}text(){if(this.step===0)return this.example;if(!this.timer)this.timer=setTimeout(()=>{this.timer=void 0,this.step-=1,this.redraw()},60),this.timer.unref?.();let t=Math.floor(this.example.length*(8-this.step)/8);if(this.fx==="typewriter")return`${this.example.slice(0,t)}▏`;let e=this.fx==="decode"?"abcdefghijklmnopqrstuvwxyz":"▓▒░#*+=<>?/-_",n=this.fx==="decode"?(r)=>!/[a-z0-9]/i.test(r):(r)=>r===" ";return[...this.example].map((r,i)=>i+(i*7+this.seed)%3<t||n(r)?r:e[Math.floor(Math.random()*e.length)]??r).join("")}}var SC=5;class Tp{picked;list;scope;color;required;most;hint;field=new rc;input;output;state="active";error="";redraw=()=>{};constructor(t){this.scope=t.scope??"palette",this.picked=new Set(t.installed??[]),this.color=t.color??!0,this.required=t.required??!1,this.most=t.maxItems??12,this.input=t.input,this.output=t.output,this.list=new Cl({entries:t.entries,picked:this.picked,scope:this.scope,maxItems:this.most,color:this.color,...t.onFocus?{onFocus:t.onFocus}:{}}),this.hint=new jl(t.fx??"typewriter",()=>Np(this.list),()=>this.redraw())}prompt(){return di({input:this.input,output:this.output,modes:[Ln,mr]},async(t)=>{let e=new np((r)=>t.write(r),()=>t.cols),n=()=>{return this.list.maxItems=Math.max(wC,Math.min(this.most,t.rows-SC)),this.draw()};this.redraw=()=>e.draw(n()),t.onResize(()=>e.redraw(n())),this.redraw();try{let r=await t.loop((i)=>{return this.take(i),this.state==="submit"||this.state==="cancel"?this.state:void 0},()=>this.redraw());return this.redraw=()=>{},e.end(this.draw()),r}finally{this.hint.stop()}})}take(t){if(t.kind==="paste"){this.field.paste(t.text),this.list.setFilter(this.field.value);return}if(t.kind!=="key")return;let e=t.key;if(this.state==="error")this.state="active";let n=Fl(e,this.list.maxItems);if(e==="esc"||e==="ctrl-c")this.state="cancel";else if(e==="enter")if(this.required&&this.picked.size===0)this.error=`Pick at least one ${this.scope}`,this.state="error";else this.state="submit";else if(e==="up"||e==="down")this.list.move(e==="up"?-1:1);else if(e==="left"||e==="right")this.list.fold(e==="right");else if(n!==void 0)this.list.move(n);else if(e===" ")this.list.pick();else if(this.field.key(e))this.list.setFilter(this.field.value)}draw(){let{dim:t,accent:e,warn:n}=xe(this.color),r=this.scope==="series"?"Series":"Catalog";if(this.state==="submit")return[`${t("◇")} ${r} ${t(`· ${this.list.pickedCount()} picked`)}`];if(this.state==="cancel")return[`${t(`◇ ${r} · cancelled`)}`];let i=this.field.value,o=`${e("◆")} ${r} ${t(`(${this.list.matched()}/${this.list.total()} · ${this.list.pickedCount()} picked)`)}`,s=this.hint.text(),a=`${e("│")} ${i?`${i}_`:t(`Search…${s?` e.g. ${s}`:""}`)}`,{lines:c,below:u}=this.list.window(),f=c.length>0?c.map((p)=>`${e("│")} ${p}`):[`${e("│")} ${t(`No ${this.scope==="series"?"series":"palettes"} match '${i}'`)}`];while(f.length<this.list.maxItems)f.push(e("│"));let l=u>0?`${e("│")} ${t(`↓ ${u} more`)}`:e("│"),d=this.scope==="series"?"":" · ←→ fold",h=this.scope==="series"?"continue":"install",m=this.state==="error"?`${e("└")} ${n(this.error)}`:`${e("└")} ${t(`↑↓ move${d} · space pick · type to filter · enter ${h} · esc cancel`)}`;return[o,a,...f,l,m]}}var Hp=34,EC=72,MC=94,xC=22,vS=40,SS=10,_l=3,ES=600,OC=500,PC=300,MS=12,xS={title:"",lines:[],brief:""};function js(t){let e=t.trim();if(e!==V&&!e.includes("/")&&!e.startsWith("~"))return;try{return Kr(e)}catch{return}}function OS(t){return t.charAt(0).toUpperCase()+t.slice(1)}class Fp{picked;field=new rc;adds=new Map;removes=new Set;want=new Map;renew=new Set;updates;tuned;scope;busy=new Map;failed=new Map;peeked=new Map;peekFailed=new Map;staging=new Set;timers=new Map;refreshed=[];inflight=new Set;markets;kept;installed;startup;io;order;color;p;hub;owns;input;output;maxItems=12;paint;catalog;hint;screen;state="active";phase="browse";offset=0;started=!1;log=[];working="";stopped;beat=0;asking;leaving;goto;repos;searching=!1;searchError;searched;asked=0;help=!1;live;constructor(t){this.markets=t.markets,this.kept=t.kept,this.installed=new Set(t.installed),this.updates=new Set(t.updates??[]),this.tuned=new Set(t.tuned??[]),this.startup=t.startup,this.io=t.io,this.order=t.order??((e)=>e),this.color=t.color??!0,this.p=xe(this.color),this.hub=t.hub,this.owns=t.owns??!1,this.input=t.input,this.output=t.output,this.live=t.lookups??!0,this.paint=t.onFocus,this.picked=new Set(t.installed),this.catalog=new Cl({entries:this.entries(),picked:this.picked,layout:"markets",color:this.color,maxItems:this.maxItems,note:(e)=>this.mark(e),badge:(e)=>this.badge(e),tops:()=>this.tops(),extras:()=>this.found(),onFocus:(e)=>this.focus(e)}),this.hint=new jl(t.fx??"typewriter",()=>Np(this.catalog),()=>this.redraw());for(let e of t.due)this.update(e);this.lookup()}run(){let t=[...this.owns?[Nl,Ln,li]:[],mr,...fi()],e=this.owns?[]:[Ln,li];return di({input:this.input,output:this.output,modes:t,assume:e},async(n)=>{let r=new ao({write:(i)=>n.write(i),view:()=>this.state==="active"?{lines:this.view(),ticking:this.phase==="applying"}:void 0,beat:()=>{this.beat+=1}});this.screen=r,n.onResize(()=>{r.reset(),r.request()}),r.now();try{return await n.loop((i)=>{if(i.kind==="key")this.key(i.key);else if(i.kind==="paste")this.pasted(i.text);else if(i.kind==="mouse")this.mouse(i,r);return this.state==="active"?void 0:this.state},()=>r.soon())}finally{r.stop(),this.screen=void 0,this.hint.stop();for(let i of this.timers.values())clearTimeout(i);this.timers.clear()}})}applied(){return this.started}lines(){return this.log}failure(){return this.stopped}next(){return this.goto}async idle(){await Promise.allSettled([...this.inflight])}result(){let t=new Set(this.entries().map((e)=>e.name));return{picked:new Set([...this.picked].filter((e)=>t.has(e))),adds:[...this.adds.values()],removes:[...this.removes],auto:Object.fromEntries(this.want),renew:[...this.renew].filter((e)=>this.updates.has(e)&&this.picked.has(e)&&t.has(e)),refreshed:this.refreshed}}key(t){if(t==="ctrl-c"){this.state="cancel";return}if(this.help){if(t==="?"||t==="esc")this.help=!1;return}if(this.leaving!==void 0){if(t==="esc")this.leaving=void 0;else if(/^[yn]$/i.test(t)){if(t.toLowerCase()==="y")this.begin();else this.goto=this.leaving,this.state="cancel";this.leaving=void 0}return}if(this.asking){if(t==="esc")this.asking=void 0;else if(/^[yn]$/i.test(t))this.answer(t.toLowerCase()==="y");return}if(this.phase!=="browse"){this.steer(t);return}let e=Fl(t,this.maxItems),n=this.catalog;if(t==="enter")if(n.foldable())n.flip();else if(this.dirty())this.phase="review",this.offset=0;else this.state="submit";else if((t==="esc"||t==="ctrl-u")&&this.field.value)this.clear();else if(t==="esc")this.state="cancel";else if(t==="?")this.help=!0;else if(e!==void 0)this.move(e);else if(t==="up"||t==="down")this.move(t==="up"?-1:1);else if(t==="left"||t==="right")n.fold(t==="right");else if(t==="tab"||t==="shift-tab"){if(this.hub)this.leave(Dk(this.hub,t==="tab"?1:-1))}else if(t==="shift-left"||t==="shift-right")this.autoUpdate(t==="shift-right");else if(t===" ")this.activate();else if(t==="delete"){let r=this.focusedMarket();if(r)this.toggleMarket(r)}else if(t==="ctrl-r")this.refresh();else if(t==="ctrl-s")this.cycle();else if(this.field.key(t))this.typed()}refresh(){let t=this.catalog.focusedRow(),e=this.focusedMarket();if(e){if(kt(e.source)&&!this.adds.has(e.source))this.update(e.source)}else if(t?.kind==="extra"){if(t.extra.found?.kind==="find")this.search()}else if(t?.kind!=="group")this.toggleRenew()}pasted(t){if(this.phase==="browse"&&!this.help&&!this.asking&&this.leaving===void 0)this.field.paste(t),this.typed()}mouse(t,e){if(this.help){if(t.action==="release")this.help=!1;return}let n=e.point(t),r=n?.target,i=this.phase==="browse"&&this.leaving===void 0&&!this.asking;if(t.action==="wheel"){if(!t.sideways&&(i||this.phase!=="browse"))this.wheel(t.wheel);return}if(!r)return;if(t.action==="press"&&t.button==="left"){if(!i)return;if(r.kind==="chip")this.scopeTo(r.source);else if(r.kind==="row")this.catalog.point(r.at),this.watch()}else if(t.action==="release"&&n?.inside){if(r.kind==="key")this.key(r.key);else if(r.kind==="page"){if(this.phase!=="browse")this.scroll(r.step*this.span());else if(i)this.move(r.step*this.maxItems)}else if(r.kind==="hub"){if(i&&this.hub&&r.tab!==this.hub)this.leave(qk(r.tab))}else if(r.kind==="row"&&i)this.openRow(r,t.count)}}wheel(t){if(this.phase!=="browse"){this.scroll(t);return}this.move(t,!1)}openRow(t,e){let n=this.catalog;if(n.focusedRow()?.kind==="extra"){if(t.part==="box"||e===2)this.activate()}else if(t.part==="box")n.pick();else if(t.part==="fold")n.flip();else if(e===2)n.open()}typed(){this.catalog.setFilter(this.field.value),this.later("search",ES,()=>this.lookup()),this.watch()}clear(){this.field.value="",this.catalog.clear(),this.later("search",ES,()=>this.lookup()),this.watch()}redraw(){if(this.state==="active")this.screen?.request()}focus(t){if(this.state!=="submit"&&this.state!=="cancel")this.paint?.(t)}track(t){this.inflight.add(t);let e=()=>this.inflight.delete(t);return t.then(e,e),t}active(){return[...this.markets.filter((t)=>!this.removes.has(t.source)),...this.adds.values()]}entries(){let t=this.active().flatMap((i)=>i.entries),e=new Set(t.map((i)=>i.name)),n=new Map,r=this.markets.filter((i)=>this.removes.has(i.source)).flatMap((i)=>i.entries);for(let i of[...this.kept,...r])if(this.installed.has(i.name)&&!e.has(i.name))n.set(i.name,i);return this.order([...t,...n.values()])}scoped(t){let e=this.scope,n=e===void 0?void 0:this.active().find((i)=>i.source===e);if(!n)return this.scope=void 0,t;let r=new Set(n.entries.map((i)=>i.name));return t.filter((i)=>r.has(i.name))}reload(){this.catalog.setEntries(this.scoped(this.entries()))}chips(){let t=this.active().map((e)=>({source:e.source,label:e.id,count:e.entries.filter((n)=>!n.default).length}));return[{source:void 0,label:"All",count:this.entries().filter((e)=>!e.default).length},...t]}tops(){return[...this.markets,...this.adds.values()].filter((t)=>this.scope===void 0||t.source===this.scope).map((t)=>t.id)}marketNamed(t){return[...this.markets,...this.adds.values()].find((e)=>e.id===t)}focusedMarket(){let t=this.catalog.focusedRow();return t?.kind==="group"?this.marketNamed(t.name):void 0}cycle(){if(this.active().length<2)return;let t=this.chips(),e=Math.max(0,t.findIndex((n)=>n.source===this.scope));this.scopeTo(t[(e+1)%t.length]?.source)}scopeTo(t){this.scope=t,this.reload(),this.catalog.refocus()}move(t,e=!0){this.catalog.move(t,e),this.watch()}autoUpdate(t){let e=this.focusedMarket();if(e&&kt(e.source))if(t===e.auto)this.want.delete(e.source);else this.want.set(e.source,t)}activate(){let t=this.catalog.focusedRow();if(t?.kind!=="extra"){this.catalog.pick();return}let e=t.extra.found;if(e?.kind==="add")this.load(e.source,!0);else if(e?.kind==="repo"){let n=this.known(e.source);if(n)this.catalog.select(`group ${n.id}`);else this.load(e.source,!0)}else if(e?.kind==="find")this.search()}toggleMarket(t){if(this.adds.has(t.source))this.adds.delete(t.source),this.want.delete(t.source);else if(this.removes.has(t.source))this.removes.delete(t.source);else this.removes.add(t.source);this.reload()}known(t){return[...this.markets,...this.adds.values()].find((e)=>os(e.source,t))}load(t,e){let n=this.peeked.get(t);if(n){if(e)this.arrive(t,n);return}if(e)this.staging.add(t);if(this.busy.has(t))return;this.failed.delete(t),this.peekFailed.delete(t),this.busy.set(t,"Fetching…"),this.track(this.io.fetch(t)).then((r)=>{if(this.busy.delete(t),this.peeked.set(t,r),this.staging.delete(t))this.arrive(t,r);this.redraw()},(r)=>{if(this.busy.delete(t),this.staging.delete(t))this.failed.set(t,r.message);else this.peekFailed.set(t,r.message);this.redraw()})}arrive(t,e){let n=this.active().find((r)=>r.id===e.id);if(n)this.failed.set(t,`${e.id} already names the market at ${n.shown}`);else if(Ht(t)||t===V)this.stage(e,e.auto);else this.asking=e;this.redraw()}later(t,e,n){this.cancel(t),this.timers.set(t,setTimeout(()=>{if(this.timers.delete(t),this.state!=="submit"&&this.state!=="cancel")n()},e))}cancel(t){clearTimeout(this.timers.get(t)),this.timers.delete(t)}wants(t){return!this.known(t)&&!this.peeked.has(t)&&!this.busy.has(t)&&!this.peekFailed.has(t)}focusedFound(){let t=this.catalog.focusedRow();return t?.kind==="extra"?t.extra.found:void 0}watch(){if(!this.live)return;let t=js(this.field.value);if(t&&this.wants(t))this.later("typed",OC,()=>this.load(t,!1));else this.cancel("typed");let e=this.focusedFound();if(e?.kind==="repo"&&this.wants(e.source)){let n=e.source;this.later("focus",PC,()=>{let r=this.focusedFound();if(r?.kind==="repo"&&r.source===n)this.load(n,!1)})}else this.cancel("focus")}answer(t){let e=this.asking;if(this.asking=void 0,e)this.stage(e,t)}stage(t,e){if(this.adds.set(t.source,t),e===t.auto)this.want.delete(t.source);else this.want.set(t.source,e);let n=js(this.field.value);if(n&&os(n,t.source))this.field.value="",this.catalog.setFilter("");this.reload(),this.catalog.select(`group ${t.id}`)}update(t){if(this.busy.has(t))return;this.failed.delete(t),this.busy.set(t,"Updating…"),this.track(this.io.refresh(t)).then(({market:e,refreshed:n,updates:r})=>{this.busy.delete(t),this.updates=new Set(r),this.markets=this.markets.map((i)=>i.source===t?e:i),this.refreshed.push(n),this.reload(),this.redraw()},(e)=>{this.busy.delete(t),this.failed.set(t,`Update failed: ${e.message}`),this.redraw()})}wanted(){let t=this.field.value.trim();return t&&!js(t)?t:""}lookup(){if(this.live&&this.searched!==this.wanted())this.search()}search(){let t=this.wanted(),e=++this.asked;this.searched=t,this.searching=!0,this.searchError=void 0,this.track(this.io.search(t||void 0)).then((n)=>{if(e===this.asked)this.searching=!1,this.repos=n,this.catalog.refresh(),this.watch(),this.redraw()},(n)=>{if(e===this.asked)this.searching=!1,this.searchError=n.message,this.redraw()})}found(){let t=js(this.field.value),e=(...i)=>Wi(i,this.field.value),n=(this.repos??[]).map((i)=>({repo:i,source:xp(i)})).filter(({repo:i,source:o})=>e(o,i.description??"")),r=[...t&&!this.known(t)?[{kind:"add",source:t}]:[],...n.map(({repo:i,source:o})=>({kind:"repo",repo:i,source:o})),...n.length>0?[]:[{kind:"find"}]];return[{key:"github",rule:!0,text:()=>` ${this.p.dim(`── On GitHub${this.searching?" · searching…":""} ──────────`)}`},...r.map((i)=>({key:i.kind==="find"?"find":`${i.kind} ${i.source}`,found:i,text:(o,s)=>this.foundLine(i,o,s)}))]}lit(t,e){return`${t?`${A.gutter} `:" "} ${e}`}status(t){return this.adds.has(t.source)?"Will add":this.removes.has(t.source)?"Will remove":this.busy.get(t.source)??(this.failed.has(t.source)||t.status.startsWith("update failed")?"Update failed":"")}badge(t){let e=this.marketNamed(t);if(!e)return"";return[kt(e.source)&&(this.want.get(e.source)??e.auto)?`${A.auto} auto-update`:"",this.status(e)].filter(Boolean).map((r)=>` ${this.p.dim(r)}`).join("")}peeking(t){let e=this.peeked.get(t);return e?Dt(e.entries.filter((n)=>!n.default).length):""}foundLine(t,e,n){let r=(a)=>Cs(n,"box",`${a} `),i=(a)=>a?` ${this.p.dim(a)}`:"";if(t.kind==="add"){let a=this.failed.get(t.source)??this.peekFailed.get(t.source),c=this.peeked.get(t.source),u=a?` ${this.p.error(a)}`:i(this.busy.get(t.source)??(c?`${c.id} · ${this.peeking(t.source)}`:this.live?"Fetching its palettes…":"space fetches its palettes"));return this.lit(e,`${r("+")}Add ${rt(t.source)}${u}`)}if(t.kind==="find"){let a=this.field.value.trim(),c=a&&!js(a),u=!this.searching&&!this.searchError&&this.repos===void 0,f=this.searching?"Searching GitHub…":this.searchError?"GitHub search failed":u?c?`Find "${a}" on GitHub`:"Find markets on GitHub":c?`No market on GitHub matches "${a}"`:"No market on GitHub yet",l=this.searchError??(this.searching?"":u?"space searches":"space searches again");return this.lit(e,`${r(A.search)}${f}${i(l)}`)}let s=[this.busy.get(t.source)??this.peeking(t.source),t.repo.description??""].filter(Boolean).join(" · ");return this.lit(e,`${r(this.known(t.source)?A.on:A.off)}${t.source} ${this.p.dim(`${A.star}${t.repo.stargazers_count}`)}${i(s)}`)}changes(){return this.adds.size+this.removes.size+this.want.size}dirty(){let{picked:t,renew:e}=this.result();return this.changes()>0||e.length>0||t.size!==this.installed.size||[...t].some((n)=>!this.installed.has(n))}mark(t){let e=this.tuned.has(t.name)?` ${this.p.warn(A.on)}`:"";if(!this.updates.has(t.name)||!this.installed.has(t.name))return e;return`${e}${this.renew.has(t.name)?` ${this.p.bold(`${A.update} update`)}`:` ${this.p.dim(A.update)}`}`}toggleRenew(){let t=this.catalog,e=t.focusedRow(),n=(e?t.inside(e):[]).map((i)=>i.name).filter((i)=>this.updates.has(i)&&this.installed.has(i));if(n.length===0)return;let r=n.some((i)=>!this.renew.has(i));for(let i of n)if(r)this.renew.add(i);else this.renew.delete(i)}leave(t){if(this.dirty()){this.leaving=t;return}this.goto=t,this.state="cancel"}steer(t){if(this.phase==="review"){if(t==="enter")this.begin();else if(t==="esc")this.phase="browse"}else if(this.phase==="done"&&(t==="enter"||t==="esc"))this.state="submit";let e=t==="up"?-1:t==="down"?1:Fl(t,this.span());if(e!==void 0)this.scroll(e)}scroll(t){this.offset=Number.isFinite(t)?Math.max(0,this.offset+t):t>0?Number.MAX_SAFE_INTEGER:0,this.redraw()}span(){return Math.max(_l,this.rows()-(this.hub?1:0)-4)}begin(){this.phase="applying",this.started=!0,this.offset=0,this.log=[],this.working="";let t={say:(e)=>{this.log.push(...e.split(`
649
+ `)),this.redraw()},status:(e)=>{this.working=e,this.redraw()}};this.track(this.io.apply(this.result(),t)).then(()=>this.ended(),(e)=>this.ended(e))}ended(t){this.working="",this.stopped=t,this.phase="done",this.offset=0,this.redraw()}pending(){let t=this.entries().filter((e)=>!e.default);return{names:t.filter((e)=>this.picked.has(e.name)&&!this.installed.has(e.name)),dropped:t.filter((e)=>this.installed.has(e.name)&&!this.picked.has(e.name))}}marketChanges(){let t=[];for(let e of this.adds.values()){let n=e.source!==V&&(this.want.get(e.source)??e.auto)?"updates on its own":"";t.push(`+ ${e.id} ${this.p.dim([e.source===V?"The ttheme catalog":e.shown,Dt(e.entries.filter((r)=>!r.default).length),n].filter(Boolean).join(" · "))}`)}for(let e of this.removes){let n=this.markets.find((i)=>i.source===e),r=(n?.entries??[]).filter((i)=>!i.default&&this.installed.has(i.name)&&this.picked.has(i.name));t.push(`- ${n?.id??e} ${this.p.dim([n?.shown??rt(e),r.length>0?`its ${Dt(r.length)} installed keep working`:""].filter(Boolean).join(" · "))}`)}for(let[e,n]of this.want){let r=this.markets.find((i)=>i.source===e);if(r&&!this.removes.has(e))t.push(`${A.auto} ${r.id} ${this.p.dim(n?"updates on its own from now":"stops updating on its own")}`)}return t}reviewLines(){let t=this.marketChanges(),{names:e,dropped:n}=this.pending(),r=new Set(this.result().renew),i=this.entries().filter((c)=>r.has(c.name)),o=Math.max(0,...[...e,...n,...i].map((c)=>c.name.length)),s=(c,u)=>` ${c} ${u.name.padEnd(o)} ${this.p.dim(ut(u.name)?u.catalog??"":u.group)}`,a=[e.length>0?`${e.length} to install`:"",n.length>0?`${n.length} to remove`:"",i.length>0?`${i.length} to update`:""].filter(Boolean);return[...t.length>0?[` ${this.p.bold("Markets")} ${this.p.dim(`(${t.length})`)}`,...t.map((c)=>` ${c}`),""]:[],...a.length>0?[` ${this.p.bold("Palettes")} ${this.p.dim(`(${a.join(" · ")})`)}`,...e.map((c)=>s("+",c)),...n.map((c)=>s("-",c)),...i.map((c)=>s(A.update,c))]:[]]}summary(){let{names:t,dropped:e}=this.pending(),n=this.adds.size;return[n>0?`${n} market${n===1?"":"s"} added`:"",this.removes.size>0?`${this.removes.size} removed`:"",t.length>0?`${t.length} installed`:"",e.length>0?`${e.length} removed`:"",this.result().renew.length>0?`${this.result().renew.length} updated`:""].filter(Boolean).join(" · ")}progressLines(){let t=this.log.map((e)=>` ${e}`);if(this.phase==="applying"){let e=qn[this.beat%qn.length];t.push(` ${this.p.dim(`${e} ${this.working||"Working…"}`)}`)}else if(this.stopped)t.push("",...Et(this.stopped.message,Math.max(20,this.columns()-6)).map((e,n)=>` ${n===0?this.p.error(A.miss):" "} ${e}`));return t}frame(t,e){let n=t-1,r=this.phase==="review",i=r?this.reviewLines():this.progressLines(),o=this.phase==="review"?`${this.p.bold("Review changes")}`:this.phase==="applying"?this.p.bold("Applying changes"):this.stopped?`${this.p.error(A.miss)} ${this.p.bold("Stopped")}`:`${this.p.bold(`${A.ok} Applied`)} ${this.p.dim(this.summary()?`(${this.summary()})`:"")}`,s=this.span(),a=Math.max(0,i.length-s),c=this.phase==="applying"?a:Math.min(this.offset,a);this.offset=c;let u=i.slice(c,c+s),f=i.length-c-u.length,l=[c>0?` ${this.more(-1,`↑ ${c} more`)}`:"",...u];while(l.length<s+1)l.push("");l.push(f>0?` ${this.more(1,`↓ ${f} more`)}`:"");let d=a>0?[["↑↓","scroll"]]:[],h=r?{badge:"BROWSE (APPLY)",keys:[...d,["enter","apply"]],right:["esc","back"]}:this.phase==="applying"?{badge:"BROWSE (APPLY)",note:"Keys wait until it ends",keys:[]}:{badge:"BROWSE (APPLY)",keys:d,right:["enter","close"]};return[...this.hub?[tt(jh(this.hub,this.color),n,!1)]:[],tt(` ${o}`,n,!1),...l.map((m)=>tt(m,n,!1)),` ${this.keyBar(h,n-1)}`].slice(0,e).join(`
650
+ `)}keyBar(t,e){let n=`${qe(this.p,t.badge)}${this.color?" ":" "}`,r=([a,c])=>Kk(this.p,a,c),{note:i,keys:o,right:s}=t;for(;;){let a=`${n}${[t.lead??"",i?this.p.dim(i):"",...o.map(r)].filter(Boolean).join(" ")}`,c=s?r(s):"";if(G(a)+(s?3+G(c):0)<=e)return s?Pt(a,c,e):tt(a,e,!1);if(i)i=void 0;else if(o.length>2||!s&&o.length>1){let u=o.length-2;o=o.filter((f,l)=>l!==u)}else if(s)s=void 0;else return tt(a,e,!1)}}more(t,e){return this.p.dim(De({kind:"page",step:t},e))}counts(){let t=[...this.busy.values()].includes("Updating…")?"Updating… · ":"",e=this.catalog;return`${t}${e.matched()}/${e.total()} · ${e.pickedCount()} picked`}searchText(){let t=this.field.value;if(t)return`${t}_`;let e=this.hint.text();return this.p.dim(`Search…${e?` e.g. ${e}`:""}`)}heading(){return`${this.p.bold("Browse")} ${this.p.dim(`(${this.counts()})`)}`}searchBox(t){let e=(r,i)=>this.p.dim(`${r}${"─".repeat(t-2)}${i}`),n=this.p.dim("│");return[e("╭","╮"),`${n} ${tt(`${this.p.dim(A.search)} ${this.searchText()}`,t-4)} ${n}`,e("╰","╯")]}strip(t){if(this.active().length<2)return;let e=this.chips(),n=Math.max(0,e.findIndex((p)=>p.source===this.scope)),r=e.map((p,b)=>b===n&&!this.color?`[${p.label} ${p.count}]`:`${p.label} ${p.count}`),i=" · ",o=(p)=>p>0?`${i}+${p} more`.length:0,s=(p)=>{let b=p>0?2:0,$=0;for(let k=p;k<r.length;k++){let v=b+($>0?i.length:0)+r[k].length;if(v+o(r.length-k-1)>t)break;b=v,$+=1}return $},a=0;while(a<n&&a+s(a)<=n)a+=1;let c=Math.max(1,s(a)),u=r.slice(a,a+c),f=r.length-a-c,l=u.map((p,b)=>{let $=De({kind:"chip",source:e[a+b]?.source},p);if(a+b===n)return this.p.accent(this.p.bold($));return this.p.dim($)}),d=`${a>0?`${this.p.dim(jt("ctrl+s","…"))} `:""}${l.join(this.p.dim(i))}${f>0?this.p.dim(`${i}${jt("ctrl+s",`+${f} more`)}`):""}`,h=(a>0?2:0)+u.join(i).length+o(f),m="ctrl+s market";return h+2+m.length<=t?`${d} ${this.p.dim(jt("ctrl+s",m))}`:d}sourceOf(t){let e=t&&this.active().find((n)=>n.entries.some((r)=>r.name===t.name));if(!e)return"In no market you added";return e.source===V?"The ttheme catalog":e.shown}paletteState(t){let e=this.picked.has(t.name),n=this.installed.has(t.name),r=e&&n?"Installed":e?"Will install":n?"Will remove":"Not installed",i=e&&n&&this.updates.has(t.name)?this.renew.has(t.name)?" · Will update":" · Update ready":"";return`${r}${i}${this.startup===t.name?" · Default":""}`}detail(t){let e=this.catalog.focusedRow();if(!e||e.kind==="rule"||e.kind==="all")return xS;if(e.kind==="extra")return e.extra.found?this.foundDetail(e.extra.found,t):xS;let n=e.kind==="group"?this.marketNamed(e.name):void 0;if(n)return this.marketDetail(n,t);if(e.kind==="group"||e.kind==="catalog"){let f=this.catalog.inside(e),l=this.sourceOf(e.lead),d=`${Dt(f.length)} · ${f.filter((m)=>this.installed.has(m.name)).length} installed`,h=e.kind==="catalog"?e.group:void 0;return{title:this.p.bold(e.name),lines:[...e.native?Et(e.native,t).map((m)=>this.p.dim(m)):[],...h?[h]:[],...Et(l,t),d],brief:`${h??l} · ${d}`}}let r=e.entry,i=this.sourceOf(r),o=Ta(r),s=`Gate ${Ie.length-o.length}/${Ie.length}`,a=r.pictures?.length??0,c=[...a>0?[`${a} picture${a===1?"":"s"}`]:[],...r.base?[`Base ${r.base}`]:[]].join(" · "),u=ut(r.name)?r.catalog?[r.catalog]:[]:[r.group,...r.native?[this.p.dim(r.native)]:[]];return{title:this.color?this.p.bold(`${Jn(r.cursor)}${r.name}${wt}`):r.name,lines:[...Et(i,t),...u,this.paletteState(r),"",o.length===0?`${s} · passes`:s,...o.flatMap((f)=>Et(f,t-2).map((l,d)=>`${d===0?this.p.bold(A.miss):" "} ${l}`)),...c?["",c]:[]],brief:[i,s,...c?[c]:[],this.paletteState(r)].join(" · ")}}marketDetail(t,e){let n=t.source===V?"The ttheme catalog":t.shown,r=t.entries.filter((f)=>!f.default),i=r.filter((f)=>this.installed.has(f.name)).map((f)=>f.name),o=`${Dt(r.length)} · ${i.length} installed`,s=kt(t.source)?`Auto-update ${this.want.get(t.source)??t.auto?"on":"off"}`:OS(t.status),a=this.busy.get(t.source)??OS(t.status),c=this.failed.get(t.source),u=this.adds.has(t.source)?["Will add"]:this.removes.has(t.source)?[i.length>0?`Will remove — ${i.join(", ")} stay${i.length===1?"s":""} installed`:"Will remove"]:this.want.has(t.source)?[`Auto-update turns ${this.want.get(t.source)?"on":"off"}`]:[];return{title:this.p.bold(t.id),lines:[...Et(n,e),...t.description?Et(t.description,e).map((f)=>this.p.dim(f)):[],o,"",kt(t.source)?`${s} ${this.p.dim("⇧←→")}`:s,...kt(t.source)?[a]:[],...c?Et(c,e).map((f)=>this.p.error(f)):[],...u.length>0?["",...u.flatMap((f)=>Et(f,e))]:[]],brief:[n,s,...u,...kt(t.source)?[a]:[]].join(" · ")}}foundDetail(t,e){if(t.kind==="add"){let i=this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??(this.peeked.has(t.source)?"space adds it":this.live?"Fetching its palettes…":"space fetches its palettes");return{title:this.p.bold(rt(t.source)),lines:["Not added",...this.peekLines(t.source,e),"",...Et(i,e)],brief:[this.peeking(t.source),i].filter(Boolean).join(" · ")}}if(t.kind==="find"){let i=this.field.value.trim(),o=this.searchError??(this.searching?"Searching…":this.repos?`${this.repos.length} found · space searches again`:"space searches GitHub");return{title:this.p.bold("GitHub"),lines:[...Et(`Repositories with the ${rs} topic`,e),...i&&!js(i)?[`Matching "${i}"`]:[],"",...Et(o,e),"",...Et("Type owner/repo or a folder to add one",e)],brief:o}}let r=this.known(t.source)?"Added":this.busy.get(t.source)??this.failed.get(t.source)??this.peekFailed.get(t.source)??"space adds it";return{title:this.p.bold(t.source),lines:[`★ ${t.repo.stargazers_count}`,...Et(t.repo.description??"",e),...this.peekLines(t.source,e),"",...Et(r,e)],brief:[this.peeking(t.source),r].filter(Boolean).join(" · ")}}peekLines(t,e){let n=this.peeked.get(t);if(!n)return[];let r=n.entries.filter((o)=>!o.default),i=`${r.slice(0,MS).map((o)=>pe(o.name)).join(", ")}${r.length>MS?", …":""}`;return["",n.id,...n.description?Et(n.description,e):[],Dt(r.length),...Et(i,e).map((o)=>this.p.dim(o))]}footer(){if(this.help)return{badge:"HELP",keys:[],right:["? esc","close"]};if(this.leaving!==void 0)return{badge:"BROWSE",lead:"Apply your changes before you leave?",keys:[["y","apply"],["n","discard"]],right:["esc","stay"]};if(this.asking)return{badge:"BROWSE",lead:`Update ${this.asking.id} on its own when its author changes it?`,keys:[["y","yes"],["n","no"]],right:["esc","back"]};let t=this.field.value,e=["enter",this.dirty()?"apply":"close"],n=[...t?[["bksp","edit"]]:[],["?","keys"]];return{badge:t?"BROWSE (FILTER)":"BROWSE",keys:[...this.rowKeys(e),...n],right:t?["esc","clear filter"]:["esc","cancel"]}}rowKeys(t){let e=this.catalog,n=e.focusedRow();if(!n)return[t];if(n.kind==="extra"){let s=n.extra.found;if(s?.kind==="find")return[["space","search"],t];if(s?.kind==="add"||s?.kind==="repo"&&!this.known(s.source))return[["space","add"],t];return[t]}let r=e.foldable()&&(n.kind==="group"||n.kind==="catalog")?[n.expanded?["←","close"]:["→","open"]]:[],i=this.focusedMarket();if(i){let s=kt(i.source),a=this.adds.has(i.source)||this.removes.has(i.source);return[...r,["space","pick"],...s?[["⇧←→","auto-update"]]:[],...s&&!this.adds.has(i.source)?[["ctrl+r","update"]]:[],["del",a?"undo":"remove"],...r.length>0?[]:[t]]}if(r.length>0)return[...r,["space","pick"]];let o=n.kind==="palette"&&this.updates.has(n.entry.name)&&this.installed.has(n.entry.name);return[["space","pick"],...o?[["ctrl+r",this.renew.has(n.entry.name)?"keep":"update"]]:[],t]}columns(){return(this.output??process.stdout).columns??100}rows(){return(this.output??process.stdout).rows??24}fitItems(t){let e=Math.max(_l,this.rows()-t);this.maxItems=e,this.catalog.maxItems=e}view(){let t=this.draw().split(`
651
+ `);return Array.from({length:this.rows()},(e,n)=>t[n]??"")}small(t,e,n){return`Needs ${vS}×${n} — now ${t}×${e}
652
+ ${this.p.dim("esc cancels")}`}draw(){let t=this.columns(),e=this.rows();if(t<vS||e<SS)return this.small(t,e,SS);if(this.phase!=="browse")return this.frame(t,e);let n=t>=MC,r=t-1,i=n?Math.min(t-Hp-4,EC):r,o=this.strip(r-1),s=[...e>=xC?[` ${this.heading()}`,...this.searchBox(t-3).map((b)=>` ${b}`)]:[Pt(` ${this.p.dim(A.search)} ${this.searchText()}`,this.p.dim(this.counts()),r)],...o?[` ${o}`]:[]],a=s.length+3+(n?0:1)+(this.hub?1:0);if(e<a+_l)return this.small(t,e,a+_l);this.fitItems(a);let{lines:c,above:u,below:f}=this.catalog.window(),l=c.map((b)=>` ${b}`);while(l.length<this.maxItems)l.push("");let d=[u>0?` ${this.more(-1,`↑ ${u} more`)}`:"",...l,f>0?` ${this.more(1,`↓ ${f} more`)}`:""],h=this.detail(n?Hp:i-2),m=n?d.map((b,$)=>`${tt(b,i)} ${this.p.dim("│")} ${tt($===0?h.title:h.lines[$-1]??"",Hp,!1)}`):[...d.map((b)=>tt(b,i,!1)),tt(` ${this.p.dim(h.brief)}`,i,!1)],p=[...this.hub?[tt(jh(this.hub,this.color),r,!1)]:[],...s.map((b)=>tt(b,r,!1)),...m,` ${this.keyBar(this.footer(),r-1)}`];return(this.help?this.helpBox(p,t,e,p.length-m.length-1):p).join(`
653
+ `)}helpRows(){return[["Move","↑↓ home end pgup pgdn"],["Open","←→ · enter on a market or a series"],["Pick","space · a palette, a series, a market"],["Filter","Any text · bksp · ctrl-u clears"],...this.active().length>=2?[["Scope","ctrl+s · one market, then all"]]:[],["Market","⇧←→ auto-update · ctrl+r updates it"],["","del removes it · again to undo"],["Add","owner/repo, a folder, or a row on GitHub"],["","space adds it · ctrl+r searches again"],["Update","ctrl+r on a palette marked ↑"],["Apply","enter reviews and applies · esc cancels"],...this.hub?[["Screens","tab · shift+tab"]]:[],["Close","? esc"]]}helpBox(t,e,n,r){let i=this.helpRows(),o=Math.min(e-2,58),s=Math.floor((e-o)/2),a=`│${" ".repeat(o-2)}│`,c=[`╭─ Help ${"─".repeat(o-9)}╮`,a,...i.map(([f,l])=>`│${tt(` ${this.p.bold(f.padEnd(10))}${l}`,o-4)} │`),a,`╰${"─".repeat(o-2)}╯`],u=Math.max(0,Math.min(Math.max(r,Math.floor((n-c.length)/2)),n-1-c.length));return t.map((f,l)=>{let d=c[l-u];return d===void 0?f:`${Db(f,s)}${d}`})}}import{existsSync as Yj}from"node:fs";import{existsSync as jc,mkdirSync as Nj,readFileSync as Ug}from"node:fs";import{dirname as Tj}from"node:path";class de extends Error{}import{closeSync as V3,mkdtempSync as Z3,openSync as X3,readSync as Q3,rmSync as qE}from"node:fs";import{homedir as t5,tmpdir as e5}from"node:os";import{join as JE}from"node:path";import{readFileSync as IC}from"node:fs";var vt={pitch:25,cols:22,rows:9,height:13},mo={cols:25,rows:21},Se={cols:10,rows:3,pitch:12,top:4},ve=Se.top+Se.rows+1,RC=1073741824,Up=2147483648,AC=-1073741826,NC=1600,TC=56,HC=4,PS=20,FC=50,IS=[["space","unfolds a set of ×N"],["o","opens the artwork page in a browser"],["c","switches between cutouts and every post"],["a","opens the advanced filters"],["1-9","turn a tag of the tags row on or off"],["ctrl+v","tries on a picture from the clipboard — or drop one on the window"]];function Wp(t){return Math.max(0,Math.floor((t-1)/Se.pitch))}function pr(t,e){let n=e-ve-2;return{perRow:Math.max(1,Math.floor((t-1)/vt.pitch)),rowsVis:Math.max(1,Math.floor(n/vt.height)),height:n}}function Wl(t,e=!0){if(e)return`\x1B_Ga=t,t=f,f=100,i=${t.id},q=2;${Buffer.from(t.path).toString("base64")}\x1B\\`;let n;try{n=IC(t.path).toString("base64")}catch{return}let r=n.match(/.{1,4096}/g)??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t.id},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function CS(t,e){let n=t.crop===void 0?"":`,x=0,y=${t.crop*e.h},w=${t.cols*e.w},h=${t.rows*e.h}`;return`\x1B[${t.row+1};${t.col+1}H\x1B_Ga=p,i=${t.id},p=${t.id}${n},c=${t.cols},r=${t.rows},C=1,z=${t.z},q=2\x1B\\`}function Kp(t){return`\x1B_Ga=d,d=i,i=${t},p=${t},q=2\x1B\\`}function gc(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}var Rt=bt("bold"),W=bt("dim"),hc=bt("ok"),Cn=bt("warn"),fc=Jn,Ul=id,Cp=!1;function Kl(t){return Cp=!0,t.beat}function _s(t){return qn[Kl(t)%qn.length]}function dt(t){return G(t)}function jp(t,e){if(G(t)<=e)return t;let n="";for(let r of t){if(G(n+r)>e)break;n+=r}return n}function hi(t){return Ei(t)}function zp(t){return`${bt("reverse")}${Ei(t)}`}function mi(t,e,n,r){return n?[[`${A.link} `,r,void 0,{kind:"link",url:n}],[t,e,n]]:[[t,e]]}function Lp(t){let e=Lh(t);return e?{kind:"key",key:e}:void 0}function _p(t){return t.reduce((e,[n])=>e+dt(n),0)}function LC(t,e){let n=[],r=e;for(let[i,o,s,a]of t){let c=dt(i);if(c<=r){n.push([i,o,s,a]),r-=c;continue}n.push([`${jp(i,r)}…`,o,s,a]);break}return n}class Bl{parts=[];cols;constructor(t){this.cols=t}put(t,e,n="",r,i){let o=e.replace(/\p{Cc}/gu,"");return this.parts.push({col:t,text:o,sgr:n,...r?{link:r}:{},...i?{spot:i}:{}}),t+dt(o)}run(t,e){let n=t;for(let[r,i,o,s]of e)n=this.put(n,r,i,o,s);return n}mark(t,e,n){this.parts.push({col:t,text:" ".repeat(Math.max(0,e)),sgr:"",spot:n,hidden:!0})}zones(t){return this.parts.flatMap(({col:e,text:n,link:r,spot:i})=>{let o=i??(r?{kind:"link",url:r}:void 0),s=e>=0&&e<this.cols?dt(jp(n,this.cols-e)):0;return o&&s>0?[{row:t,col:e,width:s,height:1,target:o}]:[]})}right(t,e){this.run(t-e.reduce((n,[r])=>n+dt(r),0),e)}center(t,e){this.run(Math.floor((t-e.reduce((n,[r])=>n+dt(r),0))/2),e)}render(){let t="";for(let{col:e,text:n,sgr:r,link:i,hidden:o}of this.parts){if(o||e>=this.cols||e<0)continue;let s=jp(n,this.cols-e);t+=`\x1B[${e+1}G${r}${Vc(s,i)}${r?me:""}`}return t}}function CC(t){return t.replace(/_\([^)]*\)?$/,"")}function jS(t){return[`${t.reduced?"↓":""}${t.width}×${t.height}`,Math.max(t.width,t.height)<NC?Cn:W]}function mc(t,e,n){let r=[...n.keys??[]],i=n.lead,o=n.right,s=()=>{let u=[...i?[_p(i)]:[],...r.map(([l,d])=>dt(l)+1+dt(d))];return(n.badge?dt(n.badge)+4:0)+u.reduce((l,d)=>l+d,0)+3*Math.max(0,u.length-1)+(o?3+dt(o[0])+1+dt(o[1]):0)};while(s()>e)if(r.length>2)r.splice(-2,1);else if(o)o=void 0;else if(r.length>1)r.splice(-2,1);else break;if(i&&s()>e)i=LC(i,Math.max(0,_p(i)-(s()-e)-1));let a=0;if(n.badge)a=t.put(0,` ${n.badge} `,bt("pill"))+2;if([...i?[i]:[],...r.map(([u,f])=>[[u,Rt,void 0,Lp(u)],[` ${f}`,W,void 0,Lp(u)]])].forEach((u,f)=>{a=t.run(a+(f?3:0),u)}),o){let u=Lp(o[0].split(" ")[0]??"");t.right(e,[[o[0],Rt,void 0,u],[` ${o[1]}`,W,void 0,u]])}}function jC(t,e){if(t==="d")return W;if(t==="b")return Rt;if(t==="s")return Ul(e.colors.selection);if(t==="c")return Ul(e.colors.cursor);let n=/^([BK]?)(\d+)$/.exec(t);if(!n)return"";let r=Number(n[2]);if(n[1]==="K")return`${Ei(0)}${Bb(r)}`;return`${n[1]==="B"?Rt:""}${Ei(r)}`}function _C(t,e,n,r,i){let o=Vt.indexOf(Ji(r.scene)),s=Vt.flatMap((c,u)=>[...u?[[" ",""]]:[],[c.name,u===o?Rt+i:W,void 0,{kind:"scene",scene:u}]]),a=s.reduce((c,[u])=>c+dt(u),0)<=n;t?.run(e,a?s:[[Ji(r.scene).name,Rt+i],[` ${o+1}/${Vt.length}`,W]])}function GC(t,e,n,r,i,o,s){let{ansi:a,cursor:c}=o.colors;_C(t[e-2],n,r,o,s);let u=r<ky?3:4;if(r>=56)u=Math.min(7,Math.floor((r+1)/8)-1);let f=n;for(let d=0;d<8;d++)f=(t[e]?.put(f,"▀".repeat(u),fc(a[d]??c)+Ul(a[d+8]??c))??f)+1;let l=e+2;for(let d of Ji(o.scene).lines){let h=ds(d,r);if(!h)continue;if(l>i)return;t[l]?.run(n,h.map(([m,p])=>[m,jC(p,o)])),l++}}function BC(t,e,n){let r=[[]];for(let s of t){let a=r[r.length-1];if(a.length===0||dt([...a,s].join(" "))<=e)a.push(s);else if(r.length<n)r.push([s]);else break}let i=r.reduce((s,a)=>s+a.length,0),o=r[r.length-1];while(i<t.length&&o.length>0&&dt([...o,`+${t.length-i}`].join(" "))>e)o.pop(),i--;if(i<t.length)o.push(`+${t.length-i}`);return r.filter((s)=>s.length>0).map((s)=>s.join(" "))}function RS(t){return t.replace(/^https?:\/\/(?:www\.)?/,"")}function UC(t,e,n){return t.flatMap((r,i)=>[...i>0?[[" ",""]]:[],[r,""],...(e[r]??[]).flatMap((o)=>[[" ",""],...mi(o.kind,"",o.url,n)])])}function WC(t,e,n,r,i){let o=r.info,s=o?.artists??[],a=hi(r.tiles[r.focus]?.siteAnsi??r.siteAnsi);[["Post",o?.page?mi(RS(o.page),"",o.page,a):[["—",W]]],["Source",o?.source?mi(RS(o.source),"",o.link,i):[["—",W]]],["Artist",s.length>0?UC(s,o?.profiles??{},i):[["—",W]]]].forEach(([u,f],l)=>{t[e+l]?.put(n,u,W),t[e+l]?.run(n+12,f)})}function KC(t,e,n,r,i,o){let s=o.info,a=o.tiles[o.focus];if(!s||!a)return;let c=o.shown?.id===a.key?o.shown:void 0,u=n+12,f=Math.max(12,r-12),l=[`${a.width}×${a.height}${s.ext?` ${s.ext.toUpperCase()}`:""}`,...c?[vl(c.bytes)]:[]].join(" · "),d=[s.rating??"—",a.score>0?`★${a.score}`:"",s.posted??""].filter(Boolean).join(" · "),h=(b,$)=>b.length>0?BC(b,f,$).map((k)=>[[k,""]]):[[["—",W]]],m=[["Characters",h(s.characters,2)],["Series",h(s.series,1)],["Tags",h(s.tags,3)],["Rating",[[[d,d==="—"?W:""]]]],["File",[[[l,""],...c?[[" ",""]]:[],...c?_S(c):[]]]],["Uploader",[[s.uploader?[s.uploader,""]:["—",W]]]]],p=e;for(let[b,$]of m){if(p+$.length-1>i)return;t[p]?.put(n,b,W);for(let k of $)t[p]?.run(u,k),p++}}var zC=["Size","Position","Opacity"],DC=[0,3,6];function qC(t,e){let{tune:n,untuned:r}=t;return e===0?n.size!==r.size:e===1?n.at!==r.at:n.opacity!==r.opacity}function JC(t){return t.toFixed(2)}function YC(t,e,n,r,i,o){let s=i.tuning;if(!s)return;let a=i.tiles[i.focus];t[e-3]?.run(n,[[i.palette,Rt+o],[" Background",W],...a?[[" · ",W],...mi(`${a.site} ${a.id}`,W,a.page||void 0,hi(a.siteAnsi))]:[]]);let c=Math.max(8,r-n-21),u=20,f=Math.max(100,s.fill);for(let[l,d]of zC.entries()){let h=e+DC[l],m=s.field===l,p=m?Rt:W;if(m)t[h]?.put(n,"▶",o,void 0,{kind:"field",field:l});t[h]?.put(n+2,d,p,void 0,{kind:"field",field:l});let b;if(l===1){for(let $=1;$<=9;$++){let k=$===i.tune.at,v=t[e+2+Math.floor(($-1)/3)],S=n+12+($-1)%3*3;v?.mark(S-1,3,{kind:"place",at:$}),v?.put(S,k?"■":"·",k?Rt+o:W)}b=qt[i.tune.at-1]??"center"}else{let $;if(l===0){let{size:k}=i.tune;$=k==="fill"?c-1:Math.floor((k-u)*(c-1)/(f-u+1)),b=k==="fill"?"fill":`${k}%`}else $=Math.floor(Math.round(i.tune.opacity*100)*(c-1)/100),b=JC(i.tune.opacity);$=Math.max(0,Math.min(c-1,$)),t[h]?.run(n+12,[["━".repeat($),o],["●",Rt],["─".repeat(c-1-$),W]]),t[h]?.mark(n+12,c,{kind:"track",field:l})}if(t[h]?.right(r-2,[[b,p]]),qC(i,l))t[h]?.put(r-1,"↺",m?Rt+o:W)}}function VC(t,e,n,r,i,o){t[e]?.put(n,`╭${"─".repeat(i-2)}╮`,o);for(let s=e+1;s<e+r-1;s++)t[s]?.put(n,"│",o),t[s]?.put(n+i-1,"│",o);t[e+r-1]?.put(n,`╰${"─".repeat(i-2)}╯`,o)}function Gp(t,e=t.site,n=t.siteAnsi){return[` ${e} `,zp(n)]}function dc(t){return`${Z[Math.floor(t/Cr)]?.name??"local"} ${t%Cr}`}function lc(t,e,n){let r=Z[Math.floor(e/Cr)],i=dc(e),o=t.indexOf(i);if(!r||o===-1)return[[t,n]];return[[t.slice(0,o),n],...mi(i,n,r.pageUrl(e%Cr),hi(r.ansi)),[t.slice(o+i.length),n]].filter(([a])=>a!=="")}function ZC(t,e,n){let r=[{name:"all",moved:!1},...Z].flatMap((o,s)=>{let a=`${o.name}${o.moved?"*":""}`,[c,u]=o.name===n.site?Gp(n,a):[` ${a} `,W],f=[c,u,void 0,{kind:"site",tab:s}];return s?[[" ",""],f]:[f]}),i=r.reduce((o,[s])=>o+dt(s),0)<=e;t.run(0,i?r:[Gp(n)])}function XC(t,e,n,r){if(n.chips.length===0)return;let i=[["tags ",W]],o=dt("tags "),s=n.chips.length;for(let[a,c]of n.chips.entries()){let u=` ${a+1} ${c.name} `;if(o+dt(u)+1>e-2)break;i.push([u,c.on?`${bt("reverse")}${r}`:W,void 0,{kind:"chip",index:a}],[" ",""]),o+=dt(u)+1,s--}if(s>0)i.push([`+${s}`,W]);t.run(0,i)}function QC(t,e,n,r,i){t[ve-1]?.put(0,"─".repeat(n-1),W);let o=t[Se.top-1],s=Wp(n),a=r.held.length>s?Math.max(0,s-1):r.held.length;for(let[c,u]of r.held.slice(0,a).entries()){let f=c*Se.pitch,l=u.up?Rt:"";if(o.run(f+1,u.page?mi(String(u.id),l,u.page,hi(u.ansi)):[["● ",hi(u.ansi)],[String(u.id),l]]),u.up)for(let d=0;d<Se.rows;d++)t[Se.top+d]?.put(f,"▌",i);if(u.thumb)e.push({id:RC+c,path:u.thumb,row:Se.top,col:f+1,cols:Se.cols,rows:Se.rows,z:-1})}if(a<r.held.length)o.put(a*Se.pitch+1,`+${r.held.length-a}`,W)}function t8(t,e,n,r){if(n.editing!==void 0){let c=t.run(0,[["⌕ ",r],[n.editing,""],["█",r]]),u=n.suggest?.length?" ↑↓ pick enter searches":" enter searches";t.put(c,n.editing?u:` A tag, a post URL or an id, or drop a picture or ctrl+v — ${n.tag||"esc leaves"}`,W);return}let i=t.run(0,[["⌕ ",r,void 0,{kind:"query"}],[n.tag||"Nothing yet — / searches, ctrl+v pastes a picture",n.tag?"":W,void 0,{kind:"query"}]]),o=Ni.filter((c)=>!n.block.includes(c)),s=Z.filter((c)=>!n.enabled.includes(c.name)).map((c)=>c.name),a=[n.preset,...n.solo?["solo"]:[],n.order,...n.rating.join("+")==="safe"?[]:[n.rating.join("+")],...o.length>0?[`allows ${o.join("+")}`]:[],...n.narrow.size>0?[`≥${n.narrow.size}px`]:[],...n.narrow.score>0?[`score≥${n.narrow.score}`]:[],...n.narrow.png?["png"]:[],...n.hide.length+n.hideTags.length>0?[`hides ${[...n.hide,...n.hideTags].join("+")}`]:[],...s.length>0?[`all skips ${s.join("+")}`]:[]];if(t.put(i,` ${a.join(" ")}`,W),n.total>0||!n.searching){let c=[[`${n.tiles.length}/${n.checked}`,""]];if(n.checked<n.total)c.push([` of ${n.total}`,W]);t.right(e,c)}}function _S(t){if(t.cut==="on")return[[`Cut out · ${t.clear}% transparent`,hc]];if(t.cut==="off")return[["Opaque · x cuts out",Cn]];if(t.cut==="failed")return[["Opaque · no cut-out",Cn]];return[t.clear>0?[`${t.clear}% transparent`,hc]:["Opaque",Cn]]}function AS(t){return t.site==="all"?"any site":t.site}function Bp(t,e){if(t.installing!==void 0)return lc(`${_s(t)} Installing ${t.palette} ← ${dc(t.installing)}`,t.installing,Cn);if(t.hint)return[[t.hint,hc]];if(t.error)return[[t.error,Cn]];if(t.waiting!==void 0)return[[`${t.slow??t.site} asked to slow down · ${t.waiting}s`,Cn]];if(t.fetching){let{id:n,got:r,size:i}=t.fetching;return lc(`${_s(t)} Fetching ${dc(n)} · ${Sl(r,i)}`,n,Cn)}if(t.cutting!==void 0)return lc(`${_s(t)} Cutting out ${dc(t.cutting)}`,t.cutting,Cn);if(t.preparing!==void 0)return lc(`${_s(t)} Preparing ${dc(t.preparing)}`,t.preparing,Cn);if(e)return[e];if(t.saved)return lc(t.saved.text,t.saved.key,hc);if(t.note)return[[t.note,W]];return}function GS(t){if(t.ranking)return"Ranking previews by palette colors";if(t.stage==="check")return t.preset==="cutouts"?"Checking PNG headers":"Loading previews";return"Fetching posts"}function BS(t,e){return t.ranking?`${e}${t.ranking.done}/${t.ranking.total}`:""}function e8(t,e,n,r,i){let{background:o,cursor:s,selection:a}=r.colors,{ranking:c}=r,u=c?Math.round(n*c.done/c.total):-1,f=Math.max(6,Math.round(n*0.22)),l=Kl(r)%(PS*2)/PS,d=Math.round((n-f)*(0.5-0.5*Math.cos(Math.PI*(l<1?l:2-l)))),h=At(o,s,i),m=At(o,At(a,o,0.15),i),p=Array.from({length:n},($,k)=>{let v=(u>=0?k<u:k>=d&&k<d+f)?h:m;return k===0||k===n-1?At(v,o,0.55):v}),b=0;for(let $=1;$<=n;$++)if($===n||p[$]!==p[b])t?.put(e+b," ".repeat($-b),Ul(p[b])),b=$}function n8(t,e,n,r,i){let{background:o,foreground:s}=i.colors,a=i.loaderFrom===void 0?0:Math.min(1,(Kl(i)-i.loaderFrom)/HC),c=e+(n>=5?Math.floor((n-5)/2):0);t[c]?.center(r,[[GS(i),Rt+fc(At(o,s,a))],[BS(i," "),fc(At(o,At(s,o,0.45),a))]]);let u=Math.min(TC,r-8);if(e8(t[c+(n>=3?2:1)],Math.floor((r-u)/2),u,i,a),n<5)return;t[c+4]?.center(r,i.sites.flatMap(({name:f,arrived:l},d)=>[...d?[[" · ",fc(At(o,s,0.25*a))]]:[],[f,fc(At(o,l?At(s,o,0.2):s,l?a:0.32*a))]]))}function r8(t,e,n,r,i,o){if(i<=r)return;let s=Math.max(1,Math.round(r*r/i)),a=Math.max(0,Math.min(r-s,Math.round(n.scroll*r/i)));for(let c=0;c<r;c++){let u=c>=a&&c<a+s;t[ve+c]?.put(e-1,u?"┃":"│",u?o:W)}}function i8(t,e,n){if(e)return[`${_s(t)} ${GS(t)}${BS(t," · ")}`,W];let r=n.filter((o)=>!o.missing),i=r.filter((o)=>o.thumb).length;return i<r.length?[`${_s(t)} Loading thumbnails · ${i}/${r.length}`,W]:void 0}function o8(t,e,n,r,i,o,s){let{perRow:a,rowsVis:c,height:u}=pr(r,i);t8(t[0],r,o,s),ZC(t[1],r,o),XC(t[2],r,o,s),QC(t,e,r,o,s);let f=t.map((L,N)=>N>=ve&&N<ve+u?L:void 0),l=Math.floor(o.scroll/vt.height),d=Math.floor((o.scroll+u-1)/vt.height),h=[];for(let L=l;L<=d;L++){let N=ve+L*vt.height-o.scroll;for(let _=0;_<a;_++){let D=L*a+_,B=_*vt.pitch,F=o.tiles[D];if(!F)continue;h.push(F);let pt=Math.max(N,ve),Xt=Math.min(N+vt.height,ve+u);if(Xt>pt)n.push({row:pt,col:B,width:vt.pitch-1,height:Xt-pt,target:{kind:"tile",index:D}});let it=D===o.focus;if(it)VC(f,N,B,vt.height,vt.pitch-1,s);let Mr=N+1,Be=Math.max(Mr,ve),gn=Math.min(Mr+vt.rows,ve+u);if(F.thumb&&gn>Be)e.push({id:F.key,path:F.thumb,row:Be,col:B+1,cols:vt.cols,rows:gn-Be,...gn-Be<vt.rows?{crop:Be-Mr}:{},z:-1});let Oo=[...o.installed.includes(F.key)?[["✓ ",hc]]:[],...F.page||o.site!=="all"?mi(String(F.id),it?Rt:"",F.page||void 0,hi(F.siteAnsi)):[["● ",hi(F.siteAnsi)],[String(F.id),it?Rt:""]],[" ",""],jS(F)],Kc=vt.cols-(F.mates.length>0?1:0);if(f[N+10]?.run(B+1,_p(Oo)>Kc?Oo.map(([Uf,Wf,Kf])=>[Uf.replace(/^(\S) $/,"$1"),Wf,Kf]):Oo),F.mates.length>0)f[N+10]?.put(B+vt.cols,"≈",s);f[N+11]?.put(B+1,F.artist?CC(F.artist).slice(0,vt.cols-8):"—",W);let wi=[];if(F.score>0)wi.push([`★${F.score}`,W]);if(F.variants>1)wi.push([` ×${F.variants}`,s]);if(wi.length>0)f[N+11]?.right(B+vt.cols+1,wi)}}let m=Math.ceil(o.tiles.length/a)*vt.height;r8(t,r,o,u,m,s);let p=Math.max(ve,ve+m-o.scroll),b=ve+u-p,$=o.searching&&b>=2;if($)n8(f,p,b,r-1,o);let k=o.searching&&o.tiles.length===0;if(k&&!o.error){let[L,N]=IS[Math.floor(Kl(o)/FC)%IS.length];t[i-2]?.run(0,[["Tip ",W],[L,Rt],[` ${N}`,W]])}let v=o.top*a,S=o.tiles.length-(o.top+c)*a,x=[...v>0?[`↑ ${v} above`]:[],...S>0?[`↓ ${S} more`]:[]];if(x.length>0)t[i-2]?.put(0,x.join(" "),W);if(!o.searching&&o.tiles.length===0&&!o.error&&o.tag)t[ve+1]?.put(0,o.preset==="cutouts"?`No transparent cutouts of ${o.tag} on ${AS(o)} — c searches every post, tab tries ${o.nextSite}`:`No posts of ${o.tag} on ${AS(o)} — tab tries ${o.nextSite}`,W);let M=i8(o,$,h),I=Bp(o,M);return mc(t[i-1],r,{badge:"IMAGE SEARCH",lead:I,keys:k&&I?.[0]===M?[]:[["←↑↓→","move"],["enter","try on"],["tab","site"],["ctrl+v","picture"],["s","settings"],["/","search"],["?","keys"]],right:["esc","back"]}),$}function s8(t,e,n,r,i,o){let s=i.tiles[i.focus];if(!s)return;let a=i.shown?.id===s.key?i.shown:void 0,c=[Gp(i,s.site,s.siteAnsi),[" ",""],...mi(String(s.id),Rt,s.page||void 0,hi(s.siteAnsi)),[" ",""],jS(s)];if(s.score>0)c.push([` · ★${s.score}`,W]);if(a)c.push([` · ${vl(a.bytes)}`,W]);if(a){if(c.push([" ",""],..._S(a)),i.coloring==="original")c.push([" · own colors",W])}if(t[0]?.run(0,c),s.mates.length>0)t[0]?.right(n,[["≈ ",o],[s.mates.join(" "),W]]);if(WC(t,1,2,i,o),i.tuning)YC(t,8,2,2+Math.min(n-4,60),i,o);else if(i.details)KC(t,5,2,Math.min(n-4,Math.max(48,Math.floor(n*0.55))),r-2,i);else GC(t,7,2,n-4,r-2,i,o);if(i.shown)e.push({id:Up+i.shown.id,path:i.shown.path,row:0,col:0,cols:n,rows:r,z:AC});if(i.tuning){mc(t[r-1],n,{badge:"IMAGE EDIT",lead:Bp(i),keys:[["↑↓","field"],["←→","step"],["=","reset"],["+","reset all"],i.tuning.field===1?["1-9","place"]:["⇧←→","×10"],["c","colors"],["enter","keep"]],right:["esc","undo"]});return}let u=Bp(i);mc(t[r-1],n,{badge:"IMAGE PREVIEW",lead:u,keys:i.installing===void 0?[["←→","browse"],["enter","install"],["t","tune"],["c","colors"],["i","details"],...i.details?[]:[["⇧←→","example"]],...i.shown?.cut==="on"||i.shown?.cut==="off"?[["x","cut out"]]:[],["?","keys"]]:[],right:i.installing===void 0?["esc","grid"]:void 0})}var a8=[["Field","↑↓ size, position, opacity"],["Step","←→ · ⇧←→ ×10"],["Place","1-9 the nine positions"],["Reset","= this field back to its default · + every field"],["Colors","c the palette's tone or its own colors, opacity back to its default"],["Keep","enter back to try, installed with the picture"],["Undo","esc"],["Close","? esc"]],c8={grid:[["Move","←↑↓→ j k home end pgup pgdn"],["Try on","enter"],["Site",`tab shift+tab all, ${Z.map((t)=>t.name).join(", ")}`],["Posts","c cutouts or every post"],["Search","/ a tag, a post URL or an id"],["Tags","1-9 turn a tag of the tags row on or off — the palette's own, then danbooru's related characters"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window or paste its link"],["Unfold","space a set of ×N"],["Open","o the artwork page in a browser · O the post page"],["Settings","s rating, block, posts, solo, order, sets, remove bg"],["Advanced","a or Advanced › in settings min score, min size, sites, hide, hide tags, PNG only"],["Back","esc returns to preview"],["Close","? esc"]],try:[["Browse","←→"],["Install","enter"],["Tune","t size, position and opacity, installed with the picture"],["Colors","c the palette's tone or its own colors, installed with the picture"],["Details","i characters, series, tags, rating and file, under Post, Source and Artist"],["Example",`⇧←→ ${Vt.map((t)=>t.name.toLowerCase()).join(", ")}`],["Cut out","x the background off or on, on an opaque picture"],["Open","o the artwork page in a browser · O the post page"],["Your own","ctrl+v or v a picture from the clipboard · drop one on the window"],["Grid","esc"],["Close","? esc"]]},Dp=6,u8=24;function pc(t){return[...t.settings.flatMap((e,n)=>Boolean(e.advanced)===t.advanced?[n]:[]),t.settings.length]}function l8(t){return t.replace(/^[A-Z](?=[a-z])/,(e)=>e.toLowerCase())}function NS(t){let e=t.settings.filter((n)=>Boolean(n.advanced)!==t.advanced).map((n)=>l8(n.label));return`${t.advanced?"Back to":"More filters:"} ${e.join(", ")} — enter opens the page, or a from any row`}function US(t,e,n){let r=t.indexOf(e);if(r!==-1)return t[(r+n+t.length)%t.length];let i=Number(e)||0;return(n>0?t.find((s)=>(Number(s)||0)>i):[...t].reverse().find((s)=>(Number(s)||0)<i))??t[n>0?0:t.length-1]}function ho(t,e){let n=[],r="";for(let i of t.split(" "))if(r&&dt(r)+1+dt(i)>e)n.push(r),r=i;else r=r?`${r} ${i}`:i;return r?[...n,r]:n}function f8(t){if(t.entry!=="number"||t.choices.includes(t.value))return t.choices;let e=t.choices.findIndex((n)=>(Number(n)||0)>Number(t.value));return e===-1?[...t.choices,t.value]:[...t.choices.slice(0,e),t.value,...t.choices.slice(e)]}function d8(t,e,n,r){let i=zp(r),o=e&&n!==void 0;if(t.entry==="text")return[{text:` ${o?`${n}█`:t.value||"none"} `,sgr:o||e&&t.value?i:t.value?"":W}];let s=o?[]:t.value.split(" "),a=(o?t.choices:f8(t)).map((c,u)=>{let f=s.includes(c),l=t.multi&&e&&u===t.cursor?bt("under"):"";return{text:t.multi?` ${f?"[x]":"[ ]"} ${c} `:` ${c} `,sgr:f?e?`${l}${i}`:"":l?`${l}${W}`:W,choice:c}});return o?[...a,{text:` ${n}█ `,sgr:i}]:a}function TS(t){if(t.entry==="text")return[{text:" ".repeat(u8),sgr:""}];let e=t.choices.map((n)=>({text:t.multi?` [x] ${n} `:` ${n} `,sgr:""}));return t.entry==="number"?[...e,{text:` ${"0".repeat(Dp)}█ `,sgr:""}]:e}function h8(t){return t.reduce((e,n)=>e+dt(n.text)+1,0)-1}function HS(t,e){let n=[[]],r=0;for(let i of t){let o=dt(i.text)>e?{...i,text:` …${Array.from(i.text).slice(-(e-2)).join("")}`}:i;if(r>0&&r+dt(o.text)>e)n.push([]),r=0;n[n.length-1]?.push(o),r+=dt(o.text)+1}return n}function FS(t){if(t.multi&&t.choices.every((e)=>t.default.split(" ").includes(e)))return"Default all";return`Default ${t.default&&t.default!==t.multi?.none?t.default:"none"}`}function LS(t){if(!t.tag)return"";if(!t.counts)return`${t.tag}: counting…`;let e=t.counts.map(({site:n,count:r})=>`${n} ${r===void 0?"no count":r.toLocaleString("en-US")}`);return`${t.tag}: ${e.join(" · ")}`}function m8(t,e){let n=t.advanced?"basic":"advanced";if(!e)return{keys:[["↑↓","setting"],["enter",n],["s","save"]],right:["esc","undo"]};if(t.typing!==void 0)return{keys:[["⌫","erase"],["enter","done"]],right:["esc","cancel"]};if(e.entry)return{keys:[["↑↓","setting"],...e.entry==="number"?[["←→","step"]]:[],["a",n],["enter","type"],["s","save"]],right:["esc","undo"]};return{keys:[["↑↓","setting"],["←→","value"],["a",n],...e.multi?[["space","toggle"]]:[],["enter","save"]],right:["esc","undo"]}}function p8(t,e,n,r,i){let o=r.panel??0,s=r.settings.length,c=6+Math.max(...r.settings.map((F)=>dt(F.label))),u=Math.max(...r.settings.map((F)=>dt(FS(F)))),f=c+Math.max(...r.settings.map((F)=>h8(TS(F))))+u+5,l=Math.min(e-2,Math.max(48,f)),d=l-c-u-5,h=l-7,m=[!1,!0].map((F)=>({advanced:F,rows:pc({settings:r.settings,advanced:F}).slice(0,-1)})),p=r.settings.map((F)=>HS(TS(F),d).length),b=Math.max(...m.map((F)=>F.rows.reduce((pt,Xt)=>pt+p[Xt],0))),$=Math.max(...m.map((F)=>ho(NS({settings:r.settings,advanced:F.advanced}),h).length),...r.settings.map((F)=>ho(F.about,h).length)),k=`${r.tag}: ${Z.map((F)=>`${F.name} 0,000,000`).join(" · ")}`,v=r.tag?Math.max(ho(k,h).length,ho(LS(r),h).length):0,S=b+$+v+8,x=Math.floor((e-l)/2),M=Math.max(1,Math.floor((n-1-S)/2)),I=zp(r.siteAnsi);t[M]?.put(x,`╭─ Settings ${"─".repeat(Math.max(0,l-13))}╮`);for(let F=M+1;F<M+S-1;F++)t[F]?.put(x,`│${" ".repeat(l-2)}│`);let L=M+2;for(let F of pc(r).slice(0,-1)){let pt=r.settings[F],Xt=F===o;if(Xt)t[L]?.put(x+2,"▶",i);if(t[L]?.mark(x+2,c-3,{kind:"setting",index:F}),t[L]?.put(x+4,pt.label,Xt?Rt:""),pt.value!==pt.default)t[L]?.right(x+l-3,[[FS(pt),W]]);HS(d8(pt,Xt,r.typing,r.siteAnsi),d).forEach((it,Mr)=>{let Be=x+c;for(let gn of it)Be=(t[L+Mr]?.put(Be,gn.text,gn.sgr,void 0,{kind:"choice",index:F,choice:gn.choice})??Be)+1}),L+=p[F]}let N=m.find((F)=>F.advanced!==r.advanced)?.rows??[],_=t[M+3+b];if(_){if(o===s)_.put(x+2,"▶",i);let F=_.put(x+3,r.advanced?" ‹ Basic ":" Advanced › ",o===s?I:Rt,void 0,{kind:"setting",index:s});if(N.some((pt)=>r.settings[pt]?.value!==r.settings[pt]?.default))_.put(F+1,"•",W)}t[M+5+b]?.put(x+2,"─".repeat(l-4),W),ho(r.settings[o]?.about??NS(r),h).forEach((F,pt)=>{t[M+6+b+pt]?.put(x+4,F)}),ho(LS(r),h).forEach((F,pt)=>{t[M+6+b+$+pt]?.put(x+4,F,W)}),t[M+S-1]?.put(x,`╰${"─".repeat(l-2)}╯`);let{keys:D,right:B}=m8(r,r.settings[o]);mc(t[n-1],e,{keys:D,right:B})}function g8(t,e,n,r){let i=r.tuning?a8:c8[r.mode],o=Math.min(e-2,Math.max(50,...i.map(([,l])=>dt(l)+16))),s=i.map(([l,d])=>({label:l,parts:ho(d,o-16)})),a=s.reduce((l,{parts:d})=>l+d.length,0)+4,c=Math.floor((e-o)/2),u=Math.max(2,Math.floor((n-a)/2));t[u]?.put(c,`╭─ Help ${"─".repeat(o-9)}╮`);for(let l=u+1;l<u+a-1;l++)t[l]?.put(c,`│${" ".repeat(o-2)}│`);let f=u+2;for(let{label:l,parts:d}of s){t[f]?.put(c+3,l,Rt);for(let h of d)t[f]?.put(c+13,h),f++}t[u+a-1]?.put(c,`╰${"─".repeat(o-2)}╯`),mc(t[n-1],e,{badge:"HELP",right:["? esc","close"]})}function b8(t,e,n){let r=e.suggest??[],i=r.map((a)=>a.alias??(a.count>0?String(a.count):a.palette??"0")),o=Math.max(...r.map((a)=>dt(a.value))),s=Math.max(7,...i.map(dt));r.forEach((a,c)=>{let u=c===e.pick,f=t[1+c];f?.run(0,[[u?"▸ ":" ",n,void 0,{kind:"suggest",index:c}],[a.value,u?Rt+n:"",void 0,{kind:"suggest",index:c}]]),f?.right(2+o+2+s,[[i[c],W]])})}function Gl(t,e=[]){return[...e,...t.flatMap((n,r)=>n.zones(r))]}function qp(t,e,n){let r=Array.from({length:n},()=>new Bl(e)),i=[],o=[],s=bt("accent");if(Cp=!1,e<mo.cols||n<mo.rows)return r[0]?.put(0,"ttheme find",Rt+s),r[1]?.put(0,`Needs ${mo.cols}×${mo.rows} — now ${e}×${n}`),r[2]?.put(0,"esc quits",W,void 0,{kind:"key",key:"esc"}),{lines:r.map((c)=>c.render()),images:i,zones:Gl(r),loader:!1,tick:!1};let a=!1;if(t.mode==="try")s8(r,i,e,n,t,s);else a=o8(r,i,o,e,n,t,s);if(t.mode==="grid"&&t.editing!==void 0&&t.suggest?.length){for(let c=1;c<n-1;c++)r[c]=new Bl(e);return b8(r,t,s),{lines:r.map((c)=>c.render()),images:[],zones:Gl(r),loader:!1,tick:!1}}if(t.help||t.panel!==void 0){let c=t.mode==="try"?i:[];for(let u=0;u<n;u++)r[u]=new Bl(e);if(t.help)g8(r,e,n,t);else p8(r,e,n,t,s);return{lines:r.map((u)=>u.render()),images:c,zones:Gl(r),loader:!1,tick:!1}}return{lines:r.map((c)=>c.render()),images:i,zones:Gl(r,o),loader:a,tick:Cp}}var w8=130,$8=38,k8=96,y8=28,wc=[{id:"shell",scenes:["Diff","Logs","Shell"],name:"zsh",tail:!0},{id:"code",scenes:["Editor"],name:"nvim",tail:!1},{id:"monitor",scenes:["Top"],name:"htop",tail:!1}],v8={Shell:[0,1,2,3,4,6,7,9,10,12,14],Diff:[0,1,3,4,6,7,8,9,10,15],Logs:[0,1,2,3,4,5,6,7,8,9,10]},WS=(t)=>Array.from({length:8},(e,n)=>`«K${t+n}» «»`).join(" "),S8=["«2»❯ «»colortest",`«d»0-7 ${WS(0)}`,`«d»8-15 ${WS(8)}`],KS=2;function E8(t){let e=wc.length;return wc[(t%e+e)%e]}function qS(){return wc.map((t)=>t.name)}function $c(t,e,n){let r=t>=w8&&e>=$8?"full":t>=k8&&e>=y8?"tabs":void 0;if(!r)return;let i=r==="full"?t>=140?47:38:37,o=t-i-1,s=i+1+KS,a=i+o-KS,c=3,u=e-3,f={col:s,row:c,cols:a-s+1,rows:u-c+1},l={col:s+1,row:c+3,cols:f.cols-2,rows:u-c-3},d=[{row:c,col:s,length:f.cols,down:!1},{row:c+2,col:s,length:f.cols,down:!1},{row:u,col:s,length:f.cols,down:!1},{row:c,col:s,length:u-c+1,down:!0},{row:c,col:a,length:u-c+1,down:!0}],h=E8(n);return{tier:r,side:i,width:o,frame:f,title:{col:l.col,row:c+1,cols:l.cols,rows:1},inner:l,rules:d,tiles:[{id:h.id,name:h.name,col:l.col,row:l.row,width:l.cols,rows:l.rows}]}}var bc="«2»▎ ",zS="«3»▎ ",M8="«1»▁ ",x8=[["","«5»import«» { «4»readFile«» } «5»from «2»'node:fs/promises'"],["","«5»import«» { «5»type «6»Hex«», «4»contrast«» } «5»from «2»'./color.ts'"],["",""],["","«8»/** A palette read from disk and checked against the gate. */"],[bc,"«5»export interface «6»Palette «»{"],[bc," name: «6»string"],[bc," ansi: «6»Hex«»[]"],[bc," ratio?: «6»number"],[bc,"}"],["",""],["","«5»const «»SIXTEEN = «3»16"],["","«5»const «»FLOOR = «3»4.5 «8»// WCAG AA for body text"],["",""],["","«5»export async function «4»load«»(path: «6»string«»): «6»Promise«»<«6»Palette«»> {"],[zS," «5»const «»text = «5»await «4»readFile«»(path, «2»'utf8'«»)"],[zS," «5»const «»colors = «s»parse(text)«».colors ?? {}"],[""," «5»if «»(colors.ansi.length !== «K3»SIXTEEN«») { «1»● needs 16 ANSI colors"],[""," «5»throw new «6»Error«»(«2»'expected sixteen colors, got '«» + colors.ansi.length)"],[""," }"],[M8," «5»const «»ratio = «4»contrast«»(colors.ansi[«3»0«»], colors.ansi[«3»7«»]) «3»● ratio is read once"],[""," «5»return «»{ name: path, ...colors, ratio: «c»r«»atio }"],["","}"],["",""],["","«5»export function «4»passes«»(palette: «6»Palette«»): «6»boolean «»{"],[""," «5»return «»(palette.ratio ?? «3»0«») >= FLOOR «8»// TODO: check the bright pairs"],["","}"]],O8=21;function P8(){return["«K4» theme.ts «s» scenes.ts «s» contrast.ts ",...x8.map(([t,e],n)=>{let r=String(n+1).padStart(3);return`${n+1===O8?`«b»${r}`:`«d»${r}`} ${t||"«» "}«»${e}`})]}function Jp(t,e,n,r){let i=Math.max(1,r-t.length-2-n.length),o=0,s=`«6»${t}«b»[`;for(let[a,c]of e){let u=Math.min(i-o,Math.round(c*i));s+=`«${a}»${"|".repeat(u)}`,o+=u}return`${s}«»${" ".repeat(i-o)}${n}«b»]`}var I8=[[0.31,0.07,0],[0.22,0.02,0.03],[0.04,0.01,0],[0.52,0.12,0],[0.1,0.02,0],[0.41,0.11,0],[0.02,0,0],[0.15,0.03,0.04]],R8=["«s» 4127 kec 24 0 412G 612M «s»R 38.2 3.7 3:12.44 node dev.js"," 2210 kec 31 0 411G 1.2G «2»R«» 12.0 7.5 1:02.10 «d»/Applications/«b»Ghostty"," 3301 kec 31 0 409G 12M S 4.4 0.1 0:05.61 «b»zsh"," 3302 kec 31 0 409G 9.8M S 0.0 0.1 0:00.42 «d»├─ «b»nvim «»src/theme.ts"," 3310 kec 31 0 410G 88M S 1.2 0.5 0:03.18 «d»│ └─ «b»tsserver"," 3402 kec 24 0 409G 21M «2»R«» 0.6 0.1 0:01.02 «d»└─ «b»htop"," 501 kec 31 «4»10«» 409G 34M S 0.3 0.2 0:02.77 «b»bun «»test --watch"," 1180 kec 31 0 409G 72M «1»D«» 0.0 0.4 0:00.91 «b»rsync «»-a ~/Pictures backup:"," 812 «d»root«» «1» 4 -20«» 410G 1.5G S 3.1 9.4 0:44.02 «d»kernel_task"," 167 «d»root«» 31 0 411G 402M S 0.9 2.5 0:12.80 «d»WindowServer"," 344 «d»_mdns«» 31 0 408G 5.1M S 0.0 0.0 0:00.33 «d»mDNSResponder"],A8=["Help","Setup","Search","Filter","Tree","SortBy","Nice -","Nice +","Kill","Quit"];function N8(t,e,n){return`«${t}»${e}${" ".repeat(Math.max(0,n-G(e)))}`}function T8(t){let e=t-2,n=Math.floor((e-2)/2),r=(i)=>{let[o,s,a]=I8[i],c=`${((o+s+a)*100).toFixed(1)}%`;return Jp(String(i).padStart(3),[["2",o],["1",s],["4",a]],c,n)};return[...[0,1,2,3].map((i)=>`${r(i)} ${r(i+4)}`),`${Jp("Mem",[["2",0.45],["4",0.1],["3",0.07]],"9.84G/16.0G",n)} «6»Tasks: «b»214«», 1093 thr; «B2»4«» running`,`${Jp("Swp",[["1",0.15]],"0.31G/2.00G",n)} «6»Load average: «b»2.14 «»1.87 «d»1.52`,`${" ".repeat(n)} «6»Uptime: «b»3 days, 04:12:55`,"",N8("K2"," PID USER PRI NI VIRT RES S CPU% MEM% TIME+ Command",e),...R8.map((i)=>i.startsWith("«s»")?`${i}${" ".repeat(Math.max(0,e-G(i.replace(/«[^»]*»/g,""))))}`:i)]}function H8(t){let e=t-2,n="",r=0;return A8.forEach((i,o)=>{let s=`F${o+1}`,a=i.padEnd(6);if(r+s.length+a.length<=e)n+=`«»${s}«K6»${a}`,r+=s.length+a.length}),`${n}«K6»${" ".repeat(Math.max(0,e-r))}`}function DS(t,e,n){if(t==="Editor")return P8();if(t==="Top")return T8(n);let r=Vt.find((s)=>s.name===t)?.lines??[],i=e?v8[t]:void 0,o=i?i.map((s)=>r[s]??""):r;return t==="Shell"?[...o.slice(0,-1),...S8,...o.slice(-1)]:o}function zl(t,e){let n=[];for(let r of t){let i=ds(r,e);if(!i)continue;let o=0;n.push(i.map(([s,a])=>{let c={text:s,role:a,col:o};return o+=G(s),c}))}return n}function F8(t){let r=t-2-G("«K4» NORMAL «s» main src/theme.ts [+] ".replace(/«[^»]*»/g,""))-G("«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% ".replace(/«[^»]*»/g,""));return`${"«K4» NORMAL «s» main src/theme.ts [+] "}${" ".repeat(Math.max(0,r))}${"«K1» 1 «K3» 1 «s» utf-8 typescript 21:28 «K4» 80% "}`}function L8(t,e){if(t.id==="code")return[F8(e),'«d»"src/theme.ts" 26L, 912B written'];return t.id==="monitor"?[H8(e)]:[]}function C8(t,e,n){let r=zl(L8(t,e),e),i=Math.max(0,n-r.length),o=[];for(let a of[...t.scenes].reverse()){let c=zl(DS(a,!1,e),e),u=zl(DS(a,!0,e),e),f=[c,u].find((l)=>o.length+l.length<=i);if(!f){if(o.length===0)o=t.tail?u.slice(u.length-i):u.slice(0,i);break}o=[...f,...o]}if(r.length===0)return o;let s=zl(Array.from({length:i-o.length},()=>t.id==="code"?"«4»~":""),e);return[...o,...s,...r]}function kc(t){let e=wc.find((r)=>r.id===t.id),n=t.width-2;return e?C8(e,t.width,t.rows).map((r)=>r.filter((i)=>i.col<n)):[]}function Yp(t,e){let{text:n,ground:r}=YS(t);return n===e||r===e}function JS(t,e){let n=t.inner;return wc.map((r)=>({name:r.name,count:kc({id:r.id,name:r.name,col:n.col,row:n.row,width:n.cols,rows:n.rows}).flat().filter((i)=>Yp(i.role,e)).length}))}function YS(t){if(t==="s")return{text:1,ground:3};if(t==="c")return{text:1,ground:2};let e=/^([BK]?)(\d+)$/.exec(t);if(!e)return{text:1,ground:0};let n=4+Number(e[2]);return e[1]==="K"?{text:4,ground:n}:{text:n,ground:0}}function Vp(t,e){if(e>=4){let n=/^([BK]?)(\d+)$/.exec(t);return n!==null&&Number(n[2])===e-4}return e===3&&t==="s"||e===2&&t==="c"}function Dl(t){let e=[];for(let n of t.tiles)kc(n).forEach((r,i)=>{r.forEach((o,s)=>{e.push({spot:{pane:n.id,line:i,run:s},col:o.col,text:o.text,role:o.role})})});return e}function Zp(t,e){return t.pane===e.pane&&t.line===e.line&&t.run===e.run}function VS(t,e){let n=Dl(t);return(n.find((r)=>Vp(r.role,e))??n[0])?.spot}function ql(t,e){return e&&Dl(t).find((n)=>Zp(n.spot,e))?.spot}function ZS(t,e,n){let r=Dl(t);if(r.length===0)return;let i=e?r.findIndex((d)=>Zp(d.spot,e)):-1;if(i<0)return r[0]?.spot;let o=r[i];if(n==="left"||n==="right")return r[(i+(n==="left"?r.length-1:1))%r.length]?.spot;if(n==="next"||n==="previous"){let d=t.tiles.map((p)=>p.id),h=d.indexOf(o.spot.pane),m=d[(h+(n==="next"?1:d.length-1))%d.length];return r.find((p)=>p.spot.pane===m)?.spot}let s=n==="up"?-1:1,a=r.filter((d)=>d.spot.pane===o.spot.pane),c=[...new Set(a.map((d)=>d.spot.line))],u=c[c.indexOf(o.spot.line)+s];if(u===void 0){let d=t.tiles.map((k)=>k.id),h=d.indexOf(o.spot.pane)+s,m=d[(h+d.length)%d.length],p=r.filter((k)=>k.spot.pane===m),b=s<0?p.at(-1)?.spot.line??0:p[0]?.spot.line??0,$=p.filter((k)=>k.spot.line===b);return($.find((k)=>k.col>=o.col)??$.at(-1))?.spot}let f=a.filter((d)=>d.spot.line===u);return(f.find((d)=>d.col<=o.col&&d.col+G(d.text)>o.col)??f.find((d)=>d.col>=o.col)??f.at(-1))?.spot}function XS(t,e){let n=Dl(t).find((r)=>Zp(r.spot,e));return n?YS(n.role):void 0}var j8={lr:"─",du:"│",dr:"╭",dl:"╮",ru:"╰",lu:"╯",dlr:"┬",lru:"┴",dru:"├",dlu:"┤",dlru:"┼"};function QS(t){let e=new Map,n=(i,o,s)=>{let a=e.get(i)??new Map;e.set(i,a);let c=a.get(o)??new Set;a.set(o,c),c.add(s)};for(let i of t)for(let o=0;o<i.length;o++){let s=i.down?i.row+o:i.row,a=i.down?i.col:i.col+o;if(o>0)n(s,a,i.down?"u":"l");if(o<i.length-1)n(s,a,i.down?"d":"r")}let r=new Map;for(let[i,o]of e){let s=new Map;for(let[a,c]of o){let u=[...c].sort().join("");s.set(a,j8[u]??(c.has("l")||c.has("r")?"─":"│"))}r.set(i,s)}return r}import{execFile as _8}from"node:child_process";import{createHash as rE}from"node:crypto";import{existsSync as G8,mkdtempSync as B8,readFileSync as Zl,rmSync as U8,statSync as iE,writeFileSync as oE}from"node:fs";import{homedir as W8,tmpdir as K8}from"node:os";import{join as Jl}from"node:path";import{fileURLToPath as z8}from"node:url";import{promisify as D8}from"node:util";var jn=D8(_8),Yl=67108864,q8=4096,tg=["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/heic"],J8=["text/uri-list","text/plain;charset=utf-8","text/plain"],Xp=[...tg,"text/uri-list","text/plain"];function Y8(t){try{return iE(t).isFile()}catch{return!1}}function V8(t){let e=[],n="",r="",i=!1;for(let o=0;o<t.length;o++){let s=t[o];if(r==="'")if(s==="'")r="";else n+=s;else if(r==='"')if(s==='"')r="";else if(s==="\\"&&'"\\$`'.includes(t[o+1]??""))n+=t[++o];else n+=s;else if(s==="\\"&&o+1<t.length)n+=t[++o],i=!0;else if(s==="'"||s==='"')r=s,i=!0;else if(/\s/.test(s)){if(i)e.push(n);n="",i=!1}else n+=s,i=!0}if(i)e.push(n);return e}function tE(t){if(/^file:\/\//i.test(t))try{return z8(t)}catch{return}if(t.startsWith("~/"))return Jl(W8(),t.slice(2));return t.startsWith("/")?t:void 0}function Gs(t,e=Y8){let n=[];for(let r of t.replace(/\r\n?/g,`
652
654
  `).split(`
653
- `)){let i=jE(r.trim());if(i&&e(i)){n.push(i);continue}for(let o of p8(r)){if(/^https?:\/\/\S+$/i.test(o)){n.push(o);continue}let s=jE(o);if(s&&e(s))n.push(s)}}return n}function _E(t){let e=Oi(t)?vn(t):kd(t);if(!e)return;return{ext:Oi(t)?"png":"jpg",width:e.width,height:e.height}}async function Bl(t,e){let n=_E(t);if(n&&n.width*n.height<=Re)return{bytes:t,...n,source:e};if(process.platform!=="darwin")throw Error(n?`${n.width}×${n.height} is over ${Re/1e6} megapixels`:"only PNG and JPEG pictures work here");let r=s8(_l(u8(),"ttheme-attach-"));try{let i=_l(r,"in"),o=_l(r,"out.png");WE(i,t);let s=!n||n.width*n.height>Re?["--resampleHeightWidthMax",String(d8)]:[];await Fn("sips",["-s","format","png",...s,i,"--out",o]).catch(()=>{throw Error("that is not a picture macOS can read")});let a=new Uint8Array(Ul(o)),c=_E(a);if(!c)throw Error("that is not a picture macOS can read");return{bytes:a,...c,source:e}}finally{a8(r,{recursive:!0,force:!0})}}async function Dp(t,e){if(/^https?:\/\//i.test(t)){let n=await fetch(t,{headers:{"User-Agent":Od},signal:e});if(!n.ok)throw Error(`${new URL(t).host} answered ${n.status}`);if(Number(n.headers.get("content-length")??0)>Gl)throw Error("that picture is over 64 MB");let r=new Uint8Array(await n.arrayBuffer());if(/^text\/html/i.test(n.headers.get("content-type")??""))throw Error(`${new URL(t).host} sent a web page, not a picture — copy the image address instead`);return Bl(r,t)}if(UE(t).size>Gl)throw Error("that picture is over 64 MB");return Bl(new Uint8Array(Ul(t)),t)}var KE=new Map,mr={key:"local",name:"local",origin:"file://",moved:!1,cutouts:"",best:"",tagBudget:0,ors:!1,vouched:!0,scored:!1,ansi:7,ratings:{safe:new Set,questionable:new Set,explicit:new Set},rate:()=>"",narrow:()=>[],postsUrl:()=>"",countUrl:()=>"",postUrl:()=>"",pageUrl:(t)=>KE.get(t)??"",parse:()=>[],count:()=>0};function zE(t){if(/^https?:\/\//i.test(t))return"";return t.split("/").pop()??t}function qE(t,e){KE.set(t,e)}function DE(t){return Number.parseInt(BE("sha1").update(t).digest("hex").slice(0,8),16)%Cr}var g8=`ObjC.import('AppKit')
655
+ `)){let i=tE(r.trim());if(i&&e(i)){n.push(i);continue}for(let o of V8(r)){if(/^https?:\/\/\S+$/i.test(o)){n.push(o);continue}let s=tE(o);if(s&&e(s))n.push(s)}}return n}function eE(t){let e=Ii(t)?yn(t):Pd(t);if(!e)return;return{ext:Ii(t)?"png":"jpg",width:e.width,height:e.height}}async function Vl(t,e){let n=eE(t);if(n&&n.width*n.height<=Re)return{bytes:t,...n,source:e};if(process.platform!=="darwin")throw Error(n?`${n.width}×${n.height} is over ${Re/1e6} megapixels`:"only PNG and JPEG pictures work here");let r=B8(Jl(K8(),"ttheme-attach-"));try{let i=Jl(r,"in"),o=Jl(r,"out.png");oE(i,t);let s=!n||n.width*n.height>Re?["--resampleHeightWidthMax",String(q8)]:[];await jn("sips",["-s","format","png",...s,i,"--out",o]).catch(()=>{throw Error("that is not a picture macOS can read")});let a=new Uint8Array(Zl(o)),c=eE(a);if(!c)throw Error("that is not a picture macOS can read");return{bytes:a,...c,source:e}}finally{U8(r,{recursive:!0,force:!0})}}async function eg(t,e){if(/^https?:\/\//i.test(t)){let n=await fetch(t,{headers:{"User-Agent":Fd},signal:e});if(!n.ok)throw Error(`${new URL(t).host} answered ${n.status}`);if(Number(n.headers.get("content-length")??0)>Yl)throw Error("that picture is over 64 MB");let r=new Uint8Array(await n.arrayBuffer());if(/^text\/html/i.test(n.headers.get("content-type")??""))throw Error(`${new URL(t).host} sent a web page, not a picture — copy the image address instead`);return Vl(r,t)}if(iE(t).size>Yl)throw Error("that picture is over 64 MB");return Vl(new Uint8Array(Zl(t)),t)}var sE=new Map,_n={key:"local",name:"local",origin:"file://",moved:!1,cutouts:"",best:"",tagBudget:0,ors:!1,vouched:!0,scored:!1,ansi:7,ratings:{safe:new Set,questionable:new Set,explicit:new Set},rate:()=>"",narrow:()=>[],postsUrl:()=>"",countUrl:()=>"",postUrl:()=>"",pageUrl:(t)=>sE.get(t)??"",parse:()=>[],count:()=>0};function aE(t){if(/^https?:\/\//i.test(t))return"";return t.split("/").pop()??t}function cE(t,e){sE.set(t,e)}function uE(t){return Number.parseInt(rE("sha1").update(t).digest("hex").slice(0,8),16)%Cr}var Z8=`ObjC.import('AppKit')
654
656
  function run(argv) {
655
657
  const pb = $.NSPasteboard.generalPasteboard
656
658
  const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
@@ -675,16 +677,16 @@ function run(argv) {
675
677
  if (web && web.count > 0) return web.objectAtIndex(0).absoluteString.js
676
678
  const text = pb.stringForType('public.utf8-plain-text')
677
679
  return text && !text.isNil() ? text.js : ''
678
- }`,b8=`Add-Type -AssemblyName System.Windows.Forms,System.Drawing
680
+ }`,X8=`Add-Type -AssemblyName System.Windows.Forms,System.Drawing
679
681
  $c = [Windows.Forms.Clipboard]
680
682
  $f = $c::GetFileDropList(); if ($f.Count) { $f; exit }
681
683
  $p = Join-Path $env:TEMP 'ttheme-clipboard.png'
682
684
  $s = $c::GetData('PNG'); if ($s -is [IO.MemoryStream]) { [IO.File]::WriteAllBytes($p, $s.ToArray()); $p; exit }
683
685
  $i = $c::GetImage(); if ($i) { $i.Save($p, [Drawing.Imaging.ImageFormat]::Png); $p; exit }
684
- $c::GetText()`;function JE(){if(process.platform!=="linux")return!1;try{return/microsoft/i.test(Ul("/proc/version","utf8"))}catch{return!1}}async function w8(t){let e=Boolean(process.env.WAYLAND_DISPLAY),n=e?["wl-paste",["--list-types"]]:["xclip",["-selection","clipboard","-t","TARGETS","-o"]],r=(await Fn(n[0],n[1])).stdout.split(`
685
- `).map((s)=>s.trim()),i=(s)=>e?Fn("wl-paste",["--no-newline","--type",s],{encoding:"buffer",maxBuffer:Gl}):Fn("xclip",["-selection","clipboard","-t",s,"-o"],{encoding:"buffer",maxBuffer:Gl});if(r.includes("text/uri-list"))return{text:(await i("text/uri-list")).stdout.toString("utf8")};let o=qp.find((s)=>r.includes(s));if(o)return WE(t,(await i(o)).stdout),{image:t};return{text:r.some((s)=>s.startsWith("text/plain")||s==="UTF8_STRING")?(await i(r.includes("text/plain")?"text/plain":"UTF8_STRING")).stdout.toString("utf8"):""}}function Jp(){return Boolean(process.env.SSH_CONNECTION||process.env.SSH_TTY)}async function YE(t){if(process.platform==="darwin"){let e=(await Fn("osascript",["-l","JavaScript","-e",g8,t])).stdout.trim();return e===t?{image:t}:{text:e}}if(JE()){let e=(await Fn("powershell.exe",["-NoProfile","-STA","-Command",b8])).stdout.replace(/\r/g,"").trim(),n=await Promise.all(e.split(`
686
- `).map(async(r)=>/^[A-Za-z]:\\/.test(r)?(await Fn("wslpath",["-u",r])).stdout.trim():r));return n.length===1&&/ttheme-clipboard\.png$/.test(n[0]??"")?{image:n[0]}:{text:n.join(`
687
- `)}}if(process.platform==="linux")return w8(t);throw Error(`reading the clipboard is not supported on ${process.platform}`)}var $8=`ObjC.import('AppKit')
686
+ $c::GetText()`;function lE(){if(process.platform!=="linux")return!1;try{return/microsoft/i.test(Zl("/proc/version","utf8"))}catch{return!1}}async function Q8(t){let e=Boolean(process.env.WAYLAND_DISPLAY),n=e?["wl-paste",["--list-types"]]:["xclip",["-selection","clipboard","-t","TARGETS","-o"]],r=(await jn(n[0],n[1])).stdout.split(`
687
+ `).map((s)=>s.trim()),i=(s)=>e?jn("wl-paste",["--no-newline","--type",s],{encoding:"buffer",maxBuffer:Yl}):jn("xclip",["-selection","clipboard","-t",s,"-o"],{encoding:"buffer",maxBuffer:Yl});if(r.includes("text/uri-list"))return{text:(await i("text/uri-list")).stdout.toString("utf8")};let o=tg.find((s)=>r.includes(s));if(o)return oE(t,(await i(o)).stdout),{image:t};return{text:r.some((s)=>s.startsWith("text/plain")||s==="UTF8_STRING")?(await i(r.includes("text/plain")?"text/plain":"UTF8_STRING")).stdout.toString("utf8"):""}}function ng(){return Boolean(process.env.SSH_CONNECTION||process.env.SSH_TTY)}async function fE(t){if(process.platform==="darwin"){let e=(await jn("osascript",["-l","JavaScript","-e",Z8,t])).stdout.trim();return e===t?{image:t}:{text:e}}if(lE()){let e=(await jn("powershell.exe",["-NoProfile","-STA","-Command",X8])).stdout.replace(/\r/g,"").trim(),n=await Promise.all(e.split(`
688
+ `).map(async(r)=>/^[A-Za-z]:\\/.test(r)?(await jn("wslpath",["-u",r])).stdout.trim():r));return n.length===1&&/ttheme-clipboard\.png$/.test(n[0]??"")?{image:n[0]}:{text:n.join(`
689
+ `)}}if(process.platform==="linux")return Q8(t);throw Error(`reading the clipboard is not supported on ${process.platform}`)}var t3=`ObjC.import('AppKit')
688
690
  function run() {
689
691
  const pb = $.NSPasteboard.generalPasteboard
690
692
  const files = pb.readObjectsForClassesOptions($([$.NSURL]), $({ NSPasteboardURLReadingFileURLsOnlyKey: true }))
@@ -696,7 +698,7 @@ function run() {
696
698
  picture = ['public.png', 'public.tiff', 'public.jpeg', 'public.heic'].some((t) => types.includes(t))
697
699
  }
698
700
  return pb.changeCount + '\\t' + (picture ? 'picture' : '')
699
- }`;async function ZE(){if(Jp())return;if(process.platform==="darwin"){let[t="",e=""]=(await Fn("osascript",["-l","JavaScript","-e",$8])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!JE()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await Fn("wl-paste",["--list-types"])).stdout:(await Fn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function Wl(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var dc=(t)=>Buffer.from(t).toString("base64"),zp=(t)=>Buffer.from(t,"base64");function GE(t,e){return e.find((n)=>t.includes(n))}class Yp{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=dc(BE("sha1").update(`${process.pid}:${Date.now()}`).digest("hex"));send;deliver;constructor(t,e){this.send=t,this.deliver=e}start(){let t="";if(this.clipboard)t+="\x1B[?5522h";if(this.drops)t+=`\x1B]72;t=a;${Kp.join(" ")}\x1B\\`;this.send(t)}stop(){this.send(`${this.clipboard?"\x1B[?5522l":""}${this.drops?"\x1B]72;t=A\x1B\\":""}`)}ask(){this.reading={mime:".",chunks:[],pw:"",listing:!0},this.send(`\x1B]5522;type=read:name=${dc("ttheme")}:pw=${this.pw};${dc(".")}\x1B\\`)}take(t){if(t.code==="5522")this.clip(t.meta,t.payload);else if(t.code==="72")this.drop(t.meta,t.payload)}clip(t,e){if(t.type!=="read")return;let n=t.status??"";if(n==="OK"){if(this.reading??={mime:".",chunks:[],pw:t.pw??"",listing:!0},t.pw)this.reading.pw=t.pw;return}let r=this.reading;if(!r)return;if(n==="DATA"){if(r.mime=t.mime?zp(t.mime).toString("utf8"):r.mime,e)r.chunks.push(zp(e));return}if(this.reading=void 0,n!=="DONE"){this.deliver({kind:"error",message:n==="EPERM"?"The clipboard read was not allowed":`The terminal answered ${n}`});return}let i=Buffer.concat(r.chunks);if(r.listing){let o=i.toString("utf8").split(/\s+/).filter(Boolean),s=GE(o,[...qp,...h8]);if(!s){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:s,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${dc(c)}:pw=${a};${dc(s)}\x1B\\`);return}this.deliver(r.mime.startsWith("image/")?{kind:"bytes",bytes:new Uint8Array(i),source:"clipboard"}:{kind:"text",text:i.toString("utf8")})}drop(t,e){let n=t.t??"";if(n==="m"){if(t.x==="-1"){this.offered=[];return}if(e){this.offered=e.split(" ").filter(Boolean);let a=Kp.filter((c)=>this.offered.includes(c));this.send(`\x1B]72;t=m:o=${a.length>0?1:0};${a.join(" ")}\x1B\\`)}return}if(n==="M"){let a=e?e.split(" ").filter(Boolean):this.offered,c=GE(a,Kp);if(!c){this.send("\x1B]72;t=r:o=0\x1B\\");return}this.dropping={mimes:a,index:a.indexOf(c)+1,chunks:[]},this.send(`\x1B]72;t=r:x=${this.dropping.index}\x1B\\`);return}let r=this.dropping;if(!r)return;if(n==="R"){this.dropping=void 0,this.send("\x1B]72;t=r:o=0\x1B\\"),this.deliver({kind:"error",message:`The drop failed: ${e.split(":")[0]||"unknown error"}`});return}if(n!=="r"&&n!=="")return;if(e)r.chunks.push(zp(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),o=r.mimes[r.index-1]??"",s;if(o.startsWith("image/"))s={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=o==="text/uri-list"?Ls(a).find((u)=>o8(u)):void 0;s=c?{kind:"bytes",bytes:new Uint8Array(Ul(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(s)}}var Zp=5,k8=6,VE=0.05,y8=[1,2,3,4,5,6,9,10,11,12,13,14],XE=(t,e)=>(e-t+360)%360<=180?1:-1;function Ln(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),o=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((f)=>f**3),[s,a,c]=o,u=[4.0767416621*s-3.3077115913*a+0.2309699292*c,-1.2684380046*s+2.6097574011*a-0.3413193965*c,-0.0041960863*s-0.7034186147*a+1.707614701*c];if(u.some((f)=>f<-0.0001||f>1.0001))return;return u.map((f)=>{let l=Math.min(1,Math.max(0,f));return Math.round(255*(l<=0.0031308?12.92*l:1.055*l**0.4166666666666667-0.055))})}function Cs(t,e,n){if(Ln(t,n,e)!==void 0)return n;let r=0,i=n;for(let o=0;o<24;o++){let s=(r+i)/2;if(Ln(t,s,e)===void 0)i=s;else r=s}return r}function Xe(t,e,n){return`#${(Ln(t,Cs(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function v8(t,e){let{l:n,c:r}=xt(t);return Xe(n,r,(e+360)%360)}function E8(t,e,n){let{l:r,c:i,h:o}=xt(t),s=Et(e)<0.18,a=(f)=>Xe(s?r+(1-r)*f:r*(1-f),i,o);if($t(a(1),e)<n+VE)return a(1);let c=0,u=1;for(let f=0;f<30;f++){let l=(c+u)/2;if($t(a(l),e)>=n+VE)u=l;else c=l}return a(u)}function S8(t,e){let{l:n,c:r,h:i}=xt(t),o=0,s=n;for(let a=0;a<30;a++){let c=(o+s)/2;if(Et(Xe(c,r,i))<=e-0.005)o=c;else s=c}return Xe(o,r,i)}function M8(t,e,n){let r=xe[e],[i,o]=[xt(t[e]),xt(t[e+8])],s=(f,l)=>n.has(f)?[l]:Array.from({length:2*r.width+1},(d,h)=>(r.center-r.width+h+360)%360),a=(f,l,d)=>xr.every((h)=>{let m=(f>8?8:0)+h;if(m===f)return!0;let p=xt(t[m]);return p.c<Si||Oe(p.h,l)>=Io+1||Math.abs(p.l-d)>=Ro}),c,u=Number.POSITIVE_INFINITY;for(let f of s(e,i.h)){if(!n.has(e)&&!a(e,f,i.l))continue;for(let l of s(e+8,o.h)){if(Oe(f,l)>en-Zp||!n.has(e+8)&&!a(e+8,l,o.l))continue;let d=Oe(f,i.h)+Oe(l,o.h);if(d<u)u=d,c=[f,l]}}return c}class QE{theme;moves=[];constructor(t){this.theme={...t,ansi:[...t.ansi]}}set(t,e,n){let r=this.get(t);if(n===r)return;if(this.moves.push({slot:t,rule:e,from:r,to:n}),t==="foreground")this.theme.foreground=n;else if(t==="selection")this.theme.selectionBackground=n;else this.theme.ansi[Number(t.slice(4))]=n}get(t){if(t==="foreground")return this.theme.foreground;if(t==="selection")return this.theme.selectionBackground;return this.theme.ansi[Number(t.slice(4))]}rehue(t,e,n){this.set(`ansi${t}`,e,v8(this.theme.ansi[t],n))}roles(){let t=new Set(this.theme.signatureSlots);for(let{slot:n,hue:r}of Or(this.theme)){let i=xe[wn(n)];this.rehue(n,"ansi-role",i.center+XE(i.center,r)*(i.width-Zp))}for(let{normal:n,gap:r}of qn(this.theme)){if(r<=en)continue;let[i,o]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],s=xt(this.theme.ansi[i]).h,a=xt(this.theme.ansi[o]).h;this.rehue(o,"bright-follows",s+XE(s,a)*(en-Zp))}let e=Po(this.theme);for(let[n,r]of Dn(this.theme)){let i=wn(e.has(r)?n:r),o=M8(this.theme.ansi,i,e);if(o===void 0)continue;this.rehue(i,"distinct",o[0]),this.rehue(i+8,"distinct",o[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,o,s=e)=>{if(t.has(r))return;for(let a of i)if($t(this.get(a),s)<o)this.set(a,r,E8(this.get(a),s,o))};if(n("foreground",["foreground"],7),n("accents",y8.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&Et(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",S8(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...new Set(this.moves.map((t)=>t.slot))].flatMap((t)=>{let e=this.moves.filter((i)=>i.slot===t),n=e[0].from,r=this.get(t);return n===r?[]:[{slot:t,rule:[...new Set(e.map((i)=>i.rule))].join(", "),from:n,to:r}]})}}function Kl(t){let e=new QE(t);for(let n=0;n<k8;n++)if(e.readability(),e.roles(),Jn(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:Jn(e.theme)}}var lo=[{key:"background",label:"Background",min:0,max:0.5,step:0.01,digits:2},{key:"foreground",label:"Foreground",min:0.5,max:1,step:0.01,digits:2},{key:"hue",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0},{key:"tint",label:"Tint",min:0,max:0.1,step:0.005,digits:3},{key:"lightness",label:"Accent lightness",min:0.4,max:0.95,step:0.01,digits:2},{key:"chroma",label:"Accent chroma",min:0,max:0.3,step:0.005,digits:3},{key:"brights",label:"Brights",min:-0.2,max:0.2,step:0.01,digits:2}],hc={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},tS=(t,e,n)=>Math.min(n,Math.max(e,t));function Vp(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:tS(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function mi(t){let e=(r,i,o)=>Xe(tS(r,0,1),i,o),n=Array.from({length:16},()=>"#000000");n[0]=e(t.background+0.06,t.tint,t.hue),n[8]=e(t.background+0.25,t.tint,t.hue),n[7]=e(t.foreground-0.06,t.tint/2,t.hue),n[15]=e(t.foreground+0.06,t.tint/2,t.hue);for(let r of xr){let i=xe[r].center;n[r]=e(t.lightness,t.chroma,i),n[r+8]=e(t.lightness+t.brights,t.chroma,i)}return{background:e(t.background,t.tint,t.hue),foreground:e(t.foreground,t.tint/2,t.hue),cursor:e(t.lightness+t.brights,Math.max(t.chroma,0.08),t.hue),selection:e(t.background+0.1,t.tint*2,t.hue),ansi:n}}var Cn=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],T=["Background","Foreground","Cursor","Selection"],mn=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],x8=["Behind every cell","Plain text","The cursor block","Selected text","Text on colored bars, dark shades","Errors, deleted lines, failed tests","Success, added lines, prompts","Warnings, commit hashes, skipped tests","Directories, info, keywords","Keywords, branches, pictures in ls","Links, diff hunks, types","Light shades, text in some programs","Comments, muted text, suggestions"],gr=T.length+mn.length,hn=[{key:"l",label:"Lightness",min:0,max:1,step:0.01,digits:2},{key:"c",label:"Chroma",min:0,max:0.37,step:0.005,digits:3},{key:"h",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0}],eS=5,O8=5,ne=hn.length,js=["this","pair","normals","brights","accents"],zl=[1,2,3,4,5,6,9,10,11,12,13,14],nS=zl.filter((t)=>t<8).map((t)=>T.length+t),rS=zl.filter((t)=>t>8).map((t)=>T.length+t);function Xp(t,e){let n=e-T.length;if(n<0||t==="this")return[e];if(t==="pair")return[T.length+n%8,T.length+8+n%8];let r=t==="normals"?nS:t==="brights"?rS:[...nS,...rS];return r.includes(e)?r:[e]}function I8(){return Array.from({length:gr},(t,e)=>e<T.length?[e]:[e,e+8]).flat()}function R8(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||Ls(e).length>0}function Qe(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function re(t){let[e,n,r,i,...o]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:o}}function Ge(t){if(t<T.length)return{name:T[t],about:Cn[t]};let e=t-T.length,n=mn[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function aS(t){let e=t-T.length;if(e>=9&&e<=15)return`Bold or bright ${mn[e-8].toLowerCase()} text`;return x8[t]}var fo=(t,e,n)=>Math.min(n,Math.max(e,t));function iS(t){return t.length===1?t.toLowerCase():t}function P8(t){return fo(Math.round(t),0,255).toString(16).padStart(2,"0")}function oS(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let o=n[1];return`#${o.length===3?[...o].map((s)=>s+s).join(""):o}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((o)=>P8(Number(o))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let o=Number(i[1])/(i[2]?100:1);return Xe(fo(o,0,1),Number(i[3]),Number(i[4])%360)}return}function ho(t){let e=Ie.find((n)=>n.rule===t);return e?.min??e?.max??0}function br(t,e,n){let r=re(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function A8(t,e){let n=t-T.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":zl.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:ho(r)}}function ng(t,e,n,r){let i=br(t,e,n),{background:o,foreground:s,selection:a,ansi:c}=re(t),u=(f,l,d)=>$t(l,d)<ho(r)?[f]:[];if(r==="foreground")return $t(s,o)<ho(r)?[1,0]:[];if(r==="selection")return $t(s,a)<ho(r)?[3,1]:[];if(r==="accents")return zl.flatMap((f)=>u(T.length+f,c[f],o));if(r==="light-ansi")return[7,15].flatMap((f)=>u(T.length+f,c[f],o));if(r==="ansi8-visible")return u(T.length+8,c[8],o);if(r==="ansi0-dark")return Et(c[0])>ho(r)?[T.length]:[];if(r==="ansi-role")return Or(i).map(({slot:f})=>T.length+f);if(r==="bright-follows")return qn(i).filter(({gap:f})=>f>en).flatMap(({normal:f})=>[T.length+f,T.length+f+8]);if(r==="distinct")return Dn(i).flatMap(([f,l])=>[T.length+f,T.length+l]);return[]}function rg(t,e,n){return new Set(Cn.flatMap((r,i)=>ig(t,e,n,i).some((o)=>o.ok===!1)?[i]:[]))}function pr(t,e,n,r,i){let o=$t(t,e),s=ho(n);if(i.includes(n))return{ok:void 0,text:`${r} ${o.toFixed(2)}:1 · waived`};return{ok:o>=s,text:`${r} ${o.toFixed(2)}:1 · ≥ ${s}`}}function ig(t,e,n,r){let i=re(t),o=br(t,e,n);if(r===0){let $=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,v)=>$t(i.ansi[k],i.background)<=$t(i.ansi[v],i.background)?k:v);return[pr(i.foreground,i.background,"foreground","Foreground on it",n),pr(i.ansi[$],i.background,"accents",`Weakest, ANSI ${$},`,n),pr(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[pr(i.foreground,i.background,"foreground","On background",n),pr(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${$t(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[pr(i.foreground,i.selection,"selection","Foreground on it",n)];let s=r-T.length,a=i.ansi[s];if(s===0){let b=Et(a),$=ho("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=$,text:`Luminance ${b.toFixed(3)} · ≤ ${$}`}]}if(s===7||s===15)return[pr(a,i.background,"light-ansi","On background",n)];if(s===8)return[pr(a,i.background,"ansi8-visible","On background",n)];let c=[pr(a,i.background,"accents","On background",n)],u=xt(a),f=wn(s),l=xe[f],d=`${l.name} ${l.center}±${l.width}°`;if(u.c<Si)c.push({ok:void 0,text:"Too grey to have a hue"});else if(Po(o).has(s))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${d}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${d} waived`});else{let b=Oe(u.h,l.center)-l.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${d}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${d}`})}let h=s<8?s+8:s-8,m=qn(o).find((b)=>b.normal===f);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=en,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${en}°`});let p=Dn(o).flatMap(([b,$])=>b===s?[$]:$===s?[b]:[]);if(p.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${p.join(", ")} · within ${Io}° and ${Ro} lightness`});return c}function og(t,e,n){let r=$n(br(t,e,n));return Ie.map((i,o)=>{let s=r[o],a=n.includes(i.rule),c=a||Number.isNaN(s)?void 0:(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max);return{ok:c,label:i.label,value:Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?ng(t,e,n,i.rule):[]}})}var N8=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),cS=hn[1].max;function eg(t){let[e,n,r]=st(t);return e===n&&n===r}function T8(t,e){let n=xt(e);if(!eg(e))return n;let r=[0,1,3,2].map((i)=>t[i]).find((i)=>!eg(i));return{...n,h:r?xt(r).h:hc.hue}}function uS(t,e,n){if(t==="rgb"){let[r,i,o]=st(e);return`rgb(${r} ${i} ${o})`}if(t==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function Qp(t,e){return Math.floor(Cs(t,e,cS)*1e4)/1e4}function tg(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function sS(t,e){let n=t.wraps?t.max-t.step:t.max;return Math.min(n,Math.round((t.min+(t.max-t.min)*e)/t.step)*t.step)}class sg{mode;seeds=hc;field=0;list;lch;start;original;signature;row=0;col=0;channel=0;scope="this";view="slot";scene=0;typing;overlay;quitting=!1;compare=!1;notice;filter="";pick=0;result;wants;pictures;inspect=!1;spot;format="hex";pic=!0;menu;entry=0;changedOnly=!1;where=!1;size;copied;startPictures;options;fresh;tone;startSignature;seeded=!1;tuneFrom;holds=new Map;clip;history=[];future=[];lastEdit;links=new Map;unlinked=new Set;offsets=new Map;constructor(t){this.options=t,this.tone=t.tone===!0,this.fresh=t.colors===void 0,this.mode=this.fresh?"seeds":"list",this.list=Qe(t.colors??mi(this.seeds)),this.lch=this.lchs(),this.start=[...this.list],this.original=t.original?Qe(t.original):[...this.list],this.signature=[...t.signature],this.startSignature=[...t.signature],this.pictures=t.pictures??0,this.startPictures=this.pictures,this.chain(this.original)}chain(t){this.links=new Map,this.unlinked=new Set,this.offsets=new Map;for(let e=0;e<8;e++){let n=T.length+e,r=n+8,i=this.lchOf(t[n]),o=this.lchOf(t[r]);if(i.c>=Si&&o.c>=Si&&Oe(i.h,o.h)<=3)this.links.set(r,n),this.offsets.set(r,tg(i,o))}}pair(t){if(t<T.length)return;let e=T.length+(t-T.length)%8,n=e+8;return{normal:e,bright:n,on:this.linkOf(n)!==void 0,lift:this.lch[n].l-this.lch[e].l}}linkOf(t){let e=this.links.get(t);return e!==void 0&&!this.unlinked.has(t)?e:void 0}changed(t){return this.list[t]!==this.original[t]}visible(t){return!this.changedOnly||this.changed(t)}changes(){return this.list.filter((t,e)=>this.changed(e)).length}slotAt(t,e){return t<T.length?t:t+(e===1?8:0)}get added(){return Math.max(0,this.pictures-this.startPictures)}found(t){this.pictures=t.count,this.notice=t.note}get waive(){return this.options.waive??[]}get held(){return this.holds.get(this.slot())}colors(){return re(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<T.length?this.row:this.row+(this.col===1?8:0)}dirty(){return this.seeded||this.pictures!==this.startPictures||this.list.some((t,e)=>t!==this.start[e])||this.signature.join()!==this.startSignature.join()}resettable(){return this.dirty()||this.tone&&this.list.some((t,e)=>t!==this.original[e])}misses(){return rg(this.list,this.signature,this.waive)}failing(){return Jn(br(this.list,this.signature,this.waive))}choices(){let t=this.filter.toLowerCase();return(this.options.palettes??[]).filter((e)=>e.name.toLowerCase().includes(t))}paste(t){if(this.notice=void 0,this.overlay==="open"){this.filter+=t.replace(/\s+/g,"").toLowerCase(),this.pick=0;return}if(this.overlay)return;if(!this.tone&&t.trim()===""){this.findPictures({clipboard:!0});return}if(!this.tone&&R8(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=Qe(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=oS(t);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"paste")}press(t){if(this.notice=void 0,t==="ctrl-c"){this.result="cancelled";return}if(this.quitting){if(this.quitting=!1,t==="y"||t==="Y")this.result="cancelled";return}if(this.typing!==void 0){this.type(t);return}if(this.overlay==="keys"){this.overlay=void 0;return}if(this.overlay==="open"){this.openKey(t);return}if(this.menu){this.menuKey(t);return}if(t==="?"){this.overlay="keys";return}if(this.inspect&&this.mode==="list"&&this.inspectKey(t))return;if(this.tone&&(t==="ctrl-v"||t==="alt-v"||t==="p"))return;if(t==="ctrl-v"||t==="alt-v"){this.findPictures({clipboard:!0});return}if(t==="p"&&this.mode!=="tune"){this.findPictures();return}if(t===" "&&this.mode!=="seeds"){this.compare=!this.compare;return}if(this.compare&&t==="esc"){this.compare=!1;return}if(t==="g"&&this.mode!=="seeds"){this.view=this.view==="slot"?"relations":"slot";return}let e=t==="j"?"down":t==="k"?"up":t;if(this.mode==="seeds")this.seedKey(e);else if(this.mode==="tune")this.tuneKey(e);else this.listKey(e)}select(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.mode==="tune"){if(t===this.slot())return;this.tuneKey("enter")}this.notice=void 0,this.seat(t),this.lastEdit=void 0}seat(t){if(this.row=t<T.length?t:T.length+(t-T.length)%8,t>=T.length)this.col=t-T.length>=8?1:0}grip(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return!1;if(this.notice=void 0,this.mode==="list")this.tune();return this.channel=t,!0}slide(t,e){if(!this.grip(t))return;let n=Math.min(1,Math.max(0,e));if(t===ne){this.reach(21**n);return}this.put(sS(hn[t],n))}sow(t,e){let n=lo[t];if(this.mode!=="seeds"||this.overlay||this.quitting||!n)return;this.notice=void 0,this.field=t;let r=Math.min(1,Math.max(0,e));this.seeds=Vp({...this.seeds,[n.key]:sS(n,r)},n,0),this.list=Qe(mi(this.seeds)),this.lch=this.lchs()}scroll(t){let e=(n,r)=>Math.min(r,Math.max(0,n+t));if(this.overlay==="open")this.pick=e(this.pick,Math.max(0,this.choices().length-1));else if(this.overlay||this.quitting||this.typing!==void 0)return;else if(this.mode==="seeds")this.field=e(this.field,lo.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,gr-1),this.lastEdit=void 0}lchOf(t){return T8(this.list,t)}lchs(){return this.list.map((t)=>this.lchOf(t))}seedKey(t){let e=lo.length;if(t==="up"||t==="down")this.field=(this.field+(t==="up"?e-1:1))%e;else if(t==="home"||t==="end")this.field=t==="home"?0:e-1;else if(t==="left"||t==="right"||t==="shift-left"||t==="shift-right"){let n=lo[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:eS:1);this.seeds=Vp(this.seeds,n,r),this.list=Qe(mi(this.seeds)),this.lch=this.lchs()}else if(t==="enter")this.leaveSeeds();else if(t==="o")this.openPalettes();else if(t==="esc")this.leave()}leaveSeeds(){this.start=[...this.list],this.original=[...this.list],this.chain(this.original),this.seeded=!0,this.mode="list"}leave(){if(this.dirty())this.quitting=!0;else this.result="cancelled"}findPictures(t){if(!this.options.find){this.notice="Pictures need Ghostty, iTerm2 or kitty, outside tmux";return}this.wants=t?{start:t}:{}}openPalettes(){if((this.options.palettes??[]).length>0)this.overlay="open",this.pick=0;else this.notice="No other palettes to take colors from"}listKey(t){if(t==="up"||t==="down"){let e=t==="up"?-1:1;this.land(this.row+e,e),this.lastEdit=void 0}else if(t==="home"||t==="end")this.land(t==="home"?0:gr-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:T.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=T.length&&this.visible(this.slotAt(this.row,e)))this.col=e,this.lastEdit=void 0}else if(this.builderKey(t))return;else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1;else if(t==="n"||t==="N")this.nextMiss(t==="n"?1:-1);else if(t==="enter"||t==="tab")this.tune();else if(t==="#")this.typing="";else if(t==="c")this.clip=this.list[this.slot()],this.notice=`Copied ${this.clip}`;else if(t==="v")if(this.clip)this.set(this.slot(),this.clip,"paste");else this.notice="Nothing copied yet — c copies a slot";else if(t==="r")this.set(this.slot(),this.original[this.slot()],"reset");else if(t==="R")this.remember("reset-all"),this.list=[...this.original],this.lch=this.lchs();else if(t==="=")this.follow();else if(t==="*"&&!this.tone)this.mark();else if(t==="f")this.fix();else if(t==="o"&&!this.tone)this.openPalettes();else if(t==="u")this.undo();else if(t==="ctrl-r")this.redo();else if(t==="s"||t==="ctrl-s")this.save();else if(t==="esc")this.leave()}viewport(t,e){this.size={cols:t,rows:e}}layout(){return this.size?lc(this.size.cols,this.size.rows,this.scene):void 0}get roomy(){return this.layout()!==void 0}reseat(){if(!this.visible(this.slot()))this.land(this.row,1)}rowShown(t){return this.visible(this.slotAt(t,0))||t>=T.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<gr;n++){let r=((t+e*n)%gr+gr)%gr;if(this.rowShown(r)){if(this.row=r,r>=T.length&&!this.visible(this.slotAt(r,this.col)))this.col=1-this.col;return}}}builderKey(t){if(["i","m","w","x","I"].includes(t)&&!this.roomy)return this.notice="The builder needs a window of at least 96×28",!0;if(t==="i")this.startInspect();else if(t==="l")this.linkKey();else if(t==="m")this.changedOnly=!this.changedOnly,this.reseat(),this.notice=this.changedOnly?this.changes()>0?void 0:"Nothing changed yet":void 0;else if(t==="b")this.pic=!this.pic;else if(t==="w")this.where=!this.where;else if(t==="x"&&this.options.exports)this.menu="export",this.entry=0;else if(t==="I")this.menu="import",this.entry=0;else return!1;return!0}menuKey(t){let e=this.menu==="export"?3:2;if(t==="esc")this.menu=void 0;else if(t==="up"||t==="down"||t==="k"||t==="j")this.entry=(this.entry+(t==="up"||t==="k"?e-1:1))%e;else if(t==="enter")this.choose(this.entry)}choose(t){let e=this.menu;if(this.menu=void 0,e==="import"){if(t===0)this.openPalettes();else this.notice=this.options.decode?"Paste a share link or a tt2: code into this window":"Share codes are not read here";return}let n=this.options.exports;if(e!=="export"||!n)return;try{let r=this.edited(),i=n.code(r);this.copied=t===0?i:t===1?`${n.command} ${i}`:n.toml(r),this.notice=`Copied ${t===0?"the share code":t===1?"the add command":"the palette file"} — paste it where you need it`}catch(r){this.notice=r instanceof Error?r.message:String(r)}}openMenu(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;this.menu=this.menu===t?void 0:t,this.entry=0}startInspect(){let t=this.layout();if(!t){this.notice="The builder needs a window of at least 96×28";return}this.inspect=!0,this.spot=HE(t,this.slot())}toggleInspect(){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.inspect)this.inspect=!1,this.spot=void 0;else this.startInspect()}inspectKey(t){let e=this.layout();if(!e)return this.inspect=!1,!1;let r={left:"left",right:"right",up:"up",k:"up",down:"down",j:"down",tab:"next","shift-tab":"previous"}[t];if(t==="i"||t==="esc")this.inspect=!1,this.spot=void 0;else if(r)this.spot=FE(e,jl(e,this.spot),r);else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1,this.spot=void 0;else if(t==="enter")this.jump();else return!1;return!0}point(t){if(this.mode!=="seeds"&&!this.overlay&&!this.quitting&&this.typing===void 0&&this.layout())this.inspect=!0,this.spot=t}slotsHere(){let t=this.layout();return t&&this.spot?LE(t,this.spot):void 0}jump(){let t=this.slotsHere();if(!t)return;let e=t.ground!==0?t.ground:t.text;this.inspect=!1,this.spot=void 0,this.show(e),this.select(e)}show(t){if(!this.visible(t))this.changedOnly=!1}openSlot(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;let e=this.mode==="tune"&&t===this.slot();if(this.mode==="tune")this.tuneKey("enter");if(e)return;if(this.show(t),this.select(t),this.mode==="list")this.tune()}dismiss(){if(this.mode!=="tune"||this.overlay||this.quitting)return;this.typing=void 0,this.tuneKey("enter")}plane(t,e){if(!this.grip(0))return;this.channel=0,this.put(t),this.channel=1,this.put(e)}linkKey(){let t=this.slot();if(t<T.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=T.length+(t-T.length)%8,n=e+8,r=`${Ge(n).name} and ${Ge(e).name.toLowerCase()}`;if(this.mode!=="tune")this.remember("link");if(this.linkOf(n)!==void 0){this.unlinked.add(n),this.notice=`${r} move apart`;return}this.links.set(n,e),this.unlinked.delete(n),this.offsets.set(n,tg(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=I8(),n=this.misses();if(n.size===0){this.notice="The gate passes";return}let r=e.indexOf(this.slot());for(let i=1;i<=e.length;i++){let o=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(o)){this.seat(o);return}}}tune(){this.remember("tune"),this.tuneFrom={list:[...this.list],lch:[...this.lch]},this.holds=new Map,this.hold(),this.mode="tune"}hold(){for(let t of this.scoped())if(!this.holds.has(t))this.holds.set(t,this.lch[t].c)}scoped(){return Xp(this.scope,this.slot())}tuneKey(t){let e=this.channel===ne;if(t==="tab"||t==="shift-tab")this.channel=e?0:ne;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?eS:1));else if(t==="left"||t==="right"){let n=t==="left"?-1:1;if(e)this.reach(this.ratio()+n*0.1);else this.channel=1,this.step(n)}else if(t==="shift-left"||t==="shift-right"){let n=t==="shift-left"?-1:1;if(e)this.reach(this.ratio()+n*0.5);else this.channel=2,this.step(n*O8)}else if((t===","||t===".")&&!e)this.channel=2,this.step(t===","?-1:1);else if(t==="home"||t==="end")if(e)this.reach(t==="home"?this.partner().floor??1:21);else{let n=hn[this.channel];this.put(t==="home"?n.min:n.wraps?n.max-n.step:n.max)}else if(/^[0-9]$/.test(t))if(e){if(t!=="0")this.reach(Number(t))}else{let n=hn[this.channel];this.put(n.min+(n.max-n.min)*Number(t)/10)}else if(t==="a")this.rescope();else if(t==="#")this.typing="";else if(t==="l")this.linkKey();else if(t==="s"||t==="ctrl-s")this.tuneKey("enter"),this.save();else if(t==="enter"){if(this.tuneFrom&&this.list.every((n,r)=>n===this.tuneFrom?.list[r]))this.history.pop();this.endTune()}else if(t==="esc"){if(this.tuneFrom)this.list=[...this.tuneFrom.list],this.lch=[...this.tuneFrom.lch],this.history.pop();this.endTune()}}rescope(){if(this.slot()<T.length){this.notice="A base color moves alone";return}let t=js.indexOf(this.scope);for(let e=1;e<=js.length;e++){let n=js[(t+e)%js.length];if(n==="this"||Xp(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<T.length)return;if(t!=="this"&&Xp(t,this.slot()).length<=1)return;this.scope=t,this.hold();let e=this.scoped().length;this.notice=e>1?`${e} slots move together`:"This slot moves alone"}endTune(){this.tuneFrom=void 0,this.holds=new Map,this.mode="list"}partner(){return A8(this.slot(),this.waive)}ratio(){return $t(this.list[this.slot()],this.list[this.partner().against])}origin(){let t=this.slot(),e=this.original[t];if(e===this.list[t])return;return{hex:e,lch:this.lchOf(e),ratio:$t(e,this.original[this.partner().against])}}reach(t){let e=this.slot(),n=this.list[this.partner().against],r=this.lch[e],i=this.holds.get(e)??r.c,o=(d)=>Xe(d,Math.min(i,Qp(d,r.h)),r.h),s=(d)=>$t(o(d),n),a=Et(this.list[e])>=Et(n),c=xt(n).l,u=Math.max(1,Math.round(t*100)/100),f=a?1:0,l;if(s(f)<u)l=f,this.notice=`The ratio stops at ${s(f).toFixed(2)}:1 on this side of the color it is read against`;else{let d=c,h=f;for(let m=0;m<24;m++){let p=(d+h)/2;if(s(p)>=u)h=p;else d=p}l=h}this.place(e,l,i,r.h);for(let d=0;d<40&&l!==f&&$t(this.list[e],n)<u;d++)l=a?Math.min(1,l+0.001):Math.max(0,l-0.001),this.place(e,l,i,r.h);this.lch[e]={...this.lch[e],l:Math.round(l*1e4)/1e4}}step(t){let e=hn[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=hn[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:fo(t,n.min,n.max),i=Math.round(r*1e4)/1e4,o=this.lch[e],s=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=Qp(o.l,o.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let f=Math.min(i,u),l=f-o.c;this.holds.set(e,f),this.place(e,o.l,f,o.h);for(let d of s){let h=this.lch[d],m=a(fo((this.holds.get(d)??h.c)+l,0,cS));this.holds.set(d,m),this.place(d,h.l,m,h.h)}this.trail([e,...s]);return}let c=n.key==="h"?((i-o.h)%360+540)%360-180:i-o.l;if(this.place(e,n.key==="l"?i:o.l,this.holds.get(e)??o.c,n.key==="h"?i:o.h),n.key==="h"&&eg(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of s){let f=this.lch[u];this.place(u,n.key==="l"?a(fo(f.l+c,0,1)):f.l,this.holds.get(u)??f.c,n.key==="h"?a(((f.h+c)%360+360)%360):f.h)}this.trail([e,...s])}trail(t){let e=new Set(t);for(let[n,r]of this.links){if(this.unlinked.has(n))continue;if(e.has(n)&&!e.has(r))this.unlinked.add(n);else if(e.has(r)&&!e.has(n)){let i=this.lch[r],o=this.offsets.get(n);this.place(n,fo(i.l+o.l,0,1),Math.max(0,i.c+o.c),((i.h+o.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,Qp(e,r));this.lch[t]={l:e,c:i,h:r},this.list[t]=Xe(e,i,r)}take(t,e){if(this.mode==="tune")this.list[this.slot()]=t,this.lch[this.slot()]=this.lchOf(t),this.holds.set(this.slot(),this.lch[this.slot()].c),this.trail([this.slot()]);else this.set(this.slot(),t,e)}type(t){let e=this.typing??"";if(t==="esc")this.typing=void 0;else if(t==="enter"){let n=oS(e);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"hex")}else{let n=oo(e,iS(t),(r)=>/^[0-9a-z#(),.% ]$/.test(r)&&e.length<28);if(n!==void 0)this.typing=n}}openKey(t){let e=this.choices();if(t==="esc")this.overlay=void 0,this.filter="";else if(t==="up"||t==="down"){let n=Math.max(1,e.length);this.pick=(this.pick+(t==="up"?n-1:1))%n}else if(t==="home"||t==="end")this.pick=t==="home"?0:Math.max(0,e.length-1);else if(t==="enter"){let n=e[this.pick];if(!n)return;if(this.remember("open"),this.list=Qe(n.colors),this.lch=this.lchs(),this.chain(this.list),this.overlay=void 0,this.filter="",this.notice=`Took the colors of ${n.name}`,this.mode==="seeds")this.leaveSeeds()}else{let n=oo(this.filter,iS(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}remember(t){if(t!==this.lastEdit||N8.has(t))this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.future=[];this.lastEdit=t}set(t,e,n){if(!he(e)||this.list[t]===e)return;this.remember(n),this.list[t]=e,this.lch[t]=this.lchOf(e),this.trail([t])}follow(){if(this.row<T.length){this.notice="= works on an ANSI row — the bright takes its normal";return}let t=this.row,e=this.row+8,n=this.lch[t];this.remember("follow"),this.place(e,fo(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,tg(n,this.lch[e])),this.seat(e),this.notice=`${Ge(e).name} follows ${Ge(t).name.toLowerCase()}`}mark(){let t=Cn[this.slot()];this.remember("sig");let e=this.signature.includes(t)?this.signature.filter((r)=>r!==t):[...this.signature,t],n=e.length>3?e[0]:void 0;this.signature=e.slice(-3),this.notice=this.signature.length===3?`Signature: ${this.signature.join(", ")}${n?` — ${n} dropped`:""}`:`The signature needs three slots — ${this.signature.length} marked`}fix(){let t=br(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=Kl({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=Jn(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=Qe({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),o=this.list;this.list=i,this.lch=i.map((s,a)=>s===o[a]?this.lch[a]:this.lchOf(s)),this.notice=`Moved ${n.length} ${n.length===1?"color":"colors"}${r.length===0?" — passes the gate":" closer to the gate"}`}save(){let t=this.options.check(this.edited());if(t){this.notice=t;return}this.result="saved"}undo(){let t=this.history.pop();if(!t){this.notice="Nothing to undo";return}this.future.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}restore(t){this.list=[...t.list],this.lch=[...t.lch],this.signature=[...t.signature],this.lastEdit=void 0}}import{mkdirSync as n3,readFileSync as lg,writeFileSync as SS}from"node:fs";import{dirname as r3}from"node:path";import{isMainThread as i3,parentPort as MS,Worker as o3}from"node:worker_threads";var H8=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),F8=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),L8=0.04,C8=0.1,j8=0.05,_8=4096;function G8(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function B8(t,e,n,r=0){let{site:i,post:o}=t,s=new Set(o.tags),a=[...G8(i)].some((f)=>s.has(f)),c=Math.min(o.width,o.height),u=o.width>0&&o.height>0?o.width/o.height/(e.w/e.h):1;return(o.solo?2:0)+([...H8].some((f)=>s.has(f))?-3:0)+([...F8].some((f)=>s.has(f))?-1.5:0)+2*Math.min(1,c/e.h)+(a?1.5:-Math.min(1.5,Math.abs(Math.log(u))))+(n>0?1.5*Math.log1p(Math.max(0,o.score))/Math.log1p(n):0)+2*r}function ql(t,e,n=new Map){let r=new Map;for(let{site:i,post:o}of t)r.set(i,Math.max(r.get(i)??0,o.score));return t.map((i,o)=>({pick:i,at:o,score:B8(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,o)=>o.score-i.score||i.at-o.at).map(({pick:i})=>i)}function fS(t){let e=new Map;for(let r of t)e.set(r.site,[...e.get(r.site)??[],r]);let n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let o=i[r];if(o)n.push(o)}return n}function ag(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function lS(t,e,n){let[r,i,o]=[ag(t),ag(e),ag(n)],s=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*o),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*o),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*o);return[0.2104542553*s+0.793617785*a-0.0040720468*c,1.9779984951*s-2.428592205*a+0.4505937099*c,0.0259040371*s+0.7827717662*a-0.808675766*c]}function dS(t,e){let n=e.map((s)=>lS(...st(s))).filter(([,s,a])=>Math.hypot(s,a)>=L8);if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/_8))),i=n.map(()=>0),o=0;for(let s=0;s<t.height;s+=r)for(let a=0;a<t.width;a+=r){let c=(s*t.width+a)*4;if(t.data[c+3]<128)continue;o++;let[u,f,l]=lS(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([d,h,m],p)=>{if(Math.hypot(u-d,f-h,l-m)<C8)i[p]=i[p]+1})}if(o===0)return 0;return i.reduce((s,a)=>s+Math.min(1,a/o/j8),0)/n.length}import{existsSync as cg,mkdirSync as hS,readFileSync as Gs}from"node:fs";import{homedir as D8}from"node:os";import{dirname as mS,join as mo}from"node:path";import{spawn as U8}from"node:child_process";var W8=30000,K8=3,z8=97,q8=`ObjC.import('Vision')
701
+ }`;async function dE(){if(ng())return;if(process.platform==="darwin"){let[t="",e=""]=(await jn("osascript",["-l","JavaScript","-e",t3])).stdout.trim().split("\t");return{stamp:t,picture:e==="picture"}}if(process.platform==="linux"&&!lE()){let e=Boolean(process.env.WAYLAND_DISPLAY)?(await jn("wl-paste",["--list-types"])).stdout:(await jn("xclip",["-selection","clipboard","-t","TARGETS","-o"])).stdout;return{stamp:e,picture:/^image\//m.test(e)}}return}function Xl(t){return t.length>8&&/^(?:\/|~\/|file:|https?:)/.test(t)}var yc=(t)=>Buffer.from(t).toString("base64"),Qp=(t)=>Buffer.from(t,"base64");function nE(t,e){return e.find((n)=>t.includes(n))}class rg{clipboard=!1;drops=!1;reading;offered=[];dropping;pw=yc(rE("sha1").update(`${process.pid}:${Date.now()}`).digest("hex"));send;deliver;constructor(t,e){this.send=t,this.deliver=e}start(){let t="";if(this.clipboard)t+="\x1B[?5522h";if(this.drops)t+=`\x1B]72;t=a;${Xp.join(" ")}\x1B\\`;this.send(t)}stop(){this.send(`${this.clipboard?"\x1B[?5522l":""}${this.drops?"\x1B]72;t=A\x1B\\":""}`)}ask(){this.reading={mime:".",chunks:[],pw:"",listing:!0},this.send(`\x1B]5522;type=read:name=${yc("ttheme")}:pw=${this.pw};${yc(".")}\x1B\\`)}take(t){if(t.code==="5522")this.clip(t.meta,t.payload);else if(t.code==="72")this.drop(t.meta,t.payload)}clip(t,e){if(t.type!=="read")return;let n=t.status??"";if(n==="OK"){if(this.reading??={mime:".",chunks:[],pw:t.pw??"",listing:!0},t.pw)this.reading.pw=t.pw;return}let r=this.reading;if(!r)return;if(n==="DATA"){if(r.mime=t.mime?Qp(t.mime).toString("utf8"):r.mime,e)r.chunks.push(Qp(e));return}if(this.reading=void 0,n!=="DONE"){this.deliver({kind:"error",message:n==="EPERM"?"The clipboard read was not allowed":`The terminal answered ${n}`});return}let i=Buffer.concat(r.chunks);if(r.listing){let o=i.toString("utf8").split(/\s+/).filter(Boolean),s=nE(o,[...tg,...J8]);if(!s){this.deliver({kind:"text",text:""});return}let a=r.pw||this.pw,c=r.pw?"Paste event":"ttheme";this.reading={mime:s,chunks:[],pw:a,listing:!1},this.send(`\x1B]5522;type=read:name=${yc(c)}:pw=${a};${yc(s)}\x1B\\`);return}this.deliver(r.mime.startsWith("image/")?{kind:"bytes",bytes:new Uint8Array(i),source:"clipboard"}:{kind:"text",text:i.toString("utf8")})}drop(t,e){let n=t.t??"";if(n==="m"){if(t.x==="-1"){this.offered=[];return}if(e){this.offered=e.split(" ").filter(Boolean);let a=Xp.filter((c)=>this.offered.includes(c));this.send(`\x1B]72;t=m:o=${a.length>0?1:0};${a.join(" ")}\x1B\\`)}return}if(n==="M"){let a=e?e.split(" ").filter(Boolean):this.offered,c=nE(a,Xp);if(!c){this.send("\x1B]72;t=r:o=0\x1B\\");return}this.dropping={mimes:a,index:a.indexOf(c)+1,chunks:[]},this.send(`\x1B]72;t=r:x=${this.dropping.index}\x1B\\`);return}let r=this.dropping;if(!r)return;if(n==="R"){this.dropping=void 0,this.send("\x1B]72;t=r:o=0\x1B\\"),this.deliver({kind:"error",message:`The drop failed: ${e.split(":")[0]||"unknown error"}`});return}if(n!=="r"&&n!=="")return;if(e)r.chunks.push(Qp(e));if(t.m==="1"||e)return;this.dropping=void 0;let i=Buffer.concat(r.chunks),o=r.mimes[r.index-1]??"",s;if(o.startsWith("image/"))s={kind:"bytes",bytes:new Uint8Array(i),source:"drop"};else{let a=i.toString("utf8"),c=o==="text/uri-list"?Gs(a).find((u)=>G8(u)):void 0;s=c?{kind:"bytes",bytes:new Uint8Array(Zl(c)),source:c}:{kind:"text",text:a}}this.send("\x1B]72;t=r:o=1\x1B\\"),this.deliver(s)}}var ig=5,e3=6,hE=0.05,n3=[1,2,3,4,5,6,9,10,11,12,13,14],mE=(t,e)=>(e-t+360)%360<=180?1:-1;function Gn(t,e,n){let r=e*Math.cos(n*Math.PI/180),i=e*Math.sin(n*Math.PI/180),o=[t+0.3963377774*r+0.2158037573*i,t-0.1055613458*r-0.0638541728*i,t-0.0894841775*r-1.291485548*i].map((f)=>f**3),[s,a,c]=o,u=[4.0767416621*s-3.3077115913*a+0.2309699292*c,-1.2684380046*s+2.6097574011*a-0.3413193965*c,-0.0041960863*s-0.7034186147*a+1.707614701*c];if(u.some((f)=>f<-0.0001||f>1.0001))return;return u.map((f)=>{let l=Math.min(1,Math.max(0,f));return Math.round(255*(l<=0.0031308?12.92*l:1.055*l**0.4166666666666667-0.055))})}function Bs(t,e,n){if(Gn(t,n,e)!==void 0)return n;let r=0,i=n;for(let o=0;o<24;o++){let s=(r+i)/2;if(Gn(t,s,e)===void 0)i=s;else r=s}return r}function Qe(t,e,n){return`#${(Gn(t,Bs(t,n,e),n)??[0,0,0]).map((i)=>i.toString(16).padStart(2,"0")).join("")}`}function r3(t,e){let{l:n,c:r}=xt(t);return Qe(n,r,(e+360)%360)}function i3(t,e,n){let{l:r,c:i,h:o}=xt(t),s=St(e)<0.18,a=(f)=>Qe(s?r+(1-r)*f:r*(1-f),i,o);if($t(a(1),e)<n+hE)return a(1);let c=0,u=1;for(let f=0;f<30;f++){let l=(c+u)/2;if($t(a(l),e)>=n+hE)u=l;else c=l}return a(u)}function o3(t,e){let{l:n,c:r,h:i}=xt(t),o=0,s=n;for(let a=0;a<30;a++){let c=(o+s)/2;if(St(Qe(c,r,i))<=e-0.005)o=c;else s=c}return Qe(o,r,i)}function s3(t,e,n){let r=Oe[e],[i,o]=[xt(t[e]),xt(t[e+8])],s=(f,l)=>n.has(f)?[l]:Array.from({length:2*r.width+1},(d,h)=>(r.center-r.width+h+360)%360),a=(f,l,d)=>Or.every((h)=>{let m=(f>8?8:0)+h;if(m===f)return!0;let p=xt(t[m]);return p.c<xi||Pe(p.h,l)>=No+1||Math.abs(p.l-d)>=To}),c,u=Number.POSITIVE_INFINITY;for(let f of s(e,i.h)){if(!n.has(e)&&!a(e,f,i.l))continue;for(let l of s(e+8,o.h)){if(Pe(f,l)>nn-ig||!n.has(e+8)&&!a(e+8,l,o.l))continue;let d=Pe(f,i.h)+Pe(l,o.h);if(d<u)u=d,c=[f,l]}}return c}class pE{theme;moves=[];constructor(t){this.theme={...t,ansi:[...t.ansi]}}set(t,e,n){let r=this.get(t);if(n===r)return;if(this.moves.push({slot:t,rule:e,from:r,to:n}),t==="foreground")this.theme.foreground=n;else if(t==="selection")this.theme.selectionBackground=n;else this.theme.ansi[Number(t.slice(4))]=n}get(t){if(t==="foreground")return this.theme.foreground;if(t==="selection")return this.theme.selectionBackground;return this.theme.ansi[Number(t.slice(4))]}rehue(t,e,n){this.set(`ansi${t}`,e,r3(this.theme.ansi[t],n))}roles(){let t=new Set(this.theme.signatureSlots);for(let{slot:n,hue:r}of Pr(this.theme)){let i=Oe[bn(n)];this.rehue(n,"ansi-role",i.center+mE(i.center,r)*(i.width-ig))}for(let{normal:n,gap:r}of Vn(this.theme)){if(r<=nn)continue;let[i,o]=t.has(`ansi${n+8}`)?[n+8,n]:[n,n+8],s=xt(this.theme.ansi[i]).h,a=xt(this.theme.ansi[o]).h;this.rehue(o,"bright-follows",s+mE(s,a)*(nn-ig))}let e=Ho(this.theme);for(let[n,r]of Zn(this.theme)){let i=bn(e.has(r)?n:r),o=s3(this.theme.ansi,i,e);if(o===void 0)continue;this.rehue(i,"distinct",o[0]),this.rehue(i+8,"distinct",o[1])}}readability(){let t=new Set(this.theme.waive),{background:e}=this.theme,n=(r,i,o,s=e)=>{if(t.has(r))return;for(let a of i)if($t(this.get(a),s)<o)this.set(a,r,i3(this.get(a),s,o))};if(n("foreground",["foreground"],7),n("accents",n3.map((r)=>`ansi${r}`),3),n("light-ansi",["ansi7","ansi15"],7),n("ansi8-visible",["ansi8"],1.6),!t.has("ansi0-dark")&&St(this.get("ansi0"))>0.15)this.set("ansi0","ansi0-dark",o3(this.get("ansi0"),0.15));n("selection",["selection"],7,this.theme.foreground)}net(){return[...new Set(this.moves.map((t)=>t.slot))].flatMap((t)=>{let e=this.moves.filter((i)=>i.slot===t),n=e[0].from,r=this.get(t);return n===r?[]:[{slot:t,rule:[...new Set(e.map((i)=>i.rule))].join(", "),from:n,to:r}]})}}function Ql(t){let e=new pE(t);for(let n=0;n<e3;n++)if(e.readability(),e.roles(),Xn(e.theme).length===0)break;return{theme:e.theme,moves:e.net(),left:Xn(e.theme)}}var po=[{key:"background",label:"Background",min:0,max:0.5,step:0.01,digits:2},{key:"foreground",label:"Foreground",min:0.5,max:1,step:0.01,digits:2},{key:"hue",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0},{key:"tint",label:"Tint",min:0,max:0.1,step:0.005,digits:3},{key:"lightness",label:"Accent lightness",min:0.4,max:0.95,step:0.01,digits:2},{key:"chroma",label:"Accent chroma",min:0,max:0.3,step:0.005,digits:3},{key:"brights",label:"Brights",min:-0.2,max:0.2,step:0.01,digits:2}],vc={background:0.21,foreground:0.88,hue:265,tint:0.02,lightness:0.72,chroma:0.12,brights:0.06},gE=(t,e,n)=>Math.min(n,Math.max(e,t));function og(t,e,n){let r=t[e.key]+e.step*n,i=e.wraps?(r%e.max+e.max)%e.max:gE(r,e.min,e.max);return{...t,[e.key]:Math.round(i*1e4)/1e4}}function pi(t){let e=(r,i,o)=>Qe(gE(r,0,1),i,o),n=Array.from({length:16},()=>"#000000");n[0]=e(t.background+0.06,t.tint,t.hue),n[8]=e(t.background+0.25,t.tint,t.hue),n[7]=e(t.foreground-0.06,t.tint/2,t.hue),n[15]=e(t.foreground+0.06,t.tint/2,t.hue);for(let r of Or){let i=Oe[r].center;n[r]=e(t.lightness,t.chroma,i),n[r+8]=e(t.lightness+t.brights,t.chroma,i)}return{background:e(t.background,t.tint,t.hue),foreground:e(t.foreground,t.tint/2,t.hue),cursor:e(t.lightness+t.brights,Math.max(t.chroma,0.08),t.hue),selection:e(t.background+0.1,t.tint*2,t.hue),ansi:n}}var Bn=["background","foreground","cursor","selection",...Array.from({length:16},(t,e)=>`ansi${e}`)],T=["Background","Foreground","Cursor","Selection"],pn=["Black","Red","Green","Yellow","Blue","Magenta","Cyan","White"],a3=["Behind every cell","Plain text","The cursor block","Selected text","Text on colored bars, dark shades","Errors, deleted lines, failed tests","Success, added lines, prompts","Warnings, commit hashes, skipped tests","Directories, info, keywords","Keywords, branches, pictures in ls","Links, diff hunks, types","Light shades, text in some programs","Comments, muted text, suggestions"],br=T.length+pn.length,mn=[{key:"l",label:"Lightness",min:0,max:1,step:0.01,digits:2},{key:"c",label:"Chroma",min:0,max:0.37,step:0.005,digits:3},{key:"h",label:"Hue",min:0,max:360,step:1,digits:0,wraps:!0}],bE=5,c3=5,re=mn.length,Us=["this","pair","normals","brights","accents"],tf=[1,2,3,4,5,6,9,10,11,12,13,14],wE=tf.filter((t)=>t<8).map((t)=>T.length+t),$E=tf.filter((t)=>t>8).map((t)=>T.length+t);function sg(t,e){let n=e-T.length;if(n<0||t==="this")return[e];if(t==="pair")return[T.length+n%8,T.length+8+n%8];let r=t==="normals"?wE:t==="brights"?$E:[...wE,...$E];return r.includes(e)?r:[e]}function u3(){return Array.from({length:br},(t,e)=>e<T.length?[e]:[e,e+8]).flat()}function l3(t){let e=t.trim();return/^https?:\/\/\S+$/i.test(e)||Gs(e).length>0}function tn(t){return[t.background,t.foreground,t.cursor,t.selection,...t.ansi]}function ie(t){let[e,n,r,i,...o]=t;return{background:e,foreground:n,cursor:r,selection:i,ansi:o}}function Ge(t){if(t<T.length)return{name:T[t],about:Bn[t]};let e=t-T.length,n=pn[e%8];return e<8?{name:n,about:`ANSI ${e}`}:{name:`Bright ${n.toLowerCase()}`,about:`ANSI ${e}`}}function SE(t){let e=t-T.length;if(e>=9&&e<=15)return`Bold or bright ${pn[e-8].toLowerCase()} text`;return a3[t]}var go=(t,e,n)=>Math.min(n,Math.max(e,t));function kE(t){return t.length===1?t.toLowerCase():t}function f3(t){return go(Math.round(t),0,255).toString(16).padStart(2,"0")}function yE(t){let e=t.trim().toLowerCase(),n=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/.exec(e);if(n){let o=n[1];return`#${o.length===3?[...o].map((s)=>s+s).join(""):o}`}let r=/^rgb\(\s*(\d+)[\s,]+(\d+)[\s,]+(\d+)\s*\)$/.exec(e);if(r)return`#${r.slice(1,4).map((o)=>f3(Number(o))).join("")}`;let i=/^oklch\(\s*([\d.]+)(%?)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:deg|°)?\s*\)$/.exec(e);if(i){let o=Number(i[1])/(i[2]?100:1);return Qe(go(o,0,1),Number(i[3]),Number(i[4])%360)}return}function bo(t){let e=Ie.find((n)=>n.rule===t);return e?.min??e?.max??0}function wr(t,e,n){let r=ie(t);return{name:"draft",background:r.background,foreground:r.foreground,selectionBackground:r.selection,ansi:r.ansi,waive:n,signatureSlots:e}}function d3(t,e){let n=t-T.length,r=t<=1?"foreground":t===3?"selection":n===7||n===15?"light-ansi":n===8?"ansi8-visible":tf.includes(n)?"accents":void 0;return{against:t===0||t===3?1:0,floor:r===void 0||e.includes(r)?void 0:bo(r)}}function lg(t,e,n,r){let i=wr(t,e,n),{background:o,foreground:s,selection:a,ansi:c}=ie(t),u=(f,l,d)=>$t(l,d)<bo(r)?[f]:[];if(r==="foreground")return $t(s,o)<bo(r)?[1,0]:[];if(r==="selection")return $t(s,a)<bo(r)?[3,1]:[];if(r==="accents")return tf.flatMap((f)=>u(T.length+f,c[f],o));if(r==="light-ansi")return[7,15].flatMap((f)=>u(T.length+f,c[f],o));if(r==="ansi8-visible")return u(T.length+8,c[8],o);if(r==="ansi0-dark")return St(c[0])>bo(r)?[T.length]:[];if(r==="ansi-role")return Pr(i).map(({slot:f})=>T.length+f);if(r==="bright-follows")return Vn(i).filter(({gap:f})=>f>nn).flatMap(({normal:f})=>[T.length+f,T.length+f+8]);if(r==="distinct")return Zn(i).flatMap(([f,l])=>[T.length+f,T.length+l]);return[]}function fg(t,e,n){return new Set(Bn.flatMap((r,i)=>dg(t,e,n,i).some((o)=>o.ok===!1)?[i]:[]))}function gr(t,e,n,r,i){let o=$t(t,e),s=bo(n);if(i.includes(n))return{ok:void 0,text:`${r} ${o.toFixed(2)}:1 · waived`};return{ok:o>=s,text:`${r} ${o.toFixed(2)}:1 · ≥ ${s}`}}function dg(t,e,n,r){let i=ie(t),o=wr(t,e,n);if(r===0){let $=[1,2,3,4,5,6,9,10,11,12,13,14].reduce((k,v)=>$t(i.ansi[k],i.background)<=$t(i.ansi[v],i.background)?k:v);return[gr(i.foreground,i.background,"foreground","Foreground on it",n),gr(i.ansi[$],i.background,"accents",`Weakest, ANSI ${$},`,n),gr(i.ansi[8],i.background,"ansi8-visible","ANSI 8 on it",n)]}if(r===1)return[gr(i.foreground,i.background,"foreground","On background",n),gr(i.foreground,i.selection,"selection","On the selection",n)];if(r===2)return[{ok:void 0,text:`On background ${$t(i.cursor,i.background).toFixed(2)}:1`}];if(r===3)return[gr(i.foreground,i.selection,"selection","Foreground on it",n)];let s=r-T.length,a=i.ansi[s];if(s===0){let b=St(a),$=bo("ansi0-dark");return[n.includes("ansi0-dark")?{ok:void 0,text:`Luminance ${b.toFixed(3)} · waived`}:{ok:b<=$,text:`Luminance ${b.toFixed(3)} · ≤ ${$}`}]}if(s===7||s===15)return[gr(a,i.background,"light-ansi","On background",n)];if(s===8)return[gr(a,i.background,"ansi8-visible","On background",n)];let c=[gr(a,i.background,"accents","On background",n)],u=xt(a),f=bn(s),l=Oe[f],d=`${l.name} ${l.center}±${l.width}°`;if(u.c<xi)c.push({ok:void 0,text:"Too grey to have a hue"});else if(Ho(o).has(s))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · a signature, free of ${d}`});else if(n.includes("ansi-role"))c.push({ok:void 0,text:`Hue ${u.h.toFixed(0)}° · ${d} waived`});else{let b=Pe(u.h,l.center)-l.width;c.push(b>0?{ok:!1,text:`Hue ${u.h.toFixed(0)}° · ${b.toFixed(0)}° outside ${d}`}:{ok:!0,text:`Hue ${u.h.toFixed(0)}° · in ${d}`})}let h=s<8?s+8:s-8,m=Vn(o).find((b)=>b.normal===f);if(m)c.push(n.includes("bright-follows")?{ok:void 0,text:`${m.gap.toFixed(0)}° from ANSI ${h} · waived`}:{ok:m.gap<=nn,text:`${m.gap.toFixed(0)}° from ANSI ${h} · ≤ ${nn}°`});let p=Zn(o).flatMap(([b,$])=>b===s?[$]:$===s?[b]:[]);if(p.length>0&&!n.includes("distinct"))c.push({ok:!1,text:`Reads as ANSI ${p.join(", ")} · within ${No}° and ${To} lightness`});return c}function hg(t,e,n){let r=wn(wr(t,e,n));return Ie.map((i,o)=>{let s=r[o],a=n.includes(i.rule),c=a||Number.isNaN(s)?void 0:(i.min===void 0||s>=i.min)&&(i.max===void 0||s<=i.max);return{ok:c,label:i.label,value:Number.isNaN(s)?"—":Number.isInteger(s)?String(s):s.toFixed(2),bound:a?"waived":i.min!==void 0?`≥ ${i.min}`:i.max!==void 0?`≤ ${i.max}`:"",slots:c===!1?lg(t,e,n,i.rule):[]}})}var h3=new Set(["reset","reset-all","hex","paste","fix","open","tune","sig","follow"]),EE=mn[1].max;function ug(t){let[e,n,r]=ot(t);return e===n&&n===r}function m3(t,e){let n=xt(e);if(!ug(e))return n;let r=[0,1,3,2].map((i)=>t[i]).find((i)=>!ug(i));return{...n,h:r?xt(r).h:vc.hue}}function ME(t,e,n){if(t==="rgb"){let[r,i,o]=ot(e);return`rgb(${r} ${i} ${o})`}if(t==="oklch")return`oklch(${n.l.toFixed(3)} ${n.c.toFixed(3)} ${n.h.toFixed(0)})`;return e}function ag(t,e){return Math.floor(Bs(t,e,EE)*1e4)/1e4}function cg(t,e){return{l:e.l-t.l,c:e.c-t.c,h:((e.h-t.h)%360+540)%360-180}}function vE(t,e){let n=t.wraps?t.max-t.step:t.max;return Math.min(n,Math.round((t.min+(t.max-t.min)*e)/t.step)*t.step)}class mg{mode;seeds=vc;field=0;list;lch;start;original;signature;row=0;col=0;channel=0;scope="this";view="slot";scene=0;typing;overlay;quitting=!1;compare=!1;notice;filter="";pick=0;result;wants;pictures;inspect=!1;spot;format="hex";pic=!0;menu;entry=0;changedOnly=!1;where=!1;size;copied;startPictures;options;fresh;tone;startSignature;seeded=!1;tuneFrom;holds=new Map;clip;history=[];future=[];lastEdit;links=new Map;unlinked=new Set;offsets=new Map;constructor(t){this.options=t,this.tone=t.tone===!0,this.fresh=t.colors===void 0,this.mode=this.fresh?"seeds":"list",this.list=tn(t.colors??pi(this.seeds)),this.lch=this.lchs(),this.start=[...this.list],this.original=t.original?tn(t.original):[...this.list],this.signature=[...t.signature],this.startSignature=[...t.signature],this.pictures=t.pictures??0,this.startPictures=this.pictures,this.chain(this.original)}chain(t){this.links=new Map,this.unlinked=new Set,this.offsets=new Map;for(let e=0;e<8;e++){let n=T.length+e,r=n+8,i=this.lchOf(t[n]),o=this.lchOf(t[r]);if(i.c>=xi&&o.c>=xi&&Pe(i.h,o.h)<=3)this.links.set(r,n),this.offsets.set(r,cg(i,o))}}pair(t){if(t<T.length)return;let e=T.length+(t-T.length)%8,n=e+8;return{normal:e,bright:n,on:this.linkOf(n)!==void 0,lift:this.lch[n].l-this.lch[e].l}}linkOf(t){let e=this.links.get(t);return e!==void 0&&!this.unlinked.has(t)?e:void 0}changed(t){return this.list[t]!==this.original[t]}visible(t){return!this.changedOnly||this.changed(t)}changes(){return this.list.filter((t,e)=>this.changed(e)).length}slotAt(t,e){return t<T.length?t:t+(e===1?8:0)}get added(){return Math.max(0,this.pictures-this.startPictures)}found(t){this.pictures=t.count,this.notice=t.note}get waive(){return this.options.waive??[]}get held(){return this.holds.get(this.slot())}colors(){return ie(this.list)}edited(){return{colors:this.colors(),signature:[...this.signature]}}shown(){return this.compare?this.start:this.list}slot(){return this.row<T.length?this.row:this.row+(this.col===1?8:0)}dirty(){return this.seeded||this.pictures!==this.startPictures||this.list.some((t,e)=>t!==this.start[e])||this.signature.join()!==this.startSignature.join()}resettable(){return this.dirty()||this.tone&&this.list.some((t,e)=>t!==this.original[e])}misses(){return fg(this.list,this.signature,this.waive)}failing(){return Xn(wr(this.list,this.signature,this.waive))}choices(){let t=this.filter.toLowerCase();return(this.options.palettes??[]).filter((e)=>e.name.toLowerCase().includes(t))}paste(t){if(this.notice=void 0,this.overlay==="open"){this.filter+=t.replace(/\s+/g,"").toLowerCase(),this.pick=0;return}if(this.overlay)return;if(!this.tone&&t.trim()===""){this.findPictures({clipboard:!0});return}if(!this.tone&&l3(t)){this.findPictures({paste:t});return}if(this.mode==="seeds")return;let e=this.options.decode?.(t);if(e){this.remember("open"),this.list=tn(e),this.lch=this.lchs(),this.chain(this.list),this.notice="Took the colors of the share code";return}let n=yE(t);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"paste")}press(t){if(this.notice=void 0,t==="ctrl-c"){this.result="cancelled";return}if(this.quitting){if(this.quitting=!1,t==="y"||t==="Y")this.result="cancelled";return}if(this.typing!==void 0){this.type(t);return}if(this.overlay==="keys"){this.overlay=void 0;return}if(this.overlay==="open"){this.openKey(t);return}if(this.menu){this.menuKey(t);return}if(t==="?"){this.overlay="keys";return}if(this.inspect&&this.mode==="list"&&this.inspectKey(t))return;if(this.tone&&(t==="ctrl-v"||t==="alt-v"||t==="p"))return;if(t==="ctrl-v"||t==="alt-v"){this.findPictures({clipboard:!0});return}if(t==="p"&&this.mode!=="tune"){this.findPictures();return}if(t===" "&&this.mode!=="seeds"){this.compare=!this.compare;return}if(this.compare&&t==="esc"){this.compare=!1;return}if(t==="g"&&this.mode!=="seeds"){this.view=this.view==="slot"?"relations":"slot",this.inspect=!1,this.spot=void 0;return}let e=t==="j"?"down":t==="k"?"up":t;if(this.mode==="seeds")this.seedKey(e);else if(this.mode==="tune")this.tuneKey(e);else this.listKey(e)}select(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;if(this.mode==="tune"){if(t===this.slot())return;this.tuneKey("enter")}this.notice=void 0,this.seat(t),this.lastEdit=void 0}seat(t){if(this.row=t<T.length?t:T.length+(t-T.length)%8,t>=T.length)this.col=t-T.length>=8?1:0}grip(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return!1;if(this.notice=void 0,this.mode==="list")this.tune();return this.channel=t,!0}slide(t,e){if(!this.grip(t))return;let n=Math.min(1,Math.max(0,e));if(t===re){this.reach(21**n);return}this.put(vE(mn[t],n))}sow(t,e){let n=po[t];if(this.mode!=="seeds"||this.overlay||this.quitting||!n)return;this.notice=void 0,this.field=t;let r=Math.min(1,Math.max(0,e));this.seeds=og({...this.seeds,[n.key]:vE(n,r)},n,0),this.list=tn(pi(this.seeds)),this.lch=this.lchs()}scroll(t){let e=(n,r)=>Math.min(r,Math.max(0,n+t));if(this.overlay==="open")this.pick=e(this.pick,Math.max(0,this.choices().length-1));else if(this.overlay||this.quitting||this.typing!==void 0)return;else if(this.mode==="seeds")this.field=e(this.field,po.length-1);else if(this.mode==="tune")this.channel=0,this.step(-t);else this.row=e(this.row,br-1),this.lastEdit=void 0}lchOf(t){return m3(this.list,t)}lchs(){return this.list.map((t)=>this.lchOf(t))}seedKey(t){let e=po.length;if(t==="up"||t==="down")this.field=(this.field+(t==="up"?e-1:1))%e;else if(t==="home"||t==="end")this.field=t==="home"?0:e-1;else if(t==="left"||t==="right"||t==="shift-left"||t==="shift-right"){let n=po[this.field],r=(t.endsWith("left")?-1:1)*(t.startsWith("shift")?n.wraps?10:bE:1);this.seeds=og(this.seeds,n,r),this.list=tn(pi(this.seeds)),this.lch=this.lchs()}else if(t==="enter")this.leaveSeeds();else if(t==="o")this.openPalettes();else if(t==="esc")this.leave()}leaveSeeds(){this.start=[...this.list],this.original=[...this.list],this.chain(this.original),this.seeded=!0,this.mode="list"}leave(){if(this.dirty())this.quitting=!0;else this.result="cancelled"}findPictures(t){if(!this.options.find){this.notice="Pictures need Ghostty, iTerm2 or kitty, outside tmux";return}this.wants=t?{start:t}:{}}openPalettes(){if((this.options.palettes??[]).length>0)this.overlay="open",this.pick=0;else this.notice="No other palettes to take colors from"}listKey(t){if(t==="up"||t==="down"){let e=t==="up"?-1:1;this.land(this.row+e,e),this.lastEdit=void 0}else if(t==="home"||t==="end")this.land(t==="home"?0:br-1,t==="home"?1:-1);else if(t==="pgup"||t==="pgdn")this.land(t==="pgup"?0:T.length,1);else if(t==="left"||t==="right"){let e=t==="left"?0:1;if(this.row>=T.length&&this.visible(this.slotAt(this.row,e)))this.col=e,this.lastEdit=void 0}else if(this.builderKey(t))return;else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1;else if(t==="n"||t==="N")this.nextMiss(t==="n"?1:-1);else if(t==="enter"||t==="tab")this.tune();else if(t==="#")this.typing="";else if(t==="c")this.clip=this.list[this.slot()],this.notice=`Copied ${this.clip}`;else if(t==="v")if(this.clip)this.set(this.slot(),this.clip,"paste");else this.notice="Nothing copied yet — c copies a slot";else if(t==="r")this.set(this.slot(),this.original[this.slot()],"reset");else if(t==="R")this.remember("reset-all"),this.list=[...this.original],this.lch=this.lchs();else if(t==="=")this.follow();else if(t==="*"&&!this.tone)this.mark();else if(t==="f")this.fix();else if(t==="o"&&!this.tone)this.openPalettes();else if(t==="u")this.undo();else if(t==="ctrl-r")this.redo();else if(t==="s"||t==="ctrl-s")this.save();else if(t==="esc")this.leave()}viewport(t,e){this.size={cols:t,rows:e}}layout(){return this.size&&this.view==="slot"?$c(this.size.cols,this.size.rows,this.scene):void 0}get roomy(){return this.layout()!==void 0}reseat(){if(!this.visible(this.slot()))this.land(this.row,1)}rowShown(t){return this.visible(this.slotAt(t,0))||t>=T.length&&this.visible(this.slotAt(t,1))}land(t,e){for(let n=0;n<br;n++){let r=((t+e*n)%br+br)%br;if(this.rowShown(r)){if(this.row=r,r>=T.length&&!this.visible(this.slotAt(r,this.col)))this.col=1-this.col;return}}}builderKey(t){if(["i","m","w","x","I"].includes(t)&&!this.roomy)return this.notice=this.view==="relations"?"g goes back to the builder":"The builder needs a window of at least 96×28",!0;if(t==="i")this.startInspect();else if(t==="l")this.linkKey();else if(t==="m")this.changedOnly=!this.changedOnly,this.reseat(),this.notice=this.changedOnly?this.changes()>0?void 0:"Nothing changed yet":void 0;else if(t==="b")this.pic=!this.pic;else if(t==="w")this.where=!this.where;else if(t==="x"&&this.options.exports)this.menu="export",this.entry=0;else if(t==="I")this.menu="import",this.entry=0;else return!1;return!0}menuKey(t){let e=this.menu==="export"?3:2;if(t==="esc")this.menu=void 0;else if(t==="up"||t==="down"||t==="k"||t==="j")this.entry=(this.entry+(t==="up"||t==="k"?e-1:1))%e;else if(t==="enter")this.choose(this.entry)}choose(t){let e=this.menu;if(this.menu=void 0,e==="import"){if(t===0)this.openPalettes();else this.notice=this.options.decode?"Paste a share link or a tt2: code into this window":"Share codes are not read here";return}let n=this.options.exports;if(e!=="export"||!n)return;try{let r=this.edited(),i=n.code(r);this.copied=t===0?i:t===1?`${n.command} ${i}`:n.toml(r),this.notice=`Copied ${t===0?"the share code":t===1?"the add command":"the palette file"} — paste it where you need it`}catch(r){this.notice=r instanceof Error?r.message:String(r)}}startInspect(){let t=this.layout();if(!t){this.notice="The builder needs a window of at least 96×28";return}this.inspect=!0,this.spot=VS(t,this.slot())}inspectKey(t){let e=this.layout();if(!e)return this.inspect=!1,!1;let r={left:"left",right:"right",up:"up",k:"up",down:"down",j:"down",tab:"next","shift-tab":"previous"}[t];if(t==="i"||t==="esc")this.inspect=!1,this.spot=void 0;else if(r)this.spot=ZS(e,ql(e,this.spot),r);else if(t==="shift-left"||t==="shift-right")this.scene+=t==="shift-left"?-1:1,this.spot=void 0;else if(t==="enter")this.jump();else return!1;return!0}point(t){if(this.mode!=="seeds"&&!this.overlay&&!this.quitting&&this.typing===void 0&&this.layout())this.inspect=!0,this.spot=t}slotsHere(){let t=this.layout();return t&&this.spot?XS(t,this.spot):void 0}jump(){let t=this.slotsHere();if(!t)return;let e=t.ground!==0?t.ground:t.text;this.inspect=!1,this.spot=void 0,this.show(e),this.select(e)}show(t){if(!this.visible(t))this.changedOnly=!1}openSlot(t){if(this.mode==="seeds"||this.typing!==void 0||this.overlay||this.quitting)return;let e=this.mode==="tune"&&t===this.slot();if(this.mode==="tune")this.tuneKey("enter");if(e)return;if(this.show(t),this.select(t),this.mode==="list")this.tune()}dismiss(){if(this.mode!=="tune"||this.overlay||this.quitting)return;this.typing=void 0,this.tuneKey("enter")}plane(t,e){if(!this.grip(0))return;this.channel=0,this.put(t),this.channel=1,this.put(e)}linkKey(){let t=this.slot();if(t<T.length){this.notice="l links a bright to its normal — pick an ANSI row";return}let e=T.length+(t-T.length)%8,n=e+8,r=`${Ge(n).name} and ${Ge(e).name.toLowerCase()}`;if(this.mode!=="tune")this.remember("link");if(this.linkOf(n)!==void 0){this.unlinked.add(n),this.notice=`${r} move apart`;return}this.links.set(n,e),this.unlinked.delete(n),this.offsets.set(n,cg(this.lch[e],this.lch[n])),this.notice=`${r} move together`}nextMiss(t){let e=u3(),n=this.misses();if(n.size===0){this.notice="The gate passes";return}let r=e.indexOf(this.slot());for(let i=1;i<=e.length;i++){let o=e[((r+t*i)%e.length+e.length)%e.length];if(n.has(o)){this.seat(o);return}}}tune(){this.remember("tune"),this.tuneFrom={list:[...this.list],lch:[...this.lch]},this.holds=new Map,this.hold(),this.mode="tune"}hold(){for(let t of this.scoped())if(!this.holds.has(t))this.holds.set(t,this.lch[t].c)}scoped(){return sg(this.scope,this.slot())}tuneKey(t){let e=this.channel===re;if(t==="tab"||t==="shift-tab")this.channel=e?0:re;else if(t==="up"||t==="down"||t==="pgup"||t==="pgdn")this.channel=0,this.step((t==="up"||t==="pgup"?1:-1)*(t.startsWith("pg")?bE:1));else if(t==="left"||t==="right"){let n=t==="left"?-1:1;if(e)this.reach(this.ratio()+n*0.1);else this.channel=1,this.step(n)}else if(t==="shift-left"||t==="shift-right"){let n=t==="shift-left"?-1:1;if(e)this.reach(this.ratio()+n*0.5);else this.channel=2,this.step(n*c3)}else if((t===","||t===".")&&!e)this.channel=2,this.step(t===","?-1:1);else if(t==="home"||t==="end")if(e)this.reach(t==="home"?this.partner().floor??1:21);else{let n=mn[this.channel];this.put(t==="home"?n.min:n.wraps?n.max-n.step:n.max)}else if(/^[0-9]$/.test(t))if(e){if(t!=="0")this.reach(Number(t))}else{let n=mn[this.channel];this.put(n.min+(n.max-n.min)*Number(t)/10)}else if(t==="a")this.rescope();else if(t==="#")this.typing="";else if(t==="l")this.linkKey();else if(t==="s"||t==="ctrl-s")this.tuneKey("enter"),this.save();else if(t==="enter"){if(this.tuneFrom&&this.list.every((n,r)=>n===this.tuneFrom?.list[r]))this.history.pop();this.endTune()}else if(t==="esc"){if(this.tuneFrom)this.list=[...this.tuneFrom.list],this.lch=[...this.tuneFrom.lch],this.history.pop();this.endTune()}}rescope(){if(this.slot()<T.length){this.notice="A base color moves alone";return}let t=Us.indexOf(this.scope);for(let e=1;e<=Us.length;e++){let n=Us[(t+e)%Us.length];if(n==="this"||sg(n,this.slot()).length>1){this.scopeTo(n);return}}}scopeTo(t){if(this.mode!=="tune"||this.typing!==void 0||this.quitting||this.slot()<T.length)return;if(t!=="this"&&sg(t,this.slot()).length<=1)return;this.scope=t,this.hold();let e=this.scoped().length;this.notice=e>1?`${e} slots move together`:"This slot moves alone"}endTune(){this.tuneFrom=void 0,this.holds=new Map,this.mode="list"}partner(){return d3(this.slot(),this.waive)}ratio(){return $t(this.list[this.slot()],this.list[this.partner().against])}origin(){let t=this.slot(),e=this.original[t];if(e===this.list[t])return;return{hex:e,lch:this.lchOf(e),ratio:$t(e,this.original[this.partner().against])}}reach(t){let e=this.slot(),n=this.list[this.partner().against],r=this.lch[e],i=this.holds.get(e)??r.c,o=(d)=>Qe(d,Math.min(i,ag(d,r.h)),r.h),s=(d)=>$t(o(d),n),a=St(this.list[e])>=St(n),c=xt(n).l,u=Math.max(1,Math.round(t*100)/100),f=a?1:0,l;if(s(f)<u)l=f,this.notice=`The ratio stops at ${s(f).toFixed(2)}:1 on this side of the color it is read against`;else{let d=c,h=f;for(let m=0;m<24;m++){let p=(d+h)/2;if(s(p)>=u)h=p;else d=p}l=h}this.place(e,l,i,r.h);for(let d=0;d<40&&l!==f&&$t(this.list[e],n)<u;d++)l=a?Math.min(1,l+0.001):Math.max(0,l-0.001),this.place(e,l,i,r.h);this.lch[e]={...this.lch[e],l:Math.round(l*1e4)/1e4}}step(t){let e=mn[this.channel],n=this.lch[this.slot()][e.key];this.put(n+e.step*t)}put(t){let e=this.slot(),n=mn[this.channel],r=n.wraps?(t%n.max+n.max)%n.max:go(t,n.min,n.max),i=Math.round(r*1e4)/1e4,o=this.lch[e],s=this.scoped().filter((u)=>u!==e),a=(u)=>Math.round(u*1e4)/1e4;if(n.key==="c"){let u=ag(o.l,o.h);if(i>u)this.notice=`Chroma stops at ${u.toFixed(3)}, the sRGB edge for this lightness and hue`;let f=Math.min(i,u),l=f-o.c;this.holds.set(e,f),this.place(e,o.l,f,o.h);for(let d of s){let h=this.lch[d],m=a(go((this.holds.get(d)??h.c)+l,0,EE));this.holds.set(d,m),this.place(d,h.l,m,h.h)}this.trail([e,...s]);return}let c=n.key==="h"?((i-o.h)%360+540)%360-180:i-o.l;if(this.place(e,n.key==="l"?i:o.l,this.holds.get(e)??o.c,n.key==="h"?i:o.h),n.key==="h"&&ug(this.list[e]))this.notice="A grey shows no hue — raise its chroma first";for(let u of s){let f=this.lch[u];this.place(u,n.key==="l"?a(go(f.l+c,0,1)):f.l,this.holds.get(u)??f.c,n.key==="h"?a(((f.h+c)%360+360)%360):f.h)}this.trail([e,...s])}trail(t){let e=new Set(t);for(let[n,r]of this.links){if(this.unlinked.has(n))continue;if(e.has(n)&&!e.has(r))this.unlinked.add(n);else if(e.has(r)&&!e.has(n)){let i=this.lch[r],o=this.offsets.get(n);this.place(n,go(i.l+o.l,0,1),Math.max(0,i.c+o.c),((i.h+o.h)%360+360)%360)}}}place(t,e,n,r){let i=Math.min(n,ag(e,r));this.lch[t]={l:e,c:i,h:r},this.list[t]=Qe(e,i,r)}take(t,e){if(this.mode==="tune")this.list[this.slot()]=t,this.lch[this.slot()]=this.lchOf(t),this.holds.set(this.slot(),this.lch[this.slot()].c),this.trail([this.slot()]);else this.set(this.slot(),t,e)}type(t){let e=this.typing??"";if(t==="esc")this.typing=void 0;else if(t==="enter"){let n=yE(e);if(!n){this.notice="Not a color — #rrggbb, rgb(r g b) or oklch(l c h)";return}this.typing=void 0,this.take(n,"hex")}else{let n=lo(e,kE(t),(r)=>/^[0-9a-z#(),.% ]$/.test(r)&&e.length<28);if(n!==void 0)this.typing=n}}openKey(t){let e=this.choices();if(t==="esc")this.overlay=void 0,this.filter="";else if(t==="up"||t==="down"){let n=Math.max(1,e.length);this.pick=(this.pick+(t==="up"?n-1:1))%n}else if(t==="home"||t==="end")this.pick=t==="home"?0:Math.max(0,e.length-1);else if(t==="enter"){let n=e[this.pick];if(!n)return;if(this.remember("open"),this.list=tn(n.colors),this.lch=this.lchs(),this.chain(this.list),this.overlay=void 0,this.filter="",this.notice=`Took the colors of ${n.name}`,this.mode==="seeds")this.leaveSeeds()}else{let n=lo(this.filter,kE(t),(r)=>/^[a-z0-9@/-]$/.test(r));if(n!==void 0)this.filter=n,this.pick=0}}remember(t){if(t!==this.lastEdit||h3.has(t))this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.future=[];this.lastEdit=t}set(t,e,n){if(!he(e)||this.list[t]===e)return;this.remember(n),this.list[t]=e,this.lch[t]=this.lchOf(e),this.trail([t])}follow(){if(this.row<T.length){this.notice="= works on an ANSI row — the bright takes its normal";return}let t=this.row,e=this.row+8,n=this.lch[t];this.remember("follow"),this.place(e,go(n.l+0.06,0,1),n.c,n.h),this.links.set(e,t),this.unlinked.delete(e),this.offsets.set(e,cg(n,this.lch[e])),this.seat(e),this.notice=`${Ge(e).name} follows ${Ge(t).name.toLowerCase()}`}mark(){let t=Bn[this.slot()];this.remember("sig");let e=this.signature.includes(t)?this.signature.filter((r)=>r!==t):[...this.signature,t],n=e.length>3?e[0]:void 0;this.signature=e.slice(-3),this.notice=this.signature.length===3?`Signature: ${this.signature.join(", ")}${n?` — ${n} dropped`:""}`:`The signature needs three slots — ${this.signature.length} marked`}fix(){let t=wr(this.list,this.signature,this.waive),{theme:e,moves:n,left:r}=Ql({...t,selectionBackground:t.selectionBackground,signatureSlots:this.signature});if(n.length===0){this.notice=Xn(t).length===0?"Already passes the gate":"No color change fixes it";return}this.remember("fix");let i=tn({...this.colors(),foreground:e.foreground,selection:e.selectionBackground,ansi:e.ansi}),o=this.list;this.list=i,this.lch=i.map((s,a)=>s===o[a]?this.lch[a]:this.lchOf(s)),this.notice=`Moved ${n.length} ${n.length===1?"color":"colors"}${r.length===0?" — passes the gate":" closer to the gate"}`}save(){let t=this.options.check(this.edited());if(t){this.notice=t;return}this.result="saved"}undo(){let t=this.history.pop();if(!t){this.notice="Nothing to undo";return}this.future.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}redo(){let t=this.future.pop();if(!t){this.notice="Nothing to redo";return}this.history.push({list:[...this.list],lch:[...this.lch],signature:[...this.signature]}),this.restore(t)}restore(t){this.list=[...t.list],this.lch=[...t.lch],this.signature=[...t.signature],this.lastEdit=void 0}}import{mkdirSync as C3,readFileSync as wg,writeFileSync as GE}from"node:fs";import{dirname as j3}from"node:path";import{isMainThread as _3,parentPort as BE,Worker as G3}from"node:worker_threads";var p3=new Set(["comic","4koma","monochrome","greyscale","sketch","lineart","speech_bubble"]),g3=new Set(["scenery","landscape","scenic","no_humans","wide_shot","very_wide_shot"]),b3=0.04,w3=0.1,$3=0.05,k3=4096;function y3(t){return new Set(t.cutouts.split(/\s+/).map((e)=>e.replace(/^~/,"")).filter(Boolean))}function v3(t,e,n,r=0){let{site:i,post:o}=t,s=new Set(o.tags),a=[...y3(i)].some((f)=>s.has(f)),c=Math.min(o.width,o.height),u=o.width>0&&o.height>0?o.width/o.height/(e.w/e.h):1;return(o.solo?2:0)+([...p3].some((f)=>s.has(f))?-3:0)+([...g3].some((f)=>s.has(f))?-1.5:0)+2*Math.min(1,c/e.h)+(a?1.5:-Math.min(1.5,Math.abs(Math.log(u))))+(n>0?1.5*Math.log1p(Math.max(0,o.score))/Math.log1p(n):0)+2*r}function ef(t,e,n=new Map){let r=new Map;for(let{site:i,post:o}of t)r.set(i,Math.max(r.get(i)??0,o.score));return t.map((i,o)=>({pick:i,at:o,score:v3(i,e,r.get(i.site)??0,n.get(i.post))})).sort((i,o)=>o.score-i.score||i.at-o.at).map(({pick:i})=>i)}function OE(t){let e=new Map;for(let r of t)e.set(r.site,[...e.get(r.site)??[],r]);let n=[];for(let r=0;n.length<t.length;r++)for(let i of e.values()){let o=i[r];if(o)n.push(o)}return n}function pg(t){let e=t/255;return e<=0.04045?e/12.92:((e+0.055)/1.055)**2.4}function xE(t,e,n){let[r,i,o]=[pg(t),pg(e),pg(n)],s=Math.cbrt(0.4122214708*r+0.5363325363*i+0.0514459929*o),a=Math.cbrt(0.2119034982*r+0.6806995451*i+0.1073969566*o),c=Math.cbrt(0.0883024619*r+0.2817188376*i+0.6299787005*o);return[0.2104542553*s+0.793617785*a-0.0040720468*c,1.9779984951*s-2.428592205*a+0.4505937099*c,0.0259040371*s+0.7827717662*a-0.808675766*c]}function PE(t,e){let n=e.map((s)=>xE(...ot(s))).filter(([,s,a])=>Math.hypot(s,a)>=b3);if(n.length===0)return 0;let r=Math.max(1,Math.floor(Math.sqrt(t.width*t.height/k3))),i=n.map(()=>0),o=0;for(let s=0;s<t.height;s+=r)for(let a=0;a<t.width;a+=r){let c=(s*t.width+a)*4;if(t.data[c+3]<128)continue;o++;let[u,f,l]=xE(t.data[c],t.data[c+1],t.data[c+2]);n.forEach(([d,h,m],p)=>{if(Math.hypot(u-d,f-h,l-m)<w3)i[p]=i[p]+1})}if(o===0)return 0;return i.reduce((s,a)=>s+Math.min(1,a/o/$3),0)/n.length}import{existsSync as gg,mkdirSync as IE,readFileSync as Ks}from"node:fs";import{homedir as P3}from"node:os";import{dirname as RE,join as wo}from"node:path";import{spawn as S3}from"node:child_process";var E3=30000,M3=3,x3=97,O3=`ObjC.import('Vision')
700
702
  ObjC.import('CoreImage')
701
703
  ObjC.import('CoreGraphics')
702
704
  function run(argv) {
@@ -715,63 +717,63 @@ function run(argv) {
715
717
  $.CIImage.imageWithCVPixelBuffer(buffer), $.NSURL.fileURLWithPath(argv[1]), $.kCIFormatRGBA8,
716
718
  $.CGColorSpaceCreateWithName($.kCGColorSpaceSRGB), $({}), error)
717
719
  if (!written) throw new Error('write failed')
718
- }`;function _s(){return process.platform==="darwin"}function Dl(t){return t>=K8&&t<=z8}function mc(t,e,n){return new Promise((r,i)=>{let o=U8("osascript",["-l","JavaScript","-e",q8,t,e],{stdio:["ignore","ignore","pipe"],signal:AbortSignal.any([n,AbortSignal.timeout(W8)])}),s="";o.stderr.on("data",(a)=>{s+=a}),o.on("error",i),o.on("close",(a)=>{if(a===0){r();return}i(Error(s.trim().split(`
719
- `).at(-1)||`osascript exited ${a}`))})})}var pS=90000;function Yl(t,e){let n=X(t),r=ge(t,e).flatMap((i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return o&&s&&V.some((a)=>a.key===o)?[{site:o,id:Number(s),...Qd(n,i)}]:[]});return r.length>0?r:void 0}function J8(t,e){let n=new Set(Nt(X(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(le(r)))}function gS(t,e){let n=new Set((e??[]).map((r)=>le(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(le(r)))}}async function Y8(t,e,n,r,i,o){let s=V.find((b)=>b.key===n.site);if(!s)throw Error(`no site called ${n.site}`);o("Fetching");let a=await _o(s,n.id,i);if(!a)throw Error("the post is gone");if(s!==ce&&a.md5)try{tu([a],await eu([a.md5],i))}catch{}let c=Qc(s,a)?Xc(s,a.id,i).then((b)=>{if(b)sa(a,b)},()=>{}):void 0;if(!Zc(s,a,Ai(process.env.TTHEME_FIND_RATING))||Yc(a,jo(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let u=En(a);if(!u)throw Error("too large to use");let f=mo(rn(s),"orig",`${n.id}.${u.ext}`),l;if(cg(f))l=new Uint8Array(Gs(f));else{o("Downloading");let b=Ni(s,a,u);l=await nu(b.site,b.url,i,($,k)=>o("Downloading",pl($,k))),L(f,l)}let d=Ar(l,Re),h=!1;if(Yn(d)===0&&_s()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let b=mo(rn(s),"cut",`${n.id}.png`);try{if(!cg(b))o("Cutting out"),hS(mS(b),{recursive:!0}),await mc(f,b,i);let $=Ar(new Uint8Array(Gs(b)),Re);if(Dl(Yn($)))d=$,h=!0}catch{}}await c;let m=Zd(e);o("Drawing"),uu(t,m,Mn(m,e.signatureSlots),d,{site:s.key,id:n.id,ext:u.ext,bytes:l,from:`${s.name} ${n.id} ${s.pageUrl(n.id)}`,artist:a.named.artist,source:oa(a.source),cut:h},{width:0,height:0},ti(t),qu(t));let p=ge(t,e.name).find((b)=>b.key===le(n));if(p)pa(X(t),p,n,r,D8())}function Z8(t,e){let n=V.find((o)=>o.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Ft()?A.link:`${vi(n.ansi)}${A.link}${bt}`} ${Bc(r,n.pageUrl(t.id))}`}async function po(t,e,n){let r=e.flatMap((c)=>J8(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=to(n),o=process.stdout.isTTY&&ly(process.env),s=new Set,a=ci();for(let[c,{entry:u,shared:f}]of r.entries()){let l=`${u.name} · ${Z8(f,o)}`,d=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,p)=>a.set(`${m} ${l}${p?` · ${p}`:""}${d}`);try{await Y8(t,u,f,i,AbortSignal.timeout(pS),h),a.say(` ▣ ${l}`),s.add(u)}catch(m){a.say(` ▢ ${l} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of s){let u=(c.pictures??[]).find((f)=>ge(t,c.name).some((l)=>l.key===le(f)));if(u)Do(t,c.name,le(u))}if(s.size>0)_e(t)}function bS(t,e,n){if(e.width!==t.width||e.height!==t.height)return!1;for(let r=0;r<t.width*t.height;r++)t.data[r*4+3]=e.data[r*4+n]??0;return!0}async function V8(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=mo(jr(),n??"local","cut",`${r??t}.png`);if(!cg(i)){if(!_s())return;hS(mS(i),{recursive:!0}),await mc(e,i,AbortSignal.timeout(pS))}return Ar(new Uint8Array(Gs(i)),Re)}function X8(t,e){try{return Yn(Gt(new Uint8Array(Gs(mo(t,`${e.stem}.png`)))))>0}catch{return!1}}function Jl(t,e){return()=>Ar(new Uint8Array(Gs(mo(t,e.original))),Re)}function wS(t,e){let n=Jl(t,e);return()=>{let r=n(),i=Gt(new Uint8Array(Gs(mo(t,e.cut))));return bS(r,i,0)?r:null}}async function Zl(t,e,n,r,i,o,s,a){let c=X(t),u=Nt(c).palettes[e]?.pictures.find((f)=>f.key===n);if(!u?.original)return null;if(u.cut)return ga(t,e,u,wS(c,u),r,i,o,s,!1,a);if(qo(u)){let f=Jl(c,u)();if(Yn(f)===0&&X8(c,u)){let l=await V8(n,mo(c,u.original));if(!l||!bS(f,l,3))return null;return ga(t,e,u,()=>f,r,i,o,s,!0,a)}return ga(t,e,u,()=>f,r,i,o,s,!1,a)}return ga(t,e,u,Jl(c,u),r,i,o,s,!1,a)}function $S(t,e,n,r,i,o){let s=X(t),a=Nt(s).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||qo(a))return!1;let c=a.cut?wS(s,a):Jl(s,a);return O$(t,e,a,c,r,i,o)}var Q8=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,t3=[[/yande\.re\/post\/show\/(\d+)/,"yande"],[/konachan\.(?:com|net)\/post\/show\/(\d+)/,"konachan"],[/danbooru\.donmai\.us\/(?:posts|post\/show)\/(\d+)/,"danbooru"],[/zerochan\.net\/(\d+)(?:[?#\s]|$)/,"zerochan"]];function ug(t){let e=/(\d+)_p(\d+)/.exec(t.source);return[...t.md5?[`md5:${t.md5}`]:[],...e&&t.source.includes("pximg")?[`pixiv:${e[1]}_p${e[2]}`]:[]]}function kS(t,e){let n=Q8.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...t3.flatMap(([r,i])=>{let o=r.exec(e.source)?.[1];return o?[`post:${i}:${Number(o)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function yS(t,e){let n=t.owner||t.named.artist[0]||"";return n!==""&&n===(e.owner||e.named.artist[0]||"")&&t.width===e.width&&t.height===e.height}function vS(t){let r=[];for(let o=0;o<8;o++){let s=Math.floor(o*t.height/8),a=Math.max(s+1,Math.floor((o+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),f=Math.max(u+1,Math.floor((c+1)*t.width/9)),l=0;for(let d=s;d<a;d++)for(let h=u;h<f;h++){let m=(d*t.width+h)*4,p=t.data[m+3]/255,b=0.299*t.data[m]+0.587*t.data[m+1]+0.114*t.data[m+2];l+=b*p+255*(1-p)}r.push(l/((f-u)*(a-s)))}}let i=0n;for(let o=0;o<8;o++)for(let s=0;s<8;s++)i=i<<1n|(r[o*9+s]>r[o*9+s+1]?1n:0n);return i.toString(16).padStart(16,"0")}function e3(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function ES(t,e){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return!1;return Math.abs(Math.log(t.width/t.height/(e.width/e.height)))<0.01&&e3(t.hash,e.hash)<=2}var s3={thumb:"tile",band:"band",match:"tile",show:"view",backdrop:"view",redraw:"view"},Vl;async function a3(t){if(t.job==="redraw")return Zl(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(Vl?.from!==t.from){let s=Ar(new Uint8Array(lg(t.from)),Re);Vl={from:t.from,clear:Yn(s),inked:Yd(s)}}let{image:r,fill:i,opacity:o}=p$(Vl.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return n3(r3(t.to),{recursive:!0}),SS(t.to,We(r)),{clear:Vl.clear,fill:i,opacity:o}}let e=Ar(new Uint8Array(lg(t.from)),Re);if(t.job==="backdrop"){uu(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(lg(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&ge(t.home,t.colors.name).find((i)=>i.key===le(t.origin));if(t.tune&&r)pa(X(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:dS(e,t.colors),hash:vS(e)};if(t.job==="thumb")return L(t.to,We(Qw(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return SS(t.to,We({width:e.width,height:t.height,data:n})),0}function c3(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await a3(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class fg{worker;next=1;waiting=new Map;send(t){let e=this.next++;return new Promise((n,r)=>{let i=this.open();this.waiting.set(e,{ok:n,no:r}),i.ref(),i.postMessage({...t,id:e})})}close(){this.worker?.terminate(),this.worker=void 0,this.drop(Error("renderer closed"))}open(){if(this.worker)return this.worker;let t=new o3(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let o=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)o?.no(Error(i));else o?.ok(r)});let e=(n)=>{if(this.worker===t)this.worker=void 0;this.drop(n instanceof Error?n:Error("renderer stopped"))};return t.on("error",e),t.on("exit",()=>e(void 0)),this.worker=t,t}drop(t){for(let e of this.waiting.values())e.no(t);this.waiting.clear()}}class pc{lines=new Map;run(t){let e=s3[t.job],n=this.lines.get(e);if(!n)n=new fg,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class dg{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new fg)}async map(t){let e=[],n=0;return await Promise.all(this.lines.map(async(r)=>{while(n<t.length){let i=n++;try{e[i]=await r.send(t[i])}catch(o){e[i]=o instanceof Error?o:Error(String(o))}}})),e}close(){for(let t of this.lines)t.close()}}if(!i3&&MS)c3(MS);import{existsSync as u3,mkdtempSync as l3,readFileSync as f3,rmSync as xS,writeFileSync as d3}from"node:fs";import{tmpdir as h3}from"node:os";import{basename as IS,join as OS}from"node:path";var m3=6;class hg{dir;made=[];of(t,e){this.dir??=l3(OS(h3(),"ttheme-tint-"));let n=OS(this.dir,`${IS(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!u3(n)){let r=new Uint8Array(f3(t));d3(n,Kc(r,e)??Ri(Ii(Gt(r)),e)),this.made.push(n);while(this.made.length>m3)xS(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)xS(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function RS(t,e,n,r,i){if(Ke(t)==="original")return e;let o=Mn(n,[...r]);return o.color===t.tone?e:i.of(e,o.color)}function PS(t,e){let n=IS(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var y3=2147483625,TS=2147483626,jn=2147483627,v3=-1073741831,HS=-1073741830,E3=-1073741829,S3=4;function M3(t,e,n,r,i){let o=Math.trunc,s=n.col*r.w,a=n.row*r.h,c=o((Math.max(i.x,s)+r.w-1)/r.w),u=o(Math.min(i.x+i.w,s+n.cols*r.w)/r.w),f=o((Math.max(i.y,a)+r.h-1)/r.h),l=o(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||l<=f)return;return{col:c,row:f,cols:u-c,rows:l-f,x:o((c*r.w-i.x)*t/i.w),y:o((f*r.h-i.y)*e/i.h),w:o((u-c)*r.w*t/i.w),h:o((l-f)*r.h*e/i.h)}}function x3(t){try{let e=b3(t,"r"),n=Buffer.alloc(24);return w3(e,n,0,24,0),p3(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class Xl{ready=()=>{};cell={w:0,h:0};held;tints=new hg;sent=new Map;placed=new Map;viewed="";renders;scratch;made=0;bands=new Map;home;name;views;banded;files;static of(t,e,n,r){if(Ft(t)||!us(t,r)||!(ls(t)||qi(t)))return;return new Xl(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=qi(t),this.banded=Uu(t),this.files=Wu(t)}get laid(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}load(){let t=X(this.home),e=Te(t,this.name,$3()),n=[];try{n=Nt(t).palettes[this.name]?.pictures??[]}catch{}let r=e?PS(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:qt.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,o={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let s=t[0],a=this.look(t,e,n,o,!this.views||o.cols===r&&o.rows===i);if(this.views){let u=r*this.cell.w,f=i*this.cell.h,l=a?`${s}|${a.image}|${a.opacity}|${u}|${f}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${s}||1|${u}|${f}|0|0|0|0|5`;if(l===this.viewed)return"";return this.viewed=l,Di(l)}let c=this.layer(y3,v3,"f=24",Buffer.from(st(s)),o);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(TS,E3,"f=32",Buffer.from([...st(s),u]),o)}else c+=this.drop(jn)+this.drop(TS);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?Di(""):"";for(let e of this.sent.keys())t+=ac(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)AS(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let o=this.held;if(!o)return;let s={name:this.name,...re([...t]),waived:[...n]},a=RS(o.picture,o.image,s,e,this.tints),c=x3(a);if(!c)return;let u=Jo(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,o.at,o.cover&&i),f={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},l=M3(c.width,c.height,r,this.cell,f);if(!l)return;return{image:a,opacity:o.opacity,...c,box:f,rect:l}}layer(t,e,n,r,i){let o=r.toString("base64"),s=`${o}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===s)return"";return this.sent.set(t,s),this.placed.set(t,s),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${o}\x1B\\\x1B[${i.row+1};${i.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${i.cols},r=${i.rows},C=1,z=${e},q=2\x1B\\`}picture(t){let{image:e,rect:n}=t;if(this.banded&&(2*n.y+n.h-t.height)**2>1){let o=this.band(t.image,n.y,n.h);if(!o.ready)return"";e=o.path,n={...n,y:0}}let r="";if(this.sent.get(jn)!==e){let o=Hl({id:jn,path:e,row:0,col:0,cols:0,rows:0,z:HS},this.files);if(o===void 0)return"";r+=o,this.sent.set(jn,e),this.placed.delete(jn)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(jn)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${jn},p=${jn},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${HS},q=2\x1B\\`,this.placed.set(jn,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),ac(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=g3(NS(k3(),"ttheme-edit-")),this.renders??=new pc;let o={path:NS(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,o),this.renders.run({job:"band",from:t,to:o.path,y:e,height:n}).then(()=>{o.ready=!0,this.ready()}).catch(()=>{});for(let[s,a]of this.bands){if(this.bands.size<=S3)break;if(a.ready&&a.path!==this.sent.get(jn))this.bands.delete(s),AS(a.path,{force:!0})}return o}}var go=50;function at(t,e){return ze(t,e)}function gc(t){return Et(t)>0.35?"#000000":"#ffffff"}function mg(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function Ql(t,e,n,r){let i=e.mode==="tune"&&e.channel===ne,o=e.ratio(),{floor:s}=e.partner(),a=(p)=>Math.round(Math.log(Math.max(1,p))/Math.log(21)*(n-1)),c=a(o),u=s===void 0?-1:a(s),f=r===void 0?-1:a(r),l=i?"━":"─",d=Array.from({length:n},(p,b)=>b===c?t.bold("●"):b===f?"○":b===u?"┃":b<u?t.dim(l):l).join(""),h=`${o.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:ne};return`${at(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${at({kind:"bar",channel:ne},d)} ${at(m,i?t.bold(h):t.dim(h))}`}function tf(t,e){if(!t.misses().has(e))return;if(ng(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-T.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function ef(t,e,n){let r=ig(t.list,t.signature,t.waive,e),i=mg(t,n);if(i!==void 0)r.push({ok:void 0,text:`Chroma ○ ${i.toFixed(3)} is held while you tune — ${n.c.toFixed(3)} fits this lightness and hue`});return r}function nf(t){let e=(n,r)=>n.toFixed(r).replace(/^0(?=\.)/,"");return`${e(t.l,2)} ${e(t.c,3)} ${t.h.toFixed(0).padStart(3)}°`}function FS(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function O3(t,e,n,r=go){let i=og(e.list,e.signature,e.waive).sort((u,f)=>Number(u.ok!==!1)-Number(f.ok!==!1)),o=i.filter((u)=>u.ok===!1).length,s=` ${t.dim("Gate")} ${o===0?t.dim("passes"):t.bold(`${o} ${o===1?"miss":"misses"}`)}`,a=r-4,c=i.flatMap((u)=>{let f=`${u.value} ${u.bound}`,l=` ${xu(t,u.ok)} ${It(u.ok===!1?u.label:t.dim(u.label),t.dim(f),a-2)}`,d=[...new Set(u.slots)].map((p)=>Ge(p).name),h=u.slots[0],m=(p)=>h===void 0?p:at({kind:"slot",slot:h},p);return d.length>0?[m(l),m(` ${t.dim(nt(d.join(" · "),a-2))}`)]:[m(l)]});return[o===0?s:It(s,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...c.slice(0,Math.max(0,n-1))]}function LS(t,e){let n=t-T.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function rf(t,e,n,r){let i=r?gt("under"):"";if(n==="d")return`${t.fg(e.foreground)}${gt("dim")}${i}`;if(n==="b")return`${t.fg(e.foreground)}${gt("bold")}${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let o=/^([BK]?)(\d+)$/.exec(n);if(!o)return`${t.fg(e.foreground)}${i}`;let s=e.ansi[Number(o[2])];if(o[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(s)}${i}`;return`${t.fg(s)}${o[1]==="B"?gt("bold"):""}${i}`}function bc(t,e,n,r,i){let o=e.length-1,s=Math.max(0,Math.min(o,n)),a=i===void 0?-1:Math.max(0,Math.min(o,i));if(!t.color)return e.map((c,u)=>u===s?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let f=c??"#000000";if(u===s)return`${t.bg(f)}${t.fg(gc(f))}${A.on}${se}`;if(u===a)return c?`${t.bg(c)}${t.fg(gc(c))}${A.off}${se}`:`${t.fg("#aaaaaa")}${A.off}`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat(bt)}function of(t,e,n){return Array.from({length:n},(r,i)=>{let o=e.min+(e.max-e.min)*i/(n-1),s={...t,[e.key]:o};return Ln(s.l,s.c,s.h)?Xe(s.l,s.c,s.h):void 0})}function bo(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function pg(t){return og(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function wc(t,e,n,r){if(n<3)return[];let i=pg(e),o=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[t.dim(Jt(r,"top",[[2,o]])),...O3(t,e,n-1,r-1).slice(1).map((s)=>De(t,s,r)),t.dim(Jt(r,"bottom"))]}var $r=0.98,$c=0.12,I3=0.37,CS=0.74,R3=0.15,P3=-1073741828,gg=-1073741827,bg=-1073741826,A3=-1073741825,N3=2147483584,T3=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],H3=4096;function kc(t,e){return Cs(t,e,I3)}function af(t,e,n){let r=kc(t,n);return r>0.000001?Math.min(1,e/r):0}function yc(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function pi(t,e,n,r,i){let o=r[3]*i;if(o<=0||e<0||n<0||e>=t.width||n>=t.height)return;let s=(n*t.width+e)*4,a=t.data;if(o>=1){a[s]=r[0],a[s+1]=r[1],a[s+2]=r[2],a[s+3]=255;return}let c=a[s+3]/255,u=o+c*(1-o);for(let f=0;f<3;f++)a[s+f]=Math.round((r[f]*o+a[s+f]*c*(1-o))/u);a[s+3]=Math.round(u*255)}function wr(t,e=1){return[...st(t),e]}function Us(t,e,n,r,i,o,s){let a=Math.abs(t-(n+i/2))-(i/2-s),c=Math.abs(e-(r+o/2))-(o/2-s);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-s}function wo(t,e,n,r){let i=[],o=[],s=Math.max(0,Math.floor(r?.x??0)),a=Math.max(0,Math.floor(r?.y??0)),c=Math.min(t,Math.ceil(r?r.x+r.w:t)),u=Math.min(e,Math.ceil(r?r.y+r.h:e));for(let f=a;f<u;f++)for(let l=s;l<c;l++){let d=n(l+0.5,f+0.5);if(d>0.002)i.push(f*t+l),o.push(Math.min(1,d))}return{at:Uint32Array.from(i),cover:Float32Array.from(o)}}function $o(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];pi(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function wg(t,e){return(n,r)=>Math.max(0,0.5-Us(n,r,t.x,t.y,t.w,t.h,e))}function jS(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(Us(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var sf=new Map;function F3(t,e,n,r){let i=`${e.w}x${e.h} ${BS({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,o=sf.get(i);if(o)return o;let{panel:s}=t,a={x:e.w,y:0,w:s.cols*e.w,h:s.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),f=e.h*0.6,l=Math.max(1,Math.round(e.h/22)),d=(R)=>({x:(R.col-s.col+1)*e.w,y:(R.row-s.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=d(t.tabs),p={x:m.x,y:m.y+h,w:t.tabs.cols*e.w,h:e.h-2*h},b=Math.floor(t.tabs.cols/t.tabs.count)*e.w,$=Math.max(1,Math.round(h/2)),k={x:p.x+t.tabs.active*b+$,y:p.y+$,w:(t.tabs.active===t.tabs.count-1?p.w-t.tabs.active*b:b)-2*$,h:p.h-2*$},v=d(t.field),E={x:v.x,y:v.y+h,w:t.field.cols*e.w,h:e.h-2*h},x=t.divider===void 0?void 0:{x:a.x+e.w*0.6,y:(t.divider-s.row)*e.h,w:a.w-e.w*1.2,h:l},M={shadow:wo(n,r,(R,F)=>{let N=Us(R,F,a.x,u,a.w,a.h,c);return N>0&&N<f?(1-N/f)**2:0}),fill:wo(n,r,wg(a,c),a),border:wo(n,r,jS(a,c,l),a),track:wo(n,r,wg(p,p.h*0.3),p),segment:wo(n,r,wg(k,k.h*0.3),k),field:wo(n,r,jS(E,E.h*0.3,l),E),divider:x&&wo(n,r,()=>1,x)};if(sf.size>8)sf.clear();return sf.set(i,M),M}function L3(t){let e=Et(t.ground)<0.18;return{dark:e,surface:At(t.ground,t.ink,e?0.07:0.04)}}function C3(t,e){let n=yc((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=F3(t,e,n.width,n.height),{dark:i,surface:o}=L3(t);if($o(n,r.shadow,[0,0,0,i?0.45:0.18]),$o(n,r.fill,wr(o)),$o(n,r.border,wr(t.ink,i?0.16:0.2)),$o(n,r.track,wr(t.ink,i?0.06:0.07)),$o(n,r.segment,wr(t.accent,i?0.24:0.2)),$o(n,r.field,wr(t.ink,i?0.22:0.28)),r.divider)$o(n,r.divider,wr(t.ink,i?0.12:0.16));return n}function j3(t,e,n){let r=yc(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:o,data:s}=r,a=Math.round(n.h*0.3),c=Math.max(1,(t.cols-1)*n.w),u=(h)=>Math.min(1,Math.max(0,(h+0.5-n.w/2)/c)),f=t.rows*2-1,l=(h)=>$r-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/f))*($r-$c),d=[];for(let h=0;h<o;h++){if(h%2===0){let m=l(h+0.5),p=kc(m,e);d=Array.from({length:Math.ceil(i/2)},(b,$)=>Ln(m,u($*2+0.5)*p,e)??[0,0,0])}for(let m=0;m<i;m++){let b=(m<a||m>=i-a)&&(h<a||h>=o-a)?Math.min(1,Math.max(0,0.5-Us(m+0.5,h+0.5,0,0,i,o,a))):1;if(b<=0)continue;let $=d[m>>1],k=(h*i+m)*4;s[k]=$[0],s[k+1]=$[1],s[k+2]=$[2],s[k+3]=Math.round(b*255)}}return r}function GS(t,e){let n=Math.max(4,Math.round(t.h*0.42));return{top:Math.round((t.h-n)/2),height:n,width:e*t.w}}function _3(t,e){let n=yc(t.cols*e.w,e.h),{top:r,height:i,width:o}=GS(e,t.cols),s=Array.from({length:o},(a,c)=>{let f=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Ln(CS,Cs(CS,f,R3),f)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<o;c++){let u=Math.min(1,Math.max(0,0.5-Us(c+0.5,a+0.5,0,r,o,i,i/2))),f=s[c];pi(n,c,a,[f[0],f[1],f[2],1],u)}return n}function G3(t,e,n){let r=yc(t.cols*n.w,n.h),{top:i,height:o,width:s}=GS(n,t.cols),a=t.floor===void 0?-1:Math.round((t.floor*(t.cols-1)+0.5)*n.w),c=Math.max(2,Math.round(o*0.45)),u=i+Math.round((o-c)/2);for(let f=u;f<u+c;f++)for(let l=0;l<s;l++){let d=Math.min(1,Math.max(0,0.5-Us(l+0.5,f+0.5,0,u,s,c,c/2))),h=a<0||l>=a;pi(r,l,f,wr(e,h?t.lit?0.5:0.36:0.14),d)}if(a>=0){let f=Math.max(2,Math.round(n.w/5));for(let l=i-1;l<i+o+1;l++)for(let d=a-Math.floor(f/2);d<a-Math.floor(f/2)+f;d++)pi(r,d,l,wr(e,0.85),1)}return r}function B3(t,e,n,r,i,o,s){let a=yc(t*s.w,e*s.h),c=Math.max(2,Math.round(i*0.3)),u=(l,d)=>Math.min(1,Math.max(0,l-d+0.5)),f=[0,0,0,0.5];for(let l=0;l<a.height;l++)for(let d=0;d<a.width;d++){let h=Math.hypot(d+0.5-n,l+0.5-r);if(o)pi(a,d,l,wr(o),u(i-c,h));else pi(a,d,l,f,u(i-c,h)-u(i-c-1,h));pi(a,d,l,f,u(i+1,h)-u(i,h)),pi(a,d,l,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function Bs(t,e,n,r,i,o,s=A3){let a=Math.floor((e-r-2)/o.w),c=Math.floor((e+r+2)/o.w),u=Math.floor((n-r-2)/o.h),f=Math.floor((n+r+2)/o.h),l={row:u,col:a,cols:c-a+1,rows:f-u+1},d=Math.round((e-a*o.w)*2)/2,h=Math.round((n-u*o.h)*2)/2;return{name:t,key:`${l.cols}x${l.rows} ${d},${h} ${r} ${i??"-"}`,box:l,z:s,paint:()=>B3(l.cols,l.rows,d,h,r,i,o)}}function BS(t){let{panel:e}=t,n=(i)=>`${i.row-e.row},${i.col-e.col},${i.cols}`,r=t.divider===void 0?"-":t.divider-e.row;return`${e.cols}x${e.rows} ${t.ground} ${t.ink} ${t.accent} ${n(t.tabs)},${t.tabs.active}/${t.tabs.count} ${n(t.field)} ${r}`}function U3(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(l,d)=>(l.col+0.5+d*(l.cols-1))*e.w,o=(l)=>(l.row+0.5)*e.h,s=t.plane,a=(l)=>{let d=($r-l)/($r-$c)*(s.rows*2-1);return s.row*e.h+(Math.min(s.rows*2-1,Math.max(0,d))+0.5)*e.h/2},c=a(s.l),u=[{name:"panel",key:`${n} ${BS(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:P3,paint:()=>C3(t,e)},{name:"plane",key:`${n} ${s.cols}x${s.rows} ${s.h.toFixed(2)}`,box:s,z:gg,paint:()=>j3(s,s.h,e.h>=24?{w:e.w/2,h:e.h/2}:e)},{name:"hue",key:`${n} ${t.hue.cols}`,box:{...t.hue,rows:1},z:gg,paint:()=>_3(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:gg,paint:()=>G3(t.contrast,t.ink,e)},Bs("mark",i(s,af(s.l,s.c,s.h)),c,r,void 0,e),Bs("hue-thumb",i(t.hue,t.hue.h/360),o(t.hue),r,t.hue.color,e),Bs("contrast-thumb",i(t.contrast,t.contrast.at),o(t.contrast),r,t.contrast.color,e)],f=t.origin;if(f){let l=Math.max(3,Math.round(r*0.55));u.push(Bs("origin",i(s,af(f.l,f.c,f.h)),a(f.l),l,f.color,e,bg),Bs("hue-origin",i(t.hue,f.h/360),o(t.hue),l,f.color,e,bg),Bs("contrast-origin",i(t.contrast,f.at),o(t.contrast),l,f.color,e,bg))}return u}function W3(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${H3}}`,"g"))??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function _S(t,e,n){return`\x1B[${e.row+1};${e.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${e.cols},r=${e.rows},C=1,z=${n},q=2\x1B\\`}function $g(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class cf{cell={w:0,h:0};shown=new Map;static of(t,e){return Ft(t)||!us(t,e)||!ls(t)?void 0:new cf}get ready(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}draw(t){if(!this.ready)return"";let e=t?U3(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((o)=>o.name===r))n+=$g(i.id),this.shown.delete(r);return n}clear(){let t="";for(let e of this.shown.values())t+=$g(e.id);return this.shown.clear(),t}put(t){let e=`${t.box.row};${t.box.col};${t.box.cols};${t.box.rows}`,n=this.shown.get(t.name);if(n&&n.key===t.key){if(n.at===e)return"";return n.at=e,_S(n.id,t.box,t.z)}let r=N3+T3.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${W3(i,We(t.paint()))}${_S(i,t.box,t.z)}${n?$g(n.id):""}`}}var vc=34,kg=2,K3=6,lf=3,z3=7,WS="↑↓ L ←→ C ⇧←→ H tab ◐";function q3(t,e,n){let r="",i=0;for(let o of t){let s=i+_(o);if(s>e&&i<n)r+=i>=e&&s<=n?o:" ".repeat(Math.min(s,n)-Math.max(i,e));if(i=s,i>=n)break}return r}function ff(t){return t.reduce((e,n)=>e+_(n.text),0)}function df(t,e,n){let r=[],i=0;for(let o of t){let s=_(o.text),a=Math.max(e,i),c=Math.min(n,i+s);if(c>a)r.push({...o,text:q3(o.text,a-i,c-i)});i+=s}return r}function D3(t,e,n){return[...df(t,0,e),...n,...df(t,e+ff(n),ff(t))]}function J3(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${me}`:n.text;return n.target?ze(n.target,r):r}).join("")}function KS(t){return t<T.length?T[t]:mn[(t-T.length)%8]}function zS(t,e,n,r){let i=t.signature.includes(Cn[n])?A.signature:e.color?A.swatch:" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function qS(t,e,n,r,i){return r.has(n)?e.bold(A.miss):t.changed(n)?e.color?`${gt("warn")}${A.on}${i}`:A.on:" "}function DS(t,e,n){return n?t.color?`${t.fg(e.cursor)}${A.gutter}${bt} `:`${A.gutter} `:" "}function Y3(t,e,n,r,i,o){let s=r===t.slot(),a=s?e.fg(n.foreground):bt,c=KS(r).padEnd(12),u=t.lch[r],f=`${DS(e,n,s)}${zS(t,e,r,a)} ${s?e.bold(c):c}${FS(u)} ${qS(t,e,r,o,a)}`,l=nt(f,i);return at({kind:"open",slot:r},s&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${l}${se}`:l)}var yg=8,JS=44;function Sc(t){return t>=JS?16:11}function US(t,e,n,r,i,o){let s=Sc(i);if(!t.visible(r))return" ".repeat(s);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):bt,u=t.lch[r],f=(p,b)=>p.toFixed(b).replace(/^0(?=\.)/,""),l=`${u.h.toFixed(0).padStart(3)}°`,d=i>=JS?`${f(u.l,2)} ${f(u.c,3)} ${l}`:`${f(u.l,2)} ${l}`,h=`${zS(t,e,r,c)} ${d}${qS(t,e,r,o,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}${se}`:h;return at({kind:"open",slot:r},m)}function Z3(t,e,n,r,i,o){let s=T.length+r,a=s+8,c=t.row===s,u=mn[r].padEnd(yg),f=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${at({kind:"open",slot:s},`${DS(e,n,c)}${c?e.bold(u):u}`)}${US(t,e,n,s,i,o)}${f} ${US(t,e,n,a,i,o)}`}function YS(t){return 14+2*Sc(t)}function V3(t){let e=Sc(t)>=16;return[[2," ANSI "],[2+yg,e?" Normal 0–7 ":" Normal "],[5+yg+Sc(t),e?" Bright 8–15 ":" Bright "]]}function X3(t,e,n,r){let i=t.slot(),o=Ge(i),s=YS(r),a=s-2,c=` ${o.name}${i>=T.length?` · ${o.about}`:""} `,u=[` ${e.dim(aS(i))}`];if(i>=2){let l=NE(n,i).filter((m)=>m.count>0),d=l.length>0?l.map((m)=>`${m.name} ${m.count}`).join(" · "):"none",h=jt("w",t.where?qe(e,"w where"):e.dim("w where"));u.push(It(` ${e.dim("Shown in")} ${d}`,`${h} `,a))}let f=i-T.length;if(f===0||f===7||f===8||f===15){let l=t.lch[i].l,d=t.lch[0].l,h=t.lch[1].l,m=Math.abs(l-d)<=Math.abs(l-h)?"the background":"the text";u.push(` ${e.dim(`L ${l.toFixed(2)} reads near ${m}`)}`)}return[e.dim(Jt(s,"top",[[2,c]])),...u.map((l)=>De(e,l,s)),e.dim(Jt(s,"bottom"))]}function uf(t,e){return $r-t*($r-$c)/(e*2-1)}function ZS(t,e,n,r,i){let o=uf(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),s=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:o,chroma:s*kc(o,i)}}function Q3(t,e,n,r,i,o){let s=(l)=>{let d=Math.max(0,Math.min(i*2-1,Math.round(($r-l.l)/($r-$c)*(i*2-1))));return{row:Math.floor(d/2),col:Math.round(af(l.l,l.c,l.h)*(r-1))}},{row:a,col:c}=s(e),u=o?s(o):{row:-1,col:-1},f=(l,d)=>{return`#${(Ln(l,d*kc(l,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(l,d)=>{let h="";for(let m=0;m<r;m++){if(d===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(gc(n))}${A.on}${se}`:A.on;continue}let p=m/Math.max(1,r-1);if(d===u.row&&m===u.col){let b=f(uf(d*2+1,i),p);h+=t.color?`${t.bg(b)}${t.fg(gc(b))}${A.off}${se}`:A.off;continue}h+=t.color?`${t.fg(f(uf(d*2,i),p))}${t.bg(f(uf(d*2+1,i),p))}▀${se}`:"·"}return at({kind:"plane",row:d,rows:i},h)})}function VS(t,e,n){let r=t.slot(),i=t.lch[r],s=ef(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>St(c.text,n-2).map((u,f)=>`${f===0?c.ok===!1?e.bold(A.miss):e.dim(A.off):" "} ${u}`)),a=tf(t,r);return[...s.slice(0,3),...a?[e.dim(a)]:[]]}function XS(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,o=KS(i?r.normal:r.bright).toLowerCase(),s=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${o} · L ${s}`,`⇠ ${o} · L ${s}`,`⇠ ${o}`]:[`Not linked to ${o}`,"Not linked"]:r.on?[`Bright follows · L ${s}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((f)=>_(f)<=a)??c[c.length-1]??"";return It(e.dim(u),jt("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function QS(t,e,n){let r=t.slot(),i=t.list[r],o=t.lch[r],s=t.typing!==void 0?e.bold(`${t.typing}▏`):jt("#",e.bold(uS(t.format,i,o))),a=t.start[r],c=e.color?`${e.fg(a)}${A.swatch}${bt} `:"";return It(s,a!==i?e.dim(`was ${c}${a}`):"",n)}function t5(t,e,n,r){let i=t.slot(),o=t.lch[i],s=t.list[i],a=n-4,c=e.dim("│"),u=(M)=>`${c} ${nt(M,a)} ${c}`,f=XS(t,e,a),l=6+(f?1:0),d=VS(t,e,a).slice(0,Math.max(0,r-l-lf)),h=Math.max(lf,Math.min(K3,r-l-d.length)),m=" L × C ",p=` H ${o.h.toFixed(0)}° `,b=Math.max(0,n-4-_(" L × C ")-_(p)),$=[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat(b))}${e.dim(p)}${e.dim("─╮")}`],k=t.origin();for(let M of Q3(e,o,s,a,h,k?.lch))$.push(u(M));let v=hn[2];$.push(u(at({kind:"bar",channel:2},bc(e,of(o,v,a),bo(o.h,v.min,v.max,a),t.mode==="tune"&&t.channel===2,k&&bo(k.lch.h,v.min,v.max,a))))),$.push(u(Ql(e,t,Math.max(8,a-11),k?.ratio)));let E=(M,R)=>at({kind:"format",format:R},t.format===R?qe(e,M):e.dim(` ${M} `));if($.push(u(`${E("Hex","hex")} ${E("RGB","rgb")} ${E("OKLCH","oklch")}`)),$.push(u(QS(t,e,a))),f)$.push(u(f));for(let M of d)$.push(u(M));let x=nt(` ${WS} `,n-4,!1);return $.push(`${e.dim("╰─")}${e.dim(x)}${e.dim("─".repeat(Math.max(0,n-4-_(x))))}${e.dim("─╯")}`),{lines:$.map((M)=>at({kind:"picker"},M))}}var Ec=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function e5(t,e,n,r){let i=t.lch[t.slot()],o=n-2,s=XS(t,e,o),a=6+(s?1:0),c=VS(t,e,o).slice(0,Math.max(0,r-a-lf)),u=Math.max(lf,Math.min(z3,r-a-c.length)),f=(M)=>` ${nt(M,o)} `,l=[f(It(e.dim("L × C"),e.dim(`H ${i.h.toFixed(0)}°`),o))];for(let M=0;M<u;M++)l.push(f(at({kind:"plane",row:M,rows:u}," ".repeat(o))));let d=l.length;l.push(f(at({kind:"bar",channel:2}," ".repeat(o))));let h=l.length,m=t.mode==="tune"&&t.channel===ne,p={kind:"channel",channel:ne},b=`${t.ratio().toFixed(2)}:1`.padStart(8),$=o-11;l.push(f(`${at(p,m?e.bold("◐"):e.dim("◐"))} ${at({kind:"bar",channel:ne}," ".repeat($))} ${at(p,m?e.bold(b):e.dim(b))}`));let k=l.length,v=Math.floor(o/Ec.length);l.push(f(Ec.map(([M,R],F)=>{let N=F===Ec.length-1?o-v*F:v,j=Math.floor((N-_(M))/2),z=`${" ".repeat(j)}${M}${" ".repeat(N-j-_(M))}`,G=t.format===R?e.color?e.accent(e.bold(z)):`[${M}]`.padEnd(N):e.dim(z);return at({kind:"format",format:R},G)}).join("")));let E=l.length;l.push(f(` ${QS(t,e,o-2)} `));let x=s?l.length:void 0;if(s)l.push(f(s));for(let M of c)l.push(f(M));return l.push(f(e.dim(WS))),{lines:l.map((M)=>at({kind:"picker"},M)),parts:{plane:{row:1,col:1,cols:o,rows:u},hue:{row:d,col:1,cols:o,rows:1},contrast:{row:h,col:3,cols:$,rows:1},tabs:{row:k,col:1,cols:o,rows:1},field:{row:E,col:1,cols:o,rows:1},divider:x}}}function n5(t,e,n,r,i,o){let s=t.slot(),a=t.lch[s],c=t.list[s],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),f=(h)=>Math.log(Math.max(1,h))/Math.log(21),l=t.partner().floor,d=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:o},ground:e.background,ink:e.foreground,accent:e.cursor,plane:{...u(n.plane),h:a.h,l:a.l,c:a.c},hue:{...u(n.hue),h:a.h,color:c},contrast:{...u(n.contrast),at:f(t.ratio()),floor:l===void 0?void 0:f(l),color:c,lit:t.channel===ne},tabs:{...u(n.tabs),active:Ec.findIndex(([,h])=>h===t.format),count:Ec.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:d&&{...d.lch,color:d.hex,at:f(d.ratio)}}}function r5(t,e,n,r,i,o,s,a){let u=o??1,f=s-1-u,l=u-2,d=12+2*Sc(r)-kg,h=a?e5:t5,m=h(t,e,d,Number.POSITIVE_INFINITY),p=m.lines.length<=f||m.lines.length>l&&f>=l,b=p?f:l,$=m.lines.length<=b?m:h(t,e,d,b),k=p?u+1:u-$.lines.length,v=Array.from({length:s},(E,x)=>i[x]??"");return $.lines.forEach((E,x)=>{let M=k+x;if(M>=0&&M<s)v[M]=xk(v[M],kg,E)}),{lines:v,art:$.parts&&n5(t,n,$.parts,k,kg,$.lines.length)}}function i5(t,e,n,r,i){let o=r.side,s=pg(t),a=t.changedOnly?e.warn(A.on):" ",c=s===0?e.dim("Gate ✓"):e.bold(`Gate ✗ ${s}`),u=It(` ${e.bold("Colors")} ${c}`,jt("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),o),f=i-1,l=t.misses(),d=YS(o),h=[],m,p=T.map((k,v)=>v).filter((k)=>t.visible(k));if(p.length>0){h.push(e.dim(Jt(d,"top",[[2," Base "]])));for(let k of p){if(k===t.slot())m=h.length;h.push(De(e,Y3(t,e,n,k,d-2,l),d))}}let b=mn.map((k,v)=>v).filter((k)=>t.visible(T.length+k)||t.visible(T.length+k+8));if(b.length>0){h.push(e.dim(Jt(d,p.length>0?"mid":"top",V3(o))));for(let k of b){if(t.row===T.length+k)m=h.length;h.push(De(e,Z3(t,e,n,k,o,l),d))}}if(p.length>0||b.length>0)h.push(e.dim(Jt(d,"bottom")));if(t.visible(t.slot()))h.push(...X3(t,e,r,o));let $=wc(e,t,f-h.length,d);return h.push(...Array.from({length:Math.max(0,f-h.length-$.length)},()=>""),...$),{lines:[u,...h.slice(0,f)],anchor:m===void 0?void 0:m+1}}function o5(t,e,n){let r=`${e.accent(A.current)} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,i=t.dirty(),o=t.changes(),s=e.warn(A.on),a=i?`${s} ${e.dim(o>0?`unsaved · ${o} changed`:"unsaved")}`:"",c=[t.resettable()?jt("R",e.dim("Reset")):"",i?jt("s",qe(e,"Save")):""].filter(Boolean).join(" "),u=[r,a,c].filter(Boolean).join(" "),f=(h,m,p)=>jt(h,p?qe(e,m):e.dim(m)),d=[...t.options.find||t.pictures>0?[f("b",`▣ ${t.pictures>0?`${t.pictures} `:""}Picture`,t.pic&&(t.pictures>0||!!t.options.find))]:[],f("i","⌖ Inspect",t.inspect),`${f("u","↶",!1)} ${f("ctrl+r","↷",!1)}`,f("I","Import ▾",t.menu==="import"),...t.options.exports?[f("x","Export ▾",t.menu==="export")]:[]].join(" ");return It(u,`${d} `,n)}var s5={kind:"open",slot:0};function a5(t,e,n){return t.color?`${n?Nb:t.bg(e.background)}${t.fg(e.foreground)}`:""}function c5(t,e,n,r,i,o){let s=fc(r),a=a5(e,n,o),c=t.slot();return Array.from({length:r.rows},(u,f)=>{let l=s[f],d=[{text:" ",sgr:a}];if(l)l.forEach((p,b)=>{let $=i&&i.pane===r.id&&i.line===f&&i.run===b,k=e.color?$?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${rf(e,n,p.role,Up(p.role,c))}${t.where&&!Bp(p.role,c)?gt("dim"):""}`:"";d.push({text:p.text,sgr:k,target:{kind:"run",spot:{pane:r.id,line:f,run:b}}})});let h=df(d,0,r.width-1),m=r.width-ff(h);return m>0?[...h,{text:" ".repeat(m),sgr:a,target:s5}]:h})}function u5(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${i}${gt("dim")}`:"",s=(l)=>({text:l,sgr:o}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[[s(`${a}${"─".repeat(vc-_(a)-1)}┐`)]],f=[["text",r.text]];if(r.ground!==r.text)f.push(["ground",r.ground]);for(let[l,d]of f){let h={kind:"open",slot:d},m=t.shown()[d],p=d<T.length?"":Ge(d).about;u.push([{text:"│ ",sgr:o,target:h},{text:l.padEnd(7),sgr:o,target:h},{text:A.swatch,sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:Ge(d).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:p.padEnd(vc-27),sgr:o,target:h},{text:" │",sgr:o,target:h}])}return u.push([s(`${c}${"─".repeat(vc-_(c)-1)}┘`)]),u.map((l)=>df(l,0,vc))}function l5(t,e,n){if(!t.menu)return;let r=t.menu==="export"?["Share code","Add command","Palette file"]:["Another palette","A share code"],i=24,o=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${o}${gt("dim")}`:"",a=t.menu==="export"?"Copy ":"Take from ",c=[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:s}]];return r.forEach((u,f)=>{let l=f===t.entry,d={kind:"entry",index:f};c.push([{text:"│",sgr:s},{text:` ${l?"▌":" "} ${u.padEnd(i-6)}`,sgr:l&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${gt("bold")}`:o,target:d},{text:"│",sgr:s}])}),c.push([{text:`└${"─".repeat(i-2)}┘`,sgr:s}]),c}var f5=["#ff5f57","#febc2e","#28c840"];function d5(t,e,n,r){let i=e.color?`${e.bg(tM(n))}${e.fg(n.foreground)}`:"",o=[{text:" ",sgr:i}];for(let u of f5)o.push({text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i});o.push({text:" ",sgr:i});let s=AE(),a=(t.scene%s.length+s.length)%s.length;s.forEach((u,f)=>{let l={kind:"scene",scene:f};o.push(f===a?{text:` ${u} `,sgr:e.color?`${i}${e.bg(Ei(n.background,n.foreground,"tab"))}${gt("bold")}`:"",target:l}:{text:` ${u} `,sgr:e.color?`${i}${gt("dim")}`:"",target:l},{text:" ",sgr:i})});let c="⇧←→ ";return[...o,{text:" ".repeat(Math.max(0,r-ff(o)-_(c))),sgr:i},{text:c,sgr:e.color?`${i}${gt("dim")}`:""}]}function tM(t){return Ei(t.background,t.foreground,"bar")}function h5(t,e,n){let{frame:r}=n,i=Ei(e.background,e.foreground,"line"),o=t.color?`${t.bg(eM(e))}${t.fg(i)}`:"",s=t.color?`${t.bg(tM(e))}${t.fg(i)}`:"",a=(u,f)=>u===r.row||u===r.row+r.rows-1||f===r.col||f===r.col+r.cols-1,c=[];for(let[u,f]of CE(n.rules))for(let[l,d]of f)c.push([u,l,[{text:d,sgr:a(u,l)?o:s}]]);return c}function eM(t){return Ei(t.background,t.foreground,"stage")}function nM(t,e){return lc(t,e,0)?.inner}function rM(t,e,n,r,i={}){let o=lc(e,n,t.scene);if(!o)return;let s=Me(r),a=t.shown(),c=re(a),u=re(i.chrome?[...i.chrome]:t.list),f=i5(t,s,u,o,n-1),l=t.mode==="tune"?r5(t,s,u,o.side,f.lines,f.anchor,n-1,r&&i.art===!0):{lines:f.lines,art:void 0},d=l.lines,h=i.behind===!0,m=t.inspect?jl(o,t.spot):void 0,p=s.color?s.bg(eM(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(o.width),sgr:p}]),$=(N,j,z)=>{let G=N-2;if(G>=0&&G<b.length)b[G]=D3(b[G],j,z)},k=o.side+1;for(let[N,j,z]of h5(s,u,o))$(N,j-k,z);for(let N of o.tiles)c5(t,s,c,N,m,h).forEach((j,z)=>{$(N.row+z,N.col-k,j)});$(o.title.row,o.title.col-k,d5(t,s,u,o.title.cols));let v=m?u5(t,s,c):void 0;if(m&&v){let N=o.tiles.find((z)=>z.id===m.pane),j=fc(N)[m.line]?.[m.run];if(j){let z=Math.max(0,Math.min(N.col-k+1+j.col,o.width-vc)),G=N.row+m.line,et=G+1,q=et+v.length-2>n-2?G-v.length:et;v.forEach((Ot,tt)=>{$(q+tt,z,Ot)})}}let E=l5(t,s,c);if(E){let N=Math.max(0,o.width-24-(t.menu==="import"?12:2));E.forEach((j,z)=>{$(2+z,N,j)})}let x=o5(t,s,o.width),M=s.dim("─".repeat(o.width)),R=s.dim("│"),F=[];for(let N=0;N<n-1;N++){let j=N===0?x:N===1?M:J3(b[N-2]??[],r);F.push(`${nt(d[N]??"",o.side)}${R}${j}`)}return{lines:F,art:l.art}}var iM=80,oM=24,vg=11;function m5(t,e,n,r){let i=mg(e,n);return hn.map((o,s)=>{let a=e.mode==="tune"&&s===e.channel,c=n[o.key],u=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),f=bc(t,of(n,o,r),bo(c,o.min,o.max,r),a,o.key==="c"&&i!==void 0?bo(i,o.min,o.max,r):void 0),l=o.key.toUpperCase(),d={kind:"channel",channel:s};return`${at(d,a?t.bold(`▸${l}`):t.dim(` ${l}`))} ${at({kind:"bar",channel:s},f)} ${at(d,a?t.bold(u):t.dim(u))}`})}function p5(t,e){if(e.mode!=="tune"||e.slot()<T.length)return[];let n=js.map((i)=>at({kind:"scope",scope:i},i!==e.scope?t.dim(i):qe(t,i))),r=e.scoped().length;return[`${t.dim("Scope")} ${n.join(" ")}`,t.dim(r>1?`${r} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var sM={background:(t)=>t.background,foreground:(t)=>t.foreground,hue:(t)=>t.cursor,tint:(t)=>t.background,lightness:(t)=>t.ansi[4],chroma:(t)=>t.ansi[1],brights:(t)=>t.ansi[12]};function g5(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function b5(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function w5(t,e,n,r=go){let i=e.misses(),o=re(e.list),s=e.slot(),a=(l)=>{let d=e.list[l],h=l===s,m=e.signature.includes(Cn[l])?A.signature:t.color?A.swatch:" ",p=i.has(l)?A.miss:e.tone&&e.changed(l)?A.on:" ",$=`${t.color?`${t.fg(d)}${m}${h?t.fg(o.foreground):bt} `:`${m} `}${nf(e.lch[l])}${p}`;if(!h)return at({kind:"slot",slot:l},` ${$}`);return at({kind:"slot",slot:l},t.color?`${t.bg(o.selection)}${t.fg(o.foreground)} ${$}${se}`:`›${$}`)},c=(l)=>l?t.color?`${t.fg(o.cursor)}${A.gutter}${bt} `:`${A.gutter} `:" ",u=[t.dim(Jt(r,"top",[[2," Base "]]))];for(let l=0;l<T.length;l++){let d=l===e.row,h=T[l].padEnd(10);u.push(De(t,`${at({kind:"slot",slot:l},`${c(d)}${d?t.bold(h):h}`)}${a(l)}`,r))}u.push(t.dim(Jt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])));for(let l=T.length;l<gr;l++){let d=l===e.row,h=mn[l-T.length].padEnd(10),m=at({kind:"slot",slot:l+(e.col===1?8:0)},`${c(d)}${d?t.bold(h):h}`);u.push(De(t,`${m}${a(l)}${a(l+8)}`,r))}u.push(t.dim(Jt(r,"bottom")));let f=wc(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-f.length)},()=>""),...f]}function $5(t,e,n){let r=re(e.list),i=[` ${t.dim("Seeds")}`];lo.forEach((o,s)=>{let a=s===e.field,c=e.seeds[o.key],u=Array.from({length:vg},(b,$)=>{let k=o.min+(o.max-o.min)*$/(vg-1);return sM[o.key](mi({...e.seeds,[o.key]:k}))}),f=bc(t,u,bo(c,o.min,o.max,vg),a),l=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),d=sM[o.key](r),h=a?t.color?`${t.fg(r.cursor)}${A.gutter}${bt} `:`${A.gutter} `:" ",m=o.label.padEnd(17),p={kind:"field",field:s};i.push(`${at(p,`${h}${a?t.bold(m):m}`)}${at({kind:"seed",field:s},f)}${at(p,` ${l} ${t.color?`${t.fg(d)}${A.swatch}${bt} `:""}${t.dim(d)}`)}`)}),i.push("");for(let o of St("Seven seeds grow all twenty colors, each accent on the hue its ANSI role reads as — whatever the seeds, they pass the gate. enter moves on to tune each slot, and the seeds stay behind.",go-4))i.push(` ${t.dim(o)}`);return i.push(""),[...i,...wc(t,e,n-i.length,go)]}function lM(t,e,n,r,i,o){let s=Zt.indexOf(Ki(i)),a=Zt.map((f,l)=>at({kind:"scene",scene:l},l!==s?t.dim(f.name):qe(t,f.name))).join(" "),c=[It(a,t.dim("⇧←→"),n)],u=`${t.bg(e.background)}${t.fg(e.foreground)}`;for(let f of Ki(i).lines){let l=cs(f,n-2);if(!l)continue;if(c.length>=r)break;let d=t.color?l.map(([h,m])=>`${rf(t,e,m,LS(o,m))}${h}${me}${u}`).join(""):l.map(([h])=>h).join("");c.push(`${u} ${nt(d,n-2)} ${t.color?me:""}`)}return c}var k5=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function aM(t,e,n,r,i,o,s){let a=(i-o)/(s-1),c=fM(e),u=re(n),f=(l)=>Math.min(s-1,Math.max(0,Math.round((i-r(xt(l)))/a)));return Array.from({length:s},(l,d)=>{let m=`${(d%2===0?(i-a*d).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"").padStart(4)} ${t.dim(d%2===0?"┤":"│")}`;for(let p=0;p<8;p++){let b=[" "," "," "," "," "],$=u.ansi[p],k=u.ansi[p+8],v=f($)===d,E=f(k)===d,x=(R)=>{if(R===1&&v)return t.color?`${t.fg($)}${A.on}`:A.on;if(R===3&&E)return t.color?`${t.fg(k)}${A.off}`:A.off;return b[R]},M=[0,1,2,3,4].map(x).join("");m+=c.has(p)?t.color?`${t.bg(u.selection)}${M}${se}`:M:`${M}${t.color?bt:""}`}return m})}function fM(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=T.length).map((n)=>(n-T.length)%8))}function y5(t,e){let n=fM(e);return` ${k5.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function v5(t,e){let n=re(e),r=Array.from({length:40},(o,s)=>{let a=s*9+4.5,c=-1,u=999;for(let[f,l]of Object.entries(xe)){let d=Oe(a,l.center);if(d<=l.width&&d<u)u=d,c=Number(f)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(o,s)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(xe).map(Number)){let u=n.ansi[c+o],f=Math.min(39,Math.round(xt(u).h/9));a[f]=t.color?`${t.fg(u)}${s}${bt}`:s}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?bt:""}`,i(0,A.on),i(8,A.off)]}function E5(t,e,n){let r=br(n,e.signature,e.waive),i=(a)=>Ge(T.length+a).name,o=(a)=>xt(n[T.length+a]).h.toFixed(0),s=[...qn(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${o(a)}° → bright ${o(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...Or(r).map(({slot:a,over:c})=>{let u=xe[wn(a)];return`${i(a)} ${o(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...Dn(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return s.length>0?s.map((a)=>`${t.bold(A.miss)} ${a}`):[t.dim(`${A.ok} Every accent keeps its role and its bright`)]}function cM(t,e,n,r,i){let o=e.shown(),s=Math.max(...o.slice(T.length).map((u)=>xt(u).c)),a=Math.max(0.2,Math.ceil(s/0.05)*0.05),c=[It(t.bold("Lightness"),t.dim("● normal ○ bright"),n),...aM(t,e,o,(u)=>u.l,1,0.3,8),y5(t,e)];if(i)c.push("",t.bold("Chroma"),...aM(t,e,o,(u)=>u.c,a,0,5),"",...v5(t,o));return[...c,...E5(t,e,o)].slice(0,r)}function S5(t,e,n){let r=(i,o)=>at({kind:"view",view:o},e.view!==o?t.dim(` ${i} `):qe(t,i));return It(`${r("Slot","slot")}${r("Relations","relations")}`,jt("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function M5(t,e,n,r){let i=e.slot(),o=e.list[i],s=e.lch[i],a=e.start[i],{name:c,about:u}=Ge(i),f=e.signature.includes(Cn[i]),l=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[S5(t,e,n),"",...cM(t,e,n,r-2,!0)];let d=i>=T.length?t.dim("Uses underlined below"):f?t.dim("◆ signature"):"",h=[It(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":d,n),""],m=t.color?`${t.fg(o)}${"█".repeat(8)}${bt} `:"",p=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,$,k]=st(o);if(h.push(`${m}${p??b5(t,s)}`),h.push(`${m}${t.dim(`${o} · rgb ${b} ${$} ${k}`)}`),e.view!=="relations"){let M=t.color?`${t.fg(a)}${A.swatch}${bt} `:"";h.push(`${m}${a!==o?t.dim(`was ${M}${g5(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}h.push(""),h.push(...m5(t,e,s,l),Ql(t,e,l));let v=p5(t,e);if(v.length>0)h.push(...v);if(e.view==="relations")return h.push("",...cM(t,e,n,r-h.length-1,!1)),h;h.push("");for(let M of ef(e,i,s))St(M.text,n-2).forEach((R,F)=>{h.push(`${F===0?xu(t,M.ok):" "} ${M.ok===!1?R:t.dim(R)}`)});let E=tf(e,i);if(E)h.push(t.dim(` ${E}`));let x=r-h.length-1;if(x>=3)h.push("",...lM(t,re(e.shown()),n,x,e.scene,i));return h}function x5(t,e,n,r){return[It(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...lM(t,re(e.list),n,r-2,e.scene,-1)]}var O5=[["Slots","↑↓ slot · ←→ normal or bright · home end · pgup the base colors · pgdn the ANSI ones · n N the next and last miss"],["Tune","enter or tab opens the picker over the list, under the slot · ↑↓ lightness · ←→ chroma · ⇧←→ hue by 5, , . by 1 · pgup pgdn lightness ×5 · tab ◐ contrast · home end the ends · 0-9 jump · enter keeps · esc undoes · a click outside it keeps"],["Contrast","◐ moves lightness until the ratio to the color it is read against changes · home the gate’s floor · 1-9 that ratio"],["Chroma","stops at the sRGB edge · what lightness or hue takes away comes back while you tune, where it fits again (○)"],["Scope","a while tuning: this, pair, normals, brights or accents — the slots in it move by the same step, each keeping its own color"],["Relations","g shows the lightness, chroma and hue of every ANSI color at once, and the relations the gate checks"],["Sample","⇧←→ another tab · the slot under the cursor is underlined where it is used · w dims the rest"],["Inspect","i, or a click on the sample, finds the slots a spot uses · ←→↑↓ move · enter goes to the slot · esc leaves"],["Link","l makes a bright follow its normal — tuning the normal moves it, tuning the bright alone unlinks it · = snaps it to its normal"],["Filter","m only the slots that changed · n and N walk the gate misses listed under the slots"],["Export","x copies the share code, an add command or the palette file · I takes colors from another palette or a share code"],["Type","# then #rrggbb, rgb(r g b) or oklch(l c h) — a paste works too"],["Slot","c copies · v pastes · r puts it back as it opened, R all of them · = the bright follows its normal · * marks it a signature color"],["Palette","f moves the colors the gate misses · o takes another palette’s colors"],["Gate","✗ marks every slot whose own checks miss, and each miss names its slots"],["History","u undo · ctrl+r redo"],["Pictures","p finds one on the boorus, tried on in these colors · b shows or hides it behind the editor · drop a picture on the window, or paste one, its path or its link · ctrl+v takes the clipboard’s"],["Compare","space shows the colors you started from, on the terminal too"],["Save","s saves · esc cancels, asking first when something changed"]];function I5(t,e,n){let r=[` ${t.bold("Help")}`,""];for(let[i,o]of O5.filter(([s])=>s!=="Pictures"||e.options.find))St(o,n-16).forEach((s,a)=>{r.push(` ${t.bold((a===0?i:"").padEnd(11))} ${s}`)});return r}function R5(t,e,n,r){let i=e.choices(),o=e.options.palettes?.length??0,s=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=[It(` ${t.bold("Take colors from")} ${s}`,t.dim(`${i.length}/${o}`),n),""],c=r-2,u=Math.max(0,Math.min(e.pick-Math.floor(c/2),i.length-c)),f=Math.min(40,Math.max(12,...i.map((l)=>_(l.name))));if(i.slice(u,u+c).forEach((l,d)=>{let h=u+d===e.pick,m=l.colors,p=t.color?`${t.bg(m.background)} ${[...m.ansi].map((k)=>`${t.fg(k)}${A.swatch}`).join("")} ${t.fg(m.foreground)}Aa ${se}`:"",b=h?"▌ ":" ",$=l.name.padEnd(f);a.push(at({kind:"choice",index:u+d},`${b}${h?t.bold($):$} ${p}`))}),i.length===0)a.push(` ${t.dim(`No palettes match '${e.filter}'`)}`);return a}var P5=new Set(["enter","s","?","g","a","i"]);function uM(t,e,n){let r="EDIT",i="",o=[],s="";if(e.quitting)r="EDIT (QUIT)",i=e.added>0?`Discard changes and ${e.added} ${e.added===1?"picture":"pictures"}?`:"Discard changes?",o=[["y","discard"],["n","keep editing"]];else if(e.typing!==void 0)r="EDIT (TYPE)",i=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),o=[["enter","set"],["ctrl+u","clear"]],s="esc back";else if(e.overlay==="keys")r="HELP",s="any key closes";else if(e.overlay==="open")r="EDIT (OPEN)",o=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],s="esc close";else if(e.menu)r=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",o=[["↑↓","item"],["enter","choose"]],s="esc close";else if(e.compare)r="EDIT (BEFORE)",i="The colors you started from",o=[["space","back to yours"]],s="esc back";else if(e.mode==="seeds")r="EDIT (SEEDS)",o=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],s="esc cancel";else if(e.mode==="tune")r="EDIT (TUNE)",o=[["↑↓","L"],["←→",e.channel===ne?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=T.length?[["a","scope"]]:[],[e.channel===ne?"1-9":"0-9",e.channel===ne?"ratio":"jump"],["#","type"],["enter","keep"]],s="esc undo";else if(e.inspect)r="EDIT (INSPECT)",o=[["←→↑↓","spot"],["tab","pane"],["enter","its slot"],["i","leave"]],s="esc leave";else o=[["↑↓","slot"],["←→","normal or bright"],["enter","tune"],["i","inspect"],["l","link"],["m","changed"],["g",e.view==="slot"?"relations":"slot"],...e.misses().size>0?[["n","next miss"]]:[],["#","type"],["f","fix"],["p","picture"],["b","picture layer"],["x","export"],["u","undo"],["s","save"],["?","keys"]],s="esc cancel";if(!e.options.find)o=o.filter(([u])=>u!=="p"&&u!=="b");if(!e.options.exports||!e.roomy)o=o.filter(([u])=>u!=="x");if(!e.roomy)o=o.filter(([u])=>u!=="i"&&u!=="m");if(e.notice)i=t.warn(e.notice),o=[];let a=`${qe(t,r)}${t.color?" ":" "}`,c=s?jt(s.split(" ")[0],`${t.bold(s.split(" ")[0])} ${t.dim(s.split(" ").slice(1).join(" "))}`):"";for(;;){let u=[i,...o.map(([d,h])=>jt(d,`${t.bold(d)} ${t.dim(h)}`))].filter(Boolean),f=`${a}${u.join(" ")}`,l=-1;if(o.forEach(([d],h)=>{if(h>0&&!P5.has(d))l=h}),_(f)+_(s)+3<=n||l<0)return s?It(f,c,n):nt(f,n);o=o.filter((d,h)=>h!==l)}}function A5(t,e,n,r,i={}){let o=Me(r);if(e<iM||n<oM){let p=[o.bold("ttheme palette editor"),`Needs ${iM}×${oM} — now ${e}×${n}`,o.dim("esc cancels")];return{lines:Array.from({length:n},(b,$)=>nt(p[$]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"){let p=rM(t,e,n,r,i);if(p)return{lines:[...p.lines,uM(o,t,e)],art:p.art}}let s=t.failing().length,a=s===0?"✓ Passes the gate":`✗ ${s} ${s===1?"miss":"misses"} in the gate`,c=t.pictures>0?o.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=t.resettable()?`${jt("R",o.dim("Reset"))} `:"",f=`${t.dirty()?`${o.warn(A.on)} unsaved `:""}${u}${c}${o.dim(a)}`,l=`${o.accent(A.current)} ${o.bold(t.options.title)} ${o.dim(`· ${t.options.name}`)}`,d=n-4,h;if(t.overlay==="keys")h=I5(o,t,e);else if(t.overlay==="open")h=R5(o,t,e,d);else{let p=e-go-2,b=t.mode==="seeds"?$5(o,t,d):w5(o,t,d),$=t.mode==="seeds"?x5(o,t,p,d):M5(o,t,p,d);h=Array.from({length:d},(k,v)=>`${nt(b[v]??"",go)}${o.dim("│")} ${nt($[v]??"",p)}`)}let m=[It(l,f,e),""];for(let p=0;p<d;p++)m.push(nt(h[p]??"",e));return m.push("",uM(o,t,e)),{lines:m,art:void 0}}var N5=new Set(["tab","a","#","l","enter","esc"]),T5=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function H5(t){if(!t)return!0;return t.kind==="key"?!N5.has(t.key):!T5.has(t.kind)}function F5(t,e,n){if(n.action==="wheel"){if(!n.sideways)t.scroll(n.wheel);return}if((n.action==="press"||n.action==="drag")&&n.button!=="left")return;if(n.action==="press"&&t.overlay==="keys"){t.press("esc");return}let r=e?.target;if(n.action==="press"&&t.mode==="tune"&&t.roomy&&!t.overlay&&H5(r))t.dismiss();if(!e||!r)return;let i=e.width>1?(e.exact.x-0.5)/(e.width-1):0;if(n.action==="release"){if(!e.inside)return;if(r.kind==="key")t.press(r.key);else if(r.kind==="entry")t.choose(r.index);else if(n.count===2&&r.kind==="slot"&&t.mode==="list")t.press("enter");else if(n.count===2&&r.kind==="choice"&&t.overlay==="open")t.press("enter");return}if(r.kind==="plane"){let o=ZS(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(o.lightness,o.chroma)}else if(r.kind==="bar")t.slide(r.channel,i);else if(r.kind==="seed")t.sow(r.field,i);else if(n.action!=="press")return;else if(r.kind==="slot")t.select(r.slot);else if(r.kind==="open")t.openSlot(r.slot);else if(r.kind==="run")t.point(r.spot);else if(r.kind==="entry")t.entry=r.index;else if(r.kind==="format")t.format=r.format;else if(r.kind==="channel")t.grip(r.channel);else if(r.kind==="scope")t.scopeTo(r.scope);else if(r.kind==="choice"){if(t.overlay==="open")t.pick=r.index}else if(t.typing===void 0&&!t.overlay&&!t.quitting){if(r.kind==="field"&&t.mode==="seeds")t.field=r.field;else if(r.kind==="view"&&t.mode!=="seeds")t.view=r.view;else if(r.kind==="scene")t.scene=r.scene}}var L5=[El,Tn,li,dr];async function dM(t,e){let n=new sg(t),r=e.backdrop,i=e.layer,o=(a)=>n.typing===void 0&&Wl(a),s=e.hosted?{modes:[dr,...fi()],assume:[Tn,li],burst:o}:{modes:[...L5,...fi()],burst:o};return di(s,async(a)=>{let c=!1,u=!1,f=new Map,l=new vp,d=await a.ask(`${Zh(cn,"")}${fi().length>0?Kv:""}\x1B[c`,(E)=>{if(E.kind==="color"){f.set(E.code,E.value);return}return l.see(E)},1000);if(d?.cell)a.pixels(d.cell);let h=ay(f),m=h.map((E,x)=>E??n.start[x]),[p,b]=m;if(!h[3])m[3]=Ei(p,b,"selection");let $=new no({write:(E)=>a.write(E),view:()=>{if(c)return;let{lines:E,art:x}=A5(n,a.cols,a.rows,e.color,{behind:n.pic&&r?.laid===!0,art:i?.ready===!0,chrome:m});return{lines:E,after:()=>`${(n.pic?r?.draw(n.shown(),n.signature,n.waive,a.cols,a.rows,nM(a.cols,a.rows)):r?.clear())??""}${i?.draw(x)??""}`}}}),k=(E=!1)=>{if(E)$.soon();else $.request()},v=async(E)=>{let x=t.find;if(!x)return;c=!0,a.write(`${r?.clear()??""}${i?.clear()??""}`);try{n.found(await x(n.edited(),E))}catch(M){n.notice=M instanceof Error?M.message:String(M)}if(u)return;c=!1,r?.load(),$.reset(Ji),k()};if(a.write(Ji),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),$.reset(Ji),$.request()}),r)r.load(),r.ready=()=>$.request();if(r||i){let E=new Ya;a.ask(yl,(x)=>E.see(x),1000).then((x)=>{if(x)r?.measured(x),i?.measured(x);$.request()})}k();try{let{edited:E}=await a.loop((x)=>{if(c)return;if(x.kind==="paste")n.paste(x.text);else if(x.kind==="key")n.press(x.key);else if(x.kind==="mouse")F5(n,$.point(x),x);if(n.copied!==void 0)a.write(`\x1B]52;c;${Buffer.from(n.copied).toString("base64")}\x07`),n.copied=void 0;if(n.result)return{edited:n.result==="saved"?n.edited():void 0};let M=n.wants;if(M)n.wants=void 0,v(M.start);return},()=>{if(!c)k(!0)});return E}finally{u=!0,$.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as Z5}from"node:child_process";import{createHash as OM}from"node:crypto";import{existsSync as xc,mkdirSync as V5,mkdtempSync as X5,readFileSync as Q5,rmSync as hf}from"node:fs";import{homedir as t4,tmpdir as e4}from"node:os";import{basename as n4,dirname as r4,join as _n}from"node:path";import{pathToFileURL as pM}from"node:url";import{existsSync as C5,readFileSync as j5,statSync as _5}from"node:fs";import{join as hM}from"node:path";function G5(t,e){try{return JSON.parse(j5(hM(rn(t),e),"utf8"))}catch{return{}}}function B5(t,e,n){L(hM(rn(t),e),`${JSON.stringify(n)}
720
- `)}class Eg{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;home;catalog;entry;signal;credited;constructor(t){this.home=t.home,this.catalog=t.catalog,this.entry=t.entry,this.signal=t.signal,this.credited=t.credited}matesOf(t,e){return this.owners.get(t.key)?.get(e)??[]}async transparent(t,e){let n=this.keep(t,"probes.json"),r=n[e.id];if(r!==void 0)return r;try{let i=await aa(t,e,this.signal),o=Ni(t,e),s=(i===void 0?await F0(o.site,o.url,this.signal):i)?.alpha===!0;return n[e.id]=s,this.unsaved.add(`${t.key}/probes.json`),s}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=V.find((i)=>i.key===e);if(r)B5(r,n,this.keep(r,n))}this.unsaved.clear()}owned(t,e,n){this.keep(t,"owners.json")[e]=n,this.unsaved.add(`${t.key}/owners.json`)}credit(t,e){let{site:n,post:r}=t;if(!Qc(n,r))return Promise.resolve();let i=Pe(n,r.id),o=this.crediting.get(i);if(!o)o=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,o);return o}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=E$(this.home),r=this.keep(t,"owners.json"),i=this.catalog.palettes.flatMap((c)=>{let u=n.get(c.name);return c.group===this.entry.group&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),o=await Promise.all(i.map(async(c)=>{let u=r[c.id];if(u!==void 0)return{...c,owner:u};try{return{...c,owner:(await _o(t,c.id,this.signal))?.owner??""}}catch{return}})),s=new Map;for(let c of o)if(c)r[c.id]=c.owner,s.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=R0(s);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(C5(e))return _5(e).size;let i=this.inflight.get(e);if(i)return i;let o=(async()=>{let s=await nu(t,n,this.signal,r);return L(e,s),s.length})();this.inflight.set(e,o);try{return await o}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=G5(t,e),this.caches.set(n,r);return r}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await Xc(t,e.id,n)}catch{return}if(!i?.owner)return;r[e.id]=i,this.unsaved.add(`${t.key}/credits.json`)}sa(e,i),this.credited()}}import{rmSync as U5}from"node:fs";import{join as W5}from"node:path";var Ws=2147483645,Mc=2147483646,mM=-1073741827,K5=-1073741828,z5=16,q5=0.4,D5=3221225472,J5=256;function Y5(t){let e=/^(\d+) (\d+)$/.exec(t??"");return e&&(Number(e[1])>0||Number(e[2])>0)?{x:Number(e[1]),y:Number(e[2])}:void 0}var Sg=Y5(process.env.TTHEME_BG_MARGIN);class Mg{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=Uu(process.env);files=Wu(process.env);moves=fy(process.env);layers=ls(process.env);wipes=dy(process.env);views=qi(process.env);bandFiles=new Map;nextBand=D5;view;grid;background;renders;scratch;signal;write;constructor(t){this.view=t.view,this.grid=t.grid,this.background=t.background,this.renders=t.renders,this.scratch=t.scratch,this.signal=t.signal,this.write=t.write,this.screen=new no({write:(e)=>this.write(e),view:()=>this.frame(),beat:()=>{this.view.beat++}})}draw(){if(!this.signal.aborted)this.screen.request()}soon(){if(!this.signal.aborted)this.screen.soon()}flush(){if(!this.signal.aborted)this.screen.now()}point(t){return this.screen.point(t)}drop(){this.screen.drop()}frame(){if(this.signal.aborted)return;let{cols:t,rows:e,cell:n}=this.grid(),r=_p(this.view,t,e);return this.view.loaderFrom=r.loader?this.view.loaderFrom??this.view.beat:void 0,{lines:r.lines,zones:r.zones,after:(i)=>this.images(r.images,i,n),...this.view.mode==="grid"&&this.view.editing!==void 0?{cursor:this.caret()}:{},ticking:r.tick}}images(t,e,n){let r="",i=new Set,o;for(let s of t){if(this.views&&s.id>=Hp){o=s;continue}let a=this.bands?this.banded(s):s;if(!a)continue;if(this.wipes&&[...e].some((u)=>u>=a.row&&u<a.row+a.rows))this.placed.delete(a.id);if(i.add(a.id),this.sent.get(a.id)!==a.path){let u=Hl(a,this.files);if(u===void 0)continue;r+=u,this.sent.set(a.id,a.path),this.placed.delete(a.id)}let c=`${a.row};${a.col};${a.cols};${a.rows};${a.crop};${a.z}`;if(this.placed.get(a.id)!==c){if(!this.moves&&this.placed.has(a.id))r+=Lp(a.id);r+=yE(a,n),this.placed.set(a.id,c)}}for(let s of this.sent.keys())if(!i.has(s))r+=ac(s),this.sent.delete(s),this.placed.delete(s);return r+(this.views?this.backdrop(o):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=hr(t,e).height,r=()=>{let i=this.view,o=i.top*vt.height,s=o-i.scroll;if(s===0||i.mode!=="grid"){i.scroll=o;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}if(Math.abs(s)>2*n)i.scroll=o-Math.sign(s)*n,s=o-i.scroll;i.scroll+=Math.sign(s)*Math.max(1,Math.round(Math.abs(s)*q5)),this.draw(),this.gliding=setTimeout(r,z5)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*vt.height}resized(){this.screen.reset()}stop(){this.screen.stop(),clearTimeout(this.gliding)}prebake(){let t=this.view,{cols:e,rows:n}=this.grid();for(let r of _p({...t,scroll:t.top*vt.height},e,n).images)if(r.crop!==void 0)this.band(r.path,r.crop,r.rows)}cover(){let{cols:t,rows:e}=this.grid(),n=`${t};${e}`;if(!this.layers||this.covered===n)return"";let r="";if(!this.covered){let i=Buffer.from(st(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${Ws},q=2;${i}\x1B\\`,Sg)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${Mc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${Mc},p=${Mc},c=1,r=1,C=1,z=${K5},q=2\x1B\\`}else if(!this.moves)r+=Lp(Ws);if(this.covered=n,Sg){let{x:i,y:o}=Sg;return`${r}\x1B_Ga=p,i=${Ws},p=${Ws},P=${Mc},Q=${Mc},H=${-i},V=${-o},c=${t+2*i},r=${e+2*o},C=1,z=${mM},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${Ws},p=${Ws},c=${t},r=${e},C=1,z=${mM},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,o=n*r.h,s=t?`${this.background}|${t.path}|1|${i}|${o}|${i}|${o}|0|0|1`:`${this.background}||1|${i}|${o}|0|0|0|0|5`;if(s===this.viewed)return"";return this.viewed=s,Di(s)}caret(){return`\x1B[1;${Math.min(this.grid().cols,_(`⌕ ${this.view.editing??""}`)+1)}H`}banded(t){if(t.crop===void 0)return t;let e=this.band(t.path,t.crop,t.rows,!this.gliding);return e?.ready?{...t,id:e.id,path:e.path,crop:void 0}:void 0}band(t,e,n,r=!0){let i=`${t}|${e}|${n}`,o=this.bandFiles.get(i);if(o||!r)return o;let{cell:s}=this.grid(),a=this.nextBand++,c={id:a,path:W5(this.scratch,`band-${a}.png`),ready:!1};return this.bandFiles.set(i,c),this.renders.run({job:"band",from:t,to:c.path,y:e*s.h,height:n*s.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=J5)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),U5(e.path,{force:!0})}}}var ko=[{name:"TTHEME_FIND_RATING",label:"Rating",about:"The ratings to list, each site read in its own words — space ticks one, and one stays ticked",choices:Lo,multi:{read:Ai}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:Pi,multi:{read:jo,none:"none"}},{name:"TTHEME_FIND_POSTS",label:"Posts",about:"Every post of the character, or only the transparent cutouts",choices:["all","cutouts"]},{name:"TTHEME_FIND_SOLO",label:"Solo",about:"When on, only the posts known to show the character alone — checked as posts arrive, so the counts below leave it out",choices:["on","off"]},{name:"TTHEME_FIND_ORDER",label:"Order",about:"How posts are ranked: fit, by how well each makes a backdrop; newest; or score",choices:["fit","newest","score"]},{name:"TTHEME_FIND_SETS",label:"Sets",about:"One picture posted over and over, or held by another site too: fold it into one tile, or show each",choices:["fold","show"]},..._s()?[{name:"TTHEME_FIND_REMOVE_BG",label:"Remove bg",about:"Cut the character out of an opaque picture you try on, with macOS Vision",choices:["on","off"]}]:[],{name:"TTHEME_FIND_MIN_SCORE",label:"Min score",about:"Posts scored at least this — danbooru, konachan and yande.re; zerochan keeps no score. ←→ steps, or type any number",choices:g0,entry:"number",advanced:!0},{name:"TTHEME_FIND_MIN_SIZE",label:"Min size",about:"The shorter side of a picture, in px — every site filters it. ←→ steps, or type any number",choices:b0,entry:"number",advanced:!0},{name:"TTHEME_FIND_SITES",label:"Sites",about:"The sites the all tab mixes — each keeps its own tab. Space ticks one, and one stays ticked",choices:V.map((t)=>t.name),multi:{read:ra},advanced:!0},{name:"TTHEME_FIND_HIDE",label:"Hide",about:"Comics, monochrome, sketches or chibi, told by tag in every site's spelling — checked as posts arrive",choices:xd,multi:{read:qc,none:"none"},advanced:!0},{name:"TTHEME_FIND_HIDE_TAGS",label:"Hide tags",about:"Posts with any of these tags are left out, spaced like cosplay multiple_girls — checked as posts arrive",choices:[],entry:"text",advanced:!0},{name:"TTHEME_FIND_PNG",label:"PNG only",about:"PNG originals only — danbooru counts it, the others are told by the file; zerochan only where danbooru holds it",choices:["off","on"],advanced:!0}];function gM(t,e){if(t.multi)return t.multi.read(e).join(" ")||t.multi.none;if(t.entry==="number")return/^\d+$/.test(e??"")&&Number(e)>0?String(Number(e)):"off";if(t.entry==="text")return ia(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var i4=["fit","newest","score"];function xg(t){return i4.find((e)=>e===t)??"fit"}var o4={left:-1,right:1,"shift-left":-10,"shift-right":10};function bM(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=Z5(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function s4(t,e,n){if(e<0){if(t!=="fill")return Math.max(pf,t+e);if(!n)return t;return Math.max(pf,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function IM(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function a4(t,e){if(IM(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:qt[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function wM(t,e){let n=X(t);return ge(t,e).flatMap((r,i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...V,mr].find((c)=>c.key===o);if(!a||!s)return[];return[{key:r.key,id:Number(s),ansi:a.ansi,...a===mr?{}:{page:a.pageUrl(Number(s))},up:i===0,from:_n(n,r.original??r.fill)}]})}function c4(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var $M=12,u4=4,l4=150,f4=300,kM=12,d4=2,h4=150,m4="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",p4=4000,g4=8000,yM=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,b4=process.platform==="win32"?"alt+v":"ctrl+v",vM=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",w4=1280,$4=16,k4=qt.indexOf("top-right")+1,pf=20,EM=2,SM=3,y4=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,v4=8,E4=9;function mf(t,e){return{key:t,groups:[],sources:[],queue:[],rounds:0,roundOf:new Map,last:new Map,kin:new Map,kindred:new Map,shapes:[],seen:new Set,same:new Map,checked:0,total:0,focus:0,top:0,searching:e,stage:"fetch",arrived:new Set}}function Oc(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return Oc(t.errors[0]);if(t.cause)return Oc(t.cause);let e=t.code;if(typeof e==="string")return e;let n=(t.message||t.name).split(".")[0]??"";return n.length>56?`${n.slice(0,55)}…`:n}function Og(t,e){return`${t}: ${Oc(e)}`}function MM(t){return t.width*t.height}function xM(t,e){return`${t}-${OM("sha1").update(e).digest("hex").slice(0,8)}`}class Ig{view;tone;session=new AbortController;cell={w:0,h:0};cols=process.stdout.columns||80;rows=process.stdout.rows||24;gen=0;pumping=0;boards=new Map;board;posts=new Map;thumbPath=new Map;looking=new Map;looked=new Map;matched=new Map;aheading=!1;pages=new Map;tab=0;values=new Map(ko.map((t)=>[t.name,gM(t,process.env[t.name])]));direction=1;prefetching=0;related=new Map;pool=[];relating;thumbQueue=[];heldFiles=new Map;heldAsked=new Set;thumbing=0;clarity=new Map;tunedFiles=[];presenting=!1;again=!1;renders=new pc;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new Yp((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;attaching;done;scratch=X5(_n(e4(),"ttheme-find-"));home;catalog;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.catalog=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((s)=>s.booru?[s.booru]:[])),this.tone=Mn(n,n.signatureSlots),this.blurring=ti(t);let o={size:"fill",at:k4,opacity:this.tone.opacity};this.view={palette:n.name,tag:r,site:this.tabName,siteAnsi:this.tabAnsi,nextSite:this.nextTabName,preset:this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:xg(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:Ai(this.setting("TTHEME_FIND_RATING")),block:jo(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:ra(this.setting("TTHEME_FIND_SITES")),hide:qc(this.setting("TTHEME_FIND_HIDE")),hideTags:ia(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:ko.map((s)=>({label:s.label,choices:[...s.choices],value:this.setting(s.name),default:gM(s,Pa(s.name)),multi:s.multi&&{none:s.multi.none},about:s.about,entry:s.entry,advanced:s.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:wM(t,n.name),checked:0,total:0,searching:r!=="",stage:"fetch",sites:[],focus:0,top:0,scroll:0,beat:0,mode:"grid",help:!1,scene:Math.max(0,Zt.findIndex((s)=>s.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...o},untuned:o,coloring:qu(t),editing:r===""?"":void 0,chips:[]},this.paint=new Mg({view:this.view,grid:()=>({cols:this.cols,rows:this.rows,cell:this.cell}),background:n.background,renders:this.renders,scratch:this.scratch,signal:this.signal,write:(s)=>this.write(s)}),this.kept=new Eg({home:t,catalog:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=mf(this.boardKey,r!==""),this.boards.set(this.board.key,this.board)}get signal(){return this.session.signal}get site(){return this.tab===0?void 0:V[this.tab-1]}get sites(){return this.site?[this.site]:V.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??u4}get nextTabName(){let t=(this.tab+1)%(V.length+1);return t===0?"all":V[t-1].name}frame(){return{w:this.cols*(this.cell.w||10),h:this.rows*(this.cell.h||20)}}setting(t){return this.values.get(t)}narrowed(){return Id(this.setting("TTHEME_FIND_MIN_SCORE"),this.setting("TTHEME_FIND_MIN_SIZE"),this.setting("TTHEME_FIND_PNG"))}get boardKey(){return`${this.site?.key??"all"}|${this.view.preset}|${this.view.order}`}origPath(t,e,n){return _n(rn(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=Jc(t.site,t.post);return _n(rn(t.site),"thumb",`${xM(t.post.id,e)}.${Lr(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=Pe(n,r.id),o=En(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:o.width,height:o.height,reduced:o!==r,page:n===mr?"":n.pageUrl(r.id),artist:n===mr?zE(r.source):r.named.artist[0]??"",score:r.score,variants:e,mates:this.kept.matesOf(n,r.owner),thumb:this.thumbPath.get(i),missing:this.thumbless.has(i)}}show(){let t=this.view,e=this.board;if(t.tiles=e.groups.flatMap((n)=>n.open?n.posts.map((r)=>this.tileOf(r,0)):[this.tileOf(n.posts[0],n.posts.length)]),t.checked=e.checked,t.total=e.total,t.searching=e.searching,this.stageOf(e),t.note=e.note,t.focus=Math.max(0,Math.min(e.focus,t.tiles.length-1)),t.top=e.top,this.showing!==e)this.showing=e,this.paint.snap()}stageOf(t){let e=this.view;e.stage=t.stage,e.ranking=t.ranking,e.sites=this.sites.map((n)=>({name:n.name,arrived:t.arrived.has(n.name)}))}syncSite(){let t=this.view;t.site=this.tabName,t.siteAnsi=this.tabAnsi,t.nextSite=this.nextTabName}run(){let t=(e)=>this.view.editing===void 0&&Wl(e);return di({modes:[dr,...fi()],assume:[Tn,li],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let o of i)this.inbound(o);this.paint.soon()}),e.write(Ji);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(pu,0);try{let i=new Ya,o=await e.ask(yl,(s)=>i.see(s),1000);if(o){if(this.cell=o,this.holdThumbs(),this.view.tag)this.search(),this.relate(this.view.tag)}else this.view.searching=!1,this.view.error="This terminal does not report its cell size — find needs kitty graphics";if(!process.env.TMUX)await e.ask(m4,(s)=>s.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(Xv),this.start&&"paste"in this.start)this.pasted(this.start.paste);else if(this.start)this.fromClipboard();else this.peek();return this.paint.draw(),await e.until(n)}finally{this.session.abort(),this.grabber.stop(),this.attaching?.abort(),clearTimeout(this.noticeTimer),clearTimeout(this.peekTimer),this.fetch?.abort(),clearTimeout(this.settle),this.quietSuggest(),this.quietCount(),clearInterval(r),this.paint.stop(),e.write(`\x1B_Ga=d,d=A,q=2\x1B\\${Ji}`),this.kept.save(),this.renders.close(),hf(this.scratch,{recursive:!0,force:!0}),P0()}})}write(t){this.terminal?.write(t)}get saved(){return this.view.saved?.text}get installs(){return this.view.installed.length}finish(t){this.done?.(t===2&&this.saved?0:t)}inbound(t){if(t.kind==="key")this.key(t.key);else if(t.kind==="mouse")this.pointer(t);else if(t.kind==="paste")this.pasted(t.text);else if(t.kind==="mode"){if(t.mode===5522)this.grabber.clipboard=t.value!==0&&t.value!==4}else if(t.kind==="osc")if(t.code==="72"&&t.meta.t==="q")this.grabber.drops=!0;else this.grabber.take(t)}pasted(t){let e=this.view;if(e.editing!==void 0&&t.trim()!==""&&!this.picture(t)){e.editing+=t.replace(/[\r\n]+/g," "),this.suggest(),this.paint.draw();return}if(e.installing!==void 0||e.panel!==void 0||e.help)return;if(t.trim()===""){this.fromClipboard();return}this.attach(t)}picture(t){let e=t.trim();if(/^https?:\/\/\S+$/i.test(e))return!Dc(e,this.site??V[0]);return Ls(e).length>0}async got(t){if(t.kind==="error"){this.notice(t.message);return}if(t.kind==="text"){if(t.text.trim()===""){this.notice(`No picture on the clipboard — ${vM}`);return}this.pasted(t.text);return}await this.bring(()=>Bl(t.bytes,t.source))}notice(t,e=p4){let n=this.view;n.error=t,clearTimeout(this.noticeTimer),this.noticeTimer=setTimeout(()=>{if(n.error===t)n.error=void 0,this.paint.draw()},e),this.paint.draw()}async peek(){let t=this.view,e;try{e=await ZE()}catch{return}if(!e||e.stamp===this.peeked)return;if(this.peeked=e.stamp,!e.picture||t.installing!==void 0)return;t.hint=`Picture on the clipboard · ${b4} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},g4),this.paint.draw()}async fromClipboard(){let t=this.view;if(Jp()){if(this.grabber.clipboard){this.grabber.ask();return}this.notice("Over SSH the clipboard is not here — drop the file");return}let e;try{e=await YE(_n(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${Oc(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await Dp(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${vM}`);return}if(this.picture(n)){await this.attach(n);return}if(t.editing===void 0)t.editing="";this.pasted(n)}async attach(t){let e=t.trim();if(/^https?:\/\//i.test(e)){let i=Dc(e,this.site??V[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=Ls(e).sort((i,o)=>Number(!yM.test(i))-Number(!yM.test(o)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>Dp(n,i),r.length)}async bring(t,e=0){let n=this.view;this.attaching?.abort();let r=new AbortController;this.attaching=r,n.error=void 0,n.saved=void 0,n.note="Reading the picture…",this.paint.draw();let i;try{i=await t(AbortSignal.any([r.signal,this.signal]))}catch(d){if(!r.signal.aborted)n.note=void 0,this.notice(Oc(d),8000);return}if(r.signal.aborted)return;n.note=e>0?`The first picture of ${e+1} — drop one at a time to try the others`:void 0,this.quietSuggest(),n.editing=void 0,n.suggest=void 0,n.pick=void 0;let o=DE(i.bytes);qE(o,i.source);let s=this.origPath(mr,o,i.ext);L(s,i.bytes);let a=pM(s).href,c={id:o,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:OM("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:mr,post:c},f=this.previewPath(u);L(f,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let l=mf(`local|post:${o}`,!1);this.board=l,this.boards.set(l.key,l),this.single(l,u)}single(t,e){t.searching=!1,this.posts.set(Pe(e.site,e.post.id),e),t.groups=[{posts:[e],open:!1}],t.checked=1,t.total=1,this.thumbQueue.push(e),this.thumbs(),this.view.mode="try",this.show(),this.select(),this.paint.draw()}onClock=()=>{let t=this.sites.reduce((r,i)=>Vn(i)>Vn(r)?i:r),e=Math.ceil((Vn(t)-Date.now())/1000),n=e>0?e:void 0;if(n!==this.view.waiting)this.view.waiting=n,this.view.slow=t.name,this.paint.draw()};onResize=()=>{if(this.cols=process.stdout.columns||this.cols,this.rows=process.stdout.rows||this.rows,this.paint.resized(),this.holdThumbs(),this.scroll(),this.paint.snap(),this.view.mode==="try"&&this.current)this.reveal();this.pump(),this.paint.draw()};key(t){let e=this.view;if(t==="ctrl-c"){this.finish(2);return}if(e.installing!==void 0)return;if(t==="focus-in"){this.peek();return}if(t==="focus-out")return;if((t==="ctrl-v"||t==="alt-v")&&e.panel===void 0){this.fromClipboard();return}if(e.editing!==void 0){this.editKey(t);return}if(e.panel!==void 0){this.panelKey(t);return}if(e.help){if(t==="?"||t==="esc")e.help=!1,this.paint.draw();return}if(this.cols<co.cols||this.rows<co.rows){if(t==="esc")this.finish(2);return}if(t==="?"){e.help=!0,this.paint.draw();return}if(e.mode==="try"){this.tryKey(t);return}this.gridKey(t)}pointer(t){let e=this.view,n=this.paint.point(t),r=n?.target;if(e.installing!==void 0)return;if(t.action==="wheel"){if(!t.sideways)this.wheel(t.wheel);return}if((t.action==="press"||t.action==="drag")&&t.button!=="left")return;if(r?.kind==="track"&&n&&t.action!=="release")this.slide(r.field,n);else if(t.action==="press")this.pressed(r);else if(t.action==="release"&&n?.inside)this.released(r,t)}pressed(t){let e=this.view;if(e.help)this.paint.drop(),this.key("esc");else if(e.editing!==void 0||t===void 0)return;else if(e.panel!==void 0){if(t.kind==="setting"&&t.index<e.settings.length&&e.typing===void 0)e.panel=t.index,this.paint.draw()}else if(e.mode==="try")this.tryPoint(t);else if(t.kind==="tile")this.focus(t.index);else if(t.kind==="query")this.gridKey("/");else if(t.kind==="site")this.tab=t.tab,this.syncSite(),this.turn()}released(t,e){let n=this.view;if(t?.kind==="key")this.key(t.key);else if(t?.kind==="link"){if(!e.shift&&!e.alt&&!e.ctrl)bM(t.url)}else if(n.editing!==void 0){if(t?.kind==="suggest")n.pick=t.index,this.editKey("enter")}else if(n.panel!==void 0)this.panelPoint(t);else if(n.mode==="try"){if(t?.kind==="place"&&n.tuning)this.tuneKey(String(t.at))}else if(t?.kind==="tile"&&e.count===2)this.gridKey("enter");else if(t?.kind==="chip")this.toggle(t.index)}wheel(t){let e=this.view;if(e.help)return;if(e.editing!==void 0){if(e.suggest?.length)this.editKey(t<0?"up":"down")}else if(e.panel!==void 0){if(e.typing===void 0)this.panelKey(t<0?"up":"down")}else if(e.tuning)this.tuneKey(t<0?"up":"down");else if(e.mode==="try")this.tryKey(t<0?"left":"right");else this.focus(e.focus+t*hr(this.cols,this.rows).perRow)}panelPoint(t){let e=this.view;if(t?.kind!=="setting"&&t?.kind!=="choice")return;let n=e.settings[t.index];if(e.typing!==void 0){let r=e.settings[e.panel??0];if(r&&(t.index!==e.panel||t.kind==="setting"))this.typeKey(r,"enter");else return}if(t.kind==="setting"&&t.index===e.settings.length){e.panel=t.index,this.panelKey("enter");return}if(e.panel=t.index,t.kind==="choice"&&n){if(n.entry==="text"||t.choice===void 0){this.panelKey("enter");return}if(n.multi){n.cursor=Math.max(0,n.choices.indexOf(t.choice)),this.panelKey(" ");return}if(n.value!==t.choice)n.value=t.choice,this.recount()}this.paint.draw()}tryPoint(t){let e=this.view;if(t.kind==="scene")e.scene=t.scene,e.details=!1,this.paint.draw();else if(e.tuning&&t.kind==="field")e.tuning.field=t.field,this.paint.draw()}slide(t,e){let n=this.view,r=n.tuning;if(!r)return;let i=Math.min(1,Math.max(0,e.width>1?e.x/(e.width-1):0));if(r.field=t,t===0){let o=Math.max(100,r.fill),s=pf+Math.round(i*(o-pf+1));n.tune.size=i===1||r.fill>0&&s>=r.fill?"fill":Math.min(o,s)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=hr(this.cols,this.rows),o={left:-1,right:1,up:-n,down:n,k:-n,j:n,pgup:-n*r,pgdn:n*r,home:-e.focus,end:e.tiles.length}[t];if(o!==void 0){this.focus(e.focus+o);return}if(/^[1-9]$/.test(t)){this.toggle(Number(t)-1);return}if(t==="enter"&&e.tiles[e.focus]){e.mode="try",e.error=void 0,this.select();return}if(t==="v"){this.fromClipboard();return}if(t==="c"){e.preset=e.preset==="cutouts"?"all":"cutouts",this.turn();return}if(t==="tab"||t==="shift-tab"){let s=V.length+1;this.tab=(this.tab+(t==="tab"?1:s-1))%s,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"){this.openPage();return}if(t==="s"){e.panel=0,e.advanced=!1,this.recount(),this.paint.draw();return}if(t==="esc")this.finish(2)}panelKey(t){let e=this.view,n=e.panel??0,r=e.settings[n];if(e.typing!==void 0&&r){this.typeKey(r,t);return}let i=sc(e);if(t==="up"||t==="down"){let o=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(o+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=sc(e)[0]??0,this.paint.draw();return}if(r?.entry&&(t==="enter"||r.entry==="number"&&/^[0-9]$/.test(t))){e.typing=t==="enter"?r.entry==="text"?r.value:"":t,this.paint.draw();return}if((t==="left"||t==="right")&&r&&r.entry!=="text"){let o=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+o+r.choices.length)%r.choices.length;else r.value=xE(r.choices,r.value,o),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let o=r.value.split(" "),s=r.choices.filter((c,u)=>u===r.cursor?!o.includes(c):o.includes(c)),a=r.multi.none;if(s.length>0||a!==void 0)r.value=s.length>0?s.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((o,s)=>{o.value=this.setting(ko[s]?.name??"")}),e.panel=void 0,e.advanced=!1,this.quietCount(),this.paint.draw();return}if(t==="enter"||t==="s"||t==="alt-c")e.panel=void 0,e.advanced=!1,this.quietCount(),this.adopt()}typeKey(t,e){let n=this.view,r=n.typing??"";if(e==="esc"){n.typing=void 0,this.paint.draw();return}if(e==="enter"||e==="up"||e==="down"){if(t.value=t.entry==="number"?Number(r)>0?String(Number(r)):"off":ia(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=oo(r,e,(o)=>t.entry==="number"?/^[0-9]$/.test(o)&&r.length<jp:/^[\x20-\x7e]$/.test(o));if(i!==void 0)n.typing=i,this.paint.draw()}quietCount(){clearTimeout(this.countTimer),this.counting?.abort(),this.counting=void 0}recount(){if(this.quietCount(),this.view.counts=void 0,!this.view.tag)return;let t=new AbortController;this.counting=t,this.countTimer=setTimeout(()=>void this.countPending(t),f4)}pending(){let t=(e)=>this.view.settings[ko.findIndex((n)=>n.name===e)]?.value??this.setting(e);return{tag:this.view.tag,chosen:this.view.chosen,preset:t("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:xg(t("TTHEME_FIND_ORDER")),rating:Ai(t("TTHEME_FIND_RATING")),narrow:Id(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:ra(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:V.filter((o)=>e.enabled.includes(o.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(o)=>{let s=this.query(o,e);if(!s)return{site:o.name,count:0};if(o.counts&&!o.counts(s.tags))return{site:o.name};try{let a=await Nd(o,s.tags,r);return{site:o.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:o.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=ko.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let o=ko[i];if(o)this.values.set(o.name,r.value)});let n=ko.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=Ai(this.setting("TTHEME_FIND_RATING")),t.block=jo(this.setting("TTHEME_FIND_BLOCK")),t.sets=this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",t.preset=this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",t.order=xg(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=ra(this.setting("TTHEME_FIND_SITES")),t.hide=qc(this.setting("TTHEME_FIND_HIDE")),t.hideTags=ia(this.setting("TTHEME_FIND_HIDE_TAGS")),this.boards.clear(),this.current=void 0,t.shown=void 0,t.mode="grid",this.search()}save(t){this.store(t.map((e)=>[e.name,this.setting(e.name)]))}store(t){let e=_n(this.home,"ttheme","config.zsh");try{let n=xc(e)?Q5(e,"utf8"):"";return L(e,t.reduce((r,[i,o])=>Du(r,i,o),n)),!0}catch(n){return this.view.error=n instanceof Error?n.message:String(n),!1}}editKey(t){let e=this.view,n=e.editing??"",r=e.suggest??[];if((t==="up"||t==="down")&&r.length>0){let s=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=s===r.length?void 0:s,this.paint.draw();return}if(t==="esc"||t==="enter")this.quietSuggest();if(t==="esc"){if(e.editing=void 0,e.tag===""){this.finish(2);return}this.paint.draw();return}if(t==="enter"){let o=e.pick===void 0?void 0:r[e.pick],s=o?o.whole?o.value:n.replace(/\S*$/,o.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,s.trim()){this.commit(s.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=oo(n,t);if(i!==void 0)e.editing=i,this.suggest(),this.paint.draw()}quietSuggest(){clearTimeout(this.suggestTimer),this.suggesting?.abort(),this.suggesting=void 0}suggest(){this.quietSuggest();let t=this.view;t.pick=void 0;let e=t.editing??"",n=/\S*$/.exec(e)?.[0]??"",r=c4(n),i=_$(e,SM,this.tagged).map((c)=>({value:c.tag,count:0,alias:c.name,whole:!0}));if(!r&&i.length===0){t.suggest=void 0;return}let o=r?yk(this.catalog.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],s=[...new Map([...o.slice(0,SM),...i].map((c)=>[c.value,c])).values()];if(t.suggest=s.length>0?s:void 0,i.length>0&&y4.test(e))t.pick=s.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await N0(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((l)=>[l.value,l.count])),f=new Set(s.map((l)=>l.value));t.suggest=[...s.map((l)=>({...l,count:u.get(l.value)??0})),...c.filter((l)=>!f.has(l.value))].slice(0,v4),t.pick=t.pick!==void 0&&t.pick<s.length?t.pick:void 0,this.paint.draw()}}catch{}},l4)}async commit(t){let e=Dc(t,this.site??V[0]);if(e){await this.jump(e.site,e.id);return}if(this.picture(t)){await this.attach(t);return}this.view.tag=t,this.view.chosen=void 0,this.relate(t),this.boards.clear(),await this.search()}async jump(t,e){let n=++this.gen;this.tab=V.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=mf(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await _o(t,e,this.signal);if(n!==this.gen)return;if(!i){r.searching=!1,r.error=`${t.name} has no post ${e}`,this.view.error=r.error,this.show(),this.paint.draw();return}this.single(r,{site:t,post:i})}catch(i){this.fail(n,i,t)}}async turn(){this.fetch?.abort(),this.current=void 0,this.view.shown=void 0;let t=this.boards.get(this.boardKey);if(!t){await this.search();return}this.gen++,this.board=t,this.view.error=t.error,this.show(),this.paint.draw(),await this.pump()}unfold(){let t=this.view,e=0;for(let n of this.board.groups){let r=n.open?n.posts.length:1;if(t.focus<e+r){if(n.posts.length<2)return;n.open=!n.open,this.board.focus=e;for(let i of n.posts)if(!this.thumbPath.has(Pe(i.site,i.post.id)))this.thumbQueue.push(i);this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(){let t=this.view.tiles[this.view.focus],e=t&&this.posts.get(t.key);if(e)bM(e.site.pageUrl(e.post.id))}tryKey(t){let e=this.view;if(e.tuning){this.tuneKey(t);return}if(t==="left"||t==="right"){this.direction=t==="left"?-1:1,this.focus(e.focus+this.direction);return}if(t==="shift-left"||t==="shift-right"){e.scene+=t==="shift-left"?-1:1,e.details=!1,this.paint.draw();return}if(t==="i"){e.details=!e.details,this.inform(),this.paint.draw();return}if(t==="t"){e.tuning={field:0,held:{...e.tune},fill:this.current?.fill??0,coloring:e.coloring},this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="o"){this.openPage();return}if(t==="x"){this.swap();return}if(t==="v"){this.fromClipboard();return}if(t==="enter"){this.install();return}if(t==="esc")this.fetch?.abort(),clearTimeout(this.settle),e.fetching=void 0,e.mode="grid",e.error=void 0,this.paint.draw()}tuneKey(t){let e=this.view,n=e.tuning,r=e.tune;if(t==="up"||t==="down"){n.field=(n.field+(t==="up"?2:1))%3,this.paint.draw();return}let i=o4[t];if(i!==void 0){if(n.field===0)r.size=s4(r.size,i,n.fill);else if(n.field===1)r.at=(r.at-1+Math.sign(i)+9)%9+1;else r.opacity=Math.max(0,Math.min(100,Math.round(r.opacity*100)+i))/100;this.retune();return}if(/^[1-9]$/.test(t)){n.field=1,r.at=Number(t),this.retune();return}if(t==="="){let o=e.untuned;if(n.field===0)r.size=o.size;else if(n.field===1)r.at=o.at;else r.opacity=o.opacity;this.retune();return}if(t==="+"){e.tune={...e.untuned},this.retune();return}if(t==="enter"){e.tuning=void 0,this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="esc")e.tune={...n.held,...n.coloring===e.coloring?{}:{opacity:e.untuned.opacity}},e.tuning=void 0,this.retune()}recolor(){let t=this.view;if(!this.current||t.shown?.id!==this.current.key)return;t.coloring=t.coloring==="tone"?"original":"tone",t.tune.opacity=t.untuned.opacity,this.paint.draw(),this.reveal()}retune(){if(this.paint.draw(),this.current&&this.view.shown?.id===this.current.key)this.reveal()}inform(){let t=this.view,e=t.tiles[t.focus],n=e&&this.posts.get(e.key);t.info=n?this.infoOf(n):void 0}infoOf(t){let{site:e,post:n}=t,r=n.named,i=I0(e,n),o=new Set([...r.artist,...r.character,...r.copyright]),s=oa(n.source),a=/^https?:\/\//i.test(s)?s:e===mr&&s.startsWith("/")?pM(s).href:void 0;return{page:e===mr?"":e.pageUrl(n.id),source:s,...a?{link:a}:{},artists:r.artist,characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!o.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:(En(n)??n).ext,uploader:n.owner}}focus(t){let e=this.view;if(e.tiles.length===0)return;let n=Math.max(0,Math.min(e.tiles.length-1,t));if(n===e.focus)return;if(e.focus=n,this.board.focus=n,this.scroll(),this.paint.glide(),this.pump(),e.mode==="try")this.select();this.paint.draw()}scroll(){let t=this.view,{perRow:e,rowsVis:n}=hr(this.cols,this.rows),r=Math.floor(t.focus/e);if(r<t.top)t.top=r;if(r>t.top+n-1)t.top=r-n+1;this.board.top=t.top}selected(t){if(t.chosen)return t.chosen;if(!t.tag)return[];return this.namesOf(t.tag,"danbooru")}namesOf(t,e){let n=t===this.entry.booru?this.entry:this.catalog.palettes.find((r)=>r.booru===t);return n?vk(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,E4).map((e)=>({name:e,on:t.includes(e)}))}toggle(t){let e=this.view,n=e.chips[t];if(!n)return;let r=this.selected(e),i=n.on?r.filter((o)=>o!==n.name):[...r,n.name];if(i.length===0)return;e.chosen=i,e.tag=i.join(" or "),this.syncChips(),this.boards.clear(),this.search()}async relate(t){this.relating?.abort();let e=this.selected({tag:t,chosen:void 0});if(this.pool=e,this.syncChips(),this.paint.draw(),!t||/\s/.test(t))return;let n=this.related.get(t);if(!n){let r=new AbortController;this.relating=r;try{n=(await T0(t,AbortSignal.any([this.signal,r.signal]))).map((i)=>i.value)}catch{return}if(this.relating!==r)return;this.related.set(t,n)}this.pool=[...new Set([...e,...n])],this.syncChips(),this.paint.draw()}query(t,e=this.view){let n=e.chosen?H0(t,e.chosen):this.namesOf(e.tag,t.key);if(n.length===0)return;let r=e.chosen?.slice(n.length)??[],i=n.length>1,o=e.preset==="cutouts"?t.cutouts:"",s=i&&o.includes("~"),a=[i?n.map((f)=>`~${f}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),s?"":o,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let f of a)if(Ad([...c,f].join(" "))<=t.tagBudget)c.push(f);else u.push(f);return{tags:c.join(" "),notes:[...u.length>0?[`${t.name} takes ${t.tagBudget} tags — ${u.join(" ")} left out`]:[],...r.length>0?[`${t.name} takes ${n.length} tag${n.length===1?"":"s"} — ${r.join(" ")} left out`]:[],...s?[`${t.name} ORs the names, so cutouts are told by the file`]:[],...e.narrow.score>0&&!t.scored?[`${t.name} keeps no score`]:[],...e.narrow.png&&t.guesses?[`${t.name} names a file type only where danbooru holds the file`]:[]]}}async search(){let t=++this.gen,e=mf(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((o)=>{let s=this.query(o);return s?[{site:o,...s}]:[]}),r=this.sites.filter((o)=>!n.some((s)=>s.site===o)),i=[...n.flatMap(({notes:o})=>o),...r.length>0?[`${this.entry.name} has no tag on ${r.map((o)=>o.name).join(", ")}`]:[]];if(e.note=i.length>0?i.join(" · "):void 0,n.length===0)e.searching=!1;this.show(),this.paint.draw(),this.tally(t,e,n);try{let o=await Promise.all(n.map(async(s)=>({plan:s,owners:await this.kept.mateOwners(s.site)})));if(t!==this.gen)return;e.sources=o.flatMap(({plan:{site:s,tags:a},owners:c})=>{let u=Ad(a)+1<=s.tagBudget?s.uploadedBy:void 0;return[...u?[...c.keys()].map((f)=>({site:s,tags:`${a} ${u(f)}`,page:0,done:!1})):[],{site:s,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(o){this.fail(t,o)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:o})=>Nd(i,o,this.signal)));if(t===this.gen)e.total=r.reduce((i,o)=>i+(o.status==="fulfilled"&&Number.isFinite(o.value)?o.value:0),0),this.show(),this.paint.draw()}fail(t,e,n=this.site){if(t!==this.gen||this.signal.aborted)return;this.board.error=Og(n?.name??this.tabName,e),this.board.searching=!1,this.view.error=this.board.error,this.show(),this.paint.draw()}drop(t,e,n){for(let r of t.sources)if(r.site===e)r.done=!0;t.note=[t.note,Og(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=hr(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+EM)*t}need(){let{perRow:t,rowsVis:e}=hr(this.cols,this.rows);return(e+EM)*t}live(t){return this.boards.get(t.key)===t}page(t,e,n){let r=`${t.key}|${e}|${n}`,i=this.pages.get(r);if(!i)i=A0(t,e,n,this.signal).then((o)=>this.borrow(t,o)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===ce?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{tu(n,await eu(n.map((r)=>r.md5),this.signal))}catch{}return e}staged(t){if(t===this.board)this.stageOf(t),this.paint.draw()}async round(t){t.stage="fetch",this.staged(t);let e=V.flatMap((a)=>{let c=t.sources.find((u)=>u.site===a&&!u.done);return c?[c]:[]}),n=await Promise.all(e.map(async(a)=>{try{let c=await this.page(a.site,a.tags,a.page);return t.arrived.add(a.site.name),this.staged(t),{source:a,posts:c}}catch(c){if(t.sources.every((u)=>u.site===a.site)||this.signal.aborted)throw c;return this.drop(t,a.site,c),{source:a,posts:void 0}}}));if(!this.live(t))return;let r=[];for(let{source:a,posts:c}of n){if(!c)continue;a.page++,a.done=c.length<Hr;let u=t.last.get(a);for(let f of c){let l=u&&yS(u.post,f)?u.set:`set:${a.site.key}:${f.id}`;u={post:f,set:l};let d=Pe(a.site,f.id);if(t.seen.has(d))continue;t.seen.add(d);let h={site:a.site,post:f};if(this.eligible(h))t.kin.set(h,[l,...kS(a.site,f)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),o=++t.rounds,s;if(this.view.order!=="fit")s=e.length>1?fS(i):i;else{let a=ql(i,this.frame(),this.matched),c=a.slice(0,this.need()),u={done:0,total:c.length};if(t.ranking=u,this.staged(t),await this.looks(c,()=>{u.done++,this.staged(t)}),t.ranking=void 0,!this.live(t))return;s=[...ql(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of s)t.roundOf.set(a,o);t.queue.push(...s),this.ahead(t)}ahead(t){if(this.aheading||this.view.order!=="fit"||!this.live(t))return;let e=t.queue.slice(0,this.need()).filter((n)=>!this.looking.has(Pe(n.site,n.post.id)));if(e.length===0)return;this.aheading=!0,this.looks(e).then(()=>{this.aheading=!1;for(let n of new Set(e.map((r)=>t.roundOf.get(r)??0)))this.resort(t,n);this.ahead(t)})}resort(t,e){let n=t.queue.flatMap((i,o)=>t.roundOf.get(i)===e?[o]:[]),r=ql(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,o)=>{t.queue[i]=r[o]})}dedupe(t,e){let n=[];for(let r of e){let i=ug(r.post),o=i.map((a)=>t.same.get(a)).find(Boolean);if(!o){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,MM(r.post)<=MM(o.post))continue;for(let a of[...i,...ug(o.post)])t.same.set(a,r);let s=n.indexOf(o);if(s>=0){n[s]=r;continue}this.replace(t,o,r)}return n}replace(t,e,n){t.roundOf.set(n,t.roundOf.get(e)??0);let r=t.queue.indexOf(e);if(r>=0){t.queue[r]=n;return}for(let i of t.groups){let o=i.posts.indexOf(e);if(o>=0){i.posts[o]=n,this.posts.set(Pe(n.site,n.post.id),n),this.thumbQueue.push(n),this.thumbs();return}}}async looks(t,e){let n=0;await Promise.all(Array.from({length:kM},async()=>{while(n<t.length)await this.look(t[n++]),e?.()}))}look(t){let e=Pe(t.site,t.post.id),n=this.looking.get(e);if(!n)n=(async()=>{let r=this.previewPath(t),i=Jc(t.site,t.post);await this.kept.cached(i.site,r,i.url);let o=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,o),this.matched.set(t.post,o.match),o})().catch(()=>{return}),this.looking.set(e,n);return n}async pump(){let t=this.gen,e=this.board;if(this.pumping===t||e.sources.length===0)return;this.pumping=t;let n=[],r;try{e.searching=!0;while(t===this.gen){while(n.length<$M&&e.queue.length>0&&this.wants()){let s=e.queue.shift();n.push({pick:s,passed:this.vet(s)})}if(this.ahead(e),!r&&e.queue.length<$M&&e.sources.some((s)=>!s.done)&&this.wants()){let s=this.round(e).then(()=>{if(r===s)r=void 0});s.catch(()=>{}),r=s}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let o=await i.passed;if(t!==this.gen)return;if(e.checked++,o)this.admit(i.pick);this.show(),this.paint.draw()}if(t===this.gen)e.searching=!1,this.show(),this.paint.draw()}catch(i){this.fail(t,i)}finally{if(this.kept.save(),this.pumping===t)this.pumping=0}}eligible({site:t,post:e}){let n=En(e);if(!Zc(t,e,this.view.rating)||Yc(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:o}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||o&&e.ext!=="png"||O0(e,this.view.hide).length>0||this.view.hideTags.some((s)=>e.tags.includes(s)))return!1;return this.view.preset==="all"?["png","jpg","jpeg",""].includes(n.ext):["png",""].includes(e.ext)}async vet(t){let[e]=await Promise.all([this.passes(t),this.look(t)]);return e}async passes({site:t,post:e}){return this.view.preset==="all"||t.vouched||this.kept.transparent(t,e)}admit(t){let{site:e,post:n}=t,r=this.board,i=Pe(e,n.id);this.posts.set(i,t);let o=r.kin.get(t)??[],s=this.looked.get(i),a=s&&{hash:s.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,o,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,o,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,o,a),this.thumbQueue.push(t),this.thumbs()}kindred(t,e,n){for(let r of e){let i=t.kindred.get(r);if(i)return i}return n&&t.shapes.find((r)=>ES(r.shape,n))?.group}register(t,e,n,r){for(let i of n)if(!t.kindred.has(i))t.kindred.set(i,e);if(r)t.shapes.push({shape:r,group:e})}holds(){this.view.held=wM(this.home,this.entry.name).map((t)=>{let e=this.heldFiles.get(t.from);return e?{...t,thumb:e}:t}),this.holdThumbs()}holdThumbs(){let t=ve.cols*this.cell.w,e=ve.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,Fp(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=_n(this.scratch,`held-${n4(n.from)}-${t}x${e}.png`);this.renders.run({job:"thumb",from:n.from,to:r,width:t,height:e}).then(()=>{this.heldFiles.set(n.from,r),this.holds(),this.paint.draw()}).catch(()=>{})}}thumbs(){while(!this.signal.aborted&&this.thumbing<kM&&this.thumbQueue.length>0){let t=this.thumbQueue.shift();this.thumbing++,this.thumb(t).catch(()=>{this.thumbless.add(Pe(t.site,t.post.id)),this.show(),this.paint.draw()}).finally(()=>{this.thumbing--,this.thumbs()})}}async thumb(t){let{site:e,post:n}=t,r=vt.cols*this.cell.w,i=vt.rows*this.cell.h,o=Jc(e,n),s=_n(rn(e),"tile",`${xM(n.id,o.url)}-${r}x${i}.png`);if(!xc(s)){let a=this.previewPath(t);if(await this.kept.cached(o.site,a,o.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:s,width:r,height:i})}this.thumbPath.set(Pe(e,n.id),s),this.show(),this.paint.draw()}select(){let t=this.view,e=t.tiles[t.focus];if(this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,this.inform(),!e)return;if(this.current?.key===e.key){this.reveal();return}this.settle=setTimeout(()=>void this.load(e),h4),this.paint.draw()}async load(t){let e=this.view,n=this.posts.get(t.key);if(!n)return;let r=new AbortController;if(this.fetch=r,this.kept.credit(n,r.signal),!En(n.post))return;let{site:i}=n,o=this.board;try{await aa(i,n.post,r.signal);let s=En(n.post),a=this.origPath(i,t.id,s.ext);if(!xc(a))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let c=Ni(i,n.post,s),u=await this.kept.cached(c.site,a,c.url,(d,h)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:d,size:h},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,o!==this.board)return;let f={site:i,id:t.id,key:t.key,path:a,ext:s.ext,size:u,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let l=await this.render(f,"plain");if(r.signal.aborted||o!==this.board)return;if(l.clear===0&&_s()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),f.cut=await this.cutOut(i,t.id,a,r.signal),r.signal.aborted||o!==this.board)return;if(e.cutting=void 0,f.cut){e.preparing=t.key,this.paint.flush();let d=await this.render(f,"cut").catch(()=>{return});if(r.signal.aborted||o!==this.board)return;if(d&&Dl(d.clear))f.using="cut";else hf(f.cut,{force:!0}),f.cut=void 0,f.failed=!0}else f.failed=!0}if(this.current=f,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(s){if(!r.signal.aborted&&!this.signal.aborted)e.error=Og(i.name,s)}finally{if(e.fetching?.id===t.key)e.fetching=void 0;if(e.preparing===t.key)e.preparing=void 0;if(e.cutting===t.key)e.cutting=void 0;this.paint.draw()}}async cutOut(t,e,n,r){let i=_n(rn(t),"cut",`${e}.png`);if(xc(i))return i;try{return V5(r4(i),{recursive:!0}),await mc(n,i,r),i}catch{hf(i,{force:!0});return}}swap(){let t=this.current;if(!t?.cut||this.view.shown?.id!==t.key)return;t.using=t.using==="cut"?"plain":"cut",this.reveal()}preload(){let t=this.view;if(t.mode!=="try")return;for(let e of[t.focus+this.direction,t.focus-this.direction]){let n=t.tiles[e],r=n&&this.posts.get(n.key);if(r)this.kept.credit(r,this.signal);if(this.prefetching>=d4||!r||!En(r.post))continue;let{site:i,post:o}=r;this.prefetching++,aa(i,o,this.signal).then(async()=>{let s=En(o),a=this.origPath(i,o.id,s.ext),c=Ni(i,o,s);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:o.id,key:n.key,path:a,ext:s.ext,size:0,using:"plain",failed:!1},"plain")}).catch(()=>{}).finally(()=>{this.prefetching--})}}async render(t,e){let n=this.cols*this.cell.w,r=this.rows*this.cell.h,i=Math.min(n,w4),o=Math.max(1,Math.round(r*i/n)),s={...this.view.tune},{coloring:a}=this.view,c=!IM(s,this.view.untuned),u=s.opacity!==this.view.untuned.opacity,f=c?`-${s.size}-${s.at}${u?`-${Math.round(s.opacity*100)}`:""}`:"",l=_n(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${o}${f}.png`),d=`${t.site.key}:${t.id}:${e}:${a}:${i}x${o}`,h=this.clarity.get(d);if(h&&xc(l))return t.fill=h.fill,{clear:h.clear,path:l,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,to:l,width:i,height:o,colors:this.entry,tone:this.tone,blur:this.blurring*i/Dd(n,r).width,coloring:a,...c?{tune:{size:s.size,at:s.at,...u?{opacity:s.opacity}:{}}}:{}});if(this.clarity.set(d,m),t.fill=m.fill,c)this.keepTuned(l);return{clear:m.clear,path:l,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>$4){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;hf(this.tunedFiles.splice(e,1)[0],{force:!0})}}async present(){let t=this.current;if(!t)return;let e=t.using,{coloring:n}=this.view,r=this.view.tune.opacity,{clear:i,path:o,opacity:s,touched:a}=await this.render(t,e);if(this.current!==t||t.using!==e||this.view.coloring!==n)return;if(!a&&this.view.tune.opacity===r)this.view.untuned.opacity=s,this.view.tune.opacity=s;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:o,cut:t.cut?e==="cut"?"on":"off":t.failed?"failed":"none"}}reveal(){let t=this.view;if(this.presenting){this.again=!0;return}this.presenting=!0,t.preparing=this.current?.key,this.paint.flush(),this.present().catch((e)=>{t.error=e instanceof Error?e.message:String(e)}).finally(()=>{if(this.presenting=!1,this.again){this.again=!1,this.reveal();return}if(t.preparing===this.current?.key)t.preparing=void 0;this.paint.draw()})}async install(){let t=this.view,e=t.tiles[t.focus],n=this.current;if(!e||n?.key!==e.key||t.preparing!==void 0||t.shown?.id!==e.key)return;t.installing=e.key,t.error=void 0,this.paint.flush();let r=a4(t.tune,t.untuned),i=this.posts.get(n.key)?.post;try{await this.renders.run({job:"backdrop",from:n.using==="cut"?n.cut:n.path,source:n.path,home:this.home,colors:this.entry,tone:this.tone,origin:{site:n.site.key,id:n.id,ext:n.ext,from:`${n.site.name} ${n.id} ${n.site.pageUrl(n.id)}`,artist:i?.named.artist??[],source:oa(i?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:to(K(this.home).terminals),user:t4()}:{}}),this.kept.owned(n.site,n.id,i?.owner??""),_e(this.home),this.holds();let{size:o,at:s,opacity:a}=t.tune,c=r?` · ${o==="fill"?"fill":`${o}%`} · ${qt[s-1]} · ${a.toFixed(2)}`:"",u=i?.named.artist.length?`${i.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${u}${n.site.name} ${n.id}${c}`,key:e.key},t.installed.push(e.key),this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,t.mode="grid"}catch(o){t.error=o instanceof Error?o.message:String(o)}t.installing=void 0,this.paint.draw()}}async function RM(t,e,n){let r=new Ig(t,we(t),e,e.booru??"",n);if(await r.run(),qi(process.env))process.stdout.write(Di(""));return{saved:r.saved,installs:r.installs}}async function PM(t){let e=J(),n=we(e),r=In(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new Ig(e,n,r,r.booru??""),o=await i.run();if(i.saved&&o!==0)return process.stderr.write(`${i.saved}
721
- `),0;return o}var yo=((t)=>{return t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t})(yo||{}),S4=[0,1],NM=[1,0],TM=[2,3],HM=[3,2],M4={L:S4,M:NM,Q:TM,H:HM},x4=/^\d*$/,O4=/^[A-Z0-9 $%*+./:-]*$/,Rg="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",Ng=1,Tg=40,AM=3,I4=3,gf=40,R4=10,FM=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],LM=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class CM{constructor(t,e,n,r){if(this.version=t,this.ecc=e,t<Ng||t>Tg)throw RangeError("Version value out of range");if(r<-1||r>7)throw RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let s=0;s<this.size;s++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let o=this.addEccAndInterleave(n);if(this.drawCodewords(o),r===-1){let s=1e9;for(let a=0;a<8;a++){this.applyMask(a),this.drawFormatBits(a);let c=this.getPenaltyScore();if(c<s)r=a,s=c;this.applyMask(a)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2===0,yo.Timing),this.setFunctionModule(n,6,n%2===0,yo.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),e=t.length;for(let n=0;n<e;n++)for(let r=0;r<e;r++)if(!(n===0&&r===0||n===0&&r===e-1||n===e-1&&r===0))this.drawAlignmentPattern(t[n],t[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.ecc[1]<<3|t,n=e;for(let i=0;i<10;i++)n=n<<1^(n>>>9)*1335;let r=(e<<10|n)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,kr(r,i));this.setFunctionModule(8,7,kr(r,6)),this.setFunctionModule(8,8,kr(r,7)),this.setFunctionModule(7,8,kr(r,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,kr(r,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,kr(r,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,kr(r,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let n=0;n<12;n++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;for(let n=0;n<18;n++){let r=kr(e,n),i=this.size-11+n%3,o=Math.floor(n/3);this.setFunctionModule(i,o,r),this.setFunctionModule(o,i,r)}}drawFinderPattern(t,e){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),o=t+r,s=e+n;if(o>=0&&o<this.size&&s>=0&&s<this.size)this.setFunctionModule(o,s,i!==2&&i!==4,yo.Position)}}drawAlignmentPattern(t,e){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(t+r,e+n,Math.max(Math.abs(r),Math.abs(n))!==1,yo.Alignment)}setFunctionModule(t,e,n,r=yo.Function){this.modules[e][t]=n,this.types[e][t]=r}addEccAndInterleave(t){let e=this.version,n=this.ecc;if(t.length!==bf(e,n))throw RangeError("Invalid argument");let r=LM[n[0]][e],i=FM[n[0]][e],o=Math.floor(Pg(e)/8),s=r-o%r,a=Math.floor(o/r),c=[],u=j4(i);for(let l=0,d=0;l<r;l++){let h=t.slice(d,d+a-i+(l<s?0:1));d+=h.length;let m=_4(h,u);if(l<s)h.push(0);c.push(h.concat(m))}let f=[];for(let l=0;l<c[0].length;l++)c.forEach((d,h)=>{if(l!==a-i||h>=s)f.push(d[l])});return f}drawCodewords(t){if(t.length!==Math.floor(Pg(this.version)/8))throw RangeError("Invalid argument");let e=0;for(let n=this.size-1;n>=1;n-=2){if(n===6)n=5;for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let o=n-i,a=(n+1&2)===0?this.size-1-r:r;if(!this.types[a][o]&&e<t.length*8)this.modules[a][o]=kr(t[e>>>3],7-(e&7)),e++}}}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");for(let e=0;e<this.size;e++)for(let n=0;n<this.size;n++){let r;switch(t){case 0:r=(n+e)%2===0;break;case 1:r=e%2===0;break;case 2:r=n%3===0;break;case 3:r=(n+e)%3===0;break;case 4:r=(Math.floor(n/3)+Math.floor(e/2))%2===0;break;case 5:r=n*e%2+n*e%3===0;break;case 6:r=(n*e%2+n*e%3)%2===0;break;case 7:r=((n+e)%2+n*e%3)%2===0;break;default:throw Error("Unreachable")}if(!this.types[e][n]&&r)this.modules[e][n]=!this.modules[e][n]}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let o=!1,s=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[i][c]===o){if(s++,s===5)t+=AM;else if(s>5)t++}else{if(this.finderPenaltyAddHistory(s,a),!o)t+=this.finderPenaltyCountPatterns(a)*gf;o=this.modules[i][c],s=1}t+=this.finderPenaltyTerminateAndCount(o,s,a)*gf}for(let i=0;i<this.size;i++){let o=!1,s=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[c][i]===o){if(s++,s===5)t+=AM;else if(s>5)t++}else{if(this.finderPenaltyAddHistory(s,a),!o)t+=this.finderPenaltyCountPatterns(a)*gf;o=this.modules[c][i],s=1}t+=this.finderPenaltyTerminateAndCount(o,s,a)*gf}for(let i=0;i<this.size-1;i++)for(let o=0;o<this.size-1;o++){let s=this.modules[i][o];if(s===this.modules[i][o+1]&&s===this.modules[i+1][o]&&s===this.modules[i+1][o+1])t+=I4}let e=0;for(let i of this.modules)e=i.reduce((o,s)=>o+(s?1:0),e);let n=this.size*this.size,r=Math.ceil(Math.abs(e*20-n*10)/n)-1;return t+=r*R4,t}getAlignmentPatternPositions(){if(this.version===1)return[];else{let t=Math.floor(this.version/7)+2,e=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,n=[6];for(let r=this.size-7;n.length<t;r-=e)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(t){let e=t[1],n=e>0&&t[2]===e&&t[3]===e*3&&t[4]===e&&t[5]===e;return(n&&t[0]>=e*4&&t[6]>=e?1:0)+(n&&t[6]>=e*4&&t[0]>=e?1:0)}finderPenaltyTerminateAndCount(t,e,n){if(t)this.finderPenaltyAddHistory(e,n),e=0;return e+=this.size,this.finderPenaltyAddHistory(e,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(t,e){if(e[0]===0)t+=this.size;e.pop(),e.unshift(t)}}function yr(t,e,n){if(e<0||e>31||t>>>e!==0)throw RangeError("Value out of range");for(let r=e-1;r>=0;r--)n.push(t>>>r&1)}function kr(t,e){return(t>>>e&1)!==0}class wf{constructor(t,e,n){if(this.mode=t,this.numChars=e,this.bitData=n,e<0)throw RangeError("Invalid argument");this.bitData=n.slice()}getData(){return this.bitData.slice()}}var P4=[1,10,12,14],A4=[2,9,11,13],N4=[4,8,16,16];function jM(t,e){return t[Math.floor((e+7)/17)+1]}function _M(t){let e=[];for(let n of t)yr(n,8,e);return new wf(N4,t.length,e)}function T4(t){if(!GM(t))throw RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let r=Math.min(t.length-n,3);yr(Number.parseInt(t.substring(n,n+r),10),r*3+1,e),n+=r}return new wf(P4,t.length,e)}function H4(t){if(!BM(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let r=Rg.indexOf(t.charAt(n))*45;r+=Rg.indexOf(t.charAt(n+1)),yr(r,11,e)}if(n<t.length)yr(Rg.indexOf(t.charAt(n)),6,e);return new wf(A4,t.length,e)}function F4(t){if(t==="")return[];else if(GM(t))return[T4(t)];else if(BM(t))return[H4(t)];else return[_M(C4(t))]}function GM(t){return x4.test(t)}function BM(t){return O4.test(t)}function L4(t,e){let n=0;for(let r of t){let i=jM(r.mode,e);if(r.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+r.bitData.length}return n}function C4(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)if(t.charAt(n)!=="%")e.push(t.charCodeAt(n));else e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2;return e}function Pg(t){if(t<Ng||t>Tg)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;if(e-=(25*n-10)*n-55,t>=7)e-=36}return e}function bf(t,e){return Math.floor(Pg(t)/8)-FM[e[0]][t]*LM[e[0]][t]}function j4(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let n=1;for(let r=0;r<t;r++){for(let i=0;i<e.length;i++)if(e[i]=Ag(e[i],n),i+1<e.length)e[i]^=e[i+1];n=Ag(n,2)}return e}function _4(t,e){let n=e.map((r)=>0);for(let r of t){let i=r^n.shift();n.push(0),e.forEach((o,s)=>n[s]^=Ag(o,i))}return n}function Ag(t,e){if(t>>>8!==0||e>>>8!==0)throw RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(e>>>r&1)*t;return n}function G4(t,e,n=1,r=40,i=-1,o=!0){if(!(Ng<=n&&n<=r&&r<=Tg)||i<-1||i>7)throw RangeError("Invalid value");let s,a;for(s=n;;s++){let l=bf(s,e)*8,d=L4(t,s);if(d<=l){a=d;break}if(s>=r)throw RangeError("Data too long")}for(let l of[NM,TM,HM])if(o&&a<=bf(s,l)*8)e=l;let c=[];for(let l of t){yr(l.mode[0],4,c),yr(l.numChars,jM(l.mode,s),c);for(let d of l.getData())c.push(d)}let u=bf(s,e)*8;yr(0,Math.min(4,u-c.length),c),yr(0,(8-c.length%8)%8,c);for(let l=236;c.length<u;l^=253)yr(l,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((l,d)=>f[d>>>3]|=l<<7-(d&7)),new CM(s,e,f,i)}function UM(t,e){let{ecc:n="L",boostEcc:r=!1,minVersion:i=1,maxVersion:o=40,maskPattern:s=-1,border:a=1}=e||{},c=typeof t==="string"?F4(t):Array.isArray(t)?[_M(t)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=G4(c,M4[n],i,o,s,r),f=B4({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},a);if(e?.invert)f.data=f.data.map((l)=>l.map((d)=>!d));return e?.onEncoded?.(f),f}function B4(t,e=1){if(!e)return t;let{size:n}=t,r=n+e*2;t.size=r,t.data.forEach((o)=>{for(let s=0;s<e;s++)o.unshift(!1),o.push(!1)});for(let o=0;o<e;o++)t.data.unshift(Array.from({length:r},(s)=>!1)),t.data.push(Array.from({length:r},(s)=>!1));let i=yo.Border;t.types.forEach((o)=>{for(let s=0;s<e;s++)o.unshift(i),o.push(i)});for(let o=0;o<e;o++)t.types.unshift(Array.from({length:r},(s)=>i)),t.types.push(Array.from({length:r},(s)=>i));return t}var U4=Hb(16,231),W4=[" ","▀","▄","█"];function WM(t){let{data:e}=UM(t,{border:2,boostEcc:!0}),n=[];for(let r=0;r<e.length;r+=2){let i=e[r]??[],o=e[r+1]??[];n.push(`${U4}${i.map((s,a)=>W4[(s?1:0)+(o[a]?2:0)]).join("")}${me}`)}return n}var K4=50;function z4(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function q4(t,e,n){for(let r of n){let i=t-4-r.length;if(i>e.length+2)return[[2,e],[i,` ${r} `]]}return[[2,e]]}function KM(t,e,n,r=K4){let i=Me(n),o=Qe(z4(e)),s=ck(t).map((p)=>p.toLowerCase()),a=rg(o,e.signatureSlots,e.waived??[]),c=Jn(br(o,e.signatureSlots,e.waived??[])).length,u=(p)=>o[p]?.toLowerCase()!==s[p],f=o.filter((p,b)=>u(b)).length,l=(p)=>{let b=o[p],$=e.signatureSlots.includes(Cn[p])?A.signature:n?A.swatch:" ",k=n?`${i.fg(b)}${$}${bt}`:$,v=a.has(p)?i.bold(A.miss):u(p)?i.warn(A.on):" ";return` ${k} ${nf(xt(b))}${v}`},d=c===0?"passes the gate":`${c} ${c===1?"miss":"misses"} in the gate`,h=f>0?[`${f} tuned · ${d}`,d]:[d],m=[i.dim(Jt(r,"top",q4(r," Palette ",h)))];for(let p=0;p<T.length;p++)m.push(De(i,` ${T[p].padEnd(10)}${l(p)}`,r));return m.push(i.dim(Jt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]]))),mn.forEach((p,b)=>{m.push(De(i,` ${p.padEnd(10)}${l(T.length+b)}${l(T.length+8+b)}`,r))}),m.push(i.dim(Jt(r,"bottom"))),m}function Ks(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}async function Fg(){let t=process.env.TTHEME_WORN;if(!t||!Ks())return;let e=await Le({message:`Use ${t}, the palette this tab wears?`});if(te(e)||!e)throw new de;return t}async function DM(t){let e=process.env.TTHEME_WORN;if(!e)return;if(!Ks())return console.error(`Sharing ${e}, the palette this tab wears`),{name:e,...t?{tone:t}:{}};if(t!==void 0||Ut(J())[e]===void 0)return await Fg(),{name:e,...t?{tone:t}:{}};let n=await zh({message:`Share ${e}, the palette this tab wears?`,options:[{value:"tuned",label:"Your tone",hint:`named ${Ic(e)}`},{value:"original",label:"The original"},{value:"no",label:"No"}]});if(te(n)||n==="no")throw new de;return{name:e,tone:n}}function JM(t,e){if(t.includes("/"))return t;let n=Ui(e,!1),r=n.filter((o)=>ns(o.dir).some((s)=>s.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function Y4(t,e,n){let r=K(t),i=n.filter((o)=>!r.palettes.includes(o));if(i.length>0)Ve(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((o)=>r.palettes.includes(o)))Kt(t,e,r);return{state:r,fresh:i}}function Z4(t){let e=Math.max(0,...t.map((n)=>n.slot.length));return t.map((n)=>` ${n.slot.padEnd(e)} ${n.from} → ${n.to} ${n.rule}`)}function zM(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi])}function YM(t,e,n){let r=ik(e,n.palettes),i=nr(t,n,!1).palettes.find((o)=>o.name===r.name);if(i&&zM(i)!==zM(r))throw Error(`${r.name} is already in ${ut(r.name)??"the ttheme catalog"} and differs — \`ttheme add ${r.name}\` wears that one`);if(!i)os(t,[...qr(t),r]);return r}var V4=["background","foreground","cursor"];function ZM(t){try{t();return}catch(e){return e.message}}function VM(t,e,n){return Wt(t,e,!1).palettes.filter((r)=>r.name!==n).map((r)=>({name:r.name,colors:{background:r.background,foreground:r.foreground,cursor:r.cursor,selection:r.selection,ansi:r.ansi}}))}function XM(t,e){let n=new Set(ge(t,e).map((r)=>r.key));return{count:()=>ge(t,e).length,added:()=>ge(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(Yl(t,e)??[]).filter((r)=>!n.has(le(r))),discard:()=>{let r=ge(t,e).filter((i)=>!n.has(i.key));for(let i of r)Do(t,e,i.key),cu(t,e);if(r.length>0)_e(t)}}}function X4(...t){let e=new Map;for(let n of t.flatMap((r)=>r??[]))e.set(le(n),n);return e.size>0?[...e.values()]:void 0}function QM(t,e,n,r){if(!us(process.env,K(t).terminals))return;return async(i,o)=>{let s=sn(xn(e,r(i),n.palettes)),{saved:a}=await RM(t,s,o);return{...a?{note:a}:{},count:ge(t,e).length}}}async function Lg(t,e=!1){let n=process.stdout.isTTY===!0,r=J(),i=K(r).terminals,o=n?Xl.of(process.env,r,t.name,i):void 0,s=n?cf.of(process.env,i):void 0;return dM(t,{color:!Ft(),...o?{backdrop:o}:{},...s?{layer:s}:{},...e?{hosted:!0}:{}})}async function tx(t,e,n){let r=J(),i=ct(r),o=await Pv(r,n),s=t.includes("/")?t:`${o.id}/${t}`,a=Ne(s);if(a)throw Error(`${s} ${a}`);if(ut(s)!==o.id)throw Error(`palettes in ${o.dir} are named ${o.id}/<palette> — ${s} belongs elsewhere`);let c=gh(r,s);if(Rc(c))throw Error(`${s} already exists — \`ttheme edit ${s}\` changes it`);let u=e?In(Wt(r,i).palettes,e):void 0;if(!Ks())throw Error("new opens the palette editor — run it in a terminal");let f=u&&(ut(u.name)?u.base:u.default?void 0:u.name),l=u?wh(u,s,`kept from ${u.name}`):void 0,d=u?Yl(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,group:p,...b}=l??{name:s,signature:V4,...mi(hc)},$=XM(r,s),k=({colors:x,signature:M})=>{let R=X4(d,$.fresh());return $h({...b,...x,signature:M,...f?{base:f}:{},...R?{pictures:R}:{}})},v=await Lg({title:"New palette",name:s,...l?{colors:l}:{},signature:b.signature,...b.waive?{waive:b.waive}:{},palettes:VM(r,i,s),pictures:$.count(),find:QM(r,s,i,k),exports:ax(r,s,i,k),decode:Cg,check:(x)=>ZM(()=>xn(s,k(x),i.palettes))});if(!v){$.discard(),console.log("Nothing made");return}D4(J4(c),{recursive:!0}),L(c,k(v));let{state:E}=Y4(r,i,[s]);console.log(` + ${s}${u?` from ${u.name}`:""}
722
- ${c}`),await po(r,Wt(r,i).palettes.filter((x)=>x.name===s),E.terminals),console.log(`
723
- \`ttheme use ${s}\` wears it · \`ttheme edit ${s}\` opens it again`)}function Q4(t,e,n){let r=sn(xn(t,e,n.palettes));return Ma(r).length>0?ka(r).filter((i)=>i.startsWith(" ✗")):[]}async function ex(t){let e=J(),n=ct(e),r=K(e),i=Wt(e,n,!1),o=JM(t,e),s=$f(e,o),a=s&&Rc(s)?o:i.palettes.some((k)=>k.name===t)?t:o,c=$f(e,a),u=!c||!Rc(c);if(u&&!i.palettes.some((k)=>k.name===a))throw Error(`no palette called ${a} — \`ttheme new\` makes one`);if(!Ks())throw Error("edit opens the palette editor — run it in a terminal");if(u){let k=await ix(e,a,!1);console.log(k===void 0?"Nothing changed":k===0?`${a} is back to its own colors`:`Saved ${a} · ${rx(k)} — R then s in \`ttheme edit ${a}\` puts its own colors back`);return}let f=Hg(c,"utf8"),l;try{l=xn(a,f,n.palettes)}catch(k){throw Error(`${c} cannot be read — ${k.message}`)}let d=XM(e,a),h=new Set((l.pictures??[]).map((k)=>le(k))),m=({colors:k,signature:v})=>Q$(ok(vh(f,k),v),d.fresh().filter((E)=>!h.has(le(E)))),p=await Lg({title:"Edit palette",name:a,colors:is(l),signature:l.signatureSlots,waive:l.waive,palettes:VM(e,n,a),pictures:d.count(),find:QM(e,a,n,m),exports:ax(e,a,n,m),decode:Cg,check:(k)=>ZM(()=>xn(a,m(k),n.palettes))});if(!p){d.discard(),console.log("Nothing changed");return}let b=m(p);if(b===f){console.log(d.added()>0?`Kept the pictures you added to ${a}`:"Nothing changed");return}if(L(c,b),r.palettes.includes(a))Kt(e,n,r);console.log(`Saved ${a}${r.palettes.includes(a)?" — new tabs and `ttheme use` wear it":` — \`ttheme add ${a}\` installs it`}`);let $=Q4(a,b,n);if($.length>0)console.log(`
720
+ }`;function Ws(){return process.platform==="darwin"}function nf(t){return t>=M3&&t<=x3}function Sc(t,e,n){return new Promise((r,i)=>{let o=S3("osascript",["-l","JavaScript","-e",O3,t,e],{stdio:["ignore","ignore","pipe"],signal:AbortSignal.any([n,AbortSignal.timeout(E3)])}),s="";o.stderr.on("data",(a)=>{s+=a}),o.on("error",i),o.on("close",(a)=>{if(a===0){r();return}i(Error(s.trim().split(`
721
+ `).at(-1)||`osascript exited ${a}`))})})}var AE=90000;function of(t,e){let n=X(t),r=ge(t,e).flatMap((i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(i.key)??[];return o&&s&&Z.some((a)=>a.key===o)?[{site:o,id:Number(s),...ch(n,i)}]:[]});return r.length>0?r:void 0}function I3(t,e){let n=new Set(Nt(X(t)).palettes[e.name]?.pictures.map((r)=>r.key));return(e.pictures??[]).filter((r)=>!n.has(le(r)))}function NE(t,e){let n=new Set((e??[]).map((r)=>le(r)));return{...t,pictures:(t.pictures??[]).filter((r)=>!n.has(le(r)))}}async function R3(t,e,n,r,i,o){let s=Z.find(($)=>$.key===n.site);if(!s)throw Error(`no site called ${n.site}`);o("Fetching");let a=await Fi(s,n.id,i);if(!a)throw Error("the post is gone");if(s!==Ot&&a.md5)try{da([a],await ha([a.md5],i))}catch{}let c={},u=(fa(s,a)?la(s,a.id,i).then(($)=>{if($)Wo(a,$)},()=>{}):Promise.resolve()).then(()=>a.named.artist.length>0?uu(a.named.artist,i):new Map).then(($)=>{c=Object.fromEntries([...$].filter(([,k])=>k.length>0))},()=>{});if(!su(s,a,Ti(process.env.TTHEME_FIND_RATING))||ou(a,Uo(process.env.TTHEME_FIND_BLOCK)).length>0)throw Error("outside your find filters — TTHEME_FIND_RATING and TTHEME_FIND_BLOCK");let f=En(a);if(!f)throw Error("too large to use");let l=wo(on(s),"orig",`${n.id}.${f.ext}`),d;if(gg(l))d=new Uint8Array(Ks(l));else{o("Downloading");let $=Hi(s,a,f);d=await cu($.site,$.url,i,(k,v)=>o("Downloading",Sl(k,v))),C(l,d)}let h=Tr(d,Re),m=!1;if(Qn(h)===0&&Ws()&&process.env.TTHEME_FIND_REMOVE_BG!=="off"){let $=wo(on(s),"cut",`${n.id}.png`);try{if(!gg($))o("Cutting out"),IE(RE($),{recursive:!0}),await Sc(l,$,i);let k=Tr(new Uint8Array(Ks($)),Re);if(nf(Qn(k)))h=k,m=!0}catch{}}await u;let p=oh(e);o("Drawing"),gu(t,p,xn(p,e.signatureSlots),h,{site:s.key,id:n.id,ext:f.ext,bytes:d,from:`${s.name} ${n.id} ${s.pageUrl(n.id)}`,artist:a.named.artist,profiles:c,source:Li(a.source),cut:m},{width:0,height:0},ti(t),tl(t));let b=ge(t,e.name).find(($)=>$.key===le(n));if(b)Sa(X(t),b,n,r,P3())}function A3(t,e){let n=Z.find((o)=>o.key===t.site),r=`${n?.name??t.site} ${t.id}`;if(!n||!e)return r;return`${Ft()?A.link:`${Ei(n.ansi)}${A.link}${wt}`} ${Vc(r,n.pageUrl(t.id))}`}async function $o(t,e,n){let r=e.flatMap((c)=>I3(t,c).map((u)=>({entry:c,shared:u})));if(r.length===0)return;let i=oo(n),o=process.stdout.isTTY&&xy(process.env),s=new Set,a=ci();for(let[c,{entry:u,shared:f}]of r.entries()){let l=`${u.name} · ${A3(f,o)}`,d=r.length>1?` · ${c+1}/${r.length}`:"",h=(m,p)=>a.set(`${m} ${l}${p?` · ${p}`:""}${d}`);try{await R3(t,u,f,i,AbortSignal.timeout(AE),h),a.say(` ▣ ${l}`),s.add(u)}catch(m){a.say(` ▢ ${l} — ${m instanceof Error?m.message:String(m)}`)}}a.done();for(let c of s){let u=(c.pictures??[]).find((f)=>ge(t,c.name).some((l)=>l.key===le(f)));if(u)Zo(t,c.name,le(u))}if(s.size>0)_e(t)}function TE(t,e,n){if(e.width!==t.width||e.height!==t.height)return!1;for(let r=0;r<t.width*t.height;r++)t.data[r*4+3]=e.data[r*4+n]??0;return!0}async function N3(t,e){let[,n,r]=/^(.+)_(\d+)$/.exec(t)??[],i=wo(jr(),n??"local","cut",`${r??t}.png`);if(!gg(i)){if(!Ws())return;IE(RE(i),{recursive:!0}),await Sc(e,i,AbortSignal.timeout(AE))}return Tr(new Uint8Array(Ks(i)),Re)}function T3(t,e){try{return Qn(Bt(new Uint8Array(Ks(wo(t,`${e.stem}.png`)))))>0}catch{return!1}}function rf(t,e){return()=>Tr(new Uint8Array(Ks(wo(t,e.original))),Re)}function HE(t,e){let n=rf(t,e);return()=>{let r=n(),i=Bt(new Uint8Array(Ks(wo(t,e.cut))));return TE(r,i,0)?r:null}}async function sf(t,e,n,r,i,o,s,a){let c=X(t),u=Nt(c).palettes[e]?.pictures.find((f)=>f.key===n);if(!u?.original)return null;if(u.cut)return Ea(t,e,u,HE(c,u),r,i,o,s,!1,a);if(Vo(u)){let f=rf(c,u)();if(Qn(f)===0&&T3(c,u)){let l=await N3(n,wo(c,u.original));if(!l||!TE(f,l,3))return null;return Ea(t,e,u,()=>f,r,i,o,s,!0,a)}return Ea(t,e,u,()=>f,r,i,o,s,!1,a)}return Ea(t,e,u,rf(c,u),r,i,o,s,!1,a)}function FE(t,e,n,r,i,o){let s=X(t),a=Nt(s).palettes[e]?.pictures.find((u)=>u.key===n);if(!a?.original||Vo(a))return!1;let c=a.cut?HE(s,a):rf(s,a);return U$(t,e,a,c,r,i,o)}var H3=/(?:^|[^0-9a-f])([0-9a-f]{32})(?:[^0-9a-f]|$)/i,F3=[[/yande\.re\/post\/show\/(\d+)/,"yande"],[/konachan\.(?:com|net)\/post\/show\/(\d+)/,"konachan"],[/danbooru\.donmai\.us\/(?:posts|post\/show)\/(\d+)/,"danbooru"],[/zerochan\.net\/(\d+)(?:[?#\s]|$)/,"zerochan"]];function bg(t){let e=/(\d+)_p(\d+)/.exec(t.source);return[...t.md5?[`md5:${t.md5}`]:[],...e&&t.source.includes("pximg")?[`pixiv:${e[1]}_p${e[2]}`]:[]]}function LE(t,e){let n=H3.exec(e.source)?.[1]?.toLowerCase();return[`post:${t.key}:${e.id}`,...e.md5?[`md5:${e.md5}`]:[],...n&&n!==e.md5?[`md5:${n}`]:[],...F3.flatMap(([r,i])=>{let o=r.exec(e.source)?.[1];return o?[`post:${i}:${Number(o)}`]:[]}),...e.family?[`family:${t.key}:${e.family}`]:[]]}function CE(t,e){let n=t.owner||t.named.artist[0]||"";return n!==""&&n===(e.owner||e.named.artist[0]||"")&&t.width===e.width&&t.height===e.height}function jE(t){let r=[];for(let o=0;o<8;o++){let s=Math.floor(o*t.height/8),a=Math.max(s+1,Math.floor((o+1)*t.height/8));for(let c=0;c<9;c++){let u=Math.floor(c*t.width/9),f=Math.max(u+1,Math.floor((c+1)*t.width/9)),l=0;for(let d=s;d<a;d++)for(let h=u;h<f;h++){let m=(d*t.width+h)*4,p=t.data[m+3]/255,b=0.299*t.data[m]+0.587*t.data[m+1]+0.114*t.data[m+2];l+=b*p+255*(1-p)}r.push(l/((f-u)*(a-s)))}}let i=0n;for(let o=0;o<8;o++)for(let s=0;s<8;s++)i=i<<1n|(r[o*9+s]>r[o*9+s+1]?1n:0n);return i.toString(16).padStart(16,"0")}function L3(t,e){let n=BigInt(`0x${t}`)^BigInt(`0x${e}`),r=0;while(n>0n)r+=Number(n&1n),n>>=1n;return r}function _E(t,e){if(t.width<=0||t.height<=0||e.width<=0||e.height<=0)return!1;return Math.abs(Math.log(t.width/t.height/(e.width/e.height)))<0.01&&L3(t.hash,e.hash)<=2}var B3={thumb:"tile",band:"band",match:"tile",show:"view",backdrop:"view",redraw:"view"},af;async function U3(t){if(t.job==="redraw")return sf(t.home,t.name,t.key,t.paint,t.blur,t.aligns,t.user);if(t.job==="show"){if(af?.from!==t.from){let s=Tr(new Uint8Array(wg(t.from)),Re);af={from:t.from,clear:Qn(s),inked:ih(s)}}let{image:r,fill:i,opacity:o}=I$(af.inked,t.colors,t.tone,t.width,t.height,t.blur,t.tune,t.coloring);return C3(j3(t.to),{recursive:!0}),GE(t.to,Ke(r)),{clear:af.clear,fill:i,opacity:o}}let e=Tr(new Uint8Array(wg(t.from)),Re);if(t.job==="backdrop"){gu(t.home,t.colors,t.tone,e,{...t.origin,bytes:new Uint8Array(wg(t.source)),cut:t.from!==t.source},t,t.blur,t.coloring);let r=t.tune&&ge(t.home,t.colors.name).find((i)=>i.key===le(t.origin));if(t.tune&&r)Sa(X(t.home),r,t.tune,t.aligns??!0,t.user??t.home);return 0}if(t.job==="match")return{match:PE(e,t.colors),hash:jE(e)};if(t.job==="thumb")return C(t.to,Ke(c0(e,t.width,t.height))),0;let n=e.data.subarray(t.y*e.width*4,(t.y+t.height)*e.width*4);return GE(t.to,Ke({width:e.width,height:t.height,data:n})),0}function W3(t){t.on("message",async(e)=>{try{t.postMessage({id:e.id,value:await U3(e)})}catch(n){t.postMessage({id:e.id,error:n instanceof Error?n.message:String(n)})}})}class $g{worker;next=1;waiting=new Map;send(t){let e=this.next++;return new Promise((n,r)=>{let i=this.open();this.waiting.set(e,{ok:n,no:r}),i.ref(),i.postMessage({...t,id:e})})}close(){this.worker?.terminate(),this.worker=void 0,this.drop(Error("renderer closed"))}open(){if(this.worker)return this.worker;let t=new G3(import.meta.filename);t.unref(),t.on("message",({id:n,value:r,error:i})=>{let o=this.waiting.get(n);if(this.waiting.delete(n),this.waiting.size===0)t.unref();if(i!==void 0)o?.no(Error(i));else o?.ok(r)});let e=(n)=>{if(this.worker===t)this.worker=void 0;this.drop(n instanceof Error?n:Error("renderer stopped"))};return t.on("error",e),t.on("exit",()=>e(void 0)),this.worker=t,t}drop(t){for(let e of this.waiting.values())e.no(t);this.waiting.clear()}}class Ec{lines=new Map;run(t){let e=B3[t.job],n=this.lines.get(e);if(!n)n=new $g,this.lines.set(e,n);return n.send(t)}close(){for(let t of this.lines.values())t.close();this.lines.clear()}}class kg{lines;constructor(t){this.lines=Array.from({length:Math.max(1,t)},()=>new $g)}async map(t){let e=[],n=0;return await Promise.all(this.lines.map(async(r)=>{while(n<t.length){let i=n++;try{e[i]=await r.send(t[i])}catch(o){e[i]=o instanceof Error?o:Error(String(o))}}})),e}close(){for(let t of this.lines)t.close()}}if(!_3&&BE)W3(BE);import{existsSync as K3,mkdtempSync as z3,readFileSync as D3,rmSync as UE,writeFileSync as q3}from"node:fs";import{tmpdir as J3}from"node:os";import{basename as KE,join as WE}from"node:path";var Y3=6;class yg{dir;made=[];of(t,e){this.dir??=z3(WE(J3(),"ttheme-tint-"));let n=WE(this.dir,`${KE(t,".png")}.${e.slice(1).toLowerCase()}.png`);if(!K3(n)){let r=new Uint8Array(D3(t));q3(n,tu(r,e)??Ai(Ri(Bt(r)),e)),this.made.push(n);while(this.made.length>Y3)UE(this.made.shift(),{force:!0})}return n}clear(){if(this.dir)UE(this.dir,{recursive:!0,force:!0});this.dir=void 0,this.made.length=0}}function zE(t,e,n,r,i){if(ze(t)==="original")return e;let o=xn(n,[...r]);return o.color===t.tone?e:i.of(e,o.color)}function DE(t,e){let n=KE(e);return t.find((r)=>n.startsWith(`${r.stem}.`)||n.startsWith(`${r.stem}@`))}var n5=2147483625,YE=2147483626,Un=2147483627,r5=-1073741831,VE=-1073741830,i5=-1073741829,o5=4;function s5(t,e,n,r,i){let o=Math.trunc,s=n.col*r.w,a=n.row*r.h,c=o((Math.max(i.x,s)+r.w-1)/r.w),u=o(Math.min(i.x+i.w,s+n.cols*r.w)/r.w),f=o((Math.max(i.y,a)+r.h-1)/r.h),l=o(Math.min(i.y+i.h,a+n.rows*r.h)/r.h);if(u<=c||l<=f)return;return{col:c,row:f,cols:u-c,rows:l-f,x:o((c*r.w-i.x)*t/i.w),y:o((f*r.h-i.y)*e/i.h),w:o((u-c)*r.w*t/i.w),h:o((l-f)*r.h*e/i.h)}}function a5(t){try{let e=X3(t,"r"),n=Buffer.alloc(24);return Q3(e,n,0,24,0),V3(e),n.readUInt32BE(0)===2303741511?{width:n.readUInt32BE(16),height:n.readUInt32BE(20)}:void 0}catch{return}}class cf{ready=()=>{};cell={w:0,h:0};held;tints=new yg;sent=new Map;placed=new Map;viewed="";renders;scratch;made=0;bands=new Map;home;name;views;banded;files;static of(t,e,n,r){if(Ft(t)||!hs(t,r)||!(ms(t)||Vi(t)))return;return new cf(t,e,n)}constructor(t,e,n){this.home=e,this.name=n,this.views=Vi(t),this.banded=Vu(t),this.files=Zu(t)}get laid(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}load(){let t=X(this.home),e=He(t,this.name,t5()),n=[];try{n=Nt(t).palettes[this.name]?.pictures??[]}catch{}let r=e?DE(n,e.image):void 0;this.held=e&&r?{picture:r,image:e.image,opacity:e.opacity,cover:e.cover,at:qt.indexOf(e.position)+1||5}:void 0}draw(t,e,n,r,i,o={col:0,row:0,cols:r,rows:i}){if(this.cell.w===0)return"";let s=t[0],a=this.look(t,e,n,o,!this.views||o.cols===r&&o.rows===i);if(this.views){let u=r*this.cell.w,f=i*this.cell.h,l=a?`${s}|${a.image}|${a.opacity}|${u}|${f}|${a.box.w}|${a.box.h}|${a.box.x}|${a.box.y}|${this.held?.at??5}`:`${s}||1|${u}|${f}|0|0|0|0|5`;if(l===this.viewed)return"";return this.viewed=l,Zi(l)}let c=this.layer(n5,r5,"f=24",Buffer.from(ot(s)),o);if(a){let u=Math.max(0,Math.min(255,Math.round((1-a.opacity)*255)));c+=this.picture(a),c+=this.layer(YE,i5,"f=32",Buffer.from([...ot(s),u]),o)}else c+=this.drop(Un)+this.drop(YE);return c}resized(){this.sent.clear(),this.placed.clear(),this.viewed=""}clear(){let t=this.views&&this.viewed?Zi(""):"";for(let e of this.sent.keys())t+=gc(e);return this.resized(),t}close(){let t=this.clear();if(this.tints.clear(),this.renders?.close(),this.scratch)qE(this.scratch,{recursive:!0,force:!0});return t}look(t,e,n,r,i){let o=this.held;if(!o)return;let s={name:this.name,...ie([...t]),waived:[...n]},a=zE(o.picture,o.image,s,e,this.tints),c=a5(a);if(!c)return;let u=Xo(c.width,c.height,r.cols*this.cell.w,r.rows*this.cell.h,100,o.at,o.cover&&i),f={...u,x:u.x+r.col*this.cell.w,y:u.y+r.row*this.cell.h},l=s5(c.width,c.height,r,this.cell,f);if(!l)return;return{image:a,opacity:o.opacity,...c,box:f,rect:l}}layer(t,e,n,r,i){let o=r.toString("base64"),s=`${o}|${i.col}|${i.row}|${i.cols}|${i.rows}`;if(this.placed.get(t)===s)return"";return this.sent.set(t,s),this.placed.set(t,s),`\x1B_Ga=t,${n},s=1,v=1,i=${t},q=2;${o}\x1B\\\x1B[${i.row+1};${i.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${i.cols},r=${i.rows},C=1,z=${e},q=2\x1B\\`}picture(t){let{image:e,rect:n}=t;if(this.banded&&(2*n.y+n.h-t.height)**2>1){let o=this.band(t.image,n.y,n.h);if(!o.ready)return"";e=o.path,n={...n,y:0}}let r="";if(this.sent.get(Un)!==e){let o=Wl({id:Un,path:e,row:0,col:0,cols:0,rows:0,z:VE},this.files);if(o===void 0)return"";r+=o,this.sent.set(Un,e),this.placed.delete(Un)}let i=`${n.col};${n.row};${n.cols};${n.rows};${n.x};${n.y};${n.w};${n.h}`;if(this.placed.get(Un)!==i)r+=`\x1B[${n.row+1};${n.col+1}H\x1B_Ga=p,i=${Un},p=${Un},x=${n.x},y=${n.y},w=${n.w},h=${n.h},c=${n.cols},r=${n.rows},C=1,z=${VE},q=2\x1B\\`,this.placed.set(Un,i);return r}drop(t){if(!this.sent.has(t))return"";return this.sent.delete(t),this.placed.delete(t),gc(t)}band(t,e,n){let r=`${t}|${e}|${n}`,i=this.bands.get(r);if(i)return i;this.scratch??=Z3(JE(e5(),"ttheme-edit-")),this.renders??=new Ec;let o={path:JE(this.scratch,`band-${++this.made}.png`),ready:!1};this.bands.set(r,o),this.renders.run({job:"band",from:t,to:o.path,y:e,height:n}).then(()=>{o.ready=!0,this.ready()}).catch(()=>{});for(let[s,a]of this.bands){if(this.bands.size<=o5)break;if(a.ready&&a.path!==this.sent.get(Un))this.bands.delete(s),qE(a.path,{force:!0})}return o}}var ko=50;function st(t,e){return De(t,e)}function Mc(t){return St(t)>0.35?"#000000":"#ffffff"}function vg(t,e){return t.held!==void 0&&t.held-e.c>0.0005?t.held:void 0}function uf(t,e,n,r){let i=e.mode==="tune"&&e.channel===re,o=e.ratio(),{floor:s}=e.partner(),a=(p)=>Math.round(Math.log(Math.max(1,p))/Math.log(21)*(n-1)),c=a(o),u=s===void 0?-1:a(s),f=r===void 0?-1:a(r),l=i?"━":"─",d=Array.from({length:n},(p,b)=>b===c?t.bold("●"):b===f?"○":b===u?"┃":b<u?t.dim(l):l).join(""),h=`${o.toFixed(2)}:1`.padStart(6),m={kind:"channel",channel:re};return`${st(m,i?t.bold("▸◐"):t.dim(" ◐"))} ${st({kind:"bar",channel:re},d)} ${st(m,i?t.bold(h):t.dim(h))}`}function lf(t,e){if(!t.misses().has(e))return;if(lg(t.list,t.signature,t.waive,"bright-follows").includes(e))return e-T.length<8?"= makes the bright follow its normal":"= on the normal makes this follow it";return"f moves the colors the gate misses"}function ff(t,e,n){let r=dg(t.list,t.signature,t.waive,e),i=vg(t,n);if(i!==void 0)r.push({ok:void 0,text:`Chroma ○ ${i.toFixed(3)} is held while you tune — ${n.c.toFixed(3)} fits this lightness and hue`});return r}function df(t){let e=(n,r)=>n.toFixed(r).replace(/^0(?=\.)/,"");return`${e(t.l,2)} ${e(t.c,3)} ${t.h.toFixed(0).padStart(3)}°`}function ZE(t){return`${t.l.toFixed(2)} ${t.c.toFixed(3)} ${t.h.toFixed(0).padStart(3)}°`}function c5(t,e,n,r=ko){let i=hg(e.list,e.signature,e.waive).sort((u,f)=>Number(u.ok!==!1)-Number(f.ok!==!1)),o=i.filter((u)=>u.ok===!1).length,s=` ${t.dim("Gate")} ${o===0?t.dim("passes"):t.bold(`${o} ${o===1?"miss":"misses"}`)}`,a=r-4,c=i.flatMap((u)=>{let f=`${u.value} ${u.bound}`,l=` ${Tu(t,u.ok)} ${Pt(u.ok===!1?u.label:t.dim(u.label),t.dim(f),a-2)}`,d=[...new Set(u.slots)].map((p)=>Ge(p).name),h=u.slots[0],m=(p)=>h===void 0?p:st({kind:"slot",slot:h},p);return d.length>0?[m(l),m(` ${t.dim(tt(d.join(" · "),a-2))}`)]:[m(l)]});return[o===0?s:Pt(s,`${t.bold("n")} ${t.dim("next miss")}`,r-2),...c.slice(0,Math.max(0,n-1))]}function XE(t,e){let n=t-T.length;if(n>=0)return e===String(n)||e===`B${n}`||e===`K${n}`;return t===3&&e==="s"||t===2&&e==="c"}function hf(t,e,n,r){let i=r?bt("under"):"";if(n==="d")return`${t.fg(e.foreground)}${bt("dim")}${i}`;if(n==="b")return`${t.fg(e.foreground)}${bt("bold")}${i}`;if(n==="s")return`${t.bg(e.selection)}${t.fg(e.foreground)}${i}`;if(n==="c")return`${t.bg(e.cursor)}${i}`;let o=/^([BK]?)(\d+)$/.exec(n);if(!o)return`${t.fg(e.foreground)}${i}`;let s=e.ansi[Number(o[2])];if(o[1]==="K")return`${t.fg(e.ansi[0])}${t.bg(s)}${i}`;return`${t.fg(s)}${o[1]==="B"?bt("bold"):""}${i}`}function xc(t,e,n,r,i){let o=e.length-1,s=Math.max(0,Math.min(o,n)),a=i===void 0?-1:Math.max(0,Math.min(o,i));if(!t.color)return e.map((c,u)=>u===s?"●":u===a?"○":r?"━":"─").join("");return e.map((c,u)=>{let f=c??"#000000";if(u===s)return`${t.bg(f)}${t.fg(Mc(f))}${A.on}${ae}`;if(u===a)return c?`${t.bg(c)}${t.fg(Mc(c))}${A.off}${ae}`:`${t.fg("#aaaaaa")}${A.off}`;return c?`${t.fg(c)}█`:`${t.fg(r?"#777777":"#555555")}░`}).join("").concat(wt)}function mf(t,e,n){return Array.from({length:n},(r,i)=>{let o=e.min+(e.max-e.min)*i/(n-1),s={...t,[e.key]:o};return Gn(s.l,s.c,s.h)?Qe(s.l,s.c,s.h):void 0})}function yo(t,e,n,r){return Math.round((t-e)/(n-e)*(r-1))}function Sg(t){return hg(t.list,t.signature,t.waive).filter((e)=>e.ok===!1).length}function Oc(t,e,n,r){if(n<3)return[];let i=Sg(e),o=i===0?" Gate ✓ passes ":` Gate ✗ ${i} · n next `;return[t.dim(Yt(r,"top",[[2,o]])),...c5(t,e,n-1,r-1).slice(1).map((s)=>Je(t,s,r)),t.dim(Yt(r,"bottom"))]}var kr=0.98,Pc=0.12,u5=0.37,QE=0.74,l5=0.15,f5=-1073741828,Eg=-1073741827,Mg=-1073741826,d5=-1073741825,h5=2147483584,m5=["panel","plane","hue","contrast","mark","hue-thumb","contrast-thumb","origin","hue-origin","contrast-origin"],p5=4096;function Ic(t,e){return Bs(t,e,u5)}function gf(t,e,n){let r=Ic(t,n);return r>0.000001?Math.min(1,e/r):0}function Rc(t,e){return{width:t,height:e,data:new Uint8Array(t*e*4)}}function gi(t,e,n,r,i){let o=r[3]*i;if(o<=0||e<0||n<0||e>=t.width||n>=t.height)return;let s=(n*t.width+e)*4,a=t.data;if(o>=1){a[s]=r[0],a[s+1]=r[1],a[s+2]=r[2],a[s+3]=255;return}let c=a[s+3]/255,u=o+c*(1-o);for(let f=0;f<3;f++)a[s+f]=Math.round((r[f]*o+a[s+f]*c*(1-o))/u);a[s+3]=Math.round(u*255)}function $r(t,e=1){return[...ot(t),e]}function Ds(t,e,n,r,i,o,s){let a=Math.abs(t-(n+i/2))-(i/2-s),c=Math.abs(e-(r+o/2))-(o/2-s);return Math.hypot(Math.max(a,0),Math.max(c,0))+Math.min(Math.max(a,c),0)-s}function vo(t,e,n,r){let i=[],o=[],s=Math.max(0,Math.floor(r?.x??0)),a=Math.max(0,Math.floor(r?.y??0)),c=Math.min(t,Math.ceil(r?r.x+r.w:t)),u=Math.min(e,Math.ceil(r?r.y+r.h:e));for(let f=a;f<u;f++)for(let l=s;l<c;l++){let d=n(l+0.5,f+0.5);if(d>0.002)i.push(f*t+l),o.push(Math.min(1,d))}return{at:Uint32Array.from(i),cover:Float32Array.from(o)}}function So(t,e,n){for(let r=0;r<e.at.length;r++){let i=e.at[r];gi(t,i%t.width,Math.floor(i/t.width),n,e.cover[r])}}function xg(t,e){return(n,r)=>Math.max(0,0.5-Ds(n,r,t.x,t.y,t.w,t.h,e))}function tM(t,e,n){return(r,i)=>Math.max(0,0.5-Math.abs(Ds(r,i,t.x,t.y,t.w,t.h,e)+n/2)+n/2)}var pf=new Map;function g5(t,e,n,r){let i=`${e.w}x${e.h} ${rM({...t,ground:"#000000",ink:"#000000",accent:"#000000"})}`,o=pf.get(i);if(o)return o;let{panel:s}=t,a={x:e.w,y:0,w:s.cols*e.w,h:s.rows*e.h},c=Math.round(e.h*0.45),u=Math.round(e.h*0.18),f=e.h*0.6,l=Math.max(1,Math.round(e.h/22)),d=(I)=>({x:(I.col-s.col+1)*e.w,y:(I.row-s.row)*e.h}),h=Math.max(1,Math.round(e.h*0.08)),m=d(t.tabs),p={x:m.x,y:m.y+h,w:t.tabs.cols*e.w,h:e.h-2*h},b=Math.floor(t.tabs.cols/t.tabs.count)*e.w,$=Math.max(1,Math.round(h/2)),k={x:p.x+t.tabs.active*b+$,y:p.y+$,w:(t.tabs.active===t.tabs.count-1?p.w-t.tabs.active*b:b)-2*$,h:p.h-2*$},v=d(t.field),S={x:v.x,y:v.y+h,w:t.field.cols*e.w,h:e.h-2*h},x=t.divider===void 0?void 0:{x:a.x+e.w*0.6,y:(t.divider-s.row)*e.h,w:a.w-e.w*1.2,h:l},M={shadow:vo(n,r,(I,L)=>{let N=Ds(I,L,a.x,u,a.w,a.h,c);return N>0&&N<f?(1-N/f)**2:0}),fill:vo(n,r,xg(a,c),a),border:vo(n,r,tM(a,c,l),a),track:vo(n,r,xg(p,p.h*0.3),p),segment:vo(n,r,xg(k,k.h*0.3),k),field:vo(n,r,tM(S,S.h*0.3,l),S),divider:x&&vo(n,r,()=>1,x)};if(pf.size>8)pf.clear();return pf.set(i,M),M}function b5(t){let e=St(t.ground)<0.18;return{dark:e,surface:At(t.ground,t.ink,e?0.07:0.04)}}function w5(t,e){let n=Rc((t.panel.cols+2)*e.w,(t.panel.rows+1)*e.h),r=g5(t,e,n.width,n.height),{dark:i,surface:o}=b5(t);if(So(n,r.shadow,[0,0,0,i?0.45:0.18]),So(n,r.fill,$r(o)),So(n,r.border,$r(t.ink,i?0.16:0.2)),So(n,r.track,$r(t.ink,i?0.06:0.07)),So(n,r.segment,$r(t.accent,i?0.24:0.2)),So(n,r.field,$r(t.ink,i?0.22:0.28)),r.divider)So(n,r.divider,$r(t.ink,i?0.12:0.16));return n}function $5(t,e,n){let r=Rc(Math.round(t.cols*n.w),Math.round(t.rows*n.h)),{width:i,height:o,data:s}=r,a=Math.round(n.h*0.3),c=Math.max(1,(t.cols-1)*n.w),u=(h)=>Math.min(1,Math.max(0,(h+0.5-n.w/2)/c)),f=t.rows*2-1,l=(h)=>kr-Math.min(1,Math.max(0,((h+0.5)/n.h*2-0.5)/f))*(kr-Pc),d=[];for(let h=0;h<o;h++){if(h%2===0){let m=l(h+0.5),p=Ic(m,e);d=Array.from({length:Math.ceil(i/2)},(b,$)=>Gn(m,u($*2+0.5)*p,e)??[0,0,0])}for(let m=0;m<i;m++){let b=(m<a||m>=i-a)&&(h<a||h>=o-a)?Math.min(1,Math.max(0,0.5-Ds(m+0.5,h+0.5,0,0,i,o,a))):1;if(b<=0)continue;let $=d[m>>1],k=(h*i+m)*4;s[k]=$[0],s[k+1]=$[1],s[k+2]=$[2],s[k+3]=Math.round(b*255)}}return r}function nM(t,e){let n=Math.max(4,Math.round(t.h*0.42));return{top:Math.round((t.h-n)/2),height:n,width:e*t.w}}function k5(t,e){let n=Rc(t.cols*e.w,e.h),{top:r,height:i,width:o}=nM(e,t.cols),s=Array.from({length:o},(a,c)=>{let f=Math.min(1,Math.max(0,((c+0.5)/e.w-0.5)/Math.max(1,t.cols-1)))*360;return Gn(QE,Bs(QE,f,l5),f)??[0,0,0]});for(let a=r;a<r+i;a++)for(let c=0;c<o;c++){let u=Math.min(1,Math.max(0,0.5-Ds(c+0.5,a+0.5,0,r,o,i,i/2))),f=s[c];gi(n,c,a,[f[0],f[1],f[2],1],u)}return n}function y5(t,e,n){let r=Rc(t.cols*n.w,n.h),{top:i,height:o,width:s}=nM(n,t.cols),a=t.floor===void 0?-1:Math.round((t.floor*(t.cols-1)+0.5)*n.w),c=Math.max(2,Math.round(o*0.45)),u=i+Math.round((o-c)/2);for(let f=u;f<u+c;f++)for(let l=0;l<s;l++){let d=Math.min(1,Math.max(0,0.5-Ds(l+0.5,f+0.5,0,u,s,c,c/2))),h=a<0||l>=a;gi(r,l,f,$r(e,h?t.lit?0.5:0.36:0.14),d)}if(a>=0){let f=Math.max(2,Math.round(n.w/5));for(let l=i-1;l<i+o+1;l++)for(let d=a-Math.floor(f/2);d<a-Math.floor(f/2)+f;d++)gi(r,d,l,$r(e,0.85),1)}return r}function v5(t,e,n,r,i,o,s){let a=Rc(t*s.w,e*s.h),c=Math.max(2,Math.round(i*0.3)),u=(l,d)=>Math.min(1,Math.max(0,l-d+0.5)),f=[0,0,0,0.5];for(let l=0;l<a.height;l++)for(let d=0;d<a.width;d++){let h=Math.hypot(d+0.5-n,l+0.5-r);if(o)gi(a,d,l,$r(o),u(i-c,h));else gi(a,d,l,f,u(i-c,h)-u(i-c-1,h));gi(a,d,l,f,u(i+1,h)-u(i,h)),gi(a,d,l,[255,255,255,1],u(i,h)-u(i-c,h))}return a}function zs(t,e,n,r,i,o,s=d5){let a=Math.floor((e-r-2)/o.w),c=Math.floor((e+r+2)/o.w),u=Math.floor((n-r-2)/o.h),f=Math.floor((n+r+2)/o.h),l={row:u,col:a,cols:c-a+1,rows:f-u+1},d=Math.round((e-a*o.w)*2)/2,h=Math.round((n-u*o.h)*2)/2;return{name:t,key:`${l.cols}x${l.rows} ${d},${h} ${r} ${i??"-"}`,box:l,z:s,paint:()=>v5(l.cols,l.rows,d,h,r,i,o)}}function rM(t){let{panel:e}=t,n=(i)=>`${i.row-e.row},${i.col-e.col},${i.cols}`,r=t.divider===void 0?"-":t.divider-e.row;return`${e.cols}x${e.rows} ${t.ground} ${t.ink} ${t.accent} ${n(t.tabs)},${t.tabs.active}/${t.tabs.count} ${n(t.field)} ${r}`}function S5(t,e){let n=`${e.w}x${e.h}`,r=Math.max(4,Math.round(e.h*0.34)),i=(l,d)=>(l.col+0.5+d*(l.cols-1))*e.w,o=(l)=>(l.row+0.5)*e.h,s=t.plane,a=(l)=>{let d=(kr-l)/(kr-Pc)*(s.rows*2-1);return s.row*e.h+(Math.min(s.rows*2-1,Math.max(0,d))+0.5)*e.h/2},c=a(s.l),u=[{name:"panel",key:`${n} ${rM(t)}`,box:{row:t.panel.row,col:t.panel.col-1,cols:t.panel.cols+2,rows:t.panel.rows+1},z:f5,paint:()=>w5(t,e)},{name:"plane",key:`${n} ${s.cols}x${s.rows} ${s.h.toFixed(2)}`,box:s,z:Eg,paint:()=>$5(s,s.h,e.h>=24?{w:e.w/2,h:e.h/2}:e)},{name:"hue",key:`${n} ${t.hue.cols}`,box:{...t.hue,rows:1},z:Eg,paint:()=>k5(t.hue,e)},{name:"contrast",key:`${n} ${t.contrast.cols} ${t.contrast.floor??"-"} ${t.contrast.lit} ${t.ink}`,box:{...t.contrast,rows:1},z:Eg,paint:()=>y5(t.contrast,t.ink,e)},zs("mark",i(s,gf(s.l,s.c,s.h)),c,r,void 0,e),zs("hue-thumb",i(t.hue,t.hue.h/360),o(t.hue),r,t.hue.color,e),zs("contrast-thumb",i(t.contrast,t.contrast.at),o(t.contrast),r,t.contrast.color,e)],f=t.origin;if(f){let l=Math.max(3,Math.round(r*0.55));u.push(zs("origin",i(s,gf(f.l,f.c,f.h)),a(f.l),l,f.color,e,Mg),zs("hue-origin",i(t.hue,f.h/360),o(t.hue),l,f.color,e,Mg),zs("contrast-origin",i(t.contrast,f.at),o(t.contrast),l,f.color,e,Mg))}return u}function E5(t,e){let r=e.toString("base64").match(new RegExp(`.{1,${p5}}`,"g"))??[""];return r.map((i,o)=>{let s=o<r.length-1?1:0;return o===0?`\x1B_Ga=t,f=100,i=${t},m=${s},q=2;${i}\x1B\\`:`\x1B_Gm=${s},q=2;${i}\x1B\\`}).join("")}function eM(t,e,n){return`\x1B[${e.row+1};${e.col+1}H\x1B_Ga=p,i=${t},p=${t},c=${e.cols},r=${e.rows},C=1,z=${n},q=2\x1B\\`}function Og(t){return`\x1B_Ga=d,d=I,i=${t},q=2\x1B\\`}class bf{cell={w:0,h:0};shown=new Map;static of(t,e){return Ft(t)||!hs(t,e)||!ms(t)?void 0:new bf}get ready(){return this.cell.w>0}measured(t){if(this.cell.w===0&&t.w>0&&t.h>0)this.cell=t}draw(t){if(!this.ready)return"";let e=t?S5(t,this.cell):[],n="";for(let r of e)n+=this.put(r);for(let[r,i]of this.shown)if(!e.some((o)=>o.name===r))n+=Og(i.id),this.shown.delete(r);return n}clear(){let t="";for(let e of this.shown.values())t+=Og(e.id);return this.shown.clear(),t}put(t){let e=`${t.box.row};${t.box.col};${t.box.cols};${t.box.rows}`,n=this.shown.get(t.name);if(n&&n.key===t.key){if(n.at===e)return"";return n.at=e,eM(n.id,t.box,t.z)}let r=h5+m5.indexOf(t.name)*2,i=n?.id===r?r+1:r;return this.shown.set(t.name,{key:t.key,id:i,at:e}),`${E5(i,Ke(t.paint()))}${eM(i,t.box,t.z)}${n?Og(n.id):""}`}}var Ac=34,Pg=2,M5=6,$f=3,x5=7,oM="↑↓ L ←→ C ⇧←→ H tab ◐";function O5(t,e,n){let r="",i=0;for(let o of t){let s=i+G(o);if(s>e&&i<n)r+=i>=e&&s<=n?o:" ".repeat(Math.min(s,n)-Math.max(i,e));if(i=s,i>=n)break}return r}function kf(t){return t.reduce((e,n)=>e+G(n.text),0)}function yf(t,e,n){let r=[],i=0;for(let o of t){let s=G(o.text),a=Math.max(e,i),c=Math.min(n,i+s);if(c>a)r.push({...o,text:O5(o.text,a-i,c-i)});i+=s}return r}function P5(t,e,n){return[...yf(t,0,e),...n,...yf(t,e+kf(n),kf(t))]}function I5(t,e){return t.map((n)=>{let r=e&&n.sgr?`${n.sgr}${n.text}${me}`:n.text;return n.target?De(n.target,r):r}).join("")}function sM(t){return t<T.length?T[t]:pn[(t-T.length)%8]}function aM(t,e,n,r){let i=t.signature.includes(Bn[n])?A.signature:e.color?A.swatch:" ";return e.color?`${e.fg(t.list[n])}${i}${r}`:i}function cM(t,e,n,r,i){return r.has(n)?e.bold(A.miss):t.changed(n)?e.color?`${bt("warn")}${A.on}${i}`:A.on:" "}function uM(t,e,n){return n?t.color?`${t.fg(e.cursor)}${A.gutter}${wt} `:`${A.gutter} `:" "}function R5(t,e,n,r,i,o){let s=r===t.slot(),a=s?e.fg(n.foreground):wt,c=sM(r).padEnd(12),u=t.lch[r],f=`${uM(e,n,s)}${aM(t,e,r,a)} ${s?e.bold(c):c}${ZE(u)} ${cM(t,e,r,o,a)}`,l=tt(f,i);return st({kind:"open",slot:r},s&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${l}${ae}`:l)}var Ig=8,lM=44;function Tc(t){return t>=lM?16:11}function iM(t,e,n,r,i,o){let s=Tc(i);if(!t.visible(r))return" ".repeat(s);let a=r===t.slot(),c=a&&e.color?e.fg(n.foreground):wt,u=t.lch[r],f=(p,b)=>p.toFixed(b).replace(/^0(?=\.)/,""),l=`${u.h.toFixed(0).padStart(3)}°`,d=i>=lM?`${f(u.l,2)} ${f(u.c,3)} ${l}`:`${f(u.l,2)} ${l}`,h=`${aM(t,e,r,c)} ${d}${cM(t,e,r,o,c)}`,m=a&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${h}${ae}`:h;return st({kind:"open",slot:r},m)}function A5(t,e,n,r,i,o){let s=T.length+r,a=s+8,c=t.row===s,u=pn[r].padEnd(Ig),f=t.linkOf(a)!==void 0?e.dim("⇠"):" ";return`${st({kind:"open",slot:s},`${uM(e,n,c)}${c?e.bold(u):u}`)}${iM(t,e,n,s,i,o)}${f} ${iM(t,e,n,a,i,o)}`}function fM(t){return 14+2*Tc(t)}function N5(t){let e=Tc(t)>=16;return[[2," ANSI "],[2+Ig,e?" Normal 0–7 ":" Normal "],[5+Ig+Tc(t),e?" Bright 8–15 ":" Bright "]]}function T5(t,e,n,r){let i=t.slot(),o=Ge(i),s=fM(r),a=s-2,c=` ${o.name}${i>=T.length?` · ${o.about}`:""} `,u=[` ${e.dim(SE(i))}`];if(i>=2){let l=JS(n,i).filter((m)=>m.count>0),d=l.length>0?l.map((m)=>`${m.name} ${m.count}`).join(" · "):"none",h=jt("w",t.where?qe(e,"w where"):e.dim("w where"));u.push(Pt(` ${e.dim("Shown in")} ${d}`,`${h} `,a))}let f=i-T.length;if(f===0||f===7||f===8||f===15){let l=t.lch[i].l,d=t.lch[0].l,h=t.lch[1].l,m=Math.abs(l-d)<=Math.abs(l-h)?"the background":"the text";u.push(` ${e.dim(`L ${l.toFixed(2)} reads near ${m}`)}`)}return[e.dim(Yt(s,"top",[[2,c]])),...u.map((l)=>Je(e,l,s)),e.dim(Yt(s,"bottom"))]}function wf(t,e){return kr-t*(kr-Pc)/(e*2-1)}function dM(t,e,n,r,i){let o=wf(Math.max(0,Math.min(e*2-1,t*2-0.5)),e),s=Math.max(0,Math.min(1,(n-0.5)/Math.max(1,r-1)));return{lightness:o,chroma:s*Ic(o,i)}}function H5(t,e,n,r,i,o){let s=(l)=>{let d=Math.max(0,Math.min(i*2-1,Math.round((kr-l.l)/(kr-Pc)*(i*2-1))));return{row:Math.floor(d/2),col:Math.round(gf(l.l,l.c,l.h)*(r-1))}},{row:a,col:c}=s(e),u=o?s(o):{row:-1,col:-1},f=(l,d)=>{return`#${(Gn(l,d*Ic(l,e.h),e.h)??[0,0,0]).map((m)=>m.toString(16).padStart(2,"0")).join("")}`};return Array.from({length:i},(l,d)=>{let h="";for(let m=0;m<r;m++){if(d===a&&m===c){h+=t.color?`${t.bg(n)}${t.fg(Mc(n))}${A.on}${ae}`:A.on;continue}let p=m/Math.max(1,r-1);if(d===u.row&&m===u.col){let b=f(wf(d*2+1,i),p);h+=t.color?`${t.bg(b)}${t.fg(Mc(b))}${A.off}${ae}`:A.off;continue}h+=t.color?`${t.fg(f(wf(d*2,i),p))}${t.bg(f(wf(d*2+1,i),p))}▀${ae}`:"·"}return st({kind:"plane",row:d,rows:i},h)})}function hM(t,e,n){let r=t.slot(),i=t.lch[r],s=ff(t,r,i).filter((c)=>c.ok===!1||c.text.startsWith("Chroma ○")).flatMap((c)=>Et(c.text,n-2).map((u,f)=>`${f===0?c.ok===!1?e.bold(A.miss):e.dim(A.off):" "} ${u}`)),a=lf(t,r);return[...s.slice(0,3),...a?[e.dim(a)]:[]]}function mM(t,e,n){let r=t.pair(t.slot());if(!r)return;let i=t.slot()>=r.bright,o=sM(i?r.normal:r.bright).toLowerCase(),s=`${r.lift>=0?"+":""}${r.lift.toFixed(2)}`,a=n-9,c=i?r.on?[`⇠ Linked to ${o} · L ${s}`,`⇠ ${o} · L ${s}`,`⇠ ${o}`]:[`Not linked to ${o}`,"Not linked"]:r.on?[`Bright follows · L ${s}`,"Bright follows"]:["Its bright moves on its own","Moves on its own"],u=c.find((f)=>G(f)<=a)??c[c.length-1]??"";return Pt(e.dim(u),jt("l",`${e.bold("l")} ${e.dim(r.on?"unlink":"link")}`),n)}function pM(t,e,n){let r=t.slot(),i=t.list[r],o=t.lch[r],s=t.typing!==void 0?e.bold(`${t.typing}▏`):jt("#",e.bold(ME(t.format,i,o))),a=t.start[r],c=e.color?`${e.fg(a)}${A.swatch}${wt} `:"";return Pt(s,a!==i?e.dim(`was ${c}${a}`):"",n)}function F5(t,e,n,r){let i=t.slot(),o=t.lch[i],s=t.list[i],a=n-4,c=e.dim("│"),u=(M)=>`${c} ${tt(M,a)} ${c}`,f=mM(t,e,a),l=6+(f?1:0),d=hM(t,e,a).slice(0,Math.max(0,r-l-$f)),h=Math.max($f,Math.min(M5,r-l-d.length)),m=" L × C ",p=` H ${o.h.toFixed(0)}° `,b=Math.max(0,n-4-G(" L × C ")-G(p)),$=[`${e.dim("╭─")}${e.dim(" L × C ")}${e.dim("─".repeat(b))}${e.dim(p)}${e.dim("─╮")}`],k=t.origin();for(let M of H5(e,o,s,a,h,k?.lch))$.push(u(M));let v=mn[2];$.push(u(st({kind:"bar",channel:2},xc(e,mf(o,v,a),yo(o.h,v.min,v.max,a),t.mode==="tune"&&t.channel===2,k&&yo(k.lch.h,v.min,v.max,a))))),$.push(u(uf(e,t,Math.max(8,a-11),k?.ratio)));let S=(M,I)=>st({kind:"format",format:I},t.format===I?qe(e,M):e.dim(` ${M} `));if($.push(u(`${S("Hex","hex")} ${S("RGB","rgb")} ${S("OKLCH","oklch")}`)),$.push(u(pM(t,e,a))),f)$.push(u(f));for(let M of d)$.push(u(M));let x=tt(` ${oM} `,n-4,!1);return $.push(`${e.dim("╰─")}${e.dim(x)}${e.dim("─".repeat(Math.max(0,n-4-G(x))))}${e.dim("─╯")}`),{lines:$.map((M)=>st({kind:"picker"},M))}}var Nc=[["Hex","hex"],["RGB","rgb"],["OKLCH","oklch"]];function L5(t,e,n,r){let i=t.lch[t.slot()],o=n-2,s=mM(t,e,o),a=6+(s?1:0),c=hM(t,e,o).slice(0,Math.max(0,r-a-$f)),u=Math.max($f,Math.min(x5,r-a-c.length)),f=(M)=>` ${tt(M,o)} `,l=[f(Pt(e.dim("L × C"),e.dim(`H ${i.h.toFixed(0)}°`),o))];for(let M=0;M<u;M++)l.push(f(st({kind:"plane",row:M,rows:u}," ".repeat(o))));let d=l.length;l.push(f(st({kind:"bar",channel:2}," ".repeat(o))));let h=l.length,m=t.mode==="tune"&&t.channel===re,p={kind:"channel",channel:re},b=`${t.ratio().toFixed(2)}:1`.padStart(8),$=o-11;l.push(f(`${st(p,m?e.bold("◐"):e.dim("◐"))} ${st({kind:"bar",channel:re}," ".repeat($))} ${st(p,m?e.bold(b):e.dim(b))}`));let k=l.length,v=Math.floor(o/Nc.length);l.push(f(Nc.map(([M,I],L)=>{let N=L===Nc.length-1?o-v*L:v,_=Math.floor((N-G(M))/2),D=`${" ".repeat(_)}${M}${" ".repeat(N-_-G(M))}`,B=t.format===I?e.color?e.accent(e.bold(D)):`[${M}]`.padEnd(N):e.dim(D);return st({kind:"format",format:I},B)}).join("")));let S=l.length;l.push(f(` ${pM(t,e,o-2)} `));let x=s?l.length:void 0;if(s)l.push(f(s));for(let M of c)l.push(f(M));return l.push(f(e.dim(oM))),{lines:l.map((M)=>st({kind:"picker"},M)),parts:{plane:{row:1,col:1,cols:o,rows:u},hue:{row:d,col:1,cols:o,rows:1},contrast:{row:h,col:3,cols:$,rows:1},tabs:{row:k,col:1,cols:o,rows:1},field:{row:S,col:1,cols:o,rows:1},divider:x}}}function C5(t,e,n,r,i,o){let s=t.slot(),a=t.lch[s],c=t.list[s],u=(h)=>({row:r+h.row,col:i+h.col,cols:h.cols,rows:h.rows}),f=(h)=>Math.log(Math.max(1,h))/Math.log(21),l=t.partner().floor,d=t.origin();return{panel:{row:r,col:i,cols:n.plane.cols+2,rows:o},ground:e.background,ink:e.foreground,accent:e.cursor,plane:{...u(n.plane),h:a.h,l:a.l,c:a.c},hue:{...u(n.hue),h:a.h,color:c},contrast:{...u(n.contrast),at:f(t.ratio()),floor:l===void 0?void 0:f(l),color:c,lit:t.channel===re},tabs:{...u(n.tabs),active:Nc.findIndex(([,h])=>h===t.format),count:Nc.length},field:u(n.field),divider:n.divider===void 0?void 0:r+n.divider,origin:d&&{...d.lch,color:d.hex,at:f(d.ratio)}}}function j5(t,e,n,r,i,o,s,a){let u=o??1,f=s-1-u,l=u-2,d=12+2*Tc(r)-Pg,h=a?L5:F5,m=h(t,e,d,Number.POSITIVE_INFINITY),p=m.lines.length<=f||m.lines.length>l&&f>=l,b=p?f:l,$=m.lines.length<=b?m:h(t,e,d,b),k=p?u+1:u-$.lines.length,v=Array.from({length:s},(S,x)=>i[x]??"");return $.lines.forEach((S,x)=>{let M=k+x;if(M>=0&&M<s)v[M]=Bk(v[M],Pg,S)}),{lines:v,art:$.parts&&C5(t,n,$.parts,k,Pg,$.lines.length)}}function _5(t,e,n,r,i){let o=r.side,s=Sg(t),a=t.changedOnly?e.warn(A.on):" ",c=s===0?e.dim("Gate ✓"):e.bold(`Gate ✗ ${s}`),u=Pt(` ${e.bold("Colors")} ${c}`,jt("m",`${t.changedOnly?e.bold("⧩ changed"):e.dim("⧩ changed")}${a} `),o),f=i-1,l=t.misses(),d=fM(o),h=[],m,p=T.map((k,v)=>v).filter((k)=>t.visible(k));if(p.length>0){h.push(e.dim(Yt(d,"top",[[2," Base "]])));for(let k of p){if(k===t.slot())m=h.length;h.push(Je(e,R5(t,e,n,k,d-2,l),d))}}let b=pn.map((k,v)=>v).filter((k)=>t.visible(T.length+k)||t.visible(T.length+k+8));if(b.length>0){h.push(e.dim(Yt(d,p.length>0?"mid":"top",N5(o))));for(let k of b){if(t.row===T.length+k)m=h.length;h.push(Je(e,A5(t,e,n,k,o,l),d))}}if(p.length>0||b.length>0)h.push(e.dim(Yt(d,"bottom")));if(t.visible(t.slot()))h.push(...T5(t,e,r,o));let $=Oc(e,t,f-h.length,d);return h.push(...Array.from({length:Math.max(0,f-h.length-$.length)},()=>""),...$),{lines:[u,...h.slice(0,f)],anchor:m===void 0?void 0:m+1}}function G5(t,e,n){let r=`${e.accent(A.current)} ${e.bold(t.options.title)} ${e.dim(`· ${t.options.name}`)}`,i=t.dirty(),o=t.changes(),s=e.warn(A.on),a=i?`${s} ${e.dim(o>0?`unsaved · ${o} changed`:"unsaved")}`:"",c=[t.resettable()?jt("R",e.dim("Reset")):"",i?jt("s",qe(e,"Save")):""].filter(Boolean).join(" "),u=[r,a,c].filter(Boolean).join(" "),f=(h,m,p)=>jt(h,p?qe(e,m):e.dim(m)),d=[...t.options.find||t.pictures>0?[f("b",`▣ ${t.pictures>0?`${t.pictures} `:""}Picture`,t.pic&&(t.pictures>0||!!t.options.find))]:[],f("i","⌖ Inspect",t.inspect),`${f("u","↶",!1)} ${f("ctrl+r","↷",!1)}`,f("I","Import ▾",t.menu==="import"),...t.options.exports?[f("x","Export ▾",t.menu==="export")]:[]].join(" ");return Pt(u,`${d} `,n)}var B5={kind:"open",slot:0};function U5(t,e,n){return t.color?`${n?Gb:t.bg(e.background)}${t.fg(e.foreground)}`:""}function W5(t,e,n,r,i,o){let s=kc(r),a=U5(e,n,o),c=t.slot();return Array.from({length:r.rows},(u,f)=>{let l=s[f],d=[{text:" ",sgr:a}];if(l)l.forEach((p,b)=>{let $=i&&i.pane===r.id&&i.line===f&&i.run===b,k=e.color?$?`${a}${e.bg(n.foreground)}${e.fg(n.background)}`:`${a}${hf(e,n,p.role,Vp(p.role,c))}${t.where&&!Yp(p.role,c)?bt("dim"):""}`:"";d.push({text:p.text,sgr:k,target:{kind:"run",spot:{pane:r.id,line:f,run:b}}})});let h=yf(d,0,r.width-1),m=r.width-kf(h);return m>0?[...h,{text:" ".repeat(m),sgr:a,target:B5}]:h})}function K5(t,e,n){let r=t.slotsHere();if(!r)return;let i=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",o=e.color?`${i}${bt("dim")}`:"",s=(l)=>({text:l,sgr:o}),a="┌ Slots here ",c="└ enter its slot · esc ",u=[[s(`${a}${"─".repeat(Ac-G(a)-1)}┐`)]],f=[["text",r.text]];if(r.ground!==r.text)f.push(["ground",r.ground]);for(let[l,d]of f){let h={kind:"open",slot:d},m=t.shown()[d],p=d<T.length?"":Ge(d).about;u.push([{text:"│ ",sgr:o,target:h},{text:l.padEnd(7),sgr:o,target:h},{text:A.swatch,sgr:e.color?`${i}${e.fg(m)}`:"",target:h},{text:" ",sgr:i,target:h},{text:Ge(d).name.slice(0,14).padEnd(14),sgr:i,target:h},{text:p.padEnd(Ac-27),sgr:o,target:h},{text:" │",sgr:o,target:h}])}return u.push([s(`${c}${"─".repeat(Ac-G(c)-1)}┘`)]),u.map((l)=>yf(l,0,Ac))}function z5(t,e,n){if(!t.menu)return;let r=t.menu==="export"?["Share code","Add command","Palette file"]:["Another palette","A share code"],i=24,o=e.color?`${e.bg(n.background)}${e.fg(n.foreground)}`:"",s=e.color?`${o}${bt("dim")}`:"",a=t.menu==="export"?"Copy ":"Take from ",c=[[{text:`┌ ${a}${"─".repeat(Math.max(0,i-3-a.length))}┐`,sgr:s}]];return r.forEach((u,f)=>{let l=f===t.entry,d={kind:"entry",index:f};c.push([{text:"│",sgr:s},{text:` ${l?"▌":" "} ${u.padEnd(i-6)}`,sgr:l&&e.color?`${e.bg(n.selection)}${e.fg(n.foreground)}${bt("bold")}`:o,target:d},{text:"│",sgr:s}])}),c.push([{text:`└${"─".repeat(i-2)}┘`,sgr:s}]),c}var D5=["#ff5f57","#febc2e","#28c840"];function q5(t,e,n,r){let i=e.color?`${e.bg(gM(n))}${e.fg(n.foreground)}`:"",o=[{text:" ",sgr:i}];for(let u of D5)o.push({text:"●",sgr:e.color?`${i}${e.fg(u)}`:""},{text:" ",sgr:i});o.push({text:" ",sgr:i});let s=qS(),a=(t.scene%s.length+s.length)%s.length;s.forEach((u,f)=>{let l={kind:"scene",scene:f};o.push(f===a?{text:` ${u} `,sgr:e.color?`${i}${e.bg(Mi(n.background,n.foreground,"tab"))}${bt("bold")}`:"",target:l}:{text:` ${u} `,sgr:e.color?`${i}${bt("dim")}`:"",target:l},{text:" ",sgr:i})});let c="⇧←→ ";return[...o,{text:" ".repeat(Math.max(0,r-kf(o)-G(c))),sgr:i},{text:c,sgr:e.color?`${i}${bt("dim")}`:""}]}function gM(t){return Mi(t.background,t.foreground,"bar")}function J5(t,e,n){let{frame:r}=n,i=Mi(e.background,e.foreground,"line"),o=t.color?`${t.bg(bM(e))}${t.fg(i)}`:"",s=t.color?`${t.bg(gM(e))}${t.fg(i)}`:"",a=(u,f)=>u===r.row||u===r.row+r.rows-1||f===r.col||f===r.col+r.cols-1,c=[];for(let[u,f]of QS(n.rules))for(let[l,d]of f)c.push([u,l,[{text:d,sgr:a(u,l)?o:s}]]);return c}function bM(t){return Mi(t.background,t.foreground,"stage")}function wM(t,e){return $c(t,e,0)?.inner}function $M(t,e,n,r,i={}){let o=$c(e,n,t.scene);if(!o)return;let s=xe(r),a=t.shown(),c=ie(a),u=ie(i.chrome?[...i.chrome]:t.list),f=_5(t,s,u,o,n-1),l=t.mode==="tune"?j5(t,s,u,o.side,f.lines,f.anchor,n-1,r&&i.art===!0):{lines:f.lines,art:void 0},d=l.lines,h=i.behind===!0,m=t.inspect?ql(o,t.spot):void 0,p=s.color?s.bg(bM(u)):"",b=Array.from({length:n-3},()=>[{text:" ".repeat(o.width),sgr:p}]),$=(N,_,D)=>{let B=N-2;if(B>=0&&B<b.length)b[B]=P5(b[B],_,D)},k=o.side+1;for(let[N,_,D]of J5(s,u,o))$(N,_-k,D);for(let N of o.tiles)W5(t,s,c,N,m,h).forEach((_,D)=>{$(N.row+D,N.col-k,_)});$(o.title.row,o.title.col-k,q5(t,s,u,o.title.cols));let v=m?K5(t,s,c):void 0;if(m&&v){let N=o.tiles.find((D)=>D.id===m.pane),_=kc(N)[m.line]?.[m.run];if(_){let D=Math.max(0,Math.min(N.col-k+1+_.col,o.width-Ac)),B=N.row+m.line,F=B+1,pt=F+v.length-2>n-2?B-v.length:F;v.forEach((Xt,it)=>{$(pt+it,D,Xt)})}}let S=z5(t,s,c);if(S){let N=Math.max(0,o.width-24-(t.menu==="import"?12:2));S.forEach((_,D)=>{$(2+D,N,_)})}let x=G5(t,s,o.width),M=s.dim("─".repeat(o.width)),I=s.dim("│"),L=[];for(let N=0;N<n-1;N++){let _=N===0?x:N===1?M:I5(b[N-2]??[],r);L.push(`${tt(d[N]??"",o.side)}${I}${_}`)}return{lines:L,art:l.art}}var kM=80,yM=24,Rg=11;function Y5(t,e,n,r){let i=vg(e,n);return mn.map((o,s)=>{let a=e.mode==="tune"&&s===e.channel,c=n[o.key],u=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),f=xc(t,mf(n,o,r),yo(c,o.min,o.max,r),a,o.key==="c"&&i!==void 0?yo(i,o.min,o.max,r):void 0),l=o.key.toUpperCase(),d={kind:"channel",channel:s};return`${st(d,a?t.bold(`▸${l}`):t.dim(` ${l}`))} ${st({kind:"bar",channel:s},f)} ${st(d,a?t.bold(u):t.dim(u))}`})}function V5(t,e){if(e.mode!=="tune"||e.slot()<T.length)return[];let n=Us.map((i)=>st({kind:"scope",scope:i},i!==e.scope?t.dim(i):qe(t,i))),r=e.scoped().length;return[`${t.dim("Scope")} ${n.join(" ")}`,t.dim(r>1?`${r} slots move by the same step, each keeping its own color`:"This slot moves alone · a widens it")]}var vM={background:(t)=>t.background,foreground:(t)=>t.foreground,hue:(t)=>t.cursor,tint:(t)=>t.background,lightness:(t)=>t.ansi[4],chroma:(t)=>t.ansi[1],brights:(t)=>t.ansi[12]};function Z5(t){return`oklch ${t.l.toFixed(3)} ${t.c.toFixed(3)} ${t.h.toFixed(0)}°`}function X5(t,e){return`${t.dim("oklch")} ${t.bold(`${e.l.toFixed(3)} ${e.c.toFixed(3)} ${e.h.toFixed(0)}°`)}`}function Q5(t,e,n,r=ko){let i=e.misses(),o=ie(e.list),s=e.slot(),a=(l)=>{let d=e.list[l],h=l===s,m=e.signature.includes(Bn[l])?A.signature:t.color?A.swatch:" ",p=i.has(l)?A.miss:e.tone&&e.changed(l)?A.on:" ",$=`${t.color?`${t.fg(d)}${m}${h?t.fg(o.foreground):wt} `:`${m} `}${df(e.lch[l])}${p}`;if(!h)return st({kind:"slot",slot:l},` ${$}`);return st({kind:"slot",slot:l},t.color?`${t.bg(o.selection)}${t.fg(o.foreground)} ${$}${ae}`:`›${$}`)},c=(l)=>l?t.color?`${t.fg(o.cursor)}${A.gutter}${wt} `:`${A.gutter} `:" ",u=[t.dim(Yt(r,"top",[[2," Base "]]))];for(let l=0;l<T.length;l++){let d=l===e.row,h=T[l].padEnd(10);u.push(Je(t,`${st({kind:"slot",slot:l},`${c(d)}${d?t.bold(h):h}`)}${a(l)}`,r))}u.push(t.dim(Yt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]])));for(let l=T.length;l<br;l++){let d=l===e.row,h=pn[l-T.length].padEnd(10),m=st({kind:"slot",slot:l+(e.col===1?8:0)},`${c(d)}${d?t.bold(h):h}`);u.push(Je(t,`${m}${a(l)}${a(l+8)}`,r))}u.push(t.dim(Yt(r,"bottom")));let f=Oc(t,e,n-u.length,r);return[...u,...Array.from({length:Math.max(0,n-u.length-f.length)},()=>""),...f]}function t4(t,e,n){let r=ie(e.list),i=[` ${t.dim("Seeds")}`];po.forEach((o,s)=>{let a=s===e.field,c=e.seeds[o.key],u=Array.from({length:Rg},(b,$)=>{let k=o.min+(o.max-o.min)*$/(Rg-1);return vM[o.key](pi({...e.seeds,[o.key]:k}))}),f=xc(t,u,yo(c,o.min,o.max,Rg),a),l=`${c.toFixed(o.digits)}${o.wraps?"°":""}`.padStart(6),d=vM[o.key](r),h=a?t.color?`${t.fg(r.cursor)}${A.gutter}${wt} `:`${A.gutter} `:" ",m=o.label.padEnd(17),p={kind:"field",field:s};i.push(`${st(p,`${h}${a?t.bold(m):m}`)}${st({kind:"seed",field:s},f)}${st(p,` ${l} ${t.color?`${t.fg(d)}${A.swatch}${wt} `:""}${t.dim(d)}`)}`)}),i.push("");for(let o of Et("Seven seeds grow all twenty colors, each accent on the hue its ANSI role reads as — whatever the seeds, they pass the gate. enter moves on to tune each slot, and the seeds stay behind.",ko-4))i.push(` ${t.dim(o)}`);return i.push(""),[...i,...Oc(t,e,n-i.length,ko)]}function xM(t,e,n,r,i,o){let s=Vt.indexOf(Ji(i)),a=Vt.map((f,l)=>st({kind:"scene",scene:l},l!==s?t.dim(f.name):qe(t,f.name))).join(" "),c=[Pt(a,t.dim("⇧←→"),n)],u=`${t.bg(e.background)}${t.fg(e.foreground)}`;for(let f of Ji(i).lines){let l=ds(f,n-2);if(!l)continue;if(c.length>=r)break;let d=t.color?l.map(([h,m])=>`${hf(t,e,m,XE(o,m))}${h}${me}${u}`).join(""):l.map(([h])=>h).join("");c.push(`${u} ${tt(d,n-2)} ${t.color?me:""}`)}return c}var e4=["Bk","Rd","Gr","Ye","Bl","Ma","Cy","Wh"];function SM(t,e,n,r,i,o,s){let a=(i-o)/(s-1),c=OM(e),u=ie(n),f=(l)=>Math.min(s-1,Math.max(0,Math.round((i-r(xt(l)))/a)));return Array.from({length:s},(l,d)=>{let m=`${(d%2===0?(i-a*d).toFixed(i>=1?1:2).replace(/^0(?=\.\d\d)/,""):"").padStart(4)} ${t.dim(d%2===0?"┤":"│")}`;for(let p=0;p<8;p++){let b=[" "," "," "," "," "],$=u.ansi[p],k=u.ansi[p+8],v=f($)===d,S=f(k)===d,x=(I)=>{if(I===1&&v)return t.color?`${t.fg($)}${A.on}`:A.on;if(I===3&&S)return t.color?`${t.fg(k)}${A.off}`:A.off;return b[I]},M=[0,1,2,3,4].map(x).join("");m+=c.has(p)?t.color?`${t.bg(u.selection)}${M}${ae}`:M:`${M}${t.color?wt:""}`}return m})}function OM(t){let e=t.mode==="tune"?t.scoped():[t.slot()];return new Set(e.filter((n)=>n>=T.length).map((n)=>(n-T.length)%8))}function n4(t,e){let n=OM(e);return` ${e4.map((r,i)=>n.has(i)?t.bold(` ${r} `):t.dim(` ${r} `)).join("")}`}function r4(t,e){let n=ie(e),r=Array.from({length:40},(o,s)=>{let a=s*9+4.5,c=-1,u=999;for(let[f,l]of Object.entries(Oe)){let d=Pe(a,l.center);if(d<=l.width&&d<u)u=d,c=Number(f)}return c<0?" ":t.color?`${t.fg(n.ansi[c])}─`:"─"}).join(""),i=(o,s)=>{let a=Array.from({length:40},()=>" ");for(let c of Object.keys(Oe).map(Number)){let u=n.ansi[c+o],f=Math.min(39,Math.round(xt(u).h/9));a[f]=t.color?`${t.fg(u)}${s}${wt}`:s}return` ${a.join("")}`};return[`${t.bold("Hue")} ${t.dim("0° 90° 180° 270° 360°")}`,`${t.dim("bands")} ${r}${t.color?wt:""}`,i(0,A.on),i(8,A.off)]}function i4(t,e,n){let r=wr(n,e.signature,e.waive),i=(a)=>Ge(T.length+a).name,o=(a)=>xt(n[T.length+a]).h.toFixed(0),s=[...Vn(r).filter(({gap:a})=>a>25).map(({normal:a,gap:c})=>`${i(a)} ${o(a)}° → bright ${o(a+8)}° · ${c.toFixed(0)}° apart · ≤ 25°`),...Pr(r).map(({slot:a,over:c})=>{let u=Oe[bn(a)];return`${i(a)} ${o(a)}° · ${c.toFixed(0)}° outside ${u.name} ${u.center}±${u.width}°`}),...Zn(r).map(([a,c])=>`${i(a)} and ${i(c).toLowerCase()} read as one color`)];return s.length>0?s.map((a)=>`${t.bold(A.miss)} ${a}`):[t.dim(`${A.ok} Every accent keeps its role and its bright`)]}function EM(t,e,n,r,i){let o=e.shown(),s=Math.max(...o.slice(T.length).map((u)=>xt(u).c)),a=Math.max(0.2,Math.ceil(s/0.05)*0.05),c=[Pt(t.bold("Lightness"),t.dim("● normal ○ bright"),n),...SM(t,e,o,(u)=>u.l,1,0.3,8),n4(t,e)];if(i)c.push("",t.bold("Chroma"),...SM(t,e,o,(u)=>u.c,a,0,5),"",...r4(t,o));return[...c,...i4(t,e,o)].slice(0,r)}function o4(t,e,n){let r=(i,o)=>st({kind:"view",view:o},e.view!==o?t.dim(` ${i} `):qe(t,i));return Pt(`${r("Slot","slot")}${r("Relations","relations")}`,jt("g",`${t.bold("g")} ${t.dim("switch")}`),n)}function s4(t,e,n,r){let i=e.slot(),o=e.list[i],s=e.lch[i],a=e.start[i],{name:c,about:u}=Ge(i),f=e.signature.includes(Bn[i]),l=Math.max(8,Math.min(64,n-12));if(e.view==="relations"&&e.mode!=="tune")return[o4(t,e,n),"",...EM(t,e,n,r-2,!0)];let d=i>=T.length?t.dim("Uses underlined below"):f?t.dim("◆ signature"):"",h=[Pt(`${t.bold(c)} ${t.dim(u)}`,e.view==="relations"?"":d,n),""],m=t.color?`${t.fg(o)}${"█".repeat(8)}${wt} `:"",p=e.typing!==void 0?`${t.bold(`${e.typing}▏`)}`:void 0,[b,$,k]=ot(o);if(h.push(`${m}${p??X5(t,s)}`),h.push(`${m}${t.dim(`${o} · rgb ${b} ${$} ${k}`)}`),e.view!=="relations"){let M=t.color?`${t.fg(a)}${A.swatch}${wt} `:"";h.push(`${m}${a!==o?t.dim(`was ${M}${Z5(e.lchOf(a)).slice(6)} · ${a}`):t.dim("as it opened")}`)}h.push(""),h.push(...Y5(t,e,s,l),uf(t,e,l));let v=V5(t,e);if(v.length>0)h.push(...v);if(e.view==="relations")return h.push("",...EM(t,e,n,r-h.length-1,!1)),h;h.push("");for(let M of ff(e,i,s))Et(M.text,n-2).forEach((I,L)=>{h.push(`${L===0?Tu(t,M.ok):" "} ${M.ok===!1?I:t.dim(I)}`)});let S=lf(e,i);if(S)h.push(t.dim(` ${S}`));let x=r-h.length-1;if(x>=3)h.push("",...xM(t,ie(e.shown()),n,x,e.scene,i));return h}function a4(t,e,n,r){return[Pt(`${t.bold("Sample")} ${t.dim("what the seeds grow")}`,"",n),"",...xM(t,ie(e.list),n,r-2,e.scene,-1)]}var c4=[["Slots","↑↓ slot · ←→ normal or bright · home end · pgup the base colors · pgdn the ANSI ones · n N the next and last miss"],["Tune","enter or tab opens the picker over the list, under the slot · ↑↓ lightness · ←→ chroma · ⇧←→ hue by 5, , . by 1 · pgup pgdn lightness ×5 · tab ◐ contrast · home end the ends · 0-9 jump · enter keeps · esc undoes · a click outside it keeps"],["Contrast","◐ moves lightness until the ratio to the color it is read against changes · home the gate’s floor · 1-9 that ratio"],["Chroma","stops at the sRGB edge · what lightness or hue takes away comes back while you tune, where it fits again (○)"],["Scope","a while tuning: this, pair, normals, brights or accents — the slots in it move by the same step, each keeping its own color"],["Relations","g shows the lightness, chroma and hue of every ANSI color at once, and the relations the gate checks"],["Sample","⇧←→ another tab · the slot under the cursor is underlined where it is used · w dims the rest"],["Inspect","i, or a click on the sample, finds the slots a spot uses · ←→↑↓ move · enter goes to the slot · esc leaves"],["Link","l makes a bright follow its normal — tuning the normal moves it, tuning the bright alone unlinks it · = snaps it to its normal"],["Filter","m only the slots that changed · n and N walk the gate misses listed under the slots"],["Export","x copies the share code, an add command or the palette file · I takes colors from another palette or a share code"],["Type","# then #rrggbb, rgb(r g b) or oklch(l c h) — a paste works too"],["Slot","c copies · v pastes · r puts it back as it opened, R all of them · = the bright follows its normal · * marks it a signature color"],["Palette","f moves the colors the gate misses · o takes another palette’s colors"],["Gate","✗ marks every slot whose own checks miss, and each miss names its slots"],["History","u undo · ctrl+r redo"],["Pictures","p finds one on the boorus, tried on in these colors · b shows or hides it behind the editor · drop a picture on the window, or paste one, its path or its link · ctrl+v takes the clipboard’s"],["Compare","space shows the colors you started from, on the terminal too"],["Save","s saves · esc cancels, asking first when something changed"]];function u4(t,e,n){let r=[` ${t.bold("Help")}`,""];for(let[i,o]of c4.filter(([s])=>s!=="Pictures"||e.options.find))Et(o,n-16).forEach((s,a)=>{r.push(` ${t.bold((a===0?i:"").padEnd(11))} ${s}`)});return r}function l4(t,e,n,r){let i=e.choices(),o=e.options.palettes?.length??0,s=e.filter?`${t.bold(e.filter)}▏`:t.dim("type to filter"),a=[Pt(` ${t.bold("Take colors from")} ${s}`,t.dim(`${i.length}/${o}`),n),""],c=r-2,u=Math.max(0,Math.min(e.pick-Math.floor(c/2),i.length-c)),f=Math.min(40,Math.max(12,...i.map((l)=>G(l.name))));if(i.slice(u,u+c).forEach((l,d)=>{let h=u+d===e.pick,m=l.colors,p=t.color?`${t.bg(m.background)} ${[...m.ansi].map((k)=>`${t.fg(k)}${A.swatch}`).join("")} ${t.fg(m.foreground)}Aa ${ae}`:"",b=h?"▌ ":" ",$=l.name.padEnd(f);a.push(st({kind:"choice",index:u+d},`${b}${h?t.bold($):$} ${p}`))}),i.length===0)a.push(` ${t.dim(`No palettes match '${e.filter}'`)}`);return a}var f4=new Set(["enter","s","?","g","a","i"]);function MM(t,e,n){let r="EDIT",i="",o=[],s="";if(e.quitting)r="EDIT (QUIT)",i=e.added>0?`Discard changes and ${e.added} ${e.added===1?"picture":"pictures"}?`:"Discard changes?",o=[["y","discard"],["n","keep editing"]];else if(e.typing!==void 0)r="EDIT (TYPE)",i=t.dim("#rrggbb, rgb(r g b) or oklch(l c h)"),o=[["enter","set"],["ctrl+u","clear"]],s="esc back";else if(e.overlay==="keys")r="HELP",s="any key closes";else if(e.overlay==="open")r="EDIT (OPEN)",o=[["↑↓","palette"],["a-z","filter"],["enter","take its colors"]],s="esc close";else if(e.menu)r=e.menu==="export"?"EDIT (EXPORT)":"EDIT (IMPORT)",o=[["↑↓","item"],["enter","choose"]],s="esc close";else if(e.compare)r="EDIT (BEFORE)",i="The colors you started from",o=[["space","back to yours"]],s="esc back";else if(e.mode==="seeds")r="EDIT (SEEDS)",o=[["↑↓","seed"],["←→","step"],["⇧←→","×5"],["enter","tune the slots"],["o","open a palette"],["p","picture"],["?","keys"]],s="esc cancel";else if(e.mode==="tune")r="EDIT (TUNE)",o=[["↑↓","L"],["←→",e.channel===re?"ratio":"C"],["⇧←→","H"],["tab","◐"],...e.slot()>=T.length?[["a","scope"]]:[],[e.channel===re?"1-9":"0-9",e.channel===re?"ratio":"jump"],["#","type"],["enter","keep"]],s="esc undo";else if(e.inspect)r="EDIT (INSPECT)",o=[["←→↑↓","spot"],["⇧←→","tab"],["enter","its slot"],["i","leave"]],s="esc leave";else o=[["↑↓","slot"],["←→","normal or bright"],["enter","tune"],["i","inspect"],["l","link"],["m","changed"],["g",e.view==="slot"?"relations":"slot"],...e.misses().size>0?[["n","next miss"]]:[],["#","type"],["f","fix"],["p","picture"],["b","picture layer"],["x","export"],["u","undo"],["s","save"],["?","keys"]],s="esc cancel";if(!e.options.find)o=o.filter(([u])=>u!=="p"&&u!=="b");if(!e.options.exports||!e.roomy)o=o.filter(([u])=>u!=="x");if(!e.roomy)o=o.filter(([u])=>u!=="i"&&u!=="m");if(e.notice)i=t.warn(e.notice),o=[];let a=`${qe(t,r)}${t.color?" ":" "}`,c=s?jt(s.split(" ")[0],`${t.bold(s.split(" ")[0])} ${t.dim(s.split(" ").slice(1).join(" "))}`):"";for(;;){let u=[i,...o.map(([d,h])=>jt(d,`${t.bold(d)} ${t.dim(h)}`))].filter(Boolean),f=`${a}${u.join(" ")}`,l=-1;if(o.forEach(([d],h)=>{if(h>0&&!f4.has(d))l=h}),G(f)+G(s)+3<=n||l<0)return s?Pt(f,c,n):tt(f,n);o=o.filter((d,h)=>h!==l)}}function d4(t,e,n,r,i={}){let o=xe(r);if(e<kM||n<yM){let p=[o.bold("ttheme palette editor"),`Needs ${kM}×${yM} — now ${e}×${n}`,o.dim("esc cancels")];return{lines:Array.from({length:n},(b,$)=>tt(p[$]??"",e)),art:void 0}}if(t.viewport(e,n),!t.overlay&&t.mode!=="seeds"&&t.view==="slot"){let p=$M(t,e,n,r,i);if(p)return{lines:[...p.lines,MM(o,t,e)],art:p.art}}let s=t.failing().length,a=s===0?"✓ Passes the gate":`✗ ${s} ${s===1?"miss":"misses"} in the gate`,c=t.pictures>0?o.dim(`▣ ${t.pictures} ${t.pictures===1?"picture":"pictures"} `):"",u=t.resettable()?`${jt("R",o.dim("Reset"))} `:"",f=`${t.dirty()?`${o.warn(A.on)} unsaved `:""}${u}${c}${o.dim(a)}`,l=`${o.accent(A.current)} ${o.bold(t.options.title)} ${o.dim(`· ${t.options.name}`)}`,d=n-4,h;if(t.overlay==="keys")h=u4(o,t,e);else if(t.overlay==="open")h=l4(o,t,e,d);else{let p=e-ko-2,b=t.mode==="seeds"?t4(o,t,d):Q5(o,t,d),$=t.mode==="seeds"?a4(o,t,p,d):s4(o,t,p,d);h=Array.from({length:d},(k,v)=>`${tt(b[v]??"",ko)}${o.dim("│")} ${tt($[v]??"",p)}`)}let m=[Pt(l,f,e),""];for(let p=0;p<d;p++)m.push(tt(h[p]??"",e));return m.push("",MM(o,t,e)),{lines:m,art:void 0}}var h4=new Set(["tab","a","#","l","enter","esc"]),m4=new Set(["picker","plane","bar","channel","format","scope","open","slot"]);function p4(t){if(!t)return!0;return t.kind==="key"?!h4.has(t.key):!m4.has(t.kind)}function g4(t,e,n){if(n.action==="wheel"){if(!n.sideways)t.scroll(n.wheel);return}if((n.action==="press"||n.action==="drag")&&n.button!=="left")return;if(n.action==="press"&&t.overlay==="keys"){t.press("esc");return}let r=e?.target;if(n.action==="press"&&t.mode==="tune"&&t.roomy&&!t.overlay&&p4(r))t.dismiss();if(!e||!r)return;let i=e.width>1?(e.exact.x-0.5)/(e.width-1):0;if(n.action==="release"){if(!e.inside)return;if(r.kind==="key")t.press(r.key);else if(r.kind==="entry")t.choose(r.index);else if(n.count===2&&r.kind==="slot"&&t.mode==="list")t.press("enter");else if(n.count===2&&r.kind==="choice"&&t.overlay==="open")t.press("enter");return}if(r.kind==="plane"){let o=dM(r.row+e.exact.y,r.rows,e.exact.x,e.width,t.lch[t.slot()].h);t.plane(o.lightness,o.chroma)}else if(r.kind==="bar")t.slide(r.channel,i);else if(r.kind==="seed")t.sow(r.field,i);else if(n.action!=="press")return;else if(r.kind==="slot")t.select(r.slot);else if(r.kind==="open")t.openSlot(r.slot);else if(r.kind==="run")t.point(r.spot);else if(r.kind==="entry")t.entry=r.index;else if(r.kind==="format")t.format=r.format;else if(r.kind==="channel")t.grip(r.channel);else if(r.kind==="scope")t.scopeTo(r.scope);else if(r.kind==="choice"){if(t.overlay==="open")t.pick=r.index}else if(t.typing===void 0&&!t.overlay&&!t.quitting){if(r.kind==="field"&&t.mode==="seeds")t.field=r.field;else if(r.kind==="view"&&t.mode!=="seeds")t.view=r.view;else if(r.kind==="scene")t.scene=r.scene}}var b4=[Nl,Ln,li,mr];async function PM(t,e){let n=new mg(t),r=e.backdrop,i=e.layer,o=(a)=>n.typing===void 0&&Xl(a),s=e.hosted?{modes:[mr,...fi()],assume:[Ln,li],burst:o}:{modes:[...b4,...fi()],burst:o};return di(s,async(a)=>{let c=!1,u=!1,f=new Map,l=new Rp,d=await a.ask(`${im(un,"")}${fi().length>0?sS:""}\x1B[c`,(S)=>{if(S.kind==="color"){f.set(S.code,S.value);return}return l.see(S)},1000);if(d?.cell)a.pixels(d.cell);let h=Sy(f),m=h.map((S,x)=>S??n.start[x]),[p,b]=m;if(!h[3])m[3]=Mi(p,b,"selection");let $=new ao({write:(S)=>a.write(S),view:()=>{if(c)return;let{lines:S,art:x}=d4(n,a.cols,a.rows,e.color,{behind:n.pic&&r?.laid===!0,art:i?.ready===!0,chrome:m});return{lines:S,after:()=>`${(n.pic?r?.draw(n.shown(),n.signature,n.waive,a.cols,a.rows,wM(a.cols,a.rows)):r?.clear())??""}${i?.draw(x)??""}`}}}),k=(S=!1)=>{if(S)$.soon();else $.request()},v=async(S)=>{let x=t.find;if(!x)return;c=!0,a.write(`${r?.clear()??""}${i?.clear()??""}`);try{n.found(await x(n.edited(),S))}catch(M){n.notice=M instanceof Error?M.message:String(M)}if(u)return;c=!1,r?.load(),$.reset(Xi),k()};if(a.write(Xi),a.onResize(()=>{r?.resized(),a.write(i?.clear()??""),$.reset(Xi),$.request()}),r)r.load(),r.ready=()=>$.request();if(r||i){let S=new ic;a.ask(Rl,(x)=>S.see(x),1000).then((x)=>{if(x)r?.measured(x),i?.measured(x);$.request()})}k();try{let{edited:S}=await a.loop((x)=>{if(c)return;if(x.kind==="paste")n.paste(x.text);else if(x.kind==="key")n.press(x.key);else if(x.kind==="mouse")g4(n,$.point(x),x);if(n.copied!==void 0)a.write(`\x1B]52;c;${Buffer.from(n.copied).toString("base64")}\x07`),n.copied=void 0;if(n.result)return{edited:n.result==="saved"?n.edited():void 0};let M=n.wants;if(M)n.wants=void 0,v(M.start);return},()=>{if(!c)k(!0)});return S}finally{u=!0,$.stop(),a.write(`${r?.close()??""}${i?.clear()??""}`)}})}import{spawn as N4}from"node:child_process";import{createHash as WM}from"node:crypto";import{existsSync as Fc,mkdirSync as T4,mkdtempSync as H4,readFileSync as F4,rmSync as vf}from"node:fs";import{homedir as L4,tmpdir as C4}from"node:os";import{basename as j4,dirname as _4,join as Wn}from"node:path";import{setTimeout as G4}from"node:timers/promises";import{pathToFileURL as AM}from"node:url";import{existsSync as w4,readFileSync as $4,statSync as k4}from"node:fs";import{join as IM}from"node:path";function y4(t,e){try{return JSON.parse($4(IM(on(t),e),"utf8"))}catch{return{}}}function v4(t,e,n){C(IM(on(t),e),`${JSON.stringify(n)}
722
+ `)}var S4=604800000;class Ag{caches=new Map;unsaved=new Set;owners=new Map;crediting=new Map;inflight=new Map;asking=new Map;home;catalog;entry;signal;credited;constructor(t){this.home=t.home,this.catalog=t.catalog,this.entry=t.entry,this.signal=t.signal,this.credited=t.credited}matesOf(t,e){return this.owners.get(t.key)?.get(e)??[]}async transparent(t,e){let n=this.keep(t,"probes.json"),r=n[e.id];if(r!==void 0)return r;try{let i=await ma(t,e,this.signal),o=Hi(t,e),s=(i===void 0?await D0(o.site,o.url,this.signal):i)?.alpha===!0;return n[e.id]=s,this.unsaved.add(`${t.key}/probes.json`),s}catch{return!1}}save(){for(let t of this.unsaved){let[e,n]=t.split("/"),r=Z.find((i)=>i.key===e);if(r)v4(r,n,this.keep(r,n))}this.unsaved.clear()}owned(t,e,n){this.keep(t,"owners.json")[e]=n,this.unsaved.add(`${t.key}/owners.json`)}credit(t,e){let{site:n,post:r}=t;if(!fa(n,r))return Promise.resolve();let i=Ae(n,r.id),o=this.crediting.get(i);if(!o)o=this.credits(t,e).finally(()=>this.crediting.delete(i)),this.crediting.set(i,o);return o}links(t){let e=this.keep(Ot,"profiles.json");return Object.fromEntries(t.flatMap((n)=>{let r=e[n]?.urls??[];return r.length>0?[[n,r]]:[]}))}profile(t,e){return this.credit(t,e).then(()=>this.profiles(t.post.named.artist,e))}async mateOwners(t){let e=this.owners.get(t.key);if(e)return e;let n=j$(this.home),r=this.keep(t,"owners.json"),i=this.catalog.palettes.flatMap((c)=>{let u=n.get(c.name);return c.group===this.entry.group&&c.name!==this.entry.name&&u?.site===t.key?[{name:c.name,id:u.id}]:[]}),o=await Promise.all(i.map(async(c)=>{let u=r[c.id];if(u!==void 0)return{...c,owner:u};try{return{...c,owner:(await Fi(t,c.id,this.signal))?.owner??""}}catch{return}})),s=new Map;for(let c of o)if(c)r[c.id]=c.owner,s.set(c.name,c.owner);this.unsaved.add(`${t.key}/owners.json`);let a=_0(s);return this.owners.set(t.key,a),a}async cached(t,e,n,r){if(w4(e))return k4(e).size;let i=this.inflight.get(e);if(i)return i;let o=(async()=>{let s=await cu(t,n,this.signal,r);return C(e,s),s.length})();this.inflight.set(e,o);try{return await o}finally{this.inflight.delete(e)}}keep(t,e){let n=`${t.key}/${e}`,r=this.caches.get(n);if(!r)r=y4(t,e),this.caches.set(n,r);return r}async profiles(t,e){let n=this.keep(Ot,"profiles.json"),r=Date.now(),i=t.filter((o)=>!this.asking.has(o)&&r-(n[o]?.at??0)>=S4);if(i.length>0){let o=uu(i,e).then((s)=>{for(let a of i)n[a]={at:Date.now(),urls:s.get(a)??[]};this.unsaved.add(`${Ot.key}/profiles.json`),this.credited()},()=>{}).finally(()=>{for(let s of i)this.asking.delete(s)});for(let s of i)this.asking.set(s,o)}await Promise.all(t.flatMap((o)=>this.asking.get(o)??[]))}async credits({site:t,post:e},n){let r=this.keep(t,"credits.json"),i=r[e.id];if(!i){try{i=await la(t,e.id,n)}catch{return}if(!i?.owner)return;r[e.id]=i,this.unsaved.add(`${t.key}/credits.json`)}Wo(e,i),this.credited()}}import{rmSync as E4}from"node:fs";import{join as M4}from"node:path";var qs=2147483645,Hc=2147483646,RM=-1073741827,x4=-1073741828,O4=16,P4=0.4,I4=3221225472,R4=256;function A4(t){let e=/^(\d+) (\d+)$/.exec(t??"");return e&&(Number(e[1])>0||Number(e[2])>0)?{x:Number(e[1]),y:Number(e[2])}:void 0}var Ng=A4(process.env.TTHEME_BG_MARGIN);class Tg{screen;gliding;sent=new Map;placed=new Map;covered="";viewed="";bands=Vu(process.env);files=Zu(process.env);moves=Oy(process.env);layers=ms(process.env);wipes=Py(process.env);views=Vi(process.env);bandFiles=new Map;nextBand=I4;view;grid;background;renders;scratch;signal;write;constructor(t){this.view=t.view,this.grid=t.grid,this.background=t.background,this.renders=t.renders,this.scratch=t.scratch,this.signal=t.signal,this.write=t.write,this.screen=new ao({write:(e)=>this.write(e),view:()=>this.frame(),beat:()=>{this.view.beat++}})}draw(){if(!this.signal.aborted)this.screen.request()}soon(){if(!this.signal.aborted)this.screen.soon()}flush(){if(!this.signal.aborted)this.screen.now()}point(t){return this.screen.point(t)}drop(){this.screen.drop()}frame(){if(this.signal.aborted)return;let{cols:t,rows:e,cell:n}=this.grid(),r=qp(this.view,t,e);return this.view.loaderFrom=r.loader?this.view.loaderFrom??this.view.beat:void 0,{lines:r.lines,zones:r.zones,after:(i)=>this.images(r.images,i,n),...this.view.mode==="grid"&&this.view.editing!==void 0?{cursor:this.caret()}:{},ticking:r.tick}}images(t,e,n){let r="",i=new Set,o;for(let s of t){if(this.views&&s.id>=Up){o=s;continue}let a=this.bands?this.banded(s):s;if(!a)continue;if(this.wipes&&[...e].some((u)=>u>=a.row&&u<a.row+a.rows))this.placed.delete(a.id);if(i.add(a.id),this.sent.get(a.id)!==a.path){let u=Wl(a,this.files);if(u===void 0)continue;r+=u,this.sent.set(a.id,a.path),this.placed.delete(a.id)}let c=`${a.row};${a.col};${a.cols};${a.rows};${a.crop};${a.z}`;if(this.placed.get(a.id)!==c){if(!this.moves&&this.placed.has(a.id))r+=Kp(a.id);r+=CS(a,n),this.placed.set(a.id,c)}}for(let s of this.sent.keys())if(!i.has(s))r+=gc(s),this.sent.delete(s),this.placed.delete(s);return r+(this.views?this.backdrop(o):this.cover())}glide(){if(this.bands)this.prebake();if(this.gliding)return;let{cols:t,rows:e}=this.grid(),n=pr(t,e).height,r=()=>{let i=this.view,o=i.top*vt.height,s=o-i.scroll;if(s===0||i.mode!=="grid"){i.scroll=o;let a=this.gliding!==void 0;if(this.gliding=void 0,a)this.draw();return}if(Math.abs(s)>2*n)i.scroll=o-Math.sign(s)*n,s=o-i.scroll;i.scroll+=Math.sign(s)*Math.max(1,Math.round(Math.abs(s)*P4)),this.draw(),this.gliding=setTimeout(r,O4)};r()}snap(){clearTimeout(this.gliding),this.gliding=void 0,this.view.scroll=this.view.top*vt.height}resized(){this.screen.reset()}stop(){this.screen.stop(),clearTimeout(this.gliding)}prebake(){let t=this.view,{cols:e,rows:n}=this.grid();for(let r of qp({...t,scroll:t.top*vt.height},e,n).images)if(r.crop!==void 0)this.band(r.path,r.crop,r.rows)}cover(){let{cols:t,rows:e}=this.grid(),n=`${t};${e}`;if(!this.layers||this.covered===n)return"";let r="";if(!this.covered){let i=Buffer.from(ot(this.background)).toString("base64");if(r+=`\x1B_Ga=t,f=24,s=1,v=1,i=${qs},q=2;${i}\x1B\\`,Ng)r+=`\x1B_Ga=t,f=32,s=1,v=1,i=${Hc},q=2;AAAAAA==\x1B\\\x1B[H\x1B_Ga=p,i=${Hc},p=${Hc},c=1,r=1,C=1,z=${x4},q=2\x1B\\`}else if(!this.moves)r+=Kp(qs);if(this.covered=n,Ng){let{x:i,y:o}=Ng;return`${r}\x1B_Ga=p,i=${qs},p=${qs},P=${Hc},Q=${Hc},H=${-i},V=${-o},c=${t+2*i},r=${e+2*o},C=1,z=${RM},q=2\x1B\\`}return`${r}\x1B[H\x1B_Ga=p,i=${qs},p=${qs},c=${t},r=${e},C=1,z=${RM},q=2\x1B\\`}backdrop(t){let{cols:e,rows:n,cell:r}=this.grid(),i=e*r.w,o=n*r.h,s=t?`${this.background}|${t.path}|1|${i}|${o}|${i}|${o}|0|0|1`:`${this.background}||1|${i}|${o}|0|0|0|0|5`;if(s===this.viewed)return"";return this.viewed=s,Zi(s)}caret(){return`\x1B[1;${Math.min(this.grid().cols,G(`⌕ ${this.view.editing??""}`)+1)}H`}banded(t){if(t.crop===void 0)return t;let e=this.band(t.path,t.crop,t.rows,!this.gliding);return e?.ready?{...t,id:e.id,path:e.path,crop:void 0}:void 0}band(t,e,n,r=!0){let i=`${t}|${e}|${n}`,o=this.bandFiles.get(i);if(o||!r)return o;let{cell:s}=this.grid(),a=this.nextBand++,c={id:a,path:M4(this.scratch,`band-${a}.png`),ready:!1};return this.bandFiles.set(i,c),this.renders.run({job:"band",from:t,to:c.path,y:e*s.h,height:n*s.h}).then(()=>{c.ready=!0,this.draw()}).catch(()=>{}),this.trimBands(),c}trimBands(){for(let[t,e]of this.bandFiles){if(this.bandFiles.size<=R4)return;if(e.ready&&!this.sent.has(e.id))this.bandFiles.delete(t),E4(e.path,{force:!0})}}}var Eo=[{name:"TTHEME_FIND_RATING",label:"Rating",about:"The ratings to list, each site read in its own words — space ticks one, and one stays ticked",choices:_o,multi:{read:Ti}},{name:"TTHEME_FIND_BLOCK",label:"Block",about:"Posts tagged with nudity or underwear are left out — space unticks one",choices:Ni,multi:{read:Uo,none:"none"}},{name:"TTHEME_FIND_POSTS",label:"Posts",about:"Every post of the character, or only the transparent cutouts",choices:["all","cutouts"]},{name:"TTHEME_FIND_SOLO",label:"Solo",about:"When on, only the posts known to show the character alone — checked as posts arrive, so the counts below leave it out",choices:["on","off"]},{name:"TTHEME_FIND_ORDER",label:"Order",about:"How posts are ranked: fit, by how well each makes a backdrop; newest; or score",choices:["fit","newest","score"]},{name:"TTHEME_FIND_SETS",label:"Sets",about:"One picture posted over and over, or held by another site too: fold it into one tile, or show each",choices:["fold","show"]},...Ws()?[{name:"TTHEME_FIND_REMOVE_BG",label:"Remove bg",about:"Cut the character out of an opaque picture you try on, with macOS Vision",choices:["on","off"]}]:[],{name:"TTHEME_FIND_MIN_SCORE",label:"Min score",about:"Posts scored at least this — danbooru, konachan and yande.re; zerochan keeps no score. ←→ steps, or type any number",choices:M0,entry:"number",advanced:!0},{name:"TTHEME_FIND_MIN_SIZE",label:"Min size",about:"The shorter side of a picture, in px — every site filters it. ←→ steps, or type any number",choices:x0,entry:"number",advanced:!0},{name:"TTHEME_FIND_SITES",label:"Sites",about:"The sites the all tab mixes — each keeps its own tab. Space ticks one, and one stays ticked",choices:Z.map((t)=>t.name),multi:{read:ca},advanced:!0},{name:"TTHEME_FIND_HIDE",label:"Hide",about:"Comics, monochrome, sketches or chibi, told by tag in every site's spelling — checked as posts arrive",choices:Hd,multi:{read:nu,none:"none"},advanced:!0},{name:"TTHEME_FIND_HIDE_TAGS",label:"Hide tags",about:"Posts with any of these tags are left out, spaced like cosplay multiple_girls — checked as posts arrive",choices:[],entry:"text",advanced:!0},{name:"TTHEME_FIND_PNG",label:"PNG only",about:"PNG originals only — danbooru counts it, the others are told by the file; zerochan only where danbooru holds it",choices:["off","on"],advanced:!0}];function NM(t,e){if(t.multi)return t.multi.read(e).join(" ")||t.multi.none;if(t.entry==="number")return/^\d+$/.test(e??"")&&Number(e)>0?String(Number(e)):"off";if(t.entry==="text")return ua(e).join(" ");return t.choices.find((n)=>n===e)??t.choices[0]}var B4=["fit","newest","score"];function Hg(t){return B4.find((e)=>e===t)??"fit"}var U4={left:-1,right:1,"shift-left":-10,"shift-right":10};function TM(t){if(process.env.SSH_CONNECTION||!/^(?:https?|file):/i.test(t))return;try{let e=N4(process.platform==="darwin"?"open":"xdg-open",[t],{stdio:"ignore",detached:!0});e.on("error",()=>{}),e.unref()}catch{}}function W4(t,e,n){if(e<0){if(t!=="fill")return Math.max(Ef,t+e);if(!n)return t;return Math.max(Ef,Math.max(100,n)+e+1)}return t==="fill"||t+e>n?"fill":t+e}function KM(t,e){return t.size===e.size&&t.at===e.at&&t.opacity===e.opacity}function K4(t,e){if(KM(t,e))return;return{...t.size!=="fill"?{size:t.size}:{},...t.at!==e.at?{position:qt[t.at-1]}:{},...t.opacity!==e.opacity?{opacity:t.opacity}:{}}}function HM(t,e){let n=X(t);return ge(t,e).flatMap((r,i)=>{let[,o,s]=/^([a-z.]+)_(\d+)$/.exec(r.key)??[],a=[...Z,_n].find((c)=>c.key===o);if(!a||!s)return[];return[{key:r.key,id:Number(s),ansi:a.ansi,...a===_n?{}:{page:a.pageUrl(Number(s))},up:i===0,from:Wn(n,r.original??r.fill)}]})}function z4(t){return t.length>=2&&!/^\d+$/.test(t)&&!t.includes("://")&&!/^[\w.]+:\d+$/.test(t)}var FM=12,D4=4,q4=150,J4=300,LM=12,Y4=2,V4=5000,Z4=150,X4="\x1B[?5522$p\x1B]72;t=q\x1B\\\x1B[c",Q4=4000,tj=8000,CM=/\.(png|jpe?g|gif|webp|heic|tiff?|bmp)$/i,ej=process.platform==="win32"?"alt+v":"ctrl+v",jM=process.platform==="darwin"?"ctrl+shift+cmd+4 copies a screenshot":"copy a picture first",nj=1280,rj=16,ij=qt.indexOf("top-right")+1,Ef=20,_M=2,GM=3,oj=/[\p{Script=Hangul}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Han}]/u,sj=8,aj=9;function Sf(t,e){return{key:t,groups:[],sources:[],queue:[],rounds:0,roundOf:new Map,last:new Map,kin:new Map,kindred:new Map,shapes:[],seen:new Set,same:new Map,checked:0,total:0,focus:0,top:0,searching:e,stage:"fetch",arrived:new Set}}function Lc(t){if(!(t instanceof Error))return String(t);if(t instanceof AggregateError&&t.errors[0])return Lc(t.errors[0]);if(t.cause)return Lc(t.cause);let e=t.code;if(typeof e==="string")return e;let n=(t.message||t.name).split(".")[0]??"";return n.length>56?`${n.slice(0,55)}…`:n}function Fg(t,e){return`${t}: ${Lc(e)}`}function BM(t){return t.width*t.height}function UM(t,e){return`${t}-${WM("sha1").update(e).digest("hex").slice(0,8)}`}class Lg{view;tone;session=new AbortController;cell={w:0,h:0};cols=process.stdout.columns||80;rows=process.stdout.rows||24;gen=0;pumping=0;boards=new Map;board;posts=new Map;thumbPath=new Map;looking=new Map;looked=new Map;matched=new Map;aheading=!1;pages=new Map;tab=0;values=new Map(Eo.map((t)=>[t.name,NM(t,process.env[t.name])]));direction=1;prefetching=0;related=new Map;pool=[];relating;thumbQueue=[];heldFiles=new Map;heldAsked=new Set;thumbing=0;clarity=new Map;tunedFiles=[];presenting=!1;again=!1;renders=new Ec;showing;thumbless=new Set;current;fetch;settle;suggestTimer;suggesting;countTimer;counting;terminal;grabber=new rg((t)=>this.write(t),(t)=>void this.got(t));noticeTimer;peekTimer;peeked;attaching;done;scratch=H4(Wn(C4(),"ttheme-find-"));home;catalog;entry;tagged;blurring;start;paint;kept;constructor(t,e,n,r,i){this.start=i,this.home=t,this.catalog=e,this.entry=n,this.tagged=new Set(e.palettes.flatMap((s)=>s.booru?[s.booru]:[])),this.tone=xn(n,n.signatureSlots),this.blurring=ti(t);let o={size:"fill",at:ij,opacity:this.tone.opacity};this.view={palette:n.name,tag:r,site:this.tabName,siteAnsi:this.tabAnsi,nextSite:this.nextTabName,preset:this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Hg(this.setting("TTHEME_FIND_ORDER")),solo:this.setting("TTHEME_FIND_SOLO")==="on",rating:Ti(this.setting("TTHEME_FIND_RATING")),block:Uo(this.setting("TTHEME_FIND_BLOCK")),sets:this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",narrow:this.narrowed(),enabled:ca(this.setting("TTHEME_FIND_SITES")),hide:nu(this.setting("TTHEME_FIND_HIDE")),hideTags:ua(this.setting("TTHEME_FIND_HIDE_TAGS")),advanced:!1,settings:Eo.map((s)=>({label:s.label,choices:[...s.choices],value:this.setting(s.name),default:NM(s,ja(s.name)),multi:s.multi&&{none:s.multi.none},about:s.about,entry:s.entry,advanced:s.advanced,cursor:0})),colors:{cursor:n.cursor,selection:n.selection,background:n.background,foreground:n.foreground,ansi:n.ansi},tiles:[],installed:[],held:HM(t,n.name),checked:0,total:0,searching:r!=="",stage:"fetch",sites:[],focus:0,top:0,scroll:0,beat:0,mode:"grid",help:!1,scene:Math.max(0,Vt.findIndex((s)=>s.name.toLowerCase()===process.env.TTHEME_SCENE)),details:!1,tune:{...o},untuned:o,coloring:tl(t),editing:r===""?"":void 0,chips:[]},this.paint=new Tg({view:this.view,grid:()=>({cols:this.cols,rows:this.rows,cell:this.cell}),background:n.background,renders:this.renders,scratch:this.scratch,signal:this.signal,write:(s)=>this.write(s)}),this.kept=new Ag({home:t,catalog:e,entry:n,signal:this.signal,credited:()=>{this.show(),this.inform(),this.paint.draw()}}),this.pool=this.selected(this.view),this.syncChips(),this.board=Sf(this.boardKey,r!==""),this.boards.set(this.board.key,this.board)}get signal(){return this.session.signal}get site(){return this.tab===0?void 0:Z[this.tab-1]}get sites(){return this.site?[this.site]:Z.filter((t)=>this.view.enabled.includes(t.name))}get tabName(){return this.site?.name??"all"}get tabAnsi(){return this.site?.ansi??D4}get nextTabName(){let t=(this.tab+1)%(Z.length+1);return t===0?"all":Z[t-1].name}frame(){return{w:this.cols*(this.cell.w||10),h:this.rows*(this.cell.h||20)}}setting(t){return this.values.get(t)}narrowed(){return Ld(this.setting("TTHEME_FIND_MIN_SCORE"),this.setting("TTHEME_FIND_MIN_SIZE"),this.setting("TTHEME_FIND_PNG"))}get boardKey(){return`${this.site?.key??"all"}|${this.view.preset}|${this.view.order}`}origPath(t,e,n){return Wn(on(t),"orig",`${e}.${n}`)}previewPath(t){let{url:e}=iu(t.site,t.post);return Wn(on(t.site),"thumb",`${UM(t.post.id,e)}.${Lr(e)}`)}tileOf(t,e){let{site:n,post:r}=t,i=Ae(n,r.id),o=En(r)??r;return{id:r.id,key:i,site:n.name,siteAnsi:n.ansi,width:o.width,height:o.height,reduced:o!==r,page:n===_n?"":n.pageUrl(r.id),artist:n===_n?aE(r.source):r.named.artist[0]??"",score:r.score,variants:e,mates:this.kept.matesOf(n,r.owner),thumb:this.thumbPath.get(i),missing:this.thumbless.has(i)}}show(){let t=this.view,e=this.board;if(t.tiles=e.groups.flatMap((n)=>n.open?n.posts.map((r)=>this.tileOf(r,0)):[this.tileOf(n.posts[0],n.posts.length)]),t.checked=e.checked,t.total=e.total,t.searching=e.searching,this.stageOf(e),t.note=e.note,t.focus=Math.max(0,Math.min(e.focus,t.tiles.length-1)),t.top=e.top,this.showing!==e)this.showing=e,this.paint.snap()}stageOf(t){let e=this.view;e.stage=t.stage,e.ranking=t.ranking,e.sites=this.sites.map((n)=>({name:n.name,arrived:t.arrived.has(n.name)}))}syncSite(){let t=this.view;t.site=this.tabName,t.siteAnsi=this.tabAnsi,t.nextSite=this.nextTabName}run(){let t=(e)=>this.view.editing===void 0&&Xl(e);return di({modes:[mr,...fi()],assume:[Ln,li],burst:t},async(e)=>{this.terminal=e,e.onResize(this.onResize),e.listen((i)=>{for(let o of i)this.inbound(o);this.paint.soon()}),e.write(Xi);let n=new Promise((i)=>{this.done=i}),r=setInterval(this.onClock,250);setTimeout(vu,0);try{let i=new ic,o=await e.ask(Rl,(s)=>i.see(s),1000);if(o){if(this.cell=o,this.holdThumbs(),this.view.tag)this.search(),this.relate(this.view.tag)}else this.view.searching=!1,this.view.error="This terminal does not report its cell size — find needs kitty graphics";if(!process.env.TMUX)await e.ask(X4,(s)=>s.kind==="attributes"?!0:void 0,500,!1);if(this.grabber.start(),e.hold(mS),this.start&&"paste"in this.start)this.pasted(this.start.paste);else if(this.start)this.fromClipboard();else this.peek();return this.paint.draw(),await e.until(n)}finally{this.session.abort(),this.grabber.stop(),this.attaching?.abort(),clearTimeout(this.noticeTimer),clearTimeout(this.peekTimer),this.fetch?.abort(),clearTimeout(this.settle),this.quietSuggest(),this.quietCount(),clearInterval(r),this.paint.stop(),e.write(`\x1B_Ga=d,d=A,q=2\x1B\\${Xi}`),this.kept.save(),this.renders.close(),vf(this.scratch,{recursive:!0,force:!0}),G0()}})}write(t){this.terminal?.write(t)}get saved(){return this.view.saved?.text}get installs(){return this.view.installed.length}finish(t){this.done?.(t===2&&this.saved?0:t)}inbound(t){if(t.kind==="key")this.key(t.key);else if(t.kind==="mouse")this.pointer(t);else if(t.kind==="paste")this.pasted(t.text);else if(t.kind==="mode"){if(t.mode===5522)this.grabber.clipboard=t.value!==0&&t.value!==4}else if(t.kind==="osc")if(t.code==="72"&&t.meta.t==="q")this.grabber.drops=!0;else this.grabber.take(t)}pasted(t){let e=this.view;if(e.editing!==void 0&&t.trim()!==""&&!this.picture(t)){e.editing+=t.replace(/[\r\n]+/g," "),this.suggest(),this.paint.draw();return}if(e.installing!==void 0||e.panel!==void 0||e.help)return;if(t.trim()===""){this.fromClipboard();return}this.attach(t)}picture(t){let e=t.trim();if(/^https?:\/\/\S+$/i.test(e))return!ru(e,this.site??Z[0]);return Gs(e).length>0}async got(t){if(t.kind==="error"){this.notice(t.message);return}if(t.kind==="text"){if(t.text.trim()===""){this.notice(`No picture on the clipboard — ${jM}`);return}this.pasted(t.text);return}await this.bring(()=>Vl(t.bytes,t.source))}notice(t,e=Q4){let n=this.view;n.error=t,clearTimeout(this.noticeTimer),this.noticeTimer=setTimeout(()=>{if(n.error===t)n.error=void 0,this.paint.draw()},e),this.paint.draw()}async peek(){let t=this.view,e;try{e=await dE()}catch{return}if(!e||e.stamp===this.peeked)return;if(this.peeked=e.stamp,!e.picture||t.installing!==void 0)return;t.hint=`Picture on the clipboard · ${ej} uses it`,clearTimeout(this.peekTimer),this.peekTimer=setTimeout(()=>{t.hint=void 0,this.paint.draw()},tj),this.paint.draw()}async fromClipboard(){let t=this.view;if(ng()){if(this.grabber.clipboard){this.grabber.ask();return}this.notice("Over SSH the clipboard is not here — drop the file");return}let e;try{e=await fE(Wn(this.scratch,`clipboard-${Date.now()}.png`))}catch(r){this.notice(`Could not read the clipboard: ${Lc(r)}`);return}if(clearTimeout(this.peekTimer),t.hint=void 0,"image"in e){await this.bring(async(r)=>({...await eg(e.image,r),source:"clipboard"}));return}let n=e.text.trim();if(!n){this.notice(`No picture on the clipboard — ${jM}`);return}if(this.picture(n)){await this.attach(n);return}if(t.editing===void 0)t.editing="";this.pasted(n)}async attach(t){let e=t.trim();if(/^https?:\/\//i.test(e)){let i=ru(e,this.site??Z[0]);if(i){await this.jump(i.site,i.id);return}}let[n,...r]=Gs(e).sort((i,o)=>Number(!CM.test(i))-Number(!CM.test(o)));if(!n){this.notice("Nothing to use in that — drop a picture, or paste one or its link");return}await this.bring((i)=>eg(n,i),r.length)}async bring(t,e=0){let n=this.view;this.attaching?.abort();let r=new AbortController;this.attaching=r,n.error=void 0,n.saved=void 0,n.note="Reading the picture…",this.paint.draw();let i;try{i=await t(AbortSignal.any([r.signal,this.signal]))}catch(d){if(!r.signal.aborted)n.note=void 0,this.notice(Lc(d),8000);return}if(r.signal.aborted)return;n.note=e>0?`The first picture of ${e+1} — drop one at a time to try the others`:void 0,this.quietSuggest(),n.editing=void 0,n.suggest=void 0,n.pick=void 0;let o=uE(i.bytes);cE(o,i.source);let s=this.origPath(_n,o,i.ext);C(s,i.bytes);let a=AM(s).href,c={id:o,file:a,width:i.width,height:i.height,ext:i.ext,preview:a,owner:"",score:0,rating:"s",md5:WM("md5").update(i.bytes).digest("hex"),source:i.source,tags:[],named:{artist:[],character:[],copyright:[]},solo:void 0,family:0,smaller:[]},u={site:_n,post:c},f=this.previewPath(u);C(f,i.bytes),++this.gen,this.current=void 0,n.shown=void 0;let l=Sf(`local|post:${o}`,!1);this.board=l,this.boards.set(l.key,l),this.single(l,u)}single(t,e){t.searching=!1,this.posts.set(Ae(e.site,e.post.id),e),t.groups=[{posts:[e],open:!1}],t.checked=1,t.total=1,this.thumbQueue.push(e),this.thumbs(),this.view.mode="try",this.show(),this.select(),this.paint.draw()}onClock=()=>{let t=this.sites.reduce((r,i)=>Sn(i)>Sn(r)?i:r),e=Math.ceil((Sn(t)-Date.now())/1000),n=e>0?e:void 0;if(n!==this.view.waiting)this.view.waiting=n,this.view.slow=t.name,this.paint.draw()};onResize=()=>{if(this.cols=process.stdout.columns||this.cols,this.rows=process.stdout.rows||this.rows,this.paint.resized(),this.holdThumbs(),this.scroll(),this.paint.snap(),this.view.mode==="try"&&this.current)this.reveal();this.pump(),this.paint.draw()};key(t){let e=this.view;if(t==="ctrl-c"){this.finish(2);return}if(e.installing!==void 0)return;if(t==="focus-in"){this.peek();return}if(t==="focus-out")return;if((t==="ctrl-v"||t==="alt-v")&&e.panel===void 0){this.fromClipboard();return}if(e.editing!==void 0){this.editKey(t);return}if(e.panel!==void 0){this.panelKey(t);return}if(e.help){if(t==="?"||t==="esc")e.help=!1,this.paint.draw();return}if(this.cols<mo.cols||this.rows<mo.rows){if(t==="esc")this.finish(2);return}if(t==="?"){e.help=!0,this.paint.draw();return}if(e.mode==="try"){this.tryKey(t);return}this.gridKey(t)}pointer(t){let e=this.view,n=this.paint.point(t),r=n?.target;if(e.installing!==void 0)return;if(t.action==="wheel"){if(!t.sideways)this.wheel(t.wheel);return}if((t.action==="press"||t.action==="drag")&&t.button!=="left")return;if(r?.kind==="track"&&n&&t.action!=="release")this.slide(r.field,n);else if(t.action==="press")this.pressed(r);else if(t.action==="release"&&n?.inside)this.released(r,t)}pressed(t){let e=this.view;if(e.help)this.paint.drop(),this.key("esc");else if(e.editing!==void 0||t===void 0)return;else if(e.panel!==void 0){if(t.kind==="setting"&&t.index<e.settings.length&&e.typing===void 0)e.panel=t.index,this.paint.draw()}else if(e.mode==="try")this.tryPoint(t);else if(t.kind==="tile")this.focus(t.index);else if(t.kind==="query")this.gridKey("/");else if(t.kind==="site")this.tab=t.tab,this.syncSite(),this.turn()}released(t,e){let n=this.view;if(t?.kind==="key")this.key(t.key);else if(t?.kind==="link"){if(!e.shift&&!e.alt&&!e.ctrl)TM(t.url)}else if(n.editing!==void 0){if(t?.kind==="suggest")n.pick=t.index,this.editKey("enter")}else if(n.panel!==void 0)this.panelPoint(t);else if(n.mode==="try"){if(t?.kind==="place"&&n.tuning)this.tuneKey(String(t.at))}else if(t?.kind==="tile"&&e.count===2)this.gridKey("enter");else if(t?.kind==="chip")this.toggle(t.index)}wheel(t){let e=this.view;if(e.help)return;if(e.editing!==void 0){if(e.suggest?.length)this.editKey(t<0?"up":"down")}else if(e.panel!==void 0){if(e.typing===void 0)this.panelKey(t<0?"up":"down")}else if(e.tuning)this.tuneKey(t<0?"up":"down");else if(e.mode==="try")this.tryKey(t<0?"left":"right");else this.focus(e.focus+t*pr(this.cols,this.rows).perRow)}panelPoint(t){let e=this.view;if(t?.kind!=="setting"&&t?.kind!=="choice")return;let n=e.settings[t.index];if(e.typing!==void 0){let r=e.settings[e.panel??0];if(r&&(t.index!==e.panel||t.kind==="setting"))this.typeKey(r,"enter");else return}if(t.kind==="setting"&&t.index===e.settings.length){e.panel=t.index,this.panelKey("enter");return}if(e.panel=t.index,t.kind==="choice"&&n){if(n.entry==="text"||t.choice===void 0){this.panelKey("enter");return}if(n.multi){n.cursor=Math.max(0,n.choices.indexOf(t.choice)),this.panelKey(" ");return}if(n.value!==t.choice)n.value=t.choice,this.recount()}this.paint.draw()}tryPoint(t){let e=this.view;if(t.kind==="scene")e.scene=t.scene,e.details=!1,this.paint.draw();else if(e.tuning&&t.kind==="field")e.tuning.field=t.field,this.paint.draw()}slide(t,e){let n=this.view,r=n.tuning;if(!r)return;let i=Math.min(1,Math.max(0,e.width>1?e.x/(e.width-1):0));if(r.field=t,t===0){let o=Math.max(100,r.fill),s=Ef+Math.round(i*(o-Ef+1));n.tune.size=i===1||r.fill>0&&s>=r.fill?"fill":Math.min(o,s)}else n.tune.opacity=Math.round(i*100)/100;this.retune()}gridKey(t){let e=this.view,{perRow:n,rowsVis:r}=pr(this.cols,this.rows),o={left:-1,right:1,up:-n,down:n,k:-n,j:n,pgup:-n*r,pgdn:n*r,home:-e.focus,end:e.tiles.length}[t];if(o!==void 0){this.focus(e.focus+o);return}if(/^[1-9]$/.test(t)){this.toggle(Number(t)-1);return}if(t==="enter"&&e.tiles[e.focus]){e.mode="try",e.error=void 0,this.select();return}if(t==="v"){this.fromClipboard();return}if(t==="c"){e.preset=e.preset==="cutouts"?"all":"cutouts",this.turn();return}if(t==="tab"||t==="shift-tab"){let s=Z.length+1;this.tab=(this.tab+(t==="tab"?1:s-1))%s,this.syncSite(),this.turn();return}if(t==="/"){e.editing="",this.paint.draw();return}if(t===" "){this.unfold();return}if(t==="o"||t==="O"){this.openPage(t==="O");return}if(t==="s"){e.panel=0,e.advanced=!1,this.recount(),this.paint.draw();return}if(t==="esc")this.finish(2)}panelKey(t){let e=this.view,n=e.panel??0,r=e.settings[n];if(e.typing!==void 0&&r){this.typeKey(r,t);return}let i=pc(e);if(t==="up"||t==="down"){let o=i.indexOf(n)+(t==="up"?-1:1);e.panel=i[(o+i.length)%i.length]??n,this.paint.draw();return}if(t==="a"||t==="enter"&&n===e.settings.length){e.advanced=!e.advanced,e.panel=pc(e)[0]??0,this.paint.draw();return}if(r?.entry&&(t==="enter"||r.entry==="number"&&/^[0-9]$/.test(t))){e.typing=t==="enter"?r.entry==="text"?r.value:"":t,this.paint.draw();return}if((t==="left"||t==="right")&&r&&r.entry!=="text"){let o=t==="left"?-1:1;if(r.multi)r.cursor=(r.cursor+o+r.choices.length)%r.choices.length;else r.value=US(r.choices,r.value,o),this.recount();this.paint.draw();return}if(t===" "&&r?.multi){let o=r.value.split(" "),s=r.choices.filter((c,u)=>u===r.cursor?!o.includes(c):o.includes(c)),a=r.multi.none;if(s.length>0||a!==void 0)r.value=s.length>0?s.join(" "):a,this.recount(),this.paint.draw();return}if(t==="esc"){e.settings.forEach((o,s)=>{o.value=this.setting(Eo[s]?.name??"")}),e.panel=void 0,e.advanced=!1,this.quietCount(),this.paint.draw();return}if(t==="enter"||t==="s"||t==="alt-c")e.panel=void 0,e.advanced=!1,this.quietCount(),this.adopt()}typeKey(t,e){let n=this.view,r=n.typing??"";if(e==="esc"){n.typing=void 0,this.paint.draw();return}if(e==="enter"||e==="up"||e==="down"){if(t.value=t.entry==="number"?Number(r)>0?String(Number(r)):"off":ua(r).join(" "),n.typing=void 0,this.recount(),e==="enter"){this.paint.draw();return}this.panelKey(e);return}let i=lo(r,e,(o)=>t.entry==="number"?/^[0-9]$/.test(o)&&r.length<Dp:/^[\x20-\x7e]$/.test(o));if(i!==void 0)n.typing=i,this.paint.draw()}quietCount(){clearTimeout(this.countTimer),this.counting?.abort(),this.counting=void 0}recount(){if(this.quietCount(),this.view.counts=void 0,!this.view.tag)return;let t=new AbortController;this.counting=t,this.countTimer=setTimeout(()=>void this.countPending(t),J4)}pending(){let t=(e)=>this.view.settings[Eo.findIndex((n)=>n.name===e)]?.value??this.setting(e);return{tag:this.view.tag,chosen:this.view.chosen,preset:t("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",order:Hg(t("TTHEME_FIND_ORDER")),rating:Ti(t("TTHEME_FIND_RATING")),narrow:Ld(t("TTHEME_FIND_MIN_SCORE"),t("TTHEME_FIND_MIN_SIZE"),t("TTHEME_FIND_PNG")),enabled:ca(t("TTHEME_FIND_SITES"))}}async countPending(t){let e=this.pending(),n=this.site?[this.site]:Z.filter((o)=>e.enabled.includes(o.name)),r=AbortSignal.any([this.signal,t.signal]),i=await Promise.all(n.map(async(o)=>{let s=this.query(o,e);if(!s)return{site:o.name,count:0};if(o.counts&&!o.counts(s.tags))return{site:o.name};try{let a=await Gd(o,s.tags,r);return{site:o.name,...Number.isFinite(a)?{count:a}:{}}}catch{return{site:o.name}}}));if(this.counting===t&&this.view.panel!==void 0)this.view.counts=i,this.paint.draw()}adopt(){let t=this.view,e=Eo.map((r)=>this.setting(r.name));t.settings.forEach((r,i)=>{let o=Eo[i];if(o)this.values.set(o.name,r.value)});let n=Eo.filter((r,i)=>this.setting(r.name)!==e[i]);if(n.length===0){this.paint.draw();return}this.save(n),t.rating=Ti(this.setting("TTHEME_FIND_RATING")),t.block=Uo(this.setting("TTHEME_FIND_BLOCK")),t.sets=this.setting("TTHEME_FIND_SETS")==="show"?"show":"fold",t.preset=this.setting("TTHEME_FIND_POSTS")==="all"?"all":"cutouts",t.order=Hg(this.setting("TTHEME_FIND_ORDER")),t.solo=this.setting("TTHEME_FIND_SOLO")==="on",t.narrow=this.narrowed(),t.enabled=ca(this.setting("TTHEME_FIND_SITES")),t.hide=nu(this.setting("TTHEME_FIND_HIDE")),t.hideTags=ua(this.setting("TTHEME_FIND_HIDE_TAGS")),this.boards.clear(),this.current=void 0,t.shown=void 0,t.mode="grid",this.search()}save(t){this.store(t.map((e)=>[e.name,this.setting(e.name)]))}store(t){let e=Wn(this.home,"ttheme","config.zsh");try{let n=Fc(e)?F4(e,"utf8"):"";return C(e,t.reduce((r,[i,o])=>el(r,i,o),n)),!0}catch(n){return this.view.error=n instanceof Error?n.message:String(n),!1}}editKey(t){let e=this.view,n=e.editing??"",r=e.suggest??[];if((t==="up"||t==="down")&&r.length>0){let s=((e.pick??r.length)+(t==="down"?1:r.length))%(r.length+1);e.pick=s===r.length?void 0:s,this.paint.draw();return}if(t==="esc"||t==="enter")this.quietSuggest();if(t==="esc"){if(e.editing=void 0,e.tag===""){this.finish(2);return}this.paint.draw();return}if(t==="enter"){let o=e.pick===void 0?void 0:r[e.pick],s=o?o.whole?o.value:n.replace(/\S*$/,o.value):n;if(e.editing=void 0,e.suggest=void 0,e.pick=void 0,s.trim()){this.commit(s.trim());return}if(e.tag===""){this.finish(2);return}this.paint.draw();return}let i=lo(n,t);if(i!==void 0)e.editing=i,this.suggest(),this.paint.draw()}quietSuggest(){clearTimeout(this.suggestTimer),this.suggesting?.abort(),this.suggesting=void 0}suggest(){this.quietSuggest();let t=this.view;t.pick=void 0;let e=t.editing??"",n=/\S*$/.exec(e)?.[0]??"",r=z4(n),i=tk(e,GM,this.tagged).map((c)=>({value:c.tag,count:0,alias:c.name,whole:!0}));if(!r&&i.length===0){t.suggest=void 0;return}let o=r?Lk(this.catalog.palettes,this.entry,n).map((c)=>({value:c.booru,count:0,palette:c.name})):[],s=[...new Map([...o.slice(0,GM),...i].map((c)=>[c.value,c])).values()];if(t.suggest=s.length>0?s:void 0,i.length>0&&oj.test(e))t.pick=s.findIndex((c)=>("whole"in c));if(!r)return;let a=new AbortController;this.suggesting=a,this.suggestTimer=setTimeout(async()=>{try{let c=await W0(n,AbortSignal.any([this.signal,a.signal]));if(this.suggesting===a&&t.editing!==void 0){let u=new Map(c.map((l)=>[l.value,l.count])),f=new Set(s.map((l)=>l.value));t.suggest=[...s.map((l)=>({...l,count:u.get(l.value)??0})),...c.filter((l)=>!f.has(l.value))].slice(0,sj),t.pick=t.pick!==void 0&&t.pick<s.length?t.pick:void 0,this.paint.draw()}}catch{}},q4)}async commit(t){let e=ru(t,this.site??Z[0]);if(e){await this.jump(e.site,e.id);return}if(this.picture(t)){await this.attach(t);return}this.view.tag=t,this.view.chosen=void 0,this.relate(t),this.boards.clear(),await this.search()}async jump(t,e){let n=++this.gen;this.tab=Z.indexOf(t)+1,this.syncSite(),this.current=void 0,this.view.shown=void 0,this.view.error=void 0;let r=Sf(`${t.key}|post:${e}`,!0);this.board=r,this.boards.set(r.key,r),this.show(),this.paint.draw();try{let i=await Fi(t,e,this.signal);if(n!==this.gen)return;if(!i){r.searching=!1,r.error=`${t.name} has no post ${e}`,this.view.error=r.error,this.show(),this.paint.draw();return}this.single(r,{site:t,post:i})}catch(i){this.fail(n,i,t)}}async turn(){this.fetch?.abort(),this.current=void 0,this.view.shown=void 0;let t=this.boards.get(this.boardKey);if(!t){await this.search();return}this.gen++,this.board=t,this.view.error=t.error,this.show(),this.paint.draw(),await this.pump()}unfold(){let t=this.view,e=0;for(let n of this.board.groups){let r=n.open?n.posts.length:1;if(t.focus<e+r){if(n.posts.length<2)return;n.open=!n.open,this.board.focus=e;for(let i of n.posts)if(!this.thumbPath.has(Ae(i.site,i.post.id)))this.thumbQueue.push(i);this.thumbs(),this.show(),this.scroll(),this.paint.glide(),this.paint.draw();return}e+=r}}openPage(t){let e=this.view.tiles[this.view.focus],n=e&&this.posts.get(e.key);if(!n)return;let r=Li(n.post.source),i=n.site===_n?"":n.site.pageUrl(n.post.id),o=!t&&/^https?:\/\//i.test(r)?r:i;if(o)TM(o)}tryKey(t){let e=this.view;if(e.tuning){this.tuneKey(t);return}if(t==="left"||t==="right"){this.direction=t==="left"?-1:1,this.focus(e.focus+this.direction);return}if(t==="shift-left"||t==="shift-right"){e.scene+=t==="shift-left"?-1:1,e.details=!1,this.paint.draw();return}if(t==="i"){e.details=!e.details,this.inform(),this.paint.draw();return}if(t==="t"){e.tuning={field:0,held:{...e.tune},fill:this.current?.fill??0,coloring:e.coloring},this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="o"||t==="O"){this.openPage(t==="O");return}if(t==="x"){this.swap();return}if(t==="v"){this.fromClipboard();return}if(t==="enter"){this.install();return}if(t==="esc")this.fetch?.abort(),clearTimeout(this.settle),e.fetching=void 0,e.mode="grid",e.error=void 0,this.paint.draw()}tuneKey(t){let e=this.view,n=e.tuning,r=e.tune;if(t==="up"||t==="down"){n.field=(n.field+(t==="up"?2:1))%3,this.paint.draw();return}let i=U4[t];if(i!==void 0){if(n.field===0)r.size=W4(r.size,i,n.fill);else if(n.field===1)r.at=(r.at-1+Math.sign(i)+9)%9+1;else r.opacity=Math.max(0,Math.min(100,Math.round(r.opacity*100)+i))/100;this.retune();return}if(/^[1-9]$/.test(t)){n.field=1,r.at=Number(t),this.retune();return}if(t==="="){let o=e.untuned;if(n.field===0)r.size=o.size;else if(n.field===1)r.at=o.at;else r.opacity=o.opacity;this.retune();return}if(t==="+"){e.tune={...e.untuned},this.retune();return}if(t==="enter"){e.tuning=void 0,this.paint.draw();return}if(t==="c"){this.recolor();return}if(t==="esc")e.tune={...n.held,...n.coloring===e.coloring?{}:{opacity:e.untuned.opacity}},e.tuning=void 0,this.retune()}recolor(){let t=this.view;if(!this.current||t.shown?.id!==this.current.key)return;t.coloring=t.coloring==="tone"?"original":"tone",t.tune.opacity=t.untuned.opacity,this.paint.draw(),this.reveal()}retune(){if(this.paint.draw(),this.current&&this.view.shown?.id===this.current.key)this.reveal()}inform(){let t=this.view,e=t.tiles[t.focus],n=e&&this.posts.get(e.key);t.info=n?this.infoOf(n):void 0}infoOf(t){let{site:e,post:n}=t,r=n.named,i=j0(e,n),o=new Set([...r.artist,...r.character,...r.copyright]),s=Li(n.source),a=/^https?:\/\//i.test(s)?s:e===_n&&s.startsWith("/")?AM(s).href:void 0;return{page:e===_n?"":e.pageUrl(n.id),source:s,...a?{link:a}:{},artists:r.artist,profiles:Object.fromEntries(Object.entries(this.kept.links(r.artist)).map(([c,u])=>[c,pa(u)])),characters:r.character,series:r.copyright,tags:n.tags.filter((c)=>!o.has(c)),...i?{rating:i}:{},...n.posted?{posted:n.posted}:{},ext:(En(n)??n).ext,uploader:n.owner}}focus(t){let e=this.view;if(e.tiles.length===0)return;let n=Math.max(0,Math.min(e.tiles.length-1,t));if(n===e.focus)return;if(e.focus=n,this.board.focus=n,this.scroll(),this.paint.glide(),this.pump(),e.mode==="try")this.select();this.paint.draw()}scroll(){let t=this.view,{perRow:e,rowsVis:n}=pr(this.cols,this.rows),r=Math.floor(t.focus/e);if(r<t.top)t.top=r;if(r>t.top+n-1)t.top=r-n+1;this.board.top=t.top}selected(t){if(t.chosen)return t.chosen;if(!t.tag)return[];return this.namesOf(t.tag,"danbooru")}namesOf(t,e){let n=t===this.entry.booru?this.entry:this.catalog.palettes.find((r)=>r.booru===t);return n?Ck(n,e):[t]}syncChips(){let t=this.selected(this.view);this.view.chips=this.pool.slice(0,aj).map((e)=>({name:e,on:t.includes(e)}))}toggle(t){let e=this.view,n=e.chips[t];if(!n)return;let r=this.selected(e),i=n.on?r.filter((o)=>o!==n.name):[...r,n.name];if(i.length===0)return;e.chosen=i,e.tag=i.join(" or "),this.syncChips(),this.boards.clear(),this.search()}async relate(t){this.relating?.abort();let e=this.selected({tag:t,chosen:void 0});if(this.pool=e,this.syncChips(),this.paint.draw(),!t||/\s/.test(t))return;let n=this.related.get(t);if(!n){let r=new AbortController;this.relating=r;try{n=(await K0(t,AbortSignal.any([this.signal,r.signal]))).map((i)=>i.value)}catch{return}if(this.relating!==r)return;this.related.set(t,n)}this.pool=[...new Set([...e,...n])],this.syncChips(),this.paint.draw()}query(t,e=this.view){let n=e.chosen?z0(t,e.chosen):this.namesOf(e.tag,t.key);if(n.length===0)return;let r=e.chosen?.slice(n.length)??[],i=n.length>1,o=e.preset==="cutouts"?t.cutouts:"",s=i&&o.includes("~"),a=[i?n.map((f)=>`~${f}`).join(" "):n[0],t.rate(e.rating),...t.narrow(e.narrow),s?"":o,e.order==="score"?t.best:""].filter(Boolean),c=[],u=[];for(let f of a)if(_d([...c,f].join(" "))<=t.tagBudget)c.push(f);else u.push(f);return{tags:c.join(" "),notes:[...u.length>0?[`${t.name} takes ${t.tagBudget} tags — ${u.join(" ")} left out`]:[],...r.length>0?[`${t.name} takes ${n.length} tag${n.length===1?"":"s"} — ${r.join(" ")} left out`]:[],...s?[`${t.name} ORs the names, so cutouts are told by the file`]:[],...e.narrow.score>0&&!t.scored?[`${t.name} keeps no score`]:[],...e.narrow.png&&t.guesses?[`${t.name} names a file type only where danbooru holds the file`]:[]]}}async search(){let t=++this.gen,e=Sf(this.boardKey,!0);this.board=e,this.boards.set(e.key,e),this.view.error=void 0;let n=this.sites.flatMap((o)=>{let s=this.query(o);return s?[{site:o,...s}]:[]}),r=this.sites.filter((o)=>!n.some((s)=>s.site===o)),i=[...n.flatMap(({notes:o})=>o),...r.length>0?[`${this.entry.name} has no tag on ${r.map((o)=>o.name).join(", ")}`]:[]];if(e.note=i.length>0?i.join(" · "):void 0,n.length===0)e.searching=!1;this.show(),this.paint.draw(),this.tally(t,e,n);try{let o=await Promise.all(n.map(async(s)=>({plan:s,owners:await this.kept.mateOwners(s.site)})));if(t!==this.gen)return;e.sources=o.flatMap(({plan:{site:s,tags:a},owners:c})=>{let u=_d(a)+1<=s.tagBudget?s.uploadedBy:void 0;return[...u?[...c.keys()].map((f)=>({site:s,tags:`${a} ${u(f)}`,page:0,done:!1})):[],{site:s,tags:a,page:0,done:!1}]}),this.show(),this.paint.draw(),await this.pump()}catch(o){this.fail(t,o)}}async tally(t,e,n){let r=await Promise.allSettled(n.map(({site:i,tags:o})=>Gd(i,o,this.signal)));if(t===this.gen)e.total=r.reduce((i,o)=>i+(o.status==="fulfilled"&&Number.isFinite(o.value)?o.value:0),0),this.show(),this.paint.draw()}fail(t,e,n=this.site){if(t!==this.gen||this.signal.aborted)return;this.board.error=Fg(n?.name??this.tabName,e),this.board.searching=!1,this.view.error=this.board.error,this.show(),this.paint.draw()}drop(t,e,n){for(let r of t.sources)if(r.site===e)r.done=!0;t.note=[t.note,Fg(e.name,n)].filter(Boolean).join(" · ")}wants(){let{perRow:t,rowsVis:e}=pr(this.cols,this.rows);return this.view.tiles.length<(this.board.top+e+_M)*t}need(){let{perRow:t,rowsVis:e}=pr(this.cols,this.rows);return(e+_M)*t}live(t){return this.boards.get(t.key)===t}page(t,e,n){let r=`${t.key}|${e}|${n}`,i=this.pages.get(r);if(!i)i=B0(t,e,n,this.signal).then((o)=>this.borrow(t,o)),this.pages.set(r,i),i.catch(()=>this.pages.delete(r));return i}async borrow(t,e){let n=t===Ot?[]:e.filter((r)=>r.md5!=="");if(n.length>0)try{da(n,await ha(n.map((r)=>r.md5),this.signal))}catch{}return e}staged(t){if(t===this.board)this.stageOf(t),this.paint.draw()}async round(t){t.stage="fetch",this.staged(t);let e=Z.flatMap((a)=>{let c=t.sources.find((u)=>u.site===a&&!u.done);return c?[c]:[]}),n=await Promise.all(e.map(async(a)=>{try{let c=await this.page(a.site,a.tags,a.page);return t.arrived.add(a.site.name),this.staged(t),{source:a,posts:c}}catch(c){if(t.sources.every((u)=>u.site===a.site)||this.signal.aborted)throw c;return this.drop(t,a.site,c),{source:a,posts:void 0}}}));if(!this.live(t))return;let r=[];for(let{source:a,posts:c}of n){if(!c)continue;a.page++,a.done=c.length<vn;let u=t.last.get(a);for(let f of c){let l=u&&CE(u.post,f)?u.set:`set:${a.site.key}:${f.id}`;u={post:f,set:l};let d=Ae(a.site,f.id);if(t.seen.has(d))continue;t.seen.add(d);let h={site:a.site,post:f};if(this.eligible(h))t.kin.set(h,[l,...LE(a.site,f)]),r.push(h);else t.checked++}if(u)t.last.set(a,u)}let i=this.dedupe(t,r),o=++t.rounds,s;if(this.view.order!=="fit")s=e.length>1?OE(i):i;else{let a=ef(i,this.frame(),this.matched),c=a.slice(0,this.need()),u={done:0,total:c.length};if(t.ranking=u,this.staged(t),await this.looks(c,()=>{u.done++,this.staged(t)}),t.ranking=void 0,!this.live(t))return;s=[...ef(c,this.frame(),this.matched),...a.slice(c.length)]}t.stage="check",this.staged(t);for(let a of s)t.roundOf.set(a,o);t.queue.push(...s),this.ahead(t)}ahead(t){if(this.aheading||this.view.order!=="fit"||!this.live(t))return;let e=t.queue.slice(0,this.need()).filter((n)=>!this.looking.has(Ae(n.site,n.post.id)));if(e.length===0)return;this.aheading=!0,this.looks(e).then(()=>{this.aheading=!1;for(let n of new Set(e.map((r)=>t.roundOf.get(r)??0)))this.resort(t,n);this.ahead(t)})}resort(t,e){let n=t.queue.flatMap((i,o)=>t.roundOf.get(i)===e?[o]:[]),r=ef(n.map((i)=>t.queue[i]),this.frame(),this.matched);n.forEach((i,o)=>{t.queue[i]=r[o]})}dedupe(t,e){let n=[];for(let r of e){let i=bg(r.post),o=i.map((a)=>t.same.get(a)).find(Boolean);if(!o){for(let a of i)t.same.set(a,r);n.push(r);continue}if(t.checked++,BM(r.post)<=BM(o.post))continue;for(let a of[...i,...bg(o.post)])t.same.set(a,r);let s=n.indexOf(o);if(s>=0){n[s]=r;continue}this.replace(t,o,r)}return n}replace(t,e,n){t.roundOf.set(n,t.roundOf.get(e)??0);let r=t.queue.indexOf(e);if(r>=0){t.queue[r]=n;return}for(let i of t.groups){let o=i.posts.indexOf(e);if(o>=0){i.posts[o]=n,this.posts.set(Ae(n.site,n.post.id),n),this.thumbQueue.push(n),this.thumbs();return}}}async looks(t,e){let n=0;await Promise.all(Array.from({length:LM},async()=>{while(n<t.length)await this.look(t[n++]),e?.()}))}look(t){let e=Ae(t.site,t.post.id),n=this.looking.get(e);if(!n)n=(async()=>{let r=this.previewPath(t),i=iu(t.site,t.post);await this.kept.cached(i.site,r,i.url);let o=await this.renders.run({job:"match",from:r,colors:this.entry.signature});return this.looked.set(e,o),this.matched.set(t.post,o.match),o})().catch(()=>{return}),this.looking.set(e,n);return n}async pump(){let t=this.gen,e=this.board;if(this.pumping===t||e.sources.length===0)return;this.pumping=t;let n=[],r;try{e.searching=!0;while(t===this.gen){while(n.length<FM&&e.queue.length>0&&this.wants()){let s=e.queue.shift();n.push({pick:s,passed:this.vet(s)})}if(this.ahead(e),!r&&e.queue.length<FM&&e.sources.some((s)=>!s.done)&&this.wants()){let s=this.round(e).then(()=>{if(r===s)r=void 0});s.catch(()=>{}),r=s}let i=n.shift();if(!i){if(!r)break;await r,this.show(),this.paint.draw();continue}let o=await i.passed;if(t!==this.gen)return;if(e.checked++,o)this.admit(i.pick);this.show(),this.paint.draw()}if(t===this.gen)e.searching=!1,this.show(),this.paint.draw()}catch(i){this.fail(t,i)}finally{if(this.kept.save(),this.pumping===t)this.pumping=0}}eligible({site:t,post:e}){let n=En(e);if(!su(t,e,this.view.rating)||ou(e,this.view.block).length>0||!n)return!1;if(this.view.solo&&e.solo===!1)return!1;let{score:r,size:i,png:o}=this.view.narrow;if(Math.min(e.width,e.height)<i||t.scored&&e.score<r||o&&e.ext!=="png"||C0(e,this.view.hide).length>0||this.view.hideTags.some((s)=>e.tags.includes(s)))return!1;return this.view.preset==="all"?["png","jpg","jpeg",""].includes(n.ext):["png",""].includes(e.ext)}async vet(t){let[e]=await Promise.all([this.passes(t),this.look(t)]);return e}async passes({site:t,post:e}){return this.view.preset==="all"||t.vouched||this.kept.transparent(t,e)}admit(t){let{site:e,post:n}=t,r=this.board,i=Ae(e,n.id);this.posts.set(i,t);let o=r.kin.get(t)??[],s=this.looked.get(i),a=s&&{hash:s.hash,width:n.width,height:n.height},c=this.view.sets==="fold"?this.kindred(r,o,a):void 0;if(c){if(c.posts.push(t),this.register(r,c,o,a),c.open)this.thumbQueue.push(t),this.thumbs();return}let u={posts:[t],open:!1};r.groups.push(u),this.register(r,u,o,a),this.thumbQueue.push(t),this.thumbs()}kindred(t,e,n){for(let r of e){let i=t.kindred.get(r);if(i)return i}return n&&t.shapes.find((r)=>_E(r.shape,n))?.group}register(t,e,n,r){for(let i of n)if(!t.kindred.has(i))t.kindred.set(i,e);if(r)t.shapes.push({shape:r,group:e})}holds(){this.view.held=HM(this.home,this.entry.name).map((t)=>{let e=this.heldFiles.get(t.from);return e?{...t,thumb:e}:t}),this.holdThumbs()}holdThumbs(){let t=Se.cols*this.cell.w,e=Se.rows*this.cell.h;if(t===0||e===0)return;for(let n of this.view.held.slice(0,Wp(this.cols))){if(n.thumb||this.heldAsked.has(n.from))continue;this.heldAsked.add(n.from);let r=Wn(this.scratch,`held-${j4(n.from)}-${t}x${e}.png`);this.renders.run({job:"thumb",from:n.from,to:r,width:t,height:e}).then(()=>{this.heldFiles.set(n.from,r),this.holds(),this.paint.draw()}).catch(()=>{})}}thumbs(){while(!this.signal.aborted&&this.thumbing<LM&&this.thumbQueue.length>0){let t=this.thumbQueue.shift();this.thumbing++,this.thumb(t).catch(()=>{this.thumbless.add(Ae(t.site,t.post.id)),this.show(),this.paint.draw()}).finally(()=>{this.thumbing--,this.thumbs()})}}async thumb(t){let{site:e,post:n}=t,r=vt.cols*this.cell.w,i=vt.rows*this.cell.h,o=iu(e,n),s=Wn(on(e),"tile",`${UM(n.id,o.url)}-${r}x${i}.png`);if(!Fc(s)){let a=this.previewPath(t);if(await this.kept.cached(o.site,a,o.url),this.signal.aborted)return;await this.renders.run({job:"thumb",from:a,to:s,width:r,height:i})}this.thumbPath.set(Ae(e,n.id),s),this.show(),this.paint.draw()}select(){let t=this.view,e=t.tiles[t.focus];if(this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,this.inform(),!e)return;if(this.current?.key===e.key){this.reveal();return}this.settle=setTimeout(()=>void this.load(e),Z4),this.paint.draw()}async load(t){let e=this.view,n=this.posts.get(t.key);if(!n)return;let r=new AbortController;if(this.fetch=r,this.kept.profile(n,r.signal),!En(n.post))return;let{site:i}=n,o=this.board;try{await ma(i,n.post,r.signal);let s=En(n.post),a=this.origPath(i,t.id,s.ext);if(!Fc(a))e.fetching={id:t.key,got:0,size:0},this.paint.draw();let c=Hi(i,n.post,s),u=await this.kept.cached(c.site,a,c.url,(d,h)=>{if(e.fetching?.id===t.key)e.fetching={id:t.key,got:d,size:h},this.paint.draw()});if(r.signal.aborted)return;if(e.fetching=void 0,o!==this.board)return;let f={site:i,id:t.id,key:t.key,path:a,ext:s.ext,size:u,using:"plain",failed:!1};e.preparing=t.key,this.paint.flush();let l=await this.render(f,"plain");if(r.signal.aborted||o!==this.board)return;if(l.clear===0&&Ws()&&this.setting("TTHEME_FIND_REMOVE_BG")!=="off"){if(e.preparing=void 0,e.cutting=t.key,this.paint.flush(),f.cut=await this.cutOut(i,t.id,a,r.signal),r.signal.aborted||o!==this.board)return;if(e.cutting=void 0,f.cut){e.preparing=t.key,this.paint.flush();let d=await this.render(f,"cut").catch(()=>{return});if(r.signal.aborted||o!==this.board)return;if(d&&nf(d.clear))f.using="cut";else vf(f.cut,{force:!0}),f.cut=void 0,f.failed=!0}else f.failed=!0}if(this.current=f,e.tiles[e.focus]?.key===t.key)await this.present();this.preload()}catch(s){if(!r.signal.aborted&&!this.signal.aborted)e.error=Fg(i.name,s)}finally{if(e.fetching?.id===t.key)e.fetching=void 0;if(e.preparing===t.key)e.preparing=void 0;if(e.cutting===t.key)e.cutting=void 0;this.paint.draw()}}async cutOut(t,e,n,r){let i=Wn(on(t),"cut",`${e}.png`);if(Fc(i))return i;try{return T4(_4(i),{recursive:!0}),await Sc(n,i,r),i}catch{vf(i,{force:!0});return}}swap(){let t=this.current;if(!t?.cut||this.view.shown?.id!==t.key)return;t.using=t.using==="cut"?"plain":"cut",this.reveal()}preload(){let t=this.view;if(t.mode!=="try")return;for(let e of[t.focus+this.direction,t.focus-this.direction]){let n=t.tiles[e],r=n&&this.posts.get(n.key);if(r)this.kept.profile(r,this.signal);if(this.prefetching>=Y4||!r||!En(r.post))continue;let{site:i,post:o}=r;this.prefetching++,ma(i,o,this.signal).then(async()=>{let s=En(o),a=this.origPath(i,o.id,s.ext),c=Hi(i,o,s);return await this.kept.cached(c.site,a,c.url),this.render({site:i,id:o.id,key:n.key,path:a,ext:s.ext,size:0,using:"plain",failed:!1},"plain")}).catch(()=>{}).finally(()=>{this.prefetching--})}}async render(t,e){let n=this.cols*this.cell.w,r=this.rows*this.cell.h,i=Math.min(n,nj),o=Math.max(1,Math.round(r*i/n)),s={...this.view.tune},{coloring:a}=this.view,c=!KM(s,this.view.untuned),u=s.opacity!==this.view.untuned.opacity,f=c?`-${s.size}-${s.at}${u?`-${Math.round(s.opacity*100)}`:""}`:"",l=Wn(this.scratch,`${t.site.key}-${t.id}${e==="cut"?"c":""}${a==="original"?"o":""}-${i}x${o}${f}.png`),d=`${t.site.key}:${t.id}:${e}:${a}:${i}x${o}`,h=this.clarity.get(d);if(h&&Fc(l))return t.fill=h.fill,{clear:h.clear,path:l,opacity:h.opacity,touched:u};let m=await this.renders.run({job:"show",from:e==="cut"?t.cut:t.path,to:l,width:i,height:o,colors:this.entry,tone:this.tone,blur:this.blurring*i/nh(n,r).width,coloring:a,...c?{tune:{size:s.size,at:s.at,...u?{opacity:s.opacity}:{}}}:{}});if(this.clarity.set(d,m),t.fill=m.fill,c)this.keepTuned(l);return{clear:m.clear,path:l,opacity:m.opacity,touched:u}}keepTuned(t){this.tunedFiles.push(t);while(this.tunedFiles.length>rj){let e=this.tunedFiles.findIndex((n)=>n!==this.view.shown?.path&&n!==t);if(e===-1)return;vf(this.tunedFiles.splice(e,1)[0],{force:!0})}}async present(){let t=this.current;if(!t)return;let e=t.using,{coloring:n}=this.view,r=this.view.tune.opacity,{clear:i,path:o,opacity:s,touched:a}=await this.render(t,e);if(this.current!==t||t.using!==e||this.view.coloring!==n)return;if(!a&&this.view.tune.opacity===r)this.view.untuned.opacity=s,this.view.tune.opacity=s;if(this.view.tuning&&t.fill)this.view.tuning.fill=t.fill;this.view.shown={id:t.key,clear:i,bytes:t.size,path:o,cut:t.cut?e==="cut"?"on":"off":t.failed?"failed":"none"}}reveal(){let t=this.view;if(this.presenting){this.again=!0;return}this.presenting=!0,t.preparing=this.current?.key,this.paint.flush(),this.present().catch((e)=>{t.error=e instanceof Error?e.message:String(e)}).finally(()=>{if(this.presenting=!1,this.again){this.again=!1,this.reveal();return}if(t.preparing===this.current?.key)t.preparing=void 0;this.paint.draw()})}async install(){let t=this.view,e=t.tiles[t.focus],n=this.current;if(!e||n?.key!==e.key||t.preparing!==void 0||t.shown?.id!==e.key)return;t.installing=e.key,t.error=void 0,this.paint.flush();let r=K4(t.tune,t.untuned),i=this.posts.get(n.key),o=i?.post;if(i)await Promise.race([this.kept.profile(i,this.signal),G4(V4,void 0,{ref:!1})]);try{await this.renders.run({job:"backdrop",from:n.using==="cut"?n.cut:n.path,source:n.path,home:this.home,colors:this.entry,tone:this.tone,origin:{site:n.site.key,id:n.id,ext:n.ext,from:`${n.site.name} ${n.id} ${n.site.pageUrl(n.id)}`,artist:o?.named.artist??[],profiles:this.kept.links(o?.named.artist??[]),source:Li(o?.source??"")},width:this.cols*this.cell.w,height:this.rows*this.cell.h,blur:this.blurring,coloring:t.coloring,...r?{tune:r,aligns:oo(z(this.home).terminals),user:L4()}:{}}),this.kept.owned(n.site,n.id,o?.owner??""),_e(this.home),this.holds();let{size:s,at:a,opacity:c}=t.tune,u=r?` · ${s==="fill"?"fill":`${s}%`} · ${qt[a-1]} · ${c.toFixed(2)}`:"",f=o?.named.artist.length?`${o.named.artist.join(", ")} · `:"";t.saved={text:`Background · ${this.entry.name} ← ${f}${n.site.name} ${n.id}${u}`,key:e.key},t.installed.push(e.key),this.fetch?.abort(),clearTimeout(this.settle),t.fetching=void 0,t.mode="grid"}catch(s){t.error=s instanceof Error?s.message:String(s)}t.installing=void 0,this.paint.draw()}}async function zM(t,e,n){let r=new Lg(t,we(t),e,e.booru??"",n);if(await r.run(),Vi(process.env))process.stdout.write(Zi(""));return{saved:r.saved,installs:r.installs}}async function DM(t){let e=J(),n=we(e),r=In(n.palettes,t);if(!process.stdin.isTTY||!process.stdout.isTTY)throw Error("needs a terminal");let i=new Lg(e,n,r,r.booru??""),o=await i.run();if(i.saved&&o!==0)return process.stderr.write(`${i.saved}
723
+ `),0;return o}var Mo=((t)=>{return t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t})(Mo||{}),cj=[0,1],JM=[1,0],YM=[2,3],VM=[3,2],uj={L:cj,M:JM,Q:YM,H:VM},lj=/^\d*$/,fj=/^[A-Z0-9 $%*+./:-]*$/,Cg="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",Gg=1,Bg=40,qM=3,dj=3,Mf=40,hj=10,ZM=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],XM=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class QM{constructor(t,e,n,r){if(this.version=t,this.ecc=e,t<Gg||t>Bg)throw RangeError("Version value out of range");if(r<-1||r>7)throw RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let s=0;s<this.size;s++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let o=this.addEccAndInterleave(n);if(this.drawCodewords(o),r===-1){let s=1e9;for(let a=0;a<8;a++){this.applyMask(a),this.drawFormatBits(a);let c=this.getPenaltyScore();if(c<s)r=a,s=c;this.applyMask(a)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(t,e){return t>=0&&t<this.size&&e>=0&&e<this.size&&this.modules[e][t]}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2===0,Mo.Timing),this.setFunctionModule(n,6,n%2===0,Mo.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),e=t.length;for(let n=0;n<e;n++)for(let r=0;r<e;r++)if(!(n===0&&r===0||n===0&&r===e-1||n===e-1&&r===0))this.drawAlignmentPattern(t[n],t[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let e=this.ecc[1]<<3|t,n=e;for(let i=0;i<10;i++)n=n<<1^(n>>>9)*1335;let r=(e<<10|n)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,yr(r,i));this.setFunctionModule(8,7,yr(r,6)),this.setFunctionModule(8,8,yr(r,7)),this.setFunctionModule(7,8,yr(r,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,yr(r,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,yr(r,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,yr(r,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let n=0;n<12;n++)t=t<<1^(t>>>11)*7973;let e=this.version<<12|t;for(let n=0;n<18;n++){let r=yr(e,n),i=this.size-11+n%3,o=Math.floor(n/3);this.setFunctionModule(i,o,r),this.setFunctionModule(o,i,r)}}drawFinderPattern(t,e){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),o=t+r,s=e+n;if(o>=0&&o<this.size&&s>=0&&s<this.size)this.setFunctionModule(o,s,i!==2&&i!==4,Mo.Position)}}drawAlignmentPattern(t,e){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(t+r,e+n,Math.max(Math.abs(r),Math.abs(n))!==1,Mo.Alignment)}setFunctionModule(t,e,n,r=Mo.Function){this.modules[e][t]=n,this.types[e][t]=r}addEccAndInterleave(t){let e=this.version,n=this.ecc;if(t.length!==xf(e,n))throw RangeError("Invalid argument");let r=XM[n[0]][e],i=ZM[n[0]][e],o=Math.floor(jg(e)/8),s=r-o%r,a=Math.floor(o/r),c=[],u=vj(i);for(let l=0,d=0;l<r;l++){let h=t.slice(d,d+a-i+(l<s?0:1));d+=h.length;let m=Sj(h,u);if(l<s)h.push(0);c.push(h.concat(m))}let f=[];for(let l=0;l<c[0].length;l++)c.forEach((d,h)=>{if(l!==a-i||h>=s)f.push(d[l])});return f}drawCodewords(t){if(t.length!==Math.floor(jg(this.version)/8))throw RangeError("Invalid argument");let e=0;for(let n=this.size-1;n>=1;n-=2){if(n===6)n=5;for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let o=n-i,a=(n+1&2)===0?this.size-1-r:r;if(!this.types[a][o]&&e<t.length*8)this.modules[a][o]=yr(t[e>>>3],7-(e&7)),e++}}}applyMask(t){if(t<0||t>7)throw RangeError("Mask value out of range");for(let e=0;e<this.size;e++)for(let n=0;n<this.size;n++){let r;switch(t){case 0:r=(n+e)%2===0;break;case 1:r=e%2===0;break;case 2:r=n%3===0;break;case 3:r=(n+e)%3===0;break;case 4:r=(Math.floor(n/3)+Math.floor(e/2))%2===0;break;case 5:r=n*e%2+n*e%3===0;break;case 6:r=(n*e%2+n*e%3)%2===0;break;case 7:r=((n+e)%2+n*e%3)%2===0;break;default:throw Error("Unreachable")}if(!this.types[e][n]&&r)this.modules[e][n]=!this.modules[e][n]}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let o=!1,s=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[i][c]===o){if(s++,s===5)t+=qM;else if(s>5)t++}else{if(this.finderPenaltyAddHistory(s,a),!o)t+=this.finderPenaltyCountPatterns(a)*Mf;o=this.modules[i][c],s=1}t+=this.finderPenaltyTerminateAndCount(o,s,a)*Mf}for(let i=0;i<this.size;i++){let o=!1,s=0,a=[0,0,0,0,0,0,0];for(let c=0;c<this.size;c++)if(this.modules[c][i]===o){if(s++,s===5)t+=qM;else if(s>5)t++}else{if(this.finderPenaltyAddHistory(s,a),!o)t+=this.finderPenaltyCountPatterns(a)*Mf;o=this.modules[c][i],s=1}t+=this.finderPenaltyTerminateAndCount(o,s,a)*Mf}for(let i=0;i<this.size-1;i++)for(let o=0;o<this.size-1;o++){let s=this.modules[i][o];if(s===this.modules[i][o+1]&&s===this.modules[i+1][o]&&s===this.modules[i+1][o+1])t+=dj}let e=0;for(let i of this.modules)e=i.reduce((o,s)=>o+(s?1:0),e);let n=this.size*this.size,r=Math.ceil(Math.abs(e*20-n*10)/n)-1;return t+=r*hj,t}getAlignmentPatternPositions(){if(this.version===1)return[];else{let t=Math.floor(this.version/7)+2,e=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,n=[6];for(let r=this.size-7;n.length<t;r-=e)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(t){let e=t[1],n=e>0&&t[2]===e&&t[3]===e*3&&t[4]===e&&t[5]===e;return(n&&t[0]>=e*4&&t[6]>=e?1:0)+(n&&t[6]>=e*4&&t[0]>=e?1:0)}finderPenaltyTerminateAndCount(t,e,n){if(t)this.finderPenaltyAddHistory(e,n),e=0;return e+=this.size,this.finderPenaltyAddHistory(e,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(t,e){if(e[0]===0)t+=this.size;e.pop(),e.unshift(t)}}function vr(t,e,n){if(e<0||e>31||t>>>e!==0)throw RangeError("Value out of range");for(let r=e-1;r>=0;r--)n.push(t>>>r&1)}function yr(t,e){return(t>>>e&1)!==0}class Of{constructor(t,e,n){if(this.mode=t,this.numChars=e,this.bitData=n,e<0)throw RangeError("Invalid argument");this.bitData=n.slice()}getData(){return this.bitData.slice()}}var mj=[1,10,12,14],pj=[2,9,11,13],gj=[4,8,16,16];function tx(t,e){return t[Math.floor((e+7)/17)+1]}function ex(t){let e=[];for(let n of t)vr(n,8,e);return new Of(gj,t.length,e)}function bj(t){if(!nx(t))throw RangeError("String contains non-numeric characters");let e=[];for(let n=0;n<t.length;){let r=Math.min(t.length-n,3);vr(Number.parseInt(t.substring(n,n+r),10),r*3+1,e),n+=r}return new Of(mj,t.length,e)}function wj(t){if(!rx(t))throw RangeError("String contains unencodable characters in alphanumeric mode");let e=[],n;for(n=0;n+2<=t.length;n+=2){let r=Cg.indexOf(t.charAt(n))*45;r+=Cg.indexOf(t.charAt(n+1)),vr(r,11,e)}if(n<t.length)vr(Cg.indexOf(t.charAt(n)),6,e);return new Of(pj,t.length,e)}function $j(t){if(t==="")return[];else if(nx(t))return[bj(t)];else if(rx(t))return[wj(t)];else return[ex(yj(t))]}function nx(t){return lj.test(t)}function rx(t){return fj.test(t)}function kj(t,e){let n=0;for(let r of t){let i=tx(r.mode,e);if(r.numChars>=1<<i)return Number.POSITIVE_INFINITY;n+=4+i+r.bitData.length}return n}function yj(t){t=encodeURI(t);let e=[];for(let n=0;n<t.length;n++)if(t.charAt(n)!=="%")e.push(t.charCodeAt(n));else e.push(Number.parseInt(t.substring(n+1,n+3),16)),n+=2;return e}function jg(t){if(t<Gg||t>Bg)throw RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){let n=Math.floor(t/7)+2;if(e-=(25*n-10)*n-55,t>=7)e-=36}return e}function xf(t,e){return Math.floor(jg(t)/8)-ZM[e[0]][t]*XM[e[0]][t]}function vj(t){if(t<1||t>255)throw RangeError("Degree out of range");let e=[];for(let r=0;r<t-1;r++)e.push(0);e.push(1);let n=1;for(let r=0;r<t;r++){for(let i=0;i<e.length;i++)if(e[i]=_g(e[i],n),i+1<e.length)e[i]^=e[i+1];n=_g(n,2)}return e}function Sj(t,e){let n=e.map((r)=>0);for(let r of t){let i=r^n.shift();n.push(0),e.forEach((o,s)=>n[s]^=_g(o,i))}return n}function _g(t,e){if(t>>>8!==0||e>>>8!==0)throw RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(e>>>r&1)*t;return n}function Ej(t,e,n=1,r=40,i=-1,o=!0){if(!(Gg<=n&&n<=r&&r<=Bg)||i<-1||i>7)throw RangeError("Invalid value");let s,a;for(s=n;;s++){let l=xf(s,e)*8,d=kj(t,s);if(d<=l){a=d;break}if(s>=r)throw RangeError("Data too long")}for(let l of[JM,YM,VM])if(o&&a<=xf(s,l)*8)e=l;let c=[];for(let l of t){vr(l.mode[0],4,c),vr(l.numChars,tx(l.mode,s),c);for(let d of l.getData())c.push(d)}let u=xf(s,e)*8;vr(0,Math.min(4,u-c.length),c),vr(0,(8-c.length%8)%8,c);for(let l=236;c.length<u;l^=253)vr(l,8,c);let f=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((l,d)=>f[d>>>3]|=l<<7-(d&7)),new QM(s,e,f,i)}function ix(t,e){let{ecc:n="L",boostEcc:r=!1,minVersion:i=1,maxVersion:o=40,maskPattern:s=-1,border:a=1}=e||{},c=typeof t==="string"?$j(t):Array.isArray(t)?[ex(t)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);let u=Ej(c,uj[n],i,o,s,r),f=Mj({version:u.version,maskPattern:u.mask,size:u.size,data:u.modules,types:u.types},a);if(e?.invert)f.data=f.data.map((l)=>l.map((d)=>!d));return e?.onEncoded?.(f),f}function Mj(t,e=1){if(!e)return t;let{size:n}=t,r=n+e*2;t.size=r,t.data.forEach((o)=>{for(let s=0;s<e;s++)o.unshift(!1),o.push(!1)});for(let o=0;o<e;o++)t.data.unshift(Array.from({length:r},(s)=>!1)),t.data.push(Array.from({length:r},(s)=>!1));let i=Mo.Border;t.types.forEach((o)=>{for(let s=0;s<e;s++)o.unshift(i),o.push(i)});for(let o=0;o<e;o++)t.types.unshift(Array.from({length:r},(s)=>i)),t.types.push(Array.from({length:r},(s)=>i));return t}var xj=Ub(16,231),Oj=[" ","▀","▄","█"],Pj=2953;function ox(t){if(Buffer.byteLength(t)>Pj)return;let{data:e}=ix(t,{border:2,boostEcc:!0}),n=[];for(let r=0;r<e.length;r+=2){let i=e[r]??[],o=e[r+1]??[];n.push(`${xj}${i.map((s,a)=>Oj[(s?1:0)+(o[a]?2:0)]).join("")}${me}`)}return n}var Ij=50;function Rj(t){return{background:t.background,foreground:t.foreground,cursor:t.cursor,selection:t.selection,ansi:t.ansi}}function Aj(t,e,n){for(let r of n){let i=t-4-r.length;if(i>e.length+2)return[[2,e],[i,` ${r} `]]}return[[2,e]]}function sx(t,e,n,r=Ij){let i=xe(n),o=tn(Rj(e)),s=Sk(t).map((p)=>p.toLowerCase()),a=fg(o,e.signatureSlots,e.waived??[]),c=Xn(wr(o,e.signatureSlots,e.waived??[])).length,u=(p)=>o[p]?.toLowerCase()!==s[p],f=o.filter((p,b)=>u(b)).length,l=(p)=>{let b=o[p],$=e.signatureSlots.includes(Bn[p])?A.signature:n?A.swatch:" ",k=n?`${i.fg(b)}${$}${wt}`:$,v=a.has(p)?i.bold(A.miss):u(p)?i.warn(A.on):" ";return` ${k} ${df(xt(b))}${v}`},d=c===0?"passes the gate":`${c} ${c===1?"miss":"misses"} in the gate`,h=f>0?[`${f} tuned · ${d}`,d]:[d],m=[i.dim(Yt(r,"top",Aj(r," Palette ",h)))];for(let p=0;p<T.length;p++)m.push(Je(i,` ${T[p].padEnd(10)}${l(p)}`,r));return m.push(i.dim(Yt(r,"mid",[[2," ANSI "],[12," Normal 0–7 "],[29," Bright 8–15 "]]))),pn.forEach((p,b)=>{m.push(Je(i,` ${p.padEnd(10)}${l(T.length+b)}${l(T.length+8+b)}`,r))}),m.push(i.dim(Yt(r,"bottom"))),m}function Js(){return process.stdin.isTTY===!0&&process.stdout.isTTY===!0}async function Wg(){let t=process.env.TTHEME_WORN;if(!t||!Js())return;let e=await Ce({message:`Use ${t}, the palette this tab wears?`});if(ee(e)||!e)throw new de;return t}async function ux(t){let e=process.env.TTHEME_WORN;if(!e)return;if(!Js())return console.error(`Sharing ${e}, the palette this tab wears`),{name:e,...t?{tone:t}:{}};if(t!==void 0||Wt(J())[e]===void 0)return await Wg(),{name:e,...t?{tone:t}:{}};let n=await Qh({message:`Share ${e}, the palette this tab wears?`,options:[{value:"tuned",label:"Your tone",hint:`named ${Cc(e)}`},{value:"original",label:"The original"},{value:"no",label:"No"}]});if(ee(n)||n==="no")throw new de;return{name:e,tone:n}}function lx(t,e){if(t.includes("/"))return t;let n=Di(e,!1),r=n.filter((o)=>ss(o.dir).some((s)=>s.slug===t)),[i]=r.length===1?r:n.length===1?n:[];return i?`${i.id}/${t}`:t}function Hj(t,e,n){let r=z(t),i=n.filter((o)=>!r.palettes.includes(o));if(i.length>0)Xe(t,e,r,{...r,palettes:[...r.palettes,...i]});else if(n.some((o)=>r.palettes.includes(o)))zt(t,e,r);return{state:r,fresh:i}}function Fj(t){let e=Math.max(0,...t.map((n)=>n.slot.length));return t.map((n)=>` ${n.slot.padEnd(e)} ${n.from} → ${n.to} ${n.rule}`)}function ax(t){return JSON.stringify([t.background,t.foreground,t.cursor,t.selection,t.ansi])}function fx(t,e,n){let r=$k(e,n.palettes),i=sr(t,n,!1).palettes.find((o)=>o.name===r.name);if(i&&ax(i)!==ax(r))throw Error(`${r.name} is already in ${ut(r.name)??"the ttheme catalog"} and differs — \`ttheme add ${r.name}\` wears that one`);if(!i)us(t,[...Dr(t),r]);return r}var Lj=["background","foreground","cursor"];function dx(t){try{t();return}catch(e){return e.message}}function hx(t,e,n){return Kt(t,e,!1).palettes.filter((r)=>r.name!==n).map((r)=>({name:r.name,colors:{background:r.background,foreground:r.foreground,cursor:r.cursor,selection:r.selection,ansi:r.ansi}}))}function mx(t,e){let n=new Set(ge(t,e).map((r)=>r.key));return{count:()=>ge(t,e).length,added:()=>ge(t,e).filter((r)=>!n.has(r.key)).length,fresh:()=>(of(t,e)??[]).filter((r)=>!n.has(le(r))),discard:()=>{let r=ge(t,e).filter((i)=>!n.has(i.key));for(let i of r)Zo(t,e,i.key),pu(t,e);if(r.length>0)_e(t)}}}function Cj(...t){let e=new Map;for(let n of t.flatMap((r)=>r??[]))e.set(le(n),n);return e.size>0?[...e.values()]:void 0}function px(t,e,n,r){if(!hs(process.env,z(t).terminals))return;return async(i,o)=>{let s=an(On(e,r(i),n.palettes)),{saved:a}=await zM(t,s,o);return{...a?{note:a}:{},count:ge(t,e).length}}}async function Kg(t,e=!1){let n=process.stdout.isTTY===!0,r=J(),i=z(r).terminals,o=n?cf.of(process.env,r,t.name,i):void 0,s=n?bf.of(process.env,i):void 0;return PM(t,{color:!Ft(),...o?{backdrop:o}:{},...s?{layer:s}:{},...e?{hosted:!0}:{}})}async function gx(t,e,n){let r=J(),i=at(r),o=await Jv(r,n),s=t.includes("/")?t:`${o.id}/${t}`,a=Te(s);if(a)throw Error(`${s} ${a}`);if(ut(s)!==o.id)throw Error(`palettes in ${o.dir} are named ${o.id}/<palette> — ${s} belongs elsewhere`);let c=Mh(r,s);if(jc(c))throw Error(`${s} already exists — \`ttheme edit ${s}\` changes it`);let u=e?In(Kt(r,i).palettes,e):void 0;if(!Js())throw Error("new opens the palette editor — run it in a terminal");let f=u&&(ut(u.name)?u.base:u.default?void 0:u.name),l=u?Oh(u,s,`kept from ${u.name}`):void 0,d=u?of(r,u.name)??u.pictures:void 0,{base:h,ansiSource:m,group:p,...b}=l??{name:s,signature:Lj,...pi(vc)},$=mx(r,s),k=({colors:x,signature:M})=>{let I=Cj(d,$.fresh());return Ph({...b,...x,signature:M,...f?{base:f}:{},...I?{pictures:I}:{}})},v=await Kg({title:"New palette",name:s,...l?{colors:l}:{},signature:b.signature,...b.waive?{waive:b.waive}:{},palettes:hx(r,i,s),pictures:$.count(),find:px(r,s,i,k),exports:Sx(r,s,i,k),decode:zg,check:(x)=>dx(()=>On(s,k(x),i.palettes))});if(!v){$.discard(),console.log("Nothing made");return}Nj(Tj(c),{recursive:!0}),C(c,k(v));let{state:S}=Hj(r,i,[s]);console.log(` + ${s}${u?` from ${u.name}`:""}
724
+ ${c}`),await $o(r,Kt(r,i).palettes.filter((x)=>x.name===s),S.terminals),console.log(`
725
+ \`ttheme use ${s}\` wears it · \`ttheme edit ${s}\` opens it again`)}function jj(t,e,n){let r=an(On(t,e,n.palettes));return Ta(r).length>0?Pa(r).filter((i)=>i.startsWith(" ✗")):[]}async function bx(t){let e=J(),n=at(e),r=z(e),i=Kt(e,n,!1),o=lx(t,e),s=Pf(e,o),a=s&&jc(s)?o:i.palettes.some((k)=>k.name===t)?t:o,c=Pf(e,a),u=!c||!jc(c);if(u&&!i.palettes.some((k)=>k.name===a))throw Error(`no palette called ${a} — \`ttheme new\` makes one`);if(!Js())throw Error("edit opens the palette editor — run it in a terminal");if(u){let k=await kx(e,a,!1);console.log(k===void 0?"Nothing changed":k===0?`${a} is back to its own colors`:`Saved ${a} · ${$x(k)} — R then s in \`ttheme edit ${a}\` puts its own colors back`);return}let f=Ug(c,"utf8"),l;try{l=On(a,f,n.palettes)}catch(k){throw Error(`${c} cannot be read — ${k.message}`)}let d=mx(e,a),h=new Set((l.pictures??[]).map((k)=>le(k))),m=({colors:k,signature:v})=>mk(kk(Ah(f,k),v),d.fresh().filter((S)=>!h.has(le(S)))),p=await Kg({title:"Edit palette",name:a,colors:cs(l),signature:l.signatureSlots,waive:l.waive,palettes:hx(e,n,a),pictures:d.count(),find:px(e,a,n,m),exports:Sx(e,a,n,m),decode:zg,check:(k)=>dx(()=>On(a,m(k),n.palettes))});if(!p){d.discard(),console.log("Nothing changed");return}let b=m(p);if(b===f){console.log(d.added()>0?`Kept the pictures you added to ${a}`:"Nothing changed");return}if(C(c,b),r.palettes.includes(a))zt(e,n,r);console.log(`Saved ${a}${r.palettes.includes(a)?" — new tabs and `ttheme use` wear it":` — \`ttheme add ${a}\` installs it`}`);let $=jj(a,b,n);if($.length>0)console.log(`
724
726
  It misses the contrast gate:
725
727
  ${$.join(`
726
728
  `)}
727
- \`ttheme check --fix ${a}\` suggests colors that pass`)}var qM=2;async function nx(t,e,n){let r=J();if(e==="show"){let o=In(nr(r,ct(r),!1).palettes,t),s=Sa(o,Ut(r)[t]);return console.log(KM(o,s,!Ft(),n===void 0?void 0:Number(n)).join(`
728
- `)),0}if(e==="reset"){let o=Ut(r);if(o[t]===void 0)return qM;return Ea(r,vu(o,t,{})),Kt(r,ct(r),K(r)),process.stderr.write("Back to the original colors"),0}if(e!=="edit")throw Error(`tone takes show, edit or reset, not ${e}`);if(!Ks())throw Error("needs a terminal");let i=await ix(r,t,!0);if(i===void 0)return qM;return process.stderr.write(i===0?"Back to the original colors":`Saved · ${rx(i)}`),0}function rx(t){return`${t} ${t===1?"color":"colors"} tuned`}async function ix(t,e,n){let r=In(nr(t,ct(t),!1).palettes,e),i=Sa(r,Ut(t)[e]),o=await Lg({title:"Edit palette",name:e,colors:is(He(i)),original:is(He(r)),tone:!0,signature:i.signatureSlots,...i.waived?{waive:i.waived}:{},decode:Cg,check:()=>{return}},n);if(!o)return;let s=Ut(t),a=Eh(r,Qe(o.colors));if(JSON.stringify(a)===JSON.stringify(s[e]??{}))return;return Ea(t,vu(s,e,a)),Kt(t,ct(t),K(t)),Object.keys(a).length}function ox(t,e,n){return In(t.palettes,t.palettes.some((r)=>r.name===e)?e:JM(e,n))}function sx(t,e=!1){let n=J(),r=ct(n),i=K(n),o=ox(Wt(n,r),t,n);if(console.log(`${o.name} · ${o.group}
729
- `),console.log(ka(o).join(`
730
- `)),Ma(o).length===0)return console.log(`
731
- Passes the gate`),0;let{theme:a,moves:c,left:u}=Kl(He(o));if(c.length===0)return console.log(`
729
+ \`ttheme check --fix ${a}\` suggests colors that pass`)}var cx=2;async function wx(t,e,n){let r=J();if(e==="show"){let o=In(sr(r,at(r),!1).palettes,t),s=Na(o,Wt(r)[t]);return console.log(sx(o,s,!Ft(),n===void 0?void 0:Number(n)).join(`
730
+ `)),0}if(e==="reset"){let o=Wt(r);if(o[t]===void 0)return cx;return Aa(r,Iu(o,t,{})),zt(r,at(r),z(r)),process.stderr.write("Back to the original colors"),0}if(e!=="edit")throw Error(`tone takes show, edit or reset, not ${e}`);if(!Js())throw Error("needs a terminal");let i=await kx(r,t,!0);if(i===void 0)return cx;return process.stderr.write(i===0?"Back to the original colors":`Saved · ${$x(i)}`),0}function $x(t){return`${t} ${t===1?"color":"colors"} tuned`}async function kx(t,e,n){let r=In(sr(t,at(t),!1).palettes,e),i=Na(r,Wt(t)[e]),o=await Kg({title:"Edit palette",name:e,colors:cs(Fe(i)),original:cs(Fe(r)),tone:!0,signature:i.signatureSlots,...i.waived?{waive:i.waived}:{},decode:zg,check:()=>{return}},n);if(!o)return;let s=Wt(t),a=Nh(r,tn(o.colors));if(JSON.stringify(a)===JSON.stringify(s[e]??{}))return;return Aa(t,Iu(s,e,a)),zt(t,at(t),z(t)),Object.keys(a).length}function yx(t,e,n){return In(t.palettes,t.palettes.some((r)=>r.name===e)?e:lx(e,n))}function vx(t,e=!1){let n=J(),r=at(n),i=z(n),o=yx(Kt(n,r),t,n);if(console.log(`${o.name} · ${o.group}
731
+ `),console.log(Pa(o).join(`
732
+ `)),Ta(o).length===0)return console.log(`
733
+ Passes the gate`),0;let{theme:a,moves:c,left:u}=Ql(Fe(o));if(c.length===0)return console.log(`
732
734
  No color change fixes it — waive the rule in [contrast] with a reason, or pick other colors`),1;console.log(`
733
735
  ${u.length===0?"These colors pass":"These colors come closer"}:
734
- ${Z4(c).join(`
735
- `)}`);let f=$f(n,o.name),l=!f||!Rc(f);if(!e)return console.log(`
736
- \`ttheme check --fix ${o.name}\` writes them${l?" as your tone of it":""}`),1;if(l){let d=In(nr(n,r,!1).palettes,o.name);return Ea(n,vu(Ut(n),o.name,Eh(d,Qe(is(a))))),Kt(n,r,i),console.log(`
737
- Saved as your tone of ${o.name} — R then s in \`ttheme edit ${o.name}\` puts its own colors back`),u.length===0?0:1}if(L(f,vh(Hg(f,"utf8"),is(a))),i.palettes.includes(o.name))Kt(n,r,i);return console.log(`
738
- Wrote ${f}`),u.length===0?0:1}function $f(t,e){let n=ut(e);return n&&Ui(t,!1).some((r)=>r.id===n)?gh(t,e):void 0}function Cg(t){let e=rs(t);if(!e)return;try{let{background:n,foreground:r,cursor:i,selection:o,ansi:s}=yh(e);return{background:n,foreground:r,cursor:i,selection:o,ansi:s}}catch{return}}function ax(t,e,n,r){return{code:(i)=>kh(cx(t,sn(xn(e,r(i),n.palettes)))),toml:r,command:"ttheme add"}}function cx(t,e){let n=$f(t,e.name),r=n&&Rc(n)?xn(e.name,Hg(n,"utf8"),[e]).waiveReason:void 0,i=Yl(t,e.name)??e.pictures,{pictures:o,...s}=wh(e,e.name,r);return{...s,...i?{pictures:i}:{}}}async function t6(t,e,n){if(t===e)return e;let r=n;if(r===void 0)if(!Ks())r="tuned";else{let i=await zh({message:`Share ${e.name} as…`,options:[{value:"tuned",label:"Your tone",hint:`named ${Ic(e.name)}`},{value:"original",label:"The original"}]});if(te(i))throw new de;r=i}return r==="original"?e:t}function Ic(t){return`${t}-tuned`}async function jg(t,e){let n=J(),r=ct(n),i=ox(nr(n,r),t,n),o=Sa(i,Ut(n)[i.name]),s=await t6(o,i,e),a=cx(n,s),c=s===o&&o!==i;if(c){let f=Ne(Ic(s.name));if(f)throw Error(`${Ic(s.name)} ${f} — share the original, or tune a palette with a shorter name`);a.name=Ic(s.name)}let u=rk(kh(a));if(console.log(u),process.stdout.isTTY)console.log(`
739
- ${WM(u).join(`
740
- `)}`),console.error(`
741
- Anyone can open the link or scan the code to see ${a.name}, and ttheme add <link> installs it${c?`
742
- It carries your tone, named ${a.name} so it does not clash with ${s.name}`:""}`)}import{spawn as e6,spawnSync as ux}from"node:child_process";import{existsSync as n6,readFileSync as lx}from"node:fs";import{homedir as r6}from"node:os";import{join as fx}from"node:path";function dx(t,e,n,r=r6(),i=(o)=>{process.stdout.write(o)}){if(!e||Ft(t)||t.TMUX||Vt(t)!=="terminal-app")return;let[o="",s="-"]=(t.TTHEME_TERMINAL_SHOWN??"").split(" "),a=t.TTHEME_TTY,c=o?Te(X(n),o,r):void 0,u=nl(ys(n)).get(ue(o))??[],f=u.find((G)=>G===`${C(o)}.${s}.png`)??u[0];if(!a||!c||s==="-"||!f||!n6(c.image))return;let l=fx(ys(n),f),d=["-l","JavaScript",el(n),"tab",a,fn(o)],h=K(n).terminalBase??"Basic",m=Lm(t,r),p=lx(l),b,$=l,k=0,v,E=!1,x=!1,M,R=(G)=>{E=!0,e6("osascript",[...d,h],{stdio:"ignore"}).on("close",()=>{if(E=!1,x)return;i(G);let et=M;M=void 0,et?.()})},F=(G,et)=>{b??=Gt(new Uint8Array(lx(c.image)));let q=fx(ys(n),`${C(o)}.h${process.pid}-${++k}.png`);Mi($,q,Tr(Nr(b,G,c.opacity,Cm(b.width,b.height,c,m)))),$=q,R(et)},N=()=>{if($!==l)Mi($,l,p),$=l},j=(G)=>{clearTimeout(v),v=setTimeout(()=>{if(E)M=G;else G()},nm)},z=()=>{clearTimeout(v),M=void 0};return{slots:[],paint(G){return j(G.name===o?()=>{N(),R("")}:()=>F(G.background,cr(G))),""},wear(G){return ux("osascript",[...d.slice(0,-1),fn(G.name),h],{encoding:"utf8"}).stdout?.trim()==="worn"?"":cr(G)},saved:async()=>new Map,restore(){return z(),x=!0,N(),ux("osascript",[...d,h],{stdio:"ignore"}),""},stop:z}}import{existsSync as Pc,readdirSync as i6,readFileSync as yf,rmSync as hx,statSync as px}from"node:fs";import{homedir as o6}from"node:os";import{join as vo}from"node:path";var s6=150,a6=260;function kf(t){return t?.includes(`path = "${C("")}`)===!0}function c6(t){try{return K(t).terminals.includes("warp")}catch{return!1}}function mx(t,e){let n=C(e);if(!Pc(t))return;return i6(t).filter((i)=>i.startsWith(`${n}.`)&&/^[0-9a-f]{8}\.yaml$/.test(i.slice(n.length+1))).map((i)=>({file:i,at:px(vo(t,i)).mtimeMs})).sort((i,o)=>o.at-i.at)[0]?.file??(Pc(vo(t,`${n}.yaml`))?`${n}.yaml`:void 0)}function u6(t,e){if(!e)return;let n;try{n=yf(vo(t,e),"utf8")}catch{return}let r=/^background_image:\n\s+path:\s*"([^"]*)"\n\s+opacity:\s*(\d+)/m.exec(n);return r?.[1]?{image:r[1],opacity:Number(r[2])/100}:void 0}function gx(t,e,n,r=o6()){if(!e||Ft(t)||t.TMUX||Vt(t)!=="warp")return;let i=si(r,n);if(!Pc(i)||!c6(n))return;let o=Vi(r),s=il(n),a=[],c=t.TTHEME_WARP_WEARS??je(K(n)),u=u6(o,c&&mx(o,c)),f,l,d=(b)=>{let $=yf(i,"utf8"),k=ai($);if(k===b)return;if(kf(b)&&!kf(k)&&!Pc(s))L(s,k??"");if(kn(i,ol($,b)),!kf(b))hx(s,{force:!0})},h=(b)=>{for(let $ of a.splice(0))if($===b)a.push($);else hx(vo(o,$),{force:!0})},m=()=>{clearTimeout(f),clearTimeout(l)},p=(b,$,k)=>{m(),f=setTimeout(()=>{let v=$;if(!v)v=`${C(b.name)}.view-${process.pid}-${a.length+1}.yaml`,L(vo(o,v),Ta(b,k)),a.push(v);let E=v,x=Date.now()-px(vo(o,E)).mtimeMs;l=setTimeout(()=>{d(Bm(b.name,E)),h(E)},Math.max(0,a6-x))},s6)};return{slots:[],paint:(b)=>{if(b.name===c)p(b,mx(o,b.name));else if(u)p(b,void 0,u);else p(b,Pc(vo(o,`${C(b.name)}.yaml`))?`${C(b.name)}.yaml`:void 0);return""},wear:(b,$)=>$.includes("warp")?"":void 0,saved:async()=>new Map([["theme",ai(yf(i,"utf8"))??""]]),restore:(b)=>{m();let $=b.get("theme");if($)d($);else if(kf(ai(yf(i,"utf8"))))d(rl);return h(),""}}}function zs(t,e,n){return dx(t,e,n)??my(t,e)??gx(t,e,n)}function vf(t){An(`
743
- ${t} palettes installed — open a new tab, or reload your terminal config`)}function f6(t,e){return t.map((n)=>{if(rs(n))return n;let r=ut(n);if(r===void 0)return e===Z?n:`${e}/${n}`;if(r!==e)throw Error(`${n} is not in ${e} — give its bare name, or leave --market out`);return n})}async function bx(t,e){let n=t.find((d)=>/^https?:\/\//i.test(d.trim())&&!rs(d));if(n)throw Error(`${n} is not a share link — one reads ${mh}tt2:…`);let r=J(),i=e?f6(t,(await mp(r,e)).id):t,o=ct(r),s=new Map,a=[...new Set(i.map((d)=>{let h=rs(d);if(!h)return d;let m=YM(r,h,o);return s.set(m.name,m),m.name}))],c=K(r),u=a.filter((d)=>c.palettes.includes(d)),f=a.filter((d)=>!c.palettes.includes(d));if(f.length===0){Kt(r,o,c),console.log(`Already installed: ${u.join(", ")}`);return}let l={...c,palettes:[...c.palettes,...f]};Ve(r,o,c,l);for(let d of f)console.log(` + ${d}`);await po(r,Wt(r,o,!1).palettes.filter((d)=>f.includes(d.name)).map((d)=>{let h=s.get(d.name);return h?{...d,pictures:h.pictures}:d}),l.terminals),vf(l.palettes.length)}function wx(t){let e=J(),n=ct(e),r=K(e),i=t.filter((a)=>r.palettes.includes(a)),o=t.filter((a)=>!r.palettes.includes(a));if(i.length===0)throw Error(`not installed: ${o.join(", ")} — \`ttheme list\` marks what is`);let s={...r,palettes:r.palettes.filter((a)=>!i.includes(a))};Ve(e,n,r,s),Ss(e,n,r.terminals,i);for(let a of i)console.log(` - ${a}`);if(vf(s.palettes.length),o.length>0)return console.error(`ttheme remove: not installed: ${o.join(", ")}`),1;return 0}function $x(t){let e=J(),n=ct(e),r=K(e);if(!r.palettes.includes(t))throw Error(`${t} is not installed — \`ttheme add ${t}\` first`);let{off:i,...o}=r,s=Ve(e,n,r,{...o,startup:t},!0);console.log(Ex(t,r.terminals,s).join(`
744
- `))}function kx(){let t=J();Kt(t,ct(t),K(t))}function yx(){let t=J(),e=K(t),n=Qi(e);if(!n)throw Error("no palettes installed — `ttheme` picks some");if(!e.off){console.log(`Already on · ${n}`);return}let{off:r,...i}=e,o=Ve(t,ct(t),e,i);console.log(Ex(n,i.terminals,o).join(`
745
- `))}function vx(){let t=J(),e=K(t);if(e.off){console.log("Already off");return}let n=Ve(t,ct(t),e,{...e,off:!0}),r=Qi(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of yt(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function Ex(t,e,n){let r=yt(e).filter((o)=>!o.defaults),i=r.length>0?[`Default ${t} · ${r.map((o)=>o.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let o of yt(e)){let s=o.defaults?.profile(t);if(s)i.push(n.get(o.id)?.restart?`${o.name} new tabs open with it once ${o.name} restarts — "${s}" is now its default profile`:`${o.name} new tabs open with it — "${s}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function d6(t,e){let n=new Map(e.palettes.map((r)=>[r.name,"market"]));for(let r of ku(t,e.palettes,!1))n.set(r.name,"mine");return n}function Sx(t,e=!1){let n=J(),r=ct(n),i=new Set(K(n).palettes),o=d6(n,r),s=Tt(Wt(n,r).palettes);if(t)Gi(s);let a=Fi(t?kk(s,t):s),c=(d)=>o.get(d)??"kept";if(e){let d=a.map((h)=>({name:h.name,group:h.group,...h.catalog?{catalog:h.catalog}:{},installed:i.has(h.name),source:c(h.name)}));console.log(JSON.stringify(d,null,2));return}let u=Math.max(...a.map((d)=>d.name.length),0),f={market:"",mine:" · yours",kept:" · in no market you added"},l=Ut(n);for(let d of a){let h=d.catalog?`${d.group} / ${d.catalog}`:d.group,m=l[d.name]?" · tuned":"";console.log(` ${i.has(d.name)?"●":"○"} ${d.name.padEnd(u)} ${h}${f[c(d.name)]}${m}`)}if(process.stdout.isTTY){let d=t?`${a.length} of ${s.length}`:`${s.length}`;console.log(`
746
- ${d} palettes — ${a.filter((h)=>i.has(h.name)).length} installed`)}}function h6(t,e,n){let r=(o)=>{try{return ui(t,o)}catch{return}},i=e.find((o)=>o===n||ot(o)===n||r(o)===n);if(!i)throw Error(`no market named ${n} — \`ttheme market\` lists them`);return i}async function Mx(t=[]){let e=J(),n=ts(e),r=t.map((m)=>h6(e,n,m)),i=await rv(),o=!1;if(i.latest)try{return nv(i.latest,t)}catch(m){o=!0,console.log(` ttheme could not update to ${i.latest}: ${m.message}`)}else console.log(i.note);let s=(r.length>0?r:n).filter((m)=>m!==Z);if(r.length===0&&s.length===0)console.log("No markets to update — `ttheme market add <owner>/<repo>` adds one");let a=(m,p)=>`${pv(m,p)} — kept the copy from the last update`;for(let m of s.filter(Ht))try{console.log(` ${Tv(e,m)}`)}catch(p){console.log(` ${a(m,p)}`)}let c=s.filter((m)=>!Ht(m)),u=new Set(c),f=[],l=ci(),d=()=>l.set(`Updating ${[...u].map(ot).join(", ")}${c.length>1?` · ${c.length-u.size}/${c.length}`:""}`);if(d(),await Promise.all(c.map(async(m)=>{let p=await ap(e,m);if("refreshed"in p)f.push(p.refreshed);if(u.delete(m),u.size>0)d();else l.done();l.say(` ${"refreshed"in p?up(p.refreshed):a(m,p.failure)}`)})),l.done(),!l6(Xn(e)))return o?1:0;for(let m of io(e,f))console.log(` ${m}`);let h=fp(e);if(h)console.log(h);return o?1:0}async function xx(t,e){let n=ct(t,!1),r=new Map(ss(t,n).filter((a)=>e.includes(a.name)).map((a)=>[a.name,a]));if(r.size===0)return;let i=qr(t);os(t,i.map((a)=>r.get(a.name)??a));let o=K(t);Kt(t,n,o);let s=new Map(i.map((a)=>[a.name,a.pictures]));await po(t,Wt(t,n,!1).palettes.filter((a)=>r.has(a.name)).map((a)=>gS(a,s.get(a.name))),o.terminals)}async function _g(t,e,n,r=!1){let i=process.env.TTHEME_SORT==="series"?t.palettes:Fi(t.palettes);Gi(i);let o=process.stdout.isTTY===!0,s=zs(process.env,o,J()),a=s?await s.saved():new Map,c=new Mp({entries:i,scope:n,installed:e,required:r,color:!Ft(),fx:Ol(process.env.TTHEME_FX),onFocus:s?(f)=>process.stdout.write(s.paint(f)):void 0}),u=await c.prompt();if(s)process.stdout.write(s.restore(a));if(u==="cancel")return;return t.palettes.filter((f)=>c.picked.has(f.name)).map((f)=>f.name)}function Gg(t,e,n,r){let i=n===Z?void 0:Ka(t,n),o;try{o=i?.id??ui(t,n)}catch{o=kt(n)?Ur(n):ot(n)}return{source:n,id:o,...i?.info.description?{description:i.info.description}:{},shown:ot(n),entries:n===Z?Ps(t,n):i?.entries??[],auto:Wr(n,e.updates),status:bp(t,n,r)}}function Bg(t){return ss(t,ct(t,!1)).map((e)=>e.name)}function m6(t,e,n,r,i){return{refresh:async(o)=>{if(Ht(o)){let a=Gg(t,e,o,fr());return{market:a,refreshed:{source:o,id:a.id,count:Tt(a.entries).length,change:{added:[],changed:[],gone:[]}},updates:Bg(t)}}let s=await sp(t,o,rp);return{market:Gg(t,e,o,fr()),refreshed:s,updates:Bg(t)}},fetch:async(o)=>{if(Ht(o)){let a=an(o),c=be(a);return{source:o,id:c,...a.description?{description:a.description}:{},shown:ot(o),entries:On(o,c,Ps(t,Z),fe(!1)),auto:!1,status:"read in place"}}let s=await Wa(t,o,void 0,r);return n.set(o,s),{source:o,id:s.id,..."info"in s&&s.info.description?{description:s.info.description}:{},shown:ot(o),entries:s.entries,auto:Wr(o,{}),status:"not added yet"}},search:(o)=>$p(o,r),apply:i}}function Ox(...t){for(let e of io(...t))An(e)}function p6(t,e,n){let r=[];for(let i of t.adds){let o=i.source!==Z&&(t.auto[i.source]??i.auto);r.push(`Added ${i.id} · ${i.shown} — ${zt(Tt(i.entries).length)}${o?", updating on its own":""}`)}for(let i of t.removes){let o=e.find((a)=>a.source===i)?.id??i;r.push(`Removed ${o} · ${ot(i)}`);let s=n.filter((a)=>(ut(a)??Z)===o);if(s.length>0)r.push(gp(s))}for(let[i,o]of Object.entries(t.auto)){let s=e.find((a)=>a.source===i);if(s&&!t.removes.includes(i))r.push(`${s.id} ${o?"updates on its own now":"no longer updates on its own"}`)}return r}async function g6(t,e,n,r){let i=K(t),o=n.adds.length+n.removes.length+Object.keys(n.auto).length>0;for(let m of n.adds){let p=r.get(m.source);if(p)Rs(t,p)}for(let m of n.removes)pp(t,m);let s=[...Dt(i.markets).filter((m)=>!n.removes.includes(m)),...n.adds.map((m)=>m.source)],a=Da(i,s,{...i.updates,...n.auto});if(o)Ze(t,a);let c=ct(t,!1),u=Wt(t,c,!1).palettes.filter((m)=>n.picked.has(m.name)).map((m)=>m.name),f=i.palettes.filter((m)=>!u.includes(m)),l=u.filter((m)=>!i.palettes.includes(m)),d=n.renew.filter((m)=>u.includes(m));if(!o&&l.length===0&&f.length===0&&d.length===0){Ox(t,n.refreshed),An("Nothing changed");return}let h={...a,palettes:u};Ve(t,c,i,h),Ss(t,c,i.terminals,f);for(let m of p6(n,e,u))An(m);for(let m of l)An(` + ${m}`);for(let m of f)An(` - ${m}`);for(let m of io(t,n.refreshed))An(m);if(await po(t,Wt(t,c,!1).palettes.filter((m)=>l.includes(m.name)),h.terminals),d.length>0){await xx(t,d);for(let m of d)An(` ↑ ${m}`)}if(l.length>0||f.length>0)vf(h.palettes.length)}async function Ix(){let t=Pk(process.env),e=J(),n=K(e),r=qr(e),i=fr(),o=Os(),s=Dt(n.markets).map((k)=>Gg(e,n,k,i)),a=new Set(s.flatMap((k)=>k.entries.map((v)=>v.name))),c=r.filter((k)=>n.palettes.includes(k.name)&&!a.has(k.name));Gi([...s.flatMap((k)=>k.entries),...c]);let u=new Map,f=new AbortController,l=process.stdout.isTTY===!0,d=zs(process.env,l,e),h=d&&!t?await d.saved():new Map,m=je(n);if(t)process.stdout.write("\x1B[?2026h");let p=new Op({markets:s,kept:c,installed:n.palettes,updates:Bg(e),tuned:Object.keys(Ut(e)),...m?{startup:m}:{},...t?{hub:t}:{},due:o?op(e,n):[],io:m6(e,n,u,f.signal,(k,v)=>K1({say:v.say,set:v.status},()=>g6(e,s,k,u))),...process.env.TTHEME_SORT==="series"?{}:{order:Fi},color:!Ft(),lookups:process.env.TTHEME_MARKET_LOOKUP!=="off",fx:Ol(process.env.TTHEME_FX),owns:l&&!t,...d?{onFocus:(k)=>process.stdout.write(d.paint(k))}:{}});try{await p.run()}finally{if(d?.stop?.(),d&&(!t||p.next()===void 0))process.stdout.write(d.restore(h));f.abort()}await p.idle();let b=p.result(),$=p.next();if(t&&$!==void 0)return Ox(e,b.refreshed),$;if(l&&t)process.stdout.write("\x1B[?1049l\x1B[?25h");for(let k of b.refreshed){let v=lp(k);if(v)console.log(v)}if(p.applied()){for(let v of p.lines())console.log(v);let k=p.failure();if(k)throw k}else{for(let k of io(e,b.refreshed))console.log(k);console.log("Nothing changed")}return t?Ou:0}import{rmSync as Rx}from"node:fs";import{basename as b6,join as Ac}from"node:path";var Px=Ac(import.meta.dirname,".."),w6=Ac(Px,"themes"),Ug=Ac(Px,"dist"),Ef=ee.map((t)=>lr[t].emitter),$6=[um,pm],PZ=Ef.map((t)=>t.id);async function Sf({only:t}={}){if(typeof Bun>"u")throw Error("needs bun — run it from a checkout: bun src/bin.ts build");let e=t&&t.length>0?Ef.filter((o)=>t.includes(o.id)):Ef,n=V0(w6),r=zb(n);if(r.length>0){for(let o of r)console.error(` ✗ ${o.theme} [${o.rule}] ${o.detail}`);throw Error(`${r.length} contrast violation(s). Fix the palette, or waive the rule in its [contrast] section with a reason.`)}if(e.length===Ef.length)Rx(Ug,{recursive:!0,force:!0});else for(let o of e)Rx(Ac(Ug,o.id),{recursive:!0,force:!0});let i=0;for(let o of[...e,...$6]){let s=n.flatMap((u)=>o.emit?.(u)??[]),a=o.emitShared?.(n)??[];for(let u of[...s,...a])await Bun.write(Ac(Ug,u.path),u.content),i++;let c=s.length>0?`${n.length} themes${o.limits?` (${o.limits})`:""}`:a.length>0?a.map((u)=>b6(u.path)).join(" "):`no files (${o.limits??"nothing to write"})`;console.log(` ${o.id.padEnd(16)} ${c}`)}console.log(`
747
- ${n.length} themes (${X0(n).length} in the new-tab rotation) -> ${i} files in dist/`)}import{existsSync as v6,readFileSync as Fx}from"node:fs";import{availableParallelism as k6,homedir as Ax}from"node:os";var y6=4;async function Mf(t,e,n=Ax()){let r=Nt(X(t)),i=ti(t),o=new Map(we(t).palettes.map((l)=>[l.name,zo(l)])),s=Object.entries(r.palettes).flatMap(([l,d])=>{let h=o.get(l);return h?d.pictures.filter((m)=>qo(m)||(m.blur??0)!==i).map((m)=>({name:l,key:m.key,paint:h})):[]});if(s.length===0)return 0;e(`Drawing ${s.length} background picture${s.length===1?"":"s"} again${i?` · blur ${i}px`:""}`);let a=to(K(t).terminals),c=new dg(Math.min(y6,k6()-1)),u=await c.map(s.map(({name:l,key:d,paint:h})=>({job:"redraw",home:t,user:n,name:l,key:d,paint:h,blur:i,aligns:a})));c.close();let f=[];return u.forEach((l,d)=>{let{name:h,key:m}=s[d];if(l instanceof Error||l===null){e(` ▢ ${h} ${m} — ${l instanceof Error?l.message:"no original to draw it from"}, left as it was`);return}f.push({name:h,picture:l})}),th(t,f),_e(t,n),f.length}async function Nx(t,e,n,r,i=Ax()){let o=Nt(X(t)).palettes[e],s=o?.pictures.find((f)=>f.key===(r??o.active));if(!o||!s)throw Error(`${e} has no picture ${r??"shown"}`);if(Ke(s)===n)return{key:s.key,changed:!1};let a=we(t).palettes.find((f)=>f.name===e);if(!a)throw Error(`no palette called ${e}`);let c=to(K(t).terminals),u=await Zl(t,e,s.key,zo(a),ti(t),c,i,n);if(!u)throw Error(`${e} ${s.key} has no original to draw it from`);return th(t,[{name:e,picture:u}]),_e(t,i),{key:s.key,changed:!0}}function Tx(t,e,n){let r=Nt(X(t)).palettes[e],i=r?.pictures.find((a)=>a.key===(n??r.active));if(!r||!i)throw Error(`${e} has no picture ${n??"shown"}`);let o=we(t).palettes.find((a)=>a.name===e);if(!o)throw Error(`no palette called ${e}`);let s=Ke(i)==="original"?"tone":"original";if(!$S(t,e,i.key,zo(o),ti(t),s))throw Error(`${e} ${i.key} has no original to draw it from`);return{key:i.key,coloring:s}}async function Hx(){return await Mf(J(),(t)=>process.stderr.write(`${t}
748
- `)),0}async function Lx(t,e,n){let r=J();if(In(we(r).palettes,t),e==="show"){if(!n)throw Error("image show needs the picture to show");let{at:i,of:o}=Do(r,t,n);return _e(r),process.stderr.write(`Background · ${t} ${i}/${o} ${n}
749
- `),0}if(e==="drop"){let{key:i,left:o}=cu(r,t,n);return _e(r),process.stderr.write(`Background · ${t} removed ${i} · ${o} left
750
- `),0}if(e==="tone"||e==="original"){let i=await Nx(r,t,e,n);return process.stderr.write(`Background · ${t} ${i.key} ${e==="tone"?"tinted":"in its own colors"}
751
- `),0}if(e==="prepare"){let{key:i,coloring:o}=Tx(r,t,n);return process.stderr.write(`Background · ${t} ${i} ready in ${o==="tone"?"its tone":"its own colors"}
752
- `),0}if(e==="tuned")return _e(r),0;throw Error(`unknown image action ${e} — show, drop, tone, original, prepare or tuned`)}function Cx(t,e){let n=/^(\d+)x(\d+)$/.exec(t),r=/^(\d+)x(\d+)([+-]\d+)([+-]\d+)$/.exec(e);if(!n||!r)throw Error("a canvas is <width>x<height> and a place <width>x<height>+<x>+<y>");let[i,o]=n.slice(1).map(Number),[s,a,c,u]=r.slice(1).map(Number);return{width:i,height:o,at:{x:c,y:u,w:s,h:a}}}function E6(t,e,n){let r=Cx(e,n),i=Math.min(1,t.width/r.at.w);if(i===1)return r;return{width:Math.max(1,Math.round(r.width*i)),height:Math.max(1,Math.round(r.height*i)),at:{x:Math.round(r.at.x*i),y:Math.round(r.at.y*i),w:t.width,h:t.height}}}function jx(t,e,n,r){let i=Gt(new Uint8Array(Fx(t)));return L(e,We(Vw(i,Cx(n,r)))),0}function _x(t,e,n,r,i,o,s){let a=Number(r);if(!he(n)||!Number.isFinite(a))throw Error("flatten needs a #rrggbb background and an opacity from 0 to 1");let c=Gt(new Uint8Array(Fx(t))),u=i?E6(c,i,o??""):void 0,f=Tr(Nr(c,n,Math.max(0,Math.min(1,a)),u));if(s&&v6(s))Mi(s,e,f);else L(e,f);return 0}import{execFileSync as S6}from"node:child_process";import{readFileSync as M6}from"node:fs";import{arch as x6,platform as xf,release as Wg}from"node:os";var O6={ghostty:"ghostty",iterm2:"iTerm.app",wezterm:"WezTerm","terminal-app":"Apple_Terminal",warp:"WarpTerminal"};function I6(t,e){if(t==="konsole"){let r=/^(\d{2})(\d{2})(\d{2})$/.exec(e.KONSOLE_VERSION??"");return r?`${r[1]}.${r[2]}.${Number(r[3])}`:e.KONSOLE_VERSION}let n=O6[t];return n!==void 0&&e.TERM_PROGRAM===n?e.TERM_PROGRAM_VERSION:void 0}function R6(t){let e=Vt(t),n=t.TERM_PROGRAM&&t.TERM_PROGRAM!=="tmux"?t.TERM_PROGRAM:void 0,r=e==="unknown"?`unknown${n?` (TERM_PROGRAM=${n})`:""}`:e==="editor"?`editor (${em(t)})`:`${e} ${I6(e,t)??"(version unknown)"}`,i=t.TERM_PROGRAM==="tmux"?t.TERM_PROGRAM_VERSION:void 0;return[r,t.TMUX?`tmux ${i??"yes"}`:"tmux no",t.SSH_CONNECTION||t.SSH_TTY?"ssh yes":"ssh no"].join(" · ")}function Gx(t,e){try{return S6(t,e,{encoding:"utf8",timeout:2000,stdio:["ignore","pipe","ignore"]}).trim()}catch{return}}function P6(){let t=x6();if(xf()==="darwin")return`macOS ${Gx("sw_vers",["-productVersion"])??`(Darwin ${Wg()})`} · ${t}`;if(xf()==="linux"){let e="";try{e=M6("/etc/os-release","utf8")}catch{}return`${/^PRETTY_NAME="?([^"\n]*)"?$/m.exec(e)?.[1]??"Linux"} · linux ${Wg()} · ${t}`}return`${xf()==="win32"?"Windows":xf()} ${Wg()} · ${t}`}function A6(t){if(t.TTHEME_ZSH)return`zsh ${t.TTHEME_ZSH}`;return(t.SHELL?Gx(t.SHELL,["--version"])?.split(`
753
- `)[0]:void 0)??t.SHELL??"unknown"}function N6(t){try{let{terminals:e}=K(t);return e.length>0?e.join(", "):"none"}catch{return"installed.json missing or unreadable"}}function T6(t){let e=zu.flatMap((n)=>{let r=t[n];return r===void 0||r===Pa(n)?[]:[`${n}=${/\s/.test(r)?JSON.stringify(r):r}`]});return e.length>0?e.join(" "):void 0}function Bx(){let t=process.env,n=[["ttheme",ft.version],["OS",P6()],["Shell",A6(t)],["Terminal",R6(t)],["Wired",N6(J())],["Settings",T6(t)]].filter((i)=>i[1]!==void 0),r=Math.max(...n.map(([i])=>i.length));for(let[i,o]of n)console.log(`${i.padEnd(r)} ${o}`)}import{execFileSync as F6,spawnSync as L6}from"node:child_process";import{chmodSync as C6,copyFileSync as j6,existsSync as vr,mkdirSync as Xx,readdirSync as _6,readFileSync as Hc,rmSync as qg}from"node:fs";import{homedir as G6}from"node:os";import{dirname as qs,join as mt}from"node:path";import{existsSync as Ux}from"node:fs";import{basename as H6,join as Nc}from"node:path";var Wx=["zsh","bash","fish"];function Of(t){let e=H6(t??"").replace(/^-/,"");return Wx.includes(e)?e:void 0}function zg(t,e){for(let n=e,r=0;n>1&&r<12;r++){let[i,...o]=t("ps",["-o","ppid=,comm=","-p",String(n)])?.trim().split(/\s+/)??[],s=Of(o.join(" "));if(s)return s;n=Number(i)}return}function Kx(t,e){let n=new Set(["zsh"]);for(let r of[Of(t.env.SHELL),zg(t.run,e)])if(r)n.add(r);return Wx.filter((r)=>n.has(r))}var Kg="ttheme-zdotdir:";function If(t,e){if(t.env.ZDOTDIR)return t.env.ZDOTDIR;let n=t.run("zsh",["-c",`print -rn -- "${Kg}\${ZDOTDIR:-$HOME}"`])??"",r=n.lastIndexOf(Kg);return r>=0&&n.slice(r+Kg.length)||e}function zx(t){return t.run("zsh",["-fc","print ok"])==="ok"}var qx=[".bash_profile",".bash_login",".profile"];function Dx(t,e){let n=Nc(t,".bashrc"),r=qx.map((o)=>Nc(t,o)).find((o)=>Ux(o)),i=[...Ux(n)?[n]:[],...r?[r]:[]];if(e==="darwin"&&!r)i.push(Nc(t,".bash_profile"));return i.length>0?i:[n]}function Jx(t){return[".bashrc",...qx].map((e)=>Nc(t,e))}var Yx=`zsh -c 'source ${Ku} && ttheme "$@"' ttheme`;function Zx(){return`# ${ke}
754
- ttheme() { ${Yx} "$@"; }`}function Rf(t){return Nc(t,"fish","functions","ttheme.fish")}function Vx(){return[`# ${ke}`,"function ttheme --description 'Run ttheme through zsh'",` ${Yx} $argv`,"end",""].join(`
755
- `)}function Pf(t){return t.startsWith(`# ${ke}
756
- `)}function B6(t,e,n){for(let r of _6(e))t.push({from:mt(e,r),to:mt(n,r)})}function Zg(t){return zr(Hc(mt(t,"dist","manifest.json"),"utf8"))}function Af(t,e){let n=mt(e.configHome,"ttheme"),r=[{from:mt(e.root,"bin","ttheme.js"),to:mt(n,"ttheme.js")},{from:mt(e.root,"bin","ttheme.js.map"),to:mt(n,"ttheme.js.map")},{from:mt(e.root,"bin","package.json"),to:mt(n,"package.json")},{from:mt(e.root,"shell","ttheme.zsh"),to:mt(n,"ttheme.zsh")},{from:mt(e.root,"shell","preview.zsh"),to:mt(n,"preview.zsh")},{from:mt(e.root,"shell","launch-tab.zsh"),to:mt(n,"launch-tab.zsh"),executable:!0}];B6(r,mt(e.root,"shell","adapters"),mt(n,"adapters"));let i=e.shells??["zsh"],o=[{file:mt(e.zdotdir,".zshrc"),block:Ey(),about:"source ttheme.zsh"},...i.includes("bash")?Dx(e.home,e.platform??process.platform).map((p)=>({file:p,block:Zx(),about:"the ttheme command, run through zsh"})):[]],s=Rf(e.configHome),a=!vr(s)||Pf(Hc(s,"utf8")),c=i.includes("fish")&&a?[{file:s,content:Vx(),about:"the ttheme command, run through zsh"}]:[],u=mt(n,"config.zsh"),f=My(vr(u)?Hc(u,"utf8"):""),l={file:u,content:t.warpFast===void 0?f:Du(f,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},d={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries(yt(t.terminals).flatMap((p)=>Object.entries(p.installs?.(e)??{}).filter(([,b])=>b!==void 0))),...t.off?{off:!0}:{}},h=[...dl(e.configHome,d,e.home),...i.includes("fish")&&!a?[`${wt(s,e.home)} is a function of your own — ttheme left it, so fish has no ttheme command`]:[],...i.some((p)=>p!=="zsh")?[`${i.filter((p)=>p!=="zsh").join(" and ")} run ttheme through zsh — a pin taking effect on cd, the picture following the tab in front and the repaint after a program resets the colors stay with zsh tabs`]:[]],m=e.stateDir?[mt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:o,writes:c,settings:l,forget:m,catalog:Zg(e.root),installed:d,notes:h}}function t2(t){try{return K(t)}catch{return}}function e2(t,e){try{return Wt(t,ct(t,!1,e),!1).palettes}catch{return[]}}function U6(t,e){let n=Zg(e.root),r=Dt(t.markets).includes(Z)?n.palettes:[],i=new Set(r.map((s)=>s.name)),o=e2(e.configHome,n).filter((s)=>!i.has(s.name)&&(ut(s.name)!==void 0||t.palettes.includes(s.name)));return{...n,palettes:[...r,...o]}}function n2(t,e){let n=Qi(t);return n&&e.includes(n)?n:void 0}function W6(t,e,n){let r=Af(e,n),i=n2(t,e.palettes),o=new Set(["terminals","palettes","off","startup",...ee.flatMap((a)=>Object.keys(lr[a].installs?.(n)??{}))]),s=Object.fromEntries(Object.entries(t).filter(([a])=>!o.has(a)));return{...r,installed:{...s,...r.installed,...i?{startup:i}:{}}}}function K6(t,e){let n=Af({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.catalog.palettes,...e2(e.configHome,n.catalog)].map((f)=>f.name)),i=t.palettes.filter((f)=>r.has(f)),o=t.palettes.filter((f)=>!r.has(f)),{startup:s,...a}=t,c={...a,palettes:i,...s&&i.includes(s)?{startup:s}:{}},u=o.length>0?[`Dropped ${o.join(", ")} — no longer in the catalog`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function z6(t){try{return F6(process.execPath,[mt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function r2(t){let e=je(t);return[yt(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function Dg(t,e=Ye()){for(let s of t.copies)if(Xx(qs(s.to),{recursive:!0}),qg(s.to,{force:!0}),qg(`${s.to}.zwc`,{force:!0}),j6(s.from,s.to),s.executable)C6(s.to,493);L(t.settings.file,t.settings.content);for(let s of t.forget)qg(s,{force:!0});let n=qs(qs(t.settings.file)),r=t2(n),i=Object.fromEntries(yt(t.installed.terminals).flatMap((s)=>{let a=s.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),o=_a(n,{...t.installed,...i},e,t.home);if(Dt(o.markets).includes(Z))mk(n,t.catalog);Ze(n,o),Kt(n,ct(n),o,t.home,e);for(let s of t.edits){Xx(qs(s.file),{recursive:!0});let a=vr(s.file)?Hc(s.file,"utf8"):"";kn(s.file,Qr(a,s.block))}for(let s of t.writes)L(s.file,s.content);return eo(n,o,!0,e,t.home)}function Tc(t){if(te(t))throw Zr("Nothing changed"),new de;return t}function Jg(t,e){return ee.filter((n)=>lr[n].offered(t,e))}async function q6(t,e,n,r){return Tc(await ry({message:"Wire which terminals?",options:Jg(n,r).map((i)=>({value:i,label:lr[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function D6(t){return Tc(await Le({message:"Switch Warp to each tab's palette in about 0.2 s instead of 0.6 s?\nAbout 8% CPU while Warp is in front with tabs of different palettes — `ttheme config` changes it",initialValue:gs(t,"TTHEME_WARP_FAST")!=="off"}))}function Yg(t){let e=[...t.copies.filter((n)=>!vr(n.to)).map((n)=>n.to),...vr(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!Hc(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file),...t.writes.filter((n)=>!vr(n.file)).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
736
+ ${Fj(c).join(`
737
+ `)}`);let f=Pf(n,o.name),l=!f||!jc(f);if(!e)return console.log(`
738
+ \`ttheme check --fix ${o.name}\` writes them${l?" as your tone of it":""}`),1;if(l){let d=In(sr(n,r,!1).palettes,o.name);return Aa(n,Iu(Wt(n),o.name,Nh(d,tn(cs(a))))),zt(n,r,i),console.log(`
739
+ Saved as your tone of ${o.name} — R then s in \`ttheme edit ${o.name}\` puts its own colors back`),u.length===0?0:1}if(C(f,Ah(Ug(f,"utf8"),cs(a))),i.palettes.includes(o.name))zt(n,r,i);return console.log(`
740
+ Wrote ${f}`),u.length===0?0:1}function Pf(t,e){let n=ut(e);return n&&Di(t,!1).some((r)=>r.id===n)?Mh(t,e):void 0}function zg(t){let e=as(t);if(!e)return;try{let{background:n,foreground:r,cursor:i,selection:o,ansi:s}=Rh(e);return{background:n,foreground:r,cursor:i,selection:o,ansi:s}}catch{return}}function Sx(t,e,n,r){return{code:(i)=>Ih(Ex(t,an(On(e,r(i),n.palettes)))),toml:r,command:"ttheme add"}}function Ex(t,e){let n=Pf(t,e.name),r=n&&jc(n)?On(e.name,Ug(n,"utf8"),[e]).waiveReason:void 0,i=of(t,e.name)??e.pictures,{pictures:o,...s}=Oh(e,e.name,r);return{...s,...i?{pictures:i}:{}}}async function _j(t,e,n){if(t===e)return e;let r=n;if(r===void 0)if(!Js())r="tuned";else{let i=await Qh({message:`Share ${e.name} as…`,options:[{value:"tuned",label:"Your tone",hint:`named ${Cc(e.name)}`},{value:"original",label:"The original"}]});if(ee(i))throw new de;r=i}return r==="original"?e:t}function Cc(t){return`${t}-tuned`}async function Dg(t,e){let n=J(),r=at(n),i=yx(sr(n,r),t,n),o=Na(i,Wt(n)[i.name]),s=await _j(o,i,e),a=Ex(n,s),c=s===o&&o!==i;if(c){let f=Te(Cc(s.name));if(f)throw Error(`${Cc(s.name)} ${f} — share the original, or tune a palette with a shorter name`);a.name=Cc(s.name)}let u=wk(Ih(a));if(console.log(u),process.stdout.isTTY){let f=ox(u);if(f)console.log(`
741
+ ${f.join(`
742
+ `)}`);console.error(`
743
+ Anyone can open the link${f?" or scan the code":""} to see ${a.name}, and ttheme add <link> installs it${c?`
744
+ It carries your tone, named ${a.name} so it does not clash with ${s.name}`:""}`)}}import{spawn as Gj,spawnSync as Mx}from"node:child_process";import{existsSync as Bj,readFileSync as xx}from"node:fs";import{homedir as Uj}from"node:os";import{join as Ox}from"node:path";function Px(t,e,n,r=Uj(),i=(o)=>{process.stdout.write(o)}){if(!e||Ft(t)||t.TMUX||Zt(t)!=="terminal-app")return;let[o="",s="-"]=(t.TTHEME_TERMINAL_SHOWN??"").split(" "),a=t.TTHEME_TTY,c=o?He(X(n),o,r):void 0,u=ul(Es(n)).get(ue(o))??[],f=u.find((B)=>B===`${j(o)}.${s}.png`)??u[0];if(!a||!c||s==="-"||!f||!Bj(c.image))return;let l=Ox(Es(n),f),d=["-l","JavaScript",cl(n),"tab",a,dn(o)],h=z(n).terminalBase??"Basic",m=Km(t,r),p=xx(l),b,$=l,k=0,v,S=!1,x=!1,M,I=(B)=>{S=!0,Gj("osascript",[...d,h],{stdio:"ignore"}).on("close",()=>{if(S=!1,x)return;i(B);let F=M;M=void 0,F?.()})},L=(B,F)=>{b??=Bt(new Uint8Array(xx(c.image)));let pt=Ox(Es(n),`${j(o)}.h${process.pid}-${++k}.png`);Oi($,pt,Fr(Hr(b,B,c.opacity,zm(b.width,b.height,c,m)))),$=pt,I(F)},N=()=>{if($!==l)Oi($,l,p),$=l},_=(B)=>{clearTimeout(v),v=setTimeout(()=>{if(S)M=B;else B()},lm)},D=()=>{clearTimeout(v),M=void 0};return{slots:[],paint(B){return _(B.name===o?()=>{N(),I("")}:()=>L(B.background,fr(B))),""},wear(B){return Mx("osascript",[...d.slice(0,-1),dn(B.name),h],{encoding:"utf8"}).stdout?.trim()==="worn"?"":fr(B)},saved:async()=>new Map,restore(){return D(),x=!0,N(),Mx("osascript",[...d,h],{stdio:"ignore"}),""},stop:D}}import{existsSync as _c,readdirSync as Wj,readFileSync as Rf,rmSync as Ix,statSync as Ax}from"node:fs";import{homedir as Kj}from"node:os";import{join as xo}from"node:path";var zj=150,Dj=260;function If(t){return t?.includes(`path = "${j("")}`)===!0}function qj(t){try{return z(t).terminals.includes("warp")}catch{return!1}}function Rx(t,e){let n=j(e);if(!_c(t))return;return Wj(t).filter((i)=>i.startsWith(`${n}.`)&&/^[0-9a-f]{8}\.yaml$/.test(i.slice(n.length+1))).map((i)=>({file:i,at:Ax(xo(t,i)).mtimeMs})).sort((i,o)=>o.at-i.at)[0]?.file??(_c(xo(t,`${n}.yaml`))?`${n}.yaml`:void 0)}function Jj(t,e){if(!e)return;let n;try{n=Rf(xo(t,e),"utf8")}catch{return}let r=/^background_image:\n\s+path:\s*"([^"]*)"\n\s+opacity:\s*(\d+)/m.exec(n);return r?.[1]?{image:r[1],opacity:Number(r[2])/100}:void 0}function Nx(t,e,n,r=Kj()){if(!e||Ft(t)||t.TMUX||Zt(t)!=="warp")return;let i=si(r,n);if(!_c(i)||!qj(n))return;let o=no(r),s=dl(n),a=[],c=t.TTHEME_WARP_WEARS??je(z(n)),u=Jj(o,c&&Rx(o,c)),f,l,d=(b)=>{let $=Rf(i,"utf8"),k=ai($);if(k===b)return;if(If(b)&&!If(k)&&!_c(s))C(s,k??"");if($n(i,hl($,b)),!If(b))Ix(s,{force:!0})},h=(b)=>{for(let $ of a.splice(0))if($===b)a.push($);else Ix(xo(o,$),{force:!0})},m=()=>{clearTimeout(f),clearTimeout(l)},p=(b,$,k)=>{m(),f=setTimeout(()=>{let v=$;if(!v)v=`${j(b.name)}.view-${process.pid}-${a.length+1}.yaml`,C(xo(o,v),Ba(b,k)),a.push(v);let S=v,x=Date.now()-Ax(xo(o,S)).mtimeMs;l=setTimeout(()=>{d(Ym(b.name,S)),h(S)},Math.max(0,Dj-x))},zj)};return{slots:[],paint:(b)=>{if(b.name===c)p(b,Rx(o,b.name));else if(u)p(b,void 0,u);else p(b,_c(xo(o,`${j(b.name)}.yaml`))?`${j(b.name)}.yaml`:void 0);return""},wear:(b,$)=>$.includes("warp")?"":void 0,saved:async()=>new Map([["theme",ai(Rf(i,"utf8"))??""]]),restore:(b)=>{m();let $=b.get("theme");if($)d($);else if(If(ai(Rf(i,"utf8"))))d(fl);return h(),""}}}function Ys(t,e,n){return Px(t,e,n)??Ry(t,e)??Nx(t,e,n)}function Af(t){Hn(`
745
+ ${t} palettes installed — open a new tab, or reload your terminal config`)}function Vj(t,e){return t.map((n)=>{if(as(n))return n;let r=ut(n);if(r===void 0)return e===V?n:`${e}/${n}`;if(r!==e)throw Error(`${n} is not in ${e} — give its bare name, or leave --market out`);return n})}async function Tx(t,e){let n=t.find((d)=>/^https?:\/\//i.test(d.trim())&&!as(d));if(n)throw Error(`${n} is not a share link — one reads ${Sh}tt2:…`);let r=J(),i=e?Vj(t,(await vp(r,e)).id):t,o=at(r),s=new Map,a=[...new Set(i.map((d)=>{let h=as(d);if(!h)return d;let m=fx(r,h,o);return s.set(m.name,m),m.name}))],c=z(r),u=a.filter((d)=>c.palettes.includes(d)),f=a.filter((d)=>!c.palettes.includes(d));if(f.length===0){zt(r,o,c),console.log(`Already installed: ${u.join(", ")}`);return}let l={...c,palettes:[...c.palettes,...f]};Xe(r,o,c,l);for(let d of f)console.log(` + ${d}`);await $o(r,Kt(r,o,!1).palettes.filter((d)=>f.includes(d.name)).map((d)=>{let h=s.get(d.name);return h?{...d,pictures:h.pictures}:d}),l.terminals),Af(l.palettes.length)}function Hx(t){let e=J(),n=at(e),r=z(e),i=t.filter((a)=>r.palettes.includes(a)),o=t.filter((a)=>!r.palettes.includes(a));if(i.length===0)throw Error(`not installed: ${o.join(", ")} — \`ttheme list\` marks what is`);let s={...r,palettes:r.palettes.filter((a)=>!i.includes(a))};Xe(e,n,r,s),Os(e,n,r.terminals,i);for(let a of i)console.log(` - ${a}`);if(Af(s.palettes.length),o.length>0)return console.error(`ttheme remove: not installed: ${o.join(", ")}`),1;return 0}function Fx(t){let e=J(),n=at(e),r=z(e);if(!r.palettes.includes(t))throw Error(`${t} is not installed — \`ttheme add ${t}\` first`);let{off:i,...o}=r,s=Xe(e,n,r,{...o,startup:t},!0);console.log(_x(t,r.terminals,s).join(`
746
+ `))}function Lx(){let t=J();zt(t,at(t),z(t))}function Cx(){let t=J(),e=z(t),n=io(e);if(!n)throw Error("no palettes installed — `ttheme` picks some");if(!e.off){console.log(`Already on · ${n}`);return}let{off:r,...i}=e,o=Xe(t,at(t),e,i);console.log(_x(n,i.terminals,o).join(`
747
+ `))}function jx(){let t=J(),e=z(t);if(e.off){console.log("Already off");return}let n=Xe(t,at(t),e,{...e,off:!0}),r=io(e);console.log(`Off · new tabs open in the terminal's own colors${r?` — \`ttheme on\` wears ${r} again`:""}`);for(let i of yt(e.terminals))if(n.get(i.id)?.restart)console.log(`${i.name} new tabs open on your own profile once ${i.name} restarts`)}function _x(t,e,n){let r=yt(e).filter((o)=>!o.defaults),i=r.length>0?[`Default ${t} · ${r.map((o)=>o.name).join(", ")} open new tabs with it once their config reloads`]:[];for(let o of yt(e)){let s=o.defaults?.profile(t);if(s)i.push(n.get(o.id)?.restart?`${o.name} new tabs open with it once ${o.name} restarts — "${s}" is now its default profile`:`${o.name} new tabs open with it — "${s}" is its default profile`)}return i.length>0?i:[`Default ${t} · no terminal is wired to open with it — \`ttheme init\` wires one`]}function Zj(t,e){let n=new Map(e.palettes.map((r)=>[r.name,"market"]));for(let r of Ou(t,e.palettes,!1))n.set(r.name,"mine");return n}function Gx(t,e=!1){let n=J(),r=at(n),i=new Set(z(n).palettes),o=Zj(n,r),s=Tt(Kt(n,r).palettes);if(t)Ki(s);let a=_i(t?Fk(s,t):s),c=(d)=>o.get(d)??"kept";if(e){let d=a.map((h)=>({name:h.name,group:h.group,...h.catalog?{catalog:h.catalog}:{},installed:i.has(h.name),source:c(h.name)}));console.log(JSON.stringify(d,null,2));return}let u=Math.max(...a.map((d)=>d.name.length),0),f={market:"",mine:" · yours",kept:" · in no market you added"},l=Wt(n);for(let d of a){let h=d.catalog?`${d.group} / ${d.catalog}`:d.group,m=l[d.name]?" · tuned":"";console.log(` ${i.has(d.name)?"●":"○"} ${d.name.padEnd(u)} ${h}${f[c(d.name)]}${m}`)}if(process.stdout.isTTY){let d=t?`${a.length} of ${s.length}`:`${s.length}`;console.log(`
748
+ ${d} palettes — ${a.filter((h)=>i.has(h.name)).length} installed`)}}function Xj(t,e,n){let r=(o)=>{try{return ui(t,o)}catch{return}},i=e.find((o)=>o===n||rt(o)===n||r(o)===n);if(!i)throw Error(`no market named ${n} — \`ttheme market\` lists them`);return i}async function Bx(t=[]){let e=J(),n=is(e),r=t.map((m)=>Xj(e,n,m)),i=await yv(),o=!1;if(i.latest)try{return kv(i.latest,t)}catch(m){o=!0,console.log(` ttheme could not update to ${i.latest}: ${m.message}`)}else console.log(i.note);let s=(r.length>0?r:n).filter((m)=>m!==V);if(r.length===0&&s.length===0)console.log("No markets to update — `ttheme market add <owner>/<repo>` adds one");let a=(m,p)=>`${Tv(m,p)} — kept the copy from the last update`;for(let m of s.filter(Ht))try{console.log(` ${Zv(e,m)}`)}catch(p){console.log(` ${a(m,p)}`)}let c=s.filter((m)=>!Ht(m)),u=new Set(c),f=[],l=ci(),d=()=>l.set(`Updating ${[...u].map(rt).join(", ")}${c.length>1?` · ${c.length-u.size}/${c.length}`:""}`);if(d(),await Promise.all(c.map(async(m)=>{let p=await pp(e,m);if("refreshed"in p)f.push(p.refreshed);if(u.delete(m),u.size>0)d();else l.done();l.say(` ${"refreshed"in p?bp(p.refreshed):a(m,p.failure)}`)})),l.done(),!Yj(nr(e)))return o?1:0;for(let m of uo(e,f))console.log(` ${m}`);let h=$p(e);if(h)console.log(h);return o?1:0}async function Ux(t,e){let n=at(t,!1),r=new Map(ls(t,n).filter((a)=>e.includes(a.name)).map((a)=>[a.name,a]));if(r.size===0)return;let i=Dr(t);us(t,i.map((a)=>r.get(a.name)??a));let o=z(t);zt(t,n,o);let s=new Map(i.map((a)=>[a.name,a.pictures]));await $o(t,Kt(t,n,!1).palettes.filter((a)=>r.has(a.name)).map((a)=>NE(a,s.get(a.name))),o.terminals)}async function qg(t,e,n,r=!1){let i=process.env.TTHEME_SORT==="series"?t.palettes:_i(t.palettes);Ki(i);let o=process.stdout.isTTY===!0,s=Ys(process.env,o,J()),a=s?await s.saved():new Map,c=new Tp({entries:i,scope:n,installed:e,required:r,color:!Ft(),fx:Ll(process.env.TTHEME_FX),onFocus:s?(f)=>process.stdout.write(s.paint(f)):void 0}),u=await c.prompt();if(s)process.stdout.write(s.restore(a));if(u==="cancel")return;return t.palettes.filter((f)=>c.picked.has(f.name)).map((f)=>f.name)}function Jg(t,e,n,r){let i=n===V?void 0:Qa(t,n),o;try{o=i?.id??ui(t,n)}catch{o=kt(n)?Ur(n):rt(n)}return{source:n,id:o,...i?.info.description?{description:i.info.description}:{},shown:rt(n),entries:n===V?Ts(t,n):i?.entries??[],auto:Wr(n,e.updates),status:Mp(t,n,r)}}function Yg(t){return ls(t,at(t,!1)).map((e)=>e.name)}function Qj(t,e,n,r,i){return{refresh:async(o)=>{if(Ht(o)){let a=Jg(t,e,o,hr());return{market:a,refreshed:{source:o,id:a.id,count:Tt(a.entries).length,change:{added:[],changed:[],gone:[]}},updates:Yg(t)}}let s=await mp(t,o,fp);return{market:Jg(t,e,o,hr()),refreshed:s,updates:Yg(t)}},fetch:async(o)=>{if(Ht(o)){let a=cn(o),c=be(a);return{source:o,id:c,...a.description?{description:a.description}:{},shown:rt(o),entries:Pn(o,c,Ts(t,V),fe(!1)),auto:!1,status:"read in place"}}let s=await Xa(t,o,void 0,r);return n.set(o,s),{source:o,id:s.id,..."info"in s&&s.info.description?{description:s.info.description}:{},shown:rt(o),entries:s.entries,auto:Wr(o,{}),status:"not added yet"}},search:(o)=>Op(o,r),apply:i}}function Wx(...t){for(let e of uo(...t))Hn(e)}function t6(t,e,n){let r=[];for(let i of t.adds){let o=i.source!==V&&(t.auto[i.source]??i.auto);r.push(`Added ${i.id} · ${i.shown} — ${Dt(Tt(i.entries).length)}${o?", updating on its own":""}`)}for(let i of t.removes){let o=e.find((a)=>a.source===i)?.id??i;r.push(`Removed ${o} · ${rt(i)}`);let s=n.filter((a)=>(ut(a)??V)===o);if(s.length>0)r.push(Ep(s))}for(let[i,o]of Object.entries(t.auto)){let s=e.find((a)=>a.source===i);if(s&&!t.removes.includes(i))r.push(`${s.id} ${o?"updates on its own now":"no longer updates on its own"}`)}return r}async function e6(t,e,n,r){let i=z(t),o=n.adds.length+n.removes.length+Object.keys(n.auto).length>0;for(let m of n.adds){let p=r.get(m.source);if(p)Ns(t,p)}for(let m of n.removes)Sp(t,m);let s=[...Jt(i.markets).filter((m)=>!n.removes.includes(m)),...n.adds.map((m)=>m.source)],a=nc(i,s,{...i.updates,...n.auto});if(o)Ze(t,a);let c=at(t,!1),u=Kt(t,c,!1).palettes.filter((m)=>n.picked.has(m.name)).map((m)=>m.name),f=i.palettes.filter((m)=>!u.includes(m)),l=u.filter((m)=>!i.palettes.includes(m)),d=n.renew.filter((m)=>u.includes(m));if(!o&&l.length===0&&f.length===0&&d.length===0){Wx(t,n.refreshed),Hn("Nothing changed");return}let h={...a,palettes:u};Xe(t,c,i,h),Os(t,c,i.terminals,f);for(let m of t6(n,e,u))Hn(m);for(let m of l)Hn(` + ${m}`);for(let m of f)Hn(` - ${m}`);for(let m of uo(t,n.refreshed))Hn(m);if(await $o(t,Kt(t,c,!1).palettes.filter((m)=>l.includes(m.name)),h.terminals),d.length>0){await Ux(t,d);for(let m of d)Hn(` ↑ ${m}`)}if(l.length>0||f.length>0)Af(h.palettes.length)}async function Kx(){let t=zk(process.env),e=J(),n=z(e),r=Dr(e),i=hr(),o=Rs(),s=Jt(n.markets).map((k)=>Jg(e,n,k,i)),a=new Set(s.flatMap((k)=>k.entries.map((v)=>v.name))),c=r.filter((k)=>n.palettes.includes(k.name)&&!a.has(k.name));Ki([...s.flatMap((k)=>k.entries),...c]);let u=new Map,f=new AbortController,l=process.stdout.isTTY===!0,d=Ys(process.env,l,e),h=d&&!t?await d.saved():new Map,m=je(n);if(t)process.stdout.write("\x1B[?2026h");let p=new Fp({markets:s,kept:c,installed:n.palettes,updates:Yg(e),tuned:Object.keys(Wt(e)),...m?{startup:m}:{},...t?{hub:t}:{},due:o?hp(e,n):[],io:Qj(e,n,u,f.signal,(k,v)=>cv({say:v.say,set:v.status},()=>e6(e,s,k,u))),...process.env.TTHEME_SORT==="series"?{}:{order:_i},color:!Ft(),lookups:process.env.TTHEME_MARKET_LOOKUP!=="off",fx:Ll(process.env.TTHEME_FX),owns:l&&!t,...d?{onFocus:(k)=>process.stdout.write(d.paint(k))}:{}});try{await p.run()}finally{if(d?.stop?.(),d&&(!t||p.next()===void 0))process.stdout.write(d.restore(h));f.abort()}await p.idle();let b=p.result(),$=p.next();if(t&&$!==void 0)return Wx(e,b.refreshed),$;if(l&&t)process.stdout.write("\x1B[?1049l\x1B[?25h");for(let k of b.refreshed){let v=wp(k);if(v)console.log(v)}if(p.applied()){for(let v of p.lines())console.log(v);let k=p.failure();if(k)throw k}else{for(let k of uo(e,b.refreshed))console.log(k);console.log("Nothing changed")}return t?Hu:0}import{rmSync as zx}from"node:fs";import{basename as n6,join as Gc}from"node:path";var Dx=Gc(import.meta.dirname,".."),r6=Gc(Dx,"themes"),Vg=Gc(Dx,"dist"),Nf=ne.map((t)=>dr[t].emitter),i6=[bm,Sm],EZ=Nf.map((t)=>t.id);async function Tf({only:t}={}){if(typeof Bun>"u")throw Error("needs bun — run it from a checkout: bun src/bin.ts build");let e=t&&t.length>0?Nf.filter((o)=>t.includes(o.id)):Nf,n=f$(r6),r=tw(n);if(r.length>0){for(let o of r)console.error(` ✗ ${o.theme} [${o.rule}] ${o.detail}`);throw Error(`${r.length} contrast violation(s). Fix the palette, or waive the rule in its [contrast] section with a reason.`)}if(e.length===Nf.length)zx(Vg,{recursive:!0,force:!0});else for(let o of e)zx(Gc(Vg,o.id),{recursive:!0,force:!0});let i=0;for(let o of[...e,...i6]){let s=n.flatMap((u)=>o.emit?.(u)??[]),a=o.emitShared?.(n)??[];for(let u of[...s,...a])await Bun.write(Gc(Vg,u.path),u.content),i++;let c=s.length>0?`${n.length} themes${o.limits?` (${o.limits})`:""}`:a.length>0?a.map((u)=>n6(u.path)).join(" "):`no files (${o.limits??"nothing to write"})`;console.log(` ${o.id.padEnd(16)} ${c}`)}console.log(`
749
+ ${n.length} themes (${d$(n).length} in the new-tab rotation) -> ${i} files in dist/`)}import{existsSync as a6,readFileSync as Zx}from"node:fs";import{availableParallelism as o6,homedir as qx}from"node:os";var s6=4;async function Hf(t,e,n=qx()){let r=Nt(X(t)),i=ti(t),o=new Map(we(t).palettes.map((l)=>[l.name,Yo(l)])),s=Object.entries(r.palettes).flatMap(([l,d])=>{let h=o.get(l);return h?d.pictures.filter((m)=>Vo(m)||(m.blur??0)!==i).map((m)=>({name:l,key:m.key,paint:h})):[]});if(s.length===0)return 0;e(`Drawing ${s.length} background picture${s.length===1?"":"s"} again${i?` · blur ${i}px`:""}`);let a=oo(z(t).terminals),c=new kg(Math.min(s6,o6()-1)),u=await c.map(s.map(({name:l,key:d,paint:h})=>({job:"redraw",home:t,user:n,name:l,key:d,paint:h,blur:i,aligns:a})));c.close();let f=[];return u.forEach((l,d)=>{let{name:h,key:m}=s[d];if(l instanceof Error||l===null){e(` ▢ ${h} ${m} — ${l instanceof Error?l.message:"no original to draw it from"}, left as it was`);return}f.push({name:h,picture:l})}),uh(t,f),_e(t,n),f.length}async function Jx(t,e,n,r,i=qx()){let o=Nt(X(t)).palettes[e],s=o?.pictures.find((f)=>f.key===(r??o.active));if(!o||!s)throw Error(`${e} has no picture ${r??"shown"}`);if(ze(s)===n)return{key:s.key,changed:!1};let a=we(t).palettes.find((f)=>f.name===e);if(!a)throw Error(`no palette called ${e}`);let c=oo(z(t).terminals),u=await sf(t,e,s.key,Yo(a),ti(t),c,i,n);if(!u)throw Error(`${e} ${s.key} has no original to draw it from`);return uh(t,[{name:e,picture:u}]),_e(t,i),{key:s.key,changed:!0}}function Yx(t,e,n){let r=Nt(X(t)).palettes[e],i=r?.pictures.find((a)=>a.key===(n??r.active));if(!r||!i)throw Error(`${e} has no picture ${n??"shown"}`);let o=we(t).palettes.find((a)=>a.name===e);if(!o)throw Error(`no palette called ${e}`);let s=ze(i)==="original"?"tone":"original";if(!FE(t,e,i.key,Yo(o),ti(t),s))throw Error(`${e} ${i.key} has no original to draw it from`);return{key:i.key,coloring:s}}async function Vx(){return await Hf(J(),(t)=>process.stderr.write(`${t}
750
+ `)),0}async function Xx(t,e,n){let r=J();if(In(we(r).palettes,t),e==="show"){if(!n)throw Error("image show needs the picture to show");let{at:i,of:o}=Zo(r,t,n);return _e(r),process.stderr.write(`Background · ${t} ${i}/${o} ${n}
751
+ `),0}if(e==="drop"){let{key:i,left:o}=pu(r,t,n);return _e(r),process.stderr.write(`Background · ${t} removed ${i} · ${o} left
752
+ `),0}if(e==="tone"||e==="original"){let i=await Jx(r,t,e,n);return process.stderr.write(`Background · ${t} ${i.key} ${e==="tone"?"tinted":"in its own colors"}
753
+ `),0}if(e==="prepare"){let{key:i,coloring:o}=Yx(r,t,n);return process.stderr.write(`Background · ${t} ${i} ready in ${o==="tone"?"its tone":"its own colors"}
754
+ `),0}if(e==="tuned")return _e(r),0;throw Error(`unknown image action ${e} — show, drop, tone, original, prepare or tuned`)}function Qx(t,e){let n=/^(\d+)x(\d+)$/.exec(t),r=/^(\d+)x(\d+)([+-]\d+)([+-]\d+)$/.exec(e);if(!n||!r)throw Error("a canvas is <width>x<height> and a place <width>x<height>+<x>+<y>");let[i,o]=n.slice(1).map(Number),[s,a,c,u]=r.slice(1).map(Number);return{width:i,height:o,at:{x:c,y:u,w:s,h:a}}}function c6(t,e,n){let r=Qx(e,n),i=Math.min(1,t.width/r.at.w);if(i===1)return r;return{width:Math.max(1,Math.round(r.width*i)),height:Math.max(1,Math.round(r.height*i)),at:{x:Math.round(r.at.x*i),y:Math.round(r.at.y*i),w:t.width,h:t.height}}}function t2(t,e,n,r){let i=Bt(new Uint8Array(Zx(t)));return C(e,Ke(s0(i,Qx(n,r)))),0}function e2(t,e,n,r,i,o,s){let a=Number(r);if(!he(n)||!Number.isFinite(a))throw Error("flatten needs a #rrggbb background and an opacity from 0 to 1");let c=Bt(new Uint8Array(Zx(t))),u=i?c6(c,i,o??""):void 0,f=Fr(Hr(c,n,Math.max(0,Math.min(1,a)),u));if(s&&a6(s))Oi(s,e,f);else C(e,f);return 0}import{execFileSync as u6}from"node:child_process";import{readFileSync as l6}from"node:fs";import{arch as f6,platform as Ff,release as Zg}from"node:os";var d6={ghostty:"ghostty",iterm2:"iTerm.app",wezterm:"WezTerm","terminal-app":"Apple_Terminal",warp:"WarpTerminal"};function h6(t,e){if(t==="konsole"){let r=/^(\d{2})(\d{2})(\d{2})$/.exec(e.KONSOLE_VERSION??"");return r?`${r[1]}.${r[2]}.${Number(r[3])}`:e.KONSOLE_VERSION}let n=d6[t];return n!==void 0&&e.TERM_PROGRAM===n?e.TERM_PROGRAM_VERSION:void 0}function m6(t){let e=Zt(t),n=t.TERM_PROGRAM&&t.TERM_PROGRAM!=="tmux"?t.TERM_PROGRAM:void 0,r=e==="unknown"?`unknown${n?` (TERM_PROGRAM=${n})`:""}`:e==="editor"?`editor (${um(t)})`:`${e} ${h6(e,t)??"(version unknown)"}`,i=t.TERM_PROGRAM==="tmux"?t.TERM_PROGRAM_VERSION:void 0;return[r,t.TMUX?`tmux ${i??"yes"}`:"tmux no",t.SSH_CONNECTION||t.SSH_TTY?"ssh yes":"ssh no"].join(" · ")}function n2(t,e){try{return u6(t,e,{encoding:"utf8",timeout:2000,stdio:["ignore","pipe","ignore"]}).trim()}catch{return}}function p6(){let t=f6();if(Ff()==="darwin")return`macOS ${n2("sw_vers",["-productVersion"])??`(Darwin ${Zg()})`} · ${t}`;if(Ff()==="linux"){let e="";try{e=l6("/etc/os-release","utf8")}catch{}return`${/^PRETTY_NAME="?([^"\n]*)"?$/m.exec(e)?.[1]??"Linux"} · linux ${Zg()} · ${t}`}return`${Ff()==="win32"?"Windows":Ff()} ${Zg()} · ${t}`}function g6(t){if(t.TTHEME_ZSH)return`zsh ${t.TTHEME_ZSH}`;return(t.SHELL?n2(t.SHELL,["--version"])?.split(`
755
+ `)[0]:void 0)??t.SHELL??"unknown"}function b6(t){try{let{terminals:e}=z(t);return e.length>0?e.join(", "):"none"}catch{return"installed.json missing or unreadable"}}function w6(t){let e=Qu.flatMap((n)=>{let r=t[n];return r===void 0||r===ja(n)?[]:[`${n}=${/\s/.test(r)?JSON.stringify(r):r}`]});return e.length>0?e.join(" "):void 0}function r2(){let t=process.env,n=[["ttheme",lt.version],["OS",p6()],["Shell",g6(t)],["Terminal",m6(t)],["Wired",b6(J())],["Settings",w6(t)]].filter((i)=>i[1]!==void 0),r=Math.max(...n.map(([i])=>i.length));for(let[i,o]of n)console.log(`${i.padEnd(r)} ${o}`)}import{execFileSync as k6,spawnSync as y6}from"node:child_process";import{chmodSync as v6,copyFileSync as S6,existsSync as Sr,mkdirSync as m2,readdirSync as E6,readFileSync as Wc,rmSync as tb}from"node:fs";import{homedir as M6}from"node:os";import{dirname as Vs,join as mt}from"node:path";import{existsSync as i2}from"node:fs";import{basename as $6,join as Bc}from"node:path";var o2=["zsh","bash","fish"];function Lf(t){let e=$6(t??"").replace(/^-/,"");return o2.includes(e)?e:void 0}function Qg(t,e){for(let n=e,r=0;n>1&&r<12;r++){let[i,...o]=t("ps",["-o","ppid=,comm=","-p",String(n)])?.trim().split(/\s+/)??[],s=Lf(o.join(" "));if(s)return s;n=Number(i)}return}function s2(t,e){let n=new Set(["zsh"]);for(let r of[Lf(t.env.SHELL),Qg(t.run,e)])if(r)n.add(r);return o2.filter((r)=>n.has(r))}var Xg="ttheme-zdotdir:";function Cf(t,e){if(t.env.ZDOTDIR)return t.env.ZDOTDIR;let n=t.run("zsh",["-c",`print -rn -- "${Xg}\${ZDOTDIR:-$HOME}"`])??"",r=n.lastIndexOf(Xg);return r>=0&&n.slice(r+Xg.length)||e}function a2(t){return t.run("zsh",["-fc","print ok"])==="ok"}var c2=[".bash_profile",".bash_login",".profile"];function u2(t,e){let n=Bc(t,".bashrc"),r=c2.map((o)=>Bc(t,o)).find((o)=>i2(o)),i=[...i2(n)?[n]:[],...r?[r]:[]];if(e==="darwin"&&!r)i.push(Bc(t,".bash_profile"));return i.length>0?i:[n]}function l2(t){return[".bashrc",...c2].map((e)=>Bc(t,e))}var f2=`zsh -c 'source ${Xu} && ttheme "$@"' ttheme`;function d2(){return`# ${ke}
756
+ ttheme() { ${f2} "$@"; }`}function jf(t){return Bc(t,"fish","functions","ttheme.fish")}function h2(){return[`# ${ke}`,"function ttheme --description 'Run ttheme through zsh'",` ${f2} $argv`,"end",""].join(`
757
+ `)}function _f(t){return t.startsWith(`# ${ke}
758
+ `)}function x6(t,e,n){for(let r of E6(e))t.push({from:mt(e,r),to:mt(n,r)})}function ib(t){return zr(Wc(mt(t,"dist","manifest.json"),"utf8"))}function Gf(t,e){let n=mt(e.configHome,"ttheme"),r=[{from:mt(e.root,"bin","ttheme.js"),to:mt(n,"ttheme.js")},{from:mt(e.root,"bin","ttheme.js.map"),to:mt(n,"ttheme.js.map")},{from:mt(e.root,"bin","package.json"),to:mt(n,"package.json")},{from:mt(e.root,"shell","ttheme.zsh"),to:mt(n,"ttheme.zsh")},{from:mt(e.root,"shell","preview.zsh"),to:mt(n,"preview.zsh")},{from:mt(e.root,"shell","launch-tab.zsh"),to:mt(n,"launch-tab.zsh"),executable:!0}];x6(r,mt(e.root,"shell","adapters"),mt(n,"adapters"));let i=e.shells??["zsh"],o=[{file:mt(e.zdotdir,".zshrc"),block:_y(),about:"source ttheme.zsh"},...i.includes("bash")?u2(e.home,e.platform??process.platform).map((p)=>({file:p,block:d2(),about:"the ttheme command, run through zsh"})):[]],s=jf(e.configHome),a=!Sr(s)||_f(Wc(s,"utf8")),c=i.includes("fish")&&a?[{file:s,content:h2(),about:"the ttheme command, run through zsh"}]:[],u=mt(n,"config.zsh"),f=By(Sr(u)?Wc(u,"utf8"):""),l={file:u,content:t.warpFast===void 0?f:el(f,"TTHEME_WARP_FAST",t.warpFast?"on":"off")},d={terminals:t.terminals,palettes:t.palettes,...Object.fromEntries(yt(t.terminals).flatMap((p)=>Object.entries(p.installs?.(e)??{}).filter(([,b])=>b!==void 0))),...t.off?{off:!0}:{}},h=[...kl(e.configHome,d,e.home),...i.includes("fish")&&!a?[`${ft(s,e.home)} is a function of your own — ttheme left it, so fish has no ttheme command`]:[],...i.some((p)=>p!=="zsh")?[`${i.filter((p)=>p!=="zsh").join(" and ")} run ttheme through zsh — a pin taking effect on cd, the picture following the tab in front and the repaint after a program resets the colors stay with zsh tabs`]:[]],m=e.stateDir?[mt(e.stateDir,"ghostty",".blind")]:[];return{home:e.home,copies:r,edits:o,writes:c,settings:l,forget:m,catalog:ib(e.root),installed:d,notes:h}}function g2(t){try{return z(t)}catch{return}}function b2(t,e){try{return Kt(t,at(t,!1,e),!1).palettes}catch{return[]}}function O6(t,e){let n=ib(e.root),r=Jt(t.markets).includes(V)?n.palettes:[],i=new Set(r.map((s)=>s.name)),o=b2(e.configHome,n).filter((s)=>!i.has(s.name)&&(ut(s.name)!==void 0||t.palettes.includes(s.name)));return{...n,palettes:[...r,...o]}}function w2(t,e){let n=io(t);return n&&e.includes(n)?n:void 0}function P6(t,e,n){let r=Gf(e,n),i=w2(t,e.palettes),o=new Set(["terminals","palettes","off","startup",...ne.flatMap((a)=>Object.keys(dr[a].installs?.(n)??{}))]),s=Object.fromEntries(Object.entries(t).filter(([a])=>!o.has(a)));return{...r,installed:{...s,...r.installed,...i?{startup:i}:{}}}}function I6(t,e){let n=Gf({terminals:t.terminals,palettes:t.palettes,off:t.off},e),r=new Set([...n.catalog.palettes,...b2(e.configHome,n.catalog)].map((f)=>f.name)),i=t.palettes.filter((f)=>r.has(f)),o=t.palettes.filter((f)=>!r.has(f)),{startup:s,...a}=t,c={...a,palettes:i,...s&&i.includes(s)?{startup:s}:{}},u=o.length>0?[`Dropped ${o.join(", ")} — no longer in the catalog`,...n.notes]:n.notes;return{...n,installed:c,notes:u}}function R6(t){try{return k6(process.execPath,[mt(t,"ttheme","ttheme.js"),"--version"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||void 0}catch{return}}function $2(t){let e=je(t);return[yt(t.terminals).map((n)=>n.name).join(", "),`${t.palettes.length} palettes`,e?`default ${e}`:"no default — ttheme is off"].join(" · ")}function eb(t,e=Ve()){for(let s of t.copies)if(m2(Vs(s.to),{recursive:!0}),tb(s.to,{force:!0}),tb(`${s.to}.zwc`,{force:!0}),S6(s.from,s.to),s.executable)v6(s.to,493);C(t.settings.file,t.settings.content);for(let s of t.forget)tb(s,{force:!0});let n=Vs(Vs(t.settings.file)),r=g2(n),i=Object.fromEntries(yt(t.installed.terminals).flatMap((s)=>{let a=s.defaults?.key,c=a?r?.[a]:void 0;return a&&c?[[a,c]]:[]})),o=Ja(n,{...t.installed,...i},e,t.home);if(Jt(o.markets).includes(V))Ik(n,t.catalog);Ze(n,o),zt(n,at(n),o,t.home,e);for(let s of t.edits){m2(Vs(s.file),{recursive:!0});let a=Sr(s.file)?Wc(s.file,"utf8"):"";$n(s.file,Qr(a,s.block))}for(let s of t.writes)C(s.file,s.content);return so(n,o,!0,e,t.home)}function Uc(t){if(ee(t))throw Vr("Nothing changed"),new de;return t}function nb(t,e){return ne.filter((n)=>dr[n].offered(t,e))}async function A6(t,e,n,r){return Uc(await $y({message:"Wire which terminals?",options:nb(n,r).map((i)=>({value:i,label:dr[i].name,hint:i===t?"detected":void 0})),initialValues:e,required:!0}))}async function N6(t){return Uc(await Ce({message:"Switch Warp to each tab's palette in about 0.2 s instead of 0.6 s?\nAbout 8% CPU while Warp is in front with tabs of different palettes — `ttheme config` changes it",initialValue:$s(t,"TTHEME_WARP_FAST")!=="off"}))}function rb(t){let e=[...t.copies.filter((n)=>!Sr(n.to)).map((n)=>n.to),...Sr(t.settings.file)?[]:[t.settings.file],...t.edits.filter((n)=>!Wc(n.file,"utf8").includes("# ttheme begin")).map((n)=>n.file),...t.writes.filter((n)=>!Sr(n.file)).map((n)=>n.file)];if(e.length>0)throw Error(`init left gaps:
757
759
  ${e.join(`
758
- `)}`)}function i2(t,e){return[...new Set(t.palettes.filter((n)=>e.includes(n.name)).map((n)=>n.group))]}function J6(t,e,n){let r=t.palettes.find((s)=>s.name===je(e)),i=process.stdout.isTTY===!0,o=r&&zs(process.env,i,n)?.wear(r,e.terminals);if(o===void 0)return!1;return process.stdout.write(o),!0}function Y6(t,e){let n=je(t);if(!n)return["Default none — new tabs keep the terminal colors",`Turn on \`ttheme on\` wears ${Qi(t)}`];return[`Default ${n}${e?" — this tab wears it already":""}`,"Change it `ttheme`, enter on a palette, then default"]}function Z6(t){L6("zsh",["-c",'source "$1" && __tt_preview init',"zsh",mt(t,"ttheme","ttheme.zsh")],{stdio:"inherit"})}function Vg(t){return t==="bash"?"exec bash -l":`exec ${t}`}function V6(t,e,n,r,i){let o=i2(t.catalog,e.palettes);Rn([`${o.join(", ")} (${e.palettes.length})`,...Y6(t.installed,n)].join(`
759
- `),`Installed ${e.palettes.length} palettes`),Rn([`${Vg(i).padEnd(18)}The ttheme command in this tab`,...Xg(t,r)].join(`
760
- `),"Next"),Oa("Done")}function Xg(t,e){return[...hl(qs(qs(t.settings.file)),t.installed,e,t.home),...t.notes]}function o2(t){return t?(e)=>Yr.step(e):(e)=>console.log(e)}async function Qx(t,e,n,r,i){let o=K6(t,e),s=Dg(o,n);Yg(o),await Mf(e.configHome,o2(r),e.home);let a=[`${Vg(i).padEnd(18)}Open tabs run the new layer — new tabs already do`,...Xg(o,s)],c=`Updated to ${ft.version} — kept ${r2(o.installed)}`;if(!r){console.log([c,...a].join(`
761
- `));return}Rn(a.join(`
762
- `),c),Oa("Done")}function X6(t,e,n){let r=[`Placed ${t.copies.length} files`,`Settings in ${t.settings.file} — edit later with \`ttheme config\``,...[...t.edits,...t.writes].map((i)=>`Wired ${i.file}`),...Xg(t,e),`No palettes yet — open a new shell (\`${Vg(n)}\`), then \`ttheme\` picks them from the catalog`];console.log(r.join(`
763
- `))}async function s2(t={}){let e=mt(import.meta.dirname,"..");for(let R of["ttheme.js","package.json"])if(!vr(mt(e,"bin",R)))throw Error(`bin/${R} is missing — run \`mise run bin:build\` first`);if(!vr(mt(e,"dist"))){if(typeof Bun>"u")throw Error("this package is missing dist/ — reinstall @kecan0406/ttheme");await Sf()}let n=G6(),r=J(),i=Ye();if(!zx(i))throw Error("ttheme runs its tab layer in zsh, even for bash and fish — install zsh first");let o=A1(i),s=process.env.WT_PROFILE_ID,a={root:e,home:n,configHome:r,zdotdir:If(i,n),shells:Kx(i,process.ppid),platform:i.platform,stateDir:mt(process.env.XDG_STATE_HOME??mt(n,".local","state"),"ttheme"),...o?{wtHome:o}:{},...s?{wtProfile:s}:{}},c=zg(i.run,process.ppid)??Of(i.env.SHELL)??"zsh",u=Vt(process.env),f=Jg(a,i).filter((R)=>R===u);if(!t.yes&&(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0))throw Error("init asks before it edits your configs — run it in a terminal, or pass --yes to accept the defaults");let l=t2(r);if(t.yes&&l){await Qx(l,a,i,!1,c);return}if(t.yes){if(f.length===0)throw Error(`no supported terminal detected — run this inside ${yt(Jg(a,i)).map((j)=>j.name.toLowerCase()).join(", ").replace(/, ([^,]*)$/," or $1")}`);let F=Af({terminals:f,palettes:[]},a),N=Dg(F,i);Yg(F),X6(F,N,c);return}if(ju("ttheme init"),l){let R=z6(r);if(Tc(await Le({message:`ttheme${R?` ${R}`:""} is installed — ${r2(l)}
764
- ${R===ft.version?"Reinstall":"Update to"} ${ft.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await Qx(l,a,i,!0,c);return}}let d=await q6(u,l?.terminals??f,a,i),h=d.includes("warp")?await D6(r):void 0,m=l?U6(l,a):Zg(e),p=l?await _g(m,l.palettes,"palette",!0):await _g(m,[],"series",!0);if(!p)throw Zr("Nothing changed"),new de;let b=(l&&n2(l,p))??p[0],$=p.length>1&&($e[u].paints||u==="warp"&&d.includes("warp")&&vr(si(n,r))),k=Tc(await Le({message:$?"Pick a default palette in ttheme once installed?":`Wear ${b} in every tab?`,initialValue:l?!l.off:!0})),v={terminals:d,palettes:p,off:!k,warpFast:h},E=l?W6(l,v,a):Af(v,a);if(Rn([`Install ${p.length} palettes — ${i2(m,p).join(", ")}`,`Copy ${E.copies.length} files under ${r}`,`Write ${E.settings.file}`,...E.edits.map((R)=>`Edit ${R.file} — a ttheme block: ${R.about}`),...E.writes.map((R)=>`Write ${R.file} — ${R.about}`),...fl(r,E.installed,n),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out",k?$?`Open ttheme — every tab wears the palette picked there, ${b} until then`:`Paint every tab with ${b}, this one now`:"Leave the terminal colors as they are — `ttheme on` wears a palette later",...k&&b?yt(d).flatMap((R)=>R.defaults?[`Make "${R.defaults.profile(b)}" the ${R.name} default profile`]:[]):[]].join(`
765
- `),`Wiring ${yt(d).map((R)=>R.name).join(", ")}`),!Tc(await Le({message:"Apply these changes?"})))throw Zr("Nothing changed"),new de;let x=Dg(E,i);if(Yg(E),await Mf(r,o2(!0),n),k&&$)Z6(r);let M=K(r);V6({...E,catalog:m,installed:M},v,J6(m,M,r),x,c)}import{spawn as Q6}from"node:child_process";import{createHash as tj}from"node:crypto";import{existsSync as Qg,mkdirSync as ej,readFileSync as nj,statSync as rj,utimesSync as ij,writeFileSync as oj}from"node:fs";import{homedir as l2}from"node:os";import{join as f2}from"node:path";import{gunzipSync as sj}from"node:zlib";var a2="https://github.com/kecan0406/aninames/releases/latest/download",d2=86400000,aj=3600000,cj=120000;function h2(t){return f2(Br(t),".checked")}function uj(t=process.env){return t.TTHEME_NAMES!=="off"}function lj(t){try{return Date.now()-rj(h2(t)).mtimeMs>=d2}catch{return!0}}function tb(t,e){let n=h2(t);if(ej(Br(t),{recursive:!0}),!Qg(n))oj(n,"");ij(n,e/1000,e/1000)}function m2(t=l2()){if(!uj()||!lj(t))return;try{tb(t,Date.now()),Q6(process.execPath,[process.argv[1],"names"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}function c2(t){return tj("sha256").update(t).digest("hex")}async function u2(t){let e=await fetch(t,{signal:AbortSignal.timeout(cj)});if(!e.ok)throw Error(`${t} answered ${e.status}`);return new Uint8Array(await e.arrayBuffer())}async function p2(t=l2()){let e=Br(t);try{let r=JSON.parse(new TextDecoder().decode(await u2(`${a2}/ttheme.json`)));for(let[i,{file:o,sha256:s}]of Object.entries(r.layers)){let a=f2(e,`ttheme-${i}.json`);if(Qg(a)&&c2(nj(a))===s)continue;let c=sj(await u2(`${a2}/${o}`));if(c2(c)!==s)throw Error(`${o} does not match its hash`);L(a,c)}tb(t,Date.now())}catch{return tb(t,Date.now()-d2+aj),1}pu(t);let n=J();if(Qg(tr(n)))Gi(we(n).palettes,t),C1(n,t);return 0}import{createHash as fj}from"node:crypto";import{existsSync as eb,readdirSync as g2,readFileSync as nb,rmSync as dj,statSync as hj,utimesSync as mj}from"node:fs";import{homedir as pj}from"node:os";import{join as Eo}from"node:path";var gj=new Set(["814e75361c745b9f1467c82bee90ab3f47daeaa70a528d330a4bc8aec9faeeb9","668092ea188445700b02d60a102c429e092e46fcd88c33509b9f1fd64d68e6a6","bf52a8c6d019f59f71723be460d7fe450234d0f03ff0f35e94db2c42455f00ba","8df4e3246f2cf26deaa0f620f31e94efac21104ec2dbe81fba55ba066141aeb4","7bdc8051f34b902e970df84df0e4c8d27331b5e04da7f7b498d50b592eaa72f2","e06b39cd6fa2701bd360b7062d82d4a56766aba97889dfa547d14db5895454f1"]);function b2(t){try{return g2(t).map((e)=>Eo(t,e)).filter((e)=>hj(e).isFile())}catch{return[]}}function bj(t){let e=t.slice(t.lastIndexOf("/")+1);if(e.startsWith(C("")))return!1;let n=e.replace(/\.(conf|toml)$/,""),r=nb(t,"utf8");return r.startsWith(`# ${n} — `)&&r.split(`
760
+ `)}`)}function k2(t,e){return[...new Set(t.palettes.filter((n)=>e.includes(n.name)).map((n)=>n.group))]}function T6(t,e,n){let r=t.palettes.find((s)=>s.name===je(e)),i=process.stdout.isTTY===!0,o=r&&Ys(process.env,i,n)?.wear(r,e.terminals);if(o===void 0)return!1;return process.stdout.write(o),!0}function H6(t,e){let n=je(t);if(!n)return["Default none — new tabs keep the terminal colors",`Turn on \`ttheme on\` wears ${io(t)}`];return[`Default ${n}${e?" — this tab wears it already":""}`,"Change it `ttheme`, enter on a palette, then default"]}function F6(t){y6("zsh",["-c",'source "$1" && __tt_preview init',"zsh",mt(t,"ttheme","ttheme.zsh")],{stdio:"inherit"})}function ob(t){return t==="bash"?"exec bash -l":`exec ${t}`}function L6(t,e,n,r,i){let o=k2(t.catalog,e.palettes);An([`${o.join(", ")} (${e.palettes.length})`,...H6(t.installed,n)].join(`
761
+ `),`Installed ${e.palettes.length} palettes`),An([`${ob(i).padEnd(18)}The ttheme command in this tab`,...sb(t,r)].join(`
762
+ `),"Next"),Fa("Done")}function sb(t,e){return[...yl(Vs(Vs(t.settings.file)),t.installed,e,t.home),...t.notes]}function y2(t){return t?(e)=>Yr.step(e):(e)=>console.log(e)}async function p2(t,e,n,r,i){let o=I6(t,e),s=eb(o,n);rb(o),await Hf(e.configHome,y2(r),e.home);let a=[`${ob(i).padEnd(18)}Open tabs run the new layer — new tabs already do`,...sb(o,s)],c=`Updated to ${lt.version} — kept ${$2(o.installed)}`;if(!r){console.log([c,...a].join(`
763
+ `));return}An(a.join(`
764
+ `),c),Fa("Done")}function C6(t,e,n){let r=[`Placed ${t.copies.length} files`,`Settings in ${t.settings.file} — edit later with \`ttheme config\``,...[...t.edits,...t.writes].map((i)=>`Wired ${i.file}`),...sb(t,e),`No palettes yet — open a new shell (\`${ob(n)}\`), then \`ttheme\` picks them from the catalog`];console.log(r.join(`
765
+ `))}async function v2(t={}){let e=mt(import.meta.dirname,"..");for(let I of["ttheme.js","package.json"])if(!Sr(mt(e,"bin",I)))throw Error(`bin/${I} is missing — run \`mise run bin:build\` first`);if(!Sr(mt(e,"dist"))){if(typeof Bun>"u")throw Error("this package is missing dist/ — reinstall @kecan0406/ttheme");await Tf()}let n=M6(),r=J(),i=Ve();if(!a2(i))throw Error("ttheme runs its tab layer in zsh, even for bash and fish — install zsh first");let o=Y1(i),s=process.env.WT_PROFILE_ID,a={root:e,home:n,configHome:r,zdotdir:Cf(i,n),shells:s2(i,process.ppid),platform:i.platform,stateDir:mt(process.env.XDG_STATE_HOME??mt(n,".local","state"),"ttheme"),...o?{wtHome:o}:{},...s?{wtProfile:s}:{}},c=Qg(i.run,process.ppid)??Lf(i.env.SHELL)??"zsh",u=Zt(process.env),f=nb(a,i).filter((I)=>I===u);if(!t.yes&&(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0))throw Error("init asks before it edits your configs — run it in a terminal, or pass --yes to accept the defaults");let l=g2(r);if(t.yes&&l){await p2(l,a,i,!1,c);return}if(t.yes){if(f.length===0)throw Error(`no supported terminal detected — run this inside ${yt(nb(a,i)).map((_)=>_.name.toLowerCase()).join(", ").replace(/, ([^,]*)$/," or $1")}`);let L=Gf({terminals:f,palettes:[]},a),N=eb(L,i);rb(L),C6(L,N,c);return}if(Du("ttheme init"),l){let I=R6(r);if(Uc(await Ce({message:`ttheme${I?` ${I}`:""} is installed — ${$2(l)}
766
+ ${I===lt.version?"Reinstall":"Update to"} ${lt.version} and keep all of it?`,active:"Yes",inactive:"No, set it up again",initialValue:!0}))){await p2(l,a,i,!0,c);return}}let d=await A6(u,l?.terminals??f,a,i),h=d.includes("warp")?await N6(r):void 0,m=l?O6(l,a):ib(e),p=l?await qg(m,l.palettes,"palette",!0):await qg(m,[],"series",!0);if(!p)throw Vr("Nothing changed"),new de;let b=(l&&w2(l,p))??p[0],$=p.length>1&&($e[u].paints||u==="warp"&&d.includes("warp")&&Sr(si(n,r))),k=Uc(await Ce({message:$?"Pick a default palette in ttheme once installed?":`Wear ${b} in every tab?`,initialValue:l?!l.off:!0})),v={terminals:d,palettes:p,off:!k,warpFast:h},S=l?P6(l,v,a):Gf(v,a);if(An([`Install ${p.length} palettes — ${k2(m,p).join(", ")}`,`Copy ${S.copies.length} files under ${r}`,`Write ${S.settings.file}`,...S.edits.map((I)=>`Edit ${I.file} — a ttheme block: ${I.about}`),...S.writes.map((I)=>`Write ${I.file} — ${I.about}`),...$l(r,S.installed,n),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out",k?$?`Open ttheme — every tab wears the palette picked there, ${b} until then`:`Paint every tab with ${b}, this one now`:"Leave the terminal colors as they are — `ttheme on` wears a palette later",...k&&b?yt(d).flatMap((I)=>I.defaults?[`Make "${I.defaults.profile(b)}" the ${I.name} default profile`]:[]):[]].join(`
767
+ `),`Wiring ${yt(d).map((I)=>I.name).join(", ")}`),!Uc(await Ce({message:"Apply these changes?"})))throw Vr("Nothing changed"),new de;let x=eb(S,i);if(rb(S),await Hf(r,y2(!0),n),k&&$)F6(r);let M=z(r);L6({...S,catalog:m,installed:M},v,T6(m,M,r),x,c)}import{spawn as j6}from"node:child_process";import{createHash as _6}from"node:crypto";import{existsSync as ab,mkdirSync as G6,readFileSync as B6,statSync as U6,utimesSync as W6,writeFileSync as K6}from"node:fs";import{homedir as x2}from"node:os";import{join as O2}from"node:path";import{gunzipSync as z6}from"node:zlib";var S2="https://github.com/kecan0406/aninames/releases/latest/download",P2=86400000,D6=3600000,q6=120000;function I2(t){return O2(Br(t),".checked")}function J6(t=process.env){return t.TTHEME_NAMES!=="off"}function Y6(t){try{return Date.now()-U6(I2(t)).mtimeMs>=P2}catch{return!0}}function cb(t,e){let n=I2(t);if(G6(Br(t),{recursive:!0}),!ab(n))K6(n,"");W6(n,e/1000,e/1000)}function R2(t=x2()){if(!J6()||!Y6(t))return;try{cb(t,Date.now()),j6(process.execPath,[process.argv[1],"names"],{detached:!0,stdio:"ignore",env:process.env}).unref()}catch{}}function E2(t){return _6("sha256").update(t).digest("hex")}async function M2(t){let e=await fetch(t,{signal:AbortSignal.timeout(q6)});if(!e.ok)throw Error(`${t} answered ${e.status}`);return new Uint8Array(await e.arrayBuffer())}async function A2(t=x2()){let e=Br(t);try{let r=JSON.parse(new TextDecoder().decode(await M2(`${S2}/ttheme.json`)));for(let[i,{file:o,sha256:s}]of Object.entries(r.layers)){let a=O2(e,`ttheme-${i}.json`);if(ab(a)&&E2(B6(a))===s)continue;let c=z6(await M2(`${S2}/${o}`));if(E2(c)!==s)throw Error(`${o} does not match its hash`);C(a,c)}cb(t,Date.now())}catch{return cb(t,Date.now()-P2+D6),1}vu(t);let n=J();if(ab(ir(n)))Ki(we(n).palettes,t),ev(n,t);return 0}import{createHash as V6}from"node:crypto";import{existsSync as ub,readdirSync as N2,readFileSync as lb,rmSync as Z6,statSync as X6,utimesSync as Q6}from"node:fs";import{homedir as t_}from"node:os";import{join as bi}from"node:path";var e_=new Set(["814e75361c745b9f1467c82bee90ab3f47daeaa70a528d330a4bc8aec9faeeb9","668092ea188445700b02d60a102c429e092e46fcd88c33509b9f1fd64d68e6a6","bf52a8c6d019f59f71723be460d7fe450234d0f03ff0f35e94db2c42455f00ba","8df4e3246f2cf26deaa0f620f31e94efac21104ec2dbe81fba55ba066141aeb4","7bdc8051f34b902e970df84df0e4c8d27331b5e04da7f7b498d50b592eaa72f2","e06b39cd6fa2701bd360b7062d82d4a56766aba97889dfa547d14db5895454f1"]);function T2(t){try{return N2(t).map((e)=>bi(t,e)).filter((e)=>X6(e).isFile())}catch{return[]}}function n_(t){let e=t.slice(t.lastIndexOf("/")+1);if(e.startsWith(j("")))return!1;let n=e.replace(/\.(conf|toml)$/,""),r=lb(t,"utf8");return r.startsWith(`# ${n} — `)&&r.split(`
766
768
  `)[1]?.startsWith("# ANSI: ")===!0||r.startsWith(`[metadata]
767
769
  name = "${n}"
768
- origin_url = "`)}function wj(t){let n=b2(t).filter((r)=>gj.has(fj("sha256").update(nb(r)).digest("hex")));return n.length>0&&n.length===g2(t).length?[t]:n}function $j(t){try{return K(t)}catch{return}}function kj(t){let{home:e,configHome:n}=t,r=$j(n),i={configHome:n,home:e},o=yt(ee),s=o.map((u)=>u.unwire(i,r)),a=[Eo(n,"ttheme"),t.cacheDir,t.stateDir],c=Rf(n);return{edits:[...un(Eo(t.zdotdir,".zshrc"),ur),...Jx(e).flatMap((u)=>un(u,ur)),...s.flatMap((u)=>u.edits)],removals:[...eb(c)&&Pf(nb(c,"utf8"))?[c]:[],...o.flatMap((u)=>u.shelf?bs(u.shelf.dir(i)):[]),...o.flatMap((u)=>u.shelf?b2(u.shelf.dir(i)).filter(bj):[]),...wj(Eo(n,"ghostty","shaders")),...s.flatMap((u)=>u.removals),...a.filter((u)=>eb(u))],touches:s.flatMap((u)=>u.touches),...r?{state:r}:{}}}function yj(t,e,n=Ye()){let r=[];for(let{file:o,content:s}of t.edits){let a=Zb(o,s);r.push(a==="removed"?`Removed ${o} — ttheme had created it`:a==="restored"?`Took ttheme out of ${o}`:`Took ttheme out of ${o} — kept ${o}.ttheme.bak, since the file changed after ttheme's first edit`)}if(t.state){let o=eo(e.configHome,{...t.state,off:!0,palettes:[]},!1,n,e.home);for(let s of yt(t.state.terminals))if(o.has(s.id))r.push(`Gave ${s.name} its own default profile back — it takes it at its next start`)}for(let o of t.removals)dj(o,{recursive:!0,force:!0});if(t.removals.length>0)r.push(`Deleted ${t.removals.length} files and folders ttheme wrote`);let i=new Date;for(let o of t.touches)mj(o,i,i);return r}function vj(){let t=pj();return{home:t,configHome:J(),zdotdir:If(Ye(),t),cacheDir:jr(),stateDir:Eo(process.env.XDG_STATE_HOME??Eo(t,".local","state"),"ttheme")}}async function w2(t=!1){let e=vj(),n=kj(e);if(n.edits.length===0&&n.removals.length===0){console.log("Nothing of ttheme is installed");return}if(!t){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("uninstall asks before it deletes anything — run it in a terminal, or pass --yes");let r=Eo(e.configHome,"ttheme");ju("ttheme uninstall"),Rn([...n.edits.map((o)=>`Take ttheme out of ${o.file}`),...n.removals.map((o)=>o===r?`Delete ${o} — settings, pins, every installed picture${eb(gu(e.configHome))?`, and your markets under ${gu(e.configHome)} (push them to GitHub first to keep them)`:""}`:`Delete ${o}`)].join(`
769
- `),"Uninstall");let i=await Le({message:"Remove ttheme?"});if(te(i)||!i)throw Zr("Nothing changed"),new de}for(let r of yj(n,e))console.log(r);console.log("Open tabs keep their colors until they close — restart your terminal to drop ttheme everywhere")}import{homedir as Ej}from"node:os";async function $2(t){if(!ee.includes(t))throw Error(`no terminal ${t} — one of ${ee.join(", ")}`);let e=t,n=lr[e],r=J(),i=Ej(),o=Ye(),s=K(r);if(s.terminals.includes(e))return console.log(`${n.name} is wired already`),0;let a={configHome:r,home:i};if(!n.offered(a,o))throw Error(`${n.name} cannot be wired on this system`);if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("wire asks before it edits your configs — run it in a terminal");let c={...s,...n.installs?.(a)??{},terminals:[e]};Rn([...fl(r,c,i),...dl(r,c,i),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out"].join(`
770
- `),`Wiring ${n.name}`);let u=await Le({message:`Wire ${n.name} now?`,initialValue:!1});if(te(u)||!u)throw Zr("Nothing changed"),new de;let f=_a(r,c,o,i),l={...f,terminals:[...s.terminals,e]};Ze(r,l),Kt(r,ct(r),l,i,o);let d=eo(r,f,!0,o,i),h=hl(r,f,d,i);if(h.length>0)Rn(h.join(`
771
- `),"Next");return Oa(`Wired ${n.name}`),0}var Mj=new Set(["add","remove","market","default","on","off"]),xj={default:([t])=>$x(t),on:()=>yx(),off:()=>vx(),browse:()=>Ix(),list:([t],{json:e})=>Sx(t,e),add:(t,{market:e})=>bx(t,e),remove:(t)=>wx(t),update:(t)=>Mx(t),market:([t,e])=>Nv(t,e),new:([t],{from:e,in:n})=>tx(t,e,n),edit:async(t)=>ex(await k2(t,"edit")),check:async(t,{fix:e})=>sx(await k2(t,"check"),e),share:async([t],{tone:e})=>{let n=e;if(t!==void 0)return jg(t,n);let r=await DM(n);if(!r)throw new Er("name a palette",Nf("share"));return jg(r.name,r.tone)},init:(t,{yes:e})=>s2({yes:e}),uninstall:(t,{yes:e})=>w2(e),wire:([t])=>$2(t),info:()=>Bx(),build:(t,{only:e})=>Sf({only:e}),find:([t])=>PM(t),image:([t,e,n])=>Lx(t,e,n),sync:()=>kx(),redraw:()=>Hx(),names:()=>p2(),latest:()=>V1(),tone:([t,e,n])=>nx(t,e,n),flatten:([t,e,n,r,i,o,s])=>_x(t,e,n,r,i,o,s),bake:([t,e,n,r])=>jx(t,e,n,r)},Oj=ds.map((t)=>({...t,run:xj[t.name]}));class Er extends Error{verb;constructor(t,e){super(t);this.verb=e}}function Nf(t){let e=Oj.find((n)=>n.name===t);if(!e)throw new Er(t.startsWith("-")?`unknown option '${t}'`:`unknown command '${t}'`);return e}async function k2([t],e){let n=t??await Fg();if(n===void 0){let r=process.env.TTHEME_WORN;throw new Er(`name a palette${r?` — this tab wears ${r}`:""}`,Nf(e))}return n}function Ij(t,e){let n={help:{type:"boolean",short:"h"}};for(let[r,{type:i,short:o,multiple:s}]of Object.entries(t.flags??{}))n[r]={type:i,multiple:s===!0,...o?{short:o}:{}};try{return Sj({args:e,options:n,allowPositionals:!0})}catch(r){let[i=""]=(r instanceof Error?r.message:String(r)).split(". ");throw new Er(`${i.charAt(0).toLowerCase()}${i.slice(1)}`,t)}}function Rj(t){let[e,...n]=t;if(e===void 0)return{kind:"brief"};if(e==="-h"||e==="--help")return{kind:"help"};if(e==="-v"||e==="--version")return{kind:"version"};if(e==="help"){if(n[0]===void 0||n[0]==="all")return{kind:"help",all:n[0]==="all"};return{kind:"help",verb:Nf(n[0])}}let r=Nf(e),i=Ij(r,n);if(i.values.help)return{kind:"help",verb:r};for(let[f,{choices:l}]of Object.entries(r.flags??{}))for(let d of[i.values[f]??[]].flat())if(l&&!l.includes(String(d)))throw new Er(`--${f} takes ${l.join(", ")} — not ${d}`,r);let o=i.positionals,s=r.args.filter((f)=>f.startsWith("<")).length,a=r.args.some((f)=>f.includes("..."))?Number.POSITIVE_INFINITY:r.args.length;if(o.length<s)throw new Er(`missing ${r.args[o.length]}`,r);if(o.length>a)throw new Er(`too many arguments: ${o.slice(a).join(" ")}`,r);let{help:c,...u}=i.values;return{kind:"run",verb:r,args:o,flags:u}}var Pj=[TypeError,RangeError,ReferenceError,SyntaxError];function Aj(t){return Pj.some((e)=>t instanceof e)||t instanceof Error&&"code"in t}async function y2(t){let e;try{let n=Rj(t);if(n.kind==="version")return console.log(ft.version),0;if(n.kind==="brief")return console.error(vy()),1;if(n.kind==="help")return console.log(n.verb?rm(n.verb):Ra(n.all===!0)),0;if(e=n.verb,!n.verb.run)throw Error("runs in the shell layer — open a new tab once `ttheme init` has wired it");if(Mj.has(n.verb.name))await bv();let r=await n.verb.run(n.args,n.flags);if(!n.verb.hidden&&n.verb.name!=="uninstall"){if(m2(),n.verb.name!=="update"&&n.verb.name!=="init")Z1(),ev()}return typeof r==="number"?r:0}catch(n){if(n instanceof Er)return console.error(n.verb?`ttheme ${n.verb.name}: ${n.message}
770
+ origin_url = "`)}function r_(t){let n=T2(t).filter((r)=>e_.has(V6("sha256").update(lb(r)).digest("hex")));return n.length>0&&n.length===N2(t).length?[t]:n}function i_(t){try{return z(t)}catch{return}}function o_(t){let{home:e,configHome:n}=t,r=i_(n),i={configHome:n,home:e},o=yt(ne),s=o.map((u)=>u.unwire(i,r)),a=[bi(n,"ttheme"),t.cacheDir,t.stateDir],c=jf(n);return{edits:[...[...new Set([bi(t.zdotdir,".zshrc"),bi(e,".zshrc")])].flatMap((u)=>ln(u,Tn)),...l2(e).flatMap((u)=>ln(u,Tn)),...s.flatMap((u)=>u.edits)],removals:[...ub(c)&&_f(lb(c,"utf8"))?[c]:[],...o.flatMap((u)=>u.shelf?ks(u.shelf.dir(i)):[]),...o.flatMap((u)=>u.shelf?T2(u.shelf.dir(i)).filter(n_):[]),...r_(bi(n,"ghostty","shaders")),...s.flatMap((u)=>u.removals),...a.filter((u)=>ub(u))],touches:s.flatMap((u)=>u.touches),...r?{state:r}:{}}}function s_(t,e,n=Ve()){let r=[];for(let{file:o,content:s}of t.edits){let a=ow(o,s);r.push(a==="removed"?`Removed ${o} — ttheme had created it`:a==="restored"?`Took ttheme out of ${o}`:`Took ttheme out of ${o} — kept ${o}.ttheme.bak, since the file changed after ttheme's first edit`)}if(t.state){let o=so(e.configHome,{...t.state,off:!0,palettes:[]},!1,n,e.home);for(let s of yt(t.state.terminals))if(o.has(s.id))r.push(`Gave ${s.name} its own default profile back — it takes it at its next start`)}for(let o of t.removals)Z6(o,{recursive:!0,force:!0});if(t.removals.length>0)r.push(`Deleted ${t.removals.length} files and folders ttheme wrote`);let i=new Date;for(let o of t.touches)Q6(o,i,i);return r}function a_(){let t=t_();return{home:t,configHome:J(),zdotdir:Cf(Ve(),t),cacheDir:jr(),stateDir:bi(process.env.XDG_STATE_HOME??bi(t,".local","state"),"ttheme")}}async function H2(t=!1){let e=a_(),n=o_(e);if(n.edits.length===0&&n.removals.length===0){console.log("Nothing of ttheme is installed");return}if(!t){if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("uninstall asks before it deletes anything — run it in a terminal, or pass --yes");let r=bi(e.configHome,"ttheme");Du("ttheme uninstall"),An([...n.edits.map((o)=>`Take ttheme out of ${o.file}`),...n.removals.map((o)=>o===r?`Delete ${o} — settings, pins, every installed picture${ub(Su(e.configHome))?`, and your markets under ${Su(e.configHome)} (push them to GitHub first to keep them)`:""}`:`Delete ${o}`)].join(`
771
+ `),"Uninstall");let i=await Ce({message:"Remove ttheme?"});if(ee(i)||!i)throw Vr("Nothing changed"),new de}for(let r of s_(n,e))console.log(r);console.log("Open tabs keep their colors until they close — restart your terminal to drop ttheme everywhere")}import{homedir as c_}from"node:os";async function F2(t){if(!ne.includes(t))throw Error(`no terminal ${t} — one of ${ne.join(", ")}`);let e=t,n=dr[e],r=J(),i=c_(),o=Ve(),s=z(r);if(s.terminals.includes(e))return console.log(`${n.name} is wired already`),0;let a={configHome:r,home:i};if(!n.offered(a,o))throw Error(`${n.name} cannot be wired on this system`);if(process.stdin.isTTY!==!0||process.stdout.isTTY!==!0)throw Error("wire asks before it edits your configs — run it in a terminal");let c={...s,...n.installs?.(a)??{},terminals:[e]};An([...$l(r,c,i),...kl(r,c,i),"Each config is backed up once to <file>.ttheme.bak before the first edit — `npx @kecan0406/ttheme uninstall` takes it all out"].join(`
772
+ `),`Wiring ${n.name}`);let u=await Ce({message:`Wire ${n.name} now?`,initialValue:!1});if(ee(u)||!u)throw Vr("Nothing changed"),new de;let f=Ja(r,c,o,i),l={...f,terminals:[...s.terminals,e]};Ze(r,l),zt(r,at(r),l,i,o);let d=so(r,f,!0,o,i),h=yl(r,f,d,i);if(h.length>0)An(h.join(`
773
+ `),"Next");return Fa(`Wired ${n.name}`),0}var l_=new Set(["add","remove","market","default","on","off"]),f_={default:([t])=>Fx(t),on:()=>Cx(),off:()=>jx(),browse:()=>Kx(),list:([t],{json:e})=>Gx(t,e),add:(t,{market:e})=>Tx(t,e),remove:(t)=>Hx(t),update:(t)=>Bx(t),market:([t,e])=>Vv(t,e),new:([t],{from:e,in:n})=>gx(t,e,n),edit:async(t)=>bx(await L2(t,"edit")),check:async(t,{fix:e})=>vx(await L2(t,"check"),e),share:async([t],{tone:e})=>{let n=e;if(t!==void 0)return Dg(t,n);let r=await ux(n);if(!r)throw new Er("name a palette",Bf("share"));return Dg(r.name,r.tone)},init:(t,{yes:e})=>v2({yes:e}),uninstall:(t,{yes:e})=>H2(e),wire:([t])=>F2(t),info:()=>r2(),build:(t,{only:e})=>Tf({only:e}),find:([t])=>DM(t),image:([t,e,n])=>Xx(t,e,n),sync:()=>Lx(),redraw:()=>Vx(),names:()=>A2(),latest:()=>pv(),tone:([t,e,n])=>wx(t,e,n),flatten:([t,e,n,r,i,o,s])=>e2(t,e,n,r,i,o,s),bake:([t,e,n,r])=>t2(t,e,n,r)},d_=gs.map((t)=>({...t,run:f_[t.name]}));class Er extends Error{verb;constructor(t,e){super(t);this.verb=e}}function Bf(t){let e=d_.find((n)=>n.name===t);if(!e)throw new Er(t.startsWith("-")?`unknown option '${t}'`:`unknown command '${t}'`);return e}async function L2([t],e){let n=t??await Wg();if(n===void 0){let r=process.env.TTHEME_WORN;throw new Er(`name a palette${r?` — this tab wears ${r}`:""}`,Bf(e))}return n}function h_(t,e){let n={help:{type:"boolean",short:"h"}};for(let[r,{type:i,short:o,multiple:s}]of Object.entries(t.flags??{}))n[r]={type:i,multiple:s===!0,...o?{short:o}:{}};try{return u_({args:e,options:n,allowPositionals:!0})}catch(r){let[i=""]=(r instanceof Error?r.message:String(r)).split(". ");throw new Er(`${i.charAt(0).toLowerCase()}${i.slice(1)}`,t)}}function m_(t){let[e,...n]=t;if(e===void 0)return{kind:"brief"};if(e==="-h"||e==="--help")return{kind:"help"};if(e==="-v"||e==="--version")return{kind:"version"};if(e==="help"){if(n[0]===void 0||n[0]==="all")return{kind:"help",all:n[0]==="all"};return{kind:"help",verb:Bf(n[0])}}let r=Bf(e),i=h_(r,n);if(i.values.help)return{kind:"help",verb:r};for(let[f,{choices:l}]of Object.entries(r.flags??{}))for(let d of[i.values[f]??[]].flat())if(l&&!l.includes(String(d)))throw new Er(`--${f} takes ${l.join(", ")} — not ${d}`,r);let o=i.positionals,s=r.args.filter((f)=>f.startsWith("<")).length,a=r.args.some((f)=>f.includes("..."))?Number.POSITIVE_INFINITY:r.args.length;if(o.length<s)throw new Er(`missing ${r.args[o.length]}`,r);if(o.length>a)throw new Er(`too many arguments: ${o.slice(a).join(" ")}`,r);let{help:c,...u}=i.values;return{kind:"run",verb:r,args:o,flags:u}}var p_=[TypeError,RangeError,ReferenceError,SyntaxError];function g_(t){return p_.some((e)=>t instanceof e)||t instanceof Error&&"code"in t}async function C2(t){let e;try{let n=m_(t);if(n.kind==="version")return console.log(lt.version),0;if(n.kind==="brief")return console.error(jy()),1;if(n.kind==="help")return console.log(n.verb?fm(n.verb):Ca(n.all===!0)),0;if(e=n.verb,!n.verb.run)throw Error("runs in the shell layer — open a new tab once `ttheme init` has wired it");if(l_.has(n.verb.name))await Fv();let r=await n.verb.run(n.args,n.flags);if(!n.verb.hidden&&n.verb.name!=="uninstall"){if(R2(),n.verb.name!=="update"&&n.verb.name!=="init")mv(),$v()}return typeof r==="number"?r:0}catch(n){if(n instanceof Er)return console.error(n.verb?`ttheme ${n.verb.name}: ${n.message}
772
774
 
773
- ${rm(n.verb)}`:`ttheme: ${n.message} — see \`ttheme help\``),1;if(n instanceof de)return 1;if(n instanceof Va)return n.exit;let r=process.env.TTHEME_DEBUG&&n instanceof Error?n.stack:void 0;return console.error(`
774
- ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${Aj(n)?"\nReport a bug with the output of `ttheme info`":""}`),1}}if(Tj)if(process.env.TTHEME_DEBUG&&typeof Bun>"u"&&!process.sourceMapsEnabled){let t=Nj(process.execPath,["--enable-source-maps",...process.argv.slice(1)],{stdio:"inherit"});process.exitCode=t.status??1}else process.exitCode=await y2(process.argv.slice(2));
775
+ ${fm(n.verb)}`:`ttheme: ${n.message} — see \`ttheme help\``),1;if(n instanceof de)return 1;if(n instanceof sc)return n.exit;let r=process.env.TTHEME_DEBUG&&n instanceof Error?n.stack:void 0;return console.error(`
776
+ ttheme${e?` ${e.name}`:""}: ${r??(n instanceof Error?n.message:String(n))}${g_(n)?"\nReport a bug with the output of `ttheme info`":""}`),1}}if(w_)if(process.env.TTHEME_DEBUG&&typeof Bun>"u"&&!process.sourceMapsEnabled){let t=b_(process.execPath,["--enable-source-maps",...process.argv.slice(1)],{stdio:"inherit"});process.exitCode=t.status??1}else process.exitCode=await C2(process.argv.slice(2));
775
777
 
776
- //# debugId=F9636CD23DA3324B64756E2164756E21
778
+ //# debugId=1B8481BE5F7837D664756E2164756E21
777
779
  //# sourceMappingURL=ttheme.js.map