0x616f…6ce9

All memos sent from and to 0x616f…6ce9.

const i=[[0,0,2e3,2e3],[0,0,1326,2e3],[0,0,1999,2e3],[0,0,126,2e3],[0,0,2e3,83],[0,0,895,2e3],[0,0,875,2e3],[0,0,2e3,426],[0,0,2e3,1474],[0,0,2e3,1e3],[0,0,2e3,1574],[0,0,1478,2e3]],h=[[0,38,77,115,154,192,231,269,308,346,385,423,462,500,538,577,615,654,692,731,769,808,846,885,923,962],[0,140,256,360,360,360,442,535,593],[1083,0,0,0,0,0,916,916,916,916,916,916,916,916,916,916,916,916],[0,0,0,0,0,0,0,0,0,0,21],[0,50,233,367,433,633,667,1058,1550,1925],[0,0,79,79,79,79,79,184],[0,0,0,0,0,0,0,0,0,0,0,0],[0,410,820,852,1066,1098,1311,1525,1557,1590,1639,1918],[0,0,184,184,184,184,395,526,632,1053],[0,89,689],[0,43,128,128,426,468,553,553,787,787,915,957,1021,1021],[0,0,65,348]],m=[[0,38,77,115,154,192,231,269,308,346,385,423,462,500,538,577,615,654,692,731,769,808,846,885,923,962],[0,0,314,535,535,535,616,860,860],[0,0,400,800,1200,1600,0,167,333,500,667,833,1e3,1166,1333,1500,1666,1833],[0,0,0,0,0,0,284,453,505,526,579],[0,0,0,0,0,0,17,33,50,50],[0,237,421,789,1e3,1237,1237,1474],[0,100,150,150,200,275,325,400,450,525,525,525],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,105,105,158,211,447],[0,0,0],[0,0,85,128,319,319,426,489,574,617,681,681,745,787],[0,130,391,978]],y=[[2e3,1923,1846,1769,1692,1615,1538,1462,1385,1308,1231,1154,1077,1e3,923,846,769,692,615,538,462,385,308,231,154,77],[1326,1186,907,721,616,616,534,244,186],[916,916,916,916,916,916,167,167,167,167,167,167,167,167,167,167,167,167],[126,126,126,126,126,126,126,126,126,126,84],[2e3,1950,1767,1633,1567,1367,1333,942,450,75],[895,895,816,816,737,579,526,421],[875,650,450,400,400,350,300,250,175,125,50,50],[2e3,1590,1180,1148,934,902,689,475,443,410,361,33],[2e3,2e3,1737,1737,1737,1658,1447,1237,921,395],[2e3,1822,622],[2e3,1915,1447,1447,1e3,915,745,745,511,511,319,277,128,128],[1478,1413,1304,913]],g=[[2e3,1923,1846,1769,1692,1615,1538,1462,1385,1308,1231,1154,1077,1e3,923,846,769,692,615,538,462,385,308,231,154,77],[2e3,2e3,1465,1128,1128,1047,837,395,395],[2e3,1999,1599,1199,800,400,2e3,1833,1666,1500,1333,1166,1e3,833,667,500,333,167],[2e3,1895,1705,1242,895,863,558,337,285,211,63],[83,83,83,83,83,83,66,50,33,33],[2e3,1553,1368,1001,790,553,553,316],[2e3,1800,1750,1750,1700,1625,1575,1500,1450,1325,1325,50],[426,426,426,426,426,426,426,426,426,426,426,426],[1474,1395,1263,1211,1158,921,842,711,605,289],[1e3,1e3,1e3],[1574,1574,1383,1298,915,915,744,681,532,489,319,319,149,107],[2e3,1370,1109,522]],k=[["#f25600","#bdd8ff","#ff3e6c","#ffc2c2","#ff7381","#191aff","#ffe8cc","#758dff","#ffb899","#b6bdfc","#ffe2d9","#f66951","#ffa4dc","#80b5ff","#d6d2ff","#ff2d0a","#ffb9a8","#ff8e86","#ffdef2","#fff1ec","#fa5","#ffd2d2","#ff8db0","#ffc3d8","#ffe8dc","#ff0a95"],["#2d3742","#171d26","#d80077","#96c8e2","#d80077","#ff2610","#ff8500","#96c8e2","#ffb133"],["#ffce00","#009de2","#95c6d1","#00af7d","#f73400","#d80053","#009de2","#26727a","#1542ff","#0b3642","#f73400","#725b5b","#95c6d1","#121fb5","#00af7d","#725b5b","#95c6d1","#0b3642"],["#001cbe","#1b63cc","#2dbcd3","#3793ef","#cc2b00","#001cbe","#1b63cc","#009326","#1b63cc","#1b63cc","#f73e26"],["#0079d2","#74a1b6","#222f38","#f13900","#c0b6b1","#f13900","#ffcbcb","#f13900","#078112","#0037ff"],["#002356","#00359e","#101721","#f93500","#101721","#ffa300","#00751e","#00359e"],["#0b00a0","#004daa","#00a1c6","#00a1c6","#d80053","#0027ea","#ff3b6e","#004441","#007dc9","#ff3b6e","#ff9700","#ff6e00"],["#f9eded","#ffded7","#223d32","#ffc5e2","#ff7de3","#ffdec0","#e5c1e1","#ff99c7","#223d32","#e5c1e1","#dce1e5","#140f7c"],["#c9007d","#ffc5e6","#ff6e00","#ff6e00","#ff8aab","#f20085","#ff39da","#ffac12","#f30","#c9007d"],["#00438c","#e83100","#00438c"],["#e22000","#7abdcc","#e22000","#006349","#1fa000","#0084d1","#0084d1","#7abdcc","#e22000","#7abdcc","#e22000","#006349","#1fa000","#0084d1"],["#81aee2","#0041c4","#ff4133","#ffce00"]],t=tokenData.tokenId%1e3,e=document.createElement("canvas"),n=e.getContext("2d");n.imageSmoothingEnabled=!1;n.webkitImageSmoothingEnabled=!1;n.msImageSmoothingEnabled=!1;e.width=i[t][2]-i[t][0];e.height=i[t][3]-i[t][1];let l=1,s=1;function u(){e.style.display="block",e.style.position="absolute",e.style["max-width"]=window.innerWidth+"px",e.style["max-height"]=window.innerHeight+"px",e.style.padding="0",e.style.margin="auto",e.style.top="0",e.style.right="0",e.style.bottom="0",e.style.left="0";let f=i[t][2]-i[t][0],c=i[t][3]-i[t][1];c>f?(e.style.height="80%",e.style.width="auto"):c<f?(e.style.width="80%",e.style.height="auto"):f==c&&(e.style.width=`${Math.min(window.innerHeight,window.innerWidth)*.8}px`,e.style.height=`${Math.min(window.innerHeight,window.innerWidth)*.8}px`),window.requestAnimationFrame(()=>b(n,e,o))}window.addEventListener("resize",u,!0);document.querySelector("body").appendChild(e);let o=!1,a=1;u();function b(f,c,r){f.clearRect(0,0,c.width,c.height);for(let d=0;d<h[t].length;d++)f.save(),f.fillStyle=k[t][d],f.fillRect(h[t][d]*a/s,m[t][d]*a/l,y[t][d]*a/s,g[t][d]*a/l),f.restore(),r&&(f.save(),f.lineWidth=1*a,f.strokeStyle="black",f.strokeRect(h[t][d]*a/s,m[t][d]*a/l,y[t][d]*a/s,g[t][d]*a/l),f.restore())}b(n,e,o);document.addEventListener("keydown",function(f){f.key.toLowerCase()=="l"&&(o=!o,b(n,e,o)),f.key.toLowerCase()=="1"&&(a=1,w()),f.key.toLowerCase()=="2"&&(a=2,w()),f.key.toLowerCase()=="3"&&(a=3,w())});function w(){let f=i[t][2]-i[t][0],c=i[t][3]-i[t][1];e.width=f*a/s,e.height=c*a/l,b(n,e,o),L(e)}function L(f,c="image/png"){let r="portraits",d=document.createElement("a");d.setAttribute("download",`${r}.png`);let p=f.toDataURL(c).replace(/^data:image\/png/,"data:application/octet-stream");d.setAttribute("href",p),d.click()}
Portraits is a collection of mirrors that reinterprets what a portrait depicts. Each mirror is based on a name, a word, or a phrase that is algorithmically translated into nestling rectangles of color. Inviting dialogue with its viewers through imbued text, form, color, and fragmented reflections, each mirror is just as exact and slippery as the language used to create it.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eElkIjoiMGExZTAyZDktZDhmMy00ZWQ5LWI0YWItMzlmYjA2YmY1YTc0IiwiaWF0IjoxNjkyODk4NTc2LCJpc3MiOiJwYXBlci54eXoifQ.6ynOcFmi8mHAXVQL8KboicmAzo1-KYoVV7wV2hiaho8
a,i,r])t.getWorldPosition(l),l.project(e),(l.x<-1||l.x>1||l.y<-1||l.y>1)&&(c=!1),o.remove(t);return[80,100,260,280,240,300,60,120].includes(t.selected.xz)&&(c=!1),c}const x=new THREE.Scene,w=new THREE.PerspectiveCamera(10,1,10,8e3),y=new THREE.WebGLRenderer({preserveDrawingBuffer:!0,antialiasing:!0});function g(){let e=Math.min(window.innerWidth,window.innerHeight);y.domElement.style.width=e+"px",y.domElement.style.height=e+"px"}y.setSize(t,t),y.setPixelRatio(2),document.body.appendChild(y.domElement),g(),window.addEventListener("resize",g,!0);let M,R,v,T=!1,H=!1;window.addEventListener("keyup",(e=>{if("s"==e.key){let n,a="image/png",i="tennis.png";try{n=y.domElement.toDataURL(a)}catch(c){return void console.log("Browser does not support taking screenshot of 3d context")}let r=document.createElement("a");"string"==typeof r.download?(document.body.appendChild(r),r.style.display="none",r.download=i,r.href=n,r.click(),document.body.removeChild(r)):location.replace(uri)}function o(e){w.position.copy(M),w.quaternion.copy(R),w.zoom=v.x,w.fov=v.y,w.updateProjectionMatrix(),w.updateMatrixWorld(),y.render(x,w),A(S,k,z.angleY,z.angleXZ,z,z.ballDirection,z.ballSpeed),h(w,j),y.render(x,w),y.setPixelRatio(e);let o=_(t*e,t*e);for(let n of j)n.material.uniforms.noise.value=o,n.material.uniforms.uSize.value=t*e;y.render(x,w),g(),H=!1}if("1"==e.key&&o(2),"2"==e.key&&o(3),"t"==e.key){if(T||H)return;requestAnimationFrame((()=>{w.position.set(0,2500,0),w.lookAt(0,0,0),w.zoom=1,w.fov=55,w.updateProjectionMatrix(),w.updateMatrixWorld(),y.render(x,w),A(S,k,0,0,z,z.ballDirection,z.ballSpeed),h(w,j),y.render(x,w),H=!0}))}if("a"==e.key){if(T||H)return;T=!0,M=w.position.clone(),R=w.quaternion.clone(),v=new THREE.Vector3(w.zoom,w.fov,0);let l=new THREE.Quaternion,s=new THREE.Vector3,F=new THREE.Vector3(0,2500,0),E=(new THREE.Quaternion).setFromEuler(new THREE.Euler(-1.57069632679523,0,0)),d=new THREE.Vector3(1,55,0);function f(e){return e*e*e*e*e}let u=0;function p(){var e;if(u<1&&requestAnimationFrame(p),w.position.lerpVectors(M,F,f(u)),THREE.Quaternion.slerp(R,E,l,f(u)),w.quaternion.copy(l),s.lerpVectors(v,d,(e=u,1-Math.pow(1-e,3))),w.zoom=s.x,w.fov=s.y,w.updateProjectionMatrix(),y.render(x,w),u>=1)return requestAnimationFrame((()=>{A(S,k,0,0,z,z.ballDirection,z.ballSpeed),h(w,j),y.render(x,w)})),H=!0,void(T=!1);u+=.005}p()}}));const[z,S,k,j,I]=function(){let l=[];for(let e of c)for(let t=0;t<e[8];t++)l.push(e);let s=u(l);s=function(e){let t=[];for(let o=0;o<e[7].length;o+=3)t.push([e[7][o],e[7][o+1],e[7][o+2]]);return{ball:r[e[0]],lines:r[e[1]],shadow:{color:r[e[2]],opacity:e[3]},colors:t.map((e=>e.map((e=>r[e])))),outside:[e[4],e[5],e[6]].map((e=>r[e])),weight:e[8]}}(s);let[d,f]=function(e,r){const c=_(t*r,t*r),l=[],s=[];for(let[t,[o,a,i,s]]of n.entries()){const n=new THREE.Mesh(new THREE.PlaneGeometry(o,a),b(e.colors[t],c,r));n.position.set(i,0,s),n.rotation.x-=E(90),l.push(n)}const F=new THREE.BufferGeometry;F.setAttribute("position",new THREE.Float32BufferAttribute(a,3)),F.setIndex(i);const d=new THREE.Mesh(F,b(e.outside,c,r));d.outside=!0,l.push(d);const f=new THREE.MeshBasicMaterial({color:e.lines,depthTest:!1});for(let[e,t,n,a]of o){const o=new THREE.Mesh(new THREE.PlaneGeometry(e,t),f);o.position.set(n,0,a),o.rotation.x-=E(90),s.push(o)}return[l,s]}(s,y.getPixelRatio()),[p,m,C]=function(t){const o=new THREE.Mesh(new THREE.SphereGeometry(e,64,32),new THREE.MeshBasicMaterial({color:t.ball}));let n=1.5*e;const a=new THREE.Mesh(new THREE.ShapeGeometry((new THREE.Shape).absellipse(0,n,3.43,n,0,2*Math.PI,!1,0),64),new THREE.MeshBasicMaterial({color:t.shadow.color,opacity:t.shadow.opacity}));a.rotation.x-=E(90);const i=new THREE.Object3D;return i.rotation.x-=E(90),i.position.y=-3.43,i.selected={y:-1,xz:-1},i.ea=3.43,i.eb=n,o.add(i),[o,a,i]}(s);function D(e){return e.match(/(.{4})/g).map((e=>[e.slice(0,1),e.slice(1,4)])).map((e=>parseInt(e[1],16)*("0"==e[0]?-1:1)))}x.add(p,m,...f,...d);let h=tokenData.tokenId%1e3;const A=D(F.substr(10).slice(0,1200))[h],B=D(F.substr(10).slice(1200,2400))[h],w=(M=F.substr(10).slice(2400,3300),M.match(/(.{3})/g).map((e=>(parseInt(e,16)+180)%360)))[h],g=function(e){return[...e].map((e=>parseInt(e,16)))}(F.substr(10).substr(3300))[h];var M;return requestAnimationFrame((()=>{P(A,B,w,g,10)})),[p,m,C,d,f]}();function P(t,o,n,a,i){z.position.set(t,e,o),z.ballDirection=n,z.ballSpeed=a,z.updateMatrixWorld(!0,!0),z.updateWorldMatrix(!0,!0),z.updateMatrix();const r={1200:[80,40,22,15,11,8,6,5,5,5]};let c=[],l=[],s=[];for(let[e,t,o]of function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30,o=[],n=new THREE.Vector3;for(let a=e;a<=90-t;a+=10)for(let e=0;e<360;e+=20)n.set(Math.sin(E(a))*Math.cos(E(e)),Math.cos(E(a)),Math.sin(E(a))*Math.sin(E(e))).normalize(),o.push([n.clone(),a,e]);return o}())for(let n of Object.keys(r))for(let a of r[n].keys())[5,6,7,8,9,10].includes(a+1)?c.push([e,n,a+1,t,o]):[1,2].includes(a+1)?s.push([e,n,a+1,t,o]):l.push([e,n,a+1,t,o]);p(c),p(l),p(s);let F=[...s,...c];p(F);let d,_,b,C,g,T=[...l,...F],H=!1;for(;T.length>0;){[d,_,b,C,g]=T.pop();for(let e=1;e<=i;e++)if(m(w,z,S,d,_,b,f(0,360),f(0,r[_][b-1]),r[_][b-1]),H=D(w),H)if(A(S,k,C,g,z,n,a),B(w,k,z)){if(y.render(x,w),h(w,j))break;H=!1}else H=!1;if(H)break}if(!H){C=0,g=0;for(let e=0;e<1e3;e++){m(w,z,S,z.up,f(1500,1800),1,f(0,360),f(0,90),90);let e=u([1,-1]),t=f(70,100);if(w.position.x+=t*e,w.rotation.z=E(10*f(1,34)),H=D(w),H)break}A(S,k,C,g,z,n,a),y.render(x,w),h(w,j)}z.angleY=C,z.angleXZ=g,M=w.position.clone(),R=w.quaternion.clone(),v=new THREE.Vector3(w.zoom,w.fov,0),y.render(x,w)}})();
0":[-.59,2.55,.96,1.24],"30_40":[-.4,2.15,.964,1.255],"30_60":[-.19,2,.958,1.3],"30_80":[.4,1.83,.92,1.38],"30_200":[.47,3.2,.92,1.21],"30_220":[.44,4,.92,1.27],"30_240":[.26,5.08,.91,1.39],"30_260":[-.51,5.4,.905,1.45],"40_0":[-1.13,2.84,1,1.25],"40_20":[-1.04,2.38,1.02,1.26],"40_40":[-.75,1.93,1,1.27],"40_60":[-.29,1.65,.963,1.385],"40_80":[.42,1.44,.91,1.53],"40_200":[1.25,3.6,1.01,1.255],"40_220":[1.24,4.7,1.005,1.298],"40_240":[.62,5.6,.955,1.42],"40_260":[-.301,6.67,.9,1.62],"50_0":[-1.707,2.77,1.1,1.25],"50_20":[-1.34,1.99,1.08,1.23],"50_40":[-.88,1.5,1.04,1.31],"50_60":[-.467,1.3,.98,1.47],"50_80":[.38,.99,.88,1.7],"50_200":[1.7,3.5,1.06,1.25],"50_220":[1.76,5.1,1.045,1.375],"50_240":[1,6.6,.93,1.55],"50_260":[-.27,8.3,.84,1.85],"60_0":[-2.42,2.66,1.25,1.25],"60_20":[-2,1.85,1.22,1.25],"60_40":[-1.209,1.2,1.185,1.34],"60_60":[-.6,.89,1.04,1.55],"60_80":[.17,.8,.885,2.14],"60_200":[2.56,3.73,1.19,1.235],"60_220":[2.74,5.4,1.18,1.34],"60_240":[1.77,7.4,1.01,1.58],"60_260":[-.1,10,.85,2.13],"0_0":[0,3.35,1.005,1.27]}],s={180:0,160:20,140:40,120:60,100:80,340:200,320:220,300:240,280:260},F="1a1a856798019400181134110f11710147100511850179114b104b1171111d01610152117d0197101010e2001f1175016610fe0189100100040177000d1007112e115510ad017d011e013f018c1048111301420153014b106a012c01961193119200f90119100b00ae017a0184018e0188118f11860092013801691186018300be001e0176001f11501189119900e7100801911110001a00ff1025013000670131011311760121018c00c4015e018b01261137010d017c001b013e1099104a1053112e018f115b114110ee019b1003017700f4114a105d10d8110200ff01790029016b0150017a018f119b11960158116e0017019a115410470077017b116e102f0182114c0180016111161158101300ea10eb00900165101b1141119b0180000c117c10ac1192014c113d119310140148016e00e001860127100c118c0184017911491098111f01200166106b101d11520108001b01690142010e01910022018a118c014c10011111019500e2111a00081166106b016b110310381005101c113f1118015e019400ce1184116f005500f80188115e017500430171104b01680022019d115601890003003110b41180017d0128016e1185017c117711630184011510a711060144118d01760179102401521133015f001f1004017f117b11951028114c0162019011521152017810eb001c10b81181019b1166112a1192118a1188116800f300be014b114801681119000511120102116300fb112000b711111199118c000c11410163012c00fd00e3111a116e1143013b1006118411561136115e015711371189017e010300250156012f01261168019c01850034118401bd0222138d10db01fc03040220132c1305130d120601fa02f6044a02a5023712a512011356122813be03bd138313d902440485133e0212020703e5136e13ed126402fd144b137d125011e203a7005512c7125412ed039b11fe129e13871457126b016b120611c0127203ea12eb1288012a02750423130311a511b0125701d31243141712b301e211501265032f12b91215138c1239042b134f01cc139711fc1227122e019113231210031801e7012001ad125711d901e611fd024f12af038e13b71387139402240219143b01c21400144b12701182129901e111d9029302c2036b141803211336126101d11225044312841216139101a0127411bd03d903141314136b11af137501d200fe1233139313a7124e130f01bc120f11d7038412e7129e02e912d9121e1271046b022c12e103a4129c01f611b20313042913a9027013b4127603bd1209022b03ab110d11db0423121702cc14010258040f1218131102581313048d02c1141d125513f2126413ef036811ed121c021002f01361132304460136036d14180256133a01b5044f020702a10116120211e301f2042612dd01e312d81242112a039303ec029301d801ef03a4148b147814a002f9129110ad02de01d8018502580223040012a913f514590267121713f302b611cc134812141280139402ba12001223025702f601d5020f03c904731331030a1280143800e311b0122e13fd129411a811dd12c804070269140d116f01a9029613ee026812de03f3132e02fc03c103581487136e144c014d11d911e7140211b303ee142e140002dc1249013401ff115e12b803190230141b1227122e014a0480560fb0e706805c0560f511011110706706005305006b12510a10b11110e04e11311405c04d11a05605c05710710711c04711a1141080fa04e01311d10712304f0fc10711f10d10b04211f12a11f04210f10a0400500580fc11f12911204911011110c06b12b10b04910911111b10805b1160481140fe13111d04e11111d0520640550491100fe06510806110904710b10410f04905e11b03e10110510a0f212e04a11005604d05c10c06f0fd11e06a10f05710610b11004810e10804806e1101201020fc05e0380fb10e11710a10806c11f1120651081070440fd0fd10a05704a11a05511c05e0fe05d04f10d05711212504e0f505e05c10811105811e04d10c05504c0fe1090570fc0480530f31121070fc11706510910a05e06a0f211105005406d11104411d04906304c04f03210811d05605710304a10f11110406305604804a06c0560ff11011804f0fa0f905206905904d05f05d10510f10805711d10d06410910411c11c10106611c0f805606306804906a06610a05d10a10205c12912510d11a10010a11604b06e10d10503c06110c07211006d10e05104f0541030f910805310b0fb11110006911d11006811e04a05511811d04807411411d11107a121121211122111212121111211221102111211012112111202120110111202221120211212101120211211012212211111221011000221111111221120102101111201112122211111221211122111110112112111121212111021110222101111111212112221121201112211111101202211112211212211212122111111001110211110111111101111102111111120201111220";function E(e){return e/180*Math.PI}let d=new class{constructor(){this.useA=!1;let e=function(e){let t=parseInt(e.substr(0,8),16),o=parseInt(e.substr(8,8),16),n=parseInt(e.substr(16,8),16),a=parseInt(e.substr(24,8),16);return function(){t|=0,o|=0,n|=0,a|=0;let e=(t+o|0)+a|0;return a=a+1|0,t=o^o>>>9,o=n+(n<<3)|0,n=n<<21|n>>>11,n=n+e|0,(e>>>0)/4294967296}};this.prngA=new e(tokenData.hash.substr(2,32)),this.prngB=new e(tokenData.hash.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}random(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}};function f(e,t){return Math.floor(d.random()*(Math.floor(t)-Math.ceil(e)+1)+Math.ceil(e))}function u(e){return e[f(0,e.length-1)]}function p(e){let t,o,n=e.length;for(;0!==n;)o=Math.floor(d.random()*n),n-=1,t=e[n],e[n]=e[o],e[o]=t;return e}function _(e,t){function o(e){const t=document.createElement("canvas");t.width=e,t.height=e;const o=t.getContext("2d");return o.imageSmoothingEnabled=!1,o.webkitImageSmoothingEnabled=!1,o.msImageSmoothingEnabled=!1,[t,o]}const[n,a]=o(e),[i,r]=o(t),c=Uint32Array.from({length:t*t},(()=>[4294967295,0][Math.random()>.5?0:1])),l=new ImageData(new Uint8ClampedArray(c.buffer),t,t);r.putImageData(l,0,0),r.globalCompositeOperation="hue",r.fillRect(0,0,t,t),a.drawImage(i,0,0,t,t,0,0,e,e);let s=new THREE.CanvasTexture(n);return s.magFilter=THREE.NearestFilter,s}function b(e,o,n){return new THREE.ShaderMaterial({depthTest:!1,uniforms:{uColorA:{value:new THREE.Color(e[0])},uColorB:{value:new THREE.Color(e[1])},uColorS:{value:new THREE.Color(e[2])},uSize:{value:t*n},uDir:{value:u([0,1])},uMin:{value:0},uMax:{value:1},noise:{type:"t",value:o}},vertexShader:"void main() {gl_Position=projectionMatrix*modelViewMatrix*vec4(position, 1.0);}",fragmentShader:"\nuniform vec3 uColorA,uColorB,uColorS;uniform float uSize,uMin,uMax;uniform int uDir;uniform sampler2D noise;void main() {vec2 uv=gl_FragCoord.xy/uSize;float m=1.0/(uMax-uMin);float y=(m*uv[uDir])+(-1.0*uMin*m);vec4 gbw=mix(vec4(0,0,0,1.0),vec4(vec3(152.0/255.0),0.6),y);float npixel=texture(noise,uv).r;gbw=(gbw*npixel)+(vec4(0,0,0,0)*(1.0-npixel));vec4 om=vec4(mix(uColorA,uColorB,y).rgb,gbw.a);vec4 color=vec4(mix(uColorS,om.rgb,om.a),1.0);gl_FragColor=color;}"})}function m(e,t,o,n,a,i,r,c,l){e.position.copy(t.position).add(n.clone().multiplyScalar(a)),e.lookAt(t.position),e.updateProjectionMatrix(),e.updateMatrixWorld();let s=t.position.clone().sub(e.position).normalize(),F=-e.position.y/s.y,d=new THREE.Vector3(e.position.x+F*s.x,0,e.position.z+F*s.z),f=t.position.clone().sub(e.position).normalize(),u=f.clone().cross(e.up).normalize().cross(f).normalize().applyAxisAngle(f,E(r)).multiplyScalar(c);e.position.add(u),e.zoom=i,e.updateProjectionMatrix(),e.updateMatrixWorld();let p=t.position.clone().sub(e.position).normalize();F=-e.position.y/p.y;let _=new THREE.Vector3(e.position.x+F*p.x,-0,e.position.z+F*p.z);o.parallaxDir=_.sub(d).normalize().multiplyScalar(Math.abs(c)/l/5/(2.5*i-1.5))}let C=[];for(let[e,t,n,a]of o)C.push([Math.min(n-e/2,n+e/2),Math.max(n-e/2,n+e/2),Math.min(a-t/2,a+t/2),Math.max(a-t/2,a+t/2)]);function D(e){let t,o,n,a,i,r,c,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.4,F=new THREE.Vector3,E=u([1,-1]),d=u([1,-1]);for(let f=-10+l;f<=10-l;f+=s)for(let u=-10+l;u<=10-l;u+=s)for([a,r,i,c]of(F.set(f*E/10,u*d/10,0).unproject(e).sub(e.position).normalize(),t=-e.position.y/F.y,o=e.position.x+t*F.x,n=e.position.z+t*F.z,C))if(o>=a&&o<=r&&n>=i&&n<=c)return!0;return!1}function h(e,o){const n=new THREE.Raycaster;let a={};for(let i=0;i<t;i+=5)for(let r=0;r<t;r+=5){n.setFromCamera({x:i/t*2-1,y:r/t*2-1},e);const c=n.intersectObjects(o);if(0==c.length)continue;const l=c[0];a[l.object.id]||(a[l.object.id]=[]),a[l.object.id].push([{x:i,y:r},l])}let i=!1;for(let[e,n]of Object.entries(a)){const a=Math.min(...n.map((e=>e[0].x))),r=Math.min(...n.map((e=>e[0].y))),c=Math.max(...n.map((e=>e[0].x))),l=Math.max(...n.map((e=>e[0].y))),s=o.filter((t=>t.id==e))[0],F=c-a,E=l-r;if((F<22||E<22||F*E<2e4)&&(i=!0),a==c||r==l)continue;let d,f;0==s.material.uniforms.uDir.value?(d=a/t,f=c/t):(d=r/t,f=l/t),s.material.uniforms.uMin.value=d,s.material.uniforms.uMax.value=f}return!i}function A(e,t,o,n,a,i,r){t.updateMatrixWorld(!0,!0),t.updateWorldMatrix(!0,!0),t.updateMatrix();let c=new THREE.Vector3(-10,0,0).applyAxisAngle(a.up,-1*E(i)).normalize();const F=new THREE.Vector3(0,0,-10),d=c.clone().cross(F).normalize().negate().round().y;let f=c.angleTo(F)/Math.PI*180;f=20*Math.round(f/20)*d,a.rotation.y=0,a.rotation.y+=E(f);let u=(360+(n+f))%360;t.selected.y=o,t.selected.xz=u;let p=1;Object.keys(s).map((e=>parseInt(e))).includes(u)&&(p=-1,u=s[u]),0==o&&(u=0);let _=l[r]["".concat(o,"_").concat(u)];t.position.x=_[0]*p,t.position.z=_[1],t.scale.set(_[2],_[3],1);let b=new THREE.Vector3;t.getWorldPosition(b),e.position.copy(b).add(e.parallaxDir),e.scale.set(_[2],_[3],1),e.rotation.z=E(f)}function B(e,t,o){const n=new THREE.Object3D;n.position.copy(t.position),n.position.x+=t.ea*t.scale.x+2,n.position.z-=t.eb*t.scale.y,o.add(n);const a=new THREE.Object3D;a.position.copy(t.position),a.position.x-=t.ea*t.scale.x+2,a.position.z-=t.eb*t.scale.y,o.add(a);const i=new THREE.Object3D;i.position.copy(t.position),i.position.x-=t.ea*t.scale.x+2,i.position.z-=t.eb*t.scale.y*2+2,o.add(i);const r=new THREE.Object3D;r.position.copy(t.position),r.position.x+=t.ea*t.scale.x+2,r.position.z-=t.eb*t.scale.y*2+2,o.add(r);let c=!0,l=new THREE.Vector3;for(let t of[n,
(()=>{"use strict";const e=3.43,t=1500,o=[[1097,8,0,1184.5],[1097,8,0,-1184.5],[5,2361,-546,0],[5,2361,546,0],[5,2361,-409,0],[5,2361,409,0],[5,1270,0,0],[813,5,0,637.5],[813,5,0,-637.5],[5,5,0,1178],[5,5,0,-1178]],n=[[813,540.5,0,910.25],[813,540.5,0,-910.25],[132,1180.5,-477.5,590.25],[132,1180.5,477.5,590.25],[132,1180.5,-477.5,-590.25],[132,1180.5,477.5,-590.25],[404,635,-204.5,317.5],[404,635,204.5,317.5],[404,635,-204.5,-317.5],[404,635,204.5,-317.5]],a=[-2742.5,0,-5942.5,2742.5,0,-5942.5,-548.5,0,-1188.5,548.5,0,-1188.5,-2742.5,0,5942.5,2742.5,0,5942.5,-548.5,0,1188.5,548.5,0,1188.5],i=[0,2,1,1,2,3,1,3,5,3,7,5,4,7,6,4,5,7,0,6,2,0,4,6],r="E0FE00FF6E00FF4200E52000FF6A00FF6400FF1E00000407E03C00FF3E0000000A19000930000000140400080A000C0FE51A10FF460F009611000E0F0004140F00141314160000160000111718193CA300080A141B1C1C0B141E000E1F110400218400061823170023001C23002428E6E500FF702922242BFF602E00083A0047FF49444001000D243A44FF40442A2A47151647003849002A49514E4D464C4F004251424260210C000020604A4A66C1006600126F6D74770000E5CEA684FF5001D3AA8C0A508C00008CD6B292288894E0BC95FF73001E709E979CA00400A0FF78A2E0BCA498A0A50E96A5DDBCA6FFC4A6F754A63225E5CCBEAEA3A8AFFFD2B0DDC8B19EC6E50096B4E22100002CB7FF66BAB7BCBCEDD4BDFFCAC0199800CCC8C8EDDAC80059FF1B2ACC0000CEFFE2CF78C0D1FF22D5F8EAD7DBCCD8133ED8EBEADACED8DBECE4DCF1E6DCFFC8DC1226DDDCDEE0C61C000000E0005A02F2E2E22E5EE5F4EAE6FFB6E7F4C2E6FFF4E9F4ECEAFFF8EBFFF0EB91B6ED7F9CE5F2F0ED0000EAADCEEA479E00FDFEFFCEECF40C7F001E1EFA688EFC256EFFFF4500FF9100FF5500FFA700FF5F00538AFFEEF2FF0001070042FF006307004F041B810000030C0D0D0F0E0F0F000711000511F665FA030D16131316002319EF2F1B191B1C00051E252526FF572C270130131D30FF4531000B330021332929350067302F67FF443F3C383B3F0D293F00280056A8002248FF001B42FF7D432589004A4F540B07540063578ACB0027275B00295B486BFFE2E0DEFF855FFF3160003760001166E00D006CBDE500156BFBFCFF696D702F5F751E1EE60F297A00AFFF000F01797F82C79F83005D840550FF003189005B8924B1FF8D8D8E00738E9393935A7D93E0B994112D938C9599E5C19AED299991C3E5EDE4E41E639EE83F9FEAC3A0678DA0658DA0F73400EAC9A4FF7400BB54FF005BAAFFC7ABCEBBAE81ABB5E5CBB5FCD7007AADBCAFB7BFEFBFBFBCBFC1FF78007CB800D1F800FFE3C8F2DFC9F7E5CB0079FF0045CEFFE3D1003A00D8E5D3FFDBD4DCE5D6F9E9D71B1BDAF2EAE7EDFFDCE8E3DF82BFE0FF3C00007C00008FE3AACDE2E1E3E5FFC7E5F2E9E7D3E5E8D8CDE81C67EAFAFDFFFDFDFFF4EFEDEFEDEDF4F1EF007C03F9D7F4FFFBF5FFF5F55CC5F7FDFFFE0083F9FFFBFAFFFFFFFFFDFDFFF3FEFDABFF".match(/(.{6})/g).map((e=>parseInt(e,16))),c=[[0,262,155,1,180,52,196,[202,60,72,22,25,172,22,25,172,76,215,238,202,60,72,180,52,196,76,215,238,22,25,172,180,52,196,202,60,72],1],[0,28,20,1,211,209,95,[211,209,95,236,236,122,236,236,122,83,83,256,211,209,95,236,236,270,83,83,256,236,236,122,236,236,270,211,209,95],1],[0,265,33,1,204,204,36,[87,77,101,199,49,182,199,49,182,53,53,210,87,77,101,204,204,36,204,204,36,199,49,182,53,53,210,87,77,101],1],[0,159,144,1,203,62,85,[67,64,92,222,222,252,222,222,252,78,75,244,67,64,92,203,62,85,203,62,85,222,222,252,78,75,244,67,64,92],2],[0,121,144,1,203,62,85,[67,64,92,222,222,252,222,222,252,78,75,244,67,64,92,203,62,85,203,62,85,222,222,252,78,75,244,67,64,92],1],[0,275,152,1,158,158,1,[137,2,138,4,4,140,4,4,140,3,16,139,137,2,138,158,158,1,158,158,1,4,4,140,3,16,139,137,2,138],2],[0,28,7,1,223,212,112,[232,235,107,231,82,272,231,82,272,57,54,91,232,235,107,223,224,112,223,224,112,231,82,272,57,54,91,232,235,107],2],[0,28,15,1,68,104,264,[71,220,118,197,45,108,68,104,264,197,45,108,71,220,118,68,104,264,197,45,108,68,104,264,104,68,264,71,220,118],1],[0,123,41,1,5,17,6,[8,9,113,141,239,258,5,17,6,141,239,258,8,9,113,5,17,6,141,239,258,5,17,6,5,17,6,8,9,113],2],[0,109,194,1,79,74,93,[84,284,100,119,230,250,79,74,93,119,230,250,84,284,100,79,74,93,119,230,250,79,74,93,79,74,93,84,284,100],2],[0,282,157,1,110,266,276,[120,242,124,263,247,283,110,266,276,263,247,283,120,242,124,110,266,276,263,247,283,110,266,276,110,266,276,242,120,124],1],[0,281,10,1,98,253,73,[208,260,277,136,142,42,98,253,73,136,142,42,208,260,277,98,253,73,136,142,42,98,253,73,98,253,73,208,260,277],2],[0,143,34,1,117,267,125,[145,205,126,111,105,135,117,267,125,111,105,135,145,205,126,117,267,125,111,105,135,117,267,125,117,267,125,145,205,126],2],[0,268,166,1,279,279,127,[200,200,271,246,246,271,279,279,271,246,246,271,200,200,271,279,279,271,246,246,271,279,279,271,279,279,271,200,200,271],1],[0,269,11,1,114,128,55,[99,61,12,198,134,163,114,128,55,198,134,163,99,61,12,114,128,55,198,134,163,114,128,55,114,128,55,99,61,12],1],[0,249,13,1,94,18,146,[115,115,174,133,273,248,94,18,146,133,273,248,115,115,174,94,18,146,133,273,248,94,18,146,94,18,146,115,115,174],2],[0,97,31,1,47,47,150,[181,181,168,184,184,156,47,47,150,184,184,156,181,181,168,47,47,150,184,184,156,47,47,150,47,47,150,181,181,168],1],[0,216,30,1,171,171,39,[151,151,161,43,51,164,171,171,39,43,51,164,151,151,161,171,171,39,43,51,164,171,171,39,171,171,39,151,151,161],2],[0,258,35,1,233,233,103,[226,226,243,69,213,96,233,233,103,69,213,96,226,226,243,233,233,103,69,213,96,233,233,103,233,233,103,226,226,243],2],[0,255,21,1,32,32,175,[179,179,240,26,26,183,32,32,175,26,26,183,179,179,240,32,32,175,26,26,183,32,32,175,32,32,175,179,179,240],2],[0,280,19,1,206,89,229,[162,188,225,185,173,167,206,89,229,185,173,167,162,188,225,206,89,229,185,173,167,206,89,229,206,89,229,162,188,225],3],[0,251,153,1,147,147,259,[56,56,207,192,192,40,147,147,259,192,192,40,56,56,207,147,147,259,192,192,40,147,147,259,147,147,259,56,56,207],3],[0,131,14,1,217,58,237,[80,90,116,221,217,274,217,58,237,221,217,274,80,90,116,217,58,237,221,217,274,217,58,237,217,58,237,80,90,116],1],[0,245,23,1,218,193,219,[86,261,264,129,257,254,218,193,219,129,257,254,86,261,264,218,193,219,129,257,254,218,193,219,218,193,219,86,261,264],1],[0,195,24,1,70,154,102,[70,154,102,227,63,102,227,63,102,70,154,102,70,154,102,227,63,102,227,63,102,70,154,102,70,154,102,227,63,102],2],[0,106,191,1,241,241,234,[241,241,37,241,241,234,241,241,234,241,241,37,241,241,37,241,241,234,241,241,234,241,241,37,241,241,37,241,241,234],2],[0,132,160,1,176,48,186,[170,228,81,176,48,186,176,48,186,170,228,81,170,228,81,176,48,186,176,48,186,170,228,81,170,228,81,176,48,186],1],[0,187,177,1,189,46,178,[189,46,178,88,165,38,88,165,38,189,46,178,189,46,178,88,165,38,88,165,38,189,46,178,189,46,178,88,165,38],2],[0,97,149,1,190,65,29,[190,65,29,44,27,50,44,27,50,190,65,29,190,65,29,44,27,50,44,27,50,190,65,29,190,65,29,44,27,50],1],[0,278,201,1,148,169,130,[148,169,130,66,59,214,66,59,214,148,169,130,148,169,130,66,59,214,66,59,214,148,169,130,148,169,130,66,59,214],3]],l=[{"10_0":[.13,3,.939,1.07],"10_20":[.04,3.02,.939,1.05],"10_40":[.18,2.83,.936,1.05],"10_60":[.32,2.7,.939,1.049],"10_80":[.44,2.7,.938,1.023],"10_200":[-.05,3.34,.938,1.06],"10_220":[-.16,3.58,.939,1.075],"10_240":[-.34,3.7,.939,1.085],"10_260":[-.55,3.8,.939,1.1],"20_0":[-.24,3.08,.89,1.1],"20_20":[-.24,2.75,.93,1.06],"20_40":[-.12,2.5,.945,1.06],"20_60":[.07,2.27,.96,1.063],"20_80":[.41,2.2,.95,1.124],"20_200":[.3,3.47,.93,1.1],"20_220":[.25,3.9,.945,1.1],"20_240":[-.07,4.23,.945,1.163],"20_260":[-.43,4.55,.94,1.209],"30_0":[-.712,3,.925,1.1],"30_20":[-.67,2.5,.96,1.043],"30_40":[-.53,2.24,.969,1.055],"30_60":[0,1.76,.958,1.1],"30_80":[.39,1.8,.92,1.2],"30_200":[.65,3.4,.935,1.09],"30_220":[.66,4.2,.94,1.11],"30_240":[.4,5.1,.947,1.233],"30_260":[-.35,5.5,.92,1.3],"40_0":[-1.29,2.9,1,1.09],"40_20":[-1.1,2.34,1.02,1.08],"40_40":[-.59,1.8,1,1.09],"40_60":[-.36,1.62,.968,1.22],"40_80":[.32,1.39,.91,1.34],"40_200":[1.2,3.4,1,1.08],"40_220":[1.24,4.5,1,1.149],"40_240":[.77,5.8,.955,1.269],"40_260":[-.315,6.53,.91,1.43],"50_0":[-1.76,2.6,1.1,1.05],"50_20":[-1.23,1.9,1.08,1.05],"50_40":[-1.1,1.6,1.04,1.13],"50_60":[-.55,1.28,.99,1.27],"50_80":[.34,.99,.885,1.5],"50_200":[1.79,3.39,1.05,1.05],"50_220":[1.83,4.9,1.02,1.15],"50_240":[1.08,6.3,.93,1.33],"50_260":[-.16,8.2,.85,1.63],"60_0":[-2.64,2.68,1.25,1.055],"60_20":[-1.9,1.8,1.22,1.1],"60_40":[-1.27,1.28,1.185,1.17],"60_60":[-.16,.8,1.04,1.32],"60_80":[.2,.8,.885,1.95],"60_200":[2.82,3.8,1.18,1.05],"60_220":[2.56,4.47,1.185,1.09],"60_240":[1.52,6.46,.969,1.359],"60_260":[-.1,10,.84,1.92],"0_0":[0,3.35,.96,1.09]},{"10_0":[.11,3.17,.939,1.15],"10_20":[.13,3,.945,1.14],"10_40":[.18,2.85,.95,1.135],"10_60":[.33,2.7,.953,1.14],"10_80":[.477,2.7,.944,1.13],"10_200":[-.14,3.34,.938,1.155],"10_220":[-.14,3.6,.944,1.17],"10_240":[-.33,3.73,.95,1.18],"10_260":[-.46,3.87,.95,1.19],"20_0":[-.176,3.04,.89,1.16],"20_20":[-.2,2.7,.93,1.145],"20_40":[-.07,2.5,.945,1.14],"20_60":[.03,2.38,.96,1.163],"20_80":[.4,2.23,.95,1.184],"20_200":[.07,3.3,.9,1.153],"20_220":[.23,3.9,.93,1.2],"20_240":[0,4.2,.94,1.223],"20_260":[-.6,4.5,.91,1.269],"30_0":[-.67,3,.925,1.16],"30_20":[-.68,2.6,.96,1.134],"30_40":[-.51,2.23,.969,1.165],"30_60":[-.17,2,.958,1.2],"30_80":[.39,1.8,.92,1.28],"30_200":[.67,3.5,.92,1.16],"30_220":[.51,4.1,.92,1.19],"30_240":[.24,5,.91,1.29],"30_260":[-.68,4.9,.9,1.35],"40_0":[-1.22,2.94,1,1.15],"40_20":[-1.15,2.4,1.02,1.17],"40_40":[-.74,1.85,1,1.18],"40_60":[-.36,1.65,.968,1.3],"40_80":[.34,1.43,.91,1.43],"40_200":[1.44,3.7,1.03,1.16],"40_220":[1.28,4.66,1,1.23],"40_240":[.66,5.6,.955,1.36],"40_260":[-.21,6.7,.9,1.5],"50_0":[-1.793,2.77,1.1,1.15],"50_20":[-1.35,1.96,1.08,1.14],"50_40":[-.9,1.6,1.04,1.225],"50_60":[-.54,1.3,.99,1.37],"50_80":[.36,.99,.885,1.6],"50_200":[1.9,3.7,1.05,1.16],"50_220":[1.68,4.7,1.02,1.21],"50_240":[1.1,6.66,.94,1.43],"50_260":[-.24,8.2,.84,1.71],"60_0":[-2.5,2.7,1.25,1.155],"60_20":[-1.89,1.8,1.22,1.17],"60_40":[-1.26,1.25,1.185,1.24],"60_60":[-.59,.9,1.04,1.39],"60_80":[.19,.73,.885,2.03],"60_200":[2.63,3.56,1.18,1.11],"60_220":[2.85,5.4,1.185,1.22],"60_240":[1.75,7.2,.996,1.47],"60_260":[-.03,10.2,.819,2.04],"0_0":[0,3.36,.98,1.18]},{"10_0":[.26,3.05,.939,1.25],"10_20":[.27,2.9,.945,1.24],"10_40":[.19,2.8,.95,1.23],"10_60":[.38,2.78,.953,1.23],"10_80":[.58,2.68,.944,1.23],"10_200":[-.16,3.34,.94,1.24],"10_220":[-.164,3.62,.944,1.26],"10_240":[-.45,3.7,.94,1.27],"10_260":[-.58,3.83,.95,1.295],"20_0":[-.15,3,.89,1.25],"20_20":[-.19,2.79,.93,1.225],"20_40":[-.08,2.52,.945,1.23],"20_60":[.03,2.38,.95,1.263],"20_80":[.46,2.25,.95,1.284],"20_200":[.15,3.4,.91,1.233],"20_220":[.15,3.92,.935,1.3],"20_240":[-.17,4.2,.93,1.31],"20_260":[-.55,4.5,.93,1.369],"30_0":[-.62,2.98,.925,1.26],"30_2
A collaboration between the ATP Tour, Art Blocks Engine, and Martin Grasser, LOVE is a collection of unique digital artworks that uses in-match sports data to celebrate impactful moments from the 2022 Nitto ATP Finals in Turin, Italy.
o=[];for(let A of f)for(let t=0;t<A.weight;t++)o.push(A);A.palette=e(o);for(let o of A.palette.layers)0==o.type&&(o.rng_angle=e(o.angles),o.rng_scale=t(10*o.scale[0],10*o.scale[1])/10);let n=new Set(A.palette.grids);A.grid_index=e(Array.from(n));let a=r[A.grid_index];A.grid={d:a[0],r:a[2],s:a[3],l:a[4],p:a[5],q:e(a[1]),size:p/a[0],c:1,e:0},requestAnimationFrame((()=>{for(const t of A.palette.layers)x.globalCompositeOperation="destination-out",x.fillStyle="#ffffff",x.fillRect(0,0,w.width,w.height),x.globalCompositeOperation="source-over",Z[t.type](A,t),R.save(),"blend"in t&&"normal"!=t.blend&&(R.globalCompositeOperation=t.blend),"alpha"in t&&t.alpha>=0&&t.alpha<=1&&(R.globalAlpha=t.alpha),R.drawImage(w,0,0,w.width,w.height,0,0,p,p),R.restore()}))}()})),M.src=b.toDataURL()}),!1),j.src="data:image/png;base64,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";const Z=[function(A,e){const o=e.rng_angle,n=e.rng_scale,a=p*n-p,l=a*t(100*e.ox[0],100*e.ox[1])/100,r=a*t(100*e.oy[0],100*e.oy[1])/100;x.save(),x.translate(1500,1500),x.rotate(o*Math.PI/180),x.translate(-1500,-1500),x.translate(-l,-r),x.scale(n,n),x.drawImage(M,0,0,M.width,M.height,0,0,p,p),x.restore()},function(A,t){x.fillStyle=t.color,x.fillRect(0,0,w.width,w.height)},function(A,e){let[o,n]=function(A){const t=(A.d-A.q)/2,e=A.d-(A.d-A.q)/2,o=A.size,n=[[E(A),[e,e],270,1],[E(A),[t,e],0,1],[E(A),[t,t],90,1],[E(A),[e,t],180,1]],a=[[Q(0,n,A),[e,e],0,0],[Q(1,n,A),[t,e],90,0],[Q(2,n,A),[t,t],180,0],[Q(3,n,A),[e,t],270,0]],l=[n[1],a[0],n[0],a[3],n[3],a[2],n[2],a[1]];let r,i,s,g,h,V,c=[],d={x:-1,y:-1},f={x:-1,y:-1};for(let[A,t,e,n]of l)if(r=t[0]*o,i=t[1]*o,1==n){let t=0;for(let n of A){s=t*o+r,g=i,h=n.span*o,V=n.rise*o,t+=n.span;let[A,a,l,C]=y(r,i,s,g,h,V,e);0==e||180==e?(-1==f.x&&(f={x:A,y:C}),A!=d.x&&C!=d.y&&-1!=d.x&&c.push([d.x,d.y,d.x,C]),c.push([A,C,l,C])):90!=e&&270!=e||(l!=d.x&&a!=d.y&&c.push([d.x,d.y,l,d.y]),c.push([l,a,l,C])),d={x:l,y:C}}}else{let t=A;if(0==t.w||0==t.h)continue;s=t.x*o+r,g=t.y*o+i,h=t.w*o,V=t.h*o;let[n,a,l,f]=y(r,i,s,g,h,V,e);0!=e&&180!=e||(n!=d.x&&f!=d.y&&c.push([d.x,d.y,n,d.y]),c.push([n,f,l,f]),c.push([l,f,l,a]),d={x:l,y:a}),90!=e&&270!=e||(l!=d.x&&a!=d.y&&c.push([d.x,d.y,d.x,a]),c.push([l,a,l,f]),c.push([l,f,n,f]),d={x:n,y:f})}return[c,f]}(A.grid);x.fillStyle=e.color,"out"==e.fill&&(x.fillRect(0,0,w.width,w.height),x.globalCompositeOperation="destination-out");const a=A.grid.l,l=t(-a,a)*A.grid.size,r=t(-a,a)*A.grid.size;x.save(),x.translate(l,r),x.translate(-0,-0),x.scale(1,1),x.beginPath();let i={x:0,y:0};for(let[A,t,e,n]of o)x.lineTo(A,t),x.lineTo(e,n),i={x:e,y:n};n.x!=i.x&&n.y!=i.y&&x.lineTo(i.x,n.y),x.lineTo(n.x,n.y),x.fill(),x.restore()},function(A,t){const e=new Uint8ClampedArray(M.width*M.height*4),o=R.getImageData(0,0,M.width,M.height).data,n=c[t.name];let a,l,r;for(a=0;a<M.width;a++)for(l=0;l<M.height;l++)r=4*(l*M.width+a),e[r+0]=n.r[o[r+0]],e[r+1]=n.g[o[r+1]],e[r+2]=n.b[o[r+2]],e[r+3]=255;const i=x.createImageData(M.width,M.height);i.data.set(e),x.putImageData(i,0,0)}]})();
(()=>{"use strict";const A=new class{constructor(A){this.useA=!1;let t=function(A){let t=parseInt(A.substr(0,8),16),e=parseInt(A.substr(8,8),16),o=parseInt(A.substr(16,8),16),n=parseInt(A.substr(24,8),16);return function(){t|=0,e|=0,o|=0,n|=0;let A=(t+e|0)+n|0;return n=n+1|0,t=e^e>>>9,e=o+(o<<3)|0,o=o<<21|o>>>11,o=o+A|0,(A>>>0)/4294967296}};this.prngA=new t(A.hash.substr(2,32)),this.prngB=new t(A.hash.substr(34,32));for(let A=0;A<1e6;A+=2)this.prngA(),this.prngB();this.hash=A.hash.substr(2,64)}random(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}}(tokenData);function t(t,e){return Math.floor(A.random()*(Math.floor(e)-Math.ceil(t)+1)+Math.ceil(t))}function e(A){return A[t(0,A.length-1)]}var o={},n=String.fromCharCode;function a(A){return function(A,t,e){var o,a,l,r,i,s,g,h=[],V=4,c=4,d=3,f="",C=[],B={val:e(0),position:32,index:1};for(o=0;o<3;o+=1)h[o]=o;function p(A){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;for(l=0,i=Math.pow(2,A),s=1;s!=i;)r=B.val&B.position,B.position>>=1,0==B.position&&(B.position=32,B.val=e(B.index++)),l|=(r>0?1:0)*s,s<<=1;1==t?g=n(l):2==t&&(h[c++]=n(l),g=c-1,V--)}switch(p(2,0),l){case 0:p(8);break;case 1:p(16);break;case 2:return""}for(h[3]=g,a=g,C.push(g);;){if(B.index>A)return"";switch(p(d),g=l){case 0:p(8,2);break;case 1:p(16,2);break;case 2:return C.join("")}if(0==V&&(V=Math.pow(2,d),d++),h[g])f=h[g];else{if(g!==c)return null;f=a+a.charAt(0)}C.push(f),h[c++]=a+f.charAt(0),a=f,0==--V&&(V=Math.pow(2,d),d++)}}(A.length,0,(function(t){return function(A,t){if(!o[A]){o[A]={};for(var e=0;e<A.length;e++)o[A][A.charAt(e)]=e}return o[A][t]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",A.charAt(t))}))}const l=a("IIJQygEgVADAdARgOyIGyPghcDMd0J4IBMicSAAjAIQ4AkeArNTfMXfDi3Ix/hcWqFqzBAOoBOSUPHDmMcVNGKRQqAA44mAtgLEq1UuoaIWdCTDrEklhOtY8+qbgBY+jSgiGCJ4xutUFQX9pIJEuURlBVC8pMS4vACMJKEYtRBQEAkwiA1IkE3lXJzN4GHVGCi8cJGpKYNDxHAio2mc41PSsjERsQkQDPFQ6F1xJS2sHYy9LBS9nSuCA5SXpMUFiZg7tfERSbEoaUYQRniF7bmH4ANm4fS5BZKrqFy3ufXmfcVQfFldxaxrS6yGhxbj1EQuULgkHQ+CMWAZNC4PYGUYVOjyOh2BwSbHvNxsVDPFyg561XzzWouJoBKRhRhvdYiJl+JlQZDIkgDGh4ehMc5TfG3MReUmSckSqkvJp1FiyOVhLyCZkPeWCLi1JWGNSaHZYRBEfZoxxFNh8LjXXjXSkvEQUBLUJ6CKFxcQuV3qwy1Fa0KT08TLFiI/Z9fKDQpmSbYi424V8e5CJ22qGLQztP7wwOBbhp4ig1ohN0bBphD2hToINKYFD7bK9FH9bkHE28LEWGMOE6YG53C0O+XKrxp1BcYvnNZ+f2tYjTpVvGCIg1EY77citzFmHHcPEzOASdjxJOJSrVGbfMcz2JXycqz3MwHjxj3gHXhAaLqZHSGvZkQ4vPtRjNPg927O4BzmQxhxJG4L1vCcn2nZkXAzJUXxVBcATnD8ay5PpjiNP9BkcIDBW4eh4VKAZlU1Z5UGYGkXWvMIcBoX1WPgjj6RwvCf2bddeTuXg8CQLYJhsTsdxOPdCR4AdHltYhaPmBj3Tfb4VRoZln04pRgyrT9eL0YjjFIhwKPIci+BpMU2O+DMHwWL1fkcwIPwkXihl/FsjlNMZLAsKj5H3Ph1AHLwAEN4E8IQpH0DZ0JeFUvRcDYUrSqZZCQrK1h4zlugQTBsBXPjw0E3goVsWM+z3PFrnC5NngQOKcvHVKkzCYhEs2eDfi0gFoXfAy9SRAqisbAjvIEoQarOBx2E4d5sWeRgFgBPrvlYL1UALZDPU6lznjJaI2LUYbDLGhsSqbNcYqyahiUE9gBVYC1uGMeAJCkRIwq8ZAJUdZ0HqhQrWhcS9VVZaJUxSikvRwVkaFIYSzkC6LQqs+AoRPagov3d09JYhcOTSEaCuKxBJv4u7nEewx8BMZwqtezB3vxH6mopBqgdQRLwc45hIk+75KthxoNSZHc8kjDtJnBDH4RKHG8d8QG8TxypHTxiEsArcbqeeYgAjpvA8WOTMQNcBa4BQp0cBWn0pctJ1TxeCJ3QhpooeB8WXjhljDvKkZxnl6Lgtk14Xdx4WXWyjUXPc3jm0N43iOEswOxxKwbCoy0bfcO2Vrsv7Yggl2SXd4ICzLS8wl5+CXH9tOTApIVPvpfA6rgAJlZjl49PfUYPINPRqMhCVBNMu4t2qrv6QTbnbR03xgg2pGSO7715oLrHrNqE93Th7TmL8E+NX2jTQiAA=").split("*").slice(1),r=[[13,[1],[0,2],[2,4],1,.9],[19,[4],[0,3],[3,6],2,.8],[17,[3],[1,3],[2,5],2,.7],[21,[5],[0,4],[4,8],1,.9],[12,[1],[0,2],[1,4],1,.5],[9,[3],[0,2],[2,4],0,.7],[23,[3],[0,4],[4,8],2,.9],[25,[3,5],[2,5],[5,9],2,.9],[13,[3],[0,2],[2,4],1,.7],[15,[3],[0,3],[3,6],1,.8],[17,[5],[0,3],[3,6],1,.7],[21,[3],[0,4],[4,8],2,.9],[19,[3],[0,3],[3,6],2,.8],[19,[3,5],[0,3],[3,0],1,.6],[23,[4],[2,5],[4,8],2,.7],[11,[3],[0,2],[2,4],0,.7],[17,[3],[0,3],[3,6],2,.9],[15,[3],[0,3],[2,1],1,.6]],i=["AgICAgICAgICAgICAgICAgICAgICBAQEBAQEBAUFBQUFBwcHBwkJCQoKCgwMDQ0PDxAQEhITExQWFhYXGBgZGRobHB0dHh8gISIjIyUmJygpKistLjAxMjM1Nzg6Ozw+QEJDRUZISkxOUFJTVVdZW11fYmNlZ2lsbnBydXd5fH2AgoSHiYyOkJOVmJqcn6Gjpqiqra+xs7W3uby9v8HDxcfIyszNztDR0tTV1tfX2NnZ2trb29vb29vb2trZ2NjX1tTT0tDOzcvIxsTBv7y5trOwraqmo5+cmJSQjYmFgX16dXFtaWVhXVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgICAgMDAwQEBAUFBgYGBgcHCAgJCQoKCgsLDAwNDxASFBYYGhscHR4fICIjJCYoKSkrLC4vMTI0Njc5Ozw+QEJDRUdJS01PUVNVV1lbXV9hZGZoamxvcXN1d3l7foCDhYiLjZCSlJeZnJ6go6WnqqyusbO1t7q8vsHCxMbIyszNz9LT1NbX2Nrb3N3d3t/f4ODh4eHh4eHh4ODf3t7d3NrZ2NbU09HNy8nGxMG+u7e0sa6qp6OgnJiUkY2JhIB8d3RwbGhjX1tXV1dXV1dXV1dXV1dXV1dXV1dXV1dXVw==@DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg8PDw8PEBAQEBERERISEhMTFBQVFRYWFxcYGBkZGRsbHBwcHR4fHyAhISIjJCQlJicoKSorLC0vLzEyMzQ2Nzg6Ozw+QEJDREZISUtNTlBSVFVXWVtdYGFjZWdqbG1vcnR2eXt9f4GEhoiKjI+RlJaXmpyeoaOlqKqrra+xs7a3ubu9v8HCxMbGx8nKy83Oz9DQ0dLS09PU1NTU1NTU09PS0dHQz83My8nHxsXCwL67ubazsK2qqKWhnpqXlJCMiYaCfnt3cm5rZ2NfW1dUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVA==","EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBIUFhgaHB4fICEjJCYnKSosLS8wMjQ1Nzk6PD0/QUNFRkhKTE1PUVNUVlhaXF5gYmNlZ2lrbW5wcnR2eHp8fYCChIaIioyOkJKUlpianJ6goqSmqKqsrrCytLa4ubu9v8HDxcfJy83P0dPV19nb3eDi5Obo6uzu8PL09vj6/P7+/v7+/g==@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDBQYICgsMDQ0ODxAREhMUFRYWFxgZGhscHR4fICEiIyUvNDc7PkFERklMTlFTVlhaXV9hZGZoam1ucXN1d3t9f4KEhoiKjI6Rk5WXmZudoKKkpqiqrK6ws7W3uby+wMLExsjKzM7R09XX2dze4OLk5unr7e/x8/X3+fv9/v///////w==@KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkrLC4wMTM0NTY3ODk6Oz09P0BBQkRFRkdJSkxNTlBRU1RVV1laW11eYGJjZGZoamtsbnByc3V3eHp7fX+Bg4WHiIqMjpCRk5WWmJqcnqCho6WnqaqsrrCytLW3ubu9v8HDxcfIyszO0NLT1dfZ293f4ePl5+nr7e/x8vT2+Pr6+vr6+g==","AgICAgICAgICAgICAgICAgICAgICBAQEBAQEBAUFBQUFBwcHBwkJCQoKCgwMDQ0PDxAQEhITExQWFhYXGBgZGRobHB0dHh8gISIjIyUmJygpKistLjAxMjM1Nzg6Ozw+QEJDRUZISkxOUFJTVVdZW11fYmNlZ2lsbnBydXd5fH2AgoSHiYyOkJOVmJqcn6Gjpqiqra+xs7W3uby9v8HDxcfIyszNztDR0tTV1tfX2NnZ2trb29vb29vb2trZ2NjX1tTT0tDOzcvIxsTBv7y5trOwraqmo5+cmJSQjYmFgX16dXFtaWVhXVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgICAgMDAwQEBAUFBgYGBgcHCAgJCQoKCgsLDAwNDxASFBYYGhscHR4fICIjJCYoKSkrLC4vMTI0Njc5Ozw+QEJDRUdJS01PUVNVV1lbXV9hZGZoamxvcXN1d3l7foCDhYiLjZCSlJeZnJ6go6WnqqyusbO1t7q8vsHCxMbIyszNz9LT1NbX2Nrb3N3d3t/f4ODh4eHh4eHh4ODf3t7d3NrZ2NbU09HNy8nGxMG+u7e0sa6qp6OgnJiUkY2JhIB8d3RwbGhjX1tXV1dXV1dXV1dXV1dXV1dXV1dXV1dXVw==@DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg8PDw8PEBAQEBERERISEhMTFBQVFRYWFxcYGBkZGRsbHBwcHR4fHyAhISIjJCQlJicoKSorLC0vLzEyMzQ2Nzg6Ozw+QEJDREZISUtNTlBSVFVXWVtdYGFjZWdqbG1vcnR2eXt9f4GEhoiKjI+RlJaXmpyeoaOlqKqrra+xs7a3ubu9v8HCxMbGx8nKy83Oz9DQ0dLS09PU1NTU1NTU09PS0dHQz83My8nHxsXCwL67ubazsK2qqKWhnpqXlJCMiYaCfnt3cm5rZ2NfW1dUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVA=="],s=a("DYSw5gFgLgpgdgUggVxggzgYwE43hgQymWyJAHtFNzhzsBaAE3MbDXIDcZtgCBPBHDoBbAsATVaDAEYlEwZMJBD0IKAPTkAZlHqhIUBMOTAoIAA7A+QA").split("%"),g=a("GIQQIgTMAMCkDsAzJSAcdrQMxYJy4WSIEYRYsJcA2YYWW1AYU1mmKtWIBZWRoRa5CE0HQAhrgDGiAgFYQCwRFkUARnESIqVFptSyWmAEJdR0I7hOtMN2BICmqmfRAGWtUyxONUYRvWB5d2AqLmFYULAmI3pcLix4Hk0AE3tNAKZwzFlGJVkuVHt7ayMAUSUsWWBGMFhZVVlJWWJYTSpiaAhYdhVJHg8IFmUqJEQAsD44SPgfF1KdOFp4GDguKks1+jWwgkH4aGAuxAhVHRaTWj9YCBB4VD5r1DLiAiosY77UVFZ4WTFkrCtArJVTEZLJAKMEClfyYLj2ZLfTBUIy6IheMpVOjEPptVqISSDDSNKjJMTWRrpWjCQzwd5iQGIaDJXDuXDALhXTBYaC/CJYRHHL7WYShawUQRYRhSqVAA==").split("%").map((A=>"#"+A)),h=a("IwUl7SOrZ+xA").split("%").map((A=>parseInt(A))),V=["r","g","b"];let c=[];for(let A of i){let t={};for(let[e,o]of A.split("@").entries()){let A=atob(o);t[V[e]]=Object.keys(A).map((t=>A.charCodeAt(t)))}c.push(t)}let d,f=[],C=parseInt,B=parseFloat;for(let[A,t]of l.entries()){d={grids:t.split("@")[0].split(".").map((A=>C(A))),weight:h[A],index:A,layers:[]};for(let A of t.split("@").slice(1)){let t=A.split("!");function e(t){A.alpha=B(t)}function o(t){A.blend=s[C(t)]}if(A={type:C(t[0])},0==A.type){for(let[e,o]of["scale","angles","ox","oy"].entries())A[o]=t[e+1].split("$").map((A=>B(A)));for(let A of t.slice(5))"a"==A[0]&&e(A.slice(1)),"b"==A[0]&&o(A.slice(1))}if([1,2].includes(A.type)&&(A.color=g[C(t[1])],o(t[2])),1==A.type&&t[3]&&e(t[3]),2==A.type&&(A.fill="1"==t[3]?"in":"out",t[4]&&e(t[4])),3==A.type&&(A.name=t[1],t[2]))for(let A of t[2].split("$"))"a"==A[0]&&e(A.slice(1)),"b"==A[0]&&o(A.slice(1));d.layers.push(A)}f.push(d)}const p=3e3;function E(A){let e,o,n=[],a=-1,l=-1,r=0;const i=A.q;for(;r<i;){for(e=t(...A.r);e==l&&(e=t(...A.r),a+=1,!(a>1e4)););l=e,o=t(...A.s),r+o>i&&(o=i-r,1==A.e&&(e=1)),n.push({rise:e,span:o}),r+=o}return n}function Q(t,e,o){let n=0,a=0,l=e[t][0][0].rise,r=e[(t+1)%4][0].slice(-1)[0].rise,i=1;var s;return(s=o.p)&&A.random()<=s&&(0==l&&0!=r?(l=1==o.c?Math.floor(r/2):r/2,l<.5&&(i=2),a-=l*i,r+=l*i):0==r&&0!=l&&(r=1==o.c?Math.floor(l/2):l/2,r<.5&&(i=2),n-=r*i,l+=r*i)),{x:n,y:a,w:l,h:r}}function y(A,t,e,o,n,a,l){let r,i,s,g,h,V,c;return c=l*(Math.PI/180),h=Math.cos(c),V=Math.sin(c),r=h*(e-A)-V*(o-t)+A,i=V*(e-A)+h*(o-t)+t,s=h*(e+n-A)-V*(o+a-t)+A,g=V*(e+n-A)+h*(o+a-t)+t,[r,i,s,g]}function I(A){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const e=document.createElement("canvas"),o=e.getContext("2d");return e.width=A,e.height=A,o.imageSmoothingEnabled=t,o.webkitImageSmoothingEnabled=t,o.msImageSmoothingEnabled=t,[e,o]}const[u,R]=I(p),[w,x]=I(p);function U(){let A=Math.min(window.innerWidth,window.innerHeight);u.style.width=A+"px",u.style.height=A+"px"}document.body.appendChild(u),document.body.style.display="flex",document.body.style.justifyContent="center",U(),window.addEventListener("resize",U,!0);const K=6e3,[b,D]=I(p,!0),[m,S]=I(K),M=new Image,j=new Image;j.addEventListener("load",(function(){D.fillStyle="#ffffff",D.fillRect(0,0,p,p),D.globalAlpha=.93,D.drawImage(j,0,0,j.width,j.height,0,0,p,p);const A=Uint32Array.from({length:K*K},(()=>(0,4294967295,Math.floor(Math.random()*(Math.floor(4294967295)-Math.ceil(0)+1)+Math.ceil(0))))),o=new ImageData(new Uint8ClampedArray(A.buffer),K,K);S.putImageData(o,0,0),S.globalCompositeOperation="source-in",S.fillStyle="#000000",S.fillRect(0,0,K,K),D.globalCompositeOperation="soft-light",D.drawImage(m,0,0,K,K,0,0,p,p),M.addEventListener("load",(function(){!function(){let A={},
t o of A.palette.layers)0==o.type&&(o.rng_angle=e(o.angles),o.rng_scale=t(10*o.scale[0],10*o.scale[1])/10);let n=new Set(A.palette.grids);A.grid_index=e(Array.from(n));let a=r[A.grid_index];A.grid={d:a[0],r:a[2],s:a[3],l:a[4],p:a[5],q:e(a[1]),size:p/a[0],c:1,e:0},requestAnimationFrame((()=>{for(const t of A.palette.layers)x.globalCompositeOperation="destination-out",x.fillStyle="#ffffff",x.fillRect(0,0,w.width,w.height),x.globalCompositeOperation="source-over",F[t.type](A,t),R.save(),"blend"in t&&"normal"!=t.blend&&(R.globalCompositeOperation=t.blend),"alpha"in t&&t.alpha>=0&&t.alpha<=1&&(R.globalAlpha=t.alpha),R.drawImage(w,0,0,w.width,w.height,0,0,p,p),R.restore()}))}()})),j.src=b.toDataURL()}),!1),Z.src="data:image/png;base64,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";const F=[function(A,e){const o=e.rng_angle,n=e.rng_scale,a=p*n-p,l=a*t(100*e.ox[0],100*e.ox[1])/100,r=a*t(100*e.oy[0],100*e.oy[1])/100;x.save(),x.translate(1500,1500),x.rotate(o*Math.PI/180),x.translate(-1500,-1500),x.translate(-l,-r),x.scale(n,n),x.drawImage(j,0,0,j.width,j.height,0,0,p,p),x.restore()},function(A,t){x.fillStyle=t.color,x.fillRect(0,0,w.width,w.height)},function(A,e){let[o,n]=function(A){const t=(A.d-A.q)/2,e=A.d-(A.d-A.q)/2,o=A.size,n=[[E(A),[e,e],270,1],[E(A),[t,e],0,1],[E(A),[t,t],90,1],[E(A),[e,t],180,1]],a=[[Q(0,n,A),[e,e],0,0],[Q(1,n,A),[t,e],90,0],[Q(2,n,A),[t,t],180,0],[Q(3,n,A),[e,t],270,0]],l=[n[1],a[0],n[0],a[3],n[3],a[2],n[2],a[1]];let r,i,s,g,h,V,c=[],d={x:-1,y:-1},C={x:-1,y:-1};for(let[A,t,e,n]of l)if(r=t[0]*o,i=t[1]*o,1==n){let t=0;for(let n of A){s=t*o+r,g=i,h=n.span*o,V=n.rise*o,t+=n.span;let[A,a,l,f]=y(r,i,s,g,h,V,e);0==e||180==e?(-1==C.x&&(C={x:A,y:f}),A!=d.x&&f!=d.y&&-1!=d.x&&c.push([d.x,d.y,d.x,f]),c.push([A,f,l,f])):90!=e&&270!=e||(l!=d.x&&a!=d.y&&c.push([d.x,d.y,l,d.y]),c.push([l,a,l,f])),d={x:l,y:f}}}else{let t=A;if(0==t.w||0==t.h)continue;s=t.x*o+r,g=t.y*o+i,h=t.w*o,V=t.h*o;let[n,a,l,C]=y(r,i,s,g,h,V,e);0!=e&&180!=e||(n!=d.x&&C!=d.y&&c.push([d.x,d.y,n,d.y]),c.push([n,C,l,C]),c.push([l,C,l,a]),d={x:l,y:a}),90!=e&&270!=e||(l!=d.x&&a!=d.y&&c.push([d.x,d.y,d.x,a]),c.push([l,a,l,C]),c.push([l,C,n,C]),d={x:n,y:C})}return[c,C]}(A.grid);x.fillStyle=e.color,"out"==e.fill&&(x.fillRect(0,0,w.width,w.height),x.globalCompositeOperation="destination-out");const a=A.grid.l,l=t(-a,a)*A.grid.size,r=t(-a,a)*A.grid.size;x.save(),x.translate(l,r),x.translate(-0,-0),x.scale(1,1),x.beginPath();let i={x:0,y:0};for(let[A,t,e,n]of o)x.lineTo(A,t),x.lineTo(e,n),i={x:e,y:n};n.x!=i.x&&n.y!=i.y&&x.lineTo(i.x,n.y),x.lineTo(n.x,n.y),x.fill(),x.restore()},function(A,t){const e=new Uint8ClampedArray(j.width*j.height*4),o=R.getImageData(0,0,j.width,j.height).data,n=c[t.name];let a,l,r;for(a=0;a<j.width;a++)for(l=0;l<j.height;l++)r=4*(l*j.width+a),e[r+0]=n.r[o[r+0]],e[r+1]=n.g[o[r+1]],e[r+2]=n.b[o[r+2]],e[r+3]=255;const i=x.createImageData(j.width,j.height);i.data.set(e),x.putImageData(i,0,0)}]})();
(()=>{"use strict";const A=new class{constructor(A){this.useA=!1;let t=function(A){let t=parseInt(A.substr(0,8),16),e=parseInt(A.substr(8,8),16),o=parseInt(A.substr(16,8),16),n=parseInt(A.substr(24,8),16);return function(){t|=0,e|=0,o|=0,n|=0;let A=(t+e|0)+n|0;return n=n+1|0,t=e^e>>>9,e=o+(o<<3)|0,o=o<<21|o>>>11,o=o+A|0,(A>>>0)/4294967296}};this.prngA=new t(A.hash.substr(2,32)),this.prngB=new t(A.hash.substr(34,32));for(let A=0;A<1e6;A+=2)this.prngA(),this.prngB();this.hash=A.hash.substr(2,64)}random(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}}(tokenData);function t(t,e){return Math.floor(A.random()*(Math.floor(e)-Math.ceil(t)+1)+Math.ceil(t))}function e(A){return A[t(0,A.length-1)]}var o={},n=String.fromCharCode;function a(A){return function(A,t,e){var o,a,l,r,i,s,g,h=[],V=4,c=4,d=3,C="",f=[],B={val:e(0),position:32,index:1};for(o=0;o<3;o+=1)h[o]=o;function p(A){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;for(l=0,i=Math.pow(2,A),s=1;s!=i;)r=B.val&B.position,B.position>>=1,0==B.position&&(B.position=32,B.val=e(B.index++)),l|=(r>0?1:0)*s,s<<=1;1==t?g=n(l):2==t&&(h[c++]=n(l),g=c-1,V--)}switch(p(2,0),l){case 0:p(8);break;case 1:p(16);break;case 2:return""}for(h[3]=g,a=g,f.push(g);;){if(B.index>A)return"";switch(p(d),g=l){case 0:p(8,2);break;case 1:p(16,2);break;case 2:return f.join("")}if(0==V&&(V=Math.pow(2,d),d++),h[g])C=h[g];else{if(g!==c)return null;C=a+a.charAt(0)}f.push(C),h[c++]=a+C.charAt(0),a=C,0==--V&&(V=Math.pow(2,d),d++)}}(A.length,0,(function(t){return function(A,t){if(!o[A]){o[A]={};for(var e=0;e<A.length;e++)o[A][A.charAt(e)]=e}return o[A][t]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",A.charAt(t))}))}const l=a("IIJQygEgVADAdARgOyIGyPghcDMd0J4IBMicSAAjAIQ4AkeArNTfMXfDi3Ix/hcWqFqzBAOoBOSUPHDmMcVNGKRQqAA44mAtgLEq1UuoaIWdCTDrEklhOtY8+qbgBY+jSgiGCJ4xutUFQX9pIJEuURlBVC8pMS4vACMJKEYtRBQEAkwiA1IkE3lXJzN4GHVGCi8cJGpKYNDxHAio2mc41PSsjERsQkQDPFQ6F1xJS2sHYy9LBS9nSuCA5SXpMUFiZg7tfERSbEoaUYQRniF7bmH4ANm4fS5BZKrqFy3ufXmfcVQfFldxaxrS6yGhxbj1EQuULgkHQ+CMWAZNC4PYGUYVOjyOh2BwSbHvNxsVDPFyg561XzzWouJoBKRhRhvdYiJl+JlQZDIkgDGh4ehMc5TfG3MReUmSckSqkvJp1FiyOVhLyCZkPeWCLi1JWGNSaHZYRBEfZoxxFNh8LjXXjXSkvEQUBLUJ6CKFxcQuV3qwy1Fa0KT08TLFiI/Z9fKDQpmSbYi424V8e5CJ22qGLQztP7wwOBbhp4ig1ohN0bBphD2hToINKYFD7bK9FH9bkHE28LEWGMOE6YG53C0O+XKrxp1BcYvnNZ+f2tYjTpVvGCIg1EY77citzFmHHcPEzOASdjxJOJSrVGbfMcz2JXycqz3MwHjxj3gHXhAaLqZHSGvZkQ4vPtRjNPg927O4BzmQxhxJG4L1vCcn2nZkXAzJUXxVBcATnD8ay5PpjiNP9BkcIDBW4eh4VKAZlU1Z5UGYGkXWvMIcBoX1WPgjj6RwvCf2bddeTuXg8CQLYJhsTsdxOPdCR4AdHltYhaPmBj3Tfb4VRoZln04pRgyrT9eL0YjjFIhwKPIci+BpMU2O+DMHwWL1fkcwIPwkXihl/FsjlNMZLAsKj5H3Ph1AHLwAEN4E8IQpH0DZ0JeFUvRcDYUrSqZZCQrK1h4zlugQTBsBXPjw0E3goVsWM+z3PFrnC5NngQOKcvHVKkzCYhEs2eDfi0gFoXfAy9SRAqisbAjvIEoQarOBx2E4d5sWeRgFgBPrvlYL1UALZDPU6lznjJaI2LUYbDLGhsSqbNcYqyahiUE9gBVYC1uGMeAJCkRIwq8ZAJUdZ0HqhQrWhcS9VVZaJUxSikvRwVkaFIYSzkC6LQqs+AoRPagov3d09JYhcOTSEaCuKxBJv4u7nEewx8BMZwqtezB3vxH6mopBqgdQRLwc45hIk+75KthxoNSZHc8kjDtJnBDH4RKHG8d8QG8TxypHTxiEsArcbqeeYgAjpvA8WOTMQNcBa4BQp0cBWn0pctJ1TxeCJ3QhpooeB8WXjhljDvKkZxnl6Lgtk14Xdx4WXWyjUXPc3jm0N43iOEswOxxKwbCoy0bfcO2Vrsv7Yggl2SXd4ICzLS8wl5+CXH9tOTApIVPvpfA6rgAJlZjl49PfUYPINPRqMhCVBNMu4t2qrv6QTbnbR03xgg2pGSO7715oLrHrNqE93Th7TmL8E+NX2jTQiAA=").split("*").slice(1),r=[[13,[1],[0,2],[2,4],1,.9],[19,[4],[0,3],[3,6],2,.8],[17,[3],[1,3],[2,5],2,.7],[21,[5],[0,4],[4,8],1,.9],[12,[1],[0,2],[1,4],1,.5],[9,[3],[0,2],[2,4],0,.7],[23,[3],[0,4],[4,8],2,.9],[25,[3,5],[2,5],[5,9],2,.9],[13,[3],[0,2],[2,4],1,.7],[15,[3],[0,3],[3,6],1,.8],[17,[5],[0,3],[3,6],1,.7],[21,[3],[0,4],[4,8],2,.9],[19,[3],[0,3],[3,6],2,.8],[19,[3,5],[0,3],[3,0],1,.6],[23,[4],[2,5],[4,8],2,.7],[11,[3],[0,2],[2,4],0,.7],[17,[3],[0,3],[3,6],2,.9],[15,[3],[0,3],[2,1],1,.6]],i=["AgICAgICAgICAgICAgICAgICAgICBAQEBAQEBAUFBQUFBwcHBwkJCQoKCgwMDQ0PDxAQEhITExQWFhYXGBgZGRobHB0dHh8gISIjIyUmJygpKistLjAxMjM1Nzg6Ozw+QEJDRUZISkxOUFJTVVdZW11fYmNlZ2lsbnBydXd5fH2AgoSHiYyOkJOVmJqcn6Gjpqiqra+xs7W3uby9v8HDxcfIyszNztDR0tTV1tfX2NnZ2trb29vb29vb2trZ2NjX1tTT0tDOzcvIxsTBv7y5trOwraqmo5+cmJSQjYmFgX16dXFtaWVhXVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgICAgMDAwQEBAUFBgYGBgcHCAgJCQoKCgsLDAwNDxASFBYYGhscHR4fICIjJCYoKSkrLC4vMTI0Njc5Ozw+QEJDRUdJS01PUVNVV1lbXV9hZGZoamxvcXN1d3l7foCDhYiLjZCSlJeZnJ6go6WnqqyusbO1t7q8vsHCxMbIyszNz9LT1NbX2Nrb3N3d3t/f4ODh4eHh4eHh4ODf3t7d3NrZ2NbU09HNy8nGxMG+u7e0sa6qp6OgnJiUkY2JhIB8d3RwbGhjX1tXV1dXV1dXV1dXV1dXV1dXV1dXV1dXVw==@DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg8PDw8PEBAQEBERERISEhMTFBQVFRYWFxcYGBkZGRsbHBwcHR4fHyAhISIjJCQlJicoKSorLC0vLzEyMzQ2Nzg6Ozw+QEJDREZISUtNTlBSVFVXWVtdYGFjZWdqbG1vcnR2eXt9f4GEhoiKjI+RlJaXmpyeoaOlqKqrra+xs7a3ubu9v8HCxMbGx8nKy83Oz9DQ0dLS09PU1NTU1NTU09PS0dHQz83My8nHxsXCwL67ubazsK2qqKWhnpqXlJCMiYaCfnt3cm5rZ2NfW1dUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVA==","EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBIUFhgaHB4fICEjJCYnKSosLS8wMjQ1Nzk6PD0/QUNFRkhKTE1PUVNUVlhaXF5gYmNlZ2lrbW5wcnR2eHp8fYCChIaIioyOkJKUlpianJ6goqSmqKqsrrCytLa4ubu9v8HDxcfJy83P0dPV19nb3eDi5Obo6uzu8PL09vj6/P7+/v7+/g==@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDBQYICgsMDQ0ODxAREhMUFRYWFxgZGhscHR4fICEiIyUvNDc7PkFERklMTlFTVlhaXV9hZGZoam1ucXN1d3t9f4KEhoiKjI6Rk5WXmZudoKKkpqiqrK6ws7W3uby+wMLExsjKzM7R09XX2dze4OLk5unr7e/x8/X3+fv9/v///////w==@KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkrLC4wMTM0NTY3ODk6Oz09P0BBQkRFRkdJSkxNTlBRU1RVV1laW11eYGJjZGZoamtsbnByc3V3eHp7fX+Bg4WHiIqMjpCRk5WWmJqcnqCho6WnqaqsrrCytLW3ubu9v8HDxcfIyszO0NLT1dfZ293f4ePl5+nr7e/x8vT2+Pr6+vr6+g==","AgICAgICAgICAgICAgICAgICAgICBAQEBAQEBAUFBQUFBwcHBwkJCQoKCgwMDQ0PDxAQEhITExQWFhYXGBgZGRobHB0dHh8gISIjIyUmJygpKistLjAxMjM1Nzg6Ozw+QEJDRUZISkxOUFJTVVdZW11fYmNlZ2lsbnBydXd5fH2AgoSHiYyOkJOVmJqcn6Gjpqiqra+xs7W3uby9v8HDxcfIyszNztDR0tTV1tfX2NnZ2trb29vb29vb2trZ2NjX1tTT0tDOzcvIxsTBv7y5trOwraqmo5+cmJSQjYmFgX16dXFtaWVhXVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQ==@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgICAgMDAwQEBAUFBgYGBgcHCAgJCQoKCgsLDAwNDxASFBYYGhscHR4fICIjJCYoKSkrLC4vMTI0Njc5Ozw+QEJDRUdJS01PUVNVV1lbXV9hZGZoamxvcXN1d3l7foCDhYiLjZCSlJeZnJ6go6WnqqyusbO1t7q8vsHCxMbIyszNz9LT1NbX2Nrb3N3d3t/f4ODh4eHh4eHh4ODf3t7d3NrZ2NbU09HNy8nGxMG+u7e0sa6qp6OgnJiUkY2JhIB8d3RwbGhjX1tXV1dXV1dXV1dXV1dXV1dXV1dXV1dXVw==@DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg8PDw8PEBAQEBERERISEhMTFBQVFRYWFxcYGBkZGRsbHBwcHR4fHyAhISIjJCQlJicoKSorLC0vLzEyMzQ2Nzg6Ozw+QEJDREZISUtNTlBSVFVXWVtdYGFjZWdqbG1vcnR2eXt9f4GEhoiKjI+RlJaXmpyeoaOlqKqrra+xs7a3ubu9v8HCxMbGx8nKy83Oz9DQ0dLS09PU1NTU1NTU09PS0dHQz83My8nHxsXCwL67ubazsK2qqKWhnpqXlJCMiYaCfnt3cm5rZ2NfW1dUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVA=="],s=a("DYSw5gFgLgpgdgUggVxggzgYwE43hgQymWyJAHtFNzhzsBaAE3MbDXIDcZtgCBPBHDoBbAsATVaDAEYlEwZMJBD0IKAPTkAZlHqhIUBMOTAoIAA7A+QA").split("%"),g=a("GIQQIgTMAMCkDsAzJSAcdrQMxYJy4WSIEYRYsJcA2YYWW1AYU1mmKtWIBZWRoRa5CE0HQAhrgDGiAgFYQCwRFkUARnESIqVFptSyWmAEJdR0I7hOtMN2BICmqmfRAGWtUyxONUYRvWB5d2AqLmFYULAmI3pcLix4Hk0AE3tNAKZwzFlGJVkuVHt7ayMAUSUsWWBGMFhZVVlJWWJYTSpiaAhYdhVJHg8IFmUqJEQAsD44SPgfF1KdOFp4GDguKks1+jWwgkH4aGAuxAhVHRaTWj9YCBB4VD5r1DLiAiosY77UVFZ4WTFkrCtArJVTEZLJAKMEClfyYLj2ZLfTBUIy6IheMpVOjEPptVqISSDDSNKjJMTWRrpWjCQzwd5iQGIaDJXDuXDALhXTBYaC/CJYRHHL7WYShawUQRYRhSqVAA==").split("%").map((A=>"#"+A)),h=a("IwUl7SOrZ+xA").split("%").map((A=>parseInt(A))),V=["r","g","b"];let c=[];for(let A of i){let t={};for(let[e,o]of A.split("@").entries()){let A=atob(o);t[V[e]]=Object.keys(A).map((t=>A.charCodeAt(t)))}c.push(t)}let d,C=[],f=parseInt,B=parseFloat;for(let[A,t]of l.entries()){d={grids:t.split("@")[0].split(".").map((A=>f(A))),weight:h[A],index:A,layers:[]};for(let A of t.split("@").slice(1)){let t=A.split("!");function e(t){A.alpha=B(t)}function o(t){A.blend=s[f(t)]}if(A={type:f(t[0])},0==A.type){for(let[e,o]of["scale","angles","ox","oy"].entries())A[o]=t[e+1].split("$").map((A=>B(A)));for(let A of t.slice(5))"a"==A[0]&&e(A.slice(1)),"b"==A[0]&&o(A.slice(1))}if([1,2].includes(A.type)&&(A.color=g[f(t[1])],o(t[2])),1==A.type&&t[3]&&e(t[3]),2==A.type&&(A.fill="1"==t[3]?"in":"out",t[4]&&e(t[4])),3==A.type&&(A.name=t[1],t[2]))for(let A of t[2].split("$"))"a"==A[0]&&e(A.slice(1)),"b"==A[0]&&o(A.slice(1));d.layers.push(A)}C.push(d)}const p=3e3;function E(A){let e,o,n=[],a=-1,l=-1,r=0;const i=A.q;for(;r<i;){for(e=t(...A.r);e==l&&(e=t(...A.r),a+=1,!(a>1e4)););l=e,o=t(...A.s),r+o>i&&(o=i-r,1==A.e&&(e=1)),n.push({rise:e,span:o}),r+=o}return n}function Q(t,e,o){let n=0,a=0,l=e[t][0][0].rise,r=e[(t+1)%4][0].slice(-1)[0].rise,i=1;var s;return(s=o.p)&&A.random()<=s&&(0==l&&0!=r?(l=1==o.c?Math.floor(r/2):r/2,l<.5&&(i=2),a-=l*i,r+=l*i):0==r&&0!=l&&(r=1==o.c?Math.floor(l/2):l/2,r<.5&&(i=2),n-=r*i,l+=r*i)),{x:n,y:a,w:l,h:r}}function y(A,t,e,o,n,a,l){let r,i,s,g,h,V,c;return c=l*(Math.PI/180),h=Math.cos(c),V=Math.sin(c),r=h*(e-A)-V*(o-t)+A,i=V*(e-A)+h*(o-t)+t,s=h*(e+n-A)-V*(o+a-t)+A,g=V*(e+n-A)+h*(o+a-t)+t,[r,i,s,g]}function I(A){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const e=document.createElement("canvas"),o=e.getContext("2d");return e.width=A,e.height=A,o.imageSmoothingEnabled=t,o.webkitImageSmoothingEnabled=t,o.msImageSmoothingEnabled=t,[e,o]}const[u,R]=I(p),[w,x]=I(p);function U(){let A=Math.min(window.innerWidth,window.innerHeight);u.style.width=A+"px",u.style.height=A+"px"}document.body.appendChild(u),document.body.style.display="flex",document.body.style.justifyContent="center",U(),window.addEventListener("resize",U,!0);const K=6e3,[b,D]=I(p,!0),[m,S]=I(K),j=new Image,Z=new Image;Z.addEventListener("load",(function(){D.fillStyle="#ffffff",D.fillRect(0,0,p,p),D.globalAlpha=.93,D.drawImage(Z,0,0,Z.width,Z.height,0,0,p,p);const A=Uint32Array.from({length:K*K},(()=>t(0,4294967295))),o=new ImageData(new Uint8ClampedArray(A.buffer),K,K);S.putImageData(o,0,0),S.globalCompositeOperation="source-in",S.fillStyle="#000000",S.fillRect(0,0,K,K),D.globalCompositeOperation="soft-light",D.drawImage(m,0,0,K,K,0,0,p,p),j.addEventListener("load",(function(){!function(){let A={},o=[];for(let A of C)for(let t=0;t<A.weight;t++)o.push(A);A.palette=e(o);for(le
“Squares” utilizes the shape of a square as a unit of construction, combining and overlapping them at various scales to create interplays of color, structure, and atmosphere. The overall effect is something along the lines of Bauhaus meets Blade Runner, as complex rectilinear forms float untethered through fields of light and texture.