0xf7d96d2d…484dsent to0xd8b7cc75…bde6·#13,366,117·view on Etherscan
<!doctype html><html lang=en><meta charset=UTF-8><meta name=viewport content="width=device-width,shrink-to-fit=0,user-scalable=no,minimum-scale=1,maximum-scale=1"><title>Blóm</title><style>html{width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; flex-direction: column}body{width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; flex-direction: row; margin: 0}canvas{margin: auto; display: block; box-shadow: 0 2px 12px -2px rgba(0, 0, 0, .15)}</style><body> <script>window.hash="{{hash}}" !function (){return function e(t, r, a){function s(i, o){if (!r[i]){if (!t[i]){var l="function"==typeof require && require; if (!o && l) return l(i, !0); if (n) return n(i, !0); var d=new Error("Cannot find module '" + i + "'"); throw d.code="MODULE_NOT_FOUND", d}var c=r[i]={exports:{}}; t[i][0].call(c.exports, function (e){return s(t[i][1][e] || e)}, c, c.exports, e, t, r, a)}return r[i].exports}for (var n="function"==typeof require && require, i=0; i < a.length; i++)s(a[i]); return s}}()({1: [function (e, t, r){"use strict"; var a=d(e("./PRNG")), s=d(e("./Noise")), n=d(e("./BGRenderer")), i=d(e("./BWRenderer")), o=d(e("./Particle")), l=d(e("./Colors")); function d(e){return e && e.__esModule ? e :{default: e}}let c=!1; const u=window.hash || function (){let e="0x"; for (var t=0; t < 64; t++)e +=Math.floor(16 * Math.random()).toString(16); return e}(Math.round(100 * Math.random())); let h=parseInt(u.slice(0, 16), 16); var m=document.createElement("canvas"), f=m.getContext("2d"), p={w: window ? window.innerWidth : 2e3, h: window ? window.innerHeight : 2e3}; p.min=Math.min(p.w, p.h), p.max=Math.max(p.w, p.h); var g=4e3, R=document.createElement("canvas"), b=R.getContext("2d"); R.width=R.height=g; var x=document.createElement("canvas"); x.width=x.height=g; var M=x.getContext("2d"), w=document.createElement("canvas"), v=w.getContext("2d"); w.width=w.height=g; const y=document.createElement("a"); var S, C, _={}; _.mx=p.w / 2, _.my=p.h / 2; var F, P=0, H=1, T=500, A=100, I=1; let q=[]; const N=new n.default(g); let k=new i.default(g); const B=(e, t, r)=> Math.min(r, Math.max(t, e)), L=(e, t, r, a, s, n)=>{const i=(e - t) / (r - t) * (s - a) + a; return n ? a < s ? B(i, a, s) : B(i, s, a) : i}, D=(e, t, r)=> e + (t - e) * r, E=e=> Math.sin(e * Math.PI / 2), $=({particle: e, i: t})=>{let r, a, s, n, i, o, l, d, c, u, h, m=360 / _.pC * Math.PI / 180, f=t / _.pC, p=H / A * _.frameIndexMod, g=_.sRadius + (_.eRadius - _.sRadius) * f; if (e.hasP() ? (r=e.gX(), a=e.gY()) : "blom"===_.preset || "innvortis"===_.preset || "mountain"===_.preset ? (r=2e3 + Math.cos(m * t) * _.radius, a=2e3 + Math.sin(m * t) * _.radius) : "fluidity"===_.preset ? (r=2e3 - Math.cos(2 * Math.PI * p) * g, a=2e3 - Math.sin(2 * Math.PI * p) * g) : "quarterCircle"===_.preset && (r=-Math.cos(m * t) * _.radius - 100, a=-Math.sin(m * t) * _.radius - 100), o=C.noise(s=r * _.resonance * _.architecture, n=a * _.resonance * _.architecture, i=H / _.temporalDisplacement * 10) * _.amp, l=C.noise(n, s, i) * _.amp, d=L(o, 0, 1, -1, 1) * _.mod, c=L(l, 0, 1, -1, 1) * _.mod, "blom"===_.preset || "innvortis"===_.preset) u=2e3 + d * Math.cos(m * (t + i) + _.rotation) * _.velocity * _.radius, h=2e3 + c * Math.sin(m * (t + i) + _.rotation) * _.velocity * _.radius; else if ("fluidity"===_.preset){let e=15e3 * o * f, t=15e3 * l * f; u=2e3 + Math.cos(p * Math.PI * 2) * (e - 250) + Math.cos(p * Math.PI * 2) * (e + 1e3), h=2e3 + Math.sin(p * Math.PI * 2) * (t - 250) + Math.sin(p * Math.PI * 2) * (t + 1e3)}else "mountain"===_.preset ? (u=2e3 + Math.cos(m * (t + i) + _.rotation) * d * _.radius, h=100 + 3800 * B(Math.abs(c), 0, 2) * p) : "quarterCircle"===_.preset && (u=-d * Math.cos(m * (t + i) + _.rotation) * _.radius - 100, h=-c * Math.sin(m * (t + i) + _.rotation) * _.radius - 100); return{x: u, y: h, fbm1: o, fbm2: l}}, O=()=>{(P +=T) > _.pC + T && (P=0, H +=1); const e=H / A; let t, r; _.resonance=D(_.sResonance, _.eResonance, e), _.freq=D(_.sFreq, _.eFreq, e), _.amp=D(_.sAmp, _.eAmp, e), _.temporalDisplacement=D(_.sTemporalDisplacement, _.eTemporalDisplacement, e), _.radius=D(_.sRadius, _.eRadius, E(e)), _.mod=D(_.sMod, _.eMod, e), _.hue=D(_.sHue, _.eHue, e), _.saturation=D(_.sSaturation, _.eSaturation, e), _.brightness=D(_.sBrightness, _.eBrightness, e), _.architecture=D(_.sArchitecture, _.eArchitecture, e), _.maxVelocity=Math.max(100, _.resonance / _.amp * _.temporalDisplacement * _.velocityFactor), C.noiseDetail(_.octaves, _.freq); for (let e, a=P; a < Math.min(_.pC, P + T); a++){const s=$({particle: e=F[a], i: a}); t=s.fbm1, r=s.fbm2, e.sP({x: s.x, y: s.y}), !c && s.x < 800 && (c=!0)}t && r && (_.rotation +=(t + r) * _.rotationRate * _.amp)}, G=(e=0)=>{if (!e && (H < 2 || !I)) return void ((P +=T) > _.pC + T && (P=0, H +=1)); const t=H / A * _.frameIndexMod; if (!_.isComplete){for (var r, a=0; a < q.length; a++)(0 !==(r=q[a]) || _.skips.includes(H)) && (r.render({particles: F, frameRatio: t, ..._}), b.clearRect(0, 0, g, g), b.drawImage(r.canvas, 0, 0, g, g, (1 - r.outputScale) / 2 * g, (1 - r.outputScale) / 2 * g, g * r.outputScale, g * r.outputScale)); v.drawImage(R, 0, 0, g, g, (1 - r.outputScale) / 2 * g, (1 - r.outputScale) / 2 * g, g * r.outputScale, g * r.outputScale)}if (1===_.zoom){const e=(p.w - p.min) / 2, t=(p.h - p.min) / 2; let r=L(_.mx - e, 0, p.w - 2 * e, 0, 8e3 / 3), a=L(_.my - t, 0, p.h - 2 * t, 0, 8e3 / 3); r=B(r, e, 8e3 / 3), a=B(a, t, 8e3 / 3), f.drawImage(w, r, a, g / 3, g / 3, 0, 0, p.min, p.min)}else if (e || t < 1 || 1===t && !_.isComplete){let e=E(t), r=0; e=(1 - e) * p.min * 1.02, "fluidity"===_.preset && (e=0), "mountain"===_.preset && (r=e), f.drawImage(w, 0, 0, g, g, -e, -e + r, p.min + 2 * e, p.min + 2 * e)}}, W=()=>{if (I && H < A && O(), G(), "blom"===_.preset && H===A && !_.isComplete && !c){var e=3 * Math.round(S.R(1, 4)); window.METADATA.Mirrored=e; for (var t, r=0; r < e; r++)t=r / e, M.save(), M.translate(2e3, 2e3), M.rotate(2 * Math.PI * t), M.drawImage(R, 0, 0, 2e3, 2e3), M.restore(); M.globalCompositeOperation="normal", b.drawImage(x, 0, 0, g, g, 0, 0, g, g), v.drawImage(R, 0, 0, g, g, 0, 0, g, g), f.drawImage(w, 0, 0, g, g, 0, 0, p.min, p.min)}H===A && (_.isComplete=1), window.requestAnimationFrame(W)}, j=()=>{y.setAttribute("download", `blom-gen.art-${_.seed}.png`), y.setAttribute("href", w.toDataURL("image/png", 1).replace("image/png", "image/octet-stream")), y.click()}; window.addEventListener("load", ()=>{m.width=p.min, m.height=p.min, document.getElementsByTagName("body")[0].appendChild(m), (e=>{f.clearRect(0, 0, m.width, m.height), v.clearRect(0, 0, m.width, m.height), e && (h=!e && params.get("seed") ? params.get("seed") : 1e9 * Math.random(), _.seed=h), (S=(0, a.default)()).randomSeed(h); for (var t=0; t < 1e4; t++)S.R(); (C=(0, s.default)()).noiseSeed(h), H=1, _.isComplete=0, _.seed=h, _.pC=1, F=[], c=!1, _.eBWR=1, _.octaves=2, _.freq=_.sFreq=S.R(1.5, 2.2), _.eFreq=S.R(1, 2), _.amp=_.sAmp=5 * S.R(.02, .09), _.eAmp=5 * S.R(.004, .01), _.temporalDisplacement=_.sTemporalDisplacement=S.R(250, 1250), _.eTemporalDisplacement=S.R(150, 250), _.resonance=_.sResonance=S.R(1e-4, .004), _.eResonance=S.R(1e-4, .004), _.radius=_.sRadius=800, _.eRadius=1800, _.mod=_.sMod=_.eMod=1, _.velocity=1, _.velocityFactor=50, _.reverse=0, _.architecture=_.sArchitecture=_.eArchitecture=1, _.angleHueShift=.2, _.pC=S.R() > .025 ? Math.round(S.R(100, 350)) : Math.round(25, 45), _.rotationRate=S.R() > .5 ? 1 : -1, _.rotation=0, _.frameIndexMod=1, _.preset="blom"; const r=S.R(); if (r < .7 ? _.preset="blom" : r < .85 ? _.preset="fluidity" : r < .95 ? _.preset="quarterCircle" : r < .98 ? _.preset="mountain" : r <=1 && (_.preset="innvortis"), "blom"===_.preset && (_.resonance=_.sResonance=S.R(1e-4, .002), _.eAmp=S.R(.04, .15), _.reverse=S.R() > .8, _.angleHueShift=S.R() > .9 ? S.R(.2, .5) : .15, _.reverse && (_.brightnessRange=10)), "innvortis"===_.preset && (_.resonance=_.sResonance=S.R(1e-4, .002), _.eAmp=.08, _.eResonance=.001, _.reverse=0, _.angleHueShift=S.R() > .8 ? S.R(.2, .5) : .1, _.sRadius=_.radius=500, _.eRadius=3200, _.velocityFactor=150, _.rotationRate=S.R(-.5, .5), _.brightnessRange=20), "fluidity"===_.preset && (_.octaves=2, _.radius=_.sRadius=S.R(300, 600), _.radius=_.sRadius=1e3, _.eRadius=2e3 - _.radius, _.freq=_.sFreq=S.R(1.5, 2.2), _.eFreq=S.R(1, 2), _.amp=_.sAmp=S.R(.01, .05), _.eAmp=S.R(.02, .05), _.resonance=_.sResonance=S.R(.001, .004), _.eResonance=S.R(.002, .004), _.velocityFactor=35, _.angleHueShift=S.R() > .8 ? S.R(.3, .5) : .2, _.reverse=S.R() > .8), "mountain"===_.preset && (_.pC=S.R(20, 300), _.mod=_.sMod=0, _.octaves=1, _.resonance=_.sResonance=_.eResonance=S.R(.01, .04), _.temporalDisplacement=_.sTemporalDisplacement=S.R(1250, 2500), _.eTemporalDisplacement=S.R(75, 500), _.rotationRate=1, _.sRadius=_.radius=0, _.eRadius=2e3, _.freq=_.sFreq=S.R(1.1, 3.4), _.eFreq=S.R(1.2, 5), _.amp=_.sAmp=S.R(1, 2), _.eAmp=S.R(.05, .12), _.architecture=_.sArchitecture=.001, _.eArchitecture=.125, _.velocityFactor=45, _.angleHueShift=.12), "quarterCircle"===_.preset && (_.pC=S.R(200, 500), _.radius=_.sRadius=2e3, _.eRadius=7200, _.freq=_.sFreq=S.R(.01, 1.7), _.eFreq=S.R(.01, .1), _.amp=_.sAmp=S.R(.1, .18), _.eAmp=S.R(.2, .3), _.resonance=_.sResonance=.001, _.eResonance=S.R(.003, .005), _.angleHueShift=.4, _.velocityFactor=70), _.reverse && (_.sRadius=_.eRadius, _.eRadius=_.radius, _.radius=_.eRadius), _.drawFromIndex=S.R() > .9 ? Math.round(S.R(0, _.pC / 3)) : 0, "quarterCircle"===_.preset && (_.drawFromIndex=Math.min(50, _.drawFromIndex)), _.drawToIndex=S.R() > .9 ? _.pC - Math.round(S.R(0, _.pC / 3)) : _.pC - 1, _.drawToIndex < _.drawFromIndex && (console.error("Bad draw indexing. Fixing..."), _.drawToIndex=_.pC), _.renderNth="quarterCircle" !==_.preset && S.R() > .98 ? Math.round(1 + 10 * S.R()) : 1, _.pC < 50 && (_.renderNth=1), T=Math.min(_.pC, 500), _.duration=S.R(2, 10) * _.pC / T, A=Math.floor(Math.max(50, 30 * _.duration)), _.skips=[], S.R() > .5 && "quarterCircle" !==_.preset){let e=0; for (e=5 + Math.round(10 * S.R()), t=0; t < e; t++){let e=Math.round(S.R() * A), t=e + Math.round(S.R() * (A - e) * .1); for (var n=e; n < t; n++)_.skips.push(n)}}C.noiseDetail(_.octaves, _.freq), _.randomColorFamily=Math.round(S.R(0, l.default.totalSets - 1)), _.theme=S.R() < .3 ? "huey" : "quilted", "innvortis"===_.preset && (_.theme="quilted"), _.randomHue=S.R(l.default.hues.fills), _.sHue=_.hue=_.randomHue[0], _.eHue=Math.min(360, _.sHue + S.R(8, 20) + (S.R() > .95 ? 10 : 0)), 25 < _.eHue < 50 && (_.eHue=_.hue - 20), _.sSaturation=_.randomHue[1], _.eSaturation=_.sSaturation + S.R(20), _.sBrightness=_.randomHue[2], _.brightnessRange=Math.min(90 - _.sBrightness, 25), _.eBrightness=Math.min(90, _.sBrightness + _.brightnessRange), _.drawLines=S.R() > .9, _.drawFills=S.R() < .85, _.drawGrid=S.R() < .25, _.drawNormals="fluidity" !==_.preset ? S.R() > .95 : 0, _.drawSwirls=S.R() > .65, _.varyingLineWidth=1, _.drawLines || _.drawSwirls || (_.drawFills=1), _.drawSwirls && (_.drawNormals=0), _.isMonochrome=4===_.randomHue.length && 1===_.randomHue[3], S.R() > .99 && (_.theme="pride", _.sHue=0, _.eHue=360), _.isMonochrome && (_.eBrightness=_.sBrightness, _.brightnessRange=10, _.angleHueShift=0), "huey" !==_.theme ? (_.brightnessRange=25, _.eBrightness=_.sBrightness + _.brightnessRange, _.colorChangeFrequency=S.R()) : _.colorChangeFrequency=0; for (let e, t, r=0; r < _.pC; r++)t=new o.default, e=$({particle: t, i: r}), t.sLP(e), t.sP(e), (!_.randomFill || S.R() > _.colorChangeFrequency) && (_.randomFill=l.default.random(_.randomColorFamily, "fills", S)), t.sC(_.randomFill), F.push(t); for (t=0; t < q.length; t++)q[t].ctx.clearRect(0, 0, g, g); q=[], k=new i.default(g), _.eBWR && q.push(k), _.bgColor=l.default.random(_.randomColorFamily, "bg", S), _.disableGradient=1, ("huey"===_.theme || "pride"===_.theme) && (_.bgColor=`hsl(${360 - _.sHue},${.2 * _.sSaturation}%,${_.sBrightness >=70 ? 15 : 90}%)`); N.render({color: _.bgColor, disableGradient: _.disableGradient, N: C, amp: _.amp}), v.drawImage(N.canvas, 0, 0, g, g), document.body.style.background=_.bgColor, I=1, _.isComplete=0, window.requestAnimationFrame(W); const d={}; d["Particle Count"]=_.pC < 50 ? "few" : "many", d["Total Frames"]=A, d.Preset=_.preset, d.Theme=_.theme, d.Reversed=_.reverse, d["Has Skips"]=0===!_.skips.length, d.Plotter=_.renderNth > 1, d["Draw Lines"]=_.drawLines, d["Draw Triangles"]=_.drawFills, d["Draw Squares"]=_.drawGrid, d["Draw Normals"]=_.drawNormals, d["Draw Swirls"]=_.drawSwirls, d.Mirrored=0, d["Color Family"]="huey"===_.theme ? `huey-${_.randomColorFamily}` : l.default.sets[_.randomColorFamily].name, window.METADATA=d})(), W()}), window.addEventListener("keydown", e=>{switch (e.key){case "o": console.log(_); break; case "s": j(); break; case "z": _.zoom=_.zoom ? 0 : 1, G(1); break; case "Escape": _.zoom=0, G(1)}}), window.addEventListener("mousemove", e=>{_.mx=e.pageX, _.my=e.pageY})},{"./BGRenderer": 2, "./BWRenderer": 3, "./Colors": 6, "./Noise": 7, "./PRNG": 8, "./Particle": 9}], 2: [function (e, t, r){"use strict"; Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0; var a=n(e("./ColorUtils")), s=n(e("./BaseRenderer")); function n(e){return e && e.__esModule ? e :{default: e}}r.default=class extends s.default{render({color: e="hsl(300,55%,90%)", disableGradient: t=!1, N: r, amp: s}={}){const n=this.bs / 2; var i=this.ctx.createRadialGradient(n, n, n / 2, n, n, n); let o=a.default.b(e, 10); i.addColorStop(0, o), i.addColorStop(1, e), this.ctx.fillStyle=t ? e : i, this.ctx.fillRect(0, 0, this.bs, this.bs); for (var l=0; l < this.bs / 25; l +=25){for (var d=0; d < this.bs / 25; d +=25){let e=r.noise(l * s, d * s); this.ctx.strokeStyle="hsla(0,0%,100%,.1)", this.ctx.save(), this.ctx.translate(25 * l + 5 * e, 25 * d + 5 * e), this.ctx.rotate(e), this.ctx.moveTo(0, 0), this.ctx.lineTo(5, 5), this.ctx.lineTo(0, 10), this.ctx.restore()}this.ctx.stroke()}}}},{"./BaseRenderer": 4, "./ColorUtils": 5}], 3: [function (e, t, r){"use strict"; Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0; var a=n(e("./ColorUtils")), s=n(e("./BaseRenderer")); function n(e){return e && e.__esModule ? e :{default: e}}r.default=class extends s.default{render({particles: e, drawFromIndex: t=0, drawToIndex: r=1e3, hue: s, saturation: n, brightness: i, brightnessRange: o, maxVelocity: l, angleHueShift: d=0, drawLines: c=0, drawFills: u=0, drawGrid: h=0, drawNormals: m=0, drawSwirls: f=0, renderNth: p=1, varyingLineWidth: g, theme: R}){const b=e.length; for (var x, M, w, v, y, S, C, _, F, P, H, T=t, A=Math.min(b, r); T < A; T++){if (T % p !=0) continue; S=e[T ? T - 1 : b - 1], M=(x=e[T]).gX(), w=x.gY(), v=x.gLP().x, y=x.gLP().y, C=S.gX(), _=S.gY(), F=x.gV(), P=x.gA(); let t=this.map(F, 0, l, i - o, i + o), r=s + P * d; "huey" !==R && (H=x.gC(), H=a.default.f(H), r=a.default.getHueFromHSL(H), n=a.default.getSatFromHSL(H), t=a.default.getBFromHSL(H) + F / l * o), H=`hsla(${r}, ${n}%, ${t=Math.min(90, Math.max(0, t))}%, ${Math.min(100, Math.max(10, 100 * (1 - F / l)))})`, m && (this.ctx.beginPath(), this.ctx.moveTo(M, w), this.ctx.lineTo(M + (_ - w) * Math.min(500, .005 * F), w + (C - M) * Math.min(500, .005 * F)), this.ctx.closePath(), this.ctx.strokeStyle=`hsla(${r}, ${n}%, ${t + 50}%, 0.5)`, this.ctx.strokeStyle=H, this.ctx.stroke()), (c || u || h) && (this.ctx.beginPath(), this.ctx.moveTo(M, w), this.ctx.lineTo(v, y), T && this.ctx.lineTo(C, _), h && (this.ctx.lineTo(C, _), this.ctx.lineTo(S.gLP().x, S.gLP().y)), this.ctx.closePath()), (u || h) && (this.ctx.fillStyle=H, this.ctx.fill()), c && (this.ctx.lineWidth=g ? Math.min(25, Math.max(2, .05 * F)) : 1, this.ctx.strokeStyle=`hsla(${r}, ${n}%, ${t - 50}%, 0.8)`, this.ctx.stroke()), f && (this.ctx.beginPath(), this.ctx.lineWidth=g ? Math.min(25, Math.max(2, .07 * F)) : 1, this.ctx.lineTo(M, w), this.ctx.lineTo(C, _), this.ctx.closePath(), this.ctx.strokeStyle=H, this.ctx.stroke())}}}},{"./BaseRenderer": 4, "./ColorUtils": 5}], 4: [function (e, t, r){"use strict"; Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0; var a; a=e("./ColorUtils"); r.default=class{constructor(e,{varyingWidth: t=0, outputScale: r=1, renderNth: a=1}={}){this.canvas=document.createElement("canvas"), this.canvas.height=e, this.canvas.width=e, this.ctx=this.canvas.getContext("2d"), this.bs=e, this.varyingWidth=t, this.outputScale=r, this.renderNth=a}map(e, t, r, a, s){return (e - t) / (r - t) * (s - a) + a}render({particles: e, drawFromIndex: t=0, drawToIndex: r=1e3, maxVelocity: a=100}){const s=e.length; for (var n, i, o, l, d, c, u, h=t; h < Math.min(s, r); h++)h % this.renderNth==0 && (c=e[h ? h - 1 : s - 1], i=(n=e[h]).gX(), o=n.gY(), l=n.gLP().x, d=n.gLP().y, c.gX(), c.gY(), u=n.gV(), n.gA(), this.ctx.beginPath(), this.ctx.moveTo(i, o), this.ctx.lineTo(l, d), this.ctx.closePath(), this.ctx.lineWidth=this.varyingWidth ? Math.min(25, Math.max(2, .05 * u)) : 1, this.ctx.strokeStyle="hsl(100, 100%, 100%)", this.ctx.stroke())}}},{"./ColorUtils": 5}], 5: [function (e, t, r){"use strict"; function a(e){let t=0, r=0, a=0; return 4==e.length ? (t="0x" + e[1] + e[1], r="0x" + e[2] + e[2], a="0x" + e[3] + e[3]) : 7==e.length && (t="0x" + e[1] + e[2], r="0x" + e[3] + e[4], a="0x" + e[5] + e[6]), [t, r, a]}function s(e){let t=e[0], r=e[1], a=e[2]; t=parseInt(t) / 255, r=parseInt(r) / 255, a=parseInt(a) / 255; let s=Math.min(t, r, a), n=Math.max(t, r, a), i=n - s, o=0, l=0, d=0; return o=0==i ? 0 : n==t ? (r - a) / i % 6 : n==r ? (a - t) / i + 2 : (t - r) / i + 4, (o=Math.round(60 * o)) < 0 && (o +=360), d=(n + s) / 2, "hsl(" + o + "," + (l=+(100 * (l=0==i ? 0 : i / (1 - Math.abs(2 * d - 1)))).toFixed(1)) + "%," + (d=+(100 * d).toFixed(1)) + "%)"}function n(e){return s(a(e))}Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0, r.default={rgbToHsl: s, hslToRgb: function (e, t, r){var a, s, n; if (0==t) a=s=n=r; else{function i(e, t, r){return r < 0 && (r +=1), r > 1 && (r -=1), r < 1 / 6 ? e + 6 * (t - e) * r : r < .5 ? t : r < 2 / 3 ? e + (t - e) * (2 / 3 - r) * 6 : e}var o=r < .5 ? r * (1 + t) : r + t - r * t, l=2 * r - o; a=i(l, o, e + 1 / 3), s=i(l, o, e), n=i(l, o, e - 1 / 3)}return [255 * a, 255 * s, 255 * n]}, hexToRGB: a, RGBToHex: function (e, t, r){return e=e.toString(16), t=t.toString(16), r=r.toString(16), 1==e.length && (e="0" + e), 1==t.length && (t="0" + t), 1==r.length && (r="0" + r), "#" + e + t + r}, hslToHex: function (e){let t=e.indexOf(",") > -1 ? "," : " ", r=(e=e.substr(4).split(")")[0].split(t))[0], a=e[1].substr(0, e[1].length - 1) / 100, s=e[2].substr(0, e[2].length - 1) / 100; r.indexOf("deg") > -1 ? r=r.substr(0, r.length - 3) : r.indexOf("rad") > -1 ? r=Math.round(r.substr(0, r.length - 3) * (180 / Math.PI)) : r.indexOf("turn") > -1 && (r=Math.round(360 * r.substr(0, r.length - 4))), r >=360 && (r %=360); let n=(1 - Math.abs(2 * s - 1)) * a, i=n * (1 - Math.abs(r / 60 % 2 - 1)), o=s - n / 2, l=0, d=0, c=0; return 0 <=r && r < 60 ? (l=n, d=i, c=0) : 60 <=r && r < 120 ? (l=i, d=n, c=0) : 120 <=r && r < 180 ? (l=0, d=n, c=i) : 180 <=r && r < 240 ? (l=0, d=i, c=n) : 240 <=r && r < 300 ? (l=i, d=0, c=n) : 300 <=r && r < 360 && (l=n, d=0, c=i), l=Math.round(255 * (l + o)).toString(16), d=Math.round(255 * (d + o)).toString(16), c=Math.round(255 * (c + o)).toString(16), 1==l.length && (l="0" + l), 1==d.length && (d="0" + d), 1==c.length && (c="0" + c), "#" + l + d + c}, b: function (e, t){0===e.indexOf("#") && (e=n(e)); let r=Number(e.split(",")[2].replace("%)", "")); r +=t; let a=e.split(","); return a[2]=`${r}%)`, a=a.join(",")}, rotateHue: function (e, t){let r=Number(e.split(",")[0].replace("hsl(", "")); r +=t, r %=360; let a=e.split(","); return a[0]=r, a=`hsl(${a.join(",")}`}, setHue: function (e, t){let r=Number(e.split(",")[0].replace("hsl(", "")); r=t, r %=360; let a=e.split(","); return a[0]=r, a=`hsl(${a.join(",")}`}, getHue: function (e){const t=s(a(e)); return Number(t.split(",")[0].replace("hsl(", ""))}, mixHsl: function (e, t, r){let a=Number(e.split(",")[0].replace("hsl(", "")), s=Number(e.split(",")[1].replace("%", "")), n=Number(e.split(",")[2].replace("%)", "")); return `hsl(${a + (Number(t.split(",")[0].replace("hsl(", "")) - a) * r},${s + (Number(t.split(",")[1].replace("%", "")) - s) * r}%,${n + (Number(t.split(",")[2].replace("%)", "")) - n) * r}%)`}, a: function (e, t){return `${e.replace(")", "")},${t})`}, getHueFromHSL: function (e){return Number(e.split(",")[0].replace("hsl(", ""))}, getSatFromHSL: function (e){return Number(e.split(",")[1].replace("%", ""))}, getBFromHSL: function (e){return Number(e.split(",")[2].replace("%)", ""))}, f: n}},{}], 6: [function (e, t, r){"use strict"; Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0; var a=(()=>{let e=[{name: "Golden Lion", bg: ["#023e8a", "#e41459"], fills: ["#e9cf8f", "#f4b56e", "#ef787e", "#ecb226", "#e58825", "#a78952", "#755928"], strokes: ["#f7a751", "#ef787e", "#fcf2d8"]},{name: "Taos", bg: ["#371f5c"], disableGradient: !0, fills: ["#6c3db8", "#4ea8de", "#5fbbce", "#cd6084", "#dfc24e", "#E5943E"], strokes: ["#72efdd"]},{name: "Dapper McFly", bg: ["#03045e", "#023e8a", "#0077b6", "#5E1103"], fills: ["#030303", "#03045e", "#023e8a", "#0077b6", "#0096c7", "#00b4d8", "#48cae4", "#90e0ef", "#ade8f4", "#caf0f8", "#B50058", "#C70074", "#D90091", "#E349B0"], strokes: ["#B50058"]},{name: "Fiesta", fills: ["#2a9d8f", "#e9c46a", "#f4a261", "#e76f51"], bg: ["#264653"]},{name: "Sunrise over river", fills: ["#f94144", "#f3722c", "#f8961e", "#f9844a", "#f9c74f", "#90be6d", "#43aa8b", "#4d908e", "#577590", "#277da1"], bg: ["#f94144"]},{name: "Souk", fills: ["#5f0f40", "#9a031e", "#fb8b24", "#e36414", "#0f4c5c"], bg: ["#5f0f40"]},{name: "Lichen", fills: ["#8cb369", "#f4e285", "#f4a259", "#5b8e7d", "#bc4b51"], bg: ["#bc4b51"]},{name: "Sweater weather", fills: ["#d81159", "#8f2d56", "#218380", "#fbb13c", "#73d2de"], bg: ["#023047"]},{name: "Jukebox", fills: ["#d7263d", "#f46036", "#2e294e", "#1b998b", "#c5d86d"], bg: ["#2e294e"]},{name: "Harvest", fills: ["#ed555d", "#fffcc9", "#41b797", "#eda126", "#7b5770"], strokes: ["#fffcc9"], bg: ["#2d1922"]},{name: "Lizard King", fills: ["#2A9D8F", "#eca351", "#e76f51", "#EC8197", "#f093dc"], strokes: ["#F5EB75"], bg: ["#264653"]}]; return{sets: e, random: (t, r, a)=>{let s; const n=e[t]; switch (r){case "bg": s=n.bg; break; case "fills": s=n.fills; break; case "strokes": s=n.strokes}return a.R(s)}, totalSets: e.length, hues:{fills: [[335, 97, 77], [311, 55, 74], [349, 24, 70], [296, 44, 40], [3, 56, 80], [8, 76, 73], [357, 72, 65], [3, 67, 81], [356, 55, 79], [180, 74, 75], [93, 44, 81], [149, 33, 40], [131, 47, 35], [165, 34, 53], [199, 43, 66], [163, 55, 39], [7, 61, 72], [7, 49, 47], [7, 59, 60], [24, 69, 76], [286, 21, 64], [350, 31, 70], [92, 42, 62], [68, 28, 37], [150, 35, 46], [132, 37, 51], [117, 31, 25], [114, 24, 46], [201, 46, 56], [114, 34, 41], [188, 34, 60], [259, 56, 29], [6, 28, 28], [37, 9, 21, 1], [8, 27, 31], [29, 67, 75], [341, 52, 80], [191, 40, 68], [269, 47, 73], [228, 11, 31], [256, 6, 28], [217, 10, 39], [189, 41, 66], [0, 0, 0, 1], [0, 0, 0]]}}})(); r.default=a},{}], 7: [function (e, t, r){"use strict"; Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0; r.default=(()=>{let e=4, t=.5; const r=e=> .5 * (1 - Math.cos(e * Math.PI)); let a; return{noise: function (s, n=0, i=0){if (null==a){a=new Array(4096); for (let e=0; e < 4096; e++)a[e]=Math.random()}s < 0 && (s=-s), n < 0 && (n=-n), i < 0 && (i=-i); let o, l, d, c, u, h=Math.floor(s), m=Math.floor(n), f=Math.floor(i), p=s - h, g=n - m, R=i - f, b=0, x=.5; for (let s=0; s < e; s++){let e=h + (m << 4) + (f << 8); o=r(p), l=r(g), d=a[4095 & e], d +=o * (a[e + 1 & 4095] - d), c=a[e + 16 & 4095], d +=l * ((c +=o * (a[e + 16 + 1 & 4095] - c)) - d), c=a[4095 & (e +=256)], c +=o * (a[e + 1 & 4095] - c), u=a[e + 16 & 4095], c +=l * ((u +=o * (a[e + 16 + 1 & 4095] - u)) - c), b +=(d +=r(R) * (c - d)) * x, x *=t, h <<=1, m <<=1, f <<=1, (p *=2) >=1 && (h++, p--), (g *=2) >=1 && (m++, g--), (R *=2) >=1 && (f++, R--)}return b}, noiseDetail: function (r, a){r > 0 && (e=r), a > 0 && (t=a)}, noiseSeed: function (e){const t=(()=>{const e=4294967296; let t, r; return{setSeed(a){r=t=(null==a ? Math.random() * e : a) >>> 0}, getSeed: ()=> t, rand: ()=> (r=(1664525 * r + 1013904223) % e) / e}})(); t.setSeed(e), a=new Array(4096); for (let e=0; e < 4096; e++)a[e]=t.rand()}}})},{}], 8: [function (e, t, r){"use strict"; Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0; r.default=(()=>{const e=4294967296; const t=function (e, t){let r; if (r=null !=this._lcg_random_state ? this._lcg("_lcg_random_state") : Math.random(), void 0===e) return r; if (void 0===t) return e instanceof Array ? e[Math.floor(r * e.length)] : r * e; if (e > t){const r=e; e=t, t=r}return r * (t - e) + e}; return{R: t, random: t, randomSeed: function (e){this._lcgSetSeed("_lcg_random_state", e), this._gaussian_previous=!1}, _lcgSetSeed: function (t, r){this[t]=(null==r ? Math.random() * e : r) >>> 0}, _lcg: function (t){return this[t]=(1664525 * this[t] + 1013904223) % e, this[t] / e}}})},{}], 9: [function (e, t, r){"use strict"; Object.defineProperty(r, "__esModule",{value: !0}), r.default=void 0; r.default=class{constructor(){}sC(e){this._c=e}gC(){return `${this._c}`}sP(e){this._lp={...this._p}, this._p={...e}}gP(){return{...this._p}}hasP(){return this.hasOwnProperty("_p")}sLP(e){this._lp=e}gLP(){return{...this._lp}}gX(){return this._p.x}gY(){return this._p.y}gV(){return Math.sqrt(Math.pow(this._p.y - this._lp.y, 2) + Math.pow(this._p.x - this._lp.x, 2))}gA(){return Math.atan2(this._p.y - this._lp.y, this._p.x - this._lp.x) * (180 / Math.PI) + 180}}},{}], 10: [function (e, t, r){(function (e){(function (){e.CANVAS_SKETCH_DEFAULT_STORAGE_KEY=window.location.href}).call(this)}).call(this, "undefined" !=typeof global ? global : "undefined" !=typeof self ? self : "undefined" !=typeof window ? window :{})},{}]},{}, [1, 10]); </script>VanillaJS