Skip to content

Instantly share code, notes, and snippets.

@giuseppe998e
Last active April 26, 2024 15:14
Show Gist options
  • Save giuseppe998e/45f93fc90bab3b87e74b62aa299fb35d to your computer and use it in GitHub Desktop.
Save giuseppe998e/45f93fc90bab3b87e74b62aa299fb35d to your computer and use it in GitHub Desktop.
A minimal implementation of https://itty.bitty.site
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>base64 + lzma + iframe</title>
<style>iframe{position:absolute;top:0;left:0;height:100vh;width:100%;border:none}</style>
</head>
<body>
<iframe sandbox="allow-same-origin allow-downloads allow-scripts allow-forms allow-top-navigation allow-popups allow-modals allow-popups-to-escape-sandbox"></iframe>
<script>/* github.com/LZMA-JS */var e=function(){var r="function"==typeof setImmediate?setImmediate:setTimeout,o=4294967296,n=[4294967295,-4294967296],t=[0,0],i=[1,0];function u(e){var r=[];return r[e-1]=void 0,r}function s(e,r){return c(e[0]+r[0],e[1]+r[1])}function d(e,r){var o,n;return e[0]==r[0]&&e[1]==r[1]?0:(o=e[1]<0,n=r[1]<0,o&&!n?-1:!o&&n?1:function(e,r){return c(e[0]-r[0],e[1]-r[1])}(e,r)[1]<0?-1:1)}function c(e,r){var n,t;for(e%=0x10000000000000000,r=(r%=0x10000000000000000)-(n=r%o)+(t=Math.floor(e/o)*o),e=e-t+n;e<0;)e+=o,r-=o;for(;e>4294967295;)e-=o,r+=o;for(r%=0x10000000000000000;r>0x7fffffff00000000;)r-=0x10000000000000000;for(;r<-0x8000000000000000;)r+=0x10000000000000000;return[e,r]}function m(e){return e>=0?[e,0]:[e+o,-4294967296]}function a(e){return e[0]>=2147483648?~~Math.max(Math.min(e[0]-o,2147483647),-2147483648):~~Math.max(Math.min(e[0],2147483647),-2147483648)}function _(e){return e.pos>=e.count?-1:255&e.buf[e.pos++]}function f(e){var r=e.buf;return r.length=e.count,r}function p(e,r,o){var i,s,d,c,a="",f=[];for(s=0;s<5;++s){if(-1==(d=_(r)))throw new Error("truncated input");f[s]=d<<24>>24}if(i=function(e){e.m_OutWindow={},e.m_RangeDecoder={},e.m_IsMatchDecoders=u(192),e.m_IsRepDecoders=u(12),e.m_IsRepG0Decoders=u(12),e.m_IsRepG1Decoders=u(12),e.m_IsRepG2Decoders=u(12),e.m_IsRep0LongDecoders=u(192),e.m_PosSlotDecoder=u(4),e.m_PosDecoders=u(114),e.m_PosAlignDecoder=M({},4),e.m_LenDecoder=P({}),e.m_RepLenDecoder=P({}),e.m_LiteralDecoder={};for(var r=0;r<4;++r)e.m_PosSlotDecoder[r]=M({},6);return e}({}),!function(e,r){var o,n,t,i,s,d,c;if(r.length<5)return 0;for(c=255&r[0],t=c%9,i=(d=~~(c/9))%5,s=~~(d/5),o=0,n=0;n<4;++n)o+=(255&r[1+n])<<8*n;if(o>99999999||!function(e,r,o,n){if(r>8||o>4||n>4)return 0;!function(e,r,o){var n,t;if(null!=e.m_Coders&&e.m_NumPrevBits==o&&e.m_NumPosBits==r)return;for(e.m_NumPosBits=r,e.m_PosMask=(1<<r)-1,e.m_NumPrevBits=o,t=1<<e.m_NumPrevBits+e.m_NumPosBits,e.m_Coders=u(t),n=0;n<t;++n)e.m_Coders[n]=S({})}(e.m_LiteralDecoder,o,r);var t=1<<n;return R(e.m_LenDecoder,t),R(e.m_RepLenDecoder,t),e.m_PosStateMask=t-1,1}(e,t,i,s))return 0;return function(e,r){if(r<0)return 0;e.m_DictionarySize!=r&&(e.m_DictionarySize=r,e.m_DictionarySizeCheck=Math.max(e.m_DictionarySize,1),function(e,r){null!=e._buffer&&e._windowSize==r||(e._buffer=u(r));e._windowSize=r,e._pos=0,e._streamPos=0}(e.m_OutWindow,Math.max(e.m_DictionarySizeCheck,4096)));return 1}(e,o)}(i,f))throw new Error("corrupted input");for(s=0;s<64;s+=8){if(-1==(d=_(r)))throw new Error("truncated input");1==(d=d.toString(16)).length&&(d="0"+d),a=d+""+a}/^0+$|^f+$/i.test(a)?e.length_0=n:(c=parseInt(a,16),e.length_0=c>4294967295?n:m(c)),e.chunker=function(e,r,o,n){return e.m_RangeDecoder.Stream=r,w(e.m_OutWindow),e.m_OutWindow._stream=o,function(e){e.m_OutWindow._streamPos=0,e.m_OutWindow._pos=0,B(e.m_IsMatchDecoders),B(e.m_IsRep0LongDecoders),B(e.m_IsRepDecoders),B(e.m_IsRepG0Decoders),B(e.m_IsRepG1Decoders),B(e.m_IsRepG2Decoders),B(e.m_PosDecoders),function(e){var r,o;for(o=1<<e.m_NumPrevBits+e.m_NumPosBits,r=0;r<o;++r)B(e.m_Coders[r].m_Decoders)}(e.m_LiteralDecoder);for(var r=0;r<4;++r)B(e.m_PosSlotDecoder[r].Models);C(e.m_LenDecoder),C(e.m_RepLenDecoder),B(e.m_PosAlignDecoder.Models),function(e){e.Code=0,e.Range=-1;for(var r=0;r<5;++r)e.Code=e.Code<<8|_(e.Stream)}(e.m_RangeDecoder)}(e),e.state=0,e.rep0=0,e.rep1=0,e.rep2=0,e.rep3=0,e.outSize=n,e.nowPos64=t,e.prevByte=0,function(e,r){return e.decoder=r,e.encoder=null,e.alive=1,e}({},e)}(i,r,o,e.length_0)}function D(e,r){return e.output=function(e){return e.buf=u(32),e.count=0,e}({}),p(e,function(e,r){return e.buf=r,e.pos=0,e.count=r.length,e}({},r),e.output),e}function l(e){var r=e._pos-e._streamPos;r&&(!function(e,r,o,n){!function(e,r,o,n,t){for(var i=0;i<t;++i)o[n+i]=e[r+i]}(r,o,e.buf,e.count,n),e.count+=n}(e._stream,e._buffer,e._streamPos,r),e._pos>=e._windowSize&&(e._pos=0),e._streamPos=e._pos)}function g(e,r){var o=e._pos-r-1;return o<0&&(o+=e._windowSize),e._buffer[o]}function w(e){l(e),e._stream=null}function v(e){if(!e.alive)throw new Error("bad state");if(e.encoder)throw new Error("No encoding");return function(e){var r=function(e){var r,o,n,t,u,c;if(c=a(e.nowPos64)&e.m_PosStateMask,y(e.m_RangeDecoder,e.m_IsMatchDecoders,(e.state<<4)+c)){if(y(e.m_RangeDecoder,e.m_IsRepDecoders,e.state))n=0,y(e.m_RangeDecoder,e.m_IsRepG0Decoders,e.state)?(y(e.m_RangeDecoder,e.m_IsRepG1Decoders,e.state)?(y(e.m_RangeDecoder,e.m_IsRepG2Decoders,e.state)?(o=e.rep3,e.rep3=e.rep2):o=e.rep2,e.rep2=e.rep1):o=e.rep1,e.rep1=e.rep0,e.rep0=o):y(e.m_RangeDecoder,e.m_IsRep0LongDecoders,(e.state<<4)+c)||(e.state=e.state<7?9:11,n=1),n||(n=h(e.m_RepLenDecoder,e.m_RangeDecoder,c)+2,e.state=e.state<7?8:11);else if(e.rep3=e.rep2,e.rep2=e.rep1,e.rep1=e.rep0,n=2+h(e.m_LenDecoder,e.m_RangeDecoder,c),e.state=e.state<7?7:10,u=L(e.m_PosSlotDecoder[function(e){return(e-=2)<4?e:3}(n)],e.m_RangeDecoder),u>=4){if(t=(u>>1)-1,e.rep0=(2|1&u)<<t,u<14)e.rep0+=function(e,r,o,n){var t,i,u=1,s=0;for(i=0;i<n;++i)t=y(o,e,r+u),u<<=1,u+=t,s|=t<<i;return s}(e.m_PosDecoders,e.rep0-u-1,e.m_RangeDecoder,t);else if(e.rep0+=function(e,r){var o,n,t=0;for(o=r;0!=o;--o)e.Range>>>=1,n=e.Code-e.Range>>>31,e.Code-=e.Range&n-1,t=t<<1|1-n,-16777216&e.Range||(e.Code=e.Code<<8|_(e.Stream),e.Range<<=8);return t}(e.m_RangeDecoder,t-4)<<4,e.rep0+=function(e,r){var o,n,t=1,i=0;for(n=0;n<e.NumBitLevels;++n)o=y(r,e.Models,t),t<<=1,t+=o,i|=o<<n;return i}(e.m_PosAlignDecoder,e.m_RangeDecoder),e.rep0<0)return-1==e.rep0?1:-1}else e.rep0=u;if(d(m(e.rep0),e.nowPos64)>=0||e.rep0>=e.m_DictionarySizeCheck)return-1;!function(e,r,o){var n=e._pos-r-1;for(n<0&&(n+=e._windowSize);0!=o;--o)n>=e._windowSize&&(n=0),e._buffer[e._pos++]=e._buffer[n++],e._pos>=e._windowSize&&l(e)}(e.m_OutWindow,e.rep0,n),e.nowPos64=s(e.nowPos64,m(n)),e.prevByte=g(e.m_OutWindow,0)}else r=function(e,r,o){return e.m_Coders[((r&e.m_PosMask)<<e.m_NumPrevBits)+((255&o)>>>8-e.m_NumPrevBits)]}(e.m_LiteralDecoder,a(e.nowPos64),e.prevByte),e.state<7?e.prevByte=function(e,r){var o=1;do{o=o<<1|y(r,e.m_Decoders,o)}while(o<256);return o<<24>>24}(r,e.m_RangeDecoder):e.prevByte=function(e,r,o){var n,t,i=1;do{if(t=o>>7&1,o<<=1,i=i<<1|(n=y(r,e.m_Decoders,(1+t<<8)+i)),t!=n){for(;i<256;)i=i<<1|y(r,e.m_Decoders,i);break}}while(i<256);return i<<24>>24}(r,e.m_RangeDecoder,g(e.m_OutWindow,e.rep0)),function(e,r){e._buffer[e._pos++]=r,e._pos>=e._windowSize&&l(e)}(e.m_OutWindow,e.prevByte),e.state=(f=e.state)<4?0:f<10?f-3:f-6,e.nowPos64=s(e.nowPos64,i);var f;return 0}(e.decoder);if(-1==r)throw new Error("corrupted input");e.inBytesProcessed=n,e.outBytesProcessed=e.decoder.nowPos64,(r||d(e.decoder.outSize,t)>=0&&d(e.decoder.nowPos64,e.decoder.outSize)>=0)&&(l(e.decoder.m_OutWindow),w(e.decoder.m_OutWindow),e.decoder.m_RangeDecoder.Stream=null,e.alive=0)}(e),e.alive}function R(e,r){for(;e.m_NumPosStates<r;++e.m_NumPosStates)e.m_LowCoder[e.m_NumPosStates]=M({},3),e.m_MidCoder[e.m_NumPosStates]=M({},3)}function h(e,r,o){if(!y(r,e.m_Choice,0))return L(e.m_LowCoder[o],r);var n=8;return y(r,e.m_Choice,1)?n+=8+L(e.m_HighCoder,r):n+=L(e.m_MidCoder[o],r),n}function P(e){return e.m_Choice=u(2),e.m_LowCoder=u(16),e.m_MidCoder=u(16),e.m_HighCoder=M({},8),e.m_NumPosStates=0,e}function C(e){B(e.m_Choice);for(var r=0;r<e.m_NumPosStates;++r)B(e.m_LowCoder[r].Models),B(e.m_MidCoder[r].Models);B(e.m_HighCoder.Models)}function S(e){return e.m_Decoders=u(768),e}function M(e,r){return e.NumBitLevels=r,e.Models=u(1<<r),e}function L(e,r){var o,n=1;for(o=e.NumBitLevels;0!=o;--o)n=(n<<1)+y(r,e.Models,n);return n-(1<<e.NumBitLevels)}function y(e,r,o){var n,t=r[o];return n=(e.Range>>>11)*t,(-2147483648^e.Code)<(-2147483648^n)?(e.Range=n,r[o]=t+(2048-t>>>5)<<16>>16,-16777216&e.Range||(e.Code=e.Code<<8|_(e.Stream),e.Range<<=8),0):(e.Range-=n,e.Code-=n,r[o]=t-(t>>>5)<<16>>16,-16777216&e.Range||(e.Code=e.Code<<8|_(e.Stream),e.Range<<=8),1)}function B(e){for(var r=e.length-1;r>=0;--r)e[r]=1024}function I(e){for(var r,o,n,t=0,i=0,u=e.length,s=[],d=[];t<u;++t,++i){if(128&(r=255&e[t]))if(192==(224&r)){if(t+1>=u)return e;if(128!=(192&(o=255&e[++t])))return e;d[i]=(31&r)<<6|63&o}else{if(224!=(240&r))return e;if(t+2>=u)return e;if(128!=(192&(o=255&e[++t])))return e;if(128!=(192&(n=255&e[++t])))return e;d[i]=(15&r)<<12|(63&o)<<6|63&n}else{if(!r)return e;d[i]=r}16383==i&&(s.push(String.fromCharCode.apply(String,d)),i=-1)}return i>0&&(d.length=i,s.push(String.fromCharCode.apply(String,d))),s.join("")}function N(e){return e[1]+e[0]}return"undefined"==typeof onmessage||"undefined"!=typeof window&&void 0!==window.document||(onmessage=function(r){r&&r.data&&2==r.data.action&&e.decompress(r.data.data,r.data.cbn)}),{decompress:function(e,o,n){var t,i,u,s,d={},c=void 0===o&&void 0===n;if("function"!=typeof o&&(i=o,o=n=0),n=n||function(e){if(void 0!==i)return function(e,r){postMessage({action:3,cbn:r,result:e})}(u?e:-1,i)},o=o||function(e,r){if(void 0!==i)return postMessage({action:2,cbn:i,result:e,error:r})},c){for(d.d=D({},e);v(d.d.chunker););return I(f(d.d.output))}try{d.d=D({},e),s=N(d.d.length_0),u=s>-1,n(0)}catch(e){return o(null,e)}r((function e(){try{for(var i,c=0,m=(new Date).getTime();v(d.d.chunker);)if(++c%1e3==0&&(new Date).getTime()-m>200)return u&&(t=N(d.d.chunker.decoder.nowPos64)/s,n(t)),r(e,0),0;n(1),i=I(f(d.d.output)),r(o.bind(null,i),0)}catch(e){o(null,e)}}),0)}}}();this.LZMA=this.LZMA_WORKER=e;</script>
<script>
(function(){
const utf8ToB64 = (val) => btoa(unescape(encodeURIComponent(val)));
const strToUint8Array = (val, callback) => {
const bytesString = atob(val.substring(1));
let bytesArray = new Uint8Array(new ArrayBuffer(bytesString.length));
for (let i = bytesString.length; i--; )
bytesArray[i] = bytesString.charCodeAt(i);
callback(bytesArray);
}
strToUint8Array(document.location.hash, (data) =>
LZMA.decompress(data, (res, err) => {
if (err) console.log(err);
else
document.body.firstElementChild.src = `data:text/html;charset=utf-8;base64,${utf8ToB64(
`<base target="_top">${res}`
)}`;
})
);
})()
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment