1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9556],{5313:(e,n,r)=>{r.d(n,{default:()=>i});var t=r(95155),o=r(12115);let i=()=>{let e=(0,o.useRef)(null),n=(0,o.useRef)(null),r=(0,o.useRef)(null),i=(0,o.useRef)(null),a=(0,o.useRef)({x:0,y:0,tX:0,tY:0}),l=(e,n,r)=>{let t=e.createShader(r);return(e.shaderSource(t,n),e.compileShader(t),e.getShaderParameter(t,e.COMPILE_STATUS))?t:(console.error("An error occurred compiling the shaders: "+e.getShaderInfoLog(t)),e.deleteShader(t),null)},c=(e,n,r)=>{let t=e.createProgram();return(e.attachShader(t,n),e.attachShader(t,r),e.linkProgram(t),e.getProgramParameter(t,e.LINK_STATUS))?t:(console.error("Unable to initialize the shader program: "+e.getProgramInfoLog(t)),null)},u=(e,n)=>{let r=[],t=e.getProgramParameter(n,e.ACTIVE_UNIFORMS);for(let o=0;o<t;o++){let t=e.getActiveUniform(n,o).name;r[t]=e.getUniformLocation(n,t)}return r},s=()=>{let n=e.current,r=n.getContext("webgl")||n.getContext("experimental-webgl");if(!r)return alert("WebGL is not supported by your browser."),null;let t=l(r,"\n precision mediump float;\n\n varying vec2 vUv;\n attribute vec2 a_position;\n\n void main() {\n vUv = .5 * (a_position + 1.);\n gl_Position = vec4(a_position, 0.0, 1.0);\n }\n ",r.VERTEX_SHADER),o=l(r,"\n precision mediump float;\n\n varying vec2 vUv;\n uniform float u_time;\n uniform float u_ratio;\n uniform vec2 u_pointer_position;\n uniform float u_scroll_progress;\n\n vec2 rotate(vec2 uv, float th) {\n return mat2(cos(th), sin(th), -sin(th), cos(th)) * uv;\n }\n\n float neuro_shape(vec2 uv, float t, float p) {\n vec2 sine_acc = vec2(0.);\n vec2 res = vec2(0.);\n float scale = 8.;\n\n for (int j = 0; j < 15; j++) {\n uv = rotate(uv, 1.);\n sine_acc = rotate(sine_acc, 1.);\n vec2 layer = uv * scale + float(j) + sine_acc - t;\n sine_acc += sin(layer) + 2.4 * p;\n res += (.5 + .5 * cos(layer)) / scale;\n scale *= (1.2);\n }\n return res.x + res.y;\n }\n\n void main() {\n vec2 uv = .5 * vUv;\n uv.x *= u_ratio;\n\n vec2 pointer = vUv - u_pointer_position;\n pointer.x *= u_ratio;\n float p = clamp(length(pointer), 0., 1.);\n p = .5 * pow(1. - p, 2.);\n\n float t = .001 * u_time;\n vec3 color = vec3(0.);\n\n float noise = neuro_shape(uv, t, p);\n\n noise = 1.2 * pow(noise, 3.);\n noise += pow(noise, 10.);\n noise = max(.0, noise - .5);\n noise *= (1. - length(vUv - .5));\n\n // Blue/indigo color palette\n color = vec3(0.1, 0.2, 0.8); // Base blue color\n color += vec3(0.0, 0.1, 0.4) * sin(3.0 * u_scroll_progress + 1.5); // Indigo variation\n\n color = color * noise;\n\n gl_FragColor = vec4(color, noise);\n }\n ",r.FRAGMENT_SHADER),a=c(r,t,o);i.current=u(r,a);let s=new Float32Array([-1,-1,1,-1,-1,1,1,1]),v=r.createBuffer();r.bindBuffer(r.ARRAY_BUFFER,v),r.bufferData(r.ARRAY_BUFFER,s,r.STATIC_DRAW),r.useProgram(a);let f=r.getAttribLocation(a,"a_position");return r.enableVertexAttribArray(f),r.bindBuffer(r.ARRAY_BUFFER,v),r.vertexAttribPointer(f,2,r.FLOAT,!1,0,0),r},v=()=>{let n=e.current,t=r.current;if(!n||!t)return;let o=Math.min(window.devicePixelRatio,2);n.width=window.innerWidth*o,n.height=window.innerHeight*o,t.uniform1f(i.current.u_ratio,n.width/n.height),t.viewport(0,0,n.width,n.height)},f=()=>{let e=r.current,t=i.current,o=a.current;if(!e||!t)return;let l=performance.now();o.x+=(o.tX-o.x)*.2,o.y+=(o.tY-o.y)*.2,e.uniform1f(t.u_time,l),e.uniform2f(t.u_pointer_position,o.x/window.innerWidth,1-o.y/window.innerHeight),e.uniform1f(t.u_scroll_progress,window.pageYOffset/(2*window.innerHeight)),e.drawArrays(e.TRIANGLE_STRIP,0,4),n.current=requestAnimationFrame(f)},d=(e,n)=>{a.current.tX=e,a.current.tY=n},m=e=>{d(e.clientX,e.clientY)},h=e=>{d(e.touches[0].clientX,e.touches[0].clientY)},p=e=>{d(e.clientX,e.clientY)};return(0,o.useEffect)(()=>{r.current=s(),v(),f();let e=()=>{v()};return window.addEventListener("resize",e),window.addEventListener("pointermove",m),window.addEventListener("touchmove",h),window.addEventListener("click",p),()=>{n.current&&cancelAnimationFrame(n.current),window.removeEventListener("resize",e),window.removeEventListener("pointermove",m),window.removeEventListener("touchmove",h),window.removeEventListener("click",p)}},[]),(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("canvas",{ref:e,className:"absolute top-0 left-0 w-full h-full pointer-events-none opacity-95",
1style:{backgroundColor:"#000000"}})})}},89556:(e,n,r)=>{r.r(n),r.d(n,{default:()=>i});var t=r(95155);r(12115);var o=r(5313);let i=function(){return(0,t.jsx)("div",{className:"absolute w-full h-full overflow-hidden",children:(0,t.jsx)(o.default,{})})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.