| 0 | witness #0utf8�[a��҈.�Mi߈_����* {���!HC^�ʁM�>�H7ΦR9���J�h�Bs`�@=(m��[a��҈.�Mi߈_����* {���!HC^�ʁM�>�H7ΦR9���J�h�Bs`�@=(m�asciiE[aRR.Mi__;3t* {>
!HC^0JMv>+H7N&R9r!JRhVBs`n@=(mQE[aRR.Mi__;3t* {>
!HC^0JMv>+H7N&R9r!JRhVBs`n@=(mQhexc55b1661d21291d2882e874d69df885fbbb3f4912a007bbe968a0e2148435eb0ca814df63eab4837cea65239f2971ca1914ad2680fd6427360ee03403d286dd1c55b1661d21291d2882e874d69df885fbbb3f4912a007bbe968a0e2148435eb0ca814df63eab4837cea65239f2971ca1914ad2680fd6427360ee03403d286dd1 #1utf8 /���걤��,{{9
�Y��m���`�WC̒�� cordtext/html;charset=utf-8 M<!DOCTYPE html>
<html lang="en">
<head>
<style>
html, body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
</style>
<meta charset="utf-8" />
</head>
<body>
<main>
</main>
<script>
let seed=window.location.href.split('/').find(t=>t.includes('i0'));
if (seed == null) {
seed = new URLSearchParams(window.location.search).get("seed");
} else {
let pattern = "seed=";
for(let i = 0; i < seed.length - pattern.length; M++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
break;
}
}
}
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18,M 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
}
function sfc32($, _, u, i) {
return function () {
u >>>= 0, i >>>= 0;
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
}
}
let mathRand =M sfc32(...cyrb128(seed));
let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(Me){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuMnction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsMe{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\Md+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cMase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"Mhcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coMlor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)Mu=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=Mfunction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(Mr){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funMction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biMnd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daMrkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#Madff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=Mt[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuMnction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retMurn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pMush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioMn(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tMhrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,Me[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funMction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeMb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#Mfddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAML="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;Mn.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reMlRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nMull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizMeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiMon(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sMign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coMnst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecMtor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.Mz=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.McurveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=Ms,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoMr(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return Mnew n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrMain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striMng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightMness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigMht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrMoke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoMde==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,Mi,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squMare=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.Mlength-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,Ma,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heMight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(Me);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reMturn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*Mn._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+Me*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glMobalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeMOperation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n font-family: '${o}';\n src: url('${e}');\n }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=Mfunction(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rMand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEMxponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frMameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousMeY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoMn=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeMrmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
class ColMor{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=Mt+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==Me?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=Me[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roMtate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=Me.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geMtHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatMion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let Me=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampMlitude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shMuffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInMt(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puMsh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heMight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tMy,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vMelocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,Mthis._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),Mthis.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereMr.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendMerer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conMst HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(Me.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raMndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),Me.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leMt a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEMDIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lMayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=Mmap(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cMhromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),Md.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=McreateVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHMORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,MevolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControMller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourMglass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoMde||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lMayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiMon(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrMomTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
</script>
</body>
</html>h /���걤��,{{9
�Y��m���`�WC̒�� cordtext/html;charset=utf-8 M<!DOCTYPE html>
<html lang="en">
<head>
<style>
html, body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
</style>
<meta charset="utf-8" />
</head>
<body>
<main>
</main>
<script>
let seed=window.location.href.split('/').find(t=>t.includes('i0'));
if (seed == null) {
seed = new URLSearchParams(window.location.search).get("seed");
} else {
let pattern = "seed=";
for(let i = 0; i < seed.length - pattern.length; M++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
break;
}
}
}
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18,M 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
}
function sfc32($, _, u, i) {
return function () {
u >>>= 0, i >>>= 0;
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
}
}
let mathRand =M sfc32(...cyrb128(seed));
let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(Me){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuMnction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsMe{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\Md+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cMase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"Mhcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coMlor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)Mu=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=Mfunction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(Mr){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funMction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biMnd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daMrkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#Madff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=Mt[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuMnction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retMurn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pMush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioMn(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tMhrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,Me[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funMction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeMb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#Mfddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAML="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;Mn.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reMlRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nMull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizMeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiMon(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sMign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coMnst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecMtor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.Mz=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.McurveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=Ms,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoMr(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return Mnew n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrMain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striMng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightMness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigMht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrMoke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoMde==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,Mi,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squMare=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.Mlength-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,Ma,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heMight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(Me);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reMturn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*Mn._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+Me*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glMobalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeMOperation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n font-family: '${o}';\n src: url('${e}');\n }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=Mfunction(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rMand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEMxponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frMameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousMeY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoMn=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeMrmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
class ColMor{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=Mt+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==Me?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=Me[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roMtate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=Me.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geMtHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatMion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let Me=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampMlitude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shMuffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInMt(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puMsh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heMight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tMy,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vMelocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,Mthis._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),Mthis.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereMr.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendMerer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conMst HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(Me.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raMndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),Me.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leMt a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEMDIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lMayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=Mmap(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cMhromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),Md.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=McreateVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHMORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,MevolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControMller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourMglass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoMde||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lMayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiMon(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrMomTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
</script>
</body>
</html>hascii /xj1$?,{{9
cYDm59`oWCL?, cordtext/html;charset=utf-8 M<!DOCTYPE html>
<html lang="en">
<head>
<style>
html, body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
</style>
<meta charset="utf-8" />
</head>
<body>
<main>
</main>
<script>
let seed=window.location.href.split('/').find(t=>t.includes('i0'));
if (seed == null) {
seed = new URLSearchParams(window.location.search).get("seed");
} else {
let pattern = "seed=";
for(let i = 0; i < seed.length - pattern.length; M++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
break;
}
}
}
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18,M 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
}
function sfc32($, _, u, i) {
return function () {
u >>>= 0, i >>>= 0;
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
}
}
let mathRand =M sfc32(...cyrb128(seed));
let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(Me){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuMnction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsMe{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\Md+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cMase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"Mhcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coMlor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)Mu=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=Mfunction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(Mr){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funMction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biMnd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daMrkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#Madff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=Mt[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuMnction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retMurn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pMush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioMn(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tMhrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,Me[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funMction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeMb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#Mfddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAML="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;Mn.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reMlRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nMull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizMeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiMon(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sMign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coMnst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecMtor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.Mz=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.McurveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=Ms,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoMr(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return Mnew n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrMain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striMng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightMness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigMht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrMoke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoMde==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,Mi,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squMare=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.Mlength-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,Ma,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heMight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(Me);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reMturn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*Mn._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+Me*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glMobalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeMOperation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n font-family: '${o}';\n src: url('${e}');\n }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=Mfunction(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rMand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEMxponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frMameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousMeY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoMn=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeMrmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
class ColMor{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=Mt+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==Me?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=Me[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roMtate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=Me.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geMtHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatMion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let Me=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampMlitude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shMuffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInMt(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puMsh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heMight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tMy,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vMelocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,Mthis._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),Mthis.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereMr.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendMerer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conMst HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(Me.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raMndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),Me.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leMt a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEMDIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lMayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=Mmap(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cMhromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),Md.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=McreateVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHMORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,MevolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControMller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourMglass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoMde||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lMayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiMon(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrMomTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
</script>
</body>
</html>h /xj1$?,{{9
cYDm59`oWCL?, cordtext/html;charset=utf-8 M<!DOCTYPE html>
<html lang="en">
<head>
<style>
html, body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
</style>
<meta charset="utf-8" />
</head>
<body>
<main>
</main>
<script>
let seed=window.location.href.split('/').find(t=>t.includes('i0'));
if (seed == null) {
seed = new URLSearchParams(window.location.search).get("seed");
} else {
let pattern = "seed=";
for(let i = 0; i < seed.length - pattern.length; M++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
break;
}
}
}
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18,M 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
}
function sfc32($, _, u, i) {
return function () {
u >>>= 0, i >>>= 0;
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
}
}
let mathRand =M sfc32(...cyrb128(seed));
let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(Me){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuMnction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsMe{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\Md+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cMase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"Mhcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coMlor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)Mu=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=Mfunction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(Mr){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funMction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biMnd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daMrkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#Madff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=Mt[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuMnction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retMurn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pMush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioMn(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tMhrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,Me[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funMction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeMb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#Mfddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAML="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;Mn.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reMlRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nMull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizMeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiMon(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sMign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coMnst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecMtor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.Mz=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.McurveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=Ms,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoMr(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return Mnew n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrMain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striMng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightMness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigMht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrMoke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoMde==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,Mi,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squMare=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.Mlength-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,Ma,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heMight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(Me);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reMturn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*Mn._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+Me*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glMobalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeMOperation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n font-family: '${o}';\n src: url('${e}');\n }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=Mfunction(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rMand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEMxponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frMameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousMeY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoMn=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeMrmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
class ColMor{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=Mt+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==Me?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=Me[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roMtate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=Me.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geMtHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatMion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let Me=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampMlitude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shMuffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInMt(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puMsh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heMight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tMy,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vMelocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,Mthis._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),Mthis.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereMr.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendMerer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conMst HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(Me.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raMndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),Me.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leMt a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEMDIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lMayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=Mmap(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cMhromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),Md.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=McreateVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHMORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,MevolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControMller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourMglass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoMde||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lMayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiMon(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrMomTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
</script>
</body>
</html>hhex202f999ff8eab1a4bf972c7b0f7b12390ae35997c46d85b5b960ef045743cc92bfac0063036f7264010117746578742f68746d6c3b636861727365743d7574662d38004d08023c21444f43545950452068746d6c3e0a3c68746d6c206c616e673d22656e223e0a20203c686561643e0a202020203c7374796c653e0a2020202068746d6c2c20626f6479207b0a2020202020206d617267696e3a20303b0a20202020202070616464696e673a20303b0a202020207d0a2020202063616e766173207b0a202020202020646973706c61793a20626c6f636b3b0a202020207d0a202020203c2f7374796c653e0a202020203c6d65746120636861727365743d227574662d3822202f3e0a20203c2f686561643e0a20203c626f64793e0a202020203c6d61696e3e0a202020203c2f6d61696e3e0a202020203c7363726970743e0a202020206c657420736565643d77696e646f772e6c6f636174696f6e2e687265662e73706c697428272f27292e66696e6428743d3e742e696e636c75646573282769302729293b0a0a202020206966202873656564203d3d206e756c6c29207b2020202020200a20202020202073656564203d206e65772055524c536561726368506172616d732877696e646f772e6c6f636174696f6e2e736561726368292e67657428227365656422293b0a202020207d20656c7365207b0a2020202020206c6574207061747465726e203d2022736565643d223b0a202020202020666f72286c65742069203d20303b2069203c20736565642e6c656e677468202d207061747465726e2e6c656e6774683b204d08022b2b6929207b0a202020202020202069662028736565642e737562737472696e6728692c2069202b207061747465726e2e6c656e67746829203d3d207061747465726e29207b0a2020202020202020202073656564203d20736565642e737562737472696e672869202b207061747465726e2e6c656e677468293b0a20202020202020202020627265616b3b0a20202020202020207d0a2020202020207d0a202020207d0a0a2020202066756e6374696f6e2063797262313238282429207b0a2020202020206c6574205f203d20313737393033333730332c2075203d20333134343133343237372c2069203d20313031333930343234322c206c203d20323737333438303736323b0a202020202020666f7220286c6574206e203d20302c20723b206e203c20242e6c656e6774683b206e2b2b29205f203d2075205e204d6174682e696d756c285f205e202872203d20242e63686172436f64654174286e29292c20353937333939303637292c2075203d2069205e204d6174682e696d756c2875205e20722c2032383639383630323333292c2069203d206c205e204d6174682e696d756c2869205e20722c20393531323734323133292c206c203d205f205e204d6174682e696d756c286c205e20722c2032373136303434313739293b0a20202020202072657475726e205f203d204d6174682e696d756c2869205e205f203e3e3e2031382c4d080220353937333939303637292c2075203d204d6174682e696d756c286c205e2075203e3e3e2032322c2032383639383630323333292c2069203d204d6174682e696d756c285f205e2069203e3e3e2031372c20393531323734323133292c206c203d204d6174682e696d756c2875205e206c203e3e3e2031392c2032373136303434313739292c205b285f205e2075205e2069205e206c29203e3e3e20302c202875205e205f29203e3e3e20302c202869205e205f29203e3e3e20302c20286c205e205f29203e3e3e20305d0a202020207d0a0a2020202066756e6374696f6e20736663333228242c205f2c20752c206929207b0a20202020202072657475726e2066756e6374696f6e202829207b0a202020202020202075203e3e3e3d20302c2069203e3e3e3d20303b0a2020202020202020766172206c203d202824203e3e3e3d203029202b20285f203e3e3e3d203029207c20303b0a202020202020202072657475726e2024203d205f205e205f203e3e3e20392c205f203d2075202b202875203c3c203329207c20302c2075203d202875203d2075203c3c203231207c2075203e3e3e20313129202b20286c203d206c202b202869203d2069202b2031207c203029207c203029207c20302c20286c203e3e3e203029202f20343239343936373239360a2020202020207d0a202020207d0a0a202020206c6574206d61746852616e64203d4d0802207366633332282e2e2e63797262313238287365656429293b0a0a202020206c657420703573656564203d204d6174682e666c6f6f72286d61746852616e642829202a204e756d6265722e4d41585f534146455f494e5445474552293b0a0a2166756e6374696f6e28722c65297b226f626a656374223d3d747970656f66206578706f727473262622756e646566696e656422213d747970656f66206d6f64756c653f6d6f64756c652e6578706f7274733d6528293a2266756e6374696f6e223d3d747970656f6620646566696e652626646566696e652e616d643f646566696e652865293a28723d22756e646566696e656422213d747970656f6620676c6f62616c546869733f676c6f62616c546869733a727c7c73656c66292e6368726f6d613d6528297d28746869732c66756e6374696f6e28297b2275736520737472696374223b666f722876617220723d66756e6374696f6e28722c652c74297b72657475726e20766f696420303d3d3d65262628653d30292c766f696420303d3d3d74262628743d31292c723c653f653a723e743f743a727d2c653d722c743d7b7d2c6e3d302c613d5b22426f6f6c65616e222c224e756d626572222c22537472696e67222c2246756e6374696f6e222c224172726179222c2244617465222c22526567457870222c22556e646566696e6564222c224e756c6c225d3b6e3c612e6c656e6774683b6e4d08022b3d31297b76617220663d615b6e5d3b745b225b6f626a65637420222b662b225d225d3d662e746f4c6f7765724361736528297d766172206f3d66756e6374696f6e2872297b72657475726e20745b4f626a6563742e70726f746f747970652e746f537472696e672e63616c6c2872295d7c7c226f626a656374227d2c633d6f2c753d6f2c693d4d6174682e50492c6c3d7b636c69705f7267623a66756e6374696f6e2872297b722e5f636c69707065643d21312c722e5f756e636c69707065643d722e736c6963652830293b666f722876617220743d303b743c3d333b742b2b29743c333f2828725b745d3c307c7c725b745d3e32353529262628722e5f636c69707065643d2130292c725b745d3d6528725b745d2c302c32353529293a333d3d3d74262628725b745d3d6528725b745d2c302c3129293b72657475726e20727d2c6c696d69743a722c747970653a6f2c756e7061636b3a66756e6374696f6e28722c65297b72657475726e20766f696420303d3d3d65262628653d6e756c6c292c722e6c656e6774683e3d333f41727261792e70726f746f747970652e736c6963652e63616c6c2872293a226f626a656374223d3d6328725b305d292626653f652e73706c6974282222292e66696c7465722866756e6374696f6e2865297b72657475726e20766f69642030213d3d725b305d5b655d7d292e6d61702866756e6374696f6e284d080265297b72657475726e20725b305d5b655d7d293a725b305d7d2c6c6173743a66756e6374696f6e2872297b696628722e6c656e6774683c322972657475726e206e756c6c3b76617220653d722e6c656e6774682d313b72657475726e22737472696e67223d3d7528725b655d293f725b655d2e746f4c6f7765724361736528293a6e756c6c7d2c50493a692c54574f50493a322a692c504954484952443a692f332c444547325241443a692f3138302c524144324445473a3138302f697d2c643d7b666f726d61743a7b7d2c6175746f6465746563743a5b5d7d2c683d6c2e6c6173742c623d6c2e636c69705f7267622c733d6c2e747970652c703d642c673d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628226f626a656374223d3d3d7328725b305d292626725b305d2e636f6e7374727563746f722626725b305d2e636f6e7374727563746f723d3d3d746869732e636f6e7374727563746f722972657475726e20725b305d3b76617220743d682872292c6e3d21313b6966282174297b6e3d21302c702e736f727465647c7c28702e6175746f6465746563743d702e6175746f6465746563742e736f72742866756e6374696f6e28722c65297b72657475726e20652e702d722e707d292c702e736f727465644d08023d2130293b666f722876617220613d302c663d702e6175746f6465746563743b613c662e6c656e6774683b612b3d31297b766172206f3d665b615d3b696628743d6f2e746573742e6170706c79286f2c722929627265616b7d7d69662821702e666f726d61745b745d297468726f77206e6577204572726f722822756e6b6e6f776e20666f726d61743a20222b72293b76617220633d702e666f726d61745b745d2e6170706c79286e756c6c2c6e3f723a722e736c69636528302c2d3129293b746869732e5f7267623d622863292c333d3d3d746869732e5f7267622e6c656e6774682626746869732e5f7267622e707573682831297d3b672e70726f746f747970652e746f537472696e673d66756e6374696f6e28297b72657475726e2266756e6374696f6e223d3d7328746869732e686578293f746869732e68657828293a225b222b746869732e5f7267622e6a6f696e28222c22292b225d227d3b76617220763d672c793d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c7928792e436f6c6f722c5b6e756c6c5d2e636f6e63617428722929297d3b792e436f6c6f723d762c792e76657273696f6e3d22322e342e4d080232223b766172206d3d792c6b3d6c2e756e7061636b2c773d4d6174682e6d61782c4d3d6c2e756e7061636b2c5f3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d4d28722c22636d796b2229295b305d2c6e3d725b315d2c613d725b325d2c663d725b335d2c6f3d722e6c656e6774683e343f725b345d3a313b72657475726e20313d3d3d663f5b302c302c302c6f5d3a5b743e3d313f303a3235352a28312d74292a28312d66292c6e3e3d313f303a3235352a28312d6e292a28312d66292c613e3d313f303a3235352a28312d61292a28312d66292c6f5d7d2c4e3d6d2c463d762c783d642c503d6c2e756e7061636b2c523d6c2e747970652c473d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d6b28722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d312d77286e2f3d3235352c7728612f3d3235352c662f3d32353529292c633d6f3c313f312f28312d6f293a303b72657475726e5b28312d6e2d6f292a632c28312d612d6f292a632c28312d662d6f292a632c6f5d7d3b462e70726f746f747970652e636d796b3d66754d08026e6374696f6e28297b72657475726e204728746869732e5f726762297d2c4e2e636d796b3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c7928462c5b6e756c6c5d2e636f6e63617428722c5b22636d796b225d2929297d2c782e666f726d61742e636d796b3d5f2c782e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d5028722c22636d796b22292c226172726179223d3d3d522872292626343d3d3d722e6c656e6774682972657475726e22636d796b227d7d293b766172206a3d6c2e756e7061636b2c453d6c2e6c6173742c4f3d66756e6374696f6e2872297b72657475726e204d6174682e726f756e64283130302a72292f3130307d2c713d6c2e756e7061636b2c423d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d7128722c22726762612229295b305d2c6e4d08023d725b315d2c613d725b325d3b742f3d3235352c6e2f3d3235352c612f3d3235353b76617220662c6f2c633d4d6174682e6d696e28742c6e2c61292c753d4d6174682e6d617828742c6e2c61292c693d28752b63292f323b72657475726e20753d3d3d633f28663d302c6f3d4e756d6265722e4e614e293a663d693c2e353f28752d63292f28752b63293a28752d63292f28322d752d63292c743d3d753f6f3d286e2d61292f28752d63293a6e3d3d753f6f3d322b28612d74292f28752d63293a613d3d752626286f3d342b28742d6e292f28752d6329292c286f2a3d3630293c302626286f2b3d333630292c722e6c656e6774683e332626766f69642030213d3d725b335d3f5b6f2c662c692c725b335d5d3a5b6f2c662c695d7d2c493d6c2e756e7061636b2c413d6c2e6c6173742c443d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d6a28722c2268736c6122292c6e3d452872297c7c226c7361223b72657475726e20745b305d3d4f28745b305d7c7c30292c745b315d3d4f283130302a745b315d292b2225222c745b325d3d4f283130302a745b325d292b2225222c2268736c61223d3d3d6e7c7c742e6c656e6774683e332626745b335d3c313f28745b335d3d742e6c656e6774683e333f745b4d0802335d3a312c6e3d2268736c6122293a742e6c656e6774683d332c6e2b2228222b742e6a6f696e28222c22292b2229227d2c433d422c593d4d6174682e726f756e642c533d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d4928722c227267626122292c6e3d412872297c7c22726762223b72657475726e2268736c223d3d6e2e73756273747228302c33293f4428432874292c6e293a28745b305d3d5928745b305d292c745b315d3d5928745b315d292c745b325d3d5928745b325d292c282272676261223d3d3d6e7c7c742e6c656e6774683e332626745b335d3c3129262628745b335d3d742e6c656e6774683e333f745b335d3a312c6e3d227267626122292c6e2b2228222b742e736c69636528302c22726762223d3d3d6e3f333a34292e6a6f696e28222c22292b222922297d2c4c3d6c2e756e7061636b2c243d4d6174682e726f756e642c543d66756e6374696f6e28297b666f722876617220722c653d5b5d2c743d617267756d656e74732e6c656e6774683b742d2d3b29655b745d3d617267756d656e74735b745d3b766172206e2c612c662c6f3d28653d4c28652c2268736c2229295b305d2c633d655b315d2c753d655b325d3b696628303d3d3d63296e3d613d663d3235352a753b656c734d0802657b76617220693d5b302c302c305d2c6c3d5b302c302c305d2c643d753c2e353f752a28312b63293a752b632d752a632c683d322a752d642c623d6f2f3336303b695b305d3d622b312f332c695b315d3d622c695b325d3d622d312f333b666f722876617220733d303b733c333b732b2b29695b735d3c30262628695b735d2b3d31292c695b735d3e31262628695b735d2d3d31292c362a695b735d3c313f6c5b735d3d682b362a28642d68292a695b735d3a322a695b735d3c313f6c5b735d3d643a332a695b735d3c323f6c5b735d3d682b28642d68292a28322f332d695b735d292a363a6c5b735d3d683b6e3d28723d5b24283235352a6c5b305d292c24283235352a6c5b315d292c24283235352a6c5b325d295d295b305d2c613d725b315d2c663d725b325d7d72657475726e20652e6c656e6774683e333f5b6e2c612c662c655b335d5d3a5b6e2c612c662c315d7d2c4b3d542c573d642c583d2f5e7267625c285c732a282d3f5c642b292c5c732a282d3f5c642b295c732a2c5c732a282d3f5c642b295c732a5c29242f2c5a3d2f5e726762615c285c732a282d3f5c642b292c5c732a282d3f5c642b295c732a2c5c732a282d3f5c642b295c732a2c5c732a285b30315d7c5b30315d3f5c2e5c642b295c29242f2c483d2f5e7267625c285c732a282d3f5c642b283f3a5c2e5c642b293f29252c5c732a282d3f5c642b283f3a5c2e5c4d0802642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a5c29242f2c7a3d2f5e726762615c285c732a282d3f5c642b283f3a5c2e5c642b293f29252c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a285b30315d7c5b30315d3f5c2e5c642b295c29242f2c553d2f5e68736c5c285c732a282d3f5c642b283f3a5c2e5c642b293f292c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a5c29242f2c563d2f5e68736c615c285c732a282d3f5c642b283f3a5c2e5c642b293f292c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a285b30315d7c5b30315d3f5c2e5c642b295c29242f2c4a3d4d6174682e726f756e642c513d66756e6374696f6e2872297b76617220653b696628723d722e746f4c6f7765724361736528292e7472696d28292c572e666f726d61742e6e616d6564297472797b72657475726e20572e666f726d61742e6e616d65642872297d63617463682872297b7d696628653d722e6d61746368285829297b666f722876617220743d652e736c69636528312c34292c6e3d303b6e3c333b6e2b2b29745b6e5d3d2b745b6e5d3b72657475726e4d080220745b335d3d312c747d696628653d722e6d61746368285a29297b666f722876617220613d652e736c69636528312c35292c663d303b663c343b662b2b29615b665d3d2b615b665d3b72657475726e20617d696628653d722e6d61746368284829297b666f7228766172206f3d652e736c69636528312c34292c633d303b633c333b632b2b296f5b635d3d4a28322e35352a6f5b635d293b72657475726e206f5b335d3d312c6f7d696628653d722e6d61746368287a29297b666f722876617220753d652e736c69636528312c35292c693d303b693c333b692b2b29755b695d3d4a28322e35352a755b695d293b72657475726e20755b335d3d2b755b335d2c757d696628653d722e6d61746368285529297b766172206c3d652e736c69636528312c34293b6c5b315d2a3d2e30312c6c5b325d2a3d2e30313b76617220643d4b286c293b72657475726e20645b335d3d312c647d696628653d722e6d61746368285629297b76617220683d652e736c69636528312c34293b685b315d2a3d2e30312c685b325d2a3d2e30313b76617220623d4b2868293b72657475726e20625b335d3d2b655b345d2c627d7d3b512e746573743d66756e6374696f6e2872297b72657475726e20582e746573742872297c7c5a2e746573742872297c7c482e746573742872297c7c7a2e746573742872297c7c552e746573742872297c7c562e746573742872294d08027d3b7661722072723d6d2c65723d762c74723d642c6e723d6c2e747970652c61723d532c66723d513b65722e70726f746f747970652e6373733d66756e6374696f6e2872297b72657475726e20617228746869732e5f7267622c72297d2c72722e6373733d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792865722c5b6e756c6c5d2e636f6e63617428722c5b22637373225d2929297d2c74722e666f726d61742e6373733d66722c74722e6175746f6465746563742e70757368287b703a352c746573743a66756e6374696f6e2872297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774682d313b742d2d203e303b29655b745d3d617267756d656e74735b742b315d3b69662821652e6c656e677468262622737472696e67223d3d3d6e72287229262666722e746573742872292972657475726e22637373227d7d293b766172206f723d762c63723d6d2c75723d6c2e756e7061636b3b642e666f726d61742e676c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d4d08023b76617220743d757228722c227267626122293b72657475726e20745b305d2a3d3235352c745b315d2a3d3235352c745b325d2a3d3235352c747d2c63722e676c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79286f722c5b6e756c6c5d2e636f6e63617428722c5b22676c225d2929297d2c6f722e70726f746f747970652e676c3d66756e6374696f6e28297b76617220723d746869732e5f7267623b72657475726e5b725b305d2f3235352c725b315d2f3235352c725b325d2f3235352c725b335d5d7d3b7661722069723d6c2e756e7061636b2c6c723d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e3d697228722c2272676222292c613d6e5b305d2c663d6e5b315d2c6f3d6e5b325d2c633d4d6174682e6d696e28612c662c6f292c753d4d6174682e6d617828612c662c6f292c693d752d632c6c3d3130302a692f3235352c643d632f283235352d69292a3130303b72657475726e20303d3d3d693f743d4e756d6265722e4e614e3a28613d3d3d75262628743d4d080228662d6f292f69292c663d3d3d75262628743d322b286f2d61292f69292c6f3d3d3d75262628743d342b28612d66292f69292c28742a3d3630293c30262628742b3d33363029292c5b742c6c2c645d7d2c64723d6c2e756e7061636b2c68723d4d6174682e666c6f6f722c62723d66756e6374696f6e28297b666f722876617220722c652c742c6e2c612c662c6f3d5b5d2c633d617267756d656e74732e6c656e6774683b632d2d3b296f5b635d3d617267756d656e74735b635d3b76617220752c692c6c2c643d286f3d6472286f2c226863672229295b305d2c683d6f5b315d2c623d6f5b325d3b622a3d3235353b76617220733d3235352a683b696628303d3d3d6829753d693d6c3d623b656c73657b3336303d3d3d64262628643d30292c643e333630262628642d3d333630292c643c30262628642b3d333630293b76617220703d687228642f3d3630292c673d642d702c763d622a28312d68292c793d762b732a28312d67292c6d3d762b732a672c6b3d762b733b7377697463682870297b6361736520303a753d28723d5b6b2c6d2c765d295b305d2c693d725b315d2c6c3d725b325d3b627265616b3b6361736520313a753d28653d5b792c6b2c765d295b305d2c693d655b315d2c6c3d655b325d3b627265616b3b6361736520323a753d28743d5b762c6b2c6d5d295b305d2c693d745b315d2c6c3d745b325d3b627265616b3b634d080261736520333a753d286e3d5b762c792c6b5d295b305d2c693d6e5b315d2c6c3d6e5b325d3b627265616b3b6361736520343a753d28613d5b6d2c762c6b5d295b305d2c693d615b315d2c6c3d615b325d3b627265616b3b6361736520353a753d28663d5b6b2c762c795d295b305d2c693d665b315d2c6c3d665b325d7d7d72657475726e5b752c692c6c2c6f2e6c656e6774683e333f6f5b335d3a315d7d2c73723d6c2e756e7061636b2c70723d6c2e747970652c67723d6d2c76723d762c79723d642c6d723d6c723b76722e70726f746f747970652e6863673d66756e6374696f6e28297b72657475726e206d7228746869732e5f726762297d2c67722e6863673d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792876722c5b6e756c6c5d2e636f6e63617428722c5b22686367225d2929297d2c79722e666f726d61742e6863673d62722c79722e6175746f6465746563742e70757368287b703a312c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d737228722c224d080268636722292c226172726179223d3d3d70722872292626333d3d3d722e6c656e6774682972657475726e22686367227d7d293b766172206b723d6c2e756e7061636b2c77723d6c2e6c6173742c4d723d4d6174682e726f756e642c5f723d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d6b7228722c227267626122292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d745b335d2c633d77722872297c7c226175746f223b766f696420303d3d3d6f2626286f3d31292c226175746f223d3d3d63262628633d6f3c313f2272676261223a2272676222293b76617220753d22303030303030222b28286e3d4d72286e29293c3c31367c28613d4d72286129293c3c387c28663d4d7228662929292e746f537472696e67283136293b753d752e73756273747228752e6c656e6774682d36293b76617220693d2230222b4d72283235352a6f292e746f537472696e67283136293b73776974636828693d692e73756273747228692e6c656e6774682d32292c632e746f4c6f776572436173652829297b636173652272676261223a72657475726e2223222b752b693b636173652261726762223a72657475726e2223222b692b753b64656661756c743a72657475726e2223222b757d7d2c4e723d2f4d08025e233f285b412d46612d66302d395d7b367d7c5b412d46612d66302d395d7b337d29242f2c46723d2f5e233f285b412d46612d66302d395d7b387d7c5b412d46612d66302d395d7b347d29242f2c78723d66756e6374696f6e2872297b696628722e6d61746368284e7229297b34213d3d722e6c656e677468262637213d3d722e6c656e6774687c7c28723d722e737562737472283129292c333d3d3d722e6c656e677468262628723d28723d722e73706c697428222229295b305d2b725b305d2b725b315d2b725b315d2b725b325d2b725b325d293b76617220653d7061727365496e7428722c3136293b72657475726e5b653e3e31362c653e3e38263235352c32353526652c315d7d696628722e6d6174636828467229297b35213d3d722e6c656e677468262639213d3d722e6c656e6774687c7c28723d722e737562737472283129292c343d3d3d722e6c656e677468262628723d28723d722e73706c697428222229295b305d2b725b305d2b725b315d2b725b315d2b725b325d2b725b325d2b725b335d2b725b335d293b76617220743d7061727365496e7428722c3136293b72657475726e5b743e3e3234263235352c743e3e3136263235352c743e3e38263235352c4d6174682e726f756e6428283235352674292f3235352a313030292f3130305d7d7468726f77206e6577204572726f722822756e6b6e6f776e2068657820636f4d08026c6f723a20222b72297d2c50723d6d2c52723d762c47723d6c2e747970652c6a723d642c45723d5f723b52722e70726f746f747970652e6865783d66756e6374696f6e2872297b72657475726e20457228746869732e5f7267622c72297d2c50722e6865783d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792852722c5b6e756c6c5d2e636f6e63617428722c5b22686578225d2929297d2c6a722e666f726d61742e6865783d78722c6a722e6175746f6465746563742e70757368287b703a342c746573743a66756e6374696f6e2872297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774682d313b742d2d203e303b29655b745d3d617267756d656e74735b742b315d3b69662821652e6c656e677468262622737472696e67223d3d3d477228722926265b332c342c352c362c372c382c395d2e696e6465784f6628722e6c656e677468293e3d302972657475726e22686578227d7d293b766172204f723d6c2e756e7061636b2c71723d6c2e54574f50492c42723d4d6174682e6d696e2c49723d4d6174682e737172742c41723d4d6174682e61636f732c44723d66756e6374696f6e4d080228297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e3d4f7228722c2272676222292c613d6e5b305d2c663d6e5b315d2c6f3d6e5b325d2c633d427228612f3d3235352c662f3d3235352c6f2f3d323535292c753d28612b662b6f292f332c693d753e303f312d632f753a303b72657475726e20303d3d3d693f743d4e614e3a28743d28612d662b28612d6f29292f322c742f3d49722828612d66292a28612d66292b28612d6f292a28662d6f29292c743d41722874292c6f3e66262628743d71722d74292c742f3d7172292c5b3336302a742c692c755d7d2c43723d6c2e756e7061636b2c59723d6c2e6c696d69742c53723d6c2e54574f50492c4c723d6c2e504954484952442c24723d4d6174682e636f732c54723d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e2c612c663d28723d437228722c226873692229295b305d2c6f3d725b315d2c633d725b325d3b72657475726e2069734e614e286629262628663d30292c69734e614e286f292626286f3d30292c663e333630262628662d3d333630292c663c30262628662b3d333630292c28662f3d333630293c312f333f6e3d312d4d08022828613d28312d6f292f33292b28743d28312b6f2a24722853722a66292f2472284c722d53722a6629292f3329293a663c322f333f613d312d2828743d28312d6f292f33292b286e3d28312b6f2a24722853722a28662d3d312f3329292f2472284c722d53722a6629292f3329293a743d312d28286e3d28312d6f292f33292b28613d28312b6f2a24722853722a28662d3d322f3329292f2472284c722d53722a6629292f3329292c5b3235352a28743d597228632a742a3329292c3235352a286e3d597228632a6e2a3329292c3235352a28613d597228632a612a3329292c722e6c656e6774683e333f725b335d3a315d7d2c4b723d6c2e756e7061636b2c57723d6c2e747970652c58723d6d2c5a723d762c48723d642c7a723d44723b5a722e70726f746f747970652e6873693d66756e6374696f6e28297b72657475726e207a7228746869732e5f726762297d2c58722e6873693d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79285a722c5b6e756c6c5d2e636f6e63617428722c5b22687369225d2929297d2c48722e666f726d61742e6873693d54722c48722e6175746f6465746563742e70757368287b704d08023a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d4b7228722c2268736922292c226172726179223d3d3d57722872292626333d3d3d722e6c656e6774682972657475726e22687369227d7d293b7661722055723d6c2e756e7061636b2c56723d6c2e747970652c4a723d6d2c51723d762c72653d642c65653d423b51722e70726f746f747970652e68736c3d66756e6374696f6e28297b72657475726e20656528746869732e5f726762297d2c4a722e68736c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792851722c5b6e756c6c5d2e636f6e63617428722c5b2268736c225d2929297d2c72652e666f726d61742e68736c3d542c72652e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d557228722c2268736c22292c226172726179223d3d3d56722872294d08022626333d3d3d722e6c656e6774682972657475726e2268736c227d7d293b7661722074653d6c2e756e7061636b2c6e653d4d6174682e6d696e2c61653d4d6174682e6d61782c66653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e2c612c663d28723d746528722c227267622229295b305d2c6f3d725b315d2c633d725b325d2c753d6e6528662c6f2c63292c693d616528662c6f2c63292c6c3d692d753b72657475726e20613d692f3235352c303d3d3d693f28743d4e756d6265722e4e614e2c6e3d30293a286e3d6c2f692c663d3d3d69262628743d286f2d63292f6c292c6f3d3d3d69262628743d322b28632d66292f6c292c633d3d3d69262628743d342b28662d6f292f6c292c28742a3d3630293c30262628742b3d33363029292c5b742c6e2c615d7d2c6f653d6c2e756e7061636b2c63653d4d6174682e666c6f6f722c75653d66756e6374696f6e28297b666f722876617220722c652c742c6e2c612c662c6f3d5b5d2c633d617267756d656e74732e6c656e6774683b632d2d3b296f5b635d3d617267756d656e74735b635d3b76617220752c692c6c2c643d286f3d6f65286f2c226873762229295b305d2c683d6f5b315d2c623d6f5b325d3b696628622a3d3235352c303d3d3d68294d0802753d693d6c3d623b656c73657b3336303d3d3d64262628643d30292c643e333630262628642d3d333630292c643c30262628642b3d333630293b76617220733d636528642f3d3630292c703d642d732c673d622a28312d68292c763d622a28312d682a70292c793d622a28312d682a28312d7029293b7377697463682873297b6361736520303a753d28723d5b622c792c675d295b305d2c693d725b315d2c6c3d725b325d3b627265616b3b6361736520313a753d28653d5b762c622c675d295b305d2c693d655b315d2c6c3d655b325d3b627265616b3b6361736520323a753d28743d5b672c622c795d295b305d2c693d745b315d2c6c3d745b325d3b627265616b3b6361736520333a753d286e3d5b672c762c625d295b305d2c693d6e5b315d2c6c3d6e5b325d3b627265616b3b6361736520343a753d28613d5b792c672c625d295b305d2c693d615b315d2c6c3d615b325d3b627265616b3b6361736520353a753d28663d5b622c672c765d295b305d2c693d665b315d2c6c3d665b325d7d7d72657475726e5b752c692c6c2c6f2e6c656e6774683e333f6f5b335d3a315d7d2c69653d6c2e756e7061636b2c6c653d6c2e747970652c64653d6d2c68653d762c62653d642c73653d66653b68652e70726f746f747970652e6873763d66756e6374696f6e28297b72657475726e20736528746869732e5f726762297d2c64652e6873763d4d080266756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792868652c5b6e756c6c5d2e636f6e63617428722c5b22687376225d2929297d2c62652e666f726d61742e6873763d75652c62652e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d696528722c2268737622292c226172726179223d3d3d6c652872292626333d3d3d722e6c656e6774682972657475726e22687376227d7d293b7661722070653d7b4b6e3a31382c586e3a2e39353034372c596e3a312c5a6e3a312e30383838332c74303a2e3133373933313033342c74313a2e3230363839363535322c74323a2e31323834313835352c74333a2e3030383835363435327d2c67653d70652c76653d6c2e756e7061636b2c79653d4d6174682e706f772c6d653d66756e6374696f6e2872297b72657475726e28722f3d323535293c3d2e30343034353f722f31322e39323a79652828722b2e303535292f312e3035352c322e34297d2c6b653d66756e6374696f6e284d080272297b72657475726e20723e67652e74333f796528722c312f33293a722f67652e74322b67652e74307d2c77653d66756e6374696f6e28722c652c74297b72657475726e20723d6d652872292c653d6d652865292c743d6d652874292c5b6b6528282e343132343536342a722b2e333537353736312a652b2e313830343337352a74292f67652e586e292c6b6528282e323132363732392a722b2e373135313532322a652b2e3037323137352a74292f67652e596e292c6b6528282e303139333333392a722b2e3131393139322a652b2e393530333034312a74292f67652e5a6e295d7d2c4d653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d766528722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d7765286e2c612c66292c633d6f5b305d2c753d6f5b315d2c693d3131362a752d31363b72657475726e5b693c303f303a692c3530302a28632d75292c3230302a28752d6f5b325d295d7d2c5f653d70652c4e653d6c2e756e7061636b2c46653d4d6174682e706f772c78653d66756e6374696f6e2872297b72657475726e203235352a28723c3d2e30303330343f31322e39322a723a312e3035352a466528722c312f322e34292d2e303535297d2c50653d66756e4d08026374696f6e2872297b72657475726e20723e5f652e74313f722a722a723a5f652e74322a28722d5f652e7430297d2c52653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e2c612c663d28723d4e6528722c226c61622229295b305d2c6f3d725b315d2c633d725b325d3b72657475726e206e3d28662b3136292f3131362c743d69734e614e286f293f6e3a6e2b6f2f3530302c613d69734e614e2863293f6e3a6e2d632f3230302c6e3d5f652e596e2a5065286e292c743d5f652e586e2a50652874292c613d5f652e5a6e2a50652861292c5b786528332e323430343534322a742d312e353337313338352a6e2d2e343938353331342a61292c7865282d2e3936393236362a742b312e383736303130382a6e2b2e3034313535362a61292c7865282e303535363433342a742d2e323034303235392a6e2b312e303537323235322a61292c722e6c656e6774683e333f725b335d3a315d7d2c47653d6c2e756e7061636b2c6a653d6c2e747970652c45653d6d2c4f653d762c71653d642c42653d4d653b4f652e70726f746f747970652e6c61623d66756e6374696f6e28297b72657475726e20426528746869732e5f726762297d2c45652e6c61623d66756e6374696f6e28297b666f722876617220724d08023d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79284f652c5b6e756c6c5d2e636f6e63617428722c5b226c6162225d2929297d2c71652e666f726d61742e6c61623d52652c71652e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d476528722c226c616222292c226172726179223d3d3d6a652872292626333d3d3d722e6c656e6774682972657475726e226c6162227d7d293b7661722049653d6c2e756e7061636b2c41653d6c2e524144324445472c44653d4d6174682e737172742c43653d4d6174682e6174616e322c59653d4d6174682e726f756e642c53653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d496528722c226c616222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d446528612a612b662a66292c633d28436528662c61292a41652b33363029253336303b72657475726e20303d3d3d59654d0802283165342a6f29262628633d4e756d6265722e4e614e292c5b6e2c6f2c635d7d2c4c653d6c2e756e7061636b2c24653d4d652c54653d53652c4b653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d4c6528722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d2465286e2c612c66292c633d6f5b305d2c753d6f5b315d2c693d6f5b325d3b72657475726e20546528632c752c69297d2c57653d6c2e756e7061636b2c58653d6c2e444547325241442c5a653d4d6174682e73696e2c48653d4d6174682e636f732c7a653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d576528722c226c636822292c6e3d745b305d2c613d745b315d2c663d745b325d3b72657475726e2069734e614e286629262628663d30292c5b6e2c486528662a3d5865292a612c5a652866292a615d7d2c55653d6c2e756e7061636b2c56653d7a652c4a653d52652c51653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d4d080228723d556528722c226c63682229295b305d2c6e3d725b315d2c613d725b325d2c663d566528742c6e2c61292c6f3d665b305d2c633d665b315d2c753d665b325d2c693d4a65286f2c632c75293b72657475726e5b695b305d2c695b315d2c695b325d2c722e6c656e6774683e333f725b335d3a315d7d2c72743d6c2e756e7061636b2c65743d51652c74743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d727428722c2268636c22292e7265766572736528293b72657475726e2065742e6170706c7928766f696420302c74297d2c6e743d6c2e756e7061636b2c61743d6c2e747970652c66743d6d2c6f743d762c63743d642c75743d4b653b6f742e70726f746f747970652e6c63683d66756e6374696f6e28297b72657475726e20757428746869732e5f726762297d2c6f742e70726f746f747970652e68636c3d66756e6374696f6e28297b72657475726e20757428746869732e5f726762292e7265766572736528297d2c66742e6c63683d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62694d08026e642e6170706c79286f742c5b6e756c6c5d2e636f6e63617428722c5b226c6368225d2929297d2c66742e68636c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79286f742c5b6e756c6c5d2e636f6e63617428722c5b2268636c225d2929297d2c63742e666f726d61742e6c63683d51652c63742e666f726d61742e68636c3d74742c5b226c6368222c2268636c225d2e666f72456163682866756e6374696f6e2872297b72657475726e2063742e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774683b742d2d3b29655b745d3d617267756d656e74735b745d3b696628653d6e7428652c72292c226172726179223d3d3d61742865292626333d3d3d652e6c656e6774682972657475726e20727d7d297d293b7661722069743d642c6c743d6c2e747970652c64743d7b616c696365626c75653a2223663066386666222c616e746971756577686974653a2223666165626437222c617175613a2223303066666666222c617175616d6172696e653a2223376666666434222c617a7572653a4d08022223663066666666222c62656967653a2223663566356463222c6269737175653a2223666665346334222c626c61636b3a2223303030303030222c626c616e63686564616c6d6f6e643a2223666665626364222c626c75653a2223303030306666222c626c756576696f6c65743a2223386132626532222c62726f776e3a2223613532613261222c6275726c79776f6f643a2223646562383837222c6361646574626c75653a2223356639656130222c636861727472657573653a2223376666663030222c63686f636f6c6174653a2223643236393165222c636f72616c3a2223666637663530222c636f726e666c6f7765723a2223363439356564222c636f726e666c6f776572626c75653a2223363439356564222c636f726e73696c6b3a2223666666386463222c6372696d736f6e3a2223646331343363222c6379616e3a2223303066666666222c6461726b626c75653a2223303030303862222c6461726b6379616e3a2223303038623862222c6461726b676f6c64656e726f643a2223623838363062222c6461726b677261793a2223613961396139222c6461726b677265656e3a2223303036343030222c6461726b677265793a2223613961396139222c6461726b6b68616b693a2223626462373662222c6461726b6d6167656e74613a2223386230303862222c6461726b6f6c697665677265656e3a2223353536623266222c64614d0802726b6f72616e67653a2223666638633030222c6461726b6f72636869643a2223393933326363222c6461726b7265643a2223386230303030222c6461726b73616c6d6f6e3a2223653939363761222c6461726b736561677265656e3a2223386662633866222c6461726b736c617465626c75653a2223343833643862222c6461726b736c617465677261793a2223326634663466222c6461726b736c617465677265793a2223326634663466222c6461726b74757271756f6973653a2223303063656431222c6461726b76696f6c65743a2223393430306433222c6465657070696e6b3a2223666631343933222c64656570736b79626c75653a2223303062666666222c64696d677261793a2223363936393639222c64696d677265793a2223363936393639222c646f64676572626c75653a2223316539306666222c66697265627269636b3a2223623232323232222c666c6f72616c77686974653a2223666666616630222c666f72657374677265656e3a2223323238623232222c667563687369613a2223666630306666222c6761696e73626f726f3a2223646364636463222c67686f737477686974653a2223663866386666222c676f6c643a2223666664373030222c676f6c64656e726f643a2223646161353230222c677261793a2223383038303830222c677265656e3a2223303038303030222c677265656e79656c6c6f773a22234d0802616466663266222c677265793a2223383038303830222c686f6e65796465773a2223663066666630222c686f7470696e6b3a2223666636396234222c696e6469616e7265643a2223636435633563222c696e6469676f3a2223346230303832222c69766f72793a2223666666666630222c6b68616b693a2223663065363863222c6c617365726c656d6f6e3a2223666666663534222c6c6176656e6465723a2223653665366661222c6c6176656e646572626c7573683a2223666666306635222c6c61776e677265656e3a2223376366633030222c6c656d6f6e63686966666f6e3a2223666666616364222c6c69676874626c75653a2223616464386536222c6c69676874636f72616c3a2223663038303830222c6c696768746379616e3a2223653066666666222c6c69676874676f6c64656e726f643a2223666166616432222c6c69676874676f6c64656e726f6479656c6c6f773a2223666166616432222c6c69676874677261793a2223643364336433222c6c69676874677265656e3a2223393065653930222c6c69676874677265793a2223643364336433222c6c6967687470696e6b3a2223666662366331222c6c6967687473616c6d6f6e3a2223666661303761222c6c69676874736561677265656e3a2223323062326161222c6c69676874736b79626c75653a2223383763656661222c6c69676874736c617465677261793a22234d0802373738383939222c6c69676874736c617465677265793a2223373738383939222c6c69676874737465656c626c75653a2223623063346465222c6c6967687479656c6c6f773a2223666666666530222c6c696d653a2223303066663030222c6c696d65677265656e3a2223333263643332222c6c696e656e3a2223666166306536222c6d6167656e74613a2223666630306666222c6d61726f6f6e3a2223383030303030222c6d61726f6f6e323a2223376630303030222c6d61726f6f6e333a2223623033303630222c6d656469756d617175616d6172696e653a2223363663646161222c6d656469756d626c75653a2223303030306364222c6d656469756d6f72636869643a2223626135356433222c6d656469756d707572706c653a2223393337306462222c6d656469756d736561677265656e3a2223336362333731222c6d656469756d736c617465626c75653a2223376236386565222c6d656469756d737072696e67677265656e3a2223303066613961222c6d656469756d74757271756f6973653a2223343864316363222c6d656469756d76696f6c65747265643a2223633731353835222c6d69646e69676874626c75653a2223313931393730222c6d696e74637265616d3a2223663566666661222c6d69737479726f73653a2223666665346531222c6d6f63636173696e3a2223666665346235222c6e6176616a6f77686974654d08023a2223666664656164222c6e6176793a2223303030303830222c6f6c646c6163653a2223666466356536222c6f6c6976653a2223383038303030222c6f6c697665647261623a2223366238653233222c6f72616e67653a2223666661353030222c6f72616e67657265643a2223666634353030222c6f72636869643a2223646137306436222c70616c65676f6c64656e726f643a2223656565386161222c70616c65677265656e3a2223393866623938222c70616c6574757271756f6973653a2223616665656565222c70616c6576696f6c65747265643a2223646237303933222c706170617961776869703a2223666665666435222c7065616368707566663a2223666664616239222c706572753a2223636438353366222c70696e6b3a2223666663306362222c706c756d3a2223646461306464222c706f77646572626c75653a2223623065306536222c707572706c653a2223383030303830222c707572706c65323a2223376630303766222c707572706c65333a2223613032306630222c72656265636361707572706c653a2223363633333939222c7265643a2223666630303030222c726f737962726f776e3a2223626338663866222c726f79616c626c75653a2223343136396531222c736164646c6562726f776e3a2223386234353133222c73616c6d6f6e3a2223666138303732222c73616e647962726f776e3a2223663461344d08023630222c736561677265656e3a2223326538623537222c7365617368656c6c3a2223666666356565222c7369656e6e613a2223613035323264222c73696c7665723a2223633063306330222c736b79626c75653a2223383763656562222c736c617465626c75653a2223366135616364222c736c617465677261793a2223373038303930222c736c617465677265793a2223373038303930222c736e6f773a2223666666616661222c737072696e67677265656e3a2223303066663766222c737465656c626c75653a2223343638326234222c74616e3a2223643262343863222c7465616c3a2223303038303830222c74686973746c653a2223643862666438222c746f6d61746f3a2223666636333437222c74757271756f6973653a2223343065306430222c76696f6c65743a2223656538326565222c77686561743a2223663564656233222c77686974653a2223666666666666222c7768697465736d6f6b653a2223663566356635222c79656c6c6f773a2223666666663030222c79656c6c6f77677265656e3a2223396163643332227d2c68743d78722c62743d5f723b762e70726f746f747970652e6e616d653d66756e6374696f6e28297b666f722876617220723d627428746869732e5f7267622c2272676222292c653d302c743d4f626a6563742e6b657973286474293b653c742e6c656e6774683b652b3d31297b766172206e3d4d0802745b655d3b69662864745b6e5d3d3d3d722972657475726e206e2e746f4c6f7765724361736528297d72657475726e20727d2c69742e666f726d61742e6e616d65643d66756e6374696f6e2872297b696628723d722e746f4c6f7765724361736528292c64745b725d2972657475726e2068742864745b725d293b7468726f77206e6577204572726f722822756e6b6e6f776e20636f6c6f72206e616d653a20222b72297d2c69742e6175746f6465746563742e70757368287b703a352c746573743a66756e6374696f6e2872297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774682d313b742d2d203e303b29655b745d3d617267756d656e74735b742b315d3b69662821652e6c656e677468262622737472696e67223d3d3d6c74287229262664745b722e746f4c6f7765724361736528295d2972657475726e226e616d6564227d7d293b7661722073743d6c2e756e7061636b2c70743d6c2e747970652c67743d66756e6374696f6e2872297b696628226e756d626572223d3d70742872292626723e3d302626723c3d31363737373231352972657475726e5b723e3e31362c723e3e38263235352c32353526722c315d3b7468726f77206e6577204572726f722822756e6b6e6f776e206e756d20636f6c6f723a20222b72297d2c76743d6d2c79743d762c6d743d642c6b743d6c2e747970652c77743d66754d08026e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d737428722c2272676222293b72657475726e28745b305d3c3c3136292b28745b315d3c3c38292b745b325d7d3b79742e70726f746f747970652e6e756d3d66756e6374696f6e28297b72657475726e20777428746869732e5f726762297d2c76742e6e756d3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792879742c5b6e756c6c5d2e636f6e63617428722c5b226e756d225d2929297d2c6d742e666f726d61742e6e756d3d67742c6d742e6175746f6465746563742e70757368287b703a352c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628313d3d3d722e6c656e6774682626226e756d626572223d3d3d6b7428725b305d292626725b305d3e3d302626725b305d3c3d31363737373231352972657475726e226e756d227d7d293b766172204d743d6d2c5f743d762c4e743d642c46744d08023d6c2e756e7061636b2c78743d6c2e747970652c50743d4d6174682e726f756e643b5f742e70726f746f747970652e7267623d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d2130292c21313d3d3d723f746869732e5f7267622e736c69636528302c33293a746869732e5f7267622e736c69636528302c33292e6d6170285074297d2c5f742e70726f746f747970652e726762613d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d2130292c746869732e5f7267622e736c69636528302c34292e6d61702866756e6374696f6e28652c74297b72657475726e20743c333f21313d3d3d723f653a50742865293a657d297d2c4d742e7267623d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79285f742c5b6e756c6c5d2e636f6e63617428722c5b22726762225d2929297d2c4e742e666f726d61742e7267623d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d467428722c227267626122293b7265744d080275726e20766f696420303d3d3d745b335d262628745b335d3d31292c747d2c4e742e6175746f6465746563742e70757368287b703a332c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d467428722c227267626122292c226172726179223d3d3d7874287229262628333d3d3d722e6c656e6774687c7c343d3d3d722e6c656e6774682626226e756d626572223d3d787428725b335d292626725b335d3e3d302626725b335d3c3d31292972657475726e22726762227d7d293b7661722052743d4d6174682e6c6f672c47743d66756e6374696f6e2872297b76617220652c742c6e2c613d722f3130303b72657475726e20613c36363f28653d3235352c743d613c363f303a2d3135352e32353438353536323730393137392d2e34343539363935303436393537393133332a28743d612d32292b3130342e34393231363139393339333838382a52742874292c6e3d613c32303f303a2e383237343039363036343030373339352a286e3d612d3130292d3235342e37363933353138343132303930322b3131352e36373939343430313036363134372a5274286e29293a28653d3335312e39373639303536363830353639332b2e3131343230363435333738343136352a28653d612d3535292d4d080234302e32353336363330393333323132372a52742865292c743d3332352e343439343132353731313937342b2e30373934333435363533363636323334322a28743d612d3530292d32382e303835323936333530373935372a52742874292c6e3d323535292c5b652c742c6e2c315d7d2c6a743d47742c45743d6c2e756e7061636b2c4f743d4d6174682e726f756e642c71743d6d2c42743d762c49743d642c41743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b666f722876617220742c6e3d457428722c2272676222292c613d6e5b305d2c663d6e5b325d2c6f3d3165332c633d3465343b632d6f3e2e343b297b76617220753d6a7428743d2e352a28632b6f29293b755b325d2f755b305d3e3d662f613f633d743a6f3d747d72657475726e204f742874297d3b42742e70726f746f747970652e74656d703d42742e70726f746f747970652e6b656c76696e3d42742e70726f746f747970652e74656d70657261747572653d66756e6374696f6e28297b72657475726e20417428746869732e5f726762297d2c71742e74656d703d71742e6b656c76696e3d71742e74656d70657261747572653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d4d08022d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792842742c5b6e756c6c5d2e636f6e63617428722c5b2274656d70225d2929297d2c49742e666f726d61742e74656d703d49742e666f726d61742e6b656c76696e3d49742e666f726d61742e74656d70657261747572653d47743b7661722044743d6c2e756e7061636b2c43743d4d6174682e636272742c59743d4d6174682e706f772c53743d4d6174682e7369676e2c4c743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d447428722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d5b2474286e2f323535292c247428612f323535292c247428662f323535295d2c633d6f5b305d2c753d6f5b315d2c693d6f5b325d2c6c3d4374282e343132323231343730382a632b2e353336333332353336332a752b2e303531343435393932392a69292c643d4374282e323131393033343938322a632b2e363830363939353435312a752b2e313037333936393536362a69292c683d4374282e303838333032343631392a632b2e323831373138383337362a752b2e363239393738373030352a69293b72657475726e5b2e4d0802323130343534323535332a6c2b2e3739333631373738352a642d2e303034303732303436382a682c312e393737393938343935312a6c2d322e3432383539323230352a642b2e343530353933373039392a682c2e303235393034303337312a6c2b2e373832373731373636322a642d2e3830383637353736362a685d7d3b66756e6374696f6e2024742872297b76617220653d4d6174682e6162732872293b72657475726e20653c2e30343034353f722f31322e39323a2853742872297c7c31292a59742828652b2e303535292f312e3035352c322e34297d7661722054743d6c2e756e7061636b2c4b743d4d6174682e706f772c57743d4d6174682e7369676e2c58743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d547428722c226c61622229295b305d2c6e3d725b315d2c613d725b325d2c663d4b7428742b2e333936333337373737342a6e2b2e323135383033373537332a612c33292c6f3d4b7428742d2e313035353631333435382a6e2d2e303633383534313732382a612c33292c633d4b7428742d2e303839343834313737352a6e2d312e3239313438353534382a612c33293b72657475726e5b3235352a5a7428342e303736373431363632312a662d332e3330373731313539314d0802332a6f2b2e323330393639393239322a63292c3235352a5a74282d312e323638343338303034362a662b322e363039373537343031312a6f2d2e333431333139333936352a63292c3235352a5a74282d2e303034313936303836332a662d2e373033343138363134372a6f2b312e3730373631343730312a63292c722e6c656e6774683e333f725b335d3a315d7d3b66756e6374696f6e205a742872297b76617220653d4d6174682e6162732872293b72657475726e20653e2e303033313330383f2857742872297c7c31292a28312e3035352a4b7428652c312f322e34292d2e303535293a31322e39322a727d7661722048743d6c2e756e7061636b2c7a743d6c2e747970652c55743d6d2c56743d762c4a743d642c51743d4c743b56742e70726f746f747970652e6f6b6c61623d66756e6374696f6e28297b72657475726e20517428746869732e5f726762297d2c55742e6f6b6c61623d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792856742c5b6e756c6c5d2e636f6e63617428722c5b226f6b6c6162225d2929297d2c4a742e666f726d61742e6f6b6c61623d58742c4a742e6175746f6465746563742e704d0802757368287b703a332c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d487428722c226f6b6c616222292c226172726179223d3d3d7a742872292626333d3d3d722e6c656e6774682972657475726e226f6b6c6162227d7d293b76617220726e3d6c2e756e7061636b2c656e3d4c742c746e3d53652c6e6e3d6c2e756e7061636b2c616e3d7a652c666e3d58742c6f6e3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d6e6e28722c226c63682229295b305d2c6e3d725b315d2c613d725b325d2c663d616e28742c6e2c61292c6f3d665b305d2c633d665b315d2c753d665b325d2c693d666e286f2c632c75293b72657475726e5b695b305d2c695b315d2c695b325d2c722e6c656e6774683e333f725b335d3a315d7d2c636e3d6c2e756e7061636b2c756e3d6c2e747970652c6c6e3d6d2c646e3d762c686e3d642c626e3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d726e28722c2272676222292c6e3d744d08025b305d2c613d745b315d2c663d745b325d2c6f3d656e286e2c612c66292c633d6f5b305d2c753d6f5b315d2c693d6f5b325d3b72657475726e20746e28632c752c69297d3b646e2e70726f746f747970652e6f6b6c63683d66756e6374696f6e28297b72657475726e20626e28746869732e5f726762297d2c6c6e2e6f6b6c63683d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c7928646e2c5b6e756c6c5d2e636f6e63617428722c5b226f6b6c6368225d2929297d2c686e2e666f726d61742e6f6b6c63683d6f6e2c686e2e6175746f6465746563742e70757368287b703a332c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d636e28722c226f6b6c636822292c226172726179223d3d3d756e2872292626333d3d3d722e6c656e6774682972657475726e226f6b6c6368227d7d293b76617220736e3d762c706e3d6c2e747970653b736e2e70726f746f747970652e616c7068613d66756e6374696f6e28722c65297b72657475726e20766f696420303d3d3d65264d08022628653d2131292c766f69642030213d3d722626226e756d626572223d3d3d706e2872293f653f28746869732e5f7267625b335d3d722c74686973293a6e657720736e285b746869732e5f7267625b305d2c746869732e5f7267625b315d2c746869732e5f7267625b325d2c725d2c2272676222293a746869732e5f7267625b335d7d2c762e70726f746f747970652e636c69707065643d66756e6374696f6e28297b72657475726e20746869732e5f7267622e5f636c69707065647c7c21317d3b76617220676e3d762c766e3d70653b676e2e70726f746f747970652e6461726b656e3d66756e6374696f6e2872297b766f696420303d3d3d72262628723d31293b76617220653d746869732e6c616228293b72657475726e20655b305d2d3d766e2e4b6e2a722c6e657720676e28652c226c616222292e616c70686128746869732e616c70686128292c2130297d2c676e2e70726f746f747970652e627269676874656e3d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d31292c746869732e6461726b656e282d72297d2c676e2e70726f746f747970652e6461726b65723d676e2e70726f746f747970652e6461726b656e2c676e2e70726f746f747970652e62726967687465723d676e2e70726f746f747970652e627269676874656e2c762e70726f746f747970652e6765743d66756e6374696f4d08026e2872297b76617220653d722e73706c697428222e22292c743d655b305d2c6e3d655b315d2c613d746869735b745d28293b6966286e297b76617220663d742e696e6465784f66286e292d28226f6b223d3d3d742e73756273747228302c32293f323a30293b696628663e2d312972657475726e20615b665d3b7468726f77206e6577204572726f722822756e6b6e6f776e206368616e6e656c20222b6e2b2220696e206d6f646520222b74297d72657475726e20617d3b76617220796e3d762c6d6e3d6c2e747970652c6b6e3d4d6174682e706f773b796e2e70726f746f747970652e6c756d696e616e63653d66756e6374696f6e2872297b696628766f69642030213d3d722626226e756d626572223d3d3d6d6e287229297b696628303d3d3d722972657475726e206e657720796e285b302c302c302c746869732e5f7267625b335d5d2c2272676222293b696628313d3d3d722972657475726e206e657720796e285b3235352c3235352c3235352c746869732e5f7267625b335d5d2c2272676222293b76617220653d746869732e6c756d696e616e636528292c743d32302c6e3d66756e6374696f6e28652c61297b76617220663d652e696e746572706f6c61746528612c2e352c2272676222292c6f3d662e6c756d696e616e636528293b72657475726e204d6174682e61627328722d6f293c31652d377c7c21742d2d3f663a6f3e724d08023f6e28652c66293a6e28662c61297d2c613d28653e723f6e286e657720796e285b302c302c305d292c74686973293a6e28746869732c6e657720796e285b3235352c3235352c3235355d2929292e72676228293b72657475726e206e657720796e28612e636f6e636174285b746869732e5f7267625b335d5d29297d72657475726e20776e2e6170706c7928766f696420302c746869732e5f7267622e736c69636528302c3329297d3b76617220776e3d66756e6374696f6e28722c652c74297b72657475726e2e323132362a28723d4d6e287229292b2e373135322a28653d4d6e286529292b2e303732322a28743d4d6e287429297d2c4d6e3d66756e6374696f6e2872297b72657475726e28722f3d323535293c3d2e30333932383f722f31322e39323a6b6e2828722b2e303535292f312e3035352c322e34297d2c5f6e3d7b7d2c4e6e3d762c466e3d6c2e747970652c786e3d5f6e2c506e3d762c526e3d66756e6374696f6e28722c652c74297b766f696420303d3d3d74262628743d2e35293b666f7228766172206e3d5b5d2c613d617267756d656e74732e6c656e6774682d333b612d2d203e303b296e5b615d3d617267756d656e74735b612b335d3b76617220663d6e5b305d7c7c226c726762223b696628786e5b665d7c7c6e2e6c656e6774687c7c28663d4f626a6563742e6b65797328786e295b305d292c21786e5b665d29744d080268726f77206e6577204572726f722822696e746572706f6c6174696f6e206d6f646520222b662b22206973206e6f7420646566696e656422293b72657475726e226f626a65637422213d3d466e287229262628723d6e6577204e6e287229292c226f626a65637422213d3d466e286529262628653d6e6577204e6e286529292c786e5b665d28722c652c74292e616c70686128722e616c70686128292b742a28652e616c70686128292d722e616c706861282929297d3b506e2e70726f746f747970652e6d69783d506e2e70726f746f747970652e696e746572706f6c6174653d66756e6374696f6e28722c65297b766f696420303d3d3d65262628653d2e35293b666f722876617220743d5b5d2c6e3d617267756d656e74732e6c656e6774682d323b6e2d2d203e303b29745b6e5d3d617267756d656e74735b6e2b325d3b72657475726e20526e2e6170706c7928766f696420302c5b746869732c722c655d2e636f6e636174287429297d3b76617220476e3d763b476e2e70726f746f747970652e7072656d756c7469706c793d66756e6374696f6e2872297b766f696420303d3d3d72262628723d2131293b76617220653d746869732e5f7267622c743d655b335d3b72657475726e20723f28746869732e5f7267623d5b655b305d2a742c655b315d2a742c655b325d2a742c745d2c74686973293a6e657720476e285b655b305d2a742c4d0802655b315d2a742c655b325d2a742c745d2c2272676222297d3b766172206a6e3d762c456e3d70653b6a6e2e70726f746f747970652e73617475726174653d66756e6374696f6e2872297b766f696420303d3d3d72262628723d31293b76617220653d746869732e6c636828293b72657475726e20655b315d2b3d456e2e4b6e2a722c655b315d3c30262628655b315d3d30292c6e6577206a6e28652c226c636822292e616c70686128746869732e616c70686128292c2130297d2c6a6e2e70726f746f747970652e646573617475726174653d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d31292c746869732e7361747572617465282d72297d3b766172204f6e3d762c716e3d6c2e747970653b4f6e2e70726f746f747970652e7365743d66756e6374696f6e28722c652c74297b766f696420303d3d3d74262628743d2131293b766172206e3d722e73706c697428222e22292c613d6e5b305d2c663d6e5b315d2c6f3d746869735b615d28293b69662866297b76617220633d612e696e6465784f662866292d28226f6b223d3d3d612e73756273747228302c32293f323a30293b696628633e2d31297b69662822737472696e67223d3d716e2865292973776974636828652e636861724174283029297b63617365222b223a63617365222d223a6f5b635d2b3d2b653b627265616b3b63617365222a4d0802223a6f5b635d2a3d2b652e7375627374722831293b627265616b3b63617365222f223a6f5b635d2f3d2b652e7375627374722831293b627265616b3b64656661756c743a6f5b635d3d2b657d656c73657b696628226e756d62657222213d3d716e286529297468726f77206e6577204572726f722822756e737570706f727465642076616c756520666f7220436f6c6f722e73657422293b6f5b635d3d657d76617220753d6e6577204f6e286f2c61293b72657475726e20743f28746869732e5f7267623d752e5f7267622c74686973293a757d7468726f77206e6577204572726f722822756e6b6e6f776e206368616e6e656c20222b662b2220696e206d6f646520222b61297d72657475726e206f7d3b76617220426e3d763b5f6e2e7267623d66756e6374696f6e28722c652c74297b766172206e3d722e5f7267622c613d652e5f7267623b72657475726e206e657720426e286e5b305d2b742a28615b305d2d6e5b305d292c6e5b315d2b742a28615b315d2d6e5b315d292c6e5b325d2b742a28615b325d2d6e5b325d292c2272676222297d3b76617220496e3d762c416e3d4d6174682e737172742c446e3d4d6174682e706f773b5f6e2e6c7267623d66756e6374696f6e28722c652c74297b766172206e3d722e5f7267622c613d6e5b305d2c663d6e5b315d2c6f3d6e5b325d2c633d652e5f7267622c753d635b305d2c693d635b314d08025d2c6c3d635b325d3b72657475726e206e657720496e28416e28446e28612c32292a28312d74292b446e28752c32292a74292c416e28446e28662c32292a28312d74292b446e28692c32292a74292c416e28446e286f2c32292a28312d74292b446e286c2c32292a74292c2272676222297d3b76617220436e3d763b5f6e2e6c61623d66756e6374696f6e28722c652c74297b766172206e3d722e6c616228292c613d652e6c616228293b72657475726e206e657720436e286e5b305d2b742a28615b305d2d6e5b305d292c6e5b315d2b742a28615b315d2d6e5b315d292c6e5b325d2b742a28615b325d2d6e5b325d292c226c616222297d3b76617220596e3d762c536e3d66756e6374696f6e28722c652c742c6e297b76617220612c662c6f2c632c752c692c6c2c642c682c622c732c702c673b72657475726e2268736c223d3d3d6e3f286f3d722e68736c28292c633d652e68736c2829293a22687376223d3d3d6e3f286f3d722e68737628292c633d652e6873762829293a22686367223d3d3d6e3f286f3d722e68636728292c633d652e6863672829293a22687369223d3d3d6e3f286f3d722e68736928292c633d652e6873692829293a226c6368223d3d3d6e7c7c2268636c223d3d3d6e3f286e3d2268636c222c6f3d722e68636c28292c633d652e68636c2829293a226f6b6c6368223d3d3d6e2626286f3d722e6f6b6c636828294d08022e7265766572736528292c633d652e6f6b6c636828292e726576657273652829292c226822213d3d6e2e73756273747228302c31292626226f6b6c636822213d3d6e7c7c28753d28613d6f295b305d2c6c3d615b315d2c683d615b325d2c693d28663d63295b305d2c643d665b315d2c623d665b325d292c69734e614e2875297c7c69734e614e2869293f69734e614e2875293f69734e614e2869293f703d4e756d6265722e4e614e3a28703d692c31213d68262630213d687c7c22687376223d3d6e7c7c28733d6429293a28703d752c31213d62262630213d627c7c22687376223d3d6e7c7c28733d6c29293a703d752b742a28693e752626692d753e3138303f692d28752b333630293a693c752626752d693e3138303f692b3336302d753a692d75292c766f696420303d3d3d73262628733d6c2b742a28642d6c29292c673d682b742a28622d68292c6e657720596e28226f6b6c6368223d3d3d6e3f5b672c732c705d3a5b702c732c675d2c6e297d2c4c6e3d536e2c246e3d66756e6374696f6e28722c652c74297b72657475726e204c6e28722c652c742c226c636822297d3b5f6e2e6c63683d246e2c5f6e2e68636c3d246e3b76617220546e3d763b5f6e2e6e756d3d66756e6374696f6e28722c652c74297b766172206e3d722e6e756d28292c613d652e6e756d28293b72657475726e206e657720546e286e2b742a28612d6e292c4d0802226e756d22297d3b766172204b6e3d536e3b5f6e2e6863673d66756e6374696f6e28722c652c74297b72657475726e204b6e28722c652c742c2268636722297d3b76617220576e3d536e3b5f6e2e6873693d66756e6374696f6e28722c652c74297b72657475726e20576e28722c652c742c2268736922297d3b76617220586e3d536e3b5f6e2e68736c3d66756e6374696f6e28722c652c74297b72657475726e20586e28722c652c742c2268736c22297d3b766172205a6e3d536e3b5f6e2e6873763d66756e6374696f6e28722c652c74297b72657475726e205a6e28722c652c742c2268737622297d3b76617220486e3d763b5f6e2e6f6b6c61623d66756e6374696f6e28722c652c74297b766172206e3d722e6f6b6c616228292c613d652e6f6b6c616228293b72657475726e206e657720486e286e5b305d2b742a28615b305d2d6e5b305d292c6e5b315d2b742a28615b315d2d6e5b315d292c6e5b325d2b742a28615b325d2d6e5b325d292c226f6b6c616222297d3b766172207a6e3d536e3b5f6e2e6f6b6c63683d66756e6374696f6e28722c652c74297b72657475726e207a6e28722c652c742c226f6b6c636822297d3b4d6174682e706f772c4d6174682e737172742c4d6174682e50492c4d6174682e636f732c4d6174682e73696e2c4d6174682e6174616e322c4d6174682e706f773b76617220556e3d6d2c566e3d66756e4d08026374696f6e28722c652c74297b69662821566e5b745d297468726f77206e6577204572726f722822756e6b6e6f776e20626c656e64206d6f646520222b74293b72657475726e20566e5b745d28722c65297d2c4a6e3d66756e6374696f6e2872297b72657475726e2066756e6374696f6e28652c74297b766172206e3d556e2874292e72676228292c613d556e2865292e72676228293b72657475726e20556e2e7267622872286e2c6129297d7d2c516e3d66756e6374696f6e2872297b72657475726e2066756e6374696f6e28652c74297b766172206e3d5b5d3b72657475726e206e5b305d3d7228655b305d2c745b305d292c6e5b315d3d7228655b315d2c745b315d292c6e5b325d3d7228655b325d2c745b325d292c6e7d7d3b566e2e6e6f726d616c3d4a6e28516e2866756e6374696f6e2872297b72657475726e20727d29292c566e2e6d756c7469706c793d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20722a652f3235357d29292c566e2e73637265656e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e203235352a28312d28312d722f323535292a28312d652f32353529297d29292c566e2e6f7665726c61793d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20653c3132383f322a722a652f3235353a3235352a28312d322a28312d722f323535292a28312d654d08022f32353529297d29292c566e2e6461726b656e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20723e653f653a727d29292c566e2e6c69676874656e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20723e653f723a657d29292c566e2e646f6467653d4a6e28516e2866756e6374696f6e28722c65297b72657475726e203235353d3d3d723f3235353a28723d652f3235352a3235352f28312d722f32353529293e3235353f3235353a727d29292c566e2e6275726e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e203235352a28312d28312d652f323535292f28722f32353529297d29293b4d6174682e706f772c4d6174682e73696e2c4d6174682e636f732c4d6174682e666c6f6f722c4d6174682e72616e646f6d2c4d6174682e6c6f672c4d6174682e706f772c4d6174682e666c6f6f722c4d6174682e6162732c4d6174682e737172742c4d6174682e706f772c4d6174682e6d696e2c4d6174682e6d61782c4d6174682e6174616e322c4d6174682e6162732c4d6174682e636f732c4d6174682e73696e2c4d6174682e6578702c4d6174682e50493b666f72287661722072613d7b4f7252643a5b2223666666376563222c2223666565386338222c2223666464343965222c2223666462623834222c2223666338643539222c2223656636353438222c2223643733304d08023166222c2223623330303030222c2223376630303030225d2c507542753a5b2223666666376662222c2223656365376632222c2223643064316536222c2223613662646462222c2223373461396366222c2223333639306330222c2223303537306230222c2223303435613864222c2223303233383538225d2c427550753a5b2223663766636664222c2223653065636634222c2223626664336536222c2223396562636461222c2223386339366336222c2223386336626231222c2223383834313964222c2223383130663763222c2223346430303462225d2c4f72616e6765733a5b2223666666356562222c2223666565366365222c2223666464306132222c2223666461653662222c2223666438643363222c2223663136393133222c2223643934383031222c2223613633363033222c2223376632373034225d2c4275476e3a5b2223663766636664222c2223653566356639222c2223636365636536222c2223393964386339222c2223363663326134222c2223343161653736222c2223323338623435222c2223303036643263222c2223303034343162225d2c596c4f7242723a5b2223666666666535222c2223666666376263222c2223666565333931222c2223666563343466222c2223666539393239222c2223656337303134222c2223636334633032222c2223393933343034222c2223363632353036225d2c596c476e3a4d08025b2223666666666535222c2223663766636239222c2223643966306133222c2223616464643865222c2223373863363739222c2223343161623564222c2223323338343433222c2223303036383337222c2223303034353239225d2c526564733a5b2223666666356630222c2223666565306432222c2223666362626131222c2223666339323732222c2223666236613461222c2223656633623263222c2223636231383164222c2223613530663135222c2223363730303064225d2c526450753a5b2223666666376633222c2223666465306464222c2223666363356330222c2223666139666235222c2223663736386131222c2223646433343937222c2223616530313765222c2223376130313737222c2223343930303661225d2c477265656e733a5b2223663766636635222c2223653566356530222c2223633765396330222c2223613164393962222c2223373463343736222c2223343161623564222c2223323338623435222c2223303036643263222c2223303034343162225d2c596c476e42753a5b2223666666666439222c2223656466386231222c2223633765396234222c2223376663646262222c2223343162366334222c2223316439316330222c2223323235656138222c2223323533343934222c2223303831643538225d2c507572706c65733a5b2223666366626664222c2223656665646635222c222364616461654d080262222c2223626362646463222c2223396539616338222c2223383037646261222c2223366135316133222c2223353432373866222c2223336630303764225d2c476e42753a5b2223663766636630222c2223653066336462222c2223636365626335222c2223613864646235222c2223376263636334222c2223346562336433222c2223326238636265222c2223303836386163222c2223303834303831225d2c47726579733a5b2223666666666666222c2223663066306630222c2223643964396439222c2223626462646264222c2223393639363936222c2223373337333733222c2223353235323532222c2223323532353235222c2223303030303030225d2c596c4f7252643a5b2223666666666363222c2223666665646130222c2223666564393736222c2223666562323463222c2223666438643363222c2223666334653261222c2223653331613163222c2223626430303236222c2223383030303236225d2c507552643a5b2223663766346639222c2223653765316566222c2223643462396461222c2223633939346337222c2223646636356230222c2223653732393861222c2223636531323536222c2223393830303433222c2223363730303166225d2c426c7565733a5b2223663766626666222c2223646565626637222c2223633664626566222c2223396563616531222c2223366261656436222c22233432393263364d0802222c2223323137316235222c2223303835313963222c2223303833303662225d2c50754275476e3a5b2223666666376662222c2223656365326630222c2223643064316536222c2223613662646462222c2223363761396366222c2223333639306330222c2223303238313861222c2223303136633539222c2223303134363336225d2c566972696469733a5b2223343430313534222c2223343832373737222c2223336634613861222c2223333136373865222c2223323638333866222c2223316639643861222c2223366363653561222c2223623664653262222c2223666565383235225d2c537065637472616c3a5b2223396530313432222c2223643533653466222c2223663436643433222c2223666461653631222c2223666565303862222c2223666666666266222c2223653666353938222c2223616264646134222c2223363663326135222c2223333238386264222c2223356534666132225d2c5264596c476e3a5b2223613530303236222c2223643733303237222c2223663436643433222c2223666461653631222c2223666565303862222c2223666666666266222c2223643965663862222c2223613664393661222c2223363662643633222c2223316139383530222c2223303036383337225d2c526442753a5b2223363730303166222c2223623231383262222c2223643636303464222c2223663461353832222c22234d0802666464626337222c2223663766376637222c2223643165356630222c2223393263356465222c2223343339336333222c2223323136366163222c2223303533303631225d2c506959473a5b2223386530313532222c2223633531623764222c2223646537376165222c2223663162366461222c2223666465306566222c2223663766376637222c2223653666356430222c2223623865313836222c2223376662633431222c2223346439323231222c2223323736343139225d2c5052476e3a5b2223343030303462222c2223373632613833222c2223393937306162222c2223633261356366222c2223653764346538222c2223663766376637222c2223643966306433222c2223613664626130222c2223356161653631222c2223316237383337222c2223303034343162225d2c5264596c42753a5b2223613530303236222c2223643733303237222c2223663436643433222c2223666461653631222c2223666565303930222c2223666666666266222c2223653066336638222c2223616264396539222c2223373461646431222c2223343537356234222c2223333133363935225d2c427242473a5b2223353433303035222c2223386335313061222c2223626638313264222c2223646663323764222c2223663665386333222c2223663566356635222c2223633765616535222c2223383063646331222c2223333539373866222c22234d0802303136363565222c2223303033633330225d2c526447793a5b2223363730303166222c2223623231383262222c2223643636303464222c2223663461353832222c2223666464626337222c2223666666666666222c2223653065306530222c2223626162616261222c2223383738373837222c2223346434643464222c2223316131613161225d2c50754f723a5b2223376633623038222c2223623335383036222c2223653038323134222c2223666462383633222c2223666565306236222c2223663766376637222c2223643864616562222c2223623261626432222c2223383037336163222c2223353432373838222c2223326430303462225d2c536574323a5b2223363663326135222c2223666338643632222c2223386461306362222c2223653738616333222c2223613664383534222c2223666664393266222c2223653563343934222c2223623362336233225d2c416363656e743a5b2223376663393766222c2223626561656434222c2223666463303836222c2223666666663939222c2223333836636230222c2223663030323766222c2223626635623137222c2223363636363636225d2c536574313a5b2223653431613163222c2223333737656238222c2223346461663461222c2223393834656133222c2223666637663030222c2223666666663333222c2223613635363238222c2223663738316266222c22233939394d0802393939225d2c536574333a5b2223386464336337222c2223666666666233222c2223626562616461222c2223666238303732222c2223383062316433222c2223666462343632222c2223623364653639222c2223666363646535222c2223643964396439222c2223626338306264222c2223636365626335222c2223666665643666225d2c4461726b323a5b2223316239653737222c2223643935663032222c2223373537306233222c2223653732393861222c2223363661363165222c2223653661623032222c2223613637363164222c2223363636363636225d2c5061697265643a5b2223613663656533222c2223316637386234222c2223623264663861222c2223333361303263222c2223666239613939222c2223653331613163222c2223666462663666222c2223666637663030222c2223636162326436222c2223366133643961222c2223666666663939222c2223623135393238225d2c50617374656c323a5b2223623365326364222c2223666463646163222c2223636264356538222c2223663463616534222c2223653666356339222c2223666666326165222c2223663165326363222c2223636363636363225d2c50617374656c313a5b2223666262346165222c2223623363646533222c2223636365626335222c2223646563626534222c2223666564396136222c2223666666666363222c2223653564386264222c224d080223666464616563222c2223663266326632225d7d2c65613d302c74613d4f626a6563742e6b657973287261293b65613c74612e6c656e6774683b65612b3d31297b766172206e613d74615b65615d3b72615b6e612e746f4c6f7765724361736528295d3d72615b6e615d7d72657475726e206d7d293b0a0a66756e6374696f6e2051352865297b72657475726e206e65772066756e6374696f6e20652874297b6c6574206e3d22676c6f62616c223d3d743f77696e646f773a746869733b6e2e63616e7661733d646f63756d656e742e637265617465456c656d656e74282263616e76617322293b6c6574206f3d6e2e63616e7661732e676574436f6e746578742822326422293b6e2e77696474683d3130303b6e2e6865696768743d3130303b6e2e63616e7661732e77696474683d6e2e77696474683b6e2e63616e7661732e6865696768743d6e2e6865696768743b226f666673637265656e22213d74262628646f63756d656e742e626f64793f646f63756d656e742e626f64792e617070656e644368696c64286e2e63616e766173293a77696e646f772e6164644576656e744c697374656e657228226c6f6164222c66756e6374696f6e28297b646f63756d656e742e626f64792e617070656e644368696c64286e2e63616e766173297d29293b6d28293b6e2e4d414749433d3136313533333532353b6e2e5247423d303b6e2e4853564d08023d313b6e2e4853423d313b6e2e43484f52443d303b6e2e5049453d313b6e2e4f50454e3d323b6e2e5241444955533d313b6e2e434f524e45523d323b6e2e434f524e4552533d333b6e2e524f554e443d22726f756e64223b6e2e5351554152453d2262757474223b6e2e50524f4a4543543d22737175617265223b6e2e4d495445523d226d69746572223b6e2e424556454c3d22626576656c223b6e2e434c4f53453d313b6e2e424c454e443d22736f757263652d6f766572223b6e2e52454d4f56453d2264657374696e6174696f6e2d6f7574223b6e2e4144443d226c696768746572223b6e2e4441524b4553543d226461726b656e223b6e2e4c494748544553543d226c69676874656e223b6e2e444946464552454e43453d22646966666572656e6365223b6e2e53554254524143543d227375627472616374223b6e2e4558434c5553494f4e3d226578636c7573696f6e223b6e2e4d554c5449504c593d226d756c7469706c79223b6e2e53435245454e3d2273637265656e223b6e2e5245504c4143453d22636f7079223b6e2e4f5645524c41593d226f7665726c6179223b6e2e484152445f4c494748543d22686172642d6c69676874223b6e2e534f46545f4c494748543d22736f66742d6c69676874223b6e2e444f4447453d22636f6c6f722d646f646765223b6e2e4255524e3d22636f6c6f722d6275726e223b6e2e4e4f524d414d08024c3d226e6f726d616c223b6e2e4954414c49433d226974616c6963223b6e2e424f4c443d22626f6c64223b6e2e424f4c444954414c49433d226974616c696320626f6c64223b6e2e43454e5445523d2263656e746572223b6e2e4c4546543d226c656674223b6e2e52494748543d227269676874223b6e2e544f503d22746f70223b6e2e424f54544f4d3d22626f74746f6d223b6e2e424153454c494e453d22616c7068616265746963223b6e2e4c414e4453434150453d226c616e647363617065223b6e2e504f5254524149543d22706f727472616974223b6e2e414c543d31383b6e2e4241434b53504143453d383b6e2e434f4e54524f4c3d31373b6e2e44454c4554453d34363b6e2e444f574e5f4152524f573d34303b6e2e454e5445523d31333b6e2e4553434150453d32373b6e2e4c4546545f4152524f573d33373b6e2e4f5054494f4e3d31383b6e2e52455455524e3d31333b6e2e52494748545f4152524f573d33393b6e2e53484946543d31363b6e2e5441423d393b6e2e55505f4152524f573d33383b6e2e48414c465f50493d4d6174682e50492f323b6e2e50493d4d6174682e50493b6e2e515541525445525f50493d4d6174682e50492f343b6e2e5441553d322a4d6174682e50493b6e2e54574f5f50493d322a4d6174682e50493b6e2e5448524553484f4c443d313b6e2e475241593d323b6e2e4f50415155453d333b4d08026e2e494e564552543d343b6e2e504f53544552495a453d353b6e2e44494c4154453d363b6e2e45524f44453d373b6e2e424c55523d383b6e2e4152524f573d2264656661756c74223b6e2e43524f53533d2263726f737368616972223b6e2e48414e443d22706f696e746572223b6e2e4d4f56453d226d6f7665223b6e2e544558543d2274657874223b6e2e564944454f3d7b766964656f3a21302c617564696f3a21317d3b6e2e415544494f3d7b766964656f3a21312c617564696f3a21307d3b6e2e534852333d313b6e2e4c43473d323b6e2e48415244574152455f46494c544552533d21303b6e2e68696e743d66756e6374696f6e28652c74297b6e5b655d3d747d3b6e2e6672616d65436f756e743d303b6e2e6d6f757365583d303b6e2e6d6f757365593d303b6e2e706d6f757365583d303b6e2e706d6f757365593d303b6e2e6d6f757365427574746f6e3d6e756c6c3b6e2e6b65794973507265737365643d21313b6e2e6d6f7573654973507265737365643d21313b6e2e6b65793d6e756c6c3b6e2e6b6579436f64653d6e756c6c3b6e2e706978656c733d6e756c6c3b6e2e616363656c65726174696f6e583d303b6e2e616363656c65726174696f6e593d303b6e2e616363656c65726174696f6e5a3d303b6e2e726f746174696f6e583d303b6e2e726f746174696f6e593d303b6e2e726f746174696f6e5a3d303b6e2e72654d08026c526f746174696f6e583d303b6e2e72656c526f746174696f6e593d303b6e2e72656c526f746174696f6e5a3d303b6e2e70416363656c65726174696f6e583d303b6e2e70416363656c65726174696f6e593d303b6e2e70416363656c65726174696f6e5a3d303b6e2e70526f746174696f6e583d303b6e2e70526f746174696f6e593d303b6e2e70526f746174696f6e5a3d303b6e2e7052656c526f746174696f6e583d303b6e2e7052656c526f746174696f6e593d303b6e2e7052656c526f746174696f6e5a3d303b6e2e746f75636865733d5b5d3b6e2e5f636f6c6f724d6f64653d6e2e5247423b6e2e5f6e6f5374726f6b653d21313b6e2e5f6e6f46696c6c3d21313b6e2e5f656c6c697073654d6f64653d6e2e43454e5445523b6e2e5f726563744d6f64653d6e2e434f524e45523b6e2e5f637572766544657461696c3d32303b6e2e5f6375727665416c7068613d303b6e2e5f6e6f4c6f6f703d21313b6e2e5f74657874466f6e743d2273616e732d7365726966223b6e2e5f7465787453697a653d31323b6e2e5f746578744c656164696e673d31323b6e2e5f746578745374796c653d226e6f726d616c223b6e2e5f706978656c44656e736974793d313b6e2e5f6672616d65526174653d6e756c6c3b6e2e5f74696e743d6e756c6c3b6c657420613d6e756c6c3b6c657420723d21303b6c657420693d5b5d3b6c6574206c3d6e4d0802756c6c3b6c657420753d303b6c657420733d7b7d3b6c657420633d303b6c657420683d6e756c6c3b6c657420663d6e756c6c3b6c657420643d6e756c6c3b4f626a6563742e646566696e6550726f7065727479286e2c226465766963654f7269656e746174696f6e222c7b6765743a66756e6374696f6e28297b72657475726e2039303d3d4d6174682e6162732877696e646f772e6f7269656e746174696f6e293f6e2e4c414e4453434150453a6e2e504f5254524149547d7d293b4f626a6563742e646566696e6550726f7065727479286e2c2277696e646f775769647468222c7b6765743a66756e6374696f6e28297b72657475726e2077696e646f772e696e6e657257696474687d7d293b4f626a6563742e646566696e6550726f7065727479286e2c2277696e646f77486569676874222c7b6765743a66756e6374696f6e28297b72657475726e2077696e646f772e696e6e65724865696768747d7d293b4f626a6563742e646566696e6550726f7065727479286e2c2264726177696e67436f6e74657874222c7b6765743a66756e6374696f6e28297b72657475726e206f7d7d293b6e2e63726561746543616e7661733d66756e6374696f6e28652c74297b6e2e77696474683d652c6e2e6865696768743d742c6e2e63616e7661732e77696474683d652c6e2e63616e7661732e6865696768743d742c6d28297d3b6e2e726573697a4d08026543616e7661733d66756e6374696f6e28652c74297b6e2e77696474683d652c6e2e6865696768743d742c6e2e63616e7661732e77696474683d652c6e2e63616e7661732e6865696768743d747d3b6e2e63726561746547726170686963733d6e2e637265617465496d6167653d66756e6374696f6e28742c6e297b6c6574206f3d6e6577206528226f666673637265656e22293b72657475726e206f2e63726561746543616e76617328742c6e292c6f2e6e6f4c6f6f7028292c6f7d3b6e2e706978656c44656e736974793d66756e6374696f6e2865297b72657475726e206e756c6c3d3d653f6e2e5f706978656c44656e736974793a286e2e5f706978656c44656e736974793d652c6e2e63616e7661732e77696474683d4d6174682e6365696c286e2e77696474682a65292c6e2e63616e7661732e6865696768743d4d6174682e6365696c286e2e6865696768742a65292c6e2e63616e7661732e7374796c652e77696474683d6e2e77696474682b227078222c6e2e63616e7661732e7374796c652e6865696768743d6e2e6865696768742b227078222c6f2e7363616c65286e2e5f706978656c44656e736974792c6e2e5f706978656c44656e73697479292c6d28292c6e2e5f706978656c44656e73697479297d3b6e2e6d61703d66756e6374696f6e28652c742c6e2c6f2c612c72297b6c657420693d6f2b312a28652d74292f286e4d08022d74292a28612d6f293b72657475726e20723f6f3c613f4d6174682e6d696e284d6174682e6d617828692c6f292c61293a4d6174682e6d696e284d6174682e6d617828692c61292c6f293a697d3b6e2e6c6572703d66756e6374696f6e28652c742c6e297b72657475726e20652a28312d6e292b742a6e7d3b6e2e636f6e73747261696e3d66756e6374696f6e28652c742c6e297b72657475726e204d6174682e6d696e284d6174682e6d617828652c74292c6e297d3b6e2e646973743d66756e6374696f6e28297b72657475726e20343d3d617267756d656e74732e6c656e6774683f4d6174682e6879706f7428617267756d656e74735b305d2d617267756d656e74735b325d2c617267756d656e74735b315d2d617267756d656e74735b335d293a4d6174682e6879706f7428617267756d656e74735b305d2d617267756d656e74735b335d2c617267756d656e74735b315d2d617267756d656e74735b345d2c617267756d656e74735b325d2d617267756d656e74735b355d297d3b6e2e6e6f726d3d66756e6374696f6e28652c742c6f297b72657475726e206e2e6d617028652c742c6f2c302c31297d3b6e2e73713d66756e6374696f6e2865297b72657475726e20652a657d3b6e2e66726163743d66756e6374696f6e2865297b72657475726e20652d4d6174682e666c6f6f722865297d3b6e2e646567726565733d66756e6374694d08026f6e2865297b72657475726e203138302a652f4d6174682e50497d3b6e2e72616469616e733d66756e6374696f6e2865297b72657475726e20652a4d6174682e50492f3138307d3b6e2e6162733d4d6174682e6162733b6e2e6365696c3d4d6174682e6365696c3b6e2e6578703d4d6174682e6578703b6e2e666c6f6f723d4d6174682e666c6f6f723b6e2e6c6f673d4d6174682e6c6f673b6e2e6d61673d4d6174682e6879706f743b6e2e6d61783d4d6174682e6d61783b6e2e6d696e3d4d6174682e6d696e3b6e2e726f756e643d4d6174682e726f756e643b6e2e737172743d4d6174682e737172743b6e2e73696e3d4d6174682e73696e3b6e2e636f733d4d6174682e636f733b6e2e74616e3d4d6174682e74616e3b6e2e6173696e3d4d6174682e6173696e3b6e2e61636f733d4d6174682e61636f733b6e2e6174616e3d4d6174682e6174616e3b6e2e6174616e323d4d6174682e6174616e323b6e2e566563746f723d66756e6374696f6e28652c742c6f297b6c657420613d746869733b612e783d657c7c302c612e793d747c7c302c612e7a3d6f7c7c303b6c657420723d6e756c6c2c693d6e756c6c3b66756e6374696f6e206c28652c742c6e297b72657475726e206e756c6c213d652e783f653a6e756c6c213d743f7b783a652c793a742c7a3a6e7c7c307d3a7b783a652c793a652c7a3a657d7d66756e6374696f6e207528294d08027b6e756c6c3d3d69262628693d612e782a612e782b612e792a612e792b612e7a2a612e7a2c723d4d6174682e73717274286929297d66756e6374696f6e207328297b693d6e756c6c2c723d6e756c6c7d612e7365743d66756e6374696f6e28652c742c6e297b612e783d657c7c302c612e793d747c7c302c612e7a3d6e7c7c307d2c612e636f70793d66756e6374696f6e28297b72657475726e206e6577206e2e566563746f7228612e782c612e792c612e7a297d2c612e6164643d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782b3d652e782c612e792b3d652e792c612e7a2b3d652e7a2c7328292c617d2c612e72656d3d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e78253d652e782c612e79253d652e792c612e7a253d652e7a2c7328292c617d2c612e7375623d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782d3d652e782c612e792d3d652e792c612e7a2d3d652e7a2c7328292c617d2c612e6d756c743d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782a3d652e782c612e792a3d652e792c614d08022e7a2a3d652e7a2c7328292c617d2c612e6469763d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782f3d652e782c612e792f3d652e792c612e7a2f3d652e7a2c7328292c617d2c612e6d61673d66756e6374696f6e28297b72657475726e207528292c727d2c612e6d616753713d66756e6374696f6e28297b72657475726e207528292c697d2c612e646f743d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782a652e782b612e792a652e792b612e7a2a652e7a7d2c612e646973743d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473292c743d612e782d652e782c6e3d612e792d652e792c6f3d612e7a2d652e7a3b72657475726e204d6174682e7371727428742a742b6e2a6e2b6f2a6f297d2c612e63726f73733d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473292c743d612e792a652e7a2d612e7a2a652e792c6e3d612e7a2a652e782d612e782a652e7a2c6f3d612e782a652e792d612e792a652e783b72657475726e20612e783d742c612e793d6e2c612e7a3d6f2c7328292c617d2c612e6e6f726d616c697a653d66756e6374696f6e28297b7528293b6c65744d080220653d723b72657475726e20612e782f3d652c612e792f3d652c612e7a2f3d652c723d312c693d312c617d2c612e6c696d69743d66756e6374696f6e2865297b7528293b6c657420743d723b696628743e65297b6c6574206e3d652f743b612e782a3d6e2c612e792a3d6e2c612e7a2a3d6e2c723d652c693d652a657d72657475726e20617d2c612e7365744d61673d66756e6374696f6e2865297b7528293b6c657420743d722c6e3d652f743b72657475726e20612e782a3d6e2c612e792a3d6e2c612e7a2a3d6e2c723d652c693d652a652c617d2c612e68656164696e673d66756e6374696f6e28297b72657475726e204d6174682e6174616e3228612e792c612e78297d2c612e726f746174653d66756e6374696f6e2865297b6c657420743d4d6174682e636f732865292c6e3d4d6174682e73696e2865292c6f3d612e782a742d612e792a6e2c723d612e782a6e2b612e792a743b72657475726e20612e783d6f2c612e793d722c617d2c612e616e676c654265747765656e3d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b636f6e737420743d612e646f742865292f28612e6d616728292a652e6d61672829293b6c6574206e3b72657475726e206e3d4d6174682e61636f73284d6174682e6d696e28312c4d6174682e6d6178282d312c742929292c6e2a3d4d6174682e734d080269676e28612e63726f73732865292e7a7c7c31297d2c612e6c6572703d66756e6374696f6e28652c74297b72657475726e20612e783d612e782a28312d74292b652e782a742c612e793d612e792a28312d74292b652e792a742c612e7a3d612e7a2a28312d74292b652e7a2a742c7328292c617d2c612e7265666c6563743d66756e6374696f6e2865297b72657475726e20652e6e6f726d616c697a6528292c612e73756228652e6d756c7428322a612e646f7428652929297d2c612e61727261793d66756e6374696f6e28297b72657475726e5b612e782c612e792c612e7a5d7d2c612e657175616c733d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d7426266e756c6c3d3d28743d4e756d6265722e455053494c4f4e29262628743d30292c4d6174682e61627328652e782d612e78293c7426264d6174682e61627328652e792d612e79293c7426264d6174682e61627328652e7a2d612e7a293c747d2c612e66726f6d416e676c653d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d74262628743d31292c723d742c693d742a742c612e783d742a4d6174682e636f732865292c612e793d742a4d6174682e73696e2865292c612e7a3d302c617d2c612e66726f6d416e676c65733d66756e6374696f6e28652c742c6e297b6e756c6c3d3d6e2626286e3d31292c723d6e2c693d6e2a6e3b636f4d08026e7374206f3d4d6174682e636f732874292c6c3d4d6174682e73696e2874292c753d4d6174682e636f732865292c733d4d6174682e73696e2865293b72657475726e20612e783d6e2a732a6c2c612e793d2d6e2a752c612e7a3d6e2a732a6f2c617d2c612e72616e646f6d32443d66756e6374696f6e28297b72657475726e20723d312c693d312c612e66726f6d416e676c65284d6174682e72616e646f6d28292a4d6174682e50492a32297d2c612e72616e646f6d33443d66756e6374696f6e28297b72657475726e20723d312c693d312c612e66726f6d416e676c6573284d6174682e72616e646f6d28292a4d6174682e50492a322c4d6174682e72616e646f6d28292a4d6174682e50492a32297d2c612e746f537472696e673d66756e6374696f6e28297b72657475726e605b247b612e787d2c20247b612e797d2c20247b612e7a7d5d607d7d3b6e2e566563746f722e6164643d66756e6374696f6e28652c74297b72657475726e206e6577206e2e566563746f7228652e782b742e782c652e792b742e792c652e7a2b742e7a297d3b6e2e566563746f722e72656d3d66756e6374696f6e28652c74297b72657475726e206e6577206e2e566563746f7228652e7825742e782c652e7925742e792c652e7a25742e7a297d3b6e2e566563746f722e7375623d66756e6374696f6e28652c74297b72657475726e206e6577206e2e5665634d0802746f7228652e782d742e782c652e792d742e792c652e7a2d742e7a297d3b6e2e566563746f722e6d756c743d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d742e783f6e6577206e2e566563746f7228652e782a742c652e792a742c652e7a2a74293a6e6577206e2e566563746f7228652e782a742e782c652e792a742e792c652e7a2a742e7a297d3b6e2e566563746f722e6469763d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d742e783f6e6577206e2e566563746f7228652e782f742c652e792f742c652e7a2f74293a6e6577206e2e566563746f7228652e782f742e782c652e792f742e792c652e7a2f742e7a297d3b6e2e566563746f722e646973743d66756e6374696f6e28652c74297b72657475726e204d6174682e6879706f7428652e782d742e782c652e792d742e792c652e7a2d742e7a297d3b6e2e566563746f722e63726f73733d66756e6374696f6e28652c74297b72657475726e206e6577206e2e566563746f7228652e792a742e7a2d652e7a2a742e792c652e7a2a742e782d652e782a742e7a2c652e782a742e792d652e792a742e78297d3b6e2e566563746f722e6c6572703d66756e6374696f6e28652c742c6f297b72657475726e206e6577206e2e566563746f7228652e782a28312d6f292b742e782a6f2c652e793d652e792a28312d6f292b742e792a6f2c652e4d08027a3d652e7a2a28312d6f292b742e7a2a6f297d3b6e2e566563746f722e657175616c733d66756e6374696f6e28652c742c6e297b72657475726e20652e657175616c7328742c6e297d3b666f72286c65742065206f665b2266726f6d416e676c65222c2266726f6d416e676c6573222c2272616e646f6d3244222c2272616e646f6d3344225d296e2e566563746f725b655d3d66756e6374696f6e28742c6f2c61297b72657475726e286e6577206e2e566563746f72295b655d28742c6f2c61297d3b6e2e637265617465566563746f723d66756e6374696f6e28652c742c6f297b72657475726e206e6577206e2e566563746f7228652c742c6f297d3b6e2e6375727665506f696e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d612a612a612c693d612a612c6c3d2d2e352a722b692d2e352a612c753d312e352a722d322e352a692b312c733d2d312e352a722b322a692b2e352a612c633d2e352a722d2e352a693b72657475726e20652a6c2b742a752b6e2a732b6f2a637d3b6e2e62657a696572506f696e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d312d613b72657475726e204d6174682e706f7728722c33292a652b332a4d6174682e706f7728722c32292a612a742b332a722a4d6174682e706f7728612c32292a6e2b4d6174682e706f7728612c33292a6f7d3b6e2e4d0802637572766554616e67656e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d612a612c693d2d332a722f322b322a612d2e352c6c3d392a722f322d352a612c753d2d392a722f322b342a612b2e352c733d332a722f322d613b72657475726e20652a692b742a6c2b6e2a752b6f2a737d3b6e2e62657a69657254616e67656e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d312d613b72657475726e20332a6f2a4d6174682e706f7728612c32292d332a6e2a4d6174682e706f7728612c32292b362a6e2a722a612d362a742a722a612b332a742a4d6174682e706f7728722c32292d332a652a4d6174682e706f7728722c32297d3b66756e6374696f6e207028652c742c6e297b6c6574206f2c612c722c692c6c2c752c732c632c683b696628303d3d742972657475726e5b3235352a286f3d6e292c3235352a28613d6e292c3235352a28723d6e295d3b7377697463682828693d65293e333630262628693d30292c733d6e2a28312d74292c633d6e2a28312d742a28753d28692f3d3630292d286c3d7e7e692929292c683d6e2a28312d742a28312d7529292c6c297b6361736520303a6f3d6e2c613d682c723d733b627265616b3b6361736520313a6f3d632c613d6e2c723d733b627265616b3b6361736520323a6f3d732c613d6e2c723d683b627265616b3b6361736520333a6f3d4d0802732c613d632c723d6e3b627265616b3b6361736520343a6f3d682c613d732c723d6e3b627265616b3b64656661756c743a6f3d6e2c613d732c723d637d72657475726e5b3235352a6f2c3235352a612c3235352a725d7d6e2e436f6c6f723d66756e6374696f6e28652c742c6e2c6f297b6c657420613d746869733b612e4d414749433d3738363639382c612e5f723d652c612e5f673d742c612e5f623d6e2c612e5f613d6f2c612e5f683d302c612e5f733d302c612e5f763d302c612e5f687376496e6665727265643d21312c612e7365745265643d66756e6374696f6e2865297b612e5f723d652c612e5f687376496e6665727265643d21317d2c612e736574477265656e3d66756e6374696f6e2865297b612e5f673d652c612e5f687376496e6665727265643d21317d2c612e736574426c75653d66756e6374696f6e2865297b612e5f623d652c612e5f687376496e6665727265643d21317d2c612e736574416c7068613d66756e6374696f6e2865297b612e5f613d652f3235352c612e5f687376496e6665727265643d21317d2c612e5f696e6665724853563d66756e6374696f6e28297b612e5f687376496e6665727265647c7c285b612e5f682c612e5f732c612e5f765d3d66756e6374696f6e28652c742c6e297b6c6574206f2c612c722c692c6c3b6966286f3d653c743f653c6e3f653a6e3a743c6e3f743a6e2c303d3d286c4d08023d3130302a28613d653e743f653e6e3f653a6e3a743e6e3f743a6e292f323535292972657475726e5b723d302c693d302c6c5d3b696628303d3d28693d3130302a28612d6f292f61292972657475726e5b723d302c692c6c5d3b723d613d3d653f302b36302a28742d6e292f28612d6f293a613d3d743f3132302b36302a286e2d65292f28612d6f293a3234302b36302a28652d74292f28612d6f293b72657475726e5b722c692c6c5d7d28612e5f722c612e5f672c612e5f62292c612e5f687376496e6665727265643d2130297d2c612e746f537472696e673d66756e6374696f6e28297b72657475726e607267626128247b4d6174682e726f756e6428612e5f72297d2c247b4d6174682e726f756e6428612e5f67297d2c247b4d6174682e726f756e6428612e5f62297d2c247b7e7e283165332a612e5f61292f3165337d29607d7d3b6e2e636f6c6f724d6f64653d66756e6374696f6e2865297b6e2e5f636f6c6f724d6f64653d657d3b6e2e636f6c6f723d66756e6374696f6e28297b696628313d3d617267756d656e74732e6c656e67746826263738363639383d3d617267756d656e74735b305d2e4d414749432972657475726e20617267756d656e74735b305d3b6966286e2e5f636f6c6f724d6f64653d3d6e2e524742297b696628313d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f4d08027228617267756d656e74735b305d2c617267756d656e74735b305d2c617267756d656e74735b305d2c31293b696628323d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f7228617267756d656e74735b305d2c617267756d656e74735b305d2c617267756d656e74735b305d2c617267756d656e74735b315d2f323535293b696628333d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f7228617267756d656e74735b305d2c617267756d656e74735b315d2c617267756d656e74735b325d2c31293b696628343d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f7228617267756d656e74735b305d2c617267756d656e74735b315d2c617267756d656e74735b325d2c617267756d656e74735b335d2f323535297d656c73657b696628313d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f72282e2e2e7028302c302c617267756d656e74735b305d2f313030292c31293b696628323d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f72282e2e2e7028302c302c617267756d656e74735b305d2f313030292c617267756d656e74735b315d2f323535293b696628333d3d617267756d656e74732e6c656e6774682972657475726e204d08026e6577206e2e436f6c6f72282e2e2e7028617267756d656e74735b305d2c617267756d656e74735b315d2f3130302c617267756d656e74735b325d2f313030292c31293b696628343d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f72282e2e2e7028617267756d656e74735b305d2c617267756d656e74735b315d2f3130302c617267756d656e74735b325d2f313030292c617267756d656e74735b335d297d72657475726e206e756c6c7d3b6e2e7265643d66756e6374696f6e2865297b72657475726e20652e5f727d3b6e2e677265656e3d66756e6374696f6e2865297b72657475726e20652e5f677d3b6e2e626c75653d66756e6374696f6e2865297b72657475726e20652e5f627d3b6e2e616c7068613d66756e6374696f6e2865297b72657475726e203235352a652e5f617d3b6e2e6875653d66756e6374696f6e2865297b72657475726e20652e5f696e66657248535628292c652e5f687d3b6e2e73617475726174696f6e3d66756e6374696f6e2865297b72657475726e20652e5f696e66657248535628292c652e5f737d3b6e2e6272696768746e6573733d66756e6374696f6e2865297b72657475726e20652e5f696e66657248535628292c652e5f767d3b6e2e6c696768746e6573733d66756e6374696f6e2865297b72657475726e203130302a282e323132362a652e5f722b2e4d0802373135322a652e5f672b2e303732322a652e5f62292f3235357d3b6e2e6c657270436f6c6f723d66756e6374696f6e28652c742c6f297b72657475726e206e2e5f636f6c6f724d6f64653d3d6e2e5247423f6e6577206e2e436f6c6f72286e2e636f6e73747261696e286e2e6c65727028652e5f722c742e5f722c6f292c302c323535292c6e2e636f6e73747261696e286e2e6c65727028652e5f672c742e5f672c6f292c302c323535292c6e2e636f6e73747261696e286e2e6c65727028652e5f622c742e5f622c6f292c302c323535292c6e2e636f6e73747261696e286e2e6c65727028652e5f612c742e5f612c6f292c302c3129293a28652e5f696e66657248535628292c742e5f696e66657248535628292c6e6577206e2e436f6c6f72286e2e636f6e73747261696e2866756e6374696f6e28652c742c6f297b76617220613d5b5b4d6174682e61627328742d65292c6e2e6d6170286f2c302c312c652c74295d2c5b4d6174682e61627328742b3336302d65292c6e2e6d6170286f2c302c312c652c742b333630295d2c5b4d6174682e61627328742d3336302d65292c6e2e6d6170286f2c302c312c652c742d333630295d5d3b72657475726e20612e736f72742828652c74293d3e655b305d2d745b305d292c28615b305d5b315d2b37323029253336307d28652e5f682c742e5f682c6f292c302c333630292c6e2e636f6e7374724d080261696e286e2e6c65727028652e5f732c742e5f732c6f292c302c313030292c6e2e636f6e73747261696e286e2e6c65727028652e5f762c742e5f762c6f292c302c313030292c6e2e636f6e73747261696e286e2e6c65727028652e5f612c742e5f612c6f292c302c312929297d3b66756e6374696f6e206d28297b6f2e66696c6c5374796c653d227768697465222c6f2e7374726f6b655374796c653d22626c61636b222c6f2e6c696e654361703d22726f756e64222c6f2e6c696e654a6f696e3d226d69746572227d6e2e7374726f6b655765696768743d66756e6374696f6e2865297b6e2e5f6e6f5374726f6b653d21312c6f2e6c696e6557696474683d657d3b6e2e7374726f6b653d66756e6374696f6e28297b6966286e2e5f6e6f5374726f6b653d21312c22737472696e67223d3d747970656f6620617267756d656e74735b305d2972657475726e20766f6964286f2e7374726f6b655374796c653d617267756d656e74735b305d293b6c657420653d6e2e636f6c6f722e6170706c79286e756c6c2c617267756d656e7473293b652e5f613c3d303f6e2e5f6e6f5374726f6b653d21303a6f2e7374726f6b655374796c653d657d3b6e2e6e6f5374726f6b653d66756e6374696f6e28297b6e2e5f6e6f5374726f6b653d21307d3b6e2e66696c6c3d66756e6374696f6e28297b6966286e2e5f6e6f46696c6c3d21312c22737472694d08026e67223d3d747970656f6620617267756d656e74735b305d2972657475726e20766f6964286f2e66696c6c5374796c653d617267756d656e74735b305d293b6c657420653d6e2e636f6c6f722e6170706c79286e756c6c2c617267756d656e7473293b652e5f613c3d303f6e2e5f6e6f46696c6c3d21303a6f2e66696c6c5374796c653d657d3b6e2e6e6f46696c6c3d66756e6374696f6e28297b6e2e5f6e6f46696c6c3d21307d3b6e2e626c656e644d6f64653d66756e6374696f6e2865297b6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3d657d3b6e2e7374726f6b654361703d66756e6374696f6e2865297b6f2e6c696e654361703d657d3b6e2e7374726f6b654a6f696e3d66756e6374696f6e2865297b6f2e6c696e654a6f696e3d657d3b6e2e656c6c697073654d6f64653d66756e6374696f6e2865297b6e2e5f656c6c697073654d6f64653d657d3b6e2e726563744d6f64653d66756e6374696f6e2865297b6e2e5f726563744d6f64653d657d3b6e2e637572766544657461696c3d66756e6374696f6e2865297b6e2e5f637572766544657461696c3d657d3b6e2e6375727665416c7068613d66756e6374696f6e2865297b6e2e5f6375727665416c7068613d657d3b6e2e637572766554696768746e6573733d66756e6374696f6e2865297b636f6e736f6c652e7761726e2822637572766554696768744d08026e65737328292073657473207468652027616c7068612720706172616d65746572206f66204361746d756c6c2d526f6d2063757276652c20616e64206973204e4f54206964656e746963616c20746f2070352e6a7320636f756e746572706172742e2041732074686973206d69676874206368616e676520696e20746865206675747572652c20706c656173652063616c6c206375727665416c7068612829206469726563746c792e22292c6e2e5f6375727665416c7068613d657d3b6e2e636c6561723d66756e6374696f6e28297b6f2e636c6561725265637428302c302c6e2e77696474682c6e2e686569676874297d3b6e2e6261636b67726f756e643d66756e6374696f6e28297b696628617267756d656e74735b305d2626617267756d656e74735b305d2e4d414749433d3d6e2e4d414749432972657475726e206e2e696d61676528617267756d656e74735b305d2c302c302c6e2e77696474682c6e2e686569676874293b6f2e7361766528292c6f2e72657365745472616e73666f726d28292c22737472696e67223d3d747970656f6620617267756d656e74735b305d3f6f2e66696c6c5374796c653d617267756d656e74735b305d3a6f2e66696c6c5374796c653d6e2e636f6c6f72282e2e2e41727261792e66726f6d28617267756d656e747329292c6f2e66696c6c5265637428302c302c6e2e77696474682c6e2e686569674d08026874292c6f2e726573746f726528297d3b6e2e6c696e653d66756e6374696f6e28652c742c612c72297b6e2e5f6e6f5374726f6b657c7c286f2e626567696e5061746828292c6f2e6d6f7665546f28652c74292c6f2e6c696e65546f28612c72292c6f2e7374726f6b652829297d3b66756e6374696f6e20672865297b696628303c3d652626653c322a4d6174682e50492972657475726e20653b666f72283b653c303b29652b3d322a4d6174682e50493b666f72283b653e3d4d6174682e50493b29652d3d322a4d6174682e50493b72657475726e20657d66756e6374696f6e207628652c742c612c722c692c6c2c752c73297b6966286e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652972657475726e3b6c657420633d672869292c683d67286c293b6f2e626567696e5061746828293b666f72286c657420693d303b693c732b313b692b2b297b6c6574206c3d692f732c753d6e2e6c65727028632c682c6c292c663d4d6174682e636f732875292a612f322c643d4d6174682e73696e2875292a722f323b6f5b693f226c696e65546f223a226d6f7665546f225d28652b662c742b64297d753d3d6e2e43484f52443f6f2e636c6f73655061746828293a753d3d6e2e5049452626286f2e6c696e65546f28652c74292c6f2e636c6f7365506174682829292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374724d08026f6b657c7c6f2e7374726f6b6528297d6e2e6172633d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b696628723d3d692972657475726e206e2e656c6c6970736528652c742c6f2c61293b6e756c6c3d3d75262628753d3235292c6e756c6c3d3d6c2626286c3d6e2e504945292c6e2e5f656c6c697073654d6f64653d3d6e2e43454e5445523f7628652c742c6f2c612c722c692c6c2c75293a6e2e5f656c6c697073654d6f64653d3d6e2e5241444955533f7628652c742c322a6f2c322a612c722c692c6c2c75293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e45523f7628652b6f2f322c742b612f322c6f2c612c722c692c6c2c75293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e4552532626762828652b6f292f322c28742b61292f322c6f2d652c612d742c722c692c6c2c75297d3b66756e6374696f6e204d28652c742c612c72297b6e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b657c7c286f2e626567696e5061746828292c6f2e656c6c6970736528652c742c612f322c722f322c302c302c322a4d6174682e5049292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b652829297d6e2e656c6c697073653d66756e6374696f6e28652c742c6f2c61297b6e756c6c3d3d61262628613d6f292c6e2e5f656c6c697073654d6f4d080264653d3d6e2e43454e5445523f4d28652c742c6f2c61293a6e2e5f656c6c697073654d6f64653d3d6e2e5241444955533f4d28652c742c322a6f2c322a61293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e45523f4d28652b6f2f322c742b612f322c6f2c61293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e45525326264d2828652b6f292f322c28742b61292f322c6f2d652c612d74297d3b6e2e636972636c653d66756e6374696f6e28652c742c6f297b72657475726e206e2e656c6c6970736528652c742c6f2c6f297d3b6e2e706f696e743d66756e6374696f6e28652c74297b652e78262628743d652e792c653d652e78292c6f2e626567696e5061746828292c6f2e656c6c6970736528652c742c2e342c2e342c302c302c322a4d6174682e5049292c6f2e7374726f6b6528297d3b66756e6374696f6e205f28652c742c612c722c692c6c2c752c73297b6966286e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652972657475726e3b6966286e756c6c3d3d692972657475726e2066756e6374696f6e28652c742c612c72297b6e2e5f6e6f46696c6c7c7c6f2e66696c6c5265637428652c742c612c72293b6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b655265637428652c742c612c72297d28652c742c612c72293b6966286e756c6c3d3d6c2972657475726e205f28652c742c612c722c692c4d0802692c692c69293b636f6e737420633d4d6174682e6d696e284d6174682e6162732872292c4d6174682e616273286129292f323b693d4d6174682e6d696e28632c69292c6c3d4d6174682e6d696e28632c6c292c733d4d6174682e6d696e28632c73292c753d4d6174682e6d696e28632c75292c6f2e626567696e5061746828292c6f2e6d6f7665546f28652b692c74292c6f2e617263546f28652b612c742c652b612c742b722c6c292c6f2e617263546f28652b612c742b722c652c742b722c75292c6f2e617263546f28652c742b722c652c742c73292c6f2e617263546f28652c742c652b612c742c69292c6f2e636c6f73655061746828292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b6528297d6e2e726563743d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e5f726563744d6f64653d3d6e2e43454e5445523f5f28652d6f2f322c742d612f322c6f2c612c722c692c6c2c75293a6e2e5f726563744d6f64653d3d6e2e5241444955533f5f28652d6f2c742d612c322a6f2c322a612c722c692c6c2c75293a6e2e5f726563744d6f64653d3d6e2e434f524e45523f5f28652c742c6f2c612c722c692c6c2c75293a6e2e5f726563744d6f64653d3d6e2e434f524e45525326265f28652c742c6f2d652c612d742c722c692c6c2c75297d3b6e2e7371754d08026172653d66756e6374696f6e28652c742c6f2c612c722c692c6c297b72657475726e206e2e7265637428652c742c6f2c6f2c612c722c692c6c297d3b66756e6374696f6e207828297b693d5b5d7d6e2e626567696e53686170653d66756e6374696f6e28297b7828292c6f2e626567696e5061746828292c723d21307d3b6e2e626567696e436f6e746f75723d66756e6374696f6e28297b6f2e636c6f73655061746828292c7828292c723d21307d3b6e2e656e64436f6e746f75723d66756e6374696f6e28297b7828292c723d21307d3b6e2e7665727465783d66756e6374696f6e28652c74297b7828292c723f6f2e6d6f7665546f28652c74293a6f2e6c696e65546f28652c74292c723d21317d3b6e2e62657a6965725665727465783d66756e6374696f6e28652c742c6e2c612c722c69297b7828292c6f2e62657a6965724375727665546f28652c742c6e2c612c722c69297d3b6e2e7175616472617469635665727465783d66756e6374696f6e28652c742c6e2c61297b7828292c6f2e7175616472617469634375727665546f28652c742c6e2c61297d3b6e2e62657a6965723d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e626567696e536861706528292c6e2e76657274657828652c74292c6e2e62657a696572566572746578286f2c612c722c692c6c2c75292c6e2e656e64536861706528297d3b6e4d08022e747269616e676c653d66756e6374696f6e28652c742c6f2c612c722c69297b6e2e626567696e536861706528292c6e2e76657274657828652c74292c6e2e766572746578286f2c61292c6e2e76657274657828722c69292c6e2e656e645368617065286e2e434c4f5345297d3b6e2e717561643d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e626567696e536861706528292c6e2e76657274657828652c74292c6e2e766572746578286f2c61292c6e2e76657274657828722c69292c6e2e766572746578286c2c75292c6e2e656e645368617065286e2e434c4f5345297d3b6e2e656e6453686170653d66756e6374696f6e2865297b7828292c6526266f2e636c6f73655061746828292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b6528292c6e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652626286f2e7361766528292c6f2e66696c6c5374796c653d226e6f6e65222c6f2e66696c6c28292c6f2e726573746f72652829297d3b6e2e63757276655665727465783d66756e6374696f6e28652c74297b696628692e70757368285b652c745d292c692e6c656e6774683c342972657475726e3b6c657420613d695b692e6c656e6774682d345d2c6c3d695b692e6c656e6774682d335d2c753d695b692e6c656e6774682d325d2c733d695b692e4d08026c656e6774682d315d2c633d66756e6374696f6e28652c742c6e2c6f2c612c722c692c6c2c752c73297b66756e6374696f6e206328652c742c6e2c6f2c612c72297b6c657420693d4d6174682e706f77286f2d742c32292b4d6174682e706f7728612d6e2c32292c6c3d4d6174682e706f7728692c2e352a72293b72657475726e206c2b657d6c657420683d5b5d2c663d6328302c652c742c6e2c6f2c73292c643d6328662c6e2c6f2c612c722c73292c703d6328642c612c722c692c6c2c73293b666f72286c657420733d303b733c753b732b2b297b6c657420633d662b732f28752d31292a28642d66292c6d3d5b28662d63292f28662d30292c28632d30292f28662d30292c28642d63292f28642d66292c28632d66292f28642d66292c28702d63292f28702d64292c28632d64292f28702d64292c28642d63292f28642d30292c28632d30292f28642d30292c28702d63292f28702d66292c28632d66292f28702d66295d3b666f72286c657420653d303b653c6d2e6c656e6774683b652b3d322969734e614e286d5b655d292626286d5b655d3d312c6d5b652b315d3d30292c697346696e697465286d5b655d297c7c286d5b655d3e303f286d5b655d3d312c6d5b652b315d3d30293a286d5b655d3d302c6d5b652b315d3d3129293b6c657420673d652a6d5b305d2b6e2a6d5b315d2c763d742a6d5b305d2b6f2a6d5b315d2c4d3d6e4d08022a6d5b325d2b612a6d5b335d2c5f3d6f2a6d5b325d2b722a6d5b335d2c783d612a6d5b345d2b692a6d5b355d2c793d722a6d5b345d2b6c2a6d5b355d2c773d672a6d5b365d2b4d2a6d5b375d2c523d762a6d5b365d2b5f2a6d5b375d2c493d4d2a6d5b385d2b782a6d5b395d2c453d5f2a6d5b385d2b792a6d5b395d2c533d772a6d5b325d2b492a6d5b335d2c433d522a6d5b325d2b452a6d5b335d3b682e70757368285b532c435d297d72657475726e20687d282e2e2e612c2e2e2e6c2c2e2e2e752c2e2e2e732c6e2e5f637572766544657461696c2c6e2e5f6375727665416c706861293b666f72286c657420653d303b653c632e6c656e6774683b652b2b29723f6f2e6d6f7665546f282e2e2e635b655d293a6f2e6c696e65546f282e2e2e635b655d292c723d21317d3b6e2e63757276653d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e626567696e536861706528292c6e2e637572766556657274657828652c74292c6e2e6375727665566572746578286f2c61292c6e2e637572766556657274657828722c69292c6e2e6375727665566572746578286c2c75292c6e2e656e64536861706528297d3b6e2e7472616e736c6174653d66756e6374696f6e28652c74297b6f2e7472616e736c61746528652c74297d3b6e2e726f746174653d66756e6374696f6e2865297b6f2e726f746174652865297d3b6e4d08022e7363616c653d66756e6374696f6e28652c74297b6e756c6c3d3d74262628743d65292c6f2e7363616c6528652c74297d3b6e2e6170706c794d61747269783d66756e6374696f6e28652c742c6e2c612c722c69297b6f2e7472616e73666f726d28652c742c6e2c612c722c69297d3b6e2e7368656172583d66756e6374696f6e2865297b6f2e7472616e73666f726d28312c302c4d6174682e74616e2865292c312c302c30297d3b6e2e7368656172593d66756e6374696f6e2865297b6f2e7472616e73666f726d28312c4d6174682e74616e2865292c302c312c302c30297d3b6e2e72657365744d61747269783d66756e6374696f6e28297b6f2e72657365745472616e73666f726d28292c6f2e7363616c65286e2e5f706978656c44656e736974792c6e2e5f706978656c44656e73697479297d3b6e2e707573684d61747269783d6e2e707573683d66756e6374696f6e28297b6f2e7361766528297d3b6e2e706f704d61747269783d6e2e706f703d66756e6374696f6e28297b6f2e726573746f726528297d3b6e2e696d6167653d66756e6374696f6e28652c742c612c722c692c6c2c752c732c63297b6c657420683d652e4d414749433d3d6e2e4d414749433f652e63616e7661733a653b66756e6374696f6e206428297b696628652e4d41474943213d6e2e4d414749437c7c216e2e5f74696e742972657475726e3b6c657420744d08023d652e63616e7661732e676574436f6e746578742822326422293b742e7361766528292c742e72657365745472616e73666f726d28292c742e636c6561725265637428302c302c742e63616e7661732e77696474682c742e63616e7661732e686569676874292c742e64726177496d61676528662e63616e7661732c302c30292c742e726573746f726528297d72657475726e20652e4d414749433d3d6e2e4d4147494326266e756c6c213d6e2e5f74696e742626282166756e6374696f6e28652c74297b6e756c6c3d3d66262628663d646f63756d656e742e637265617465456c656d656e74282263616e76617322292e676574436f6e74657874282232642229293b6e756c6c3d3d65262628653d6f2e63616e7661732e77696474682c743d6f2e63616e7661732e686569676874293b662e63616e7661732e77696474683d3d652626662e63616e7661732e6865696768743d3d747c7c28662e63616e7661732e77696474683d652c662e63616e7661732e6865696768743d74297d28652e63616e7661732e77696474682c652e63616e7661732e686569676874292c662e64726177496d61676528652e63616e7661732c302c30292c652e74696e746564286e2e5f74696e7429292c723f6c3f28737c7c28733d682e7769647468292c637c7c28633d682e686569676874292c6f2e64726177496d61676528682c6c2c752c732c632c742c4d0802612c722c69292c766f696420642829293a286f2e64726177496d61676528682c742c612c722c69292c766f696420642829293a28652e4d414749433d3d6e2e4d414749437c7c652e77696474683f6f2e64726177496d61676528682c742c612c652e77696474682c652e686569676874293a6f2e64726177496d61676528682c742c612c652e766964656f57696474682c652e766964656f486569676874292c766f696420642829297d3b6e2e6c6f6164506978656c733d66756e6374696f6e28297b6c3d6f2e676574496d6167654461746128302c302c6e2e63616e7661732e77696474682c6e2e63616e7661732e686569676874292c6e2e706978656c733d6c2e646174617d3b6e2e757064617465506978656c733d66756e6374696f6e28297b6e756c6c213d6c26266f2e707574496d61676544617461286c2c302c30297d3b6e2e6c6f6164496d6167653d66756e6374696f6e28652c74297b752b2b3b6c6574206f3d6e2e6372656174654772617068696373283130302c313030292c613d6f2e63616e7661732e676574436f6e746578742822326422292c723d6e657720496d6167653b72657475726e20722e7372633d652c722e63726f73734f726967696e3d22416e6f6e796d6f7573222c722e6f6e6c6f61643d66756e6374696f6e28297b612e63616e7661732e77696474683d722e77696474682c612e63616e7661732e68654d0802696768743d722e6865696768742c6f2e77696474683d722e77696474682c6f2e6865696768743d722e6865696768742c612e64726177496d61676528722c302c30292c752d2d2c74262674286f297d2c6f7d3b6c657420793d7b7d3b795b6e2e5448524553484f4c445d3d66756e6374696f6e28652c74297b6e756c6c3d3d743f743d3132372e353a742a3d3235353b666f72286c6574206e3d303b6e3c652e6c656e6774683b6e2b3d34297b636f6e7374206f3d2e323132362a655b6e5d2b2e373135322a655b6e2b315d2b2e303732322a655b6e2b325d3b655b6e5d3d655b6e2b315d3d655b6e2b325d3d6f3e3d743f3235353a307d7d3b795b6e2e475241595d3d66756e6374696f6e2865297b666f72286c657420743d303b743c652e6c656e6774683b742b3d34297b636f6e7374206e3d2e323132362a655b745d2b2e373135322a655b742b315d2b2e303732322a655b742b325d3b655b745d3d655b742b315d3d655b742b325d3d6e7d7d3b795b6e2e4f50415155455d3d66756e6374696f6e2865297b666f72286c657420743d303b743c652e6c656e6774683b742b3d3429655b742b335d3d3235357d3b795b6e2e494e564552545d3d66756e6374696f6e2865297b666f72286c657420743d303b743c652e6c656e6774683b742b3d3429655b745d3d3235352d655b745d2c655b742b315d3d3235352d655b742b315d2c655b744d08022b325d3d3235352d655b742b325d7d3b795b6e2e504f53544552495a455d3d66756e6374696f6e28652c74297b6c6574206e3d742d313b666f72286c6574206f3d303b6f3c652e6c656e6774683b6f2b3d3429655b6f5d3d3235352a28655b6f5d2a743e3e38292f6e2c655b6f2b315d3d3235352a28655b6f2b315d2a743e3e38292f6e2c655b6f2b325d3d3235352a28655b6f2b325d2a743e3e38292f6e7d3b795b6e2e44494c4154455d3d66756e6374696f6e2865297b5228292c642e7365742865293b6c65745b742c6e5d3d5b6f2e63616e7661732e77696474682c6f2e63616e7661732e6865696768745d3b666f72286c6574206f3d303b6f3c6e3b6f2b2b29666f72286c657420613d303b613c743b612b2b297b6c657420723d342a4d6174682e6d617828612d312c30292c693d342a4d6174682e6d696e28612b312c742d31292c6c3d342a4d6174682e6d6178286f2d312c30292a742c753d342a4d6174682e6d696e286f2b312c6e2d31292a742c733d342a6f2a742c633d342a613b666f72286c657420743d303b743c343b742b2b297b6c6574206e3d742b6c2c6f3d742b752c613d742b733b655b732b632b745d3d4d6174682e6d617828645b6e2b635d2c645b612b725d2c645b612b635d2c645b612b695d2c645b6f2b635d297d7d7d3b795b6e2e45524f44455d3d66756e6374696f6e2865297b5228292c642e736574284d080265293b6c65745b742c6e5d3d5b6f2e63616e7661732e77696474682c6f2e63616e7661732e6865696768745d3b666f72286c6574206f3d303b6f3c6e3b6f2b2b29666f72286c657420613d303b613c743b612b2b297b6c657420723d342a4d6174682e6d617828612d312c30292c693d342a4d6174682e6d696e28612b312c742d31292c6c3d342a4d6174682e6d6178286f2d312c30292a742c753d342a4d6174682e6d696e286f2b312c6e2d31292a742c733d342a6f2a742c633d342a613b666f72286c657420743d303b743c343b742b2b297b6c6574206e3d742b6c2c6f3d742b752c613d742b733b655b732b632b745d3d4d6174682e6d696e28645b6e2b635d2c645b612b725d2c645b612b635d2c645b612b695d2c645b6f2b635d297d7d7d3b795b6e2e424c55525d3d66756e6374696f6e28652c74297b743d747c7c312c743d4d6174682e666c6f6f7228742a6e2e5f706978656c44656e73697479292c5228292c642e7365742865293b6c657420613d322a742b313b6c657420723d66756e6374696f6e2865297b6c6574206e3d6e657720466c6f6174333241727261792865292c6f3d2e332a742b2e382c613d6f2a6f2a323b666f72286c657420743d303b743c653b742b2b297b6c657420723d742d652f322c693d4d6174682e657870282d722a722f61292f28322e353036363238323734362a6f293b6e5b745d3d697d72654d08027475726e206e7d2861292c5b692c6c5d3d5b6f2e63616e7661732e77696474682c6f2e63616e7661732e6865696768745d3b666f72286c6574206e3d303b6e3c6c3b6e2b2b29666f72286c6574206f3d303b6f3c693b6f2b2b297b6c6574206c3d302c753d302c733d302c633d303b666f72286c657420653d303b653c613b652b2b297b6c657420613d4d6174682e6d696e284d6174682e6d6178286f2d742b652c30292c692d31292c683d342a286e2a692b61293b6c2b3d645b685d2a725b655d2c752b3d645b682b315d2a725b655d2c732b3d645b682b325d2a725b655d2c632b3d645b682b335d2a725b655d7d6c657420683d342a286e2a692b6f293b655b685d3d6c2c655b682b315d3d752c655b682b325d3d732c655b682b335d3d637d642e7365742865293b666f72286c6574206e3d303b6e3c6c3b6e2b2b29666f72286c6574206f3d303b6f3c693b6f2b2b297b6c657420753d302c733d302c633d302c683d303b666f72286c657420653d303b653c613b652b2b297b6c657420613d4d6174682e6d696e284d6174682e6d6178286e2d742b652c30292c6c2d31292c663d342a28612a692b6f293b752b3d645b665d2a725b655d2c732b3d645b662b315d2a725b655d2c632b3d645b662b325d2a725b655d2c682b3d645b662b335d2a725b655d7d6c657420663d342a286e2a692b6f293b655b665d3d752c655b662b315d3d734d08022c655b662b325d3d632c655b662b335d3d687d7d3b66756e6374696f6e207728652c74297b6e756c6c3d3d68262628683d646f63756d656e742e637265617465456c656d656e74282263616e76617322292e676574436f6e74657874282232642229292c6e756c6c3d3d65262628653d6f2e63616e7661732e77696474682c743d6f2e63616e7661732e686569676874292c682e63616e7661732e77696474683d3d652626682e63616e7661732e6865696768743d3d747c7c28682e63616e7661732e77696474683d652c682e63616e7661732e6865696768743d74297d66756e6374696f6e205228297b6c657420653d6f2e63616e7661732e77696474682a6f2e63616e7661732e6865696768742a343b6e756c6c213d642626653d3d642e6c656e6774687c7c28643d6e65772055696e7438436c616d7065644172726179286529297d66756e6374696f6e20492865297b682e636c6561725265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e66696c7465723d652c682e64726177496d616765286f2e63616e7661732c302c30292c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e636c6561725265637428302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e64726177496d61676528682e63616e7661734d08022c302c30292c6f2e726573746f726528297d6e2e66696c7465723d66756e6374696f6e28652c74297b6c657420613d6e2e48415244574152455f46494c5445525326266e756c6c213d6f2e66696c7465723b69662861296966287728292c653d3d6e2e5448524553484f4c44297b6e756c6c3d3d74262628743d2e35292c743d4d6174682e6d617828742c31652d35293b6c657420653d4d6174682e666c6f6f72282e352f742a313030293b492860736174757261746528302529206272696768746e65737328247b657d252920636f6e74726173742831303030303030252960297d656c736520696628653d3d6e2e475241592949282273617475726174652830252922293b656c736520696628653d3d6e2e4f504151554529682e66696c6c5374796c653d22626c61636b222c682e66696c6c5265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e64726177496d616765286f2e63616e7661732c302c30292c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e64726177496d61676528682e63616e7661732c302c30292c6f2e726573746f726528293b656c736520696628653d3d6e2e494e5645525429492822696e7665727428313030252922293b656c736520696628653d3d6e2e424c555229492860626c757228247b4d6174682e6365696c28742a4d08026e2e5f706978656c44656e736974792f31297c7c317d70782960293b656c73657b6c6574206e3d6f2e676574496d6167654461746128302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874293b795b655d286e2e646174612c74292c6f2e707574496d61676544617461286e2c302c30297d656c73657b6c6574206e3d6f2e676574496d6167654461746128302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874293b795b655d286e2e646174612c74292c6f2e707574496d61676544617461286e2c302c30297d7d3b6e2e726573697a653d66756e6374696f6e28652c74297b7728292c682e64726177496d616765286f2e63616e7661732c302c30292c6e2e77696474683d652c6e2e6865696768743d742c6f2e63616e7661732e77696474683d652a6e2e5f706978656c44656e736974792c6f2e63616e7661732e6865696768743d742a6e2e5f706978656c44656e736974792c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e636c6561725265637428302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e64726177496d61676528682e63616e7661732c302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e726573746f726528297d3b6e2e6765744d08023d66756e6374696f6e28652c742c612c72297b6966286e756c6c213d6526266e756c6c3d3d61297b6c657420613d6f2e676574496d6167654461746128652c742c312c31292e646174613b72657475726e206e6577206e2e436f6c6f7228615b305d2c615b315d2c615b325d2c615b335d2f323535297d653d657c7c302c743d747c7c302c613d617c7c6e2e77696474682c723d727c7c6e2e6865696768743b6c657420693d6e2e637265617465477261706869637328612c72293b692e706978656c44656e73697479286e2e5f706978656c44656e73697479293b6c6574206c3d6f2e676574496d6167654461746128652a6e2e5f706978656c44656e736974792c742a6e2e5f706978656c44656e736974792c612a6e2e5f706978656c44656e736974792c722a6e2e5f706978656c44656e73697479293b72657475726e20692e63616e7661732e676574436f6e746578742822326422292e707574496d61676544617461286c2c302c30292c697d3b6e2e7365743d66756e6374696f6e28652c742c61297b696628612e4d414749433d3d6e2e4d41474943297b6c6574206f3d6e2e5f74696e743b72657475726e206e2e5f74696e743d6e756c6c2c6e2e696d61676528612c652c74292c766f6964286e2e5f74696e743d6f297d6c657420723d342a28742a6e2e5f706978656c44656e736974792a6f2e63616e7661732e77696474682b4d0802652a6e2e5f706978656c44656e73697479293b6e2e706978656c735b725d3d612e5f722c6e2e706978656c735b722b315d3d612e5f672c6e2e706978656c735b722b325d3d612e5f622c6e2e706978656c735b722b335d3d3235352a612e5f617d3b6e2e74696e7465643d66756e6374696f6e28297b6c657420653d6e2e636f6c6f72282e2e2e41727261792e66726f6d28617267756d656e747329292c743d652e5f613b652e5f613d312c7728292c682e636c6561725265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e66696c6c5374796c653d652c682e66696c6c5265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e676c6f62616c436f6d706f736974654f7065726174696f6e3d226d756c7469706c79222c682e64726177496d616765286f2e63616e7661732c302c30292c682e676c6f62616c436f6d706f736974654f7065726174696f6e3d22736f757263652d6f766572222c6f2e7361766528292c6f2e72657365745472616e73666f726d28293b6c657420613d6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3b6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3d22736f757263652d696e222c6f2e64726177496d61676528682e63616e7661732c302c30292c6f2e676c4d08026f62616c436f6d706f736974654f7065726174696f6e3d612c6f2e726573746f726528292c682e676c6f62616c416c7068613d742c682e636c6561725265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e64726177496d616765286f2e63616e7661732c302c30292c682e676c6f62616c416c7068613d312c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e636c6561725265637428302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e64726177496d61676528682e63616e7661732c302c30292c6f2e726573746f726528297d3b6e2e74696e743d66756e6374696f6e28297b6e2e5f74696e743d6e2e636f6c6f72282e2e2e41727261792e66726f6d28617267756d656e747329297d3b6e2e6e6f54696e743d66756e6374696f6e28297b6e2e5f74696e743d6e756c6c7d3b6e2e6d61736b3d66756e6374696f6e2865297b6f2e7361766528292c6f2e72657365745472616e73666f726d28293b6c657420743d6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3b6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3d2264657374696e6174696f6e2d696e222c6f2e64726177496d61676528652e63616e7661732c302c30292c6f2e676c6f62616c436f6d706f736974654d08024f7065726174696f6e3d742c6f2e726573746f726528297d3b6e2e636c65617254656d706f72617279427566666572733d66756e6374696f6e28297b683d6e756c6c2c663d6e756c6c2c643d6e756c6c7d3b6e2e736176653d66756e6374696f6e28652c74297b653d657c7c22756e7469746c6564222c743d747c7c22706e67223b766172206e3d646f63756d656e742e637265617465456c656d656e7428226122293b6e2e696e6e657248544d4c3d225b446f776e6c6f61645d222c6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e28297b746869732e687265663d6f2e63616e7661732e746f4461746155524c28292c746869732e646f776e6c6f61643d652b222e222b747d2c2131292c646f63756d656e742e626f64792e617070656e644368696c64286e292c6e2e636c69636b28292c646f63756d656e742e626f64792e72656d6f76654368696c64286e297d3b6e2e7361766543616e7661733d66756e6374696f6e28652c742c6f297b696628652e4d414749433d3d6e2e4d41474943297b6f2626652e7361766528742c6f293b6c6574206e3d742e73706c697428222e22293b72657475726e20652e73617665286e2e736c69636528302c2d31292e6a6f696e28222e22292c6e5b6e2e6c656e6774682d315d297d696628742972657475726e206e2e7361766528652c74293b6c657420614d08023d652e73706c697428222e22293b72657475726e206e2e7361766528612e736c69636528302c2d31292e6a6f696e28222e22292c615b612e6c656e6774682d315d297d3b6e2e6c6f6164466f6e743d66756e6374696f6e28652c74297b6c6574206e3d652e73706c697428222f22292c6f3d6e5b6e2e6c656e6774682d315d2e73706c697428222e22295b305d2e7265706c616365282220222c2222292c613d6040666f6e742d66616365207b5c6e2020202020202020666f6e742d66616d696c793a2027247b6f7d273b5c6e20202020202020207372633a2075726c2827247b657d27293b5c6e2020202020207d603b636f6e737420723d646f63756d656e742e637265617465456c656d656e7428227374796c6522293b72657475726e20722e74657874436f6e74656e743d612c646f63756d656e742e686561642e617070656e642872292c6f7d3b6e2e74657874466f6e743d66756e6374696f6e2865297b6e2e5f74657874466f6e743d657d3b6e2e7465787453697a653d66756e6374696f6e2865297b6e2e5f7465787453697a653d652c6e2e5f746578744c656164696e673d657d3b6e2e746578744c656164696e673d66756e6374696f6e2865297b6e2e5f746578744c656164696e673d657d3b6e2e746578745374796c653d66756e6374696f6e2865297b6e2e5f746578745374796c653d657d3b6e2e74657874416c69676e3d4d080266756e6374696f6e28652c74297b6f2e74657874416c69676e3d652c742626286f2e74657874426173656c696e653d743d3d6e2e43454e5445523f226d6964646c65223a74297d3b6e2e746578743d66756e6374696f6e28652c742c612c72297b69662821652972657475726e3b696628653d652e746f537472696e6728292c6e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652972657475726e3b6f2e666f6e743d60247b6e2e5f746578745374796c657d20247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d603b6c657420693d652e73706c697428225c6e22293b666f72286c657420653d303b653c692e6c656e6774683b652b2b296e2e5f6e6f46696c6c7c7c6f2e66696c6c5465787428695b655d2c742c612c72292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b655465787428695b655d2c742c612c72292c612b3d6e2e5f746578744c656164696e677d3b6e2e7465787457696474683d66756e6374696f6e2865297b72657475726e206f2e666f6e743d60247b6e2e5f746578745374796c657d20247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d602c6f2e6d656173757265546578742865292e77696474687d3b6e2e74657874417363656e743d66756e6374696f6e2865297b72657475726e206f2e666f6e743d60247b6e2e5f746578745374796c657d4d080220247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d602c6f2e6d656173757265546578742865292e61637475616c426f756e64696e67426f78417363656e747d3b6e2e7465787444657363656e743d66756e6374696f6e2865297b72657475726e206f2e666f6e743d60247b6e2e5f746578745374796c657d20247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d602c6f2e6d656173757265546578742865292e61637475616c426f756e64696e67426f7844657363656e747d3b76617220453d343b76617220533d2e353b76617220433d66756e6374696f6e2865297b72657475726e2e352a28312d4d6174682e636f7328652a4d6174682e504929297d3b76617220413b6e2e6e6f6973653d66756e6374696f6e28652c742c6e297b696628743d747c7c302c6e3d6e7c7c302c6e756c6c3d3d41297b413d6e65772041727261792834303936293b666f7228766172206f3d303b6f3c343039363b6f2b2b29415b6f5d3d4d6174682e72616e646f6d28297d653c30262628653d2d65292c743c30262628743d2d74292c6e3c302626286e3d2d6e293b666f722876617220612c722c692c6c2c752c733d4d6174682e666c6f6f722865292c633d4d6174682e666c6f6f722874292c683d4d6174682e666c6f6f72286e292c663d652d732c643d742d632c703d6e2d682c6d3d302c673d4d08022e352c763d303b763c453b762b2b297b766172204d3d732b28633c3c34292b28683c3c38293b613d432866292c723d432864292c693d415b34303935264d5d2c692b3d612a28415b4d2b3126343039355d2d69292c6c3d415b4d2b313626343039355d2c6c2b3d612a28415b4d2b31362b3126343039355d2d6c292c692b3d722a286c2d69292c6c3d415b3430393526284d2b3d323536295d2c6c2b3d612a28415b4d2b3126343039355d2d6c292c753d415b4d2b313626343039355d2c752b3d612a28415b4d2b31362b3126343039355d2d75292c6c2b3d722a28752d6c292c692b3d432870292a286c2d69292c6d2b3d692a672c672a3d532c733c3c3d312c633c3c3d312c683c3c3d312c28662a3d32293e3d31262628732b2b2c662d2d292c28642a3d32293e3d31262628632b2b2c642d2d292c28702a3d32293e3d31262628682b2b2c702d2d297d72657475726e206d7d3b6e2e6e6f69736544657461696c3d66756e6374696f6e28652c74297b653e30262628453d65292c743e30262628533d74297d3b636f6e737420543d66756e6374696f6e28297b6c657420652c742c6e3d343239343936373239353b72657475726e7b73657453656564286f297b653d743d286e756c6c3d3d6f3f4d6174682e72616e646f6d28292a6e3a6f293e3e3e307d2c676574536565643a28293d3e742c72616e643a28293d3e28655e3d653c3c31374d08022c655e3d653e3e31332c2828655e3d653c3c35293e3e3e30292f6e297d7d3b6c657420443d5428293b442e7365745365656428293b6e2e6e6f697365536565643d66756e6374696f6e2865297b6c657420743d6e756c6c3d3d653f343239343936373239352a4d6174682e72616e646f6d28293a653b417c7c28413d6e657720466c6f617433324172726179283430393629293b666f7228766172206e3d303b6e3c343039363b6e2b2b29745e3d743c3c31372c745e3d743e3e31332c745e3d743c3c352c415b6e5d3d28743e3e3e30292f343239343936373239357d3b6e2e72616e646f6d536565643d66756e6374696f6e2865297b442e736574536565642865297d3b6e2e72616e646f6d3d66756e6374696f6e28652c74297b72657475726e226e756d626572223d3d747970656f6620653f6e756c6c213d743f442e72616e6428292a28742d65292b653a442e72616e6428292a653a655b7e7e28652e6c656e6774682a442e72616e642829295d7d3b6e2e72616e646f6d47656e657261746f723d66756e6374696f6e2865297b653d3d6e2e4c43473f443d66756e6374696f6e28297b636f6e737420653d343239343936373239363b6c657420742c6e3b72657475726e7b73657453656564286f297b6e3d743d286e756c6c3d3d6f3f4d6174682e72616e646f6d28292a653a6f293e3e3e307d2c676574536565643a28293d3e742c724d0802616e643a28293d3e286e3d28313636343532352a6e2b31303133393034323233292565292f657d7d28293a653d3d6e2e53485233262628443d542829292c442e7365745365656428297d3b76617220503d6e65772066756e6374696f6e28297b76617220652c742c6e2c6f3d6e657720417272617928313238292c613d6e657720417272617928323536292c723d6e657720417272617928313238292c693d6e657720417272617928313238292c6c3d6e657720417272617928323536292c753d6e657720417272617928323536292c733d66756e6374696f6e28297b72657475726e20343239343936373239362a442e72616e6428292d323134373438333634387d2c633d66756e6374696f6e28297b72657475726e2e352b322e333238333036652d31302a287328293c3c30297d2c683d66756e6374696f6e28297b666f722876617220742c612c6c2c752c683d332e34343236323b3b297b696628743d6e2a725b655d2c303d3d65297b646f7b6c3d6328292c753d6328292c743d2e323930343736342a2d4d6174682e6c6f67286c292c613d2d4d6174682e6c6f672875297d7768696c6528612b613c742a74293b72657475726e206e3e303f682b743a2d682d747d696628695b655d2b6328292a28695b652d315d2d695b655d293c4d6174682e657870282d2e352a742a74292972657475726e20743b6966286e3d7328292c653d31324d080237266e2c4d6174682e616273286e293c6f5b655d2972657475726e206e2a725b655d7d7d2c663d66756e6374696f6e28297b666f7228766172206e3b3b297b696628303d3d652972657475726e20372e36393731312d4d6174682e6c6f6728632829293b6966286e3d742a6c5b655d2c755b655d2b6328292a28755b652d315d2d755b655d293c4d6174682e657870282d6e292972657475726e206e3b69662828743d732829293c615b653d32353526745d2972657475726e20742a6c5b655d7d7d3b746869732e534852333d732c746869732e554e493d632c746869732e524e4f523d66756e6374696f6e28297b72657475726e206e3d7328292c653d313237266e2c4d6174682e616273286e293c6f5b655d3f6e2a725b655d3a6828297d2c746869732e524558503d66756e6374696f6e28297b72657475726e28743d7328293e3e3e30293c6f5b653d32353526745d3f742a6c5b655d3a6628297d2c746869732e7a69677365743d66756e6374696f6e28297b76617220652c742c6e3d323134373438333634382c733d343239343936373239362c633d332e3434323631393835353839392c683d632c663d2e30303939313235363330333532363231372c643d372e3639373131373437303133313438372c703d642c6d3d2e3030333934393635393832323538313537323b666f7228653d662f4d6174682e657870282d2e352a632a634d0802292c6f5b305d3d4d6174682e666c6f6f7228632f652a6e292c6f5b315d3d302c725b305d3d652f6e2c725b3132375d3d632f6e2c695b305d3d312c695b3132375d3d4d6174682e657870282d2e352a632a63292c743d3132363b743e3d313b742d2d29633d4d6174682e73717274282d322a4d6174682e6c6f6728662f632b4d6174682e657870282d2e352a632a632929292c6f5b742b315d3d4d6174682e666c6f6f7228632f682a6e292c683d632c695b745d3d4d6174682e657870282d2e352a632a63292c725b745d3d632f6e3b666f7228653d6d2f4d6174682e657870282d64292c615b305d3d4d6174682e666c6f6f7228642f652a73292c615b315d3d302c6c5b305d3d652f732c6c5b3235355d3d642f732c755b305d3d312c755b3235355d3d4d6174682e657870282d64292c743d3235343b743e3d313b742d2d29643d2d4d6174682e6c6f67286d2f642b4d6174682e657870282d6429292c615b742b315d3d4d6174682e666c6f6f7228642f702a73292c703d642c755b745d3d4d6174682e657870282d64292c6c5b745d3d642f737d7d3b502e686173496e69743d21313b6e2e72616e646f6d476175737369616e3d66756e6374696f6e28652c74297b72657475726e20502e686173496e69747c7c28502e7a696773657428292c502e686173496e69743d2130292c502e524e4f5228292a742b657d3b6e2e72616e646f6d454d080278706f6e656e7469616c3d66756e6374696f6e28297b72657475726e20502e686173496e69747c7c28502e7a696773657428292c502e686173496e69743d2130292c502e5245585028297d3b6e2e7072696e743d636f6e736f6c652e6c6f673b6e2e637572736f723d66756e6374696f6e28652c742c6f297b6c657420613d22223b652e696e636c7564657328222e2229262628653d6075726c2822247b657d2229602c613d222c206175746f22292c6e756c6c213d74262628652b3d2220222b742b2220222b6f292c6e2e63616e7661732e7374796c652e637572736f723d652b617d3b6e2e6e6f437572736f723d66756e6374696f6e28297b6e2e63616e7661732e7374796c652e637572736f723d226e6f6e65227d3b6e2e637265617465436170747572653d66756e6374696f6e2865297b76617220743d646f63756d656e742e637265617465456c656d656e742822766964656f22293b72657475726e20742e706c617973696e6c696e653d22706c617973696e6c696e65222c742e6175746f706c61793d226175746f706c6179222c6e6176696761746f722e6d65646961446576696365732e676574557365724d656469612865292e7468656e2866756e6374696f6e2865297b742e7372634f626a6563743d657d292c742e7374796c652e706f736974696f6e3d226162736f6c757465222c742e7374796c652e6f7061636974793d4d080231652d352c742e7374796c652e7a496e6465783d2d3165332c646f63756d656e742e626f64792e617070656e644368696c642874292c747d3b6c657420623d5b227365747570222c2264726177222c227072656c6f6164222c226d6f7573654d6f766564222c226d6f75736550726573736564222c226d6f75736552656c6561736564222c226d6f75736544726167676564222c226d6f757365436c69636b6564222c226b657950726573736564222c226b657952656c6561736564222c226b65795479706564222c22746f75636853746172746564222c22746f756368456e646564225d3b666f72286c65742065206f662062297b6c657420743d225f222b652b22466e223b6e5b745d3d66756e6374696f6e28297b7d2c6e5b745d2e6973506c616365486f6c6465723d21302c6e5b655d3f6e5b745d3d6e5b655d3a4f626a6563742e646566696e6550726f7065727479286e2c652c7b7365743a66756e6374696f6e2865297b6e5b745d3d657d7d297d66756e6374696f6e207a28297b6e2e5f6e6f4c6f6f707c7c28613d6e756c6c3d3d6e2e5f6672616d65526174653f72657175657374416e696d6174696f6e4672616d65287a293a73657454696d656f7574287a2c3165332f6e2e5f6672616d655261746529292c7828292c723d21302c6f2e7361766528292c6e2e5f64726177466e28292c6f2e726573746f726528292c6e2e66724d0802616d65436f756e742b2b7d6e2e6e6f4c6f6f703d66756e6374696f6e28297b6e2e5f6e6f4c6f6f703d21302c613d6e756c6c7d3b6e2e6c6f6f703d66756e6374696f6e28297b6e2e5f6e6f4c6f6f703d21312c6e756c6c3d3d6126267a28297d3b6e2e7265647261773d66756e6374696f6e28297b7a28297d3b6e2e6672616d65526174653d66756e6374696f6e2865297b6e2e5f6672616d65526174653d657d3b73657454696d656f75742866756e6374696f6e28297b6e2e5f7072656c6f6164466e28292c633d77696e646f772e706572666f726d616e63652e6e6f7728292c66756e6374696f6e206528297b696628753e302972657475726e2073657454696d656f757428652c3130293b6e2e5f7365747570466e28293b7a28297d28297d2c31293b6e2e63616e7661732e6f6e6d6f7573656d6f76653d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643f6e2e5f6d6f75736544726167676564466e2865293a6e2e5f6d6f7573654d6f766564466e2865297d3b6e2e63616e7661732e6f6e6d6f757365646f776e3d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f75734d080265593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643d21302c6e2e6d6f757365427574746f6e3d5b6e2e4c4546542c6e2e43454e5445522c6e2e52494748545d5b652e627574746f6e5d2c6e2e5f6d6f75736550726573736564466e2865297d3b6e2e63616e7661732e6f6e6d6f75736575703d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643d21312c6e2e5f6d6f75736552656c6561736564466e2865297d3b6e2e63616e7661732e6f6e636c69636b3d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643d21302c6e2e5f6d6f757365436c69636b6564466e2865292c6e2e6d6f7573654973507265737365643d21317d3b77696e646f772e6164644576656e744c697374656e657228226b6579646f776e222c66756e6374696f6e2865297b6e2e6b65794973507265737365643d4d080221302c6e2e6b65793d652e6b65792c6e2e6b6579436f64653d652e6b6579436f64652c735b6e2e6b6579436f64655d3d21302c6e2e5f6b657950726573736564466e2865292c313d3d652e6b65792e6c656e67746826266e2e5f6b65795479706564466e2865297d293b77696e646f772e6164644576656e744c697374656e657228226b65797570222c66756e6374696f6e2865297b6e2e6b65794973507265737365643d21312c6e2e6b65793d652e6b65792c6e2e6b6579436f64653d652e6b6579436f64652c735b6e2e6b6579436f64655d3d21312c6e2e5f6b657952656c6561736564466e2865297d293b6e2e6b65794973446f776e3d66756e6374696f6e2865297b72657475726e2121735b655d7d3b66756e6374696f6e204f2865297b636f6e737420743d6e2e63616e7661732e676574426f756e64696e67436c69656e745265637428292c6f3d6e2e63616e7661732e7363726f6c6c57696474682f6e2e77696474687c7c312c613d6e2e63616e7661732e7363726f6c6c4865696768742f6e2e6865696768747c7c313b72657475726e7b783a28652e636c69656e74582d742e6c656674292f6f2c793a28652e636c69656e74592d742e746f70292f612c69643a652e6964656e7469666965727d7d66756e6374696f6e206b28297b72657475726e206e2e5f746f756368537461727465642e6973506c616365486f6c646572264d0802266e2e5f746f7563684d6f7665642e6973506c616365486f6c64657226266e2e5f746f756368456e6465642e6973506c616365486f6c6465727d6e2e63616e7661732e6f6e746f75636873746172743d66756e6374696f6e2865297b6e2e746f75636865733d652e746f75636865732e6d6170284f292c6b28292626286e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d6e2e746f75636865735b305d2e782c6e2e6d6f757365593d6e2e746f75636865735b305d2e792c6e2e6d6f7573654973507265737365643d21302c6e2e6d6f757365427574746f6e3d6e2e4c4546542c6e2e5f6d6f75736550726573736564466e2865297c7c652e70726576656e7444656661756c742829292c6e2e5f746f75636853746172746564466e2865297c7c652e70726576656e7444656661756c7428297d3b6e2e63616e7661732e6f6e746f7563686d6f76653d66756e6374696f6e2865297b6e2e746f75636865733d652e746f75636865732e6d6170284f292c6b28292626286e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d6e2e746f75636865735b305d2e782c6e2e6d6f757365593d6e2e746f75636865735b305d2e792c6e2e6d6f7573654973507265737365643d21302c6e2e6d6f757365427574746f4d08026e3d6e2e4c4546542c6e2e5f6d6f75736544726167676564466e2865297c7c652e70726576656e7444656661756c742829292c6e2e5f746f7563684d6f766564466e2865297c7c652e70726576656e7444656661756c7428297d3b6e2e63616e7661732e6f6e746f756368656e643d6e2e63616e7661732e6f6e746f75636863616e63656c3d66756e6374696f6e2865297b6e2e746f75636865733d652e746f75636865732e6d6170284f292c6b28292626286e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d6e2e746f75636865735b305d2e782c6e2e6d6f757365593d6e2e746f75636865735b305d2e792c6e2e6d6f7573654973507265737365643d21312c6e2e5f6d6f75736552656c6561736564466e2865297c7c652e70726576656e7444656661756c742829292c6e2e5f746f756368456e646564466e2865297c7c652e70726576656e7444656661756c7428297d3b6e2e68617353656e736f725065726d697373696f6e3d2177696e646f772e4465766963654f7269656e746174696f6e4576656e7426262177696e646f772e4465766963654d6f74696f6e4576656e747c7c21284465766963654f7269656e746174696f6e4576656e742e726571756573745065726d697373696f6e7c7c4465766963654d6f74696f6e4576656e742e7265717565737450654d0802726d697373696f6e293b6e2e7265717565737453656e736f725065726d697373696f6e733d66756e6374696f6e28297b4465766963654f7269656e746174696f6e4576656e742e726571756573745065726d697373696f6e26264465766963654f7269656e746174696f6e4576656e742e726571756573745065726d697373696f6e28292e7468656e28653d3e7b226772616e746564223d3d6526264465766963654d6f74696f6e4576656e742e726571756573745065726d697373696f6e26264465766963654d6f74696f6e4576656e742e726571756573745065726d697373696f6e28292e7468656e28653d3e7b226772616e746564223d3d652626286e2e68617353656e736f725065726d697373696f6e3d2130297d292e636174636828616c657274297d292e636174636828616c657274297d3b77696e646f772e6f6e6465766963656f7269656e746174696f6e3d66756e6374696f6e2865297b6e2e70526f746174696f6e583d6e2e726f746174696f6e582c6e2e70526f746174696f6e593d6e2e726f746174696f6e592c6e2e70526f746174696f6e5a3d6e2e726f746174696f6e5a2c6e2e7052656c526f746174696f6e583d6e2e72656c526f746174696f6e582c6e2e7052656c526f746174696f6e593d6e2e72656c526f746174696f6e592c6e2e7052656c526f746174696f6e5a3d6e2e72656c526f746174696f6e5a2c6e4d08022e726f746174696f6e583d652e626574612a284d6174682e50492f313830292c6e2e726f746174696f6e593d652e67616d6d612a284d6174682e50492f313830292c6e2e726f746174696f6e5a3d652e616c7068612a284d6174682e50492f313830292c6e2e72656c526f746174696f6e583d5b2d6e2e726f746174696f6e592c2d6e2e726f746174696f6e582c6e2e726f746174696f6e595d5b312b7e7e2877696e646f772e6f7269656e746174696f6e2f3930295d2c6e2e72656c526f746174696f6e593d5b2d6e2e726f746174696f6e582c6e2e726f746174696f6e592c6e2e726f746174696f6e585d5b312b7e7e2877696e646f772e6f7269656e746174696f6e2f3930295d2c6e2e72656c526f746174696f6e5a3d6e2e726f746174696f6e5a7d3b77696e646f772e6f6e6465766963656d6f74696f6e3d66756e6374696f6e2865297b6966286e2e70416363656c65726174696f6e583d6e2e616363656c65726174696f6e582c6e2e70416363656c65726174696f6e593d6e2e616363656c65726174696f6e592c6e2e70416363656c65726174696f6e5a3d6e2e616363656c65726174696f6e5a2c21652e616363656c65726174696f6e297b6c657420743d2828652c74293d3e5b28655b305d2a745b305d2b655b315d2a745b315d2b655b325d2a745b325d2b655b335d292f28655b31325d2a745b305d2b655b31335d2a745b4d0802315d2b655b31345d2a745b325d2b655b31355d292c28655b345d2a745b305d2b655b355d2a745b315d2b655b365d2a745b325d2b655b375d292f28655b31325d2a745b305d2b655b31335d2a745b315d2b655b31345d2a745b325d2b655b31355d292c28655b385d2a745b305d2b655b395d2a745b315d2b655b31305d2a745b325d2b655b31315d292f28655b31325d2a745b305d2b655b31335d2a745b315d2b655b31345d2a745b325d2b655b31355d295d29282828652c74293d3e5b655b305d2a745b305d2b655b315d2a745b345d2b655b325d2a745b385d2b655b335d2a745b31325d2c655b305d2a745b315d2b655b315d2a745b355d2b655b325d2a745b395d2b655b335d2a745b31335d2c655b305d2a745b325d2b655b315d2a745b365d2b655b325d2a745b31305d2b655b335d2a745b31345d2c655b305d2a745b335d2b655b315d2a745b375d2b655b325d2a745b31315d2b655b335d2a745b31355d2c655b345d2a745b305d2b655b355d2a745b345d2b655b365d2a745b385d2b655b375d2a745b31325d2c655b345d2a745b315d2b655b355d2a745b355d2b655b365d2a745b395d2b655b375d2a745b31335d2c655b345d2a745b325d2b655b355d2a745b365d2b655b365d2a745b31305d2b655b375d2a745b31345d2c655b345d2a745b335d2b655b355d2a745b375d2b655b365d2a745b31315d2b655b375d2a745b31354d08025d2c655b385d2a745b305d2b655b395d2a745b345d2b655b31305d2a745b385d2b655b31315d2a745b31325d2c655b385d2a745b315d2b655b395d2a745b355d2b655b31305d2a745b395d2b655b31315d2a745b31335d2c655b385d2a745b325d2b655b395d2a745b365d2b655b31305d2a745b31305d2b655b31315d2a745b31345d2c655b385d2a745b335d2b655b395d2a745b375d2b655b31305d2a745b31315d2b655b31315d2a745b31355d2c655b31325d2a745b305d2b655b31335d2a745b345d2b655b31345d2a745b385d2b655b31355d2a745b31325d2c655b31325d2a745b315d2b655b31335d2a745b355d2b655b31345d2a745b395d2b655b31355d2a745b31335d2c655b31325d2a745b325d2b655b31335d2a745b365d2b655b31345d2a745b31305d2b655b31355d2a745b31345d2c655b31325d2a745b335d2b655b31335d2a745b375d2b655b31345d2a745b31315d2b655b31355d2a745b31355d5d292828653d3e5b4d6174682e636f732865292c302c4d6174682e73696e2865292c302c302c312c302c302c2d4d6174682e73696e2865292c302c4d6174682e636f732865292c302c302c302c302c315d29286e2e726f746174696f6e59292c28653d3e5b312c302c302c302c302c4d6174682e636f732865292c2d4d6174682e73696e2865292c302c302c4d6174682e73696e2865292c4d6174682e636f732865294d08022c302c302c302c302c315d29286e2e726f746174696f6e5829292c5b302c302c2d392e38303636355d293b6e2e616363656c65726174696f6e583d652e616363656c65726174696f6e496e636c7564696e67477261766974792e782b745b305d2c6e2e616363656c65726174696f6e593d652e616363656c65726174696f6e496e636c7564696e67477261766974792e792b745b315d2c6e2e616363656c65726174696f6e5a3d652e616363656c65726174696f6e496e636c7564696e67477261766974792e7a2d745b325d7d7d3b6e2e796561723d66756e6374696f6e28297b72657475726e286e65772044617465292e67657446756c6c5965617228297d3b6e2e6461793d66756e6374696f6e28297b72657475726e286e65772044617465292e67657444617928297d3b6e2e686f75723d66756e6374696f6e28297b72657475726e286e65772044617465292e676574486f75727328297d3b6e2e6d696e7574653d66756e6374696f6e28297b72657475726e286e65772044617465292e6765744d696e7574657328297d3b6e2e7365636f6e643d66756e6374696f6e28297b72657475726e286e65772044617465292e6765745365636f6e647328297d3b6e2e6d696c6c69733d66756e6374696f6e28297b72657475726e2077696e646f772e706572666f726d616e63652e6e6f7728292d637d7d2865297d0a0a636c61737320436f6c4d08026f727b73746174696320703b7374617469632053414e445f434f4c4f525f4d4f44453d333b7374617469632067657453616e64436f6c6f724279496e64657828652c743d302c693d33302c733d3530297b65253d353b6c657420613d5b5d3b76617220722c682c6e3b666f72286c657420653d303b653c353b652b2b297b6c657420743d6525353b313d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e70757368286f287429293a323d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e70757368286c287429293a333d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682864287429293a343d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e70757368286d287429293a353d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682870287429293a363d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682867287429293a373d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682863287429293a383d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682875287429293a393d3d436f6c6f722e53414e445f434f4c4f525f4d4f44452626612e707573682876287429297d72657475726e20615b655d3b66756e6374696f6e206f2865297b72657475726e20303d3d653f28723d4d0802742b36302c683d692b352c6e3d732b35293a313d3d653f28723d742b33302c683d692b352c6e3d732b39293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742d33302c683d692b352c6e3d732b39293a343d3d65262628723d742d36302c683d692b352c6e3d732b35292c723c303f722b3d3336303a723e333630262628722d3d333630292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e206c2865297b72657475726e20723d742c303d3d653f28683d692c6e3d732b3330293a313d3d653f28683d692d33302c6e3d732b38293a323d3d653f28683d692c6e3d73293a333d3d653f28683d692d33302c6e3d732b3330293a343d3d65262628683d692c6e3d732d3230292c683c3130262628682b3d3630292c28303d3d657c7c333d3d652926266e3e3130302626286e3d732d3530292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20642865297b72657475726e20303d3d653f28723d742d3132302c683d692b31302c6e3d732d3330293a313d3d653f28723d742b3132302c683d692d31302c6e3d73293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742d3132302c683d692b31302c6e3d73293a343d3d65262628723d742b3132302c683d692b31302c6e3d732d3330292c723e3336303f722d4d08023d3336303a723c30262628722b3d333630292c683e313030262628682d3d3230292c6e3e3130302626286e2d3d3330292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e206d2865297b72657475726e20303d3d653f28723d742c683d692b31302c6e3d732d3330293a313d3d653f28723d742c683d692d33302c6e3d732b3330293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742d3138302c683d692b32302c6e3d732d3330293a343d3d65262628723d742d3138302c683d692c6e3d73292c723c30262628722b3d333630292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20702865297b72657475726e20303d3d653f28723d742d3135302c683d692d31302c6e3d732b3330293a313d3d653f28723d742d3135302c683d692d352c6e3d73293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742b3135302c683d692b31302c6e3d732b3330293a343d3d65262628723d742b3135302c683d692b352c6e3d73292c723c303f722b3d3336303a723e333630262628722d3d333630292c683e313030262628682d3d3230292c6e3e3130302626286e2d3d3630292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20672865297b72657475726e20303d3d4d0802653f28723d742b36302c683d692d35293a313d3d653f28723d742b3135302c683d692d3130293a323d3d653f28723d742c683d69293a333d3d653f28723d742d3135302c683d692b3130293a343d3d65262628723d742d36302c683d692b35292c723c303f722b3d3336303a723e333630262628722d3d333630292c683e313030262628682d3d3230292c6e3d732c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20632865297b72657475726e20303d3d653f28723d742c683d692b3230293a313d3d653f28723d742b39302c683d692d3130293a323d3d653f28723d742c683d69293a333d3d653f28723d742b3138302c683d692b3130293a343d3d65262628723d742d39302c683d692b35292c723c303f722b3d3336303a723e333630262628722d3d333630292c683e313030262628682d3d3230292c6e3d732c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20752865297b72657475726e20303d3d653f28723d742b33302c683d692b31302c6e3d732b3230293a313d3d653f28723d742b33302c683d692b34302c6e3d732b3430293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742b3136302c683d692b32352c6e3d732b35293a343d3d65262628723d742b3135302c683d692b31302c6e3d732b3230292c723e334d08023630262628722d3d333630292c28303d3d657c7c343d3d65292626683e3130303f682d3d32303a313d3d652626683e39303f682d3d38303a333d3d652626683e3630262628682d3d3530292c313d3d6526266e3e3130303f6e2d3d38303a28303d3d657c7c343d3d652926266e3e3130302626286e2d3d3430292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20762865297b72657475726e20723d742c683d692c303d3d653f6e3d732d32353a313d3d653f6e3d732b33303a323d3d653f6e3d733a333d3d653f6e3d732b353a343d3d652626286e3d732d3130292c6e3e3130302626286e2d3d3830292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d7d737461746963206368726f6d61546f41727261793d653d3e5b652e5f7267625b305d2c652e5f7267625b315d2c652e5f7267625b325d2c3235352a652e5f7267625b335d5d3b73746174696320736574436f6c6f724d6f64653d653d3e7b746869732e53414e445f434f4c4f525f4d4f44453d657d7d636c6173732047656f6d657472797b73746174696320736c696365506f6c7942795928652c74297b6c657420693d5b5d3b666f72286c657420733d303b733c652e6c656e6774683b732b2b297b6c657420613d655b735d2c723d733f655b732d315d3a652e6174282d31292c683d612e793e3d743b68214d08023d722e793e3d742626692e707573682847656f6d657472792e696e746572576974685928722c612c7429292c682626692e707573682861297d72657475726e20697d737461746963206765744172656142656c6f775928652c74297b72657475726e2047656f6d657472792e676574506f6c79417265612847656f6d657472792e736c696365506f6c7942795928652c7429297d737461746963206765745942794172656142656c6f7728652c74297b6c65745b692c732c612c725d3d47656f6d657472792e676574426f756e64696e67426f7828652c22434f4f524422292c683d732c6e3d723b666f72286c657420693d303b693c33303b2b2b69297b6c657420693d28682b6e292f323b47656f6d657472792e6765744172656142656c6f775928652c69293e743f683d693a6e3d697d72657475726e206e7d73746174696320696e746572576974685928652c742c69297b6c657420733d652e636f707928292c613d742e636f707928292c723d637265617465566563746f72282d3165392c69292c683d637265617465566563746f72283165392c69293b72657475726e2047656f6d657472792e696e74657273656374696f6e28732c612c722c68297d73746174696320676574506f6c79417265612865297b6c657420743d303b666f72286c657420693d303b693c652e6c656e6774683b692b2b297b6c657420733d655b695d2c613d4d0802655b28692b312925652e6c656e6774685d2c723d637265617465566563746f7228732e782c732e79292c683d637265617465566563746f7228612e782c612e79293b742b3d722e63726f73732868292e7a7d72657475726e20743d6162732874292f322c747d73746174696320676574426f756e64696e67426f7828652c743d2253495a4522297b6c657420693d655b305d2e782c733d655b305d2e782c613d655b305d2e792c723d655b305d2e793b666f72286c657420743d303b743c652e6c656e6774683b742b2b2969734e614e28655b745d2e79297c7c28613d6d696e28612c655b745d2e79292c723d6d617828722c655b745d2e7929292c69734e614e28655b745d2e78297c7c28693d6d696e28692c655b745d2e78292c733d6d617828732c655b745d2e7829293b72657475726e2253495a45223d3d743f5b692c612c732d692c722d615d3a22434f4f5244223d3d743f5b692c612c732c725d3a5b5d7d73746174696320696e74657273656374696f6e28652c742c692c73297b6c657420613d637265617465566563746f7228742e782d652e782c742e792d652e79292c723d637265617465566563746f7228732e782d692e782c732e792d692e79292c683d637265617465566563746f7228692e782d652e782c692e792d652e79292c6e3d28612e636f707928292e726f746174652850492f32292c722e636f707928292e726f4d0802746174652850492f3229292c6f3d682e646f74286e292f612e646f74286e292c6c3d612e6d756c74286f293b72657475726e20637265617465566563746f7228652e782b6c2e782c652e792b6c2e79297d7d636c61737320477261706869635574696c737b737461746963206170706c794d61736b28652c74297b652e7075736828292c652e6e6f5374726f6b6528292c652e626c656e644d6f64652852454d4f5645292c652e66696c6c283235352c3235352c3235352c323535292c652e626567696e536861706528292c652e76657274657828302c30292c652e76657274657828302c652e686569676874292c652e76657274657828652e77696474682c652e686569676874292c652e76657274657828652e77696474682c30292c652e626567696e436f6e746f757228293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782c745b695d2e79293b652e656e64436f6e746f757228292c652e656e64536861706528652e434c4f5345292c652e626c656e644d6f646528424c454e44292c652e706f7028297d7d636c61737320486f7572676c6173737b737461746963205449434b5f494e54455256414c3d36303b73746174696320524f544154455f494e54455256414c3d31302f333b636f6e7374727563746f7228652c74297b746869732e65766f6c7665506572696f643d4d0802652e65766f6c7665506572696f642c742e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c657420693d742e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e67652869292c746869732e757064617465286e65772044617465297d6f6e497465726174696f6e4368616e67652865297b746869732e666c69707065643d6525323d3d317d676574537461746528297b72657475726e7b746f703a746869732e746f702c726f746174696f6e3a746869732e726f746174696f6e2c666c69707065643a746869732e666c69707065642c74696d6553696e6365526f746174696f6e3a746869732e74696d6553696e6365526f746174696f6e7d7d7570646174652865297b6c657420742c693d303b6966287472616974732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c5929743d333630302c692b3d36302a652e6765744d696e7574657328292c692b3d652e6765745365636f6e647328292c692b3d652e6765744d696c6c697365636f6e647328292f3165333b656c7365206966287472616974732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c5929743d38363430302c692b3d36302a652e67654d080274486f75727328292a36302c692b3d36302a652e6765744d696e7574657328292c692b3d652e6765745365636f6e647328292c692b3d652e6765744d696c6c697365636f6e647328292f3165333b656c7365206966287472616974732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59297b6c657420733d652e67657446756c6c5965617228292c613d652e6765744d6f6e746828292b313b743d32342a6e6577204461746528732c612c30292e6765744461746528292a36302a36302c692b3d32342a28652e6765744461746528292d31292a36302a36302c692b3d36302a652e676574486f75727328292a36302c692b3d36302a652e6765744d696e7574657328292c692b3d652e6765745365636f6e647328292c692b3d652e6765744d696c6c697365636f6e647328292f3165337d746869732e666c69707065643f746869732e746f703d312d6d696e28312c692f74293a746869732e746f703d6d696e28312c692f74292c746869732e74696d6553696e6365526f746174696f6e3d6d617828302c692d486f7572676c6173732e524f544154455f494e54455256414c293b6c657420733d4d6174682e6d696e28692c486f7572676c6173732e524f544154455f494e54455256414c293b746869732e726f746174696f6e3d746869732e666c69707065643f50493a302c746869732e726f7461744d0802696f6e2b3d732f486f7572676c6173732e524f544154455f494e54455256414c2a50497d7d66756e6374696f6e2067657452616e646f6d496e7428652c74297b72657475726e20666c6f6f722872616e646f6d28652c7429297d66756e6374696f6e2067657452616e646f6d4974656d2865297b6c657420743d303b666f7228636f6e73742069206f66206529742b3d695b315d3b6c657420693d72616e646f6d2874292c733d303b666f7228636f6e73742074206f66206529696628732b3d745b315d2c693c732972657475726e20745b305d3b72657475726e206e756c6c7d66756e6374696f6e2073687566666c652865297b666f72286c657420743d313b743c652e6c656e6774683b2b2b74297b6c657420693d67657452616e646f6d496e7428302c74292c733d655b745d3b655b745d3d655b695d2c655b695d3d737d7d636c61737320506f737450726f63657373696e677b636f6e7374727563746f7228652c742c69297b746869732e7743616e7661733d652c746869732e6843616e7661733d742c746869732e677261706869633d637265617465477261706869637328746869732e7743616e7661732c746869732e6843616e766173292c746869732e75706461746546696c7465722831297d75706461746546696c74657228652c742c69297b746869732e677261706869632e66696c6c283235352c3235352c3235352c32354d080235292c746869732e677261706869632e626c656e644d6f64652852454d4f5645292c746869732e677261706869632e7265637428302c302c746869732e7743616e7661732c746869732e6843616e766173292c746869732e677261706869632e626c656e644d6f646528424c454e44293b6c657420732c613d746869732e7743616e7661732f322c723d746869732e6843616e7661732f322c683d322a7371727428612a612b722a72293b733d613e723f7371727428312d4d6174682e706f7728722f612c3229293a7371727428312d4d6174682e706f7728612f722c3229293b6c6574206e2c6f3b69662831213d616273286529297b6c657420742c693b333d3d6162732865293f28743d362c693d2e36293a31303d3d6162732865293f28743d342c693d2e35293a36303d3d6162732865293f28743d332c693d2e34293a333630303d3d616273286529262628743d322c693d2e33292c6f3d692d2e312c6e3d6d61702873696e28446174652e6e6f7728292f3165332f742a544155292c2d312c312c692d2e312c692b2e31297d656c736520693f286f3d312c6e3d31293a286f3d2e37352c6e3d2e3735293b746869732e677261706869632e7075736828292c746869732e677261706869632e656c6c697073654d6f646528524144495553292c746869732e677261706869632e7472616e736c61746528612c72293b666f72286c6574204d0802653d33393b653e3d303b652d2d297b6c657420743d28652b31292f34303b696628313d3d6f7c7c6d617028742c6f2c312c302c312e32293c3d3029627265616b3b6c657420693d6d6178286d617028742c6e2c312c302c312e32292c30292c733d636f6c6f7228302c302c302c3235352a69293b746869732e677261706869632e66696c6c2873292c746869732e677261706869632e6e6f5374726f6b6528292c746869732e677261706869632e656c6c6970736528302c302c682a612f28612b72292a742c682a722f28612b72292a74292c653e30262628743d652f34302c746869732e677261706869632e66696c6c283235352c3235352c3235352c323535292c746869732e677261706869632e626c656e644d6f64652852454d4f5645292c746869732e677261706869632e656c6c6970736528302c302c682a612f28612b72292a742c682a722f28612b72292a74292c746869732e677261706869632e626c656e644d6f646528424c454e4429297d746869732e677261706869632e706f7028297d6170706c79546f4d61696e43616e76617328297b696d61676528746869732e677261706869632c302c30297d7d636c617373204261636b67726f756e6452656e64657265727b636f6e7374727563746f7228652c742c692c732c612c72297b746869732e7743616e7661733d652e77696474682c746869732e6843616e7661733d654d08022e6865696768742c746869732e6d6178523d6d696e28746869732e7743616e7661732c746869732e6843616e766173292f313032342c746869732e64782c746869732e7976616c7565732c746869732e7876616c7565732c746869732e7873706163696e67313d5b5d2c746869732e746869636b6e657373313d5b5d2c746869732e7468657461313d5b5d2c746869732e76656c6f63697479313d5b5d2c746869732e737a313d5b5d2c746869732e7873706163696e67323d5b5d2c746869732e746869636b6e657373323d5b5d2c746869732e7468657461323d5b5d2c746869732e76656c6f63697479323d5b5d2c746869732e737a323d5b5d2c746869732e7873706163696e67333d5b5d2c746869732e746869636b6e657373333d5b5d2c746869732e7468657461333d5b5d2c746869732e76656c6f63697479333d5b5d2c746869732e737a333d5b5d2c746869732e7873706163696e67343d5b5d2c746869732e746869636b6e657373343d5b5d2c746869732e7468657461343d5b5d2c746869732e76656c6f63697479343d5b5d2c746869732e737a343d5b5d2c746869732e633d5b5d2c746869732e6e756d5f77617665733d33302c746869732e5f683d742c746869732e5f733d692c746869732e5f6c3d732c746869732e7061747465726e4f726465723d612e7061747465726e4f726465722c746869732e646961676f6e616c4d08023d73717274284d6174682e706f772877696474682c32292b4d6174682e706f77286865696768742c3229293b6c657420683d637265617465566563746f722877696474682c686569676874292e68656164696e6728292c6e3d6162732850492f342d68293b746869732e74793d746869732e646961676f6e616c2f322a636f73286e292c746869732e7761766553706565643d612e7761766553706565642c746869732e77617665506572696f643d612e77617665506572696f642c746869732e776176654865696768743d612e776176654865696768742c746869732e65766f6c7665506572696f643d612e65766f6c7665506572696f642c746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f746869732e6e756d5f6c696e65733d373a28746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c597c7c746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c5929262628746869732e6e756d5f6c696e65733d3132292c746869732e776176654865696768743d3d576176654865696768742e53484f52543f746869732e616d706c69747564653d67657452616e646f6d496e742832302c3330293a746869732e776176654865696768743d3d576176654865696768742e4d454449554d3f746869732e616d704d08026c69747564653d67657452616e646f6d496e742833302c3430293a746869732e776176654865696768743d3d576176654865696768742e54414c4c262628746869732e616d706c69747564653d67657452616e646f6d496e742834302c353029292c746869732e77617665506572696f643d3d57617665506572696f642e53484f52543f746869732e706572696f643d67657452616e646f6d496e74283330302c333531293a746869732e77617665506572696f643d3d57617665506572696f642e4d454449554d3f746869732e706572696f643d67657452616e646f6d496e74283432352c343736293a746869732e77617665506572696f643d3d57617665506572696f642e4c4f4e47262628746869732e706572696f643d67657452616e646f6d496e74283630302c36353129292c746869732e7761766553706565643d3d5761766553706565642e534c4f573f28746869732e6d696e5f73706565643d2e3030332c746869732e6d61785f73706565643d2e303035293a746869732e7761766553706565643d3d5761766553706565642e4d454449554d3f28746869732e6d696e5f73706565643d2e3030382c746869732e6d61785f73706565643d2e3031293a746869732e7761766553706565643d3d5761766553706565642e46415354262628746869732e6d696e5f73706565643d2e3031352c746869732e6d61785f73706565643d4d08022e303138292c746869732e74686574614c6973743d5b302c312f342a50492c2e352a50492c332f342a50492c50495d2c746869732e73657475705374617469635761766528292c746869732e736574757044796e616d69635761766528292c722e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c6574206f3d722e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e6765286f297d6f6e497465726174696f6e4368616e67652865297b72616e646f6d53656564283130302a652b31292c73687566666c6528746869732e7873706163696e6731292c73687566666c6528746869732e746869636b6e65737331292c73687566666c6528746869732e746865746131292c73687566666c6528746869732e7873706163696e6731292c73687566666c6528746869732e76656c6f6369747931292c73687566666c6528746869732e7873706163696e6732292c73687566666c6528746869732e746869636b6e65737332292c73687566666c6528746869732e746865746132292c73687566666c6528746869732e7873706163696e6732292c73687566666c6528746869732e76656c6f6369747932292c73687566666c6528746869732e7873706163696e6733292c73684d08027566666c6528746869732e746869636b6e65737333292c73687566666c6528746869732e746865746133292c73687566666c6528746869732e7873706163696e6733292c73687566666c6528746869732e76656c6f6369747933292c73687566666c6528746869732e7873706163696e6734292c73687566666c6528746869732e746869636b6e65737334292c73687566666c6528746869732e746865746134292c73687566666c6528746869732e7873706163696e6734292c73687566666c6528746869732e76656c6f6369747934297d73657475705374617469635761766528297b666f72286c657420653d303b653c746869732e6e756d5f77617665733b652b2b297b746869732e7873706163696e67312e707573682867657452616e646f6d496e7428352c353029292c746869732e746869636b6e657373312e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461312e70757368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479312e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a312e707573682872616e646f6d282e352c3329292c746869732e7873706163696e67322e707573682867657452616e646f6d496e4d08027428352c353029292c746869732e746869636b6e657373322e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461322e70757368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479322e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a322e707573682872616e646f6d282e352c3329292c746869732e7873706163696e67332e707573682867657452616e646f6d496e7428352c353029292c746869732e746869636b6e657373332e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461332e70757368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479332e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a332e707573682872616e646f6d282e352c3329292c746869732e7873706163696e67342e707573682867657452616e646f6d496e7428352c353029292c746869732e746869636b6e657373342e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461342e70754d08027368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479342e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a342e707573682872616e646f6d282e352c3329293b6c657420743d6525353b746869732e632e7075736828436f6c6f722e67657453616e64436f6c6f724279496e64657828742c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e323529297d7d736574757044796e616d69635761766528297b746869732e64796e616d6963576176653d7b683a72616e646f6d28746869732e6843616e7661732f33292c7873706163696e673a67657452616e646f6d496e7428352c3230292c746869636b6e6573733a67657452616e646f6d496e74283130302c323030292c74686574613a7b76616c75653a72616e646f6d28746869732e74686574614c697374297d2c76656c6f636974793a7b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d2c737a3a72616e646f6d28312c33292c6e756d5f6c696e65733a307d2c313d3d746869732e7061747465726e4f726465725b305d3f746869732e64796e616d6963576176652e683d72616e646f6d283230302c68654d0802696768742d323030293a323d3d746869732e7061747465726e4f726465725b305d3f746869732e64796e616d6963576176652e683d72616e646f6d283230302c77696474682d323030293a28333d3d746869732e7061747465726e4f726465725b305d7c7c343d3d746869732e7061747465726e4f726465725b305d29262628746869732e64796e616d6963576176652e683d72616e646f6d283230302c322a746869732e74792d32303029297d7570646174652865297b746869732e74696d653d657d64726177486f725761766528652c742c692c732c612c722c682c6e2c6f297b746869732e64783d54574f5f50492f746869732e706572696f642a692c746869732e7976616c7565733d6e657720417272617928666c6f6f722877696474682f692b323029293b6c6574206c3d746869732e74696d652e67657454696d6528292f283165332f3630292c643d722e76616c75652b682e76616c75652a6c2f352b743b666f72286c657420653d303b653c746869732e7976616c7565732e6c656e6774683b652b2b29746869732e7976616c7565735b655d3d73696e2864292a746869732e616d706c69747564652c642b3d746869732e64783b666f72286c657420723d303b723c613b722b2b297b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f2929292c744d08022b3d732f613b666f72286c657420733d303b733c746869732e7976616c7565732e6c656e6774683b732b2b297b6c657420613d732a692c723d742b746869732e7976616c7565735b735d3b723c2d327c7c723e6865696768742b327c7c652e73717561726528612c722c6e2a746869732e6d617852297d7d7d647261775665725761766528652c742c692c732c612c722c682c6e2c6f297b746869732e64783d54574f5f50492f746869732e706572696f642a692c746869732e7876616c7565733d6e657720417272617928666c6f6f72286865696768742f692b323029293b6c6574206c3d746869732e74696d652e67657454696d6528292f283165332f3630292c643d722e76616c75652b682e76616c75652a6c2f352b743b666f72286c657420653d303b653c746869732e7876616c7565732e6c656e6774683b652b2b29746869732e7876616c7565735b655d3d73696e2864292a746869732e616d706c69747564652c642b3d746869732e64783b666f72286c657420723d303b723c613b722b2b297b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f2929292c742b3d732f613b666f72286c657420733d303b733c746869732e7876616c7565732e6c656e6774683b732b2b297b6c657420613d742b746869732e7876616c7565735b735d2c723d732a694d08023b613c2d327c7c613e77696474682b327c7c652e73717561726528612c722c6e2a746869732e6d617852297d7d7d647261774469615761766528652c742c692c732c612c722c682c6e2c6f2c6c297b6c657420643d636f73282d6c292c6d3d73696e282d6c293b746869732e64783d54574f5f50492f746869732e706572696f642a692c746869732e7976616c7565733d6e657720417272617928666c6f6f7228746869732e646961676f6e616c2f6929293b6c657420703d746869732e74696d652e67657454696d6528292f283165332f3630292c673d722e76616c75652b682e76616c75652a702f352b743b666f72286c657420653d303b653c746869732e7976616c7565732e6c656e6774683b652b2b29746869732e7976616c7565735b655d3d73696e2867292a746869732e616d706c69747564652c672b3d746869732e64783b666f72286c657420723d303b723c613b722b2b297b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f2929292c742b3d732f613b666f72286c657420733d303b733c746869732e7976616c7565732e6c656e6774683b732b2b297b6c657420613d732a692c723d742b746869732e7976616c7565735b735d2c683d6e2a746869732e6d6178522c6f3d612d746869732e646961676f6e616c2f322c6c3d722d746869732e744d0802792c703d6f2a642b6c2a6d2b77696474682f322c673d2d6f2a6d2b6c2a642b6865696768742f323b703c2d327c7c703e77696474682b327c7c673c2d327c7c673e6865696768742b327c7c652e73717561726528612c722c68297d7d7d64726177486f72697a6f6e74616c2865297b6c657420743d2d35303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29746869732e64726177486f725761766528652c742c746869732e7873706163696e67315b695d2a77696474682f313032342c746869732e746869636b6e657373315b695d2a6865696768742f313032342c746869732e6e756d5f6c696e65732c746869732e7468657461315b695d2c746869732e76656c6f63697479315b695d2c746869732e737a315b695d2c746869732e635b695d292c742b3d286865696768742b3530292f746869732e6e756d5f77617665737d64726177566572746963616c2865297b6c657420743d2d35303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29746869732e647261775665725761766528652c742c746869732e7873706163696e67325b695d2a6865696768742f313032342c746869732e746869636b6e657373325b695d2a77696474682f313032342c746869732e6e756d5f6c696e65732c746869732e7468657461325b695d2c746869732e764d0802656c6f63697479325b695d2c746869732e737a325b695d2c746869732e635b695d292c742b3d2877696474682b3530292f746869732e6e756d5f77617665737d647261774c6566742865297b6c657420743d303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f746174652850492f34292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c742c746869732e7873706163696e67335b695d2a746869732e6d6178522c746869732e746869636b6e657373335b695d2a746869732e6d6178522c746869732e6e756d5f6c696e65732c746869732e7468657461335b695d2c746869732e76656c6f63697479335b695d2c746869732e737a335b695d2c746869732e635b695d2c50492f34292c652e706f7028292c742b3d28322a746869732e74792d313030292f28746869732e6e756d5f77617665732d31297d6472617752696768742865297b6c657420743d303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f74617465284d0802332a50492f34292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c742c746869732e7873706163696e67345b695d2a746869732e6d6178522c746869732e746869636b6e657373345b695d2a746869732e6d6178522c746869732e6e756d5f6c696e65732c746869732e7468657461345b695d2c746869732e76656c6f63697479345b695d2c746869732e737a345b695d2c746869732e635b695d2c332a50492f34292c652e706f7028292c742b3d28322a746869732e74792d313030292f28746869732e6e756d5f77617665732d31297d647261775061747465726e28652c74297b313d3d743f746869732e64726177486f72697a6f6e74616c2865293a323d3d743f746869732e64726177566572746963616c2865293a333d3d743f746869732e647261774c6566742865293a746869732e6472617752696768742865297d6472617728652c742c692c732c61297b746869732e5f683d732e682c746869732e5f733d732e732c746869732e5f6c3d732e6c2c652e6261636b67726f756e642830293b6c657420723d742e676574486f75727328293e3d362626742e676574486f75727328293c31383f2e323a2e30352c683d436f6c6f722e67657453616e64436f6c6f724279496e64657828342c746869732e5f682c746869732e5f732c4d0802746869732e5f6c292e6c756d696e616e63652872292e616c706861282e35293b696628652e6261636b67726f756e6428636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928682929292c21612972657475726e3b746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f746869732e64796e616d6963576176652e6e756d5f6c696e65733d28742e676574486f75727328292b3131292531322b313a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f746869732e64796e616d6963576176652e6e756d5f6c696e65733d742e67657444617928292b313a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628746869732e64796e616d6963576176652e6e756d5f6c696e65733d742e6765744d6f6e746828292b31293b666f72286c657420653d303b653c746869732e6e756d5f77617665733b652b2b297b6c657420743d6525353b746869732e635b655d3d436f6c6f722e67657453616e64436f6c6f724279496e64657828742c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e3235297d313d3d693f28333d3d746869732e7061747465726e4f726465725b305d7c7c343d3d746869732e7061747465726e4f726465725b305d4d08023f746869732e6e756d5f77617665733d33303a746869732e6e756d5f77617665733d32302c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d29293a323d3d693f28746869732e7061747465726e4f726465725b305d2b746869732e7061747465726e4f726465725b315d3d3d333f746869732e6e756d5f77617665733d31303a746869732e7061747465726e4f726465725b305d2b746869732e7061747465726e4f726465725b315d3d3d373f746869732e6e756d5f77617665733d32303a746869732e6e756d5f77617665733d31352c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b315d29293a333d3d693f28746869732e6e756d5f77617665733d31302c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b315d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b325d29293a28746869732e6e756d5f77617665733d31302c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d292c4d0802746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b315d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b325d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b335d29293b6c65747b683a6e2c7873706163696e673a6f2c746869636b6e6573733a6c2c6e756d5f6c696e65733a642c74686574613a6d2c76656c6f636974793a702c737a3a677d3d746869732e64796e616d6963576176652c633d436f6c6f722e67657453616e64436f6c6f724279496e64657828302c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e35293b313d3d746869732e7061747465726e4f726465725b305d3f746869732e64726177486f725761766528652c6e2c6f2a77696474682f313032342c6c2a6865696768742f313032342c642c6d2c702c672c63293a323d3d746869732e7061747465726e4f726465725b305d3f746869732e647261775665725761766528652c6e2c6f2a6865696768742f313032342c6c2a77696474682f313032342c642c6d2c702c672c63293a333d3d746869732e7061747465726e4f726465725b305d3f28652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f746174652850492f4d080234292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c6e2c6f2a746869732e6d6178522c6c2a746869732e6d6178522c642c6d2c702c672c632c50492f34292c652e706f702829293a343d3d746869732e7061747465726e4f726465725b305d262628652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f7461746528332a50492f34292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c6e2c6f2a746869732e6d6178522c6c2a746869732e6d6178522c642c6d2c702c672c632c332a50492f34292c652e706f702829297d7d636c61737320477261696e52656e64657265727b73746174696320746578747572653b7374617469632064656c7461583b7374617469632064656c7461593b737461746963206d617844656c74613d3130303b737461746963207743616e7661733b737461746963206843616e7661733b73746174696320736574757028652c74297b477261696e52656e64657265722e7743616e7661733d652b477261696e52656e64657265722e6d617844656c74612c477261696e52656e64657265722e6843616e7661733d742b477261696e52656e646572654d0802722e6d617844656c74612c477261696e52656e64657265722e64656c7461583d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c30292c477261696e52656e64657265722e64656c7461593d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c30292c477261696e52656e64657265722e746578747572653d637265617465496d61676528477261696e52656e64657265722e7743616e7661732c477261696e52656e64657265722e6843616e766173292c477261696e52656e64657265722e746578747572652e6c6f6164506978656c7328293b6c657420693d477261696e52656e64657265722e746578747572652e706978656c44656e7369747928293b666f72286c657420653d303b653c477261696e52656e64657265722e7743616e7661733b652b2b29666f72286c657420743d303b743c477261696e52656e64657265722e6843616e7661733b742b2b297b6c657420733d3231362e37352c613d3235352c723d72616e646f6d28732c61292c683d72616e646f6d28732c61292c6e3d72616e646f6d28732c61293b666f72286c657420733d303b733c693b732b2b29666f72286c657420613d303b613c693b612b2b297b6c6574206f3d342a2828742a692b61292a477261696e52656e64657265722e7743616e7661732a692b28652a692b7329293b477261696e52656e644d0802657265722e746578747572652e706978656c735b6f5d3d722c477261696e52656e64657265722e746578747572652e706978656c735b6f2b315d3d682c477261696e52656e64657265722e746578747572652e706978656c735b6f2b325d3d6e2c477261696e52656e64657265722e746578747572652e706978656c735b6f2b335d3d3235357d7d477261696e52656e64657265722e746578747572652e757064617465506978656c7328297d737461746963206170706c79477261696e28652c74297b6c657420693d21217426267b61744672616d653a317d3b652e746578747572654f7665726c617928477261696e52656e64657265722e746578747572652c7b6d6f64653a4255524e2c616e696d6174653a697d297d737461746963206170706c79477261696e546f4d61696e43616e7661732865297b626c656e644d6f6465284255524e292c65262628477261696e52656e64657265722e64656c7461583d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c30292c477261696e52656e64657265722e64656c7461593d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c3029292c696d61676528477261696e52656e64657265722e746578747572652c477261696e52656e64657265722e64656c7461582c477261696e52656e64657265722e64656c746159297d7d636f6e4d0802737420486f7572676c61737353697a653d7b534d414c4c3a22534d414c4c222c4d454449554d3a224d454449554d222c4c415247453a224c41524745227d3b636c61737320486f7572676c61737352656e64657265727b636f6e7374727563746f7228652c742c69297b746869732e6e4c617965723d31302c746869732e7743616e7661733d652e77696474682c746869732e6843616e7661733d652e6865696768742c746869732e686f7572676c61737353697a653d742e686f7572676c61737353697a652c746869732e706f6c793d742e706f6c792c746869732e65766f6c7665506572696f643d742e65766f6c7665506572696f642c746869732e78633d746869732e7743616e7661732f322c746869732e79633d746869732e6843616e7661732f322c746869732e78313d746869732e78632b72616e646f6d283130302c333030292c746869732e79313d746869732e79632b72616e646f6d283130302c333030292c746869732e78323d746869732e78632b72616e646f6d283130302c333030292c746869732e79323d746869732e79632b72616e646f6d283130302c333030292c746869732e78316d3d746869732e7743616e7661732d746869732e78312c746869732e79316d3d746869732e79312c746869732e6d6178523d6d696e28746869732e7743616e7661732c746869732e6843616e766173292f322c313d3d746869734d08022e706f6c793f746869732e6d61696e5261646975733d2e312a746869732e6d6178522a343a746869732e6d61696e5261646975733d2e312a746869732e6d6178522a67657452616e646f6d496e7428312c36292c692e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c657420733d692e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e67652873292c746869732e746f706c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c5049292c746869732e626f74746f6d6c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c30292c746869732e73616e6452656374733d5b47656f6d657472792e676574426f756e64696e67426f7828746869732e746f706c696e65292c47656f6d657472792e676574426f756e64696e67426f7828746869732e626f74746f6d6c696e65295d2c746869732e6578636974656d656e743d2e31352a6d617828746869732e73616e6452656374735b305d5b325d2c746869732e73616e6452656374735b305d5b335d292c746869732e64783d5b5d2c746869732e64793d5b5d3b666f72286c657420653d303b653c324d08022a746869732e6e4c617965723b2b2b6529746869732e64785b655d3d72616e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74292c746869732e64795b655d3d72616e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74293b746869732e6375725365636f6e643d286e65772044617465292e6765745365636f6e647328292c746869732e726f74617465416e676c653d307d6f6e497465726174696f6e4368616e67652865297b72616e646f6d53656564283130302a652b32292c746869732e7374617274416e676c653d746869732e6765745374617274416e676c6528292c746869732e72616469757365733d746869732e676574526164697573657328297d676574497465726174696f6e2865297b6c657420742c693d652e67657454696d6528292d36302a652e67657454696d657a6f6e654f666673657428292a3165333b72657475726e20746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f743d666c6f6f7228692f33366535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f743d666c6f6f7228692f3836346535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628743d31322a284d0802652e67657446756c6c5965617228292d31393730292b652e6765744d6f6e74682829292c747d6765745374617274416e676c6528297b6c657420653d67657452616e646f6d496e7428312c36293b72657475726e2050492f28322e352b2e352a65297d676574526164697573657328297b6c657420652c743b746869732e686f7572676c61737353697a653d3d486f7572676c61737353697a652e4d454449554d3f28653d2e34352a746869732e6d6178522c743d2e35352a746869732e6d617852293a746869732e686f7572676c61737353697a653d3d486f7572676c61737353697a652e4c41524745262628653d2e362a746869732e6d6178522c743d2e372a746869732e6d617852293b6c657420693d5b5d3b666f72286c657420733d303b733c746869732e706f6c793b732b2b297b6c657420613b613d303d3d733f653a72616e646f6d28652c74292c692e707573682861297d72657475726e20697d75706461746528652c74297b696628652e6765745365636f6e64732829213d746869732e6375725365636f6e64297b746869732e6375725365636f6e643d652e6765745365636f6e647328292c746869732e7365636f6e645469636b65643d21302c746869732e726f74617465416e676c652b3d50492f33303b666f72286c657420653d303b653c322a746869732e6e4c617965723b2b2b6529746869732e64785b655d3d72614d08026e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74292c746869732e64795b655d3d72616e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74297d656c736520746869732e7365636f6e645469636b65643d21313b746869732e746f706c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c50492b74292c746869732e626f74746f6d6c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c74292c746869732e73616e6452656374733d5b47656f6d657472792e676574426f756e64696e67426f7828746869732e746f706c696e65292c47656f6d657472792e676574426f756e64696e67426f7828746869732e626f74746f6d6c696e65295d2c746869732e74696d653d652c746869732e726f746174696f6e3d747d6472617728652c742c69297b6c657420733d692e6c756d696e616e6365282e33293b652e66696c6c283235352c3235352c3235352c323535292c652e626c656e644d6f64652852454d4f5645292c652e7265637428302c302c746869732e7743616e7661732c746869732e6843616e766173292c652e626c656e644d6f646528424c454e44292c303d3d743f746869732e64726177536861646f774e6f726d616c28654d08022c732c746869732e74696d65293a313d3d742626746869732e64726177536861646f77436972636c6528652c73292c652e66696c6c283235352c3235352c3235352c323535292c652e626c656e644d6f64652852454d4f5645292c746869732e64726177536861706528652c746869732e746f706c696e65292c746869732e64726177536861706528652c746869732e626f74746f6d6c696e65292c652e626c656e644d6f646528424c454e44297d64726177536861646f774e6f726d616c28652c742c69297b6c657420733d666c6f6f7228692e6765744d696e7574657328292f3130292c613d692e6765744d696e7574657328292531303b652e7075736828292c652e6e6f46696c6c28292c652e7374726f6b65576569676874282e3030352a746869732e6d617852293b666f72286c657420693d303b693c733b692b2b297b6c657420613d6d617028692c732c302c2e322c2e35292c723d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128612929293b652e7374726f6b652872292c746869732e676574416e6444726177506f6c79676f6e28652c746869732e78632b746869732e64785b322a695d2c746869732e79632b746869732e64795b322a695d2c746869732e706f6c792c5049297d666f72286c657420693d303b693c613b692b2b297b6c657420733d6d617028692c612c302c2e4d0802322c2e35292c723d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128732929293b652e7374726f6b652872292c746869732e676574416e6444726177506f6c79676f6e28652c746869732e78632b746869732e64785b322a692b315d2c746869732e79632b746869732e64795b322a692b315d2c746869732e706f6c792c30297d652e706f7028297d64726177536861646f77436972636c6528652c74297b652e7075736828292c652e6e6f5374726f6b6528292c652e7472616e736c61746528746869732e78632c746869732e7963292c652e726f746174652850492b746869732e726f74617465416e676c65293b666f72286c657420693d303b693c333b692b2b297b6c657420733d6d617028692c332c302c2e322c2e35292c613d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128732929293b652e66696c6c2861292c746869732e676574416e6444726177506f6c79676f6e28652c302c322e352a746869732e6d61696e5261646975732c746869732e706f6c792c5049292c746869732e676574416e6444726177506f6c79676f6e28652c302c322e352a2d746869732e6d61696e5261646975732c746869732e706f6c792c30292c652e726f746174652850492f33297d652e706f7028292c652e7075736828292c652e6e6f46696c6c28292c4d0802652e7374726f6b655765696768742832292c652e7472616e736c61746528746869732e78632c746869732e7963292c652e726f74617465282d746869732e726f74617465416e676c652b50492f3330293b666f72286c657420693d303b693c333b692b2b297b6c657420733d6d617028692c332c302c2e322c2e35292c613d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128732929293b652e7374726f6b652861292c746869732e676574416e6444726177506f6c79676f6e28652c302c2d746869732e6d61696e5261646975732f322c746869732e706f6c792c5049292c746869732e676574416e6444726177506f6c79676f6e28652c302c746869732e6d61696e5261646975732f322c746869732e706f6c792c30292c652e726f74617465282d50492f33297d652e706f7028297d676574416e6444726177506f6c79676f6e28652c742c692c732c61297b6c657420723d746869732e706f6c79676f6e28742c692c732c61293b746869732e64726177536861706528652c72297d64726177536861706528652c74297b652e626567696e536861706528293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782c745b695d2e79293b652e656e64536861706528652e434c4f5345297d706f6c79676f6e28652c742c692c73297b6c654d08027420613d2850492f322d746869732e7374617274416e676c65292f692c723d302c683d5b5d3b682e70757368287b783a652c793a747d293b6c6574206e3d746869732e7374617274416e676c652b733b666f72286c657420733d303b733c693b732b2b297b6c657420693d746869732e72616469757365735b725d3b722b3d313b6c657420733d652b636f73286e292a692c6f3d742b73696e286e292a693b682e70757368287b783a732c793a6f7d292c6e2b3d617d723d746869732e706f6c792c6e3d50492f322b612b733b666f72286c657420733d303b733c693b732b2b297b722d3d313b6c657420693d746869732e72616469757365735b725d2c733d652b636f73286e292a692c6f3d742b73696e286e292a693b682e70757368287b783a732c793a6f7d292c6e2b3d617d72657475726e20683d682e66696c7465722828653d3e2169734e614e28652e782926262169734e614e28652e792929292c687d67657453616e6452656374733d28293d3e746869732e73616e6452656374733b676574546f704c696e653d28293d3e746869732e746f706c696e653b676574426f74746f6d4c696e653d28293d3e746869732e626f74746f6d6c696e653b6765745365636f6e645469636b65643d28293d3e746869732e7365636f6e645469636b65647d636f6e73742057617665506572696f643d7b53484f52543a2253484f5254222c4d454d08024449554d3a224d454449554d222c4c4f4e473a224c4f4e47227d2c576176654865696768743d7b53484f52543a2253484f5254222c4d454449554d3a224d454449554d222c54414c4c3a2254414c4c227d2c5761766553706565643d7b534c4f573a22534c4f57222c4d454449554d3a224d454449554d222c464153543a2246415354227d3b636c6173732053616e6452656e64657265727b737461746963204e5f43555256455f504f494e543d35303b7374617469632044524f50444f574e5f54494d453d333b636f6e7374727563746f7228652c742c692c732c612c722c682c6e297b746869732e7743616e7661733d652e77696474682c746869732e6843616e7661733d652e6865696768742c746869732e68496e69743d742c746869732e626173654c696e653d746869732e7472616e73666f726d436f6f72642869292c746869732e62617365483d732c746869732e62617365533d612c746869732e626173654c3d722c746869732e6375725365636f6e643d302c746869732e776176654865696768743d682e776176654865696768742c746869732e77617665506572696f643d682e77617665506572696f642c746869732e7761766553706565643d682e7761766553706565642c746869732e65766f6c7665506572696f643d682e65766f6c7665506572696f642c746869732e6e53616e644c617965723d362c746869732e6c4d080261796572733d746869732e6765744c617965727328292c746869732e5f683d746869732e62617365482c746869732e5f733d746869732e62617365532c746869732e5f6c3d746869732e626173654c2c746869732e70726576497465726174696f6e3d6e756c6c2c6e2e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c6574206f3d6e2e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e6765286f297d6f6e497465726174696f6e4368616e67652865297b6e756c6c3d3d746869732e70726576497465726174696f6e3f746869732e5f683d746869732e67657448756528746869732e62617365482c302c65293a746869732e5f683d746869732e67657448756528746869732e5f682c746869732e70726576497465726174696f6e2c65292c746869732e70726576497465726174696f6e3d657d67657448756528652c742c69297b6c657420733d6d696e28742c69292c613d6d617828742c69293b666f72286c657420723d733b723c613b722b2b297b72616e646f6d53656564283130302a722b33293b6c657420733d72616e646f6d2831293b696628746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f733d4d08026d617028732c302c312c352c3130293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f733d6d617028732c302c312c31302c3330293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628733d6d617028732c302c312c35302c31303029292c693e7429666f7228652b3d733b653e3336303b29652d3d3336303b656c736520666f7228652d3d733b653c303b29652b3d3336307d72657475726e20657d7570646174652865297b746869732e74696d653d657d6765744368726f6d6128297b72657475726e20436f6c6f722e67657453616e64436f6c6f724279496e64657828302c746869732e5f682c746869732e5f732c746869732e5f6c297d6765744261736548534c28297b72657475726e7b683a746869732e5f682c733a746869732e5f732c6c3a746869732e5f6c7d7d6472617728652c742c692c732c61297b746869732e6e4c617965723d28746869732e74696d652e676574486f75727328292b3131292531322b312c743d746869732e7472616e73666f726d436f6f72642874292c652e6261636b67726f756e642830293b6c657420723d746869732e6765744368726f6d6128292e6c756d696e616e6365282e35292e616c706861282e3235293b652e6261636b67726f756e6428636f6c6f72282e2e2e436f6c6f722e634d080268726f6d61546f417272617928722929292c652e7374726f6b655765696768742831292c746869732e6c61796572732e666f72456163682828653d3e7b696628303d3d652e696429652e633d436f6c6f722e67657453616e64436f6c6f724279496e64657828652e69642c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e32292e616c7068612831293b656c73657b6c657420743d6d617028652e69642f746869732e6e53616e644c617965722c302c312c2e352c2e38293b652e633d436f6c6f722e67657453616e64436f6c6f724279496e64657828652e69642c746869732e5f682c746869732e5f732c746869732e5f6c292e616c7068612874297d6c657420733d6d617028692c302c312c652e626173656c696e65592c746869732e68496e6974292c613d6d617828302c6d617028732c746869732e68496e69742c302c302c3129292c723d47656f6d657472792e676574506f6c79417265612874292a613b652e793d47656f6d657472792e6765745942794172656142656c6f7728742c72292c652e793d6d617028652e792c302c746869732e68496e69742c2e30352a2d746869732e6843616e7661732c746869732e68496e69742b2e30352a746869732e6843616e766173297d29292c746869732e6c61796572732e666f72456163682828693d3e7b732626322a692e69643c746869734d08022e6e4c617965722626746869732e6472617744726f70646f776e28652c742c692c61297d29292c746869732e6c61796572732e666f72456163682828743d3e746869732e647261774c6179657228652c742929293b6c657420683d21313b746869732e74696d652e6765745365636f6e64732829213d746869732e6375725365636f6e64262628746869732e6375725365636f6e643d746869732e74696d652e6765745365636f6e647328292c683d2130292c477261706869635574696c732e6170706c794d61736b28652c74297d7472616e73666f726d436f6f72642865297b6c65745b742c692c732c615d3d47656f6d657472792e676574426f756e64696e67426f782865292c723d742b732c683d692b613b72657475726e20652e6d61702828653d3e7b6c6574206e3d6d617028652e782c742c722c2d732f322c732f32292b746869732e7743616e7661732f322c6f3d6d617028652e792c692c682c302c61293b72657475726e20637265617465566563746f72286e2c6f297d29297d6765744c617965727328297b6c657420653d5b5d3b666f72286c657420743d303b743c746869732e6e53616e644c617965723b742b2b297b6c657420692c733d746869732e68496e69742f746869732e6e53616e644c617965722a743b746869732e7761766553706565643d3d5761766553706565642e534c4f573f693d72616e646f6d282e304d080230382c2e303132293a746869732e7761766553706565643d3d5761766553706565642e4d454449554d3f693d72616e646f6d282e3031362c2e303234293a746869732e7761766553706565643d3d5761766553706565642e46415354262628693d72616e646f6d282e3033322c2e30343829293b6c657420612c722c683d72616e646f6d28316534293b746869732e77617665506572696f643d3d57617665506572696f642e53484f52543f613d72616e646f6d28322e372c33293a746869732e77617665506572696f643d3d57617665506572696f642e4d454449554d3f613d72616e646f6d28312e382c32293a746869732e77617665506572696f643d3d57617665506572696f642e4c4f4e47262628613d72616e646f6d28312e322c312e3329292c746869732e776176654865696768743d3d576176654865696768742e53484f52543f723d746869732e6843616e7661732f33303a746869732e776176654865696768743d3d576176654865696768742e4d454449554d3f723d746869732e6843616e7661732f32343a746869732e776176654865696768743d3d576176654865696768742e54414c4c262628723d746869732e6843616e7661732f3138293b6c6574206e3d7b6d6f64653a2244454c54415f59222c64656c7461593a28652c74293d3e6d61702873696e28652a612a5441552b742a692b68292c2d312c312c2d722c724d0802297d3b652e70757368287b69643a742c626173656c696e65593a732c6865696768743a722c73706565643a692c736565643a682c73686170653a6e2c7374726970653a7b64697374616e63653a72616e646f6d282e30342a746869732e68496e69742c2e30382a746869732e68496e6974292c6865696768743a72616e646f6d282e30322a746869732e68496e69742c2e30342a746869732e68496e6974292c737472657463683a72616e646f6d28312e322c312e35292c636f6c6f725472616e73666f726d3a653d3e652e627269676874656e28312e32297d7d297d72657475726e20657d6472617744726f70646f776e3d28652c742c692c73293d3e7b6c65747b633a612c73686170653a727d3d692c683d47656f6d657472792e676574426f756e64696e67426f782874295b335d2c6e3d746869732e74696d652e67657454696d6528292f283165332f3630292c6f3d637265617465566563746f7228746869732e7743616e7661732f322c30292c6c3d637265617465566563746f7228746869732e7743616e7661732f322c68292c643d5b5d3b666f72286c657420653d303b653c35303b652b2b297b6c657420743d652f34392c693d6f2e636f707928292c7b783a732c793a617d3d566563746f722e6c65727028692c6c2c74293b732b3d722e64656c74615928742c2d6e2f35292a6d617028652c302c35302c2e312c312e35292c4d0802642e7075736828637265617465566563746f7228732c6129297d6c6574206d3d6d617028732c302c53616e6452656e64657265722e44524f50444f574e5f54494d452c302c3530293b6d3d6d696e286d2c3530292c652e7075736828292c652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928612929293b666f72286c657420743d303b743c6d3b742b2b29652e73717561726528645b745d2e782c645b745d2e792c2e3030342a746869732e6843616e766173293b652e706f7028297d3b647261774c617965723d28652c74293d3e7b696628322a742e69643c746869732e6e4c61796572297b6c657420693d746869732e6765744c61796572506f696e746c696e652874293b746869732e647261775761766528652c692c74292c746869732e647261775061747465726e28652c692c742c746869732e6843616e7661732f382c746869732e6843616e7661732f3630292c322a742e69642b313c746869732e6e4c617965722626746869732e6472617753747269706528652c692c74297d7d3b6765744c61796572506f696e746c696e653d653d3e7b6c65747b793a742c73686170653a697d3d652c733d5b5d2c613d746869732e74696d652e67657454696d6528292f283165332f3630293b6966282244454c54415f59223d3d692e6d6f6465297b6c657420653d4d0802637265617465566563746f7228302c74292c723d637265617465566563746f7228746869732e7743616e7661732c74293b666f72286c657420743d303b743c53616e6452656e64657265722e4e5f43555256455f504f494e543b742b2b297b6c657420683d742f2853616e6452656e64657265722e4e5f43555256455f504f494e542d31292c6e3d652e636f707928292c7b783a6f2c793a6c7d3d566563746f722e6c657270286e2c722c68293b6c2b3d692e64656c74615928682c612f35292c732e7075736828637265617465566563746f72286f2c6c29297d7d656c736520733d5b73746172742c656e645d3b72657475726e20737d3b64726177576176653d28652c742c69293d3e7b6c65747b633a737d3d693b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928732929292c652e626567696e536861706528292c652e76657274657828302c746869732e6843616e766173293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782c745b695d2e79293b652e76657274657828746869732e7743616e7661732c746869732e6843616e766173292c652e656e64536861706528297d3b647261775061747465726e3d28652c742c692c732c61293d3e7b652e6e6f5374726f6b6528293b666f72286c65744d080220693d613b693c3d733b692b3d61297b6c657420613d6d61702828692d31292f28732d31292c302c312c2e322c30293b652e66696c6c28302c3235352a61292c652e626567696e536861706528293b666f72286c657420733d303b733c742e6c656e6774683b732b2b29652e76657274657828745b735d2e782c745b735d2e792b69293b666f72286c657420733d742e6c656e6774682d313b733e3d303b732d2d29652e76657274657828745b735d2e782c745b735d2e792b28692d3129293b652e656e64536861706528297d7d3b647261775374726970653d28652c742c69293d3e7b6c65747b633a732c7374726970653a7b64697374616e63653a612c6865696768743a722c737472657463683a682c636f6c6f725472616e73666f726d3a6e7d7d3d693b652e6e6f5374726f6b6528293b6c6574206f3d6e2873292c6c3d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f29292c643d732e616c70686128293b6c2e736574416c706861283235352a64292c652e66696c6c286c292c652e626567696e536861706528293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782a682c745b695d2e792b61293b666f72286c657420693d742e6c656e6774682d313b693e3d303b692d2d29652e76657274657828745b695d2e782a682c745b695d2e792b614d08022b72293b652e656e64536861706528297d7d6e65772051352822676c6f62616c22293b6c6574207743616e7661732c6843616e7661732c63616e7661732c74696d65436f6e74726f6c6c65722c686f7572676c6173732c6c617965724261636b67726f756e642c6c6179657253616e64546f702c6c6179657253616e64426f74746f6d2c6c61796572486f7572676c6173732c72656e4261636b67726f756e642c72656e53616e64546f702c72656e53616e64426f74746f6d2c72656e486f7572676c6173732c72656e506f737450726f63657373696e672c7472616974732c7072657653706565642c73686f774d6f64652c63757272656e7454696d652c6d61784670733d36303b73657475703d28293d3e7b736574757052616e646f6d28292c736574757054726169747328292c7365747570536b6574636828297d2c736574757052616e646f6d3d28293d3e7b6c657420653d7035736565643b72616e646f6d536565642865292c6e6f697365536565642865297d2c73657475705472616974733d28293d3e7b6c657420653d67657452616e646f6d496e7428312c3130292c743d67657452616e646f6d4974656d285b5b486f7572676c61737353697a652e4d454449554d2c37305d2c5b486f7572676c61737353697a652e4c415247452c33305d5d292c693d67657452616e646f6d4974656d285b5b576176654865696768742e53484d08024f52542c315d2c5b576176654865696768742e4d454449554d2c315d2c5b576176654865696768742e54414c4c2c315d5d292c733d67657452616e646f6d4974656d285b5b57617665506572696f642e53484f52542c315d2c5b57617665506572696f642e4d454449554d2c315d2c5b57617665506572696f642e4c4f4e472c315d5d292c613d67657452616e646f6d4974656d285b5b5761766553706565642e534c4f572c315d2c5b5761766553706565642e4d454449554d2c315d2c5b5761766553706565642e464153542c315d5d292c723d67657452616e646f6d4974656d285b5b45766f6c7665506572696f642e484f55524c592c36305d2c5b45766f6c7665506572696f642e4441494c592c33355d2c5b45766f6c7665506572696f642e4d4f4e54484c592c355d5d292c683d67657452616e646f6d4974656d285b5b312c355d2c5b322c32305d2c5b332c35305d2c5b342c32305d2c5b352c355d5d292c6e3d6765745061747465726e4f7264657228292c6f3d67657452616e646f6d4974656d28416e67656c4e756d6265722e6d61702828653d3e5b655b305d2c315d2929292c6c3d67657452616e646f6d4974656d28426c6973734c696d69742e6d61702828653d3e5b655b305d2c655b325d5d2929293b7472616974733d7b776176654865696768743a692c77617665506572696f643a732c7761766553706565643a612c4d080265766f6c7665506572696f643a722c636f6c6f723a652c686f7572676c61737353697a653a742c706f6c793a682c7061747465726e4f726465723a6e2c616e67656c4e756d6265723a6f2c626c6973734c696d69743a6c7d2c636f6e736f6c652e6c6f6728747261697473297d2c6765745061747465726e4f726465723d28293d3e7b6c657420653d5b5d2c743d5b312c322c332c345d2c693d67657452616e646f6d4974656d285b5b312c2e365d2c5b322c2e315d2c5b332c2e31355d2c5b342c2e31355d5d293b652e707573682869292c7061747465726e43686f73656e3d742e696e6465784f662869292c783d742e73706c696365287061747465726e43686f73656e2c31293b666f72286c657420733d303b733c333b732b2b29693d72616e646f6d2874292c652e707573682869292c7061747465726e43686f73656e3d742e696e6465784f662869292c783d742e73706c696365287061747465726e43686f73656e2c31293b72657475726e20657d2c7365747570536b657463683d28293d3e7b6672616d6552617465286d6178467073292c6672616d65436f756e743d302c7743616e7661733d77696e646f7757696474682c6843616e7661733d77696e646f774865696768742c63616e7661733d63726561746543616e766173287743616e7661732c6843616e766173292c73686f774d6f64653d302c74696d65436f6e74726f4d08026c6c65723d6e65772054696d65436f6e74726f6c6c657228747261697473292c686f7572676c6173733d6e657720486f7572676c617373287472616974732c74696d65436f6e74726f6c6c6572293b6c657420653d67657452616e646f6d496e7428302c333631292c743d67657452616e646f6d496e742833302c313031292c693d67657452616e646f6d496e742835302c313031293b436f6c6f722e736574436f6c6f724d6f6465287472616974732e636f6c6f72292c6c617965724261636b67726f756e643d6372656174654772617068696373287743616e7661732c6843616e766173292c72656e4261636b67726f756e643d6e6577204261636b67726f756e6452656e6465726572286c617965724261636b67726f756e642c652c742c692c7472616974732c74696d65436f6e74726f6c6c6572292c6c61796572486f7572676c6173733d6372656174654772617068696373287743616e7661732c6843616e766173292c72656e486f7572676c6173733d6e657720486f7572676c61737352656e6465726572286c61796572486f7572676c6173732c7472616974732c74696d65436f6e74726f6c6c6572293b6c657420733d72656e486f7572676c6173732e67657453616e645265637473287743616e7661732c6843616e766173292c613d72656e486f7572676c6173732e676574546f704c696e6528292c723d72656e486f75724d0802676c6173732e676574426f74746f6d4c696e6528292c683d637265617465566563746f7228735b305d5b325d2c735b305d5b335d292e6d616728293b6c6179657253616e64546f703d637265617465477261706869637328682c68292c6c6179657253616e64426f74746f6d3d637265617465477261706869637328682c68292c72656e53616e64546f703d6e65772053616e6452656e6465726572286c6179657253616e64546f702c735b305d5b335d2c612c652c742c692c7472616974732c74696d65436f6e74726f6c6c6572292c72656e53616e64426f74746f6d3d6e65772053616e6452656e6465726572286c6179657253616e64426f74746f6d2c735b305d5b335d2c722c652c742c692c7472616974732c74696d65436f6e74726f6c6c6572292c696d6753616e64546f703d6372656174654772617068696373287743616e7661732c6843616e766173292c696d6753616e64426f74746f6d3d6372656174654772617068696373287743616e7661732c6843616e766173292c72656e506f737450726f63657373696e673d6e657720506f737450726f63657373696e67287743616e7661732c6843616e7661732c747261697473292c477261696e52656e64657265722e7365747570287743616e7661732c6843616e766173292c7072657653706565643d317d2c647261773d28293d3e7b6c657420653d303d3d73686f774d6f4d080264657c7c313d3d73686f774d6f64652c743d303d3d73686f774d6f64657c7c323d3d73686f774d6f64652c7b74696d653a692c73746174653a732c73706565643a612c7061757365643a722c69734c6976653a682c7265616c44656c74613a6e7d3d74696d65436f6e74726f6c6c65722e7374657028293b686f7572676c6173732e7570646174652869292c72656e53616e64546f702e7570646174652869292c72656e53616e64426f74746f6d2e7570646174652869292c72656e4261636b67726f756e642e7570646174652869293b6c6574206f3d343d3d733f313a302c7b746f703a6c2c726f746174696f6e3a642c666c69707065643a6d2c74696d6553696e6365526f746174696f6e3a707d3d686f7572676c6173732e676574537461746528293b72656e486f7572676c6173732e75706461746528692c64293b6c657420673d72656e53616e64546f702e6765744368726f6d6128292c633d72656e53616e64546f702e6765744261736548534c28293b6966286261636b67726f756e6428323535292c72656e4261636b67726f756e642e64726177286c617965724261636b67726f756e642c692c732c632c65292c696d616765286c617965724261636b67726f756e642c302c30292c74297b6c657420653d72656e486f7572676c6173732e67657453616e64526563747328293b72656e486f7572676c6173732e64726177286c4d080261796572486f7572676c6173732c6f2c67292c72656e53616e64546f702e64726177286c6179657253616e64546f702c72656e486f7572676c6173732e676574546f704c696e6528292c312d6c2c216d2c70292c72656e53616e64426f74746f6d2e64726177286c6179657253616e64426f74746f6d2c72656e486f7572676c6173732e676574426f74746f6d4c696e6528292c6c2c6d2c70292c696d616765286c6179657253616e64546f702c2e2e2e655b305d2c286c6179657253616e64546f702e77696474682d655b305d5b325d292f322c302c655b305d5b325d2c655b305d5b335d292c696d616765286c6179657253616e64426f74746f6d2c2e2e2e655b315d2c286c6179657253616e64426f74746f6d2e77696474682d655b315d5b325d292f322c302c655b315d5b325d2c655b315d5b335d292c696d616765286c61796572486f7572676c6173732c302c30297d6c657420753d72656e486f7572676c6173732e6765745365636f6e645469636b656428293b477261696e52656e64657265722e6170706c79477261696e546f4d61696e43616e7661732875292c72656e506f737450726f63657373696e672e75706461746546696c74657228612c722c68292c7072657653706565643d612c72656e506f737450726f63657373696e672e6170706c79546f4d61696e43616e76617328292c63757272656e7454696d653d697d4d08022c6b6579507265737365643d28293d3e7b222b22213d6b65792626223d22213d6b65797c7c74696d65436f6e74726f6c6c65722e736574466173746572537065656428292c222d223d3d6b6579262674696d65436f6e74726f6c6c65722e736574536c6f776572537065656428292c6b6579436f64653d3d4c4546545f4152524f57262674696d65436f6e74726f6c6c65722e6a756d704261636b7761726428292c6b6579436f64653d3d52494748545f4152524f57262674696d65436f6e74726f6c6c65722e6a756d70466f727761726428292c6b6579436f64653d3d455343415045262674696d65436f6e74726f6c6c65722e726573756d654c69766528292c2220223d3d6b6579262674696d65436f6e74726f6c6c65722e746f67676c65506175736528292c225422213d6b65792626227422213d6b65797c7c2873686f774d6f64653d2873686f774d6f64652b31292533292c225322213d6b65792626227322213d6b65797c7c7361766543616e766173417443757272656e7454696d6528297d2c7361766543616e766173417443757272656e7454696d653d28293d3e7b6c657420653d36302a6e657720446174652863757272656e7454696d65292e67657454696d657a6f6e654f666673657428292a3165332c743d6e657720446174652863757272656e7454696d652d65292e746f49534f537472696e6728292e736c696365284d0802302c2d31293b7361766528742b222e706e6722297d3b636f6e73742045766f6c7665506572696f643d7b484f55524c593a22484f55524c59222c4441494c593a224441494c59222c4d4f4e54484c593a224d4f4e54484c59227d2c416e67656c4e756d6265723d5b5b2231312f3131312f31313131222c5b22313a31222c22313a3131222c2231313a31222c2231313a3131225d2c5b22312f31222c2231312f31222c22312f3131222c2231312f3131225d5d2c5b2232322f3232322f32323232222c5b22323a32222c22323a3232222c2232323a32222c2232323a3232225d2c5b22322f32222c2232322f32225d5d2c5b2233332f3333332f33333333222c5b22333a33222c22333a3333225d2c5b22332f33225d5d2c5b2234342f3434342f34343434222c5b22343a34222c22343a3434225d2c5b22342f34225d5d2c5b2235352f3535352f353535222c5b22353a35222c22353a3535225d2c5b22352f35225d5d2c5b2236362f3636362f36363636222c5b22363a36225d2c5b22362f36225d5d2c5b2237372f3737372f37373737222c5b22373a37225d2c5b22372f37225d5d2c5b2238382f3838382f38383838222c5b22383a38225d2c5b22382f38225d5d2c5b2239392f3939392f39393939222c5b22393a39225d2c5b22392f39225d5d2c5b2231323132222c5b2231323a3132225d2c5b2231322f3132225d5d2c5b223339392f4d0802333339222c5b22333a3339225d2c5b22332f33222c22392f33222c22332f39222c22392f39225d5d2c5b2238332f38383333222c5b22383a33225d2c5b22382f33222c22332f38225d5d2c5b2237322f37373232222c5b22373a32225d2c5b22372f32222c22322f37225d5d2c5b223633332f36333633222c5b22363a33222c22363a3333225d2c5b22362f33222c22332f36225d5d2c5b22353838222c5b22353a38222c22383a3538225d2c5b22382f35222c22352f38222c22382f38225d5d2c5b223434362f34363436222c5b22343a36222c22343a3436225d2c5b22342f34222c22362f34222c22342f36225d5d2c5b22303030222c5b5d2c5b5d5d2c5b2231303130222c5b2231303a3130225d2c5b2231302f3130225d5d2c5b2231303137222c5b2231303a3137222c2231373a3130225d2c5b2231372f3130225d5d2c5b2231303232222c5b2231303a3232222c2232323a3130225d2c5b2232322f3130225d5d2c5b2231333133222c5b2231333a3133225d2c5b22312f33222c22332f31225d5d2c5b2231343434222c5b2231343a3434225d2c5b22342f31222c22312f34222c22342f34225d5d2c5b2232303230222c5b2232303a3230225d2c5b22322f32225d5d5d2c426c6973734c696d69743d5b5b22466f7265766572222c2d312c335d2c5b2232222c322c34305d2c5b2235222c352c33305d2c5b223130222c31302c324d0802305d2c5b223230222c32302c375d5d3b636c6173732054696d65436f6e74726f6c6c65727b636f6e7374727563746f722865297b746869732e7370656564733d5b2d333630302c2d36302c2d31302c2d332c312c332c31302c36302c333630305d2c746869732e64656661756c7453706565644c6576656c3d342c746869732e65766f6c7665506572696f643d652e65766f6c7665506572696f642c746869732e616e67656c4e756d6265723d652e616e67656c4e756d6265722c746869732e626c6973734c696d69743d652e626c6973734c696d69742c746869732e74696d657374616d703d446174652e6e6f7728292c746869732e707265765265616c54696d657374616d703d746869732e74696d657374616d702c746869732e7061757365643d21312c746869732e73706565644c6576656c3d746869732e64656661756c7453706565644c6576656c3b6c657420743d6e6577204461746528746869732e74696d657374616d70293b746869732e697465726174696f6e3d746869732e676574497465726174696f6e2874292c746869732e70726576426c6973733d746869732e67657450726576426c69737328742c31292c746869732e697465726174696f6e4368616e676548616e646c6572733d5b5d7d67657443757272656e74497465726174696f6e3d28293d3e746869732e697465726174696f6e3b676574497465726174694d08026f6e2865297b6c657420742c693d652e67657454696d6528292d36302a652e67657454696d657a6f6e654f666673657428292a3165333b72657475726e20746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f743d666c6f6f7228692f33366535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f743d666c6f6f7228692f3836346535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628743d31322a28652e67657446756c6c5965617228292d31393730292b652e6765744d6f6e74682829292c747d7265676973746572497465726174696f6e4368616e67654576656e742865297b746869732e697465726174696f6e4368616e676548616e646c6572732e707573682865297d756e7265676973746572497465726174696f6e4368616e67654576656e742865297b746869732e697465726174696f6e4368616e676548616e646c6572733d746869732e697465726174696f6e4368616e676548616e646c6572732e66696c7465722828743d3e74213d6529297d7374657028297b6c657420653d446174652e6e6f7728292c743d652d746869732e707265765265616c54696d657374616d702c693d746869732e7370656564735b746869732e73706565644c6576656c5d2c734d08023d746869732e7061757365643f303a693b746869732e74696d657374616d702b3d742a732c746869732e74696d657374616d703d746869732e6c696d697454696d657374616d7028746869732e74696d657374616d70293b6c657420613d6e6577204461746528746869732e74696d657374616d70292c723d746869732e676574537461746546726f6d54696d652861293b746869732e757064617465497465726174696f6e2861292c746869732e707265765265616c54696d657374616d703d653b6c657420683d746869732e74696d657374616d703d3d653b72657475726e7b74696d653a612c73746174653a722c73706565643a692c7061757365643a746869732e7061757365642c69734c6976653a682c7265616c44656c74613a747d7d757064617465497465726174696f6e2865297b6c657420743d746869732e676574497465726174696f6e2865293b74213d746869732e697465726174696f6e262628746869732e697465726174696f6e4368616e676548616e646c6572732e666f72456163682828653d3e6528742929292c746869732e697465726174696f6e3d74297d676574537461746546726f6d54696d652865297b6c657420742c692c733d652e676574486f75727328292c613d652e6765744d696e7574657328292c723d652e6765744461746528292c683d652e6765744d6f6e746828292b313b696628223030304d0802223d3d746869732e616e67656c4e756d62657229693d303d3d732626303d3d612c743d692626313d3d722626313d3d683b656c73657b6c657420653d60247b737d3a247b617d602c6e3d60247b687d2f247b727d602c6f3d416e67656c4e756d6265722e66696c7465722828653d3e655b305d3d3d746869732e616e67656c4e756d62657229295b305d3b693d6f5b315d2e696e636c756465732865292c743d6f5b325d2e696e636c75646573286e297d72657475726e20692626743f343a743f333a693f323a317d6c696d697454696d657374616d702865297b6c657420743d426c6973734c696d69742e66696c7465722828653d3e655b305d3d3d746869732e626c6973734c696d697429295b305d5b315d2c693d446174652e6e6f7728292c733d746869732e67657450726576426c697373286e657720446174652c74293b72657475726e20653e693f28653d692c746869732e726573657453706565642829293a653c73262628653d732c746869732e726573657453706565642829292c657d67657450726576426c69737328652c74297b6966282d313d3d742972657475726e20303b6c657420693d652e67657454696d6528292d652e6765744d696c6c697365636f6e647328292d3165332a652e6765745365636f6e647328293b666f72283b743e303b297b692d3d3665343b6c657420653d746869732e676574537461746546724d08026f6d54696d65286e65772044617465286929293b32213d65262634213d657c7c28742d3d31297d72657475726e20697d6765744e657874426c69737328652c74297b6966282d313d3d742972657475726e20446174652e6e6f7728293b6c657420693d652e67657454696d6528292d652e6765744d696c6c697365636f6e647328292d3165332a652e6765745365636f6e647328293b666f72283b743e303b297b692b3d3665343b6c657420653d746869732e676574537461746546726f6d54696d65286e65772044617465286929293b32213d65262634213d657c7c28742d3d31297d72657475726e20697d746f67676c65506175736528297b746869732e7061757365643d21746869732e7061757365647d736574466173746572537065656428297b746869732e73706565644c6576656c3d6d696e28746869732e73706565644c6576656c2b312c746869732e7370656564732e6c656e6774682d31292c746869732e7061757365643d21317d736574536c6f776572537065656428297b746869732e73706565644c6576656c3d6d617828746869732e73706565644c6576656c2d312c30292c746869732e7061757365643d21317d6a756d70466f727761726428297b6c657420653d6e6577204461746528746869732e74696d657374616d70293b746869732e74696d657374616d703d746869732e6765744e657874426c69737328654d7f012c31292c746869732e74696d657374616d703d746869732e6c696d697454696d657374616d7028746869732e74696d657374616d70292c746869732e7265736574537065656428297d6a756d704261636b7761726428297b6c657420653d6e6577204461746528746869732e74696d657374616d70293b746869732e74696d657374616d703d746869732e67657450726576426c69737328652c31292c746869732e74696d657374616d703d746869732e6c696d697454696d657374616d7028746869732e74696d657374616d70292c746869732e7265736574537065656428297d7265736574537065656428297b746869732e73706565644c6576656c3d746869732e64656661756c7453706565644c6576656c2c746869732e7061757365643d21317d726573756d654c69766528297b746869732e74696d657374616d703d446174652e6e6f7728292c746869732e7265736574537065656428297d7d0a202020203c2f7363726970743e0a20203c2f626f64793e0a3c2f68746d6c3e68202f999ff8eab1a4bf972c7b0f7b12390ae35997c46d85b5b960ef045743cc92bfac0063036f7264010117746578742f68746d6c3b636861727365743d7574662d38004d08023c21444f43545950452068746d6c3e0a3c68746d6c206c616e673d22656e223e0a20203c686561643e0a202020203c7374796c653e0a2020202068746d6c2c20626f6479207b0a2020202020206d617267696e3a20303b0a20202020202070616464696e673a20303b0a202020207d0a2020202063616e766173207b0a202020202020646973706c61793a20626c6f636b3b0a202020207d0a202020203c2f7374796c653e0a202020203c6d65746120636861727365743d227574662d3822202f3e0a20203c2f686561643e0a20203c626f64793e0a202020203c6d61696e3e0a202020203c2f6d61696e3e0a202020203c7363726970743e0a202020206c657420736565643d77696e646f772e6c6f636174696f6e2e687265662e73706c697428272f27292e66696e6428743d3e742e696e636c75646573282769302729293b0a0a202020206966202873656564203d3d206e756c6c29207b2020202020200a20202020202073656564203d206e65772055524c536561726368506172616d732877696e646f772e6c6f636174696f6e2e736561726368292e67657428227365656422293b0a202020207d20656c7365207b0a2020202020206c6574207061747465726e203d2022736565643d223b0a202020202020666f72286c65742069203d20303b2069203c20736565642e6c656e677468202d207061747465726e2e6c656e6774683b204d08022b2b6929207b0a202020202020202069662028736565642e737562737472696e6728692c2069202b207061747465726e2e6c656e67746829203d3d207061747465726e29207b0a2020202020202020202073656564203d20736565642e737562737472696e672869202b207061747465726e2e6c656e677468293b0a20202020202020202020627265616b3b0a20202020202020207d0a2020202020207d0a202020207d0a0a2020202066756e6374696f6e2063797262313238282429207b0a2020202020206c6574205f203d20313737393033333730332c2075203d20333134343133343237372c2069203d20313031333930343234322c206c203d20323737333438303736323b0a202020202020666f7220286c6574206e203d20302c20723b206e203c20242e6c656e6774683b206e2b2b29205f203d2075205e204d6174682e696d756c285f205e202872203d20242e63686172436f64654174286e29292c20353937333939303637292c2075203d2069205e204d6174682e696d756c2875205e20722c2032383639383630323333292c2069203d206c205e204d6174682e696d756c2869205e20722c20393531323734323133292c206c203d205f205e204d6174682e696d756c286c205e20722c2032373136303434313739293b0a20202020202072657475726e205f203d204d6174682e696d756c2869205e205f203e3e3e2031382c4d080220353937333939303637292c2075203d204d6174682e696d756c286c205e2075203e3e3e2032322c2032383639383630323333292c2069203d204d6174682e696d756c285f205e2069203e3e3e2031372c20393531323734323133292c206c203d204d6174682e696d756c2875205e206c203e3e3e2031392c2032373136303434313739292c205b285f205e2075205e2069205e206c29203e3e3e20302c202875205e205f29203e3e3e20302c202869205e205f29203e3e3e20302c20286c205e205f29203e3e3e20305d0a202020207d0a0a2020202066756e6374696f6e20736663333228242c205f2c20752c206929207b0a20202020202072657475726e2066756e6374696f6e202829207b0a202020202020202075203e3e3e3d20302c2069203e3e3e3d20303b0a2020202020202020766172206c203d202824203e3e3e3d203029202b20285f203e3e3e3d203029207c20303b0a202020202020202072657475726e2024203d205f205e205f203e3e3e20392c205f203d2075202b202875203c3c203329207c20302c2075203d202875203d2075203c3c203231207c2075203e3e3e20313129202b20286c203d206c202b202869203d2069202b2031207c203029207c203029207c20302c20286c203e3e3e203029202f20343239343936373239360a2020202020207d0a202020207d0a0a202020206c6574206d61746852616e64203d4d0802207366633332282e2e2e63797262313238287365656429293b0a0a202020206c657420703573656564203d204d6174682e666c6f6f72286d61746852616e642829202a204e756d6265722e4d41585f534146455f494e5445474552293b0a0a2166756e6374696f6e28722c65297b226f626a656374223d3d747970656f66206578706f727473262622756e646566696e656422213d747970656f66206d6f64756c653f6d6f64756c652e6578706f7274733d6528293a2266756e6374696f6e223d3d747970656f6620646566696e652626646566696e652e616d643f646566696e652865293a28723d22756e646566696e656422213d747970656f6620676c6f62616c546869733f676c6f62616c546869733a727c7c73656c66292e6368726f6d613d6528297d28746869732c66756e6374696f6e28297b2275736520737472696374223b666f722876617220723d66756e6374696f6e28722c652c74297b72657475726e20766f696420303d3d3d65262628653d30292c766f696420303d3d3d74262628743d31292c723c653f653a723e743f743a727d2c653d722c743d7b7d2c6e3d302c613d5b22426f6f6c65616e222c224e756d626572222c22537472696e67222c2246756e6374696f6e222c224172726179222c2244617465222c22526567457870222c22556e646566696e6564222c224e756c6c225d3b6e3c612e6c656e6774683b6e4d08022b3d31297b76617220663d615b6e5d3b745b225b6f626a65637420222b662b225d225d3d662e746f4c6f7765724361736528297d766172206f3d66756e6374696f6e2872297b72657475726e20745b4f626a6563742e70726f746f747970652e746f537472696e672e63616c6c2872295d7c7c226f626a656374227d2c633d6f2c753d6f2c693d4d6174682e50492c6c3d7b636c69705f7267623a66756e6374696f6e2872297b722e5f636c69707065643d21312c722e5f756e636c69707065643d722e736c6963652830293b666f722876617220743d303b743c3d333b742b2b29743c333f2828725b745d3c307c7c725b745d3e32353529262628722e5f636c69707065643d2130292c725b745d3d6528725b745d2c302c32353529293a333d3d3d74262628725b745d3d6528725b745d2c302c3129293b72657475726e20727d2c6c696d69743a722c747970653a6f2c756e7061636b3a66756e6374696f6e28722c65297b72657475726e20766f696420303d3d3d65262628653d6e756c6c292c722e6c656e6774683e3d333f41727261792e70726f746f747970652e736c6963652e63616c6c2872293a226f626a656374223d3d6328725b305d292626653f652e73706c6974282222292e66696c7465722866756e6374696f6e2865297b72657475726e20766f69642030213d3d725b305d5b655d7d292e6d61702866756e6374696f6e284d080265297b72657475726e20725b305d5b655d7d293a725b305d7d2c6c6173743a66756e6374696f6e2872297b696628722e6c656e6774683c322972657475726e206e756c6c3b76617220653d722e6c656e6774682d313b72657475726e22737472696e67223d3d7528725b655d293f725b655d2e746f4c6f7765724361736528293a6e756c6c7d2c50493a692c54574f50493a322a692c504954484952443a692f332c444547325241443a692f3138302c524144324445473a3138302f697d2c643d7b666f726d61743a7b7d2c6175746f6465746563743a5b5d7d2c683d6c2e6c6173742c623d6c2e636c69705f7267622c733d6c2e747970652c703d642c673d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628226f626a656374223d3d3d7328725b305d292626725b305d2e636f6e7374727563746f722626725b305d2e636f6e7374727563746f723d3d3d746869732e636f6e7374727563746f722972657475726e20725b305d3b76617220743d682872292c6e3d21313b6966282174297b6e3d21302c702e736f727465647c7c28702e6175746f6465746563743d702e6175746f6465746563742e736f72742866756e6374696f6e28722c65297b72657475726e20652e702d722e707d292c702e736f727465644d08023d2130293b666f722876617220613d302c663d702e6175746f6465746563743b613c662e6c656e6774683b612b3d31297b766172206f3d665b615d3b696628743d6f2e746573742e6170706c79286f2c722929627265616b7d7d69662821702e666f726d61745b745d297468726f77206e6577204572726f722822756e6b6e6f776e20666f726d61743a20222b72293b76617220633d702e666f726d61745b745d2e6170706c79286e756c6c2c6e3f723a722e736c69636528302c2d3129293b746869732e5f7267623d622863292c333d3d3d746869732e5f7267622e6c656e6774682626746869732e5f7267622e707573682831297d3b672e70726f746f747970652e746f537472696e673d66756e6374696f6e28297b72657475726e2266756e6374696f6e223d3d7328746869732e686578293f746869732e68657828293a225b222b746869732e5f7267622e6a6f696e28222c22292b225d227d3b76617220763d672c793d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c7928792e436f6c6f722c5b6e756c6c5d2e636f6e63617428722929297d3b792e436f6c6f723d762c792e76657273696f6e3d22322e342e4d080232223b766172206d3d792c6b3d6c2e756e7061636b2c773d4d6174682e6d61782c4d3d6c2e756e7061636b2c5f3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d4d28722c22636d796b2229295b305d2c6e3d725b315d2c613d725b325d2c663d725b335d2c6f3d722e6c656e6774683e343f725b345d3a313b72657475726e20313d3d3d663f5b302c302c302c6f5d3a5b743e3d313f303a3235352a28312d74292a28312d66292c6e3e3d313f303a3235352a28312d6e292a28312d66292c613e3d313f303a3235352a28312d61292a28312d66292c6f5d7d2c4e3d6d2c463d762c783d642c503d6c2e756e7061636b2c523d6c2e747970652c473d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d6b28722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d312d77286e2f3d3235352c7728612f3d3235352c662f3d32353529292c633d6f3c313f312f28312d6f293a303b72657475726e5b28312d6e2d6f292a632c28312d612d6f292a632c28312d662d6f292a632c6f5d7d3b462e70726f746f747970652e636d796b3d66754d08026e6374696f6e28297b72657475726e204728746869732e5f726762297d2c4e2e636d796b3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c7928462c5b6e756c6c5d2e636f6e63617428722c5b22636d796b225d2929297d2c782e666f726d61742e636d796b3d5f2c782e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d5028722c22636d796b22292c226172726179223d3d3d522872292626343d3d3d722e6c656e6774682972657475726e22636d796b227d7d293b766172206a3d6c2e756e7061636b2c453d6c2e6c6173742c4f3d66756e6374696f6e2872297b72657475726e204d6174682e726f756e64283130302a72292f3130307d2c713d6c2e756e7061636b2c423d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d7128722c22726762612229295b305d2c6e4d08023d725b315d2c613d725b325d3b742f3d3235352c6e2f3d3235352c612f3d3235353b76617220662c6f2c633d4d6174682e6d696e28742c6e2c61292c753d4d6174682e6d617828742c6e2c61292c693d28752b63292f323b72657475726e20753d3d3d633f28663d302c6f3d4e756d6265722e4e614e293a663d693c2e353f28752d63292f28752b63293a28752d63292f28322d752d63292c743d3d753f6f3d286e2d61292f28752d63293a6e3d3d753f6f3d322b28612d74292f28752d63293a613d3d752626286f3d342b28742d6e292f28752d6329292c286f2a3d3630293c302626286f2b3d333630292c722e6c656e6774683e332626766f69642030213d3d725b335d3f5b6f2c662c692c725b335d5d3a5b6f2c662c695d7d2c493d6c2e756e7061636b2c413d6c2e6c6173742c443d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d6a28722c2268736c6122292c6e3d452872297c7c226c7361223b72657475726e20745b305d3d4f28745b305d7c7c30292c745b315d3d4f283130302a745b315d292b2225222c745b325d3d4f283130302a745b325d292b2225222c2268736c61223d3d3d6e7c7c742e6c656e6774683e332626745b335d3c313f28745b335d3d742e6c656e6774683e333f745b4d0802335d3a312c6e3d2268736c6122293a742e6c656e6774683d332c6e2b2228222b742e6a6f696e28222c22292b2229227d2c433d422c593d4d6174682e726f756e642c533d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d4928722c227267626122292c6e3d412872297c7c22726762223b72657475726e2268736c223d3d6e2e73756273747228302c33293f4428432874292c6e293a28745b305d3d5928745b305d292c745b315d3d5928745b315d292c745b325d3d5928745b325d292c282272676261223d3d3d6e7c7c742e6c656e6774683e332626745b335d3c3129262628745b335d3d742e6c656e6774683e333f745b335d3a312c6e3d227267626122292c6e2b2228222b742e736c69636528302c22726762223d3d3d6e3f333a34292e6a6f696e28222c22292b222922297d2c4c3d6c2e756e7061636b2c243d4d6174682e726f756e642c543d66756e6374696f6e28297b666f722876617220722c653d5b5d2c743d617267756d656e74732e6c656e6774683b742d2d3b29655b745d3d617267756d656e74735b745d3b766172206e2c612c662c6f3d28653d4c28652c2268736c2229295b305d2c633d655b315d2c753d655b325d3b696628303d3d3d63296e3d613d663d3235352a753b656c734d0802657b76617220693d5b302c302c305d2c6c3d5b302c302c305d2c643d753c2e353f752a28312b63293a752b632d752a632c683d322a752d642c623d6f2f3336303b695b305d3d622b312f332c695b315d3d622c695b325d3d622d312f333b666f722876617220733d303b733c333b732b2b29695b735d3c30262628695b735d2b3d31292c695b735d3e31262628695b735d2d3d31292c362a695b735d3c313f6c5b735d3d682b362a28642d68292a695b735d3a322a695b735d3c313f6c5b735d3d643a332a695b735d3c323f6c5b735d3d682b28642d68292a28322f332d695b735d292a363a6c5b735d3d683b6e3d28723d5b24283235352a6c5b305d292c24283235352a6c5b315d292c24283235352a6c5b325d295d295b305d2c613d725b315d2c663d725b325d7d72657475726e20652e6c656e6774683e333f5b6e2c612c662c655b335d5d3a5b6e2c612c662c315d7d2c4b3d542c573d642c583d2f5e7267625c285c732a282d3f5c642b292c5c732a282d3f5c642b295c732a2c5c732a282d3f5c642b295c732a5c29242f2c5a3d2f5e726762615c285c732a282d3f5c642b292c5c732a282d3f5c642b295c732a2c5c732a282d3f5c642b295c732a2c5c732a285b30315d7c5b30315d3f5c2e5c642b295c29242f2c483d2f5e7267625c285c732a282d3f5c642b283f3a5c2e5c642b293f29252c5c732a282d3f5c642b283f3a5c2e5c4d0802642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a5c29242f2c7a3d2f5e726762615c285c732a282d3f5c642b283f3a5c2e5c642b293f29252c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a285b30315d7c5b30315d3f5c2e5c642b295c29242f2c553d2f5e68736c5c285c732a282d3f5c642b283f3a5c2e5c642b293f292c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a5c29242f2c563d2f5e68736c615c285c732a282d3f5c642b283f3a5c2e5c642b293f292c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a282d3f5c642b283f3a5c2e5c642b293f29255c732a2c5c732a285b30315d7c5b30315d3f5c2e5c642b295c29242f2c4a3d4d6174682e726f756e642c513d66756e6374696f6e2872297b76617220653b696628723d722e746f4c6f7765724361736528292e7472696d28292c572e666f726d61742e6e616d6564297472797b72657475726e20572e666f726d61742e6e616d65642872297d63617463682872297b7d696628653d722e6d61746368285829297b666f722876617220743d652e736c69636528312c34292c6e3d303b6e3c333b6e2b2b29745b6e5d3d2b745b6e5d3b72657475726e4d080220745b335d3d312c747d696628653d722e6d61746368285a29297b666f722876617220613d652e736c69636528312c35292c663d303b663c343b662b2b29615b665d3d2b615b665d3b72657475726e20617d696628653d722e6d61746368284829297b666f7228766172206f3d652e736c69636528312c34292c633d303b633c333b632b2b296f5b635d3d4a28322e35352a6f5b635d293b72657475726e206f5b335d3d312c6f7d696628653d722e6d61746368287a29297b666f722876617220753d652e736c69636528312c35292c693d303b693c333b692b2b29755b695d3d4a28322e35352a755b695d293b72657475726e20755b335d3d2b755b335d2c757d696628653d722e6d61746368285529297b766172206c3d652e736c69636528312c34293b6c5b315d2a3d2e30312c6c5b325d2a3d2e30313b76617220643d4b286c293b72657475726e20645b335d3d312c647d696628653d722e6d61746368285629297b76617220683d652e736c69636528312c34293b685b315d2a3d2e30312c685b325d2a3d2e30313b76617220623d4b2868293b72657475726e20625b335d3d2b655b345d2c627d7d3b512e746573743d66756e6374696f6e2872297b72657475726e20582e746573742872297c7c5a2e746573742872297c7c482e746573742872297c7c7a2e746573742872297c7c552e746573742872297c7c562e746573742872294d08027d3b7661722072723d6d2c65723d762c74723d642c6e723d6c2e747970652c61723d532c66723d513b65722e70726f746f747970652e6373733d66756e6374696f6e2872297b72657475726e20617228746869732e5f7267622c72297d2c72722e6373733d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792865722c5b6e756c6c5d2e636f6e63617428722c5b22637373225d2929297d2c74722e666f726d61742e6373733d66722c74722e6175746f6465746563742e70757368287b703a352c746573743a66756e6374696f6e2872297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774682d313b742d2d203e303b29655b745d3d617267756d656e74735b742b315d3b69662821652e6c656e677468262622737472696e67223d3d3d6e72287229262666722e746573742872292972657475726e22637373227d7d293b766172206f723d762c63723d6d2c75723d6c2e756e7061636b3b642e666f726d61742e676c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d4d08023b76617220743d757228722c227267626122293b72657475726e20745b305d2a3d3235352c745b315d2a3d3235352c745b325d2a3d3235352c747d2c63722e676c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79286f722c5b6e756c6c5d2e636f6e63617428722c5b22676c225d2929297d2c6f722e70726f746f747970652e676c3d66756e6374696f6e28297b76617220723d746869732e5f7267623b72657475726e5b725b305d2f3235352c725b315d2f3235352c725b325d2f3235352c725b335d5d7d3b7661722069723d6c2e756e7061636b2c6c723d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e3d697228722c2272676222292c613d6e5b305d2c663d6e5b315d2c6f3d6e5b325d2c633d4d6174682e6d696e28612c662c6f292c753d4d6174682e6d617828612c662c6f292c693d752d632c6c3d3130302a692f3235352c643d632f283235352d69292a3130303b72657475726e20303d3d3d693f743d4e756d6265722e4e614e3a28613d3d3d75262628743d4d080228662d6f292f69292c663d3d3d75262628743d322b286f2d61292f69292c6f3d3d3d75262628743d342b28612d66292f69292c28742a3d3630293c30262628742b3d33363029292c5b742c6c2c645d7d2c64723d6c2e756e7061636b2c68723d4d6174682e666c6f6f722c62723d66756e6374696f6e28297b666f722876617220722c652c742c6e2c612c662c6f3d5b5d2c633d617267756d656e74732e6c656e6774683b632d2d3b296f5b635d3d617267756d656e74735b635d3b76617220752c692c6c2c643d286f3d6472286f2c226863672229295b305d2c683d6f5b315d2c623d6f5b325d3b622a3d3235353b76617220733d3235352a683b696628303d3d3d6829753d693d6c3d623b656c73657b3336303d3d3d64262628643d30292c643e333630262628642d3d333630292c643c30262628642b3d333630293b76617220703d687228642f3d3630292c673d642d702c763d622a28312d68292c793d762b732a28312d67292c6d3d762b732a672c6b3d762b733b7377697463682870297b6361736520303a753d28723d5b6b2c6d2c765d295b305d2c693d725b315d2c6c3d725b325d3b627265616b3b6361736520313a753d28653d5b792c6b2c765d295b305d2c693d655b315d2c6c3d655b325d3b627265616b3b6361736520323a753d28743d5b762c6b2c6d5d295b305d2c693d745b315d2c6c3d745b325d3b627265616b3b634d080261736520333a753d286e3d5b762c792c6b5d295b305d2c693d6e5b315d2c6c3d6e5b325d3b627265616b3b6361736520343a753d28613d5b6d2c762c6b5d295b305d2c693d615b315d2c6c3d615b325d3b627265616b3b6361736520353a753d28663d5b6b2c762c795d295b305d2c693d665b315d2c6c3d665b325d7d7d72657475726e5b752c692c6c2c6f2e6c656e6774683e333f6f5b335d3a315d7d2c73723d6c2e756e7061636b2c70723d6c2e747970652c67723d6d2c76723d762c79723d642c6d723d6c723b76722e70726f746f747970652e6863673d66756e6374696f6e28297b72657475726e206d7228746869732e5f726762297d2c67722e6863673d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792876722c5b6e756c6c5d2e636f6e63617428722c5b22686367225d2929297d2c79722e666f726d61742e6863673d62722c79722e6175746f6465746563742e70757368287b703a312c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d737228722c224d080268636722292c226172726179223d3d3d70722872292626333d3d3d722e6c656e6774682972657475726e22686367227d7d293b766172206b723d6c2e756e7061636b2c77723d6c2e6c6173742c4d723d4d6174682e726f756e642c5f723d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d6b7228722c227267626122292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d745b335d2c633d77722872297c7c226175746f223b766f696420303d3d3d6f2626286f3d31292c226175746f223d3d3d63262628633d6f3c313f2272676261223a2272676222293b76617220753d22303030303030222b28286e3d4d72286e29293c3c31367c28613d4d72286129293c3c387c28663d4d7228662929292e746f537472696e67283136293b753d752e73756273747228752e6c656e6774682d36293b76617220693d2230222b4d72283235352a6f292e746f537472696e67283136293b73776974636828693d692e73756273747228692e6c656e6774682d32292c632e746f4c6f776572436173652829297b636173652272676261223a72657475726e2223222b752b693b636173652261726762223a72657475726e2223222b692b753b64656661756c743a72657475726e2223222b757d7d2c4e723d2f4d08025e233f285b412d46612d66302d395d7b367d7c5b412d46612d66302d395d7b337d29242f2c46723d2f5e233f285b412d46612d66302d395d7b387d7c5b412d46612d66302d395d7b347d29242f2c78723d66756e6374696f6e2872297b696628722e6d61746368284e7229297b34213d3d722e6c656e677468262637213d3d722e6c656e6774687c7c28723d722e737562737472283129292c333d3d3d722e6c656e677468262628723d28723d722e73706c697428222229295b305d2b725b305d2b725b315d2b725b315d2b725b325d2b725b325d293b76617220653d7061727365496e7428722c3136293b72657475726e5b653e3e31362c653e3e38263235352c32353526652c315d7d696628722e6d6174636828467229297b35213d3d722e6c656e677468262639213d3d722e6c656e6774687c7c28723d722e737562737472283129292c343d3d3d722e6c656e677468262628723d28723d722e73706c697428222229295b305d2b725b305d2b725b315d2b725b315d2b725b325d2b725b325d2b725b335d2b725b335d293b76617220743d7061727365496e7428722c3136293b72657475726e5b743e3e3234263235352c743e3e3136263235352c743e3e38263235352c4d6174682e726f756e6428283235352674292f3235352a313030292f3130305d7d7468726f77206e6577204572726f722822756e6b6e6f776e2068657820636f4d08026c6f723a20222b72297d2c50723d6d2c52723d762c47723d6c2e747970652c6a723d642c45723d5f723b52722e70726f746f747970652e6865783d66756e6374696f6e2872297b72657475726e20457228746869732e5f7267622c72297d2c50722e6865783d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792852722c5b6e756c6c5d2e636f6e63617428722c5b22686578225d2929297d2c6a722e666f726d61742e6865783d78722c6a722e6175746f6465746563742e70757368287b703a342c746573743a66756e6374696f6e2872297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774682d313b742d2d203e303b29655b745d3d617267756d656e74735b742b315d3b69662821652e6c656e677468262622737472696e67223d3d3d477228722926265b332c342c352c362c372c382c395d2e696e6465784f6628722e6c656e677468293e3d302972657475726e22686578227d7d293b766172204f723d6c2e756e7061636b2c71723d6c2e54574f50492c42723d4d6174682e6d696e2c49723d4d6174682e737172742c41723d4d6174682e61636f732c44723d66756e6374696f6e4d080228297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e3d4f7228722c2272676222292c613d6e5b305d2c663d6e5b315d2c6f3d6e5b325d2c633d427228612f3d3235352c662f3d3235352c6f2f3d323535292c753d28612b662b6f292f332c693d753e303f312d632f753a303b72657475726e20303d3d3d693f743d4e614e3a28743d28612d662b28612d6f29292f322c742f3d49722828612d66292a28612d66292b28612d6f292a28662d6f29292c743d41722874292c6f3e66262628743d71722d74292c742f3d7172292c5b3336302a742c692c755d7d2c43723d6c2e756e7061636b2c59723d6c2e6c696d69742c53723d6c2e54574f50492c4c723d6c2e504954484952442c24723d4d6174682e636f732c54723d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e2c612c663d28723d437228722c226873692229295b305d2c6f3d725b315d2c633d725b325d3b72657475726e2069734e614e286629262628663d30292c69734e614e286f292626286f3d30292c663e333630262628662d3d333630292c663c30262628662b3d333630292c28662f3d333630293c312f333f6e3d312d4d08022828613d28312d6f292f33292b28743d28312b6f2a24722853722a66292f2472284c722d53722a6629292f3329293a663c322f333f613d312d2828743d28312d6f292f33292b286e3d28312b6f2a24722853722a28662d3d312f3329292f2472284c722d53722a6629292f3329293a743d312d28286e3d28312d6f292f33292b28613d28312b6f2a24722853722a28662d3d322f3329292f2472284c722d53722a6629292f3329292c5b3235352a28743d597228632a742a3329292c3235352a286e3d597228632a6e2a3329292c3235352a28613d597228632a612a3329292c722e6c656e6774683e333f725b335d3a315d7d2c4b723d6c2e756e7061636b2c57723d6c2e747970652c58723d6d2c5a723d762c48723d642c7a723d44723b5a722e70726f746f747970652e6873693d66756e6374696f6e28297b72657475726e207a7228746869732e5f726762297d2c58722e6873693d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79285a722c5b6e756c6c5d2e636f6e63617428722c5b22687369225d2929297d2c48722e666f726d61742e6873693d54722c48722e6175746f6465746563742e70757368287b704d08023a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d4b7228722c2268736922292c226172726179223d3d3d57722872292626333d3d3d722e6c656e6774682972657475726e22687369227d7d293b7661722055723d6c2e756e7061636b2c56723d6c2e747970652c4a723d6d2c51723d762c72653d642c65653d423b51722e70726f746f747970652e68736c3d66756e6374696f6e28297b72657475726e20656528746869732e5f726762297d2c4a722e68736c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792851722c5b6e756c6c5d2e636f6e63617428722c5b2268736c225d2929297d2c72652e666f726d61742e68736c3d542c72652e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d557228722c2268736c22292c226172726179223d3d3d56722872294d08022626333d3d3d722e6c656e6774682972657475726e2268736c227d7d293b7661722074653d6c2e756e7061636b2c6e653d4d6174682e6d696e2c61653d4d6174682e6d61782c66653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e2c612c663d28723d746528722c227267622229295b305d2c6f3d725b315d2c633d725b325d2c753d6e6528662c6f2c63292c693d616528662c6f2c63292c6c3d692d753b72657475726e20613d692f3235352c303d3d3d693f28743d4e756d6265722e4e614e2c6e3d30293a286e3d6c2f692c663d3d3d69262628743d286f2d63292f6c292c6f3d3d3d69262628743d322b28632d66292f6c292c633d3d3d69262628743d342b28662d6f292f6c292c28742a3d3630293c30262628742b3d33363029292c5b742c6e2c615d7d2c6f653d6c2e756e7061636b2c63653d4d6174682e666c6f6f722c75653d66756e6374696f6e28297b666f722876617220722c652c742c6e2c612c662c6f3d5b5d2c633d617267756d656e74732e6c656e6774683b632d2d3b296f5b635d3d617267756d656e74735b635d3b76617220752c692c6c2c643d286f3d6f65286f2c226873762229295b305d2c683d6f5b315d2c623d6f5b325d3b696628622a3d3235352c303d3d3d68294d0802753d693d6c3d623b656c73657b3336303d3d3d64262628643d30292c643e333630262628642d3d333630292c643c30262628642b3d333630293b76617220733d636528642f3d3630292c703d642d732c673d622a28312d68292c763d622a28312d682a70292c793d622a28312d682a28312d7029293b7377697463682873297b6361736520303a753d28723d5b622c792c675d295b305d2c693d725b315d2c6c3d725b325d3b627265616b3b6361736520313a753d28653d5b762c622c675d295b305d2c693d655b315d2c6c3d655b325d3b627265616b3b6361736520323a753d28743d5b672c622c795d295b305d2c693d745b315d2c6c3d745b325d3b627265616b3b6361736520333a753d286e3d5b672c762c625d295b305d2c693d6e5b315d2c6c3d6e5b325d3b627265616b3b6361736520343a753d28613d5b792c672c625d295b305d2c693d615b315d2c6c3d615b325d3b627265616b3b6361736520353a753d28663d5b622c672c765d295b305d2c693d665b315d2c6c3d665b325d7d7d72657475726e5b752c692c6c2c6f2e6c656e6774683e333f6f5b335d3a315d7d2c69653d6c2e756e7061636b2c6c653d6c2e747970652c64653d6d2c68653d762c62653d642c73653d66653b68652e70726f746f747970652e6873763d66756e6374696f6e28297b72657475726e20736528746869732e5f726762297d2c64652e6873763d4d080266756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792868652c5b6e756c6c5d2e636f6e63617428722c5b22687376225d2929297d2c62652e666f726d61742e6873763d75652c62652e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d696528722c2268737622292c226172726179223d3d3d6c652872292626333d3d3d722e6c656e6774682972657475726e22687376227d7d293b7661722070653d7b4b6e3a31382c586e3a2e39353034372c596e3a312c5a6e3a312e30383838332c74303a2e3133373933313033342c74313a2e3230363839363535322c74323a2e31323834313835352c74333a2e3030383835363435327d2c67653d70652c76653d6c2e756e7061636b2c79653d4d6174682e706f772c6d653d66756e6374696f6e2872297b72657475726e28722f3d323535293c3d2e30343034353f722f31322e39323a79652828722b2e303535292f312e3035352c322e34297d2c6b653d66756e6374696f6e284d080272297b72657475726e20723e67652e74333f796528722c312f33293a722f67652e74322b67652e74307d2c77653d66756e6374696f6e28722c652c74297b72657475726e20723d6d652872292c653d6d652865292c743d6d652874292c5b6b6528282e343132343536342a722b2e333537353736312a652b2e313830343337352a74292f67652e586e292c6b6528282e323132363732392a722b2e373135313532322a652b2e3037323137352a74292f67652e596e292c6b6528282e303139333333392a722b2e3131393139322a652b2e393530333034312a74292f67652e5a6e295d7d2c4d653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d766528722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d7765286e2c612c66292c633d6f5b305d2c753d6f5b315d2c693d3131362a752d31363b72657475726e5b693c303f303a692c3530302a28632d75292c3230302a28752d6f5b325d295d7d2c5f653d70652c4e653d6c2e756e7061636b2c46653d4d6174682e706f772c78653d66756e6374696f6e2872297b72657475726e203235352a28723c3d2e30303330343f31322e39322a723a312e3035352a466528722c312f322e34292d2e303535297d2c50653d66756e4d08026374696f6e2872297b72657475726e20723e5f652e74313f722a722a723a5f652e74322a28722d5f652e7430297d2c52653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220742c6e2c612c663d28723d4e6528722c226c61622229295b305d2c6f3d725b315d2c633d725b325d3b72657475726e206e3d28662b3136292f3131362c743d69734e614e286f293f6e3a6e2b6f2f3530302c613d69734e614e2863293f6e3a6e2d632f3230302c6e3d5f652e596e2a5065286e292c743d5f652e586e2a50652874292c613d5f652e5a6e2a50652861292c5b786528332e323430343534322a742d312e353337313338352a6e2d2e343938353331342a61292c7865282d2e3936393236362a742b312e383736303130382a6e2b2e3034313535362a61292c7865282e303535363433342a742d2e323034303235392a6e2b312e303537323235322a61292c722e6c656e6774683e333f725b335d3a315d7d2c47653d6c2e756e7061636b2c6a653d6c2e747970652c45653d6d2c4f653d762c71653d642c42653d4d653b4f652e70726f746f747970652e6c61623d66756e6374696f6e28297b72657475726e20426528746869732e5f726762297d2c45652e6c61623d66756e6374696f6e28297b666f722876617220724d08023d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79284f652c5b6e756c6c5d2e636f6e63617428722c5b226c6162225d2929297d2c71652e666f726d61742e6c61623d52652c71652e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d476528722c226c616222292c226172726179223d3d3d6a652872292626333d3d3d722e6c656e6774682972657475726e226c6162227d7d293b7661722049653d6c2e756e7061636b2c41653d6c2e524144324445472c44653d4d6174682e737172742c43653d4d6174682e6174616e322c59653d4d6174682e726f756e642c53653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d496528722c226c616222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d446528612a612b662a66292c633d28436528662c61292a41652b33363029253336303b72657475726e20303d3d3d59654d0802283165342a6f29262628633d4e756d6265722e4e614e292c5b6e2c6f2c635d7d2c4c653d6c2e756e7061636b2c24653d4d652c54653d53652c4b653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d4c6528722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d2465286e2c612c66292c633d6f5b305d2c753d6f5b315d2c693d6f5b325d3b72657475726e20546528632c752c69297d2c57653d6c2e756e7061636b2c58653d6c2e444547325241442c5a653d4d6174682e73696e2c48653d4d6174682e636f732c7a653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d576528722c226c636822292c6e3d745b305d2c613d745b315d2c663d745b325d3b72657475726e2069734e614e286629262628663d30292c5b6e2c486528662a3d5865292a612c5a652866292a615d7d2c55653d6c2e756e7061636b2c56653d7a652c4a653d52652c51653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d4d080228723d556528722c226c63682229295b305d2c6e3d725b315d2c613d725b325d2c663d566528742c6e2c61292c6f3d665b305d2c633d665b315d2c753d665b325d2c693d4a65286f2c632c75293b72657475726e5b695b305d2c695b315d2c695b325d2c722e6c656e6774683e333f725b335d3a315d7d2c72743d6c2e756e7061636b2c65743d51652c74743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d727428722c2268636c22292e7265766572736528293b72657475726e2065742e6170706c7928766f696420302c74297d2c6e743d6c2e756e7061636b2c61743d6c2e747970652c66743d6d2c6f743d762c63743d642c75743d4b653b6f742e70726f746f747970652e6c63683d66756e6374696f6e28297b72657475726e20757428746869732e5f726762297d2c6f742e70726f746f747970652e68636c3d66756e6374696f6e28297b72657475726e20757428746869732e5f726762292e7265766572736528297d2c66742e6c63683d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62694d08026e642e6170706c79286f742c5b6e756c6c5d2e636f6e63617428722c5b226c6368225d2929297d2c66742e68636c3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79286f742c5b6e756c6c5d2e636f6e63617428722c5b2268636c225d2929297d2c63742e666f726d61742e6c63683d51652c63742e666f726d61742e68636c3d74742c5b226c6368222c2268636c225d2e666f72456163682866756e6374696f6e2872297b72657475726e2063742e6175746f6465746563742e70757368287b703a322c746573743a66756e6374696f6e28297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774683b742d2d3b29655b745d3d617267756d656e74735b745d3b696628653d6e7428652c72292c226172726179223d3d3d61742865292626333d3d3d652e6c656e6774682972657475726e20727d7d297d293b7661722069743d642c6c743d6c2e747970652c64743d7b616c696365626c75653a2223663066386666222c616e746971756577686974653a2223666165626437222c617175613a2223303066666666222c617175616d6172696e653a2223376666666434222c617a7572653a4d08022223663066666666222c62656967653a2223663566356463222c6269737175653a2223666665346334222c626c61636b3a2223303030303030222c626c616e63686564616c6d6f6e643a2223666665626364222c626c75653a2223303030306666222c626c756576696f6c65743a2223386132626532222c62726f776e3a2223613532613261222c6275726c79776f6f643a2223646562383837222c6361646574626c75653a2223356639656130222c636861727472657573653a2223376666663030222c63686f636f6c6174653a2223643236393165222c636f72616c3a2223666637663530222c636f726e666c6f7765723a2223363439356564222c636f726e666c6f776572626c75653a2223363439356564222c636f726e73696c6b3a2223666666386463222c6372696d736f6e3a2223646331343363222c6379616e3a2223303066666666222c6461726b626c75653a2223303030303862222c6461726b6379616e3a2223303038623862222c6461726b676f6c64656e726f643a2223623838363062222c6461726b677261793a2223613961396139222c6461726b677265656e3a2223303036343030222c6461726b677265793a2223613961396139222c6461726b6b68616b693a2223626462373662222c6461726b6d6167656e74613a2223386230303862222c6461726b6f6c697665677265656e3a2223353536623266222c64614d0802726b6f72616e67653a2223666638633030222c6461726b6f72636869643a2223393933326363222c6461726b7265643a2223386230303030222c6461726b73616c6d6f6e3a2223653939363761222c6461726b736561677265656e3a2223386662633866222c6461726b736c617465626c75653a2223343833643862222c6461726b736c617465677261793a2223326634663466222c6461726b736c617465677265793a2223326634663466222c6461726b74757271756f6973653a2223303063656431222c6461726b76696f6c65743a2223393430306433222c6465657070696e6b3a2223666631343933222c64656570736b79626c75653a2223303062666666222c64696d677261793a2223363936393639222c64696d677265793a2223363936393639222c646f64676572626c75653a2223316539306666222c66697265627269636b3a2223623232323232222c666c6f72616c77686974653a2223666666616630222c666f72657374677265656e3a2223323238623232222c667563687369613a2223666630306666222c6761696e73626f726f3a2223646364636463222c67686f737477686974653a2223663866386666222c676f6c643a2223666664373030222c676f6c64656e726f643a2223646161353230222c677261793a2223383038303830222c677265656e3a2223303038303030222c677265656e79656c6c6f773a22234d0802616466663266222c677265793a2223383038303830222c686f6e65796465773a2223663066666630222c686f7470696e6b3a2223666636396234222c696e6469616e7265643a2223636435633563222c696e6469676f3a2223346230303832222c69766f72793a2223666666666630222c6b68616b693a2223663065363863222c6c617365726c656d6f6e3a2223666666663534222c6c6176656e6465723a2223653665366661222c6c6176656e646572626c7573683a2223666666306635222c6c61776e677265656e3a2223376366633030222c6c656d6f6e63686966666f6e3a2223666666616364222c6c69676874626c75653a2223616464386536222c6c69676874636f72616c3a2223663038303830222c6c696768746379616e3a2223653066666666222c6c69676874676f6c64656e726f643a2223666166616432222c6c69676874676f6c64656e726f6479656c6c6f773a2223666166616432222c6c69676874677261793a2223643364336433222c6c69676874677265656e3a2223393065653930222c6c69676874677265793a2223643364336433222c6c6967687470696e6b3a2223666662366331222c6c6967687473616c6d6f6e3a2223666661303761222c6c69676874736561677265656e3a2223323062326161222c6c69676874736b79626c75653a2223383763656661222c6c69676874736c617465677261793a22234d0802373738383939222c6c69676874736c617465677265793a2223373738383939222c6c69676874737465656c626c75653a2223623063346465222c6c6967687479656c6c6f773a2223666666666530222c6c696d653a2223303066663030222c6c696d65677265656e3a2223333263643332222c6c696e656e3a2223666166306536222c6d6167656e74613a2223666630306666222c6d61726f6f6e3a2223383030303030222c6d61726f6f6e323a2223376630303030222c6d61726f6f6e333a2223623033303630222c6d656469756d617175616d6172696e653a2223363663646161222c6d656469756d626c75653a2223303030306364222c6d656469756d6f72636869643a2223626135356433222c6d656469756d707572706c653a2223393337306462222c6d656469756d736561677265656e3a2223336362333731222c6d656469756d736c617465626c75653a2223376236386565222c6d656469756d737072696e67677265656e3a2223303066613961222c6d656469756d74757271756f6973653a2223343864316363222c6d656469756d76696f6c65747265643a2223633731353835222c6d69646e69676874626c75653a2223313931393730222c6d696e74637265616d3a2223663566666661222c6d69737479726f73653a2223666665346531222c6d6f63636173696e3a2223666665346235222c6e6176616a6f77686974654d08023a2223666664656164222c6e6176793a2223303030303830222c6f6c646c6163653a2223666466356536222c6f6c6976653a2223383038303030222c6f6c697665647261623a2223366238653233222c6f72616e67653a2223666661353030222c6f72616e67657265643a2223666634353030222c6f72636869643a2223646137306436222c70616c65676f6c64656e726f643a2223656565386161222c70616c65677265656e3a2223393866623938222c70616c6574757271756f6973653a2223616665656565222c70616c6576696f6c65747265643a2223646237303933222c706170617961776869703a2223666665666435222c7065616368707566663a2223666664616239222c706572753a2223636438353366222c70696e6b3a2223666663306362222c706c756d3a2223646461306464222c706f77646572626c75653a2223623065306536222c707572706c653a2223383030303830222c707572706c65323a2223376630303766222c707572706c65333a2223613032306630222c72656265636361707572706c653a2223363633333939222c7265643a2223666630303030222c726f737962726f776e3a2223626338663866222c726f79616c626c75653a2223343136396531222c736164646c6562726f776e3a2223386234353133222c73616c6d6f6e3a2223666138303732222c73616e647962726f776e3a2223663461344d08023630222c736561677265656e3a2223326538623537222c7365617368656c6c3a2223666666356565222c7369656e6e613a2223613035323264222c73696c7665723a2223633063306330222c736b79626c75653a2223383763656562222c736c617465626c75653a2223366135616364222c736c617465677261793a2223373038303930222c736c617465677265793a2223373038303930222c736e6f773a2223666666616661222c737072696e67677265656e3a2223303066663766222c737465656c626c75653a2223343638326234222c74616e3a2223643262343863222c7465616c3a2223303038303830222c74686973746c653a2223643862666438222c746f6d61746f3a2223666636333437222c74757271756f6973653a2223343065306430222c76696f6c65743a2223656538326565222c77686561743a2223663564656233222c77686974653a2223666666666666222c7768697465736d6f6b653a2223663566356635222c79656c6c6f773a2223666666663030222c79656c6c6f77677265656e3a2223396163643332227d2c68743d78722c62743d5f723b762e70726f746f747970652e6e616d653d66756e6374696f6e28297b666f722876617220723d627428746869732e5f7267622c2272676222292c653d302c743d4f626a6563742e6b657973286474293b653c742e6c656e6774683b652b3d31297b766172206e3d4d0802745b655d3b69662864745b6e5d3d3d3d722972657475726e206e2e746f4c6f7765724361736528297d72657475726e20727d2c69742e666f726d61742e6e616d65643d66756e6374696f6e2872297b696628723d722e746f4c6f7765724361736528292c64745b725d2972657475726e2068742864745b725d293b7468726f77206e6577204572726f722822756e6b6e6f776e20636f6c6f72206e616d653a20222b72297d2c69742e6175746f6465746563742e70757368287b703a352c746573743a66756e6374696f6e2872297b666f722876617220653d5b5d2c743d617267756d656e74732e6c656e6774682d313b742d2d203e303b29655b745d3d617267756d656e74735b742b315d3b69662821652e6c656e677468262622737472696e67223d3d3d6c74287229262664745b722e746f4c6f7765724361736528295d2972657475726e226e616d6564227d7d293b7661722073743d6c2e756e7061636b2c70743d6c2e747970652c67743d66756e6374696f6e2872297b696628226e756d626572223d3d70742872292626723e3d302626723c3d31363737373231352972657475726e5b723e3e31362c723e3e38263235352c32353526722c315d3b7468726f77206e6577204572726f722822756e6b6e6f776e206e756d20636f6c6f723a20222b72297d2c76743d6d2c79743d762c6d743d642c6b743d6c2e747970652c77743d66754d08026e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d737428722c2272676222293b72657475726e28745b305d3c3c3136292b28745b315d3c3c38292b745b325d7d3b79742e70726f746f747970652e6e756d3d66756e6374696f6e28297b72657475726e20777428746869732e5f726762297d2c76742e6e756d3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792879742c5b6e756c6c5d2e636f6e63617428722c5b226e756d225d2929297d2c6d742e666f726d61742e6e756d3d67742c6d742e6175746f6465746563742e70757368287b703a352c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628313d3d3d722e6c656e6774682626226e756d626572223d3d3d6b7428725b305d292626725b305d3e3d302626725b305d3c3d31363737373231352972657475726e226e756d227d7d293b766172204d743d6d2c5f743d762c4e743d642c46744d08023d6c2e756e7061636b2c78743d6c2e747970652c50743d4d6174682e726f756e643b5f742e70726f746f747970652e7267623d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d2130292c21313d3d3d723f746869732e5f7267622e736c69636528302c33293a746869732e5f7267622e736c69636528302c33292e6d6170285074297d2c5f742e70726f746f747970652e726762613d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d2130292c746869732e5f7267622e736c69636528302c34292e6d61702866756e6374696f6e28652c74297b72657475726e20743c333f21313d3d3d723f653a50742865293a657d297d2c4d742e7267623d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c79285f742c5b6e756c6c5d2e636f6e63617428722c5b22726762225d2929297d2c4e742e666f726d61742e7267623d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d467428722c227267626122293b7265744d080275726e20766f696420303d3d3d745b335d262628745b335d3d31292c747d2c4e742e6175746f6465746563742e70757368287b703a332c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d467428722c227267626122292c226172726179223d3d3d7874287229262628333d3d3d722e6c656e6774687c7c343d3d3d722e6c656e6774682626226e756d626572223d3d787428725b335d292626725b335d3e3d302626725b335d3c3d31292972657475726e22726762227d7d293b7661722052743d4d6174682e6c6f672c47743d66756e6374696f6e2872297b76617220652c742c6e2c613d722f3130303b72657475726e20613c36363f28653d3235352c743d613c363f303a2d3135352e32353438353536323730393137392d2e34343539363935303436393537393133332a28743d612d32292b3130342e34393231363139393339333838382a52742874292c6e3d613c32303f303a2e383237343039363036343030373339352a286e3d612d3130292d3235342e37363933353138343132303930322b3131352e36373939343430313036363134372a5274286e29293a28653d3335312e39373639303536363830353639332b2e3131343230363435333738343136352a28653d612d3535292d4d080234302e32353336363330393333323132372a52742865292c743d3332352e343439343132353731313937342b2e30373934333435363533363636323334322a28743d612d3530292d32382e303835323936333530373935372a52742874292c6e3d323535292c5b652c742c6e2c315d7d2c6a743d47742c45743d6c2e756e7061636b2c4f743d4d6174682e726f756e642c71743d6d2c42743d762c49743d642c41743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b666f722876617220742c6e3d457428722c2272676222292c613d6e5b305d2c663d6e5b325d2c6f3d3165332c633d3465343b632d6f3e2e343b297b76617220753d6a7428743d2e352a28632b6f29293b755b325d2f755b305d3e3d662f613f633d743a6f3d747d72657475726e204f742874297d3b42742e70726f746f747970652e74656d703d42742e70726f746f747970652e6b656c76696e3d42742e70726f746f747970652e74656d70657261747572653d66756e6374696f6e28297b72657475726e20417428746869732e5f726762297d2c71742e74656d703d71742e6b656c76696e3d71742e74656d70657261747572653d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d4d08022d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792842742c5b6e756c6c5d2e636f6e63617428722c5b2274656d70225d2929297d2c49742e666f726d61742e74656d703d49742e666f726d61742e6b656c76696e3d49742e666f726d61742e74656d70657261747572653d47743b7661722044743d6c2e756e7061636b2c43743d4d6174682e636272742c59743d4d6174682e706f772c53743d4d6174682e7369676e2c4c743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d447428722c2272676222292c6e3d745b305d2c613d745b315d2c663d745b325d2c6f3d5b2474286e2f323535292c247428612f323535292c247428662f323535295d2c633d6f5b305d2c753d6f5b315d2c693d6f5b325d2c6c3d4374282e343132323231343730382a632b2e353336333332353336332a752b2e303531343435393932392a69292c643d4374282e323131393033343938322a632b2e363830363939353435312a752b2e313037333936393536362a69292c683d4374282e303838333032343631392a632b2e323831373138383337362a752b2e363239393738373030352a69293b72657475726e5b2e4d0802323130343534323535332a6c2b2e3739333631373738352a642d2e303034303732303436382a682c312e393737393938343935312a6c2d322e3432383539323230352a642b2e343530353933373039392a682c2e303235393034303337312a6c2b2e373832373731373636322a642d2e3830383637353736362a685d7d3b66756e6374696f6e2024742872297b76617220653d4d6174682e6162732872293b72657475726e20653c2e30343034353f722f31322e39323a2853742872297c7c31292a59742828652b2e303535292f312e3035352c322e34297d7661722054743d6c2e756e7061636b2c4b743d4d6174682e706f772c57743d4d6174682e7369676e2c58743d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d547428722c226c61622229295b305d2c6e3d725b315d2c613d725b325d2c663d4b7428742b2e333936333337373737342a6e2b2e323135383033373537332a612c33292c6f3d4b7428742d2e313035353631333435382a6e2d2e303633383534313732382a612c33292c633d4b7428742d2e303839343834313737352a6e2d312e3239313438353534382a612c33293b72657475726e5b3235352a5a7428342e303736373431363632312a662d332e3330373731313539314d0802332a6f2b2e323330393639393239322a63292c3235352a5a74282d312e323638343338303034362a662b322e363039373537343031312a6f2d2e333431333139333936352a63292c3235352a5a74282d2e303034313936303836332a662d2e373033343138363134372a6f2b312e3730373631343730312a63292c722e6c656e6774683e333f725b335d3a315d7d3b66756e6374696f6e205a742872297b76617220653d4d6174682e6162732872293b72657475726e20653e2e303033313330383f2857742872297c7c31292a28312e3035352a4b7428652c312f322e34292d2e303535293a31322e39322a727d7661722048743d6c2e756e7061636b2c7a743d6c2e747970652c55743d6d2c56743d762c4a743d642c51743d4c743b56742e70726f746f747970652e6f6b6c61623d66756e6374696f6e28297b72657475726e20517428746869732e5f726762297d2c55742e6f6b6c61623d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c792856742c5b6e756c6c5d2e636f6e63617428722c5b226f6b6c6162225d2929297d2c4a742e666f726d61742e6f6b6c61623d58742c4a742e6175746f6465746563742e704d0802757368287b703a332c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d487428722c226f6b6c616222292c226172726179223d3d3d7a742872292626333d3d3d722e6c656e6774682972657475726e226f6b6c6162227d7d293b76617220726e3d6c2e756e7061636b2c656e3d4c742c746e3d53652c6e6e3d6c2e756e7061636b2c616e3d7a652c666e3d58742c6f6e3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d28723d6e6e28722c226c63682229295b305d2c6e3d725b315d2c613d725b325d2c663d616e28742c6e2c61292c6f3d665b305d2c633d665b315d2c753d665b325d2c693d666e286f2c632c75293b72657475726e5b695b305d2c695b315d2c695b325d2c722e6c656e6774683e333f725b335d3a315d7d2c636e3d6c2e756e7061636b2c756e3d6c2e747970652c6c6e3d6d2c646e3d762c686e3d642c626e3d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b76617220743d726e28722c2272676222292c6e3d744d08025b305d2c613d745b315d2c663d745b325d2c6f3d656e286e2c612c66292c633d6f5b305d2c753d6f5b315d2c693d6f5b325d3b72657475726e20746e28632c752c69297d3b646e2e70726f746f747970652e6f6b6c63683d66756e6374696f6e28297b72657475726e20626e28746869732e5f726762297d2c6c6e2e6f6b6c63683d66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b72657475726e206e65772846756e6374696f6e2e70726f746f747970652e62696e642e6170706c7928646e2c5b6e756c6c5d2e636f6e63617428722c5b226f6b6c6368225d2929297d2c686e2e666f726d61742e6f6b6c63683d6f6e2c686e2e6175746f6465746563742e70757368287b703a332c746573743a66756e6374696f6e28297b666f722876617220723d5b5d2c653d617267756d656e74732e6c656e6774683b652d2d3b29725b655d3d617267756d656e74735b655d3b696628723d636e28722c226f6b6c636822292c226172726179223d3d3d756e2872292626333d3d3d722e6c656e6774682972657475726e226f6b6c6368227d7d293b76617220736e3d762c706e3d6c2e747970653b736e2e70726f746f747970652e616c7068613d66756e6374696f6e28722c65297b72657475726e20766f696420303d3d3d65264d08022628653d2131292c766f69642030213d3d722626226e756d626572223d3d3d706e2872293f653f28746869732e5f7267625b335d3d722c74686973293a6e657720736e285b746869732e5f7267625b305d2c746869732e5f7267625b315d2c746869732e5f7267625b325d2c725d2c2272676222293a746869732e5f7267625b335d7d2c762e70726f746f747970652e636c69707065643d66756e6374696f6e28297b72657475726e20746869732e5f7267622e5f636c69707065647c7c21317d3b76617220676e3d762c766e3d70653b676e2e70726f746f747970652e6461726b656e3d66756e6374696f6e2872297b766f696420303d3d3d72262628723d31293b76617220653d746869732e6c616228293b72657475726e20655b305d2d3d766e2e4b6e2a722c6e657720676e28652c226c616222292e616c70686128746869732e616c70686128292c2130297d2c676e2e70726f746f747970652e627269676874656e3d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d31292c746869732e6461726b656e282d72297d2c676e2e70726f746f747970652e6461726b65723d676e2e70726f746f747970652e6461726b656e2c676e2e70726f746f747970652e62726967687465723d676e2e70726f746f747970652e627269676874656e2c762e70726f746f747970652e6765743d66756e6374696f4d08026e2872297b76617220653d722e73706c697428222e22292c743d655b305d2c6e3d655b315d2c613d746869735b745d28293b6966286e297b76617220663d742e696e6465784f66286e292d28226f6b223d3d3d742e73756273747228302c32293f323a30293b696628663e2d312972657475726e20615b665d3b7468726f77206e6577204572726f722822756e6b6e6f776e206368616e6e656c20222b6e2b2220696e206d6f646520222b74297d72657475726e20617d3b76617220796e3d762c6d6e3d6c2e747970652c6b6e3d4d6174682e706f773b796e2e70726f746f747970652e6c756d696e616e63653d66756e6374696f6e2872297b696628766f69642030213d3d722626226e756d626572223d3d3d6d6e287229297b696628303d3d3d722972657475726e206e657720796e285b302c302c302c746869732e5f7267625b335d5d2c2272676222293b696628313d3d3d722972657475726e206e657720796e285b3235352c3235352c3235352c746869732e5f7267625b335d5d2c2272676222293b76617220653d746869732e6c756d696e616e636528292c743d32302c6e3d66756e6374696f6e28652c61297b76617220663d652e696e746572706f6c61746528612c2e352c2272676222292c6f3d662e6c756d696e616e636528293b72657475726e204d6174682e61627328722d6f293c31652d377c7c21742d2d3f663a6f3e724d08023f6e28652c66293a6e28662c61297d2c613d28653e723f6e286e657720796e285b302c302c305d292c74686973293a6e28746869732c6e657720796e285b3235352c3235352c3235355d2929292e72676228293b72657475726e206e657720796e28612e636f6e636174285b746869732e5f7267625b335d5d29297d72657475726e20776e2e6170706c7928766f696420302c746869732e5f7267622e736c69636528302c3329297d3b76617220776e3d66756e6374696f6e28722c652c74297b72657475726e2e323132362a28723d4d6e287229292b2e373135322a28653d4d6e286529292b2e303732322a28743d4d6e287429297d2c4d6e3d66756e6374696f6e2872297b72657475726e28722f3d323535293c3d2e30333932383f722f31322e39323a6b6e2828722b2e303535292f312e3035352c322e34297d2c5f6e3d7b7d2c4e6e3d762c466e3d6c2e747970652c786e3d5f6e2c506e3d762c526e3d66756e6374696f6e28722c652c74297b766f696420303d3d3d74262628743d2e35293b666f7228766172206e3d5b5d2c613d617267756d656e74732e6c656e6774682d333b612d2d203e303b296e5b615d3d617267756d656e74735b612b335d3b76617220663d6e5b305d7c7c226c726762223b696628786e5b665d7c7c6e2e6c656e6774687c7c28663d4f626a6563742e6b65797328786e295b305d292c21786e5b665d29744d080268726f77206e6577204572726f722822696e746572706f6c6174696f6e206d6f646520222b662b22206973206e6f7420646566696e656422293b72657475726e226f626a65637422213d3d466e287229262628723d6e6577204e6e287229292c226f626a65637422213d3d466e286529262628653d6e6577204e6e286529292c786e5b665d28722c652c74292e616c70686128722e616c70686128292b742a28652e616c70686128292d722e616c706861282929297d3b506e2e70726f746f747970652e6d69783d506e2e70726f746f747970652e696e746572706f6c6174653d66756e6374696f6e28722c65297b766f696420303d3d3d65262628653d2e35293b666f722876617220743d5b5d2c6e3d617267756d656e74732e6c656e6774682d323b6e2d2d203e303b29745b6e5d3d617267756d656e74735b6e2b325d3b72657475726e20526e2e6170706c7928766f696420302c5b746869732c722c655d2e636f6e636174287429297d3b76617220476e3d763b476e2e70726f746f747970652e7072656d756c7469706c793d66756e6374696f6e2872297b766f696420303d3d3d72262628723d2131293b76617220653d746869732e5f7267622c743d655b335d3b72657475726e20723f28746869732e5f7267623d5b655b305d2a742c655b315d2a742c655b325d2a742c745d2c74686973293a6e657720476e285b655b305d2a742c4d0802655b315d2a742c655b325d2a742c745d2c2272676222297d3b766172206a6e3d762c456e3d70653b6a6e2e70726f746f747970652e73617475726174653d66756e6374696f6e2872297b766f696420303d3d3d72262628723d31293b76617220653d746869732e6c636828293b72657475726e20655b315d2b3d456e2e4b6e2a722c655b315d3c30262628655b315d3d30292c6e6577206a6e28652c226c636822292e616c70686128746869732e616c70686128292c2130297d2c6a6e2e70726f746f747970652e646573617475726174653d66756e6374696f6e2872297b72657475726e20766f696420303d3d3d72262628723d31292c746869732e7361747572617465282d72297d3b766172204f6e3d762c716e3d6c2e747970653b4f6e2e70726f746f747970652e7365743d66756e6374696f6e28722c652c74297b766f696420303d3d3d74262628743d2131293b766172206e3d722e73706c697428222e22292c613d6e5b305d2c663d6e5b315d2c6f3d746869735b615d28293b69662866297b76617220633d612e696e6465784f662866292d28226f6b223d3d3d612e73756273747228302c32293f323a30293b696628633e2d31297b69662822737472696e67223d3d716e2865292973776974636828652e636861724174283029297b63617365222b223a63617365222d223a6f5b635d2b3d2b653b627265616b3b63617365222a4d0802223a6f5b635d2a3d2b652e7375627374722831293b627265616b3b63617365222f223a6f5b635d2f3d2b652e7375627374722831293b627265616b3b64656661756c743a6f5b635d3d2b657d656c73657b696628226e756d62657222213d3d716e286529297468726f77206e6577204572726f722822756e737570706f727465642076616c756520666f7220436f6c6f722e73657422293b6f5b635d3d657d76617220753d6e6577204f6e286f2c61293b72657475726e20743f28746869732e5f7267623d752e5f7267622c74686973293a757d7468726f77206e6577204572726f722822756e6b6e6f776e206368616e6e656c20222b662b2220696e206d6f646520222b61297d72657475726e206f7d3b76617220426e3d763b5f6e2e7267623d66756e6374696f6e28722c652c74297b766172206e3d722e5f7267622c613d652e5f7267623b72657475726e206e657720426e286e5b305d2b742a28615b305d2d6e5b305d292c6e5b315d2b742a28615b315d2d6e5b315d292c6e5b325d2b742a28615b325d2d6e5b325d292c2272676222297d3b76617220496e3d762c416e3d4d6174682e737172742c446e3d4d6174682e706f773b5f6e2e6c7267623d66756e6374696f6e28722c652c74297b766172206e3d722e5f7267622c613d6e5b305d2c663d6e5b315d2c6f3d6e5b325d2c633d652e5f7267622c753d635b305d2c693d635b314d08025d2c6c3d635b325d3b72657475726e206e657720496e28416e28446e28612c32292a28312d74292b446e28752c32292a74292c416e28446e28662c32292a28312d74292b446e28692c32292a74292c416e28446e286f2c32292a28312d74292b446e286c2c32292a74292c2272676222297d3b76617220436e3d763b5f6e2e6c61623d66756e6374696f6e28722c652c74297b766172206e3d722e6c616228292c613d652e6c616228293b72657475726e206e657720436e286e5b305d2b742a28615b305d2d6e5b305d292c6e5b315d2b742a28615b315d2d6e5b315d292c6e5b325d2b742a28615b325d2d6e5b325d292c226c616222297d3b76617220596e3d762c536e3d66756e6374696f6e28722c652c742c6e297b76617220612c662c6f2c632c752c692c6c2c642c682c622c732c702c673b72657475726e2268736c223d3d3d6e3f286f3d722e68736c28292c633d652e68736c2829293a22687376223d3d3d6e3f286f3d722e68737628292c633d652e6873762829293a22686367223d3d3d6e3f286f3d722e68636728292c633d652e6863672829293a22687369223d3d3d6e3f286f3d722e68736928292c633d652e6873692829293a226c6368223d3d3d6e7c7c2268636c223d3d3d6e3f286e3d2268636c222c6f3d722e68636c28292c633d652e68636c2829293a226f6b6c6368223d3d3d6e2626286f3d722e6f6b6c636828294d08022e7265766572736528292c633d652e6f6b6c636828292e726576657273652829292c226822213d3d6e2e73756273747228302c31292626226f6b6c636822213d3d6e7c7c28753d28613d6f295b305d2c6c3d615b315d2c683d615b325d2c693d28663d63295b305d2c643d665b315d2c623d665b325d292c69734e614e2875297c7c69734e614e2869293f69734e614e2875293f69734e614e2869293f703d4e756d6265722e4e614e3a28703d692c31213d68262630213d687c7c22687376223d3d6e7c7c28733d6429293a28703d752c31213d62262630213d627c7c22687376223d3d6e7c7c28733d6c29293a703d752b742a28693e752626692d753e3138303f692d28752b333630293a693c752626752d693e3138303f692b3336302d753a692d75292c766f696420303d3d3d73262628733d6c2b742a28642d6c29292c673d682b742a28622d68292c6e657720596e28226f6b6c6368223d3d3d6e3f5b672c732c705d3a5b702c732c675d2c6e297d2c4c6e3d536e2c246e3d66756e6374696f6e28722c652c74297b72657475726e204c6e28722c652c742c226c636822297d3b5f6e2e6c63683d246e2c5f6e2e68636c3d246e3b76617220546e3d763b5f6e2e6e756d3d66756e6374696f6e28722c652c74297b766172206e3d722e6e756d28292c613d652e6e756d28293b72657475726e206e657720546e286e2b742a28612d6e292c4d0802226e756d22297d3b766172204b6e3d536e3b5f6e2e6863673d66756e6374696f6e28722c652c74297b72657475726e204b6e28722c652c742c2268636722297d3b76617220576e3d536e3b5f6e2e6873693d66756e6374696f6e28722c652c74297b72657475726e20576e28722c652c742c2268736922297d3b76617220586e3d536e3b5f6e2e68736c3d66756e6374696f6e28722c652c74297b72657475726e20586e28722c652c742c2268736c22297d3b766172205a6e3d536e3b5f6e2e6873763d66756e6374696f6e28722c652c74297b72657475726e205a6e28722c652c742c2268737622297d3b76617220486e3d763b5f6e2e6f6b6c61623d66756e6374696f6e28722c652c74297b766172206e3d722e6f6b6c616228292c613d652e6f6b6c616228293b72657475726e206e657720486e286e5b305d2b742a28615b305d2d6e5b305d292c6e5b315d2b742a28615b315d2d6e5b315d292c6e5b325d2b742a28615b325d2d6e5b325d292c226f6b6c616222297d3b766172207a6e3d536e3b5f6e2e6f6b6c63683d66756e6374696f6e28722c652c74297b72657475726e207a6e28722c652c742c226f6b6c636822297d3b4d6174682e706f772c4d6174682e737172742c4d6174682e50492c4d6174682e636f732c4d6174682e73696e2c4d6174682e6174616e322c4d6174682e706f773b76617220556e3d6d2c566e3d66756e4d08026374696f6e28722c652c74297b69662821566e5b745d297468726f77206e6577204572726f722822756e6b6e6f776e20626c656e64206d6f646520222b74293b72657475726e20566e5b745d28722c65297d2c4a6e3d66756e6374696f6e2872297b72657475726e2066756e6374696f6e28652c74297b766172206e3d556e2874292e72676228292c613d556e2865292e72676228293b72657475726e20556e2e7267622872286e2c6129297d7d2c516e3d66756e6374696f6e2872297b72657475726e2066756e6374696f6e28652c74297b766172206e3d5b5d3b72657475726e206e5b305d3d7228655b305d2c745b305d292c6e5b315d3d7228655b315d2c745b315d292c6e5b325d3d7228655b325d2c745b325d292c6e7d7d3b566e2e6e6f726d616c3d4a6e28516e2866756e6374696f6e2872297b72657475726e20727d29292c566e2e6d756c7469706c793d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20722a652f3235357d29292c566e2e73637265656e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e203235352a28312d28312d722f323535292a28312d652f32353529297d29292c566e2e6f7665726c61793d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20653c3132383f322a722a652f3235353a3235352a28312d322a28312d722f323535292a28312d654d08022f32353529297d29292c566e2e6461726b656e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20723e653f653a727d29292c566e2e6c69676874656e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e20723e653f723a657d29292c566e2e646f6467653d4a6e28516e2866756e6374696f6e28722c65297b72657475726e203235353d3d3d723f3235353a28723d652f3235352a3235352f28312d722f32353529293e3235353f3235353a727d29292c566e2e6275726e3d4a6e28516e2866756e6374696f6e28722c65297b72657475726e203235352a28312d28312d652f323535292f28722f32353529297d29293b4d6174682e706f772c4d6174682e73696e2c4d6174682e636f732c4d6174682e666c6f6f722c4d6174682e72616e646f6d2c4d6174682e6c6f672c4d6174682e706f772c4d6174682e666c6f6f722c4d6174682e6162732c4d6174682e737172742c4d6174682e706f772c4d6174682e6d696e2c4d6174682e6d61782c4d6174682e6174616e322c4d6174682e6162732c4d6174682e636f732c4d6174682e73696e2c4d6174682e6578702c4d6174682e50493b666f72287661722072613d7b4f7252643a5b2223666666376563222c2223666565386338222c2223666464343965222c2223666462623834222c2223666338643539222c2223656636353438222c2223643733304d08023166222c2223623330303030222c2223376630303030225d2c507542753a5b2223666666376662222c2223656365376632222c2223643064316536222c2223613662646462222c2223373461396366222c2223333639306330222c2223303537306230222c2223303435613864222c2223303233383538225d2c427550753a5b2223663766636664222c2223653065636634222c2223626664336536222c2223396562636461222c2223386339366336222c2223386336626231222c2223383834313964222c2223383130663763222c2223346430303462225d2c4f72616e6765733a5b2223666666356562222c2223666565366365222c2223666464306132222c2223666461653662222c2223666438643363222c2223663136393133222c2223643934383031222c2223613633363033222c2223376632373034225d2c4275476e3a5b2223663766636664222c2223653566356639222c2223636365636536222c2223393964386339222c2223363663326134222c2223343161653736222c2223323338623435222c2223303036643263222c2223303034343162225d2c596c4f7242723a5b2223666666666535222c2223666666376263222c2223666565333931222c2223666563343466222c2223666539393239222c2223656337303134222c2223636334633032222c2223393933343034222c2223363632353036225d2c596c476e3a4d08025b2223666666666535222c2223663766636239222c2223643966306133222c2223616464643865222c2223373863363739222c2223343161623564222c2223323338343433222c2223303036383337222c2223303034353239225d2c526564733a5b2223666666356630222c2223666565306432222c2223666362626131222c2223666339323732222c2223666236613461222c2223656633623263222c2223636231383164222c2223613530663135222c2223363730303064225d2c526450753a5b2223666666376633222c2223666465306464222c2223666363356330222c2223666139666235222c2223663736386131222c2223646433343937222c2223616530313765222c2223376130313737222c2223343930303661225d2c477265656e733a5b2223663766636635222c2223653566356530222c2223633765396330222c2223613164393962222c2223373463343736222c2223343161623564222c2223323338623435222c2223303036643263222c2223303034343162225d2c596c476e42753a5b2223666666666439222c2223656466386231222c2223633765396234222c2223376663646262222c2223343162366334222c2223316439316330222c2223323235656138222c2223323533343934222c2223303831643538225d2c507572706c65733a5b2223666366626664222c2223656665646635222c222364616461654d080262222c2223626362646463222c2223396539616338222c2223383037646261222c2223366135316133222c2223353432373866222c2223336630303764225d2c476e42753a5b2223663766636630222c2223653066336462222c2223636365626335222c2223613864646235222c2223376263636334222c2223346562336433222c2223326238636265222c2223303836386163222c2223303834303831225d2c47726579733a5b2223666666666666222c2223663066306630222c2223643964396439222c2223626462646264222c2223393639363936222c2223373337333733222c2223353235323532222c2223323532353235222c2223303030303030225d2c596c4f7252643a5b2223666666666363222c2223666665646130222c2223666564393736222c2223666562323463222c2223666438643363222c2223666334653261222c2223653331613163222c2223626430303236222c2223383030303236225d2c507552643a5b2223663766346639222c2223653765316566222c2223643462396461222c2223633939346337222c2223646636356230222c2223653732393861222c2223636531323536222c2223393830303433222c2223363730303166225d2c426c7565733a5b2223663766626666222c2223646565626637222c2223633664626566222c2223396563616531222c2223366261656436222c22233432393263364d0802222c2223323137316235222c2223303835313963222c2223303833303662225d2c50754275476e3a5b2223666666376662222c2223656365326630222c2223643064316536222c2223613662646462222c2223363761396366222c2223333639306330222c2223303238313861222c2223303136633539222c2223303134363336225d2c566972696469733a5b2223343430313534222c2223343832373737222c2223336634613861222c2223333136373865222c2223323638333866222c2223316639643861222c2223366363653561222c2223623664653262222c2223666565383235225d2c537065637472616c3a5b2223396530313432222c2223643533653466222c2223663436643433222c2223666461653631222c2223666565303862222c2223666666666266222c2223653666353938222c2223616264646134222c2223363663326135222c2223333238386264222c2223356534666132225d2c5264596c476e3a5b2223613530303236222c2223643733303237222c2223663436643433222c2223666461653631222c2223666565303862222c2223666666666266222c2223643965663862222c2223613664393661222c2223363662643633222c2223316139383530222c2223303036383337225d2c526442753a5b2223363730303166222c2223623231383262222c2223643636303464222c2223663461353832222c22234d0802666464626337222c2223663766376637222c2223643165356630222c2223393263356465222c2223343339336333222c2223323136366163222c2223303533303631225d2c506959473a5b2223386530313532222c2223633531623764222c2223646537376165222c2223663162366461222c2223666465306566222c2223663766376637222c2223653666356430222c2223623865313836222c2223376662633431222c2223346439323231222c2223323736343139225d2c5052476e3a5b2223343030303462222c2223373632613833222c2223393937306162222c2223633261356366222c2223653764346538222c2223663766376637222c2223643966306433222c2223613664626130222c2223356161653631222c2223316237383337222c2223303034343162225d2c5264596c42753a5b2223613530303236222c2223643733303237222c2223663436643433222c2223666461653631222c2223666565303930222c2223666666666266222c2223653066336638222c2223616264396539222c2223373461646431222c2223343537356234222c2223333133363935225d2c427242473a5b2223353433303035222c2223386335313061222c2223626638313264222c2223646663323764222c2223663665386333222c2223663566356635222c2223633765616535222c2223383063646331222c2223333539373866222c22234d0802303136363565222c2223303033633330225d2c526447793a5b2223363730303166222c2223623231383262222c2223643636303464222c2223663461353832222c2223666464626337222c2223666666666666222c2223653065306530222c2223626162616261222c2223383738373837222c2223346434643464222c2223316131613161225d2c50754f723a5b2223376633623038222c2223623335383036222c2223653038323134222c2223666462383633222c2223666565306236222c2223663766376637222c2223643864616562222c2223623261626432222c2223383037336163222c2223353432373838222c2223326430303462225d2c536574323a5b2223363663326135222c2223666338643632222c2223386461306362222c2223653738616333222c2223613664383534222c2223666664393266222c2223653563343934222c2223623362336233225d2c416363656e743a5b2223376663393766222c2223626561656434222c2223666463303836222c2223666666663939222c2223333836636230222c2223663030323766222c2223626635623137222c2223363636363636225d2c536574313a5b2223653431613163222c2223333737656238222c2223346461663461222c2223393834656133222c2223666637663030222c2223666666663333222c2223613635363238222c2223663738316266222c22233939394d0802393939225d2c536574333a5b2223386464336337222c2223666666666233222c2223626562616461222c2223666238303732222c2223383062316433222c2223666462343632222c2223623364653639222c2223666363646535222c2223643964396439222c2223626338306264222c2223636365626335222c2223666665643666225d2c4461726b323a5b2223316239653737222c2223643935663032222c2223373537306233222c2223653732393861222c2223363661363165222c2223653661623032222c2223613637363164222c2223363636363636225d2c5061697265643a5b2223613663656533222c2223316637386234222c2223623264663861222c2223333361303263222c2223666239613939222c2223653331613163222c2223666462663666222c2223666637663030222c2223636162326436222c2223366133643961222c2223666666663939222c2223623135393238225d2c50617374656c323a5b2223623365326364222c2223666463646163222c2223636264356538222c2223663463616534222c2223653666356339222c2223666666326165222c2223663165326363222c2223636363636363225d2c50617374656c313a5b2223666262346165222c2223623363646533222c2223636365626335222c2223646563626534222c2223666564396136222c2223666666666363222c2223653564386264222c224d080223666464616563222c2223663266326632225d7d2c65613d302c74613d4f626a6563742e6b657973287261293b65613c74612e6c656e6774683b65612b3d31297b766172206e613d74615b65615d3b72615b6e612e746f4c6f7765724361736528295d3d72615b6e615d7d72657475726e206d7d293b0a0a66756e6374696f6e2051352865297b72657475726e206e65772066756e6374696f6e20652874297b6c6574206e3d22676c6f62616c223d3d743f77696e646f773a746869733b6e2e63616e7661733d646f63756d656e742e637265617465456c656d656e74282263616e76617322293b6c6574206f3d6e2e63616e7661732e676574436f6e746578742822326422293b6e2e77696474683d3130303b6e2e6865696768743d3130303b6e2e63616e7661732e77696474683d6e2e77696474683b6e2e63616e7661732e6865696768743d6e2e6865696768743b226f666673637265656e22213d74262628646f63756d656e742e626f64793f646f63756d656e742e626f64792e617070656e644368696c64286e2e63616e766173293a77696e646f772e6164644576656e744c697374656e657228226c6f6164222c66756e6374696f6e28297b646f63756d656e742e626f64792e617070656e644368696c64286e2e63616e766173297d29293b6d28293b6e2e4d414749433d3136313533333532353b6e2e5247423d303b6e2e4853564d08023d313b6e2e4853423d313b6e2e43484f52443d303b6e2e5049453d313b6e2e4f50454e3d323b6e2e5241444955533d313b6e2e434f524e45523d323b6e2e434f524e4552533d333b6e2e524f554e443d22726f756e64223b6e2e5351554152453d2262757474223b6e2e50524f4a4543543d22737175617265223b6e2e4d495445523d226d69746572223b6e2e424556454c3d22626576656c223b6e2e434c4f53453d313b6e2e424c454e443d22736f757263652d6f766572223b6e2e52454d4f56453d2264657374696e6174696f6e2d6f7574223b6e2e4144443d226c696768746572223b6e2e4441524b4553543d226461726b656e223b6e2e4c494748544553543d226c69676874656e223b6e2e444946464552454e43453d22646966666572656e6365223b6e2e53554254524143543d227375627472616374223b6e2e4558434c5553494f4e3d226578636c7573696f6e223b6e2e4d554c5449504c593d226d756c7469706c79223b6e2e53435245454e3d2273637265656e223b6e2e5245504c4143453d22636f7079223b6e2e4f5645524c41593d226f7665726c6179223b6e2e484152445f4c494748543d22686172642d6c69676874223b6e2e534f46545f4c494748543d22736f66742d6c69676874223b6e2e444f4447453d22636f6c6f722d646f646765223b6e2e4255524e3d22636f6c6f722d6275726e223b6e2e4e4f524d414d08024c3d226e6f726d616c223b6e2e4954414c49433d226974616c6963223b6e2e424f4c443d22626f6c64223b6e2e424f4c444954414c49433d226974616c696320626f6c64223b6e2e43454e5445523d2263656e746572223b6e2e4c4546543d226c656674223b6e2e52494748543d227269676874223b6e2e544f503d22746f70223b6e2e424f54544f4d3d22626f74746f6d223b6e2e424153454c494e453d22616c7068616265746963223b6e2e4c414e4453434150453d226c616e647363617065223b6e2e504f5254524149543d22706f727472616974223b6e2e414c543d31383b6e2e4241434b53504143453d383b6e2e434f4e54524f4c3d31373b6e2e44454c4554453d34363b6e2e444f574e5f4152524f573d34303b6e2e454e5445523d31333b6e2e4553434150453d32373b6e2e4c4546545f4152524f573d33373b6e2e4f5054494f4e3d31383b6e2e52455455524e3d31333b6e2e52494748545f4152524f573d33393b6e2e53484946543d31363b6e2e5441423d393b6e2e55505f4152524f573d33383b6e2e48414c465f50493d4d6174682e50492f323b6e2e50493d4d6174682e50493b6e2e515541525445525f50493d4d6174682e50492f343b6e2e5441553d322a4d6174682e50493b6e2e54574f5f50493d322a4d6174682e50493b6e2e5448524553484f4c443d313b6e2e475241593d323b6e2e4f50415155453d333b4d08026e2e494e564552543d343b6e2e504f53544552495a453d353b6e2e44494c4154453d363b6e2e45524f44453d373b6e2e424c55523d383b6e2e4152524f573d2264656661756c74223b6e2e43524f53533d2263726f737368616972223b6e2e48414e443d22706f696e746572223b6e2e4d4f56453d226d6f7665223b6e2e544558543d2274657874223b6e2e564944454f3d7b766964656f3a21302c617564696f3a21317d3b6e2e415544494f3d7b766964656f3a21312c617564696f3a21307d3b6e2e534852333d313b6e2e4c43473d323b6e2e48415244574152455f46494c544552533d21303b6e2e68696e743d66756e6374696f6e28652c74297b6e5b655d3d747d3b6e2e6672616d65436f756e743d303b6e2e6d6f757365583d303b6e2e6d6f757365593d303b6e2e706d6f757365583d303b6e2e706d6f757365593d303b6e2e6d6f757365427574746f6e3d6e756c6c3b6e2e6b65794973507265737365643d21313b6e2e6d6f7573654973507265737365643d21313b6e2e6b65793d6e756c6c3b6e2e6b6579436f64653d6e756c6c3b6e2e706978656c733d6e756c6c3b6e2e616363656c65726174696f6e583d303b6e2e616363656c65726174696f6e593d303b6e2e616363656c65726174696f6e5a3d303b6e2e726f746174696f6e583d303b6e2e726f746174696f6e593d303b6e2e726f746174696f6e5a3d303b6e2e72654d08026c526f746174696f6e583d303b6e2e72656c526f746174696f6e593d303b6e2e72656c526f746174696f6e5a3d303b6e2e70416363656c65726174696f6e583d303b6e2e70416363656c65726174696f6e593d303b6e2e70416363656c65726174696f6e5a3d303b6e2e70526f746174696f6e583d303b6e2e70526f746174696f6e593d303b6e2e70526f746174696f6e5a3d303b6e2e7052656c526f746174696f6e583d303b6e2e7052656c526f746174696f6e593d303b6e2e7052656c526f746174696f6e5a3d303b6e2e746f75636865733d5b5d3b6e2e5f636f6c6f724d6f64653d6e2e5247423b6e2e5f6e6f5374726f6b653d21313b6e2e5f6e6f46696c6c3d21313b6e2e5f656c6c697073654d6f64653d6e2e43454e5445523b6e2e5f726563744d6f64653d6e2e434f524e45523b6e2e5f637572766544657461696c3d32303b6e2e5f6375727665416c7068613d303b6e2e5f6e6f4c6f6f703d21313b6e2e5f74657874466f6e743d2273616e732d7365726966223b6e2e5f7465787453697a653d31323b6e2e5f746578744c656164696e673d31323b6e2e5f746578745374796c653d226e6f726d616c223b6e2e5f706978656c44656e736974793d313b6e2e5f6672616d65526174653d6e756c6c3b6e2e5f74696e743d6e756c6c3b6c657420613d6e756c6c3b6c657420723d21303b6c657420693d5b5d3b6c6574206c3d6e4d0802756c6c3b6c657420753d303b6c657420733d7b7d3b6c657420633d303b6c657420683d6e756c6c3b6c657420663d6e756c6c3b6c657420643d6e756c6c3b4f626a6563742e646566696e6550726f7065727479286e2c226465766963654f7269656e746174696f6e222c7b6765743a66756e6374696f6e28297b72657475726e2039303d3d4d6174682e6162732877696e646f772e6f7269656e746174696f6e293f6e2e4c414e4453434150453a6e2e504f5254524149547d7d293b4f626a6563742e646566696e6550726f7065727479286e2c2277696e646f775769647468222c7b6765743a66756e6374696f6e28297b72657475726e2077696e646f772e696e6e657257696474687d7d293b4f626a6563742e646566696e6550726f7065727479286e2c2277696e646f77486569676874222c7b6765743a66756e6374696f6e28297b72657475726e2077696e646f772e696e6e65724865696768747d7d293b4f626a6563742e646566696e6550726f7065727479286e2c2264726177696e67436f6e74657874222c7b6765743a66756e6374696f6e28297b72657475726e206f7d7d293b6e2e63726561746543616e7661733d66756e6374696f6e28652c74297b6e2e77696474683d652c6e2e6865696768743d742c6e2e63616e7661732e77696474683d652c6e2e63616e7661732e6865696768743d742c6d28297d3b6e2e726573697a4d08026543616e7661733d66756e6374696f6e28652c74297b6e2e77696474683d652c6e2e6865696768743d742c6e2e63616e7661732e77696474683d652c6e2e63616e7661732e6865696768743d747d3b6e2e63726561746547726170686963733d6e2e637265617465496d6167653d66756e6374696f6e28742c6e297b6c6574206f3d6e6577206528226f666673637265656e22293b72657475726e206f2e63726561746543616e76617328742c6e292c6f2e6e6f4c6f6f7028292c6f7d3b6e2e706978656c44656e736974793d66756e6374696f6e2865297b72657475726e206e756c6c3d3d653f6e2e5f706978656c44656e736974793a286e2e5f706978656c44656e736974793d652c6e2e63616e7661732e77696474683d4d6174682e6365696c286e2e77696474682a65292c6e2e63616e7661732e6865696768743d4d6174682e6365696c286e2e6865696768742a65292c6e2e63616e7661732e7374796c652e77696474683d6e2e77696474682b227078222c6e2e63616e7661732e7374796c652e6865696768743d6e2e6865696768742b227078222c6f2e7363616c65286e2e5f706978656c44656e736974792c6e2e5f706978656c44656e73697479292c6d28292c6e2e5f706978656c44656e73697479297d3b6e2e6d61703d66756e6374696f6e28652c742c6e2c6f2c612c72297b6c657420693d6f2b312a28652d74292f286e4d08022d74292a28612d6f293b72657475726e20723f6f3c613f4d6174682e6d696e284d6174682e6d617828692c6f292c61293a4d6174682e6d696e284d6174682e6d617828692c61292c6f293a697d3b6e2e6c6572703d66756e6374696f6e28652c742c6e297b72657475726e20652a28312d6e292b742a6e7d3b6e2e636f6e73747261696e3d66756e6374696f6e28652c742c6e297b72657475726e204d6174682e6d696e284d6174682e6d617828652c74292c6e297d3b6e2e646973743d66756e6374696f6e28297b72657475726e20343d3d617267756d656e74732e6c656e6774683f4d6174682e6879706f7428617267756d656e74735b305d2d617267756d656e74735b325d2c617267756d656e74735b315d2d617267756d656e74735b335d293a4d6174682e6879706f7428617267756d656e74735b305d2d617267756d656e74735b335d2c617267756d656e74735b315d2d617267756d656e74735b345d2c617267756d656e74735b325d2d617267756d656e74735b355d297d3b6e2e6e6f726d3d66756e6374696f6e28652c742c6f297b72657475726e206e2e6d617028652c742c6f2c302c31297d3b6e2e73713d66756e6374696f6e2865297b72657475726e20652a657d3b6e2e66726163743d66756e6374696f6e2865297b72657475726e20652d4d6174682e666c6f6f722865297d3b6e2e646567726565733d66756e6374694d08026f6e2865297b72657475726e203138302a652f4d6174682e50497d3b6e2e72616469616e733d66756e6374696f6e2865297b72657475726e20652a4d6174682e50492f3138307d3b6e2e6162733d4d6174682e6162733b6e2e6365696c3d4d6174682e6365696c3b6e2e6578703d4d6174682e6578703b6e2e666c6f6f723d4d6174682e666c6f6f723b6e2e6c6f673d4d6174682e6c6f673b6e2e6d61673d4d6174682e6879706f743b6e2e6d61783d4d6174682e6d61783b6e2e6d696e3d4d6174682e6d696e3b6e2e726f756e643d4d6174682e726f756e643b6e2e737172743d4d6174682e737172743b6e2e73696e3d4d6174682e73696e3b6e2e636f733d4d6174682e636f733b6e2e74616e3d4d6174682e74616e3b6e2e6173696e3d4d6174682e6173696e3b6e2e61636f733d4d6174682e61636f733b6e2e6174616e3d4d6174682e6174616e3b6e2e6174616e323d4d6174682e6174616e323b6e2e566563746f723d66756e6374696f6e28652c742c6f297b6c657420613d746869733b612e783d657c7c302c612e793d747c7c302c612e7a3d6f7c7c303b6c657420723d6e756c6c2c693d6e756c6c3b66756e6374696f6e206c28652c742c6e297b72657475726e206e756c6c213d652e783f653a6e756c6c213d743f7b783a652c793a742c7a3a6e7c7c307d3a7b783a652c793a652c7a3a657d7d66756e6374696f6e207528294d08027b6e756c6c3d3d69262628693d612e782a612e782b612e792a612e792b612e7a2a612e7a2c723d4d6174682e73717274286929297d66756e6374696f6e207328297b693d6e756c6c2c723d6e756c6c7d612e7365743d66756e6374696f6e28652c742c6e297b612e783d657c7c302c612e793d747c7c302c612e7a3d6e7c7c307d2c612e636f70793d66756e6374696f6e28297b72657475726e206e6577206e2e566563746f7228612e782c612e792c612e7a297d2c612e6164643d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782b3d652e782c612e792b3d652e792c612e7a2b3d652e7a2c7328292c617d2c612e72656d3d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e78253d652e782c612e79253d652e792c612e7a253d652e7a2c7328292c617d2c612e7375623d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782d3d652e782c612e792d3d652e792c612e7a2d3d652e7a2c7328292c617d2c612e6d756c743d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782a3d652e782c612e792a3d652e792c614d08022e7a2a3d652e7a2c7328292c617d2c612e6469763d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782f3d652e782c612e792f3d652e792c612e7a2f3d652e7a2c7328292c617d2c612e6d61673d66756e6374696f6e28297b72657475726e207528292c727d2c612e6d616753713d66756e6374696f6e28297b72657475726e207528292c697d2c612e646f743d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b72657475726e20612e782a652e782b612e792a652e792b612e7a2a652e7a7d2c612e646973743d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473292c743d612e782d652e782c6e3d612e792d652e792c6f3d612e7a2d652e7a3b72657475726e204d6174682e7371727428742a742b6e2a6e2b6f2a6f297d2c612e63726f73733d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473292c743d612e792a652e7a2d612e7a2a652e792c6e3d612e7a2a652e782d612e782a652e7a2c6f3d612e782a652e792d612e792a652e783b72657475726e20612e783d742c612e793d6e2c612e7a3d6f2c7328292c617d2c612e6e6f726d616c697a653d66756e6374696f6e28297b7528293b6c65744d080220653d723b72657475726e20612e782f3d652c612e792f3d652c612e7a2f3d652c723d312c693d312c617d2c612e6c696d69743d66756e6374696f6e2865297b7528293b6c657420743d723b696628743e65297b6c6574206e3d652f743b612e782a3d6e2c612e792a3d6e2c612e7a2a3d6e2c723d652c693d652a657d72657475726e20617d2c612e7365744d61673d66756e6374696f6e2865297b7528293b6c657420743d722c6e3d652f743b72657475726e20612e782a3d6e2c612e792a3d6e2c612e7a2a3d6e2c723d652c693d652a652c617d2c612e68656164696e673d66756e6374696f6e28297b72657475726e204d6174682e6174616e3228612e792c612e78297d2c612e726f746174653d66756e6374696f6e2865297b6c657420743d4d6174682e636f732865292c6e3d4d6174682e73696e2865292c6f3d612e782a742d612e792a6e2c723d612e782a6e2b612e792a743b72657475726e20612e783d6f2c612e793d722c617d2c612e616e676c654265747765656e3d66756e6374696f6e28297b6c657420653d6c2e6170706c79286e756c6c2c617267756d656e7473293b636f6e737420743d612e646f742865292f28612e6d616728292a652e6d61672829293b6c6574206e3b72657475726e206e3d4d6174682e61636f73284d6174682e6d696e28312c4d6174682e6d6178282d312c742929292c6e2a3d4d6174682e734d080269676e28612e63726f73732865292e7a7c7c31297d2c612e6c6572703d66756e6374696f6e28652c74297b72657475726e20612e783d612e782a28312d74292b652e782a742c612e793d612e792a28312d74292b652e792a742c612e7a3d612e7a2a28312d74292b652e7a2a742c7328292c617d2c612e7265666c6563743d66756e6374696f6e2865297b72657475726e20652e6e6f726d616c697a6528292c612e73756228652e6d756c7428322a612e646f7428652929297d2c612e61727261793d66756e6374696f6e28297b72657475726e5b612e782c612e792c612e7a5d7d2c612e657175616c733d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d7426266e756c6c3d3d28743d4e756d6265722e455053494c4f4e29262628743d30292c4d6174682e61627328652e782d612e78293c7426264d6174682e61627328652e792d612e79293c7426264d6174682e61627328652e7a2d612e7a293c747d2c612e66726f6d416e676c653d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d74262628743d31292c723d742c693d742a742c612e783d742a4d6174682e636f732865292c612e793d742a4d6174682e73696e2865292c612e7a3d302c617d2c612e66726f6d416e676c65733d66756e6374696f6e28652c742c6e297b6e756c6c3d3d6e2626286e3d31292c723d6e2c693d6e2a6e3b636f4d08026e7374206f3d4d6174682e636f732874292c6c3d4d6174682e73696e2874292c753d4d6174682e636f732865292c733d4d6174682e73696e2865293b72657475726e20612e783d6e2a732a6c2c612e793d2d6e2a752c612e7a3d6e2a732a6f2c617d2c612e72616e646f6d32443d66756e6374696f6e28297b72657475726e20723d312c693d312c612e66726f6d416e676c65284d6174682e72616e646f6d28292a4d6174682e50492a32297d2c612e72616e646f6d33443d66756e6374696f6e28297b72657475726e20723d312c693d312c612e66726f6d416e676c6573284d6174682e72616e646f6d28292a4d6174682e50492a322c4d6174682e72616e646f6d28292a4d6174682e50492a32297d2c612e746f537472696e673d66756e6374696f6e28297b72657475726e605b247b612e787d2c20247b612e797d2c20247b612e7a7d5d607d7d3b6e2e566563746f722e6164643d66756e6374696f6e28652c74297b72657475726e206e6577206e2e566563746f7228652e782b742e782c652e792b742e792c652e7a2b742e7a297d3b6e2e566563746f722e72656d3d66756e6374696f6e28652c74297b72657475726e206e6577206e2e566563746f7228652e7825742e782c652e7925742e792c652e7a25742e7a297d3b6e2e566563746f722e7375623d66756e6374696f6e28652c74297b72657475726e206e6577206e2e5665634d0802746f7228652e782d742e782c652e792d742e792c652e7a2d742e7a297d3b6e2e566563746f722e6d756c743d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d742e783f6e6577206e2e566563746f7228652e782a742c652e792a742c652e7a2a74293a6e6577206e2e566563746f7228652e782a742e782c652e792a742e792c652e7a2a742e7a297d3b6e2e566563746f722e6469763d66756e6374696f6e28652c74297b72657475726e206e756c6c3d3d742e783f6e6577206e2e566563746f7228652e782f742c652e792f742c652e7a2f74293a6e6577206e2e566563746f7228652e782f742e782c652e792f742e792c652e7a2f742e7a297d3b6e2e566563746f722e646973743d66756e6374696f6e28652c74297b72657475726e204d6174682e6879706f7428652e782d742e782c652e792d742e792c652e7a2d742e7a297d3b6e2e566563746f722e63726f73733d66756e6374696f6e28652c74297b72657475726e206e6577206e2e566563746f7228652e792a742e7a2d652e7a2a742e792c652e7a2a742e782d652e782a742e7a2c652e782a742e792d652e792a742e78297d3b6e2e566563746f722e6c6572703d66756e6374696f6e28652c742c6f297b72657475726e206e6577206e2e566563746f7228652e782a28312d6f292b742e782a6f2c652e793d652e792a28312d6f292b742e792a6f2c652e4d08027a3d652e7a2a28312d6f292b742e7a2a6f297d3b6e2e566563746f722e657175616c733d66756e6374696f6e28652c742c6e297b72657475726e20652e657175616c7328742c6e297d3b666f72286c65742065206f665b2266726f6d416e676c65222c2266726f6d416e676c6573222c2272616e646f6d3244222c2272616e646f6d3344225d296e2e566563746f725b655d3d66756e6374696f6e28742c6f2c61297b72657475726e286e6577206e2e566563746f72295b655d28742c6f2c61297d3b6e2e637265617465566563746f723d66756e6374696f6e28652c742c6f297b72657475726e206e6577206e2e566563746f7228652c742c6f297d3b6e2e6375727665506f696e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d612a612a612c693d612a612c6c3d2d2e352a722b692d2e352a612c753d312e352a722d322e352a692b312c733d2d312e352a722b322a692b2e352a612c633d2e352a722d2e352a693b72657475726e20652a6c2b742a752b6e2a732b6f2a637d3b6e2e62657a696572506f696e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d312d613b72657475726e204d6174682e706f7728722c33292a652b332a4d6174682e706f7728722c32292a612a742b332a722a4d6174682e706f7728612c32292a6e2b4d6174682e706f7728612c33292a6f7d3b6e2e4d0802637572766554616e67656e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d612a612c693d2d332a722f322b322a612d2e352c6c3d392a722f322d352a612c753d2d392a722f322b342a612b2e352c733d332a722f322d613b72657475726e20652a692b742a6c2b6e2a752b6f2a737d3b6e2e62657a69657254616e67656e743d66756e6374696f6e28652c742c6e2c6f2c61297b636f6e737420723d312d613b72657475726e20332a6f2a4d6174682e706f7728612c32292d332a6e2a4d6174682e706f7728612c32292b362a6e2a722a612d362a742a722a612b332a742a4d6174682e706f7728722c32292d332a652a4d6174682e706f7728722c32297d3b66756e6374696f6e207028652c742c6e297b6c6574206f2c612c722c692c6c2c752c732c632c683b696628303d3d742972657475726e5b3235352a286f3d6e292c3235352a28613d6e292c3235352a28723d6e295d3b7377697463682828693d65293e333630262628693d30292c733d6e2a28312d74292c633d6e2a28312d742a28753d28692f3d3630292d286c3d7e7e692929292c683d6e2a28312d742a28312d7529292c6c297b6361736520303a6f3d6e2c613d682c723d733b627265616b3b6361736520313a6f3d632c613d6e2c723d733b627265616b3b6361736520323a6f3d732c613d6e2c723d683b627265616b3b6361736520333a6f3d4d0802732c613d632c723d6e3b627265616b3b6361736520343a6f3d682c613d732c723d6e3b627265616b3b64656661756c743a6f3d6e2c613d732c723d637d72657475726e5b3235352a6f2c3235352a612c3235352a725d7d6e2e436f6c6f723d66756e6374696f6e28652c742c6e2c6f297b6c657420613d746869733b612e4d414749433d3738363639382c612e5f723d652c612e5f673d742c612e5f623d6e2c612e5f613d6f2c612e5f683d302c612e5f733d302c612e5f763d302c612e5f687376496e6665727265643d21312c612e7365745265643d66756e6374696f6e2865297b612e5f723d652c612e5f687376496e6665727265643d21317d2c612e736574477265656e3d66756e6374696f6e2865297b612e5f673d652c612e5f687376496e6665727265643d21317d2c612e736574426c75653d66756e6374696f6e2865297b612e5f623d652c612e5f687376496e6665727265643d21317d2c612e736574416c7068613d66756e6374696f6e2865297b612e5f613d652f3235352c612e5f687376496e6665727265643d21317d2c612e5f696e6665724853563d66756e6374696f6e28297b612e5f687376496e6665727265647c7c285b612e5f682c612e5f732c612e5f765d3d66756e6374696f6e28652c742c6e297b6c6574206f2c612c722c692c6c3b6966286f3d653c743f653c6e3f653a6e3a743c6e3f743a6e2c303d3d286c4d08023d3130302a28613d653e743f653e6e3f653a6e3a743e6e3f743a6e292f323535292972657475726e5b723d302c693d302c6c5d3b696628303d3d28693d3130302a28612d6f292f61292972657475726e5b723d302c692c6c5d3b723d613d3d653f302b36302a28742d6e292f28612d6f293a613d3d743f3132302b36302a286e2d65292f28612d6f293a3234302b36302a28652d74292f28612d6f293b72657475726e5b722c692c6c5d7d28612e5f722c612e5f672c612e5f62292c612e5f687376496e6665727265643d2130297d2c612e746f537472696e673d66756e6374696f6e28297b72657475726e607267626128247b4d6174682e726f756e6428612e5f72297d2c247b4d6174682e726f756e6428612e5f67297d2c247b4d6174682e726f756e6428612e5f62297d2c247b7e7e283165332a612e5f61292f3165337d29607d7d3b6e2e636f6c6f724d6f64653d66756e6374696f6e2865297b6e2e5f636f6c6f724d6f64653d657d3b6e2e636f6c6f723d66756e6374696f6e28297b696628313d3d617267756d656e74732e6c656e67746826263738363639383d3d617267756d656e74735b305d2e4d414749432972657475726e20617267756d656e74735b305d3b6966286e2e5f636f6c6f724d6f64653d3d6e2e524742297b696628313d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f4d08027228617267756d656e74735b305d2c617267756d656e74735b305d2c617267756d656e74735b305d2c31293b696628323d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f7228617267756d656e74735b305d2c617267756d656e74735b305d2c617267756d656e74735b305d2c617267756d656e74735b315d2f323535293b696628333d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f7228617267756d656e74735b305d2c617267756d656e74735b315d2c617267756d656e74735b325d2c31293b696628343d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f7228617267756d656e74735b305d2c617267756d656e74735b315d2c617267756d656e74735b325d2c617267756d656e74735b335d2f323535297d656c73657b696628313d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f72282e2e2e7028302c302c617267756d656e74735b305d2f313030292c31293b696628323d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f72282e2e2e7028302c302c617267756d656e74735b305d2f313030292c617267756d656e74735b315d2f323535293b696628333d3d617267756d656e74732e6c656e6774682972657475726e204d08026e6577206e2e436f6c6f72282e2e2e7028617267756d656e74735b305d2c617267756d656e74735b315d2f3130302c617267756d656e74735b325d2f313030292c31293b696628343d3d617267756d656e74732e6c656e6774682972657475726e206e6577206e2e436f6c6f72282e2e2e7028617267756d656e74735b305d2c617267756d656e74735b315d2f3130302c617267756d656e74735b325d2f313030292c617267756d656e74735b335d297d72657475726e206e756c6c7d3b6e2e7265643d66756e6374696f6e2865297b72657475726e20652e5f727d3b6e2e677265656e3d66756e6374696f6e2865297b72657475726e20652e5f677d3b6e2e626c75653d66756e6374696f6e2865297b72657475726e20652e5f627d3b6e2e616c7068613d66756e6374696f6e2865297b72657475726e203235352a652e5f617d3b6e2e6875653d66756e6374696f6e2865297b72657475726e20652e5f696e66657248535628292c652e5f687d3b6e2e73617475726174696f6e3d66756e6374696f6e2865297b72657475726e20652e5f696e66657248535628292c652e5f737d3b6e2e6272696768746e6573733d66756e6374696f6e2865297b72657475726e20652e5f696e66657248535628292c652e5f767d3b6e2e6c696768746e6573733d66756e6374696f6e2865297b72657475726e203130302a282e323132362a652e5f722b2e4d0802373135322a652e5f672b2e303732322a652e5f62292f3235357d3b6e2e6c657270436f6c6f723d66756e6374696f6e28652c742c6f297b72657475726e206e2e5f636f6c6f724d6f64653d3d6e2e5247423f6e6577206e2e436f6c6f72286e2e636f6e73747261696e286e2e6c65727028652e5f722c742e5f722c6f292c302c323535292c6e2e636f6e73747261696e286e2e6c65727028652e5f672c742e5f672c6f292c302c323535292c6e2e636f6e73747261696e286e2e6c65727028652e5f622c742e5f622c6f292c302c323535292c6e2e636f6e73747261696e286e2e6c65727028652e5f612c742e5f612c6f292c302c3129293a28652e5f696e66657248535628292c742e5f696e66657248535628292c6e6577206e2e436f6c6f72286e2e636f6e73747261696e2866756e6374696f6e28652c742c6f297b76617220613d5b5b4d6174682e61627328742d65292c6e2e6d6170286f2c302c312c652c74295d2c5b4d6174682e61627328742b3336302d65292c6e2e6d6170286f2c302c312c652c742b333630295d2c5b4d6174682e61627328742d3336302d65292c6e2e6d6170286f2c302c312c652c742d333630295d5d3b72657475726e20612e736f72742828652c74293d3e655b305d2d745b305d292c28615b305d5b315d2b37323029253336307d28652e5f682c742e5f682c6f292c302c333630292c6e2e636f6e7374724d080261696e286e2e6c65727028652e5f732c742e5f732c6f292c302c313030292c6e2e636f6e73747261696e286e2e6c65727028652e5f762c742e5f762c6f292c302c313030292c6e2e636f6e73747261696e286e2e6c65727028652e5f612c742e5f612c6f292c302c312929297d3b66756e6374696f6e206d28297b6f2e66696c6c5374796c653d227768697465222c6f2e7374726f6b655374796c653d22626c61636b222c6f2e6c696e654361703d22726f756e64222c6f2e6c696e654a6f696e3d226d69746572227d6e2e7374726f6b655765696768743d66756e6374696f6e2865297b6e2e5f6e6f5374726f6b653d21312c6f2e6c696e6557696474683d657d3b6e2e7374726f6b653d66756e6374696f6e28297b6966286e2e5f6e6f5374726f6b653d21312c22737472696e67223d3d747970656f6620617267756d656e74735b305d2972657475726e20766f6964286f2e7374726f6b655374796c653d617267756d656e74735b305d293b6c657420653d6e2e636f6c6f722e6170706c79286e756c6c2c617267756d656e7473293b652e5f613c3d303f6e2e5f6e6f5374726f6b653d21303a6f2e7374726f6b655374796c653d657d3b6e2e6e6f5374726f6b653d66756e6374696f6e28297b6e2e5f6e6f5374726f6b653d21307d3b6e2e66696c6c3d66756e6374696f6e28297b6966286e2e5f6e6f46696c6c3d21312c22737472694d08026e67223d3d747970656f6620617267756d656e74735b305d2972657475726e20766f6964286f2e66696c6c5374796c653d617267756d656e74735b305d293b6c657420653d6e2e636f6c6f722e6170706c79286e756c6c2c617267756d656e7473293b652e5f613c3d303f6e2e5f6e6f46696c6c3d21303a6f2e66696c6c5374796c653d657d3b6e2e6e6f46696c6c3d66756e6374696f6e28297b6e2e5f6e6f46696c6c3d21307d3b6e2e626c656e644d6f64653d66756e6374696f6e2865297b6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3d657d3b6e2e7374726f6b654361703d66756e6374696f6e2865297b6f2e6c696e654361703d657d3b6e2e7374726f6b654a6f696e3d66756e6374696f6e2865297b6f2e6c696e654a6f696e3d657d3b6e2e656c6c697073654d6f64653d66756e6374696f6e2865297b6e2e5f656c6c697073654d6f64653d657d3b6e2e726563744d6f64653d66756e6374696f6e2865297b6e2e5f726563744d6f64653d657d3b6e2e637572766544657461696c3d66756e6374696f6e2865297b6e2e5f637572766544657461696c3d657d3b6e2e6375727665416c7068613d66756e6374696f6e2865297b6e2e5f6375727665416c7068613d657d3b6e2e637572766554696768746e6573733d66756e6374696f6e2865297b636f6e736f6c652e7761726e2822637572766554696768744d08026e65737328292073657473207468652027616c7068612720706172616d65746572206f66204361746d756c6c2d526f6d2063757276652c20616e64206973204e4f54206964656e746963616c20746f2070352e6a7320636f756e746572706172742e2041732074686973206d69676874206368616e676520696e20746865206675747572652c20706c656173652063616c6c206375727665416c7068612829206469726563746c792e22292c6e2e5f6375727665416c7068613d657d3b6e2e636c6561723d66756e6374696f6e28297b6f2e636c6561725265637428302c302c6e2e77696474682c6e2e686569676874297d3b6e2e6261636b67726f756e643d66756e6374696f6e28297b696628617267756d656e74735b305d2626617267756d656e74735b305d2e4d414749433d3d6e2e4d414749432972657475726e206e2e696d61676528617267756d656e74735b305d2c302c302c6e2e77696474682c6e2e686569676874293b6f2e7361766528292c6f2e72657365745472616e73666f726d28292c22737472696e67223d3d747970656f6620617267756d656e74735b305d3f6f2e66696c6c5374796c653d617267756d656e74735b305d3a6f2e66696c6c5374796c653d6e2e636f6c6f72282e2e2e41727261792e66726f6d28617267756d656e747329292c6f2e66696c6c5265637428302c302c6e2e77696474682c6e2e686569674d08026874292c6f2e726573746f726528297d3b6e2e6c696e653d66756e6374696f6e28652c742c612c72297b6e2e5f6e6f5374726f6b657c7c286f2e626567696e5061746828292c6f2e6d6f7665546f28652c74292c6f2e6c696e65546f28612c72292c6f2e7374726f6b652829297d3b66756e6374696f6e20672865297b696628303c3d652626653c322a4d6174682e50492972657475726e20653b666f72283b653c303b29652b3d322a4d6174682e50493b666f72283b653e3d4d6174682e50493b29652d3d322a4d6174682e50493b72657475726e20657d66756e6374696f6e207628652c742c612c722c692c6c2c752c73297b6966286e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652972657475726e3b6c657420633d672869292c683d67286c293b6f2e626567696e5061746828293b666f72286c657420693d303b693c732b313b692b2b297b6c6574206c3d692f732c753d6e2e6c65727028632c682c6c292c663d4d6174682e636f732875292a612f322c643d4d6174682e73696e2875292a722f323b6f5b693f226c696e65546f223a226d6f7665546f225d28652b662c742b64297d753d3d6e2e43484f52443f6f2e636c6f73655061746828293a753d3d6e2e5049452626286f2e6c696e65546f28652c74292c6f2e636c6f7365506174682829292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374724d08026f6b657c7c6f2e7374726f6b6528297d6e2e6172633d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b696628723d3d692972657475726e206e2e656c6c6970736528652c742c6f2c61293b6e756c6c3d3d75262628753d3235292c6e756c6c3d3d6c2626286c3d6e2e504945292c6e2e5f656c6c697073654d6f64653d3d6e2e43454e5445523f7628652c742c6f2c612c722c692c6c2c75293a6e2e5f656c6c697073654d6f64653d3d6e2e5241444955533f7628652c742c322a6f2c322a612c722c692c6c2c75293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e45523f7628652b6f2f322c742b612f322c6f2c612c722c692c6c2c75293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e4552532626762828652b6f292f322c28742b61292f322c6f2d652c612d742c722c692c6c2c75297d3b66756e6374696f6e204d28652c742c612c72297b6e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b657c7c286f2e626567696e5061746828292c6f2e656c6c6970736528652c742c612f322c722f322c302c302c322a4d6174682e5049292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b652829297d6e2e656c6c697073653d66756e6374696f6e28652c742c6f2c61297b6e756c6c3d3d61262628613d6f292c6e2e5f656c6c697073654d6f4d080264653d3d6e2e43454e5445523f4d28652c742c6f2c61293a6e2e5f656c6c697073654d6f64653d3d6e2e5241444955533f4d28652c742c322a6f2c322a61293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e45523f4d28652b6f2f322c742b612f322c6f2c61293a6e2e5f656c6c697073654d6f64653d3d6e2e434f524e45525326264d2828652b6f292f322c28742b61292f322c6f2d652c612d74297d3b6e2e636972636c653d66756e6374696f6e28652c742c6f297b72657475726e206e2e656c6c6970736528652c742c6f2c6f297d3b6e2e706f696e743d66756e6374696f6e28652c74297b652e78262628743d652e792c653d652e78292c6f2e626567696e5061746828292c6f2e656c6c6970736528652c742c2e342c2e342c302c302c322a4d6174682e5049292c6f2e7374726f6b6528297d3b66756e6374696f6e205f28652c742c612c722c692c6c2c752c73297b6966286e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652972657475726e3b6966286e756c6c3d3d692972657475726e2066756e6374696f6e28652c742c612c72297b6e2e5f6e6f46696c6c7c7c6f2e66696c6c5265637428652c742c612c72293b6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b655265637428652c742c612c72297d28652c742c612c72293b6966286e756c6c3d3d6c2972657475726e205f28652c742c612c722c692c4d0802692c692c69293b636f6e737420633d4d6174682e6d696e284d6174682e6162732872292c4d6174682e616273286129292f323b693d4d6174682e6d696e28632c69292c6c3d4d6174682e6d696e28632c6c292c733d4d6174682e6d696e28632c73292c753d4d6174682e6d696e28632c75292c6f2e626567696e5061746828292c6f2e6d6f7665546f28652b692c74292c6f2e617263546f28652b612c742c652b612c742b722c6c292c6f2e617263546f28652b612c742b722c652c742b722c75292c6f2e617263546f28652c742b722c652c742c73292c6f2e617263546f28652c742c652b612c742c69292c6f2e636c6f73655061746828292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b6528297d6e2e726563743d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e5f726563744d6f64653d3d6e2e43454e5445523f5f28652d6f2f322c742d612f322c6f2c612c722c692c6c2c75293a6e2e5f726563744d6f64653d3d6e2e5241444955533f5f28652d6f2c742d612c322a6f2c322a612c722c692c6c2c75293a6e2e5f726563744d6f64653d3d6e2e434f524e45523f5f28652c742c6f2c612c722c692c6c2c75293a6e2e5f726563744d6f64653d3d6e2e434f524e45525326265f28652c742c6f2d652c612d742c722c692c6c2c75297d3b6e2e7371754d08026172653d66756e6374696f6e28652c742c6f2c612c722c692c6c297b72657475726e206e2e7265637428652c742c6f2c6f2c612c722c692c6c297d3b66756e6374696f6e207828297b693d5b5d7d6e2e626567696e53686170653d66756e6374696f6e28297b7828292c6f2e626567696e5061746828292c723d21307d3b6e2e626567696e436f6e746f75723d66756e6374696f6e28297b6f2e636c6f73655061746828292c7828292c723d21307d3b6e2e656e64436f6e746f75723d66756e6374696f6e28297b7828292c723d21307d3b6e2e7665727465783d66756e6374696f6e28652c74297b7828292c723f6f2e6d6f7665546f28652c74293a6f2e6c696e65546f28652c74292c723d21317d3b6e2e62657a6965725665727465783d66756e6374696f6e28652c742c6e2c612c722c69297b7828292c6f2e62657a6965724375727665546f28652c742c6e2c612c722c69297d3b6e2e7175616472617469635665727465783d66756e6374696f6e28652c742c6e2c61297b7828292c6f2e7175616472617469634375727665546f28652c742c6e2c61297d3b6e2e62657a6965723d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e626567696e536861706528292c6e2e76657274657828652c74292c6e2e62657a696572566572746578286f2c612c722c692c6c2c75292c6e2e656e64536861706528297d3b6e4d08022e747269616e676c653d66756e6374696f6e28652c742c6f2c612c722c69297b6e2e626567696e536861706528292c6e2e76657274657828652c74292c6e2e766572746578286f2c61292c6e2e76657274657828722c69292c6e2e656e645368617065286e2e434c4f5345297d3b6e2e717561643d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e626567696e536861706528292c6e2e76657274657828652c74292c6e2e766572746578286f2c61292c6e2e76657274657828722c69292c6e2e766572746578286c2c75292c6e2e656e645368617065286e2e434c4f5345297d3b6e2e656e6453686170653d66756e6374696f6e2865297b7828292c6526266f2e636c6f73655061746828292c6e2e5f6e6f46696c6c7c7c6f2e66696c6c28292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b6528292c6e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652626286f2e7361766528292c6f2e66696c6c5374796c653d226e6f6e65222c6f2e66696c6c28292c6f2e726573746f72652829297d3b6e2e63757276655665727465783d66756e6374696f6e28652c74297b696628692e70757368285b652c745d292c692e6c656e6774683c342972657475726e3b6c657420613d695b692e6c656e6774682d345d2c6c3d695b692e6c656e6774682d335d2c753d695b692e6c656e6774682d325d2c733d695b692e4d08026c656e6774682d315d2c633d66756e6374696f6e28652c742c6e2c6f2c612c722c692c6c2c752c73297b66756e6374696f6e206328652c742c6e2c6f2c612c72297b6c657420693d4d6174682e706f77286f2d742c32292b4d6174682e706f7728612d6e2c32292c6c3d4d6174682e706f7728692c2e352a72293b72657475726e206c2b657d6c657420683d5b5d2c663d6328302c652c742c6e2c6f2c73292c643d6328662c6e2c6f2c612c722c73292c703d6328642c612c722c692c6c2c73293b666f72286c657420733d303b733c753b732b2b297b6c657420633d662b732f28752d31292a28642d66292c6d3d5b28662d63292f28662d30292c28632d30292f28662d30292c28642d63292f28642d66292c28632d66292f28642d66292c28702d63292f28702d64292c28632d64292f28702d64292c28642d63292f28642d30292c28632d30292f28642d30292c28702d63292f28702d66292c28632d66292f28702d66295d3b666f72286c657420653d303b653c6d2e6c656e6774683b652b3d322969734e614e286d5b655d292626286d5b655d3d312c6d5b652b315d3d30292c697346696e697465286d5b655d297c7c286d5b655d3e303f286d5b655d3d312c6d5b652b315d3d30293a286d5b655d3d302c6d5b652b315d3d3129293b6c657420673d652a6d5b305d2b6e2a6d5b315d2c763d742a6d5b305d2b6f2a6d5b315d2c4d3d6e4d08022a6d5b325d2b612a6d5b335d2c5f3d6f2a6d5b325d2b722a6d5b335d2c783d612a6d5b345d2b692a6d5b355d2c793d722a6d5b345d2b6c2a6d5b355d2c773d672a6d5b365d2b4d2a6d5b375d2c523d762a6d5b365d2b5f2a6d5b375d2c493d4d2a6d5b385d2b782a6d5b395d2c453d5f2a6d5b385d2b792a6d5b395d2c533d772a6d5b325d2b492a6d5b335d2c433d522a6d5b325d2b452a6d5b335d3b682e70757368285b532c435d297d72657475726e20687d282e2e2e612c2e2e2e6c2c2e2e2e752c2e2e2e732c6e2e5f637572766544657461696c2c6e2e5f6375727665416c706861293b666f72286c657420653d303b653c632e6c656e6774683b652b2b29723f6f2e6d6f7665546f282e2e2e635b655d293a6f2e6c696e65546f282e2e2e635b655d292c723d21317d3b6e2e63757276653d66756e6374696f6e28652c742c6f2c612c722c692c6c2c75297b6e2e626567696e536861706528292c6e2e637572766556657274657828652c74292c6e2e6375727665566572746578286f2c61292c6e2e637572766556657274657828722c69292c6e2e6375727665566572746578286c2c75292c6e2e656e64536861706528297d3b6e2e7472616e736c6174653d66756e6374696f6e28652c74297b6f2e7472616e736c61746528652c74297d3b6e2e726f746174653d66756e6374696f6e2865297b6f2e726f746174652865297d3b6e4d08022e7363616c653d66756e6374696f6e28652c74297b6e756c6c3d3d74262628743d65292c6f2e7363616c6528652c74297d3b6e2e6170706c794d61747269783d66756e6374696f6e28652c742c6e2c612c722c69297b6f2e7472616e73666f726d28652c742c6e2c612c722c69297d3b6e2e7368656172583d66756e6374696f6e2865297b6f2e7472616e73666f726d28312c302c4d6174682e74616e2865292c312c302c30297d3b6e2e7368656172593d66756e6374696f6e2865297b6f2e7472616e73666f726d28312c4d6174682e74616e2865292c302c312c302c30297d3b6e2e72657365744d61747269783d66756e6374696f6e28297b6f2e72657365745472616e73666f726d28292c6f2e7363616c65286e2e5f706978656c44656e736974792c6e2e5f706978656c44656e73697479297d3b6e2e707573684d61747269783d6e2e707573683d66756e6374696f6e28297b6f2e7361766528297d3b6e2e706f704d61747269783d6e2e706f703d66756e6374696f6e28297b6f2e726573746f726528297d3b6e2e696d6167653d66756e6374696f6e28652c742c612c722c692c6c2c752c732c63297b6c657420683d652e4d414749433d3d6e2e4d414749433f652e63616e7661733a653b66756e6374696f6e206428297b696628652e4d41474943213d6e2e4d414749437c7c216e2e5f74696e742972657475726e3b6c657420744d08023d652e63616e7661732e676574436f6e746578742822326422293b742e7361766528292c742e72657365745472616e73666f726d28292c742e636c6561725265637428302c302c742e63616e7661732e77696474682c742e63616e7661732e686569676874292c742e64726177496d61676528662e63616e7661732c302c30292c742e726573746f726528297d72657475726e20652e4d414749433d3d6e2e4d4147494326266e756c6c213d6e2e5f74696e742626282166756e6374696f6e28652c74297b6e756c6c3d3d66262628663d646f63756d656e742e637265617465456c656d656e74282263616e76617322292e676574436f6e74657874282232642229293b6e756c6c3d3d65262628653d6f2e63616e7661732e77696474682c743d6f2e63616e7661732e686569676874293b662e63616e7661732e77696474683d3d652626662e63616e7661732e6865696768743d3d747c7c28662e63616e7661732e77696474683d652c662e63616e7661732e6865696768743d74297d28652e63616e7661732e77696474682c652e63616e7661732e686569676874292c662e64726177496d61676528652e63616e7661732c302c30292c652e74696e746564286e2e5f74696e7429292c723f6c3f28737c7c28733d682e7769647468292c637c7c28633d682e686569676874292c6f2e64726177496d61676528682c6c2c752c732c632c742c4d0802612c722c69292c766f696420642829293a286f2e64726177496d61676528682c742c612c722c69292c766f696420642829293a28652e4d414749433d3d6e2e4d414749437c7c652e77696474683f6f2e64726177496d61676528682c742c612c652e77696474682c652e686569676874293a6f2e64726177496d61676528682c742c612c652e766964656f57696474682c652e766964656f486569676874292c766f696420642829297d3b6e2e6c6f6164506978656c733d66756e6374696f6e28297b6c3d6f2e676574496d6167654461746128302c302c6e2e63616e7661732e77696474682c6e2e63616e7661732e686569676874292c6e2e706978656c733d6c2e646174617d3b6e2e757064617465506978656c733d66756e6374696f6e28297b6e756c6c213d6c26266f2e707574496d61676544617461286c2c302c30297d3b6e2e6c6f6164496d6167653d66756e6374696f6e28652c74297b752b2b3b6c6574206f3d6e2e6372656174654772617068696373283130302c313030292c613d6f2e63616e7661732e676574436f6e746578742822326422292c723d6e657720496d6167653b72657475726e20722e7372633d652c722e63726f73734f726967696e3d22416e6f6e796d6f7573222c722e6f6e6c6f61643d66756e6374696f6e28297b612e63616e7661732e77696474683d722e77696474682c612e63616e7661732e68654d0802696768743d722e6865696768742c6f2e77696474683d722e77696474682c6f2e6865696768743d722e6865696768742c612e64726177496d61676528722c302c30292c752d2d2c74262674286f297d2c6f7d3b6c657420793d7b7d3b795b6e2e5448524553484f4c445d3d66756e6374696f6e28652c74297b6e756c6c3d3d743f743d3132372e353a742a3d3235353b666f72286c6574206e3d303b6e3c652e6c656e6774683b6e2b3d34297b636f6e7374206f3d2e323132362a655b6e5d2b2e373135322a655b6e2b315d2b2e303732322a655b6e2b325d3b655b6e5d3d655b6e2b315d3d655b6e2b325d3d6f3e3d743f3235353a307d7d3b795b6e2e475241595d3d66756e6374696f6e2865297b666f72286c657420743d303b743c652e6c656e6774683b742b3d34297b636f6e7374206e3d2e323132362a655b745d2b2e373135322a655b742b315d2b2e303732322a655b742b325d3b655b745d3d655b742b315d3d655b742b325d3d6e7d7d3b795b6e2e4f50415155455d3d66756e6374696f6e2865297b666f72286c657420743d303b743c652e6c656e6774683b742b3d3429655b742b335d3d3235357d3b795b6e2e494e564552545d3d66756e6374696f6e2865297b666f72286c657420743d303b743c652e6c656e6774683b742b3d3429655b745d3d3235352d655b745d2c655b742b315d3d3235352d655b742b315d2c655b744d08022b325d3d3235352d655b742b325d7d3b795b6e2e504f53544552495a455d3d66756e6374696f6e28652c74297b6c6574206e3d742d313b666f72286c6574206f3d303b6f3c652e6c656e6774683b6f2b3d3429655b6f5d3d3235352a28655b6f5d2a743e3e38292f6e2c655b6f2b315d3d3235352a28655b6f2b315d2a743e3e38292f6e2c655b6f2b325d3d3235352a28655b6f2b325d2a743e3e38292f6e7d3b795b6e2e44494c4154455d3d66756e6374696f6e2865297b5228292c642e7365742865293b6c65745b742c6e5d3d5b6f2e63616e7661732e77696474682c6f2e63616e7661732e6865696768745d3b666f72286c6574206f3d303b6f3c6e3b6f2b2b29666f72286c657420613d303b613c743b612b2b297b6c657420723d342a4d6174682e6d617828612d312c30292c693d342a4d6174682e6d696e28612b312c742d31292c6c3d342a4d6174682e6d6178286f2d312c30292a742c753d342a4d6174682e6d696e286f2b312c6e2d31292a742c733d342a6f2a742c633d342a613b666f72286c657420743d303b743c343b742b2b297b6c6574206e3d742b6c2c6f3d742b752c613d742b733b655b732b632b745d3d4d6174682e6d617828645b6e2b635d2c645b612b725d2c645b612b635d2c645b612b695d2c645b6f2b635d297d7d7d3b795b6e2e45524f44455d3d66756e6374696f6e2865297b5228292c642e736574284d080265293b6c65745b742c6e5d3d5b6f2e63616e7661732e77696474682c6f2e63616e7661732e6865696768745d3b666f72286c6574206f3d303b6f3c6e3b6f2b2b29666f72286c657420613d303b613c743b612b2b297b6c657420723d342a4d6174682e6d617828612d312c30292c693d342a4d6174682e6d696e28612b312c742d31292c6c3d342a4d6174682e6d6178286f2d312c30292a742c753d342a4d6174682e6d696e286f2b312c6e2d31292a742c733d342a6f2a742c633d342a613b666f72286c657420743d303b743c343b742b2b297b6c6574206e3d742b6c2c6f3d742b752c613d742b733b655b732b632b745d3d4d6174682e6d696e28645b6e2b635d2c645b612b725d2c645b612b635d2c645b612b695d2c645b6f2b635d297d7d7d3b795b6e2e424c55525d3d66756e6374696f6e28652c74297b743d747c7c312c743d4d6174682e666c6f6f7228742a6e2e5f706978656c44656e73697479292c5228292c642e7365742865293b6c657420613d322a742b313b6c657420723d66756e6374696f6e2865297b6c6574206e3d6e657720466c6f6174333241727261792865292c6f3d2e332a742b2e382c613d6f2a6f2a323b666f72286c657420743d303b743c653b742b2b297b6c657420723d742d652f322c693d4d6174682e657870282d722a722f61292f28322e353036363238323734362a6f293b6e5b745d3d697d72654d08027475726e206e7d2861292c5b692c6c5d3d5b6f2e63616e7661732e77696474682c6f2e63616e7661732e6865696768745d3b666f72286c6574206e3d303b6e3c6c3b6e2b2b29666f72286c6574206f3d303b6f3c693b6f2b2b297b6c6574206c3d302c753d302c733d302c633d303b666f72286c657420653d303b653c613b652b2b297b6c657420613d4d6174682e6d696e284d6174682e6d6178286f2d742b652c30292c692d31292c683d342a286e2a692b61293b6c2b3d645b685d2a725b655d2c752b3d645b682b315d2a725b655d2c732b3d645b682b325d2a725b655d2c632b3d645b682b335d2a725b655d7d6c657420683d342a286e2a692b6f293b655b685d3d6c2c655b682b315d3d752c655b682b325d3d732c655b682b335d3d637d642e7365742865293b666f72286c6574206e3d303b6e3c6c3b6e2b2b29666f72286c6574206f3d303b6f3c693b6f2b2b297b6c657420753d302c733d302c633d302c683d303b666f72286c657420653d303b653c613b652b2b297b6c657420613d4d6174682e6d696e284d6174682e6d6178286e2d742b652c30292c6c2d31292c663d342a28612a692b6f293b752b3d645b665d2a725b655d2c732b3d645b662b315d2a725b655d2c632b3d645b662b325d2a725b655d2c682b3d645b662b335d2a725b655d7d6c657420663d342a286e2a692b6f293b655b665d3d752c655b662b315d3d734d08022c655b662b325d3d632c655b662b335d3d687d7d3b66756e6374696f6e207728652c74297b6e756c6c3d3d68262628683d646f63756d656e742e637265617465456c656d656e74282263616e76617322292e676574436f6e74657874282232642229292c6e756c6c3d3d65262628653d6f2e63616e7661732e77696474682c743d6f2e63616e7661732e686569676874292c682e63616e7661732e77696474683d3d652626682e63616e7661732e6865696768743d3d747c7c28682e63616e7661732e77696474683d652c682e63616e7661732e6865696768743d74297d66756e6374696f6e205228297b6c657420653d6f2e63616e7661732e77696474682a6f2e63616e7661732e6865696768742a343b6e756c6c213d642626653d3d642e6c656e6774687c7c28643d6e65772055696e7438436c616d7065644172726179286529297d66756e6374696f6e20492865297b682e636c6561725265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e66696c7465723d652c682e64726177496d616765286f2e63616e7661732c302c30292c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e636c6561725265637428302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e64726177496d61676528682e63616e7661734d08022c302c30292c6f2e726573746f726528297d6e2e66696c7465723d66756e6374696f6e28652c74297b6c657420613d6e2e48415244574152455f46494c5445525326266e756c6c213d6f2e66696c7465723b69662861296966287728292c653d3d6e2e5448524553484f4c44297b6e756c6c3d3d74262628743d2e35292c743d4d6174682e6d617828742c31652d35293b6c657420653d4d6174682e666c6f6f72282e352f742a313030293b492860736174757261746528302529206272696768746e65737328247b657d252920636f6e74726173742831303030303030252960297d656c736520696628653d3d6e2e475241592949282273617475726174652830252922293b656c736520696628653d3d6e2e4f504151554529682e66696c6c5374796c653d22626c61636b222c682e66696c6c5265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e64726177496d616765286f2e63616e7661732c302c30292c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e64726177496d61676528682e63616e7661732c302c30292c6f2e726573746f726528293b656c736520696628653d3d6e2e494e5645525429492822696e7665727428313030252922293b656c736520696628653d3d6e2e424c555229492860626c757228247b4d6174682e6365696c28742a4d08026e2e5f706978656c44656e736974792f31297c7c317d70782960293b656c73657b6c6574206e3d6f2e676574496d6167654461746128302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874293b795b655d286e2e646174612c74292c6f2e707574496d61676544617461286e2c302c30297d656c73657b6c6574206e3d6f2e676574496d6167654461746128302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874293b795b655d286e2e646174612c74292c6f2e707574496d61676544617461286e2c302c30297d7d3b6e2e726573697a653d66756e6374696f6e28652c74297b7728292c682e64726177496d616765286f2e63616e7661732c302c30292c6e2e77696474683d652c6e2e6865696768743d742c6f2e63616e7661732e77696474683d652a6e2e5f706978656c44656e736974792c6f2e63616e7661732e6865696768743d742a6e2e5f706978656c44656e736974792c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e636c6561725265637428302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e64726177496d61676528682e63616e7661732c302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e726573746f726528297d3b6e2e6765744d08023d66756e6374696f6e28652c742c612c72297b6966286e756c6c213d6526266e756c6c3d3d61297b6c657420613d6f2e676574496d6167654461746128652c742c312c31292e646174613b72657475726e206e6577206e2e436f6c6f7228615b305d2c615b315d2c615b325d2c615b335d2f323535297d653d657c7c302c743d747c7c302c613d617c7c6e2e77696474682c723d727c7c6e2e6865696768743b6c657420693d6e2e637265617465477261706869637328612c72293b692e706978656c44656e73697479286e2e5f706978656c44656e73697479293b6c6574206c3d6f2e676574496d6167654461746128652a6e2e5f706978656c44656e736974792c742a6e2e5f706978656c44656e736974792c612a6e2e5f706978656c44656e736974792c722a6e2e5f706978656c44656e73697479293b72657475726e20692e63616e7661732e676574436f6e746578742822326422292e707574496d61676544617461286c2c302c30292c697d3b6e2e7365743d66756e6374696f6e28652c742c61297b696628612e4d414749433d3d6e2e4d41474943297b6c6574206f3d6e2e5f74696e743b72657475726e206e2e5f74696e743d6e756c6c2c6e2e696d61676528612c652c74292c766f6964286e2e5f74696e743d6f297d6c657420723d342a28742a6e2e5f706978656c44656e736974792a6f2e63616e7661732e77696474682b4d0802652a6e2e5f706978656c44656e73697479293b6e2e706978656c735b725d3d612e5f722c6e2e706978656c735b722b315d3d612e5f672c6e2e706978656c735b722b325d3d612e5f622c6e2e706978656c735b722b335d3d3235352a612e5f617d3b6e2e74696e7465643d66756e6374696f6e28297b6c657420653d6e2e636f6c6f72282e2e2e41727261792e66726f6d28617267756d656e747329292c743d652e5f613b652e5f613d312c7728292c682e636c6561725265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e66696c6c5374796c653d652c682e66696c6c5265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e676c6f62616c436f6d706f736974654f7065726174696f6e3d226d756c7469706c79222c682e64726177496d616765286f2e63616e7661732c302c30292c682e676c6f62616c436f6d706f736974654f7065726174696f6e3d22736f757263652d6f766572222c6f2e7361766528292c6f2e72657365745472616e73666f726d28293b6c657420613d6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3b6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3d22736f757263652d696e222c6f2e64726177496d61676528682e63616e7661732c302c30292c6f2e676c4d08026f62616c436f6d706f736974654f7065726174696f6e3d612c6f2e726573746f726528292c682e676c6f62616c416c7068613d742c682e636c6561725265637428302c302c682e63616e7661732e77696474682c682e63616e7661732e686569676874292c682e64726177496d616765286f2e63616e7661732c302c30292c682e676c6f62616c416c7068613d312c6f2e7361766528292c6f2e72657365745472616e73666f726d28292c6f2e636c6561725265637428302c302c6f2e63616e7661732e77696474682c6f2e63616e7661732e686569676874292c6f2e64726177496d61676528682e63616e7661732c302c30292c6f2e726573746f726528297d3b6e2e74696e743d66756e6374696f6e28297b6e2e5f74696e743d6e2e636f6c6f72282e2e2e41727261792e66726f6d28617267756d656e747329297d3b6e2e6e6f54696e743d66756e6374696f6e28297b6e2e5f74696e743d6e756c6c7d3b6e2e6d61736b3d66756e6374696f6e2865297b6f2e7361766528292c6f2e72657365745472616e73666f726d28293b6c657420743d6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3b6f2e676c6f62616c436f6d706f736974654f7065726174696f6e3d2264657374696e6174696f6e2d696e222c6f2e64726177496d61676528652e63616e7661732c302c30292c6f2e676c6f62616c436f6d706f736974654d08024f7065726174696f6e3d742c6f2e726573746f726528297d3b6e2e636c65617254656d706f72617279427566666572733d66756e6374696f6e28297b683d6e756c6c2c663d6e756c6c2c643d6e756c6c7d3b6e2e736176653d66756e6374696f6e28652c74297b653d657c7c22756e7469746c6564222c743d747c7c22706e67223b766172206e3d646f63756d656e742e637265617465456c656d656e7428226122293b6e2e696e6e657248544d4c3d225b446f776e6c6f61645d222c6e2e6164644576656e744c697374656e65722822636c69636b222c66756e6374696f6e28297b746869732e687265663d6f2e63616e7661732e746f4461746155524c28292c746869732e646f776e6c6f61643d652b222e222b747d2c2131292c646f63756d656e742e626f64792e617070656e644368696c64286e292c6e2e636c69636b28292c646f63756d656e742e626f64792e72656d6f76654368696c64286e297d3b6e2e7361766543616e7661733d66756e6374696f6e28652c742c6f297b696628652e4d414749433d3d6e2e4d41474943297b6f2626652e7361766528742c6f293b6c6574206e3d742e73706c697428222e22293b72657475726e20652e73617665286e2e736c69636528302c2d31292e6a6f696e28222e22292c6e5b6e2e6c656e6774682d315d297d696628742972657475726e206e2e7361766528652c74293b6c657420614d08023d652e73706c697428222e22293b72657475726e206e2e7361766528612e736c69636528302c2d31292e6a6f696e28222e22292c615b612e6c656e6774682d315d297d3b6e2e6c6f6164466f6e743d66756e6374696f6e28652c74297b6c6574206e3d652e73706c697428222f22292c6f3d6e5b6e2e6c656e6774682d315d2e73706c697428222e22295b305d2e7265706c616365282220222c2222292c613d6040666f6e742d66616365207b5c6e2020202020202020666f6e742d66616d696c793a2027247b6f7d273b5c6e20202020202020207372633a2075726c2827247b657d27293b5c6e2020202020207d603b636f6e737420723d646f63756d656e742e637265617465456c656d656e7428227374796c6522293b72657475726e20722e74657874436f6e74656e743d612c646f63756d656e742e686561642e617070656e642872292c6f7d3b6e2e74657874466f6e743d66756e6374696f6e2865297b6e2e5f74657874466f6e743d657d3b6e2e7465787453697a653d66756e6374696f6e2865297b6e2e5f7465787453697a653d652c6e2e5f746578744c656164696e673d657d3b6e2e746578744c656164696e673d66756e6374696f6e2865297b6e2e5f746578744c656164696e673d657d3b6e2e746578745374796c653d66756e6374696f6e2865297b6e2e5f746578745374796c653d657d3b6e2e74657874416c69676e3d4d080266756e6374696f6e28652c74297b6f2e74657874416c69676e3d652c742626286f2e74657874426173656c696e653d743d3d6e2e43454e5445523f226d6964646c65223a74297d3b6e2e746578743d66756e6374696f6e28652c742c612c72297b69662821652972657475726e3b696628653d652e746f537472696e6728292c6e2e5f6e6f46696c6c26266e2e5f6e6f5374726f6b652972657475726e3b6f2e666f6e743d60247b6e2e5f746578745374796c657d20247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d603b6c657420693d652e73706c697428225c6e22293b666f72286c657420653d303b653c692e6c656e6774683b652b2b296e2e5f6e6f46696c6c7c7c6f2e66696c6c5465787428695b655d2c742c612c72292c6e2e5f6e6f5374726f6b657c7c6f2e7374726f6b655465787428695b655d2c742c612c72292c612b3d6e2e5f746578744c656164696e677d3b6e2e7465787457696474683d66756e6374696f6e2865297b72657475726e206f2e666f6e743d60247b6e2e5f746578745374796c657d20247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d602c6f2e6d656173757265546578742865292e77696474687d3b6e2e74657874417363656e743d66756e6374696f6e2865297b72657475726e206f2e666f6e743d60247b6e2e5f746578745374796c657d4d080220247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d602c6f2e6d656173757265546578742865292e61637475616c426f756e64696e67426f78417363656e747d3b6e2e7465787444657363656e743d66756e6374696f6e2865297b72657475726e206f2e666f6e743d60247b6e2e5f746578745374796c657d20247b6e2e5f7465787453697a657d707820247b6e2e5f74657874466f6e747d602c6f2e6d656173757265546578742865292e61637475616c426f756e64696e67426f7844657363656e747d3b76617220453d343b76617220533d2e353b76617220433d66756e6374696f6e2865297b72657475726e2e352a28312d4d6174682e636f7328652a4d6174682e504929297d3b76617220413b6e2e6e6f6973653d66756e6374696f6e28652c742c6e297b696628743d747c7c302c6e3d6e7c7c302c6e756c6c3d3d41297b413d6e65772041727261792834303936293b666f7228766172206f3d303b6f3c343039363b6f2b2b29415b6f5d3d4d6174682e72616e646f6d28297d653c30262628653d2d65292c743c30262628743d2d74292c6e3c302626286e3d2d6e293b666f722876617220612c722c692c6c2c752c733d4d6174682e666c6f6f722865292c633d4d6174682e666c6f6f722874292c683d4d6174682e666c6f6f72286e292c663d652d732c643d742d632c703d6e2d682c6d3d302c673d4d08022e352c763d303b763c453b762b2b297b766172204d3d732b28633c3c34292b28683c3c38293b613d432866292c723d432864292c693d415b34303935264d5d2c692b3d612a28415b4d2b3126343039355d2d69292c6c3d415b4d2b313626343039355d2c6c2b3d612a28415b4d2b31362b3126343039355d2d6c292c692b3d722a286c2d69292c6c3d415b3430393526284d2b3d323536295d2c6c2b3d612a28415b4d2b3126343039355d2d6c292c753d415b4d2b313626343039355d2c752b3d612a28415b4d2b31362b3126343039355d2d75292c6c2b3d722a28752d6c292c692b3d432870292a286c2d69292c6d2b3d692a672c672a3d532c733c3c3d312c633c3c3d312c683c3c3d312c28662a3d32293e3d31262628732b2b2c662d2d292c28642a3d32293e3d31262628632b2b2c642d2d292c28702a3d32293e3d31262628682b2b2c702d2d297d72657475726e206d7d3b6e2e6e6f69736544657461696c3d66756e6374696f6e28652c74297b653e30262628453d65292c743e30262628533d74297d3b636f6e737420543d66756e6374696f6e28297b6c657420652c742c6e3d343239343936373239353b72657475726e7b73657453656564286f297b653d743d286e756c6c3d3d6f3f4d6174682e72616e646f6d28292a6e3a6f293e3e3e307d2c676574536565643a28293d3e742c72616e643a28293d3e28655e3d653c3c31374d08022c655e3d653e3e31332c2828655e3d653c3c35293e3e3e30292f6e297d7d3b6c657420443d5428293b442e7365745365656428293b6e2e6e6f697365536565643d66756e6374696f6e2865297b6c657420743d6e756c6c3d3d653f343239343936373239352a4d6174682e72616e646f6d28293a653b417c7c28413d6e657720466c6f617433324172726179283430393629293b666f7228766172206e3d303b6e3c343039363b6e2b2b29745e3d743c3c31372c745e3d743e3e31332c745e3d743c3c352c415b6e5d3d28743e3e3e30292f343239343936373239357d3b6e2e72616e646f6d536565643d66756e6374696f6e2865297b442e736574536565642865297d3b6e2e72616e646f6d3d66756e6374696f6e28652c74297b72657475726e226e756d626572223d3d747970656f6620653f6e756c6c213d743f442e72616e6428292a28742d65292b653a442e72616e6428292a653a655b7e7e28652e6c656e6774682a442e72616e642829295d7d3b6e2e72616e646f6d47656e657261746f723d66756e6374696f6e2865297b653d3d6e2e4c43473f443d66756e6374696f6e28297b636f6e737420653d343239343936373239363b6c657420742c6e3b72657475726e7b73657453656564286f297b6e3d743d286e756c6c3d3d6f3f4d6174682e72616e646f6d28292a653a6f293e3e3e307d2c676574536565643a28293d3e742c724d0802616e643a28293d3e286e3d28313636343532352a6e2b31303133393034323233292565292f657d7d28293a653d3d6e2e53485233262628443d542829292c442e7365745365656428297d3b76617220503d6e65772066756e6374696f6e28297b76617220652c742c6e2c6f3d6e657720417272617928313238292c613d6e657720417272617928323536292c723d6e657720417272617928313238292c693d6e657720417272617928313238292c6c3d6e657720417272617928323536292c753d6e657720417272617928323536292c733d66756e6374696f6e28297b72657475726e20343239343936373239362a442e72616e6428292d323134373438333634387d2c633d66756e6374696f6e28297b72657475726e2e352b322e333238333036652d31302a287328293c3c30297d2c683d66756e6374696f6e28297b666f722876617220742c612c6c2c752c683d332e34343236323b3b297b696628743d6e2a725b655d2c303d3d65297b646f7b6c3d6328292c753d6328292c743d2e323930343736342a2d4d6174682e6c6f67286c292c613d2d4d6174682e6c6f672875297d7768696c6528612b613c742a74293b72657475726e206e3e303f682b743a2d682d747d696628695b655d2b6328292a28695b652d315d2d695b655d293c4d6174682e657870282d2e352a742a74292972657475726e20743b6966286e3d7328292c653d31324d080237266e2c4d6174682e616273286e293c6f5b655d2972657475726e206e2a725b655d7d7d2c663d66756e6374696f6e28297b666f7228766172206e3b3b297b696628303d3d652972657475726e20372e36393731312d4d6174682e6c6f6728632829293b6966286e3d742a6c5b655d2c755b655d2b6328292a28755b652d315d2d755b655d293c4d6174682e657870282d6e292972657475726e206e3b69662828743d732829293c615b653d32353526745d2972657475726e20742a6c5b655d7d7d3b746869732e534852333d732c746869732e554e493d632c746869732e524e4f523d66756e6374696f6e28297b72657475726e206e3d7328292c653d313237266e2c4d6174682e616273286e293c6f5b655d3f6e2a725b655d3a6828297d2c746869732e524558503d66756e6374696f6e28297b72657475726e28743d7328293e3e3e30293c6f5b653d32353526745d3f742a6c5b655d3a6628297d2c746869732e7a69677365743d66756e6374696f6e28297b76617220652c742c6e3d323134373438333634382c733d343239343936373239362c633d332e3434323631393835353839392c683d632c663d2e30303939313235363330333532363231372c643d372e3639373131373437303133313438372c703d642c6d3d2e3030333934393635393832323538313537323b666f7228653d662f4d6174682e657870282d2e352a632a634d0802292c6f5b305d3d4d6174682e666c6f6f7228632f652a6e292c6f5b315d3d302c725b305d3d652f6e2c725b3132375d3d632f6e2c695b305d3d312c695b3132375d3d4d6174682e657870282d2e352a632a63292c743d3132363b743e3d313b742d2d29633d4d6174682e73717274282d322a4d6174682e6c6f6728662f632b4d6174682e657870282d2e352a632a632929292c6f5b742b315d3d4d6174682e666c6f6f7228632f682a6e292c683d632c695b745d3d4d6174682e657870282d2e352a632a63292c725b745d3d632f6e3b666f7228653d6d2f4d6174682e657870282d64292c615b305d3d4d6174682e666c6f6f7228642f652a73292c615b315d3d302c6c5b305d3d652f732c6c5b3235355d3d642f732c755b305d3d312c755b3235355d3d4d6174682e657870282d64292c743d3235343b743e3d313b742d2d29643d2d4d6174682e6c6f67286d2f642b4d6174682e657870282d6429292c615b742b315d3d4d6174682e666c6f6f7228642f702a73292c703d642c755b745d3d4d6174682e657870282d64292c6c5b745d3d642f737d7d3b502e686173496e69743d21313b6e2e72616e646f6d476175737369616e3d66756e6374696f6e28652c74297b72657475726e20502e686173496e69747c7c28502e7a696773657428292c502e686173496e69743d2130292c502e524e4f5228292a742b657d3b6e2e72616e646f6d454d080278706f6e656e7469616c3d66756e6374696f6e28297b72657475726e20502e686173496e69747c7c28502e7a696773657428292c502e686173496e69743d2130292c502e5245585028297d3b6e2e7072696e743d636f6e736f6c652e6c6f673b6e2e637572736f723d66756e6374696f6e28652c742c6f297b6c657420613d22223b652e696e636c7564657328222e2229262628653d6075726c2822247b657d2229602c613d222c206175746f22292c6e756c6c213d74262628652b3d2220222b742b2220222b6f292c6e2e63616e7661732e7374796c652e637572736f723d652b617d3b6e2e6e6f437572736f723d66756e6374696f6e28297b6e2e63616e7661732e7374796c652e637572736f723d226e6f6e65227d3b6e2e637265617465436170747572653d66756e6374696f6e2865297b76617220743d646f63756d656e742e637265617465456c656d656e742822766964656f22293b72657475726e20742e706c617973696e6c696e653d22706c617973696e6c696e65222c742e6175746f706c61793d226175746f706c6179222c6e6176696761746f722e6d65646961446576696365732e676574557365724d656469612865292e7468656e2866756e6374696f6e2865297b742e7372634f626a6563743d657d292c742e7374796c652e706f736974696f6e3d226162736f6c757465222c742e7374796c652e6f7061636974793d4d080231652d352c742e7374796c652e7a496e6465783d2d3165332c646f63756d656e742e626f64792e617070656e644368696c642874292c747d3b6c657420623d5b227365747570222c2264726177222c227072656c6f6164222c226d6f7573654d6f766564222c226d6f75736550726573736564222c226d6f75736552656c6561736564222c226d6f75736544726167676564222c226d6f757365436c69636b6564222c226b657950726573736564222c226b657952656c6561736564222c226b65795479706564222c22746f75636853746172746564222c22746f756368456e646564225d3b666f72286c65742065206f662062297b6c657420743d225f222b652b22466e223b6e5b745d3d66756e6374696f6e28297b7d2c6e5b745d2e6973506c616365486f6c6465723d21302c6e5b655d3f6e5b745d3d6e5b655d3a4f626a6563742e646566696e6550726f7065727479286e2c652c7b7365743a66756e6374696f6e2865297b6e5b745d3d657d7d297d66756e6374696f6e207a28297b6e2e5f6e6f4c6f6f707c7c28613d6e756c6c3d3d6e2e5f6672616d65526174653f72657175657374416e696d6174696f6e4672616d65287a293a73657454696d656f7574287a2c3165332f6e2e5f6672616d655261746529292c7828292c723d21302c6f2e7361766528292c6e2e5f64726177466e28292c6f2e726573746f726528292c6e2e66724d0802616d65436f756e742b2b7d6e2e6e6f4c6f6f703d66756e6374696f6e28297b6e2e5f6e6f4c6f6f703d21302c613d6e756c6c7d3b6e2e6c6f6f703d66756e6374696f6e28297b6e2e5f6e6f4c6f6f703d21312c6e756c6c3d3d6126267a28297d3b6e2e7265647261773d66756e6374696f6e28297b7a28297d3b6e2e6672616d65526174653d66756e6374696f6e2865297b6e2e5f6672616d65526174653d657d3b73657454696d656f75742866756e6374696f6e28297b6e2e5f7072656c6f6164466e28292c633d77696e646f772e706572666f726d616e63652e6e6f7728292c66756e6374696f6e206528297b696628753e302972657475726e2073657454696d656f757428652c3130293b6e2e5f7365747570466e28293b7a28297d28297d2c31293b6e2e63616e7661732e6f6e6d6f7573656d6f76653d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643f6e2e5f6d6f75736544726167676564466e2865293a6e2e5f6d6f7573654d6f766564466e2865297d3b6e2e63616e7661732e6f6e6d6f757365646f776e3d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f75734d080265593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643d21302c6e2e6d6f757365427574746f6e3d5b6e2e4c4546542c6e2e43454e5445522c6e2e52494748545d5b652e627574746f6e5d2c6e2e5f6d6f75736550726573736564466e2865297d3b6e2e63616e7661732e6f6e6d6f75736575703d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643d21312c6e2e5f6d6f75736552656c6561736564466e2865297d3b6e2e63616e7661732e6f6e636c69636b3d66756e6374696f6e2865297b6e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d652e6f6666736574582c6e2e6d6f757365593d652e6f6666736574592c6e2e6d6f7573654973507265737365643d21302c6e2e5f6d6f757365436c69636b6564466e2865292c6e2e6d6f7573654973507265737365643d21317d3b77696e646f772e6164644576656e744c697374656e657228226b6579646f776e222c66756e6374696f6e2865297b6e2e6b65794973507265737365643d4d080221302c6e2e6b65793d652e6b65792c6e2e6b6579436f64653d652e6b6579436f64652c735b6e2e6b6579436f64655d3d21302c6e2e5f6b657950726573736564466e2865292c313d3d652e6b65792e6c656e67746826266e2e5f6b65795479706564466e2865297d293b77696e646f772e6164644576656e744c697374656e657228226b65797570222c66756e6374696f6e2865297b6e2e6b65794973507265737365643d21312c6e2e6b65793d652e6b65792c6e2e6b6579436f64653d652e6b6579436f64652c735b6e2e6b6579436f64655d3d21312c6e2e5f6b657952656c6561736564466e2865297d293b6e2e6b65794973446f776e3d66756e6374696f6e2865297b72657475726e2121735b655d7d3b66756e6374696f6e204f2865297b636f6e737420743d6e2e63616e7661732e676574426f756e64696e67436c69656e745265637428292c6f3d6e2e63616e7661732e7363726f6c6c57696474682f6e2e77696474687c7c312c613d6e2e63616e7661732e7363726f6c6c4865696768742f6e2e6865696768747c7c313b72657475726e7b783a28652e636c69656e74582d742e6c656674292f6f2c793a28652e636c69656e74592d742e746f70292f612c69643a652e6964656e7469666965727d7d66756e6374696f6e206b28297b72657475726e206e2e5f746f756368537461727465642e6973506c616365486f6c646572264d0802266e2e5f746f7563684d6f7665642e6973506c616365486f6c64657226266e2e5f746f756368456e6465642e6973506c616365486f6c6465727d6e2e63616e7661732e6f6e746f75636873746172743d66756e6374696f6e2865297b6e2e746f75636865733d652e746f75636865732e6d6170284f292c6b28292626286e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d6e2e746f75636865735b305d2e782c6e2e6d6f757365593d6e2e746f75636865735b305d2e792c6e2e6d6f7573654973507265737365643d21302c6e2e6d6f757365427574746f6e3d6e2e4c4546542c6e2e5f6d6f75736550726573736564466e2865297c7c652e70726576656e7444656661756c742829292c6e2e5f746f75636853746172746564466e2865297c7c652e70726576656e7444656661756c7428297d3b6e2e63616e7661732e6f6e746f7563686d6f76653d66756e6374696f6e2865297b6e2e746f75636865733d652e746f75636865732e6d6170284f292c6b28292626286e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d6e2e746f75636865735b305d2e782c6e2e6d6f757365593d6e2e746f75636865735b305d2e792c6e2e6d6f7573654973507265737365643d21302c6e2e6d6f757365427574746f4d08026e3d6e2e4c4546542c6e2e5f6d6f75736544726167676564466e2865297c7c652e70726576656e7444656661756c742829292c6e2e5f746f7563684d6f766564466e2865297c7c652e70726576656e7444656661756c7428297d3b6e2e63616e7661732e6f6e746f756368656e643d6e2e63616e7661732e6f6e746f75636863616e63656c3d66756e6374696f6e2865297b6e2e746f75636865733d652e746f75636865732e6d6170284f292c6b28292626286e2e706d6f757365583d6e2e6d6f757365582c6e2e706d6f757365593d6e2e6d6f757365592c6e2e6d6f757365583d6e2e746f75636865735b305d2e782c6e2e6d6f757365593d6e2e746f75636865735b305d2e792c6e2e6d6f7573654973507265737365643d21312c6e2e5f6d6f75736552656c6561736564466e2865297c7c652e70726576656e7444656661756c742829292c6e2e5f746f756368456e646564466e2865297c7c652e70726576656e7444656661756c7428297d3b6e2e68617353656e736f725065726d697373696f6e3d2177696e646f772e4465766963654f7269656e746174696f6e4576656e7426262177696e646f772e4465766963654d6f74696f6e4576656e747c7c21284465766963654f7269656e746174696f6e4576656e742e726571756573745065726d697373696f6e7c7c4465766963654d6f74696f6e4576656e742e7265717565737450654d0802726d697373696f6e293b6e2e7265717565737453656e736f725065726d697373696f6e733d66756e6374696f6e28297b4465766963654f7269656e746174696f6e4576656e742e726571756573745065726d697373696f6e26264465766963654f7269656e746174696f6e4576656e742e726571756573745065726d697373696f6e28292e7468656e28653d3e7b226772616e746564223d3d6526264465766963654d6f74696f6e4576656e742e726571756573745065726d697373696f6e26264465766963654d6f74696f6e4576656e742e726571756573745065726d697373696f6e28292e7468656e28653d3e7b226772616e746564223d3d652626286e2e68617353656e736f725065726d697373696f6e3d2130297d292e636174636828616c657274297d292e636174636828616c657274297d3b77696e646f772e6f6e6465766963656f7269656e746174696f6e3d66756e6374696f6e2865297b6e2e70526f746174696f6e583d6e2e726f746174696f6e582c6e2e70526f746174696f6e593d6e2e726f746174696f6e592c6e2e70526f746174696f6e5a3d6e2e726f746174696f6e5a2c6e2e7052656c526f746174696f6e583d6e2e72656c526f746174696f6e582c6e2e7052656c526f746174696f6e593d6e2e72656c526f746174696f6e592c6e2e7052656c526f746174696f6e5a3d6e2e72656c526f746174696f6e5a2c6e4d08022e726f746174696f6e583d652e626574612a284d6174682e50492f313830292c6e2e726f746174696f6e593d652e67616d6d612a284d6174682e50492f313830292c6e2e726f746174696f6e5a3d652e616c7068612a284d6174682e50492f313830292c6e2e72656c526f746174696f6e583d5b2d6e2e726f746174696f6e592c2d6e2e726f746174696f6e582c6e2e726f746174696f6e595d5b312b7e7e2877696e646f772e6f7269656e746174696f6e2f3930295d2c6e2e72656c526f746174696f6e593d5b2d6e2e726f746174696f6e582c6e2e726f746174696f6e592c6e2e726f746174696f6e585d5b312b7e7e2877696e646f772e6f7269656e746174696f6e2f3930295d2c6e2e72656c526f746174696f6e5a3d6e2e726f746174696f6e5a7d3b77696e646f772e6f6e6465766963656d6f74696f6e3d66756e6374696f6e2865297b6966286e2e70416363656c65726174696f6e583d6e2e616363656c65726174696f6e582c6e2e70416363656c65726174696f6e593d6e2e616363656c65726174696f6e592c6e2e70416363656c65726174696f6e5a3d6e2e616363656c65726174696f6e5a2c21652e616363656c65726174696f6e297b6c657420743d2828652c74293d3e5b28655b305d2a745b305d2b655b315d2a745b315d2b655b325d2a745b325d2b655b335d292f28655b31325d2a745b305d2b655b31335d2a745b4d0802315d2b655b31345d2a745b325d2b655b31355d292c28655b345d2a745b305d2b655b355d2a745b315d2b655b365d2a745b325d2b655b375d292f28655b31325d2a745b305d2b655b31335d2a745b315d2b655b31345d2a745b325d2b655b31355d292c28655b385d2a745b305d2b655b395d2a745b315d2b655b31305d2a745b325d2b655b31315d292f28655b31325d2a745b305d2b655b31335d2a745b315d2b655b31345d2a745b325d2b655b31355d295d29282828652c74293d3e5b655b305d2a745b305d2b655b315d2a745b345d2b655b325d2a745b385d2b655b335d2a745b31325d2c655b305d2a745b315d2b655b315d2a745b355d2b655b325d2a745b395d2b655b335d2a745b31335d2c655b305d2a745b325d2b655b315d2a745b365d2b655b325d2a745b31305d2b655b335d2a745b31345d2c655b305d2a745b335d2b655b315d2a745b375d2b655b325d2a745b31315d2b655b335d2a745b31355d2c655b345d2a745b305d2b655b355d2a745b345d2b655b365d2a745b385d2b655b375d2a745b31325d2c655b345d2a745b315d2b655b355d2a745b355d2b655b365d2a745b395d2b655b375d2a745b31335d2c655b345d2a745b325d2b655b355d2a745b365d2b655b365d2a745b31305d2b655b375d2a745b31345d2c655b345d2a745b335d2b655b355d2a745b375d2b655b365d2a745b31315d2b655b375d2a745b31354d08025d2c655b385d2a745b305d2b655b395d2a745b345d2b655b31305d2a745b385d2b655b31315d2a745b31325d2c655b385d2a745b315d2b655b395d2a745b355d2b655b31305d2a745b395d2b655b31315d2a745b31335d2c655b385d2a745b325d2b655b395d2a745b365d2b655b31305d2a745b31305d2b655b31315d2a745b31345d2c655b385d2a745b335d2b655b395d2a745b375d2b655b31305d2a745b31315d2b655b31315d2a745b31355d2c655b31325d2a745b305d2b655b31335d2a745b345d2b655b31345d2a745b385d2b655b31355d2a745b31325d2c655b31325d2a745b315d2b655b31335d2a745b355d2b655b31345d2a745b395d2b655b31355d2a745b31335d2c655b31325d2a745b325d2b655b31335d2a745b365d2b655b31345d2a745b31305d2b655b31355d2a745b31345d2c655b31325d2a745b335d2b655b31335d2a745b375d2b655b31345d2a745b31315d2b655b31355d2a745b31355d5d292828653d3e5b4d6174682e636f732865292c302c4d6174682e73696e2865292c302c302c312c302c302c2d4d6174682e73696e2865292c302c4d6174682e636f732865292c302c302c302c302c315d29286e2e726f746174696f6e59292c28653d3e5b312c302c302c302c302c4d6174682e636f732865292c2d4d6174682e73696e2865292c302c302c4d6174682e73696e2865292c4d6174682e636f732865294d08022c302c302c302c302c315d29286e2e726f746174696f6e5829292c5b302c302c2d392e38303636355d293b6e2e616363656c65726174696f6e583d652e616363656c65726174696f6e496e636c7564696e67477261766974792e782b745b305d2c6e2e616363656c65726174696f6e593d652e616363656c65726174696f6e496e636c7564696e67477261766974792e792b745b315d2c6e2e616363656c65726174696f6e5a3d652e616363656c65726174696f6e496e636c7564696e67477261766974792e7a2d745b325d7d7d3b6e2e796561723d66756e6374696f6e28297b72657475726e286e65772044617465292e67657446756c6c5965617228297d3b6e2e6461793d66756e6374696f6e28297b72657475726e286e65772044617465292e67657444617928297d3b6e2e686f75723d66756e6374696f6e28297b72657475726e286e65772044617465292e676574486f75727328297d3b6e2e6d696e7574653d66756e6374696f6e28297b72657475726e286e65772044617465292e6765744d696e7574657328297d3b6e2e7365636f6e643d66756e6374696f6e28297b72657475726e286e65772044617465292e6765745365636f6e647328297d3b6e2e6d696c6c69733d66756e6374696f6e28297b72657475726e2077696e646f772e706572666f726d616e63652e6e6f7728292d637d7d2865297d0a0a636c61737320436f6c4d08026f727b73746174696320703b7374617469632053414e445f434f4c4f525f4d4f44453d333b7374617469632067657453616e64436f6c6f724279496e64657828652c743d302c693d33302c733d3530297b65253d353b6c657420613d5b5d3b76617220722c682c6e3b666f72286c657420653d303b653c353b652b2b297b6c657420743d6525353b313d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e70757368286f287429293a323d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e70757368286c287429293a333d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682864287429293a343d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e70757368286d287429293a353d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682870287429293a363d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682867287429293a373d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682863287429293a383d3d436f6c6f722e53414e445f434f4c4f525f4d4f44453f612e707573682875287429293a393d3d436f6c6f722e53414e445f434f4c4f525f4d4f44452626612e707573682876287429297d72657475726e20615b655d3b66756e6374696f6e206f2865297b72657475726e20303d3d653f28723d4d0802742b36302c683d692b352c6e3d732b35293a313d3d653f28723d742b33302c683d692b352c6e3d732b39293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742d33302c683d692b352c6e3d732b39293a343d3d65262628723d742d36302c683d692b352c6e3d732b35292c723c303f722b3d3336303a723e333630262628722d3d333630292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e206c2865297b72657475726e20723d742c303d3d653f28683d692c6e3d732b3330293a313d3d653f28683d692d33302c6e3d732b38293a323d3d653f28683d692c6e3d73293a333d3d653f28683d692d33302c6e3d732b3330293a343d3d65262628683d692c6e3d732d3230292c683c3130262628682b3d3630292c28303d3d657c7c333d3d652926266e3e3130302626286e3d732d3530292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20642865297b72657475726e20303d3d653f28723d742d3132302c683d692b31302c6e3d732d3330293a313d3d653f28723d742b3132302c683d692d31302c6e3d73293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742d3132302c683d692b31302c6e3d73293a343d3d65262628723d742b3132302c683d692b31302c6e3d732d3330292c723e3336303f722d4d08023d3336303a723c30262628722b3d333630292c683e313030262628682d3d3230292c6e3e3130302626286e2d3d3330292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e206d2865297b72657475726e20303d3d653f28723d742c683d692b31302c6e3d732d3330293a313d3d653f28723d742c683d692d33302c6e3d732b3330293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742d3138302c683d692b32302c6e3d732d3330293a343d3d65262628723d742d3138302c683d692c6e3d73292c723c30262628722b3d333630292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20702865297b72657475726e20303d3d653f28723d742d3135302c683d692d31302c6e3d732b3330293a313d3d653f28723d742d3135302c683d692d352c6e3d73293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742b3135302c683d692b31302c6e3d732b3330293a343d3d65262628723d742b3135302c683d692b352c6e3d73292c723c303f722b3d3336303a723e333630262628722d3d333630292c683e313030262628682d3d3230292c6e3e3130302626286e2d3d3630292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20672865297b72657475726e20303d3d4d0802653f28723d742b36302c683d692d35293a313d3d653f28723d742b3135302c683d692d3130293a323d3d653f28723d742c683d69293a333d3d653f28723d742d3135302c683d692b3130293a343d3d65262628723d742d36302c683d692b35292c723c303f722b3d3336303a723e333630262628722d3d333630292c683e313030262628682d3d3230292c6e3d732c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20632865297b72657475726e20303d3d653f28723d742c683d692b3230293a313d3d653f28723d742b39302c683d692d3130293a323d3d653f28723d742c683d69293a333d3d653f28723d742b3138302c683d692b3130293a343d3d65262628723d742d39302c683d692b35292c723c303f722b3d3336303a723e333630262628722d3d333630292c683e313030262628682d3d3230292c6e3d732c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20752865297b72657475726e20303d3d653f28723d742b33302c683d692b31302c6e3d732b3230293a313d3d653f28723d742b33302c683d692b34302c6e3d732b3430293a323d3d653f28723d742c683d692c6e3d73293a333d3d653f28723d742b3136302c683d692b32352c6e3d732b35293a343d3d65262628723d742b3135302c683d692b31302c6e3d732b3230292c723e334d08023630262628722d3d333630292c28303d3d657c7c343d3d65292626683e3130303f682d3d32303a313d3d652626683e39303f682d3d38303a333d3d652626683e3630262628682d3d3530292c313d3d6526266e3e3130303f6e2d3d38303a28303d3d657c7c343d3d652926266e3e3130302626286e2d3d3430292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d66756e6374696f6e20762865297b72657475726e20723d742c683d692c303d3d653f6e3d732d32353a313d3d653f6e3d732b33303a323d3d653f6e3d733a333d3d653f6e3d732b353a343d3d652626286e3d732d3130292c6e3e3130302626286e2d3d3830292c6368726f6d6128722c682f3130302c6e2f3130302c2268736c22297d7d737461746963206368726f6d61546f41727261793d653d3e5b652e5f7267625b305d2c652e5f7267625b315d2c652e5f7267625b325d2c3235352a652e5f7267625b335d5d3b73746174696320736574436f6c6f724d6f64653d653d3e7b746869732e53414e445f434f4c4f525f4d4f44453d657d7d636c6173732047656f6d657472797b73746174696320736c696365506f6c7942795928652c74297b6c657420693d5b5d3b666f72286c657420733d303b733c652e6c656e6774683b732b2b297b6c657420613d655b735d2c723d733f655b732d315d3a652e6174282d31292c683d612e793e3d743b68214d08023d722e793e3d742626692e707573682847656f6d657472792e696e746572576974685928722c612c7429292c682626692e707573682861297d72657475726e20697d737461746963206765744172656142656c6f775928652c74297b72657475726e2047656f6d657472792e676574506f6c79417265612847656f6d657472792e736c696365506f6c7942795928652c7429297d737461746963206765745942794172656142656c6f7728652c74297b6c65745b692c732c612c725d3d47656f6d657472792e676574426f756e64696e67426f7828652c22434f4f524422292c683d732c6e3d723b666f72286c657420693d303b693c33303b2b2b69297b6c657420693d28682b6e292f323b47656f6d657472792e6765744172656142656c6f775928652c69293e743f683d693a6e3d697d72657475726e206e7d73746174696320696e746572576974685928652c742c69297b6c657420733d652e636f707928292c613d742e636f707928292c723d637265617465566563746f72282d3165392c69292c683d637265617465566563746f72283165392c69293b72657475726e2047656f6d657472792e696e74657273656374696f6e28732c612c722c68297d73746174696320676574506f6c79417265612865297b6c657420743d303b666f72286c657420693d303b693c652e6c656e6774683b692b2b297b6c657420733d655b695d2c613d4d0802655b28692b312925652e6c656e6774685d2c723d637265617465566563746f7228732e782c732e79292c683d637265617465566563746f7228612e782c612e79293b742b3d722e63726f73732868292e7a7d72657475726e20743d6162732874292f322c747d73746174696320676574426f756e64696e67426f7828652c743d2253495a4522297b6c657420693d655b305d2e782c733d655b305d2e782c613d655b305d2e792c723d655b305d2e793b666f72286c657420743d303b743c652e6c656e6774683b742b2b2969734e614e28655b745d2e79297c7c28613d6d696e28612c655b745d2e79292c723d6d617828722c655b745d2e7929292c69734e614e28655b745d2e78297c7c28693d6d696e28692c655b745d2e78292c733d6d617828732c655b745d2e7829293b72657475726e2253495a45223d3d743f5b692c612c732d692c722d615d3a22434f4f5244223d3d743f5b692c612c732c725d3a5b5d7d73746174696320696e74657273656374696f6e28652c742c692c73297b6c657420613d637265617465566563746f7228742e782d652e782c742e792d652e79292c723d637265617465566563746f7228732e782d692e782c732e792d692e79292c683d637265617465566563746f7228692e782d652e782c692e792d652e79292c6e3d28612e636f707928292e726f746174652850492f32292c722e636f707928292e726f4d0802746174652850492f3229292c6f3d682e646f74286e292f612e646f74286e292c6c3d612e6d756c74286f293b72657475726e20637265617465566563746f7228652e782b6c2e782c652e792b6c2e79297d7d636c61737320477261706869635574696c737b737461746963206170706c794d61736b28652c74297b652e7075736828292c652e6e6f5374726f6b6528292c652e626c656e644d6f64652852454d4f5645292c652e66696c6c283235352c3235352c3235352c323535292c652e626567696e536861706528292c652e76657274657828302c30292c652e76657274657828302c652e686569676874292c652e76657274657828652e77696474682c652e686569676874292c652e76657274657828652e77696474682c30292c652e626567696e436f6e746f757228293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782c745b695d2e79293b652e656e64436f6e746f757228292c652e656e64536861706528652e434c4f5345292c652e626c656e644d6f646528424c454e44292c652e706f7028297d7d636c61737320486f7572676c6173737b737461746963205449434b5f494e54455256414c3d36303b73746174696320524f544154455f494e54455256414c3d31302f333b636f6e7374727563746f7228652c74297b746869732e65766f6c7665506572696f643d4d0802652e65766f6c7665506572696f642c742e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c657420693d742e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e67652869292c746869732e757064617465286e65772044617465297d6f6e497465726174696f6e4368616e67652865297b746869732e666c69707065643d6525323d3d317d676574537461746528297b72657475726e7b746f703a746869732e746f702c726f746174696f6e3a746869732e726f746174696f6e2c666c69707065643a746869732e666c69707065642c74696d6553696e6365526f746174696f6e3a746869732e74696d6553696e6365526f746174696f6e7d7d7570646174652865297b6c657420742c693d303b6966287472616974732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c5929743d333630302c692b3d36302a652e6765744d696e7574657328292c692b3d652e6765745365636f6e647328292c692b3d652e6765744d696c6c697365636f6e647328292f3165333b656c7365206966287472616974732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c5929743d38363430302c692b3d36302a652e67654d080274486f75727328292a36302c692b3d36302a652e6765744d696e7574657328292c692b3d652e6765745365636f6e647328292c692b3d652e6765744d696c6c697365636f6e647328292f3165333b656c7365206966287472616974732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59297b6c657420733d652e67657446756c6c5965617228292c613d652e6765744d6f6e746828292b313b743d32342a6e6577204461746528732c612c30292e6765744461746528292a36302a36302c692b3d32342a28652e6765744461746528292d31292a36302a36302c692b3d36302a652e676574486f75727328292a36302c692b3d36302a652e6765744d696e7574657328292c692b3d652e6765745365636f6e647328292c692b3d652e6765744d696c6c697365636f6e647328292f3165337d746869732e666c69707065643f746869732e746f703d312d6d696e28312c692f74293a746869732e746f703d6d696e28312c692f74292c746869732e74696d6553696e6365526f746174696f6e3d6d617828302c692d486f7572676c6173732e524f544154455f494e54455256414c293b6c657420733d4d6174682e6d696e28692c486f7572676c6173732e524f544154455f494e54455256414c293b746869732e726f746174696f6e3d746869732e666c69707065643f50493a302c746869732e726f7461744d0802696f6e2b3d732f486f7572676c6173732e524f544154455f494e54455256414c2a50497d7d66756e6374696f6e2067657452616e646f6d496e7428652c74297b72657475726e20666c6f6f722872616e646f6d28652c7429297d66756e6374696f6e2067657452616e646f6d4974656d2865297b6c657420743d303b666f7228636f6e73742069206f66206529742b3d695b315d3b6c657420693d72616e646f6d2874292c733d303b666f7228636f6e73742074206f66206529696628732b3d745b315d2c693c732972657475726e20745b305d3b72657475726e206e756c6c7d66756e6374696f6e2073687566666c652865297b666f72286c657420743d313b743c652e6c656e6774683b2b2b74297b6c657420693d67657452616e646f6d496e7428302c74292c733d655b745d3b655b745d3d655b695d2c655b695d3d737d7d636c61737320506f737450726f63657373696e677b636f6e7374727563746f7228652c742c69297b746869732e7743616e7661733d652c746869732e6843616e7661733d742c746869732e677261706869633d637265617465477261706869637328746869732e7743616e7661732c746869732e6843616e766173292c746869732e75706461746546696c7465722831297d75706461746546696c74657228652c742c69297b746869732e677261706869632e66696c6c283235352c3235352c3235352c32354d080235292c746869732e677261706869632e626c656e644d6f64652852454d4f5645292c746869732e677261706869632e7265637428302c302c746869732e7743616e7661732c746869732e6843616e766173292c746869732e677261706869632e626c656e644d6f646528424c454e44293b6c657420732c613d746869732e7743616e7661732f322c723d746869732e6843616e7661732f322c683d322a7371727428612a612b722a72293b733d613e723f7371727428312d4d6174682e706f7728722f612c3229293a7371727428312d4d6174682e706f7728612f722c3229293b6c6574206e2c6f3b69662831213d616273286529297b6c657420742c693b333d3d6162732865293f28743d362c693d2e36293a31303d3d6162732865293f28743d342c693d2e35293a36303d3d6162732865293f28743d332c693d2e34293a333630303d3d616273286529262628743d322c693d2e33292c6f3d692d2e312c6e3d6d61702873696e28446174652e6e6f7728292f3165332f742a544155292c2d312c312c692d2e312c692b2e31297d656c736520693f286f3d312c6e3d31293a286f3d2e37352c6e3d2e3735293b746869732e677261706869632e7075736828292c746869732e677261706869632e656c6c697073654d6f646528524144495553292c746869732e677261706869632e7472616e736c61746528612c72293b666f72286c6574204d0802653d33393b653e3d303b652d2d297b6c657420743d28652b31292f34303b696628313d3d6f7c7c6d617028742c6f2c312c302c312e32293c3d3029627265616b3b6c657420693d6d6178286d617028742c6e2c312c302c312e32292c30292c733d636f6c6f7228302c302c302c3235352a69293b746869732e677261706869632e66696c6c2873292c746869732e677261706869632e6e6f5374726f6b6528292c746869732e677261706869632e656c6c6970736528302c302c682a612f28612b72292a742c682a722f28612b72292a74292c653e30262628743d652f34302c746869732e677261706869632e66696c6c283235352c3235352c3235352c323535292c746869732e677261706869632e626c656e644d6f64652852454d4f5645292c746869732e677261706869632e656c6c6970736528302c302c682a612f28612b72292a742c682a722f28612b72292a74292c746869732e677261706869632e626c656e644d6f646528424c454e4429297d746869732e677261706869632e706f7028297d6170706c79546f4d61696e43616e76617328297b696d61676528746869732e677261706869632c302c30297d7d636c617373204261636b67726f756e6452656e64657265727b636f6e7374727563746f7228652c742c692c732c612c72297b746869732e7743616e7661733d652e77696474682c746869732e6843616e7661733d654d08022e6865696768742c746869732e6d6178523d6d696e28746869732e7743616e7661732c746869732e6843616e766173292f313032342c746869732e64782c746869732e7976616c7565732c746869732e7876616c7565732c746869732e7873706163696e67313d5b5d2c746869732e746869636b6e657373313d5b5d2c746869732e7468657461313d5b5d2c746869732e76656c6f63697479313d5b5d2c746869732e737a313d5b5d2c746869732e7873706163696e67323d5b5d2c746869732e746869636b6e657373323d5b5d2c746869732e7468657461323d5b5d2c746869732e76656c6f63697479323d5b5d2c746869732e737a323d5b5d2c746869732e7873706163696e67333d5b5d2c746869732e746869636b6e657373333d5b5d2c746869732e7468657461333d5b5d2c746869732e76656c6f63697479333d5b5d2c746869732e737a333d5b5d2c746869732e7873706163696e67343d5b5d2c746869732e746869636b6e657373343d5b5d2c746869732e7468657461343d5b5d2c746869732e76656c6f63697479343d5b5d2c746869732e737a343d5b5d2c746869732e633d5b5d2c746869732e6e756d5f77617665733d33302c746869732e5f683d742c746869732e5f733d692c746869732e5f6c3d732c746869732e7061747465726e4f726465723d612e7061747465726e4f726465722c746869732e646961676f6e616c4d08023d73717274284d6174682e706f772877696474682c32292b4d6174682e706f77286865696768742c3229293b6c657420683d637265617465566563746f722877696474682c686569676874292e68656164696e6728292c6e3d6162732850492f342d68293b746869732e74793d746869732e646961676f6e616c2f322a636f73286e292c746869732e7761766553706565643d612e7761766553706565642c746869732e77617665506572696f643d612e77617665506572696f642c746869732e776176654865696768743d612e776176654865696768742c746869732e65766f6c7665506572696f643d612e65766f6c7665506572696f642c746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f746869732e6e756d5f6c696e65733d373a28746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c597c7c746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c5929262628746869732e6e756d5f6c696e65733d3132292c746869732e776176654865696768743d3d576176654865696768742e53484f52543f746869732e616d706c69747564653d67657452616e646f6d496e742832302c3330293a746869732e776176654865696768743d3d576176654865696768742e4d454449554d3f746869732e616d704d08026c69747564653d67657452616e646f6d496e742833302c3430293a746869732e776176654865696768743d3d576176654865696768742e54414c4c262628746869732e616d706c69747564653d67657452616e646f6d496e742834302c353029292c746869732e77617665506572696f643d3d57617665506572696f642e53484f52543f746869732e706572696f643d67657452616e646f6d496e74283330302c333531293a746869732e77617665506572696f643d3d57617665506572696f642e4d454449554d3f746869732e706572696f643d67657452616e646f6d496e74283432352c343736293a746869732e77617665506572696f643d3d57617665506572696f642e4c4f4e47262628746869732e706572696f643d67657452616e646f6d496e74283630302c36353129292c746869732e7761766553706565643d3d5761766553706565642e534c4f573f28746869732e6d696e5f73706565643d2e3030332c746869732e6d61785f73706565643d2e303035293a746869732e7761766553706565643d3d5761766553706565642e4d454449554d3f28746869732e6d696e5f73706565643d2e3030382c746869732e6d61785f73706565643d2e3031293a746869732e7761766553706565643d3d5761766553706565642e46415354262628746869732e6d696e5f73706565643d2e3031352c746869732e6d61785f73706565643d4d08022e303138292c746869732e74686574614c6973743d5b302c312f342a50492c2e352a50492c332f342a50492c50495d2c746869732e73657475705374617469635761766528292c746869732e736574757044796e616d69635761766528292c722e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c6574206f3d722e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e6765286f297d6f6e497465726174696f6e4368616e67652865297b72616e646f6d53656564283130302a652b31292c73687566666c6528746869732e7873706163696e6731292c73687566666c6528746869732e746869636b6e65737331292c73687566666c6528746869732e746865746131292c73687566666c6528746869732e7873706163696e6731292c73687566666c6528746869732e76656c6f6369747931292c73687566666c6528746869732e7873706163696e6732292c73687566666c6528746869732e746869636b6e65737332292c73687566666c6528746869732e746865746132292c73687566666c6528746869732e7873706163696e6732292c73687566666c6528746869732e76656c6f6369747932292c73687566666c6528746869732e7873706163696e6733292c73684d08027566666c6528746869732e746869636b6e65737333292c73687566666c6528746869732e746865746133292c73687566666c6528746869732e7873706163696e6733292c73687566666c6528746869732e76656c6f6369747933292c73687566666c6528746869732e7873706163696e6734292c73687566666c6528746869732e746869636b6e65737334292c73687566666c6528746869732e746865746134292c73687566666c6528746869732e7873706163696e6734292c73687566666c6528746869732e76656c6f6369747934297d73657475705374617469635761766528297b666f72286c657420653d303b653c746869732e6e756d5f77617665733b652b2b297b746869732e7873706163696e67312e707573682867657452616e646f6d496e7428352c353029292c746869732e746869636b6e657373312e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461312e70757368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479312e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a312e707573682872616e646f6d282e352c3329292c746869732e7873706163696e67322e707573682867657452616e646f6d496e4d08027428352c353029292c746869732e746869636b6e657373322e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461322e70757368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479322e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a322e707573682872616e646f6d282e352c3329292c746869732e7873706163696e67332e707573682867657452616e646f6d496e7428352c353029292c746869732e746869636b6e657373332e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461332e70757368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479332e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a332e707573682872616e646f6d282e352c3329292c746869732e7873706163696e67342e707573682867657452616e646f6d496e7428352c353029292c746869732e746869636b6e657373342e707573682867657452616e646f6d496e742835302c32303029292c746869732e7468657461342e70754d08027368287b76616c75653a72616e646f6d28746869732e74686574614c697374297d292c746869732e76656c6f63697479342e70757368287b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d292c746869732e737a342e707573682872616e646f6d282e352c3329293b6c657420743d6525353b746869732e632e7075736828436f6c6f722e67657453616e64436f6c6f724279496e64657828742c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e323529297d7d736574757044796e616d69635761766528297b746869732e64796e616d6963576176653d7b683a72616e646f6d28746869732e6843616e7661732f33292c7873706163696e673a67657452616e646f6d496e7428352c3230292c746869636b6e6573733a67657452616e646f6d496e74283130302c323030292c74686574613a7b76616c75653a72616e646f6d28746869732e74686574614c697374297d2c76656c6f636974793a7b76616c75653a72616e646f6d28746869732e6d696e5f73706565642c746869732e6d61785f7370656564297d2c737a3a72616e646f6d28312c33292c6e756d5f6c696e65733a307d2c313d3d746869732e7061747465726e4f726465725b305d3f746869732e64796e616d6963576176652e683d72616e646f6d283230302c68654d0802696768742d323030293a323d3d746869732e7061747465726e4f726465725b305d3f746869732e64796e616d6963576176652e683d72616e646f6d283230302c77696474682d323030293a28333d3d746869732e7061747465726e4f726465725b305d7c7c343d3d746869732e7061747465726e4f726465725b305d29262628746869732e64796e616d6963576176652e683d72616e646f6d283230302c322a746869732e74792d32303029297d7570646174652865297b746869732e74696d653d657d64726177486f725761766528652c742c692c732c612c722c682c6e2c6f297b746869732e64783d54574f5f50492f746869732e706572696f642a692c746869732e7976616c7565733d6e657720417272617928666c6f6f722877696474682f692b323029293b6c6574206c3d746869732e74696d652e67657454696d6528292f283165332f3630292c643d722e76616c75652b682e76616c75652a6c2f352b743b666f72286c657420653d303b653c746869732e7976616c7565732e6c656e6774683b652b2b29746869732e7976616c7565735b655d3d73696e2864292a746869732e616d706c69747564652c642b3d746869732e64783b666f72286c657420723d303b723c613b722b2b297b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f2929292c744d08022b3d732f613b666f72286c657420733d303b733c746869732e7976616c7565732e6c656e6774683b732b2b297b6c657420613d732a692c723d742b746869732e7976616c7565735b735d3b723c2d327c7c723e6865696768742b327c7c652e73717561726528612c722c6e2a746869732e6d617852297d7d7d647261775665725761766528652c742c692c732c612c722c682c6e2c6f297b746869732e64783d54574f5f50492f746869732e706572696f642a692c746869732e7876616c7565733d6e657720417272617928666c6f6f72286865696768742f692b323029293b6c6574206c3d746869732e74696d652e67657454696d6528292f283165332f3630292c643d722e76616c75652b682e76616c75652a6c2f352b743b666f72286c657420653d303b653c746869732e7876616c7565732e6c656e6774683b652b2b29746869732e7876616c7565735b655d3d73696e2864292a746869732e616d706c69747564652c642b3d746869732e64783b666f72286c657420723d303b723c613b722b2b297b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f2929292c742b3d732f613b666f72286c657420733d303b733c746869732e7876616c7565732e6c656e6774683b732b2b297b6c657420613d742b746869732e7876616c7565735b735d2c723d732a694d08023b613c2d327c7c613e77696474682b327c7c652e73717561726528612c722c6e2a746869732e6d617852297d7d7d647261774469615761766528652c742c692c732c612c722c682c6e2c6f2c6c297b6c657420643d636f73282d6c292c6d3d73696e282d6c293b746869732e64783d54574f5f50492f746869732e706572696f642a692c746869732e7976616c7565733d6e657720417272617928666c6f6f7228746869732e646961676f6e616c2f6929293b6c657420703d746869732e74696d652e67657454696d6528292f283165332f3630292c673d722e76616c75652b682e76616c75652a702f352b743b666f72286c657420653d303b653c746869732e7976616c7565732e6c656e6774683b652b2b29746869732e7976616c7565735b655d3d73696e2867292a746869732e616d706c69747564652c672b3d746869732e64783b666f72286c657420723d303b723c613b722b2b297b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f2929292c742b3d732f613b666f72286c657420733d303b733c746869732e7976616c7565732e6c656e6774683b732b2b297b6c657420613d732a692c723d742b746869732e7976616c7565735b735d2c683d6e2a746869732e6d6178522c6f3d612d746869732e646961676f6e616c2f322c6c3d722d746869732e744d0802792c703d6f2a642b6c2a6d2b77696474682f322c673d2d6f2a6d2b6c2a642b6865696768742f323b703c2d327c7c703e77696474682b327c7c673c2d327c7c673e6865696768742b327c7c652e73717561726528612c722c68297d7d7d64726177486f72697a6f6e74616c2865297b6c657420743d2d35303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29746869732e64726177486f725761766528652c742c746869732e7873706163696e67315b695d2a77696474682f313032342c746869732e746869636b6e657373315b695d2a6865696768742f313032342c746869732e6e756d5f6c696e65732c746869732e7468657461315b695d2c746869732e76656c6f63697479315b695d2c746869732e737a315b695d2c746869732e635b695d292c742b3d286865696768742b3530292f746869732e6e756d5f77617665737d64726177566572746963616c2865297b6c657420743d2d35303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29746869732e647261775665725761766528652c742c746869732e7873706163696e67325b695d2a6865696768742f313032342c746869732e746869636b6e657373325b695d2a77696474682f313032342c746869732e6e756d5f6c696e65732c746869732e7468657461325b695d2c746869732e764d0802656c6f63697479325b695d2c746869732e737a325b695d2c746869732e635b695d292c742b3d2877696474682b3530292f746869732e6e756d5f77617665737d647261774c6566742865297b6c657420743d303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f746174652850492f34292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c742c746869732e7873706163696e67335b695d2a746869732e6d6178522c746869732e746869636b6e657373335b695d2a746869732e6d6178522c746869732e6e756d5f6c696e65732c746869732e7468657461335b695d2c746869732e76656c6f63697479335b695d2c746869732e737a335b695d2c746869732e635b695d2c50492f34292c652e706f7028292c742b3d28322a746869732e74792d313030292f28746869732e6e756d5f77617665732d31297d6472617752696768742865297b6c657420743d303b666f72286c657420693d303b693c746869732e7468657461312e6c656e6774683b692b2b29652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f74617465284d0802332a50492f34292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c742c746869732e7873706163696e67345b695d2a746869732e6d6178522c746869732e746869636b6e657373345b695d2a746869732e6d6178522c746869732e6e756d5f6c696e65732c746869732e7468657461345b695d2c746869732e76656c6f63697479345b695d2c746869732e737a345b695d2c746869732e635b695d2c332a50492f34292c652e706f7028292c742b3d28322a746869732e74792d313030292f28746869732e6e756d5f77617665732d31297d647261775061747465726e28652c74297b313d3d743f746869732e64726177486f72697a6f6e74616c2865293a323d3d743f746869732e64726177566572746963616c2865293a333d3d743f746869732e647261774c6566742865293a746869732e6472617752696768742865297d6472617728652c742c692c732c61297b746869732e5f683d732e682c746869732e5f733d732e732c746869732e5f6c3d732e6c2c652e6261636b67726f756e642830293b6c657420723d742e676574486f75727328293e3d362626742e676574486f75727328293c31383f2e323a2e30352c683d436f6c6f722e67657453616e64436f6c6f724279496e64657828342c746869732e5f682c746869732e5f732c4d0802746869732e5f6c292e6c756d696e616e63652872292e616c706861282e35293b696628652e6261636b67726f756e6428636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928682929292c21612972657475726e3b746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f746869732e64796e616d6963576176652e6e756d5f6c696e65733d28742e676574486f75727328292b3131292531322b313a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f746869732e64796e616d6963576176652e6e756d5f6c696e65733d742e67657444617928292b313a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628746869732e64796e616d6963576176652e6e756d5f6c696e65733d742e6765744d6f6e746828292b31293b666f72286c657420653d303b653c746869732e6e756d5f77617665733b652b2b297b6c657420743d6525353b746869732e635b655d3d436f6c6f722e67657453616e64436f6c6f724279496e64657828742c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e3235297d313d3d693f28333d3d746869732e7061747465726e4f726465725b305d7c7c343d3d746869732e7061747465726e4f726465725b305d4d08023f746869732e6e756d5f77617665733d33303a746869732e6e756d5f77617665733d32302c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d29293a323d3d693f28746869732e7061747465726e4f726465725b305d2b746869732e7061747465726e4f726465725b315d3d3d333f746869732e6e756d5f77617665733d31303a746869732e7061747465726e4f726465725b305d2b746869732e7061747465726e4f726465725b315d3d3d373f746869732e6e756d5f77617665733d32303a746869732e6e756d5f77617665733d31352c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b315d29293a333d3d693f28746869732e6e756d5f77617665733d31302c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b315d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b325d29293a28746869732e6e756d5f77617665733d31302c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b305d292c4d0802746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b315d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b325d292c746869732e647261775061747465726e28652c746869732e7061747465726e4f726465725b335d29293b6c65747b683a6e2c7873706163696e673a6f2c746869636b6e6573733a6c2c6e756d5f6c696e65733a642c74686574613a6d2c76656c6f636974793a702c737a3a677d3d746869732e64796e616d6963576176652c633d436f6c6f722e67657453616e64436f6c6f724279496e64657828302c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e35293b313d3d746869732e7061747465726e4f726465725b305d3f746869732e64726177486f725761766528652c6e2c6f2a77696474682f313032342c6c2a6865696768742f313032342c642c6d2c702c672c63293a323d3d746869732e7061747465726e4f726465725b305d3f746869732e647261775665725761766528652c6e2c6f2a6865696768742f313032342c6c2a77696474682f313032342c642c6d2c702c672c63293a333d3d746869732e7061747465726e4f726465725b305d3f28652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f746174652850492f4d080234292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c6e2c6f2a746869732e6d6178522c6c2a746869732e6d6178522c642c6d2c702c672c632c50492f34292c652e706f702829293a343d3d746869732e7061747465726e4f726465725b305d262628652e7075736828292c652e7472616e736c6174652877696474682f322c6865696768742f32292c652e726f7461746528332a50492f34292c652e7472616e736c617465282d746869732e646961676f6e616c2f322c2d746869732e7479292c746869732e647261774469615761766528652c6e2c6f2a746869732e6d6178522c6c2a746869732e6d6178522c642c6d2c702c672c632c332a50492f34292c652e706f702829297d7d636c61737320477261696e52656e64657265727b73746174696320746578747572653b7374617469632064656c7461583b7374617469632064656c7461593b737461746963206d617844656c74613d3130303b737461746963207743616e7661733b737461746963206843616e7661733b73746174696320736574757028652c74297b477261696e52656e64657265722e7743616e7661733d652b477261696e52656e64657265722e6d617844656c74612c477261696e52656e64657265722e6843616e7661733d742b477261696e52656e646572654d0802722e6d617844656c74612c477261696e52656e64657265722e64656c7461583d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c30292c477261696e52656e64657265722e64656c7461593d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c30292c477261696e52656e64657265722e746578747572653d637265617465496d61676528477261696e52656e64657265722e7743616e7661732c477261696e52656e64657265722e6843616e766173292c477261696e52656e64657265722e746578747572652e6c6f6164506978656c7328293b6c657420693d477261696e52656e64657265722e746578747572652e706978656c44656e7369747928293b666f72286c657420653d303b653c477261696e52656e64657265722e7743616e7661733b652b2b29666f72286c657420743d303b743c477261696e52656e64657265722e6843616e7661733b742b2b297b6c657420733d3231362e37352c613d3235352c723d72616e646f6d28732c61292c683d72616e646f6d28732c61292c6e3d72616e646f6d28732c61293b666f72286c657420733d303b733c693b732b2b29666f72286c657420613d303b613c693b612b2b297b6c6574206f3d342a2828742a692b61292a477261696e52656e64657265722e7743616e7661732a692b28652a692b7329293b477261696e52656e644d0802657265722e746578747572652e706978656c735b6f5d3d722c477261696e52656e64657265722e746578747572652e706978656c735b6f2b315d3d682c477261696e52656e64657265722e746578747572652e706978656c735b6f2b325d3d6e2c477261696e52656e64657265722e746578747572652e706978656c735b6f2b335d3d3235357d7d477261696e52656e64657265722e746578747572652e757064617465506978656c7328297d737461746963206170706c79477261696e28652c74297b6c657420693d21217426267b61744672616d653a317d3b652e746578747572654f7665726c617928477261696e52656e64657265722e746578747572652c7b6d6f64653a4255524e2c616e696d6174653a697d297d737461746963206170706c79477261696e546f4d61696e43616e7661732865297b626c656e644d6f6465284255524e292c65262628477261696e52656e64657265722e64656c7461583d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c30292c477261696e52656e64657265722e64656c7461593d72616e646f6d282d477261696e52656e64657265722e6d617844656c74612c3029292c696d61676528477261696e52656e64657265722e746578747572652c477261696e52656e64657265722e64656c7461582c477261696e52656e64657265722e64656c746159297d7d636f6e4d0802737420486f7572676c61737353697a653d7b534d414c4c3a22534d414c4c222c4d454449554d3a224d454449554d222c4c415247453a224c41524745227d3b636c61737320486f7572676c61737352656e64657265727b636f6e7374727563746f7228652c742c69297b746869732e6e4c617965723d31302c746869732e7743616e7661733d652e77696474682c746869732e6843616e7661733d652e6865696768742c746869732e686f7572676c61737353697a653d742e686f7572676c61737353697a652c746869732e706f6c793d742e706f6c792c746869732e65766f6c7665506572696f643d742e65766f6c7665506572696f642c746869732e78633d746869732e7743616e7661732f322c746869732e79633d746869732e6843616e7661732f322c746869732e78313d746869732e78632b72616e646f6d283130302c333030292c746869732e79313d746869732e79632b72616e646f6d283130302c333030292c746869732e78323d746869732e78632b72616e646f6d283130302c333030292c746869732e79323d746869732e79632b72616e646f6d283130302c333030292c746869732e78316d3d746869732e7743616e7661732d746869732e78312c746869732e79316d3d746869732e79312c746869732e6d6178523d6d696e28746869732e7743616e7661732c746869732e6843616e766173292f322c313d3d746869734d08022e706f6c793f746869732e6d61696e5261646975733d2e312a746869732e6d6178522a343a746869732e6d61696e5261646975733d2e312a746869732e6d6178522a67657452616e646f6d496e7428312c36292c692e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c657420733d692e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e67652873292c746869732e746f706c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c5049292c746869732e626f74746f6d6c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c30292c746869732e73616e6452656374733d5b47656f6d657472792e676574426f756e64696e67426f7828746869732e746f706c696e65292c47656f6d657472792e676574426f756e64696e67426f7828746869732e626f74746f6d6c696e65295d2c746869732e6578636974656d656e743d2e31352a6d617828746869732e73616e6452656374735b305d5b325d2c746869732e73616e6452656374735b305d5b335d292c746869732e64783d5b5d2c746869732e64793d5b5d3b666f72286c657420653d303b653c324d08022a746869732e6e4c617965723b2b2b6529746869732e64785b655d3d72616e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74292c746869732e64795b655d3d72616e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74293b746869732e6375725365636f6e643d286e65772044617465292e6765745365636f6e647328292c746869732e726f74617465416e676c653d307d6f6e497465726174696f6e4368616e67652865297b72616e646f6d53656564283130302a652b32292c746869732e7374617274416e676c653d746869732e6765745374617274416e676c6528292c746869732e72616469757365733d746869732e676574526164697573657328297d676574497465726174696f6e2865297b6c657420742c693d652e67657454696d6528292d36302a652e67657454696d657a6f6e654f666673657428292a3165333b72657475726e20746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f743d666c6f6f7228692f33366535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f743d666c6f6f7228692f3836346535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628743d31322a284d0802652e67657446756c6c5965617228292d31393730292b652e6765744d6f6e74682829292c747d6765745374617274416e676c6528297b6c657420653d67657452616e646f6d496e7428312c36293b72657475726e2050492f28322e352b2e352a65297d676574526164697573657328297b6c657420652c743b746869732e686f7572676c61737353697a653d3d486f7572676c61737353697a652e4d454449554d3f28653d2e34352a746869732e6d6178522c743d2e35352a746869732e6d617852293a746869732e686f7572676c61737353697a653d3d486f7572676c61737353697a652e4c41524745262628653d2e362a746869732e6d6178522c743d2e372a746869732e6d617852293b6c657420693d5b5d3b666f72286c657420733d303b733c746869732e706f6c793b732b2b297b6c657420613b613d303d3d733f653a72616e646f6d28652c74292c692e707573682861297d72657475726e20697d75706461746528652c74297b696628652e6765745365636f6e64732829213d746869732e6375725365636f6e64297b746869732e6375725365636f6e643d652e6765745365636f6e647328292c746869732e7365636f6e645469636b65643d21302c746869732e726f74617465416e676c652b3d50492f33303b666f72286c657420653d303b653c322a746869732e6e4c617965723b2b2b6529746869732e64785b655d3d72614d08026e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74292c746869732e64795b655d3d72616e646f6d282d746869732e6578636974656d656e742c746869732e6578636974656d656e74297d656c736520746869732e7365636f6e645469636b65643d21313b746869732e746f706c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c50492b74292c746869732e626f74746f6d6c696e653d746869732e706f6c79676f6e28746869732e78632c746869732e79632c746869732e706f6c792c74292c746869732e73616e6452656374733d5b47656f6d657472792e676574426f756e64696e67426f7828746869732e746f706c696e65292c47656f6d657472792e676574426f756e64696e67426f7828746869732e626f74746f6d6c696e65295d2c746869732e74696d653d652c746869732e726f746174696f6e3d747d6472617728652c742c69297b6c657420733d692e6c756d696e616e6365282e33293b652e66696c6c283235352c3235352c3235352c323535292c652e626c656e644d6f64652852454d4f5645292c652e7265637428302c302c746869732e7743616e7661732c746869732e6843616e766173292c652e626c656e644d6f646528424c454e44292c303d3d743f746869732e64726177536861646f774e6f726d616c28654d08022c732c746869732e74696d65293a313d3d742626746869732e64726177536861646f77436972636c6528652c73292c652e66696c6c283235352c3235352c3235352c323535292c652e626c656e644d6f64652852454d4f5645292c746869732e64726177536861706528652c746869732e746f706c696e65292c746869732e64726177536861706528652c746869732e626f74746f6d6c696e65292c652e626c656e644d6f646528424c454e44297d64726177536861646f774e6f726d616c28652c742c69297b6c657420733d666c6f6f7228692e6765744d696e7574657328292f3130292c613d692e6765744d696e7574657328292531303b652e7075736828292c652e6e6f46696c6c28292c652e7374726f6b65576569676874282e3030352a746869732e6d617852293b666f72286c657420693d303b693c733b692b2b297b6c657420613d6d617028692c732c302c2e322c2e35292c723d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128612929293b652e7374726f6b652872292c746869732e676574416e6444726177506f6c79676f6e28652c746869732e78632b746869732e64785b322a695d2c746869732e79632b746869732e64795b322a695d2c746869732e706f6c792c5049297d666f72286c657420693d303b693c613b692b2b297b6c657420733d6d617028692c612c302c2e4d0802322c2e35292c723d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128732929293b652e7374726f6b652872292c746869732e676574416e6444726177506f6c79676f6e28652c746869732e78632b746869732e64785b322a692b315d2c746869732e79632b746869732e64795b322a692b315d2c746869732e706f6c792c30297d652e706f7028297d64726177536861646f77436972636c6528652c74297b652e7075736828292c652e6e6f5374726f6b6528292c652e7472616e736c61746528746869732e78632c746869732e7963292c652e726f746174652850492b746869732e726f74617465416e676c65293b666f72286c657420693d303b693c333b692b2b297b6c657420733d6d617028692c332c302c2e322c2e35292c613d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128732929293b652e66696c6c2861292c746869732e676574416e6444726177506f6c79676f6e28652c302c322e352a746869732e6d61696e5261646975732c746869732e706f6c792c5049292c746869732e676574416e6444726177506f6c79676f6e28652c302c322e352a2d746869732e6d61696e5261646975732c746869732e706f6c792c30292c652e726f746174652850492f33297d652e706f7028292c652e7075736828292c652e6e6f46696c6c28292c4d0802652e7374726f6b655765696768742832292c652e7472616e736c61746528746869732e78632c746869732e7963292c652e726f74617465282d746869732e726f74617465416e676c652b50492f3330293b666f72286c657420693d303b693c333b692b2b297b6c657420733d6d617028692c332c302c2e322c2e35292c613d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928742e616c70686128732929293b652e7374726f6b652861292c746869732e676574416e6444726177506f6c79676f6e28652c302c2d746869732e6d61696e5261646975732f322c746869732e706f6c792c5049292c746869732e676574416e6444726177506f6c79676f6e28652c302c746869732e6d61696e5261646975732f322c746869732e706f6c792c30292c652e726f74617465282d50492f33297d652e706f7028297d676574416e6444726177506f6c79676f6e28652c742c692c732c61297b6c657420723d746869732e706f6c79676f6e28742c692c732c61293b746869732e64726177536861706528652c72297d64726177536861706528652c74297b652e626567696e536861706528293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782c745b695d2e79293b652e656e64536861706528652e434c4f5345297d706f6c79676f6e28652c742c692c73297b6c654d08027420613d2850492f322d746869732e7374617274416e676c65292f692c723d302c683d5b5d3b682e70757368287b783a652c793a747d293b6c6574206e3d746869732e7374617274416e676c652b733b666f72286c657420733d303b733c693b732b2b297b6c657420693d746869732e72616469757365735b725d3b722b3d313b6c657420733d652b636f73286e292a692c6f3d742b73696e286e292a693b682e70757368287b783a732c793a6f7d292c6e2b3d617d723d746869732e706f6c792c6e3d50492f322b612b733b666f72286c657420733d303b733c693b732b2b297b722d3d313b6c657420693d746869732e72616469757365735b725d2c733d652b636f73286e292a692c6f3d742b73696e286e292a693b682e70757368287b783a732c793a6f7d292c6e2b3d617d72657475726e20683d682e66696c7465722828653d3e2169734e614e28652e782926262169734e614e28652e792929292c687d67657453616e6452656374733d28293d3e746869732e73616e6452656374733b676574546f704c696e653d28293d3e746869732e746f706c696e653b676574426f74746f6d4c696e653d28293d3e746869732e626f74746f6d6c696e653b6765745365636f6e645469636b65643d28293d3e746869732e7365636f6e645469636b65647d636f6e73742057617665506572696f643d7b53484f52543a2253484f5254222c4d454d08024449554d3a224d454449554d222c4c4f4e473a224c4f4e47227d2c576176654865696768743d7b53484f52543a2253484f5254222c4d454449554d3a224d454449554d222c54414c4c3a2254414c4c227d2c5761766553706565643d7b534c4f573a22534c4f57222c4d454449554d3a224d454449554d222c464153543a2246415354227d3b636c6173732053616e6452656e64657265727b737461746963204e5f43555256455f504f494e543d35303b7374617469632044524f50444f574e5f54494d453d333b636f6e7374727563746f7228652c742c692c732c612c722c682c6e297b746869732e7743616e7661733d652e77696474682c746869732e6843616e7661733d652e6865696768742c746869732e68496e69743d742c746869732e626173654c696e653d746869732e7472616e73666f726d436f6f72642869292c746869732e62617365483d732c746869732e62617365533d612c746869732e626173654c3d722c746869732e6375725365636f6e643d302c746869732e776176654865696768743d682e776176654865696768742c746869732e77617665506572696f643d682e77617665506572696f642c746869732e7761766553706565643d682e7761766553706565642c746869732e65766f6c7665506572696f643d682e65766f6c7665506572696f642c746869732e6e53616e644c617965723d362c746869732e6c4d080261796572733d746869732e6765744c617965727328292c746869732e5f683d746869732e62617365482c746869732e5f733d746869732e62617365532c746869732e5f6c3d746869732e626173654c2c746869732e70726576497465726174696f6e3d6e756c6c2c6e2e7265676973746572497465726174696f6e4368616e67654576656e7428746869732e6f6e497465726174696f6e4368616e67652e62696e64287468697329293b6c6574206f3d6e2e67657443757272656e74497465726174696f6e28293b746869732e6f6e497465726174696f6e4368616e6765286f297d6f6e497465726174696f6e4368616e67652865297b6e756c6c3d3d746869732e70726576497465726174696f6e3f746869732e5f683d746869732e67657448756528746869732e62617365482c302c65293a746869732e5f683d746869732e67657448756528746869732e5f682c746869732e70726576497465726174696f6e2c65292c746869732e70726576497465726174696f6e3d657d67657448756528652c742c69297b6c657420733d6d696e28742c69292c613d6d617828742c69293b666f72286c657420723d733b723c613b722b2b297b72616e646f6d53656564283130302a722b33293b6c657420733d72616e646f6d2831293b696628746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f733d4d08026d617028732c302c312c352c3130293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f733d6d617028732c302c312c31302c3330293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628733d6d617028732c302c312c35302c31303029292c693e7429666f7228652b3d733b653e3336303b29652d3d3336303b656c736520666f7228652d3d733b653c303b29652b3d3336307d72657475726e20657d7570646174652865297b746869732e74696d653d657d6765744368726f6d6128297b72657475726e20436f6c6f722e67657453616e64436f6c6f724279496e64657828302c746869732e5f682c746869732e5f732c746869732e5f6c297d6765744261736548534c28297b72657475726e7b683a746869732e5f682c733a746869732e5f732c6c3a746869732e5f6c7d7d6472617728652c742c692c732c61297b746869732e6e4c617965723d28746869732e74696d652e676574486f75727328292b3131292531322b312c743d746869732e7472616e73666f726d436f6f72642874292c652e6261636b67726f756e642830293b6c657420723d746869732e6765744368726f6d6128292e6c756d696e616e6365282e35292e616c706861282e3235293b652e6261636b67726f756e6428636f6c6f72282e2e2e436f6c6f722e634d080268726f6d61546f417272617928722929292c652e7374726f6b655765696768742831292c746869732e6c61796572732e666f72456163682828653d3e7b696628303d3d652e696429652e633d436f6c6f722e67657453616e64436f6c6f724279496e64657828652e69642c746869732e5f682c746869732e5f732c746869732e5f6c292e6c756d696e616e6365282e32292e616c7068612831293b656c73657b6c657420743d6d617028652e69642f746869732e6e53616e644c617965722c302c312c2e352c2e38293b652e633d436f6c6f722e67657453616e64436f6c6f724279496e64657828652e69642c746869732e5f682c746869732e5f732c746869732e5f6c292e616c7068612874297d6c657420733d6d617028692c302c312c652e626173656c696e65592c746869732e68496e6974292c613d6d617828302c6d617028732c746869732e68496e69742c302c302c3129292c723d47656f6d657472792e676574506f6c79417265612874292a613b652e793d47656f6d657472792e6765745942794172656142656c6f7728742c72292c652e793d6d617028652e792c302c746869732e68496e69742c2e30352a2d746869732e6843616e7661732c746869732e68496e69742b2e30352a746869732e6843616e766173297d29292c746869732e6c61796572732e666f72456163682828693d3e7b732626322a692e69643c746869734d08022e6e4c617965722626746869732e6472617744726f70646f776e28652c742c692c61297d29292c746869732e6c61796572732e666f72456163682828743d3e746869732e647261774c6179657228652c742929293b6c657420683d21313b746869732e74696d652e6765745365636f6e64732829213d746869732e6375725365636f6e64262628746869732e6375725365636f6e643d746869732e74696d652e6765745365636f6e647328292c683d2130292c477261706869635574696c732e6170706c794d61736b28652c74297d7472616e73666f726d436f6f72642865297b6c65745b742c692c732c615d3d47656f6d657472792e676574426f756e64696e67426f782865292c723d742b732c683d692b613b72657475726e20652e6d61702828653d3e7b6c6574206e3d6d617028652e782c742c722c2d732f322c732f32292b746869732e7743616e7661732f322c6f3d6d617028652e792c692c682c302c61293b72657475726e20637265617465566563746f72286e2c6f297d29297d6765744c617965727328297b6c657420653d5b5d3b666f72286c657420743d303b743c746869732e6e53616e644c617965723b742b2b297b6c657420692c733d746869732e68496e69742f746869732e6e53616e644c617965722a743b746869732e7761766553706565643d3d5761766553706565642e534c4f573f693d72616e646f6d282e304d080230382c2e303132293a746869732e7761766553706565643d3d5761766553706565642e4d454449554d3f693d72616e646f6d282e3031362c2e303234293a746869732e7761766553706565643d3d5761766553706565642e46415354262628693d72616e646f6d282e3033322c2e30343829293b6c657420612c722c683d72616e646f6d28316534293b746869732e77617665506572696f643d3d57617665506572696f642e53484f52543f613d72616e646f6d28322e372c33293a746869732e77617665506572696f643d3d57617665506572696f642e4d454449554d3f613d72616e646f6d28312e382c32293a746869732e77617665506572696f643d3d57617665506572696f642e4c4f4e47262628613d72616e646f6d28312e322c312e3329292c746869732e776176654865696768743d3d576176654865696768742e53484f52543f723d746869732e6843616e7661732f33303a746869732e776176654865696768743d3d576176654865696768742e4d454449554d3f723d746869732e6843616e7661732f32343a746869732e776176654865696768743d3d576176654865696768742e54414c4c262628723d746869732e6843616e7661732f3138293b6c6574206e3d7b6d6f64653a2244454c54415f59222c64656c7461593a28652c74293d3e6d61702873696e28652a612a5441552b742a692b68292c2d312c312c2d722c724d0802297d3b652e70757368287b69643a742c626173656c696e65593a732c6865696768743a722c73706565643a692c736565643a682c73686170653a6e2c7374726970653a7b64697374616e63653a72616e646f6d282e30342a746869732e68496e69742c2e30382a746869732e68496e6974292c6865696768743a72616e646f6d282e30322a746869732e68496e69742c2e30342a746869732e68496e6974292c737472657463683a72616e646f6d28312e322c312e35292c636f6c6f725472616e73666f726d3a653d3e652e627269676874656e28312e32297d7d297d72657475726e20657d6472617744726f70646f776e3d28652c742c692c73293d3e7b6c65747b633a612c73686170653a727d3d692c683d47656f6d657472792e676574426f756e64696e67426f782874295b335d2c6e3d746869732e74696d652e67657454696d6528292f283165332f3630292c6f3d637265617465566563746f7228746869732e7743616e7661732f322c30292c6c3d637265617465566563746f7228746869732e7743616e7661732f322c68292c643d5b5d3b666f72286c657420653d303b653c35303b652b2b297b6c657420743d652f34392c693d6f2e636f707928292c7b783a732c793a617d3d566563746f722e6c65727028692c6c2c74293b732b3d722e64656c74615928742c2d6e2f35292a6d617028652c302c35302c2e312c312e35292c4d0802642e7075736828637265617465566563746f7228732c6129297d6c6574206d3d6d617028732c302c53616e6452656e64657265722e44524f50444f574e5f54494d452c302c3530293b6d3d6d696e286d2c3530292c652e7075736828292c652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928612929293b666f72286c657420743d303b743c6d3b742b2b29652e73717561726528645b745d2e782c645b745d2e792c2e3030342a746869732e6843616e766173293b652e706f7028297d3b647261774c617965723d28652c74293d3e7b696628322a742e69643c746869732e6e4c61796572297b6c657420693d746869732e6765744c61796572506f696e746c696e652874293b746869732e647261775761766528652c692c74292c746869732e647261775061747465726e28652c692c742c746869732e6843616e7661732f382c746869732e6843616e7661732f3630292c322a742e69642b313c746869732e6e4c617965722626746869732e6472617753747269706528652c692c74297d7d3b6765744c61796572506f696e746c696e653d653d3e7b6c65747b793a742c73686170653a697d3d652c733d5b5d2c613d746869732e74696d652e67657454696d6528292f283165332f3630293b6966282244454c54415f59223d3d692e6d6f6465297b6c657420653d4d0802637265617465566563746f7228302c74292c723d637265617465566563746f7228746869732e7743616e7661732c74293b666f72286c657420743d303b743c53616e6452656e64657265722e4e5f43555256455f504f494e543b742b2b297b6c657420683d742f2853616e6452656e64657265722e4e5f43555256455f504f494e542d31292c6e3d652e636f707928292c7b783a6f2c793a6c7d3d566563746f722e6c657270286e2c722c68293b6c2b3d692e64656c74615928682c612f35292c732e7075736828637265617465566563746f72286f2c6c29297d7d656c736520733d5b73746172742c656e645d3b72657475726e20737d3b64726177576176653d28652c742c69293d3e7b6c65747b633a737d3d693b652e6e6f5374726f6b6528292c652e66696c6c28636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f417272617928732929292c652e626567696e536861706528292c652e76657274657828302c746869732e6843616e766173293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782c745b695d2e79293b652e76657274657828746869732e7743616e7661732c746869732e6843616e766173292c652e656e64536861706528297d3b647261775061747465726e3d28652c742c692c732c61293d3e7b652e6e6f5374726f6b6528293b666f72286c65744d080220693d613b693c3d733b692b3d61297b6c657420613d6d61702828692d31292f28732d31292c302c312c2e322c30293b652e66696c6c28302c3235352a61292c652e626567696e536861706528293b666f72286c657420733d303b733c742e6c656e6774683b732b2b29652e76657274657828745b735d2e782c745b735d2e792b69293b666f72286c657420733d742e6c656e6774682d313b733e3d303b732d2d29652e76657274657828745b735d2e782c745b735d2e792b28692d3129293b652e656e64536861706528297d7d3b647261775374726970653d28652c742c69293d3e7b6c65747b633a732c7374726970653a7b64697374616e63653a612c6865696768743a722c737472657463683a682c636f6c6f725472616e73666f726d3a6e7d7d3d693b652e6e6f5374726f6b6528293b6c6574206f3d6e2873292c6c3d636f6c6f72282e2e2e436f6c6f722e6368726f6d61546f4172726179286f29292c643d732e616c70686128293b6c2e736574416c706861283235352a64292c652e66696c6c286c292c652e626567696e536861706528293b666f72286c657420693d303b693c742e6c656e6774683b692b2b29652e76657274657828745b695d2e782a682c745b695d2e792b61293b666f72286c657420693d742e6c656e6774682d313b693e3d303b692d2d29652e76657274657828745b695d2e782a682c745b695d2e792b614d08022b72293b652e656e64536861706528297d7d6e65772051352822676c6f62616c22293b6c6574207743616e7661732c6843616e7661732c63616e7661732c74696d65436f6e74726f6c6c65722c686f7572676c6173732c6c617965724261636b67726f756e642c6c6179657253616e64546f702c6c6179657253616e64426f74746f6d2c6c61796572486f7572676c6173732c72656e4261636b67726f756e642c72656e53616e64546f702c72656e53616e64426f74746f6d2c72656e486f7572676c6173732c72656e506f737450726f63657373696e672c7472616974732c7072657653706565642c73686f774d6f64652c63757272656e7454696d652c6d61784670733d36303b73657475703d28293d3e7b736574757052616e646f6d28292c736574757054726169747328292c7365747570536b6574636828297d2c736574757052616e646f6d3d28293d3e7b6c657420653d7035736565643b72616e646f6d536565642865292c6e6f697365536565642865297d2c73657475705472616974733d28293d3e7b6c657420653d67657452616e646f6d496e7428312c3130292c743d67657452616e646f6d4974656d285b5b486f7572676c61737353697a652e4d454449554d2c37305d2c5b486f7572676c61737353697a652e4c415247452c33305d5d292c693d67657452616e646f6d4974656d285b5b576176654865696768742e53484d08024f52542c315d2c5b576176654865696768742e4d454449554d2c315d2c5b576176654865696768742e54414c4c2c315d5d292c733d67657452616e646f6d4974656d285b5b57617665506572696f642e53484f52542c315d2c5b57617665506572696f642e4d454449554d2c315d2c5b57617665506572696f642e4c4f4e472c315d5d292c613d67657452616e646f6d4974656d285b5b5761766553706565642e534c4f572c315d2c5b5761766553706565642e4d454449554d2c315d2c5b5761766553706565642e464153542c315d5d292c723d67657452616e646f6d4974656d285b5b45766f6c7665506572696f642e484f55524c592c36305d2c5b45766f6c7665506572696f642e4441494c592c33355d2c5b45766f6c7665506572696f642e4d4f4e54484c592c355d5d292c683d67657452616e646f6d4974656d285b5b312c355d2c5b322c32305d2c5b332c35305d2c5b342c32305d2c5b352c355d5d292c6e3d6765745061747465726e4f7264657228292c6f3d67657452616e646f6d4974656d28416e67656c4e756d6265722e6d61702828653d3e5b655b305d2c315d2929292c6c3d67657452616e646f6d4974656d28426c6973734c696d69742e6d61702828653d3e5b655b305d2c655b325d5d2929293b7472616974733d7b776176654865696768743a692c77617665506572696f643a732c7761766553706565643a612c4d080265766f6c7665506572696f643a722c636f6c6f723a652c686f7572676c61737353697a653a742c706f6c793a682c7061747465726e4f726465723a6e2c616e67656c4e756d6265723a6f2c626c6973734c696d69743a6c7d2c636f6e736f6c652e6c6f6728747261697473297d2c6765745061747465726e4f726465723d28293d3e7b6c657420653d5b5d2c743d5b312c322c332c345d2c693d67657452616e646f6d4974656d285b5b312c2e365d2c5b322c2e315d2c5b332c2e31355d2c5b342c2e31355d5d293b652e707573682869292c7061747465726e43686f73656e3d742e696e6465784f662869292c783d742e73706c696365287061747465726e43686f73656e2c31293b666f72286c657420733d303b733c333b732b2b29693d72616e646f6d2874292c652e707573682869292c7061747465726e43686f73656e3d742e696e6465784f662869292c783d742e73706c696365287061747465726e43686f73656e2c31293b72657475726e20657d2c7365747570536b657463683d28293d3e7b6672616d6552617465286d6178467073292c6672616d65436f756e743d302c7743616e7661733d77696e646f7757696474682c6843616e7661733d77696e646f774865696768742c63616e7661733d63726561746543616e766173287743616e7661732c6843616e766173292c73686f774d6f64653d302c74696d65436f6e74726f4d08026c6c65723d6e65772054696d65436f6e74726f6c6c657228747261697473292c686f7572676c6173733d6e657720486f7572676c617373287472616974732c74696d65436f6e74726f6c6c6572293b6c657420653d67657452616e646f6d496e7428302c333631292c743d67657452616e646f6d496e742833302c313031292c693d67657452616e646f6d496e742835302c313031293b436f6c6f722e736574436f6c6f724d6f6465287472616974732e636f6c6f72292c6c617965724261636b67726f756e643d6372656174654772617068696373287743616e7661732c6843616e766173292c72656e4261636b67726f756e643d6e6577204261636b67726f756e6452656e6465726572286c617965724261636b67726f756e642c652c742c692c7472616974732c74696d65436f6e74726f6c6c6572292c6c61796572486f7572676c6173733d6372656174654772617068696373287743616e7661732c6843616e766173292c72656e486f7572676c6173733d6e657720486f7572676c61737352656e6465726572286c61796572486f7572676c6173732c7472616974732c74696d65436f6e74726f6c6c6572293b6c657420733d72656e486f7572676c6173732e67657453616e645265637473287743616e7661732c6843616e766173292c613d72656e486f7572676c6173732e676574546f704c696e6528292c723d72656e486f75724d0802676c6173732e676574426f74746f6d4c696e6528292c683d637265617465566563746f7228735b305d5b325d2c735b305d5b335d292e6d616728293b6c6179657253616e64546f703d637265617465477261706869637328682c68292c6c6179657253616e64426f74746f6d3d637265617465477261706869637328682c68292c72656e53616e64546f703d6e65772053616e6452656e6465726572286c6179657253616e64546f702c735b305d5b335d2c612c652c742c692c7472616974732c74696d65436f6e74726f6c6c6572292c72656e53616e64426f74746f6d3d6e65772053616e6452656e6465726572286c6179657253616e64426f74746f6d2c735b305d5b335d2c722c652c742c692c7472616974732c74696d65436f6e74726f6c6c6572292c696d6753616e64546f703d6372656174654772617068696373287743616e7661732c6843616e766173292c696d6753616e64426f74746f6d3d6372656174654772617068696373287743616e7661732c6843616e766173292c72656e506f737450726f63657373696e673d6e657720506f737450726f63657373696e67287743616e7661732c6843616e7661732c747261697473292c477261696e52656e64657265722e7365747570287743616e7661732c6843616e766173292c7072657653706565643d317d2c647261773d28293d3e7b6c657420653d303d3d73686f774d6f4d080264657c7c313d3d73686f774d6f64652c743d303d3d73686f774d6f64657c7c323d3d73686f774d6f64652c7b74696d653a692c73746174653a732c73706565643a612c7061757365643a722c69734c6976653a682c7265616c44656c74613a6e7d3d74696d65436f6e74726f6c6c65722e7374657028293b686f7572676c6173732e7570646174652869292c72656e53616e64546f702e7570646174652869292c72656e53616e64426f74746f6d2e7570646174652869292c72656e4261636b67726f756e642e7570646174652869293b6c6574206f3d343d3d733f313a302c7b746f703a6c2c726f746174696f6e3a642c666c69707065643a6d2c74696d6553696e6365526f746174696f6e3a707d3d686f7572676c6173732e676574537461746528293b72656e486f7572676c6173732e75706461746528692c64293b6c657420673d72656e53616e64546f702e6765744368726f6d6128292c633d72656e53616e64546f702e6765744261736548534c28293b6966286261636b67726f756e6428323535292c72656e4261636b67726f756e642e64726177286c617965724261636b67726f756e642c692c732c632c65292c696d616765286c617965724261636b67726f756e642c302c30292c74297b6c657420653d72656e486f7572676c6173732e67657453616e64526563747328293b72656e486f7572676c6173732e64726177286c4d080261796572486f7572676c6173732c6f2c67292c72656e53616e64546f702e64726177286c6179657253616e64546f702c72656e486f7572676c6173732e676574546f704c696e6528292c312d6c2c216d2c70292c72656e53616e64426f74746f6d2e64726177286c6179657253616e64426f74746f6d2c72656e486f7572676c6173732e676574426f74746f6d4c696e6528292c6c2c6d2c70292c696d616765286c6179657253616e64546f702c2e2e2e655b305d2c286c6179657253616e64546f702e77696474682d655b305d5b325d292f322c302c655b305d5b325d2c655b305d5b335d292c696d616765286c6179657253616e64426f74746f6d2c2e2e2e655b315d2c286c6179657253616e64426f74746f6d2e77696474682d655b315d5b325d292f322c302c655b315d5b325d2c655b315d5b335d292c696d616765286c61796572486f7572676c6173732c302c30297d6c657420753d72656e486f7572676c6173732e6765745365636f6e645469636b656428293b477261696e52656e64657265722e6170706c79477261696e546f4d61696e43616e7661732875292c72656e506f737450726f63657373696e672e75706461746546696c74657228612c722c68292c7072657653706565643d612c72656e506f737450726f63657373696e672e6170706c79546f4d61696e43616e76617328292c63757272656e7454696d653d697d4d08022c6b6579507265737365643d28293d3e7b222b22213d6b65792626223d22213d6b65797c7c74696d65436f6e74726f6c6c65722e736574466173746572537065656428292c222d223d3d6b6579262674696d65436f6e74726f6c6c65722e736574536c6f776572537065656428292c6b6579436f64653d3d4c4546545f4152524f57262674696d65436f6e74726f6c6c65722e6a756d704261636b7761726428292c6b6579436f64653d3d52494748545f4152524f57262674696d65436f6e74726f6c6c65722e6a756d70466f727761726428292c6b6579436f64653d3d455343415045262674696d65436f6e74726f6c6c65722e726573756d654c69766528292c2220223d3d6b6579262674696d65436f6e74726f6c6c65722e746f67676c65506175736528292c225422213d6b65792626227422213d6b65797c7c2873686f774d6f64653d2873686f774d6f64652b31292533292c225322213d6b65792626227322213d6b65797c7c7361766543616e766173417443757272656e7454696d6528297d2c7361766543616e766173417443757272656e7454696d653d28293d3e7b6c657420653d36302a6e657720446174652863757272656e7454696d65292e67657454696d657a6f6e654f666673657428292a3165332c743d6e657720446174652863757272656e7454696d652d65292e746f49534f537472696e6728292e736c696365284d0802302c2d31293b7361766528742b222e706e6722297d3b636f6e73742045766f6c7665506572696f643d7b484f55524c593a22484f55524c59222c4441494c593a224441494c59222c4d4f4e54484c593a224d4f4e54484c59227d2c416e67656c4e756d6265723d5b5b2231312f3131312f31313131222c5b22313a31222c22313a3131222c2231313a31222c2231313a3131225d2c5b22312f31222c2231312f31222c22312f3131222c2231312f3131225d5d2c5b2232322f3232322f32323232222c5b22323a32222c22323a3232222c2232323a32222c2232323a3232225d2c5b22322f32222c2232322f32225d5d2c5b2233332f3333332f33333333222c5b22333a33222c22333a3333225d2c5b22332f33225d5d2c5b2234342f3434342f34343434222c5b22343a34222c22343a3434225d2c5b22342f34225d5d2c5b2235352f3535352f353535222c5b22353a35222c22353a3535225d2c5b22352f35225d5d2c5b2236362f3636362f36363636222c5b22363a36225d2c5b22362f36225d5d2c5b2237372f3737372f37373737222c5b22373a37225d2c5b22372f37225d5d2c5b2238382f3838382f38383838222c5b22383a38225d2c5b22382f38225d5d2c5b2239392f3939392f39393939222c5b22393a39225d2c5b22392f39225d5d2c5b2231323132222c5b2231323a3132225d2c5b2231322f3132225d5d2c5b223339392f4d0802333339222c5b22333a3339225d2c5b22332f33222c22392f33222c22332f39222c22392f39225d5d2c5b2238332f38383333222c5b22383a33225d2c5b22382f33222c22332f38225d5d2c5b2237322f37373232222c5b22373a32225d2c5b22372f32222c22322f37225d5d2c5b223633332f36333633222c5b22363a33222c22363a3333225d2c5b22362f33222c22332f36225d5d2c5b22353838222c5b22353a38222c22383a3538225d2c5b22382f35222c22352f38222c22382f38225d5d2c5b223434362f34363436222c5b22343a36222c22343a3436225d2c5b22342f34222c22362f34222c22342f36225d5d2c5b22303030222c5b5d2c5b5d5d2c5b2231303130222c5b2231303a3130225d2c5b2231302f3130225d5d2c5b2231303137222c5b2231303a3137222c2231373a3130225d2c5b2231372f3130225d5d2c5b2231303232222c5b2231303a3232222c2232323a3130225d2c5b2232322f3130225d5d2c5b2231333133222c5b2231333a3133225d2c5b22312f33222c22332f31225d5d2c5b2231343434222c5b2231343a3434225d2c5b22342f31222c22312f34222c22342f34225d5d2c5b2232303230222c5b2232303a3230225d2c5b22322f32225d5d5d2c426c6973734c696d69743d5b5b22466f7265766572222c2d312c335d2c5b2232222c322c34305d2c5b2235222c352c33305d2c5b223130222c31302c324d0802305d2c5b223230222c32302c375d5d3b636c6173732054696d65436f6e74726f6c6c65727b636f6e7374727563746f722865297b746869732e7370656564733d5b2d333630302c2d36302c2d31302c2d332c312c332c31302c36302c333630305d2c746869732e64656661756c7453706565644c6576656c3d342c746869732e65766f6c7665506572696f643d652e65766f6c7665506572696f642c746869732e616e67656c4e756d6265723d652e616e67656c4e756d6265722c746869732e626c6973734c696d69743d652e626c6973734c696d69742c746869732e74696d657374616d703d446174652e6e6f7728292c746869732e707265765265616c54696d657374616d703d746869732e74696d657374616d702c746869732e7061757365643d21312c746869732e73706565644c6576656c3d746869732e64656661756c7453706565644c6576656c3b6c657420743d6e6577204461746528746869732e74696d657374616d70293b746869732e697465726174696f6e3d746869732e676574497465726174696f6e2874292c746869732e70726576426c6973733d746869732e67657450726576426c69737328742c31292c746869732e697465726174696f6e4368616e676548616e646c6572733d5b5d7d67657443757272656e74497465726174696f6e3d28293d3e746869732e697465726174696f6e3b676574497465726174694d08026f6e2865297b6c657420742c693d652e67657454696d6528292d36302a652e67657454696d657a6f6e654f666673657428292a3165333b72657475726e20746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e484f55524c593f743d666c6f6f7228692f33366535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4441494c593f743d666c6f6f7228692f3836346535293a746869732e65766f6c7665506572696f643d3d45766f6c7665506572696f642e4d4f4e54484c59262628743d31322a28652e67657446756c6c5965617228292d31393730292b652e6765744d6f6e74682829292c747d7265676973746572497465726174696f6e4368616e67654576656e742865297b746869732e697465726174696f6e4368616e676548616e646c6572732e707573682865297d756e7265676973746572497465726174696f6e4368616e67654576656e742865297b746869732e697465726174696f6e4368616e676548616e646c6572733d746869732e697465726174696f6e4368616e676548616e646c6572732e66696c7465722828743d3e74213d6529297d7374657028297b6c657420653d446174652e6e6f7728292c743d652d746869732e707265765265616c54696d657374616d702c693d746869732e7370656564735b746869732e73706565644c6576656c5d2c734d08023d746869732e7061757365643f303a693b746869732e74696d657374616d702b3d742a732c746869732e74696d657374616d703d746869732e6c696d697454696d657374616d7028746869732e74696d657374616d70293b6c657420613d6e6577204461746528746869732e74696d657374616d70292c723d746869732e676574537461746546726f6d54696d652861293b746869732e757064617465497465726174696f6e2861292c746869732e707265765265616c54696d657374616d703d653b6c657420683d746869732e74696d657374616d703d3d653b72657475726e7b74696d653a612c73746174653a722c73706565643a692c7061757365643a746869732e7061757365642c69734c6976653a682c7265616c44656c74613a747d7d757064617465497465726174696f6e2865297b6c657420743d746869732e676574497465726174696f6e2865293b74213d746869732e697465726174696f6e262628746869732e697465726174696f6e4368616e676548616e646c6572732e666f72456163682828653d3e6528742929292c746869732e697465726174696f6e3d74297d676574537461746546726f6d54696d652865297b6c657420742c692c733d652e676574486f75727328292c613d652e6765744d696e7574657328292c723d652e6765744461746528292c683d652e6765744d6f6e746828292b313b696628223030304d0802223d3d746869732e616e67656c4e756d62657229693d303d3d732626303d3d612c743d692626313d3d722626313d3d683b656c73657b6c657420653d60247b737d3a247b617d602c6e3d60247b687d2f247b727d602c6f3d416e67656c4e756d6265722e66696c7465722828653d3e655b305d3d3d746869732e616e67656c4e756d62657229295b305d3b693d6f5b315d2e696e636c756465732865292c743d6f5b325d2e696e636c75646573286e297d72657475726e20692626743f343a743f333a693f323a317d6c696d697454696d657374616d702865297b6c657420743d426c6973734c696d69742e66696c7465722828653d3e655b305d3d3d746869732e626c6973734c696d697429295b305d5b315d2c693d446174652e6e6f7728292c733d746869732e67657450726576426c697373286e657720446174652c74293b72657475726e20653e693f28653d692c746869732e726573657453706565642829293a653c73262628653d732c746869732e726573657453706565642829292c657d67657450726576426c69737328652c74297b6966282d313d3d742972657475726e20303b6c657420693d652e67657454696d6528292d652e6765744d696c6c697365636f6e647328292d3165332a652e6765745365636f6e647328293b666f72283b743e303b297b692d3d3665343b6c657420653d746869732e676574537461746546724d08026f6d54696d65286e65772044617465286929293b32213d65262634213d657c7c28742d3d31297d72657475726e20697d6765744e657874426c69737328652c74297b6966282d313d3d742972657475726e20446174652e6e6f7728293b6c657420693d652e67657454696d6528292d652e6765744d696c6c697365636f6e647328292d3165332a652e6765745365636f6e647328293b666f72283b743e303b297b692b3d3665343b6c657420653d746869732e676574537461746546726f6d54696d65286e65772044617465286929293b32213d65262634213d657c7c28742d3d31297d72657475726e20697d746f67676c65506175736528297b746869732e7061757365643d21746869732e7061757365647d736574466173746572537065656428297b746869732e73706565644c6576656c3d6d696e28746869732e73706565644c6576656c2b312c746869732e7370656564732e6c656e6774682d31292c746869732e7061757365643d21317d736574536c6f776572537065656428297b746869732e73706565644c6576656c3d6d617828746869732e73706565644c6576656c2d312c30292c746869732e7061757365643d21317d6a756d70466f727761726428297b6c657420653d6e6577204461746528746869732e74696d657374616d70293b746869732e74696d657374616d703d746869732e6765744e657874426c69737328654d7f012c31292c746869732e74696d657374616d703d746869732e6c696d697454696d657374616d7028746869732e74696d657374616d70292c746869732e7265736574537065656428297d6a756d704261636b7761726428297b6c657420653d6e6577204461746528746869732e74696d657374616d70293b746869732e74696d657374616d703d746869732e67657450726576426c69737328652c31292c746869732e74696d657374616d703d746869732e6c696d697454696d657374616d7028746869732e74696d657374616d70292c746869732e7265736574537065656428297d7265736574537065656428297b746869732e73706565644c6576656c3d746869732e64656661756c7453706565644c6576656c2c746869732e7061757365643d21317d726573756d654c69766528297b746869732e74696d657374616d703d446174652e6e6f7728292c746869732e7265736574537065656428297d7d0a202020203c2f7363726970743e0a20203c2f626f64793e0a3c2f68746d6c3e68 #2utf8�/���걤��,{{9
�Y��m���`�WC̒��/���걤��,{{9
�Y��m���`�WC̒�ascii@/xj1$?,{{9
cYDm59`oWCL?@/xj1$?,{{9
cYDm59`oWCL?hexc02f999ff8eab1a4bf972c7b0f7b12390ae35997c46d85b5b960ef045743cc92bfc02f999ff8eab1a4bf972c7b0f7b12390ae35997c46d85b5b960ef045743cc92bf |
|---|