UNPKG

tsparticles

Version:

Easily create highly customizable particle animations and use them as animated backgrounds for your website. Ready to use components available also for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.

2 lines 173 kB
/*! tsParticles v1.34.1 by Matteo Bruni */ !function(t,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var e=i();for(var o in e)("object"==typeof exports?exports:t)[o]=e[o]}}(this,(function(){return(()=>{"use strict";var t={d:(i,e)=>{for(var o in e)t.o(e,o)&&!t.o(i,o)&&Object.defineProperty(i,o,{enumerable:!0,get:e[o]})},o:(t,i)=>Object.prototype.hasOwnProperty.call(t,i),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},i={};t.r(i),t.d(i,{AbsorberClickMode:()=>xo,AlterType:()=>g,AnimationStatus:()=>b,CanvasUtils:()=>n,Circle:()=>ti,CircleWarp:()=>ei,ClickMode:()=>d,CollisionMode:()=>v,ColorUtils:()=>s,Constants:()=>ht,Container:()=>fo,DestroyMode:()=>h,DestroyType:()=>w,DivMode:()=>u,DivType:()=>z,EasingType:()=>C,EmitterClickMode:()=>Fo,EmitterShapeType:()=>Ho,ExternalInteractorBase:()=>Ns,GradientType:()=>x,HoverMode:()=>p,InlineArrangement:()=>qo,InteractivityDetect:()=>S,InteractorType:()=>k,Main:()=>zo,MoveDirection:()=>a,MoveType:()=>_o,NumberUtils:()=>e,OrbitType:()=>O,OutMode:()=>f,OutModeDirection:()=>l,Particle:()=>Pe,ParticlesInteractorBase:()=>en,Point:()=>vi,Rectangle:()=>ii,RotateDirection:()=>r,ShapeType:()=>P,SizeMode:()=>y,StartValueType:()=>M,ThemeMode:()=>m,TiltDirection:()=>c,Type:()=>Vo,Utils:()=>o,Vector:()=>T,loadFull:()=>un,pJSDom:()=>fn,particlesJS:()=>vn,tsParticles:()=>pn});var e={};t.r(e),t.d(e,{calcEasing:()=>G,clamp:()=>E,collisionVelocity:()=>W,getDistance:()=>_,getDistances:()=>q,getParticleBaseVelocity:()=>B,getParticleDirectionAngle:()=>V,getRangeMax:()=>L,getRangeMin:()=>I,getRangeValue:()=>D,getValue:()=>H,mix:()=>R,randomInRange:()=>A,setRangeValue:()=>F});var o={};t.r(o),t.d(o,{animate:()=>Q,areBoundsInside:()=>it,arrayRandomIndex:()=>Z,calculateBounds:()=>et,cancelAnimation:()=>J,circleBounce:()=>ct,circleBounceDataFromParticle:()=>lt,deepExtend:()=>ot,divMode:()=>rt,divModeExecute:()=>nt,isDivModeEnabled:()=>st,isInArray:()=>X,isPointInside:()=>tt,isSsr:()=>j,itemFromArray:()=>K,loadFont:()=>Y,rectBounce:()=>dt,singleDivModeExecute:()=>at});var s={};t.r(s),t.d(s,{colorMix:()=>Dt,colorToHsl:()=>ft,colorToRgb:()=>vt,getHslAnimationFromHsl:()=>Ht,getHslFromAnimation:()=>Ft,getLinkColor:()=>It,getLinkRandomColor:()=>Lt,getRandomRgbColor:()=>Tt,getStyleFromHsl:()=>Rt,getStyleFromHsv:()=>At,getStyleFromRgb:()=>Et,hslToHsv:()=>xt,hslToRgb:()=>gt,hslaToHsva:()=>kt,hslaToRgba:()=>wt,hsvToHsl:()=>Pt,hsvToRgb:()=>zt,hsvaToHsla:()=>Mt,hsvaToRgba:()=>Ct,rgbToHsl:()=>yt,rgbToHsv:()=>Ot,rgbaToHsva:()=>St,stringToAlpha:()=>mt,stringToRgb:()=>bt});var n={};t.r(n),t.d(n,{clear:()=>Bt,drawConnectLine:()=>Ut,drawEllipse:()=>Zt,drawGrabLine:()=>$t,drawLinkLine:()=>Wt,drawLinkTriangle:()=>Gt,drawParticle:()=>jt,drawParticlePlugin:()=>Yt,drawPlugin:()=>Xt,drawShape:()=>Qt,drawShapeAfterEffect:()=>Jt,gradient:()=>Nt,paintBase:()=>Vt});var a,r,l,c,d,h,u,p,v,f,y,m,b,g,w,x,k,P,M,z,C,O,S;!function(t){t.bottom="bottom",t.bottomLeft="bottom-left",t.bottomRight="bottom-right",t.left="left",t.none="none",t.right="right",t.top="top",t.topLeft="top-left",t.topRight="top-right"}(a||(a={})),function(t){t.clockwise="clockwise",t.counterClockwise="counter-clockwise",t.random="random"}(r||(r={})),function(t){t.bottom="bottom",t.left="left",t.right="right",t.top="top"}(l||(l={})),function(t){t.clockwise="clockwise",t.counterClockwise="counter-clockwise",t.random="random"}(c||(c={})),function(t){t.attract="attract",t.bubble="bubble",t.push="push",t.remove="remove",t.repulse="repulse",t.pause="pause",t.trail="trail"}(d||(d={})),function(t){t.none="none",t.split="split"}(h||(h={})),function(t){t.bounce="bounce",t.bubble="bubble",t.repulse="repulse"}(u||(u={})),function(t){t.attract="attract",t.bounce="bounce",t.bubble="bubble",t.connect="connect",t.grab="grab",t.light="light",t.repulse="repulse",t.slow="slow",t.trail="trail"}(p||(p={})),function(t){t.absorb="absorb",t.bounce="bounce",t.destroy="destroy"}(v||(v={})),function(t){t.bounce="bounce",t.bounceHorizontal="bounce-horizontal",t.bounceVertical="bounce-vertical",t.none="none",t.out="out",t.destroy="destroy",t.split="split"}(f||(f={})),function(t){t.precise="precise",t.percent="percent"}(y||(y={})),function(t){t.any="any",t.dark="dark",t.light="light"}(m||(m={})),function(t){t[t.increasing=0]="increasing",t[t.decreasing=1]="decreasing"}(b||(b={})),function(t){t.darken="darken",t.enlighten="enlighten"}(g||(g={})),function(t){t.none="none",t.max="max",t.min="min"}(w||(w={})),function(t){t.linear="linear",t.radial="radial",t.random="random"}(x||(x={})),function(t){t[t.External=0]="External",t[t.Particles=1]="Particles"}(k||(k={})),function(t){t.char="char",t.character="character",t.circle="circle",t.edge="edge",t.image="image",t.images="images",t.line="line",t.polygon="polygon",t.square="square",t.star="star",t.triangle="triangle"}(P||(P={})),function(t){t.max="max",t.min="min",t.random="random"}(M||(M={})),function(t){t.circle="circle",t.rectangle="rectangle"}(z||(z={})),function(t){t.easeOutBack="ease-out-back",t.easeOutCirc="ease-out-circ",t.easeOutCubic="ease-out-cubic",t.easeOutQuad="ease-out-quad",t.easeOutQuart="ease-out-quart",t.easeOutQuint="ease-out-quint",t.easeOutExpo="ease-out-expo",t.easeOutSine="ease-out-sine"}(C||(C={})),function(t){t.front="front",t.back="back"}(O||(O={})),function(t){t.canvas="canvas",t.parent="parent",t.window="window"}(S||(S={}));class T{constructor(t,i){let e,o;if(void 0===i){if("number"==typeof t)throw new Error("tsParticles - Vector not initialized correctly");const i=t;[e,o]=[i.x,i.y]}else[e,o]=[t,i];this.x=e,this.y=o}static clone(t){return T.create(t.x,t.y)}static create(t,i){return new T(t,i)}static get origin(){return T.create(0,0)}get angle(){return Math.atan2(this.y,this.x)}set angle(t){this.updateFromAngle(t,this.length)}get length(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}set length(t){this.updateFromAngle(this.angle,t)}add(t){return T.create(this.x+t.x,this.y+t.y)}addTo(t){this.x+=t.x,this.y+=t.y}sub(t){return T.create(this.x-t.x,this.y-t.y)}subFrom(t){this.x-=t.x,this.y-=t.y}mult(t){return T.create(this.x*t,this.y*t)}multTo(t){this.x*=t,this.y*=t}div(t){return T.create(this.x/t,this.y/t)}divTo(t){this.x/=t,this.y/=t}distanceTo(t){return this.sub(t).length}getLengthSq(){return Math.pow(this.x,2)+Math.pow(this.y,2)}distanceToSq(t){return this.sub(t).getLengthSq()}manhattanDistanceTo(t){return Math.abs(t.x-this.x)+Math.abs(t.y-this.y)}copy(){return T.clone(this)}setTo(t){this.x=t.x,this.y=t.y}rotate(t){return T.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t))}updateFromAngle(t,i){this.x=Math.cos(t)*i,this.y=Math.sin(t)*i}}function E(t,i,e){return Math.min(Math.max(t,i),e)}function R(t,i,e,o){return Math.floor((t*e+i*o)/(e+o))}function A(t){const i=L(t);let e=I(t);return i===e&&(e=0),Math.random()*(i-e)+e}function D(t){return"number"==typeof t?t:A(t)}function I(t){return"number"==typeof t?t:t.min}function L(t){return"number"==typeof t?t:t.max}function F(t,i){if(t===i||void 0===i&&"number"==typeof t)return t;const e=I(t),o=L(t);return void 0!==i?{min:Math.min(e,i),max:Math.max(o,i)}:F(e,o)}function H(t){const i=t.random,{enable:e,minimumValue:o}="boolean"==typeof i?{enable:i,minimumValue:0}:i;return D(e?F(t.value,o):t.value)}function q(t,i){const e=t.x-i.x,o=t.y-i.y;return{dx:e,dy:o,distance:Math.sqrt(e*e+o*o)}}function _(t,i){return q(t,i).distance}function V(t){if("number"==typeof t)return t*Math.PI/180;switch(t){case a.top:return-Math.PI/2;case a.topRight:return-Math.PI/4;case a.right:return 0;case a.bottomRight:return Math.PI/4;case a.bottom:return Math.PI/2;case a.bottomLeft:return 3*Math.PI/4;case a.left:return Math.PI;case a.topLeft:return-3*Math.PI/4;case a.none:default:return Math.random()*Math.PI*2}}function B(t){const i=T.origin;return i.length=1,i.angle=t,i}function W(t,i,e,o){return T.create(t.x*(e-o)/(e+o)+2*i.x*o/(e+o),t.y)}function G(t,i){switch(i){case C.easeOutQuad:return 1-Math.pow(1-t,2);case C.easeOutCubic:return 1-Math.pow(1-t,3);case C.easeOutQuart:return 1-Math.pow(1-t,4);case C.easeOutQuint:return 1-Math.pow(1-t,5);case C.easeOutExpo:return 1===t?1:1-Math.pow(2,-10*t);case C.easeOutSine:return Math.sin(t*Math.PI/2);case C.easeOutBack:{const i=1.70158;return 1+(i+1)*Math.pow(t-1,3)+i*Math.pow(t-1,2)}case C.easeOutCirc:return Math.sqrt(1-Math.pow(t-1,2));default:return t}}var U=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))};function N(t,i,e,o,s,n){const a={bounced:!1};return i.min>=o.min&&i.min<=o.max&&i.max>=o.min&&i.max<=o.max&&(t.max>=e.min&&t.max<=(e.max+e.min)/2&&s>0||t.min<=e.max&&t.min>(e.max+e.min)/2&&s<0)&&(a.velocity=s*-n,a.bounced=!0),a}function $(t,i){if(i instanceof Array){for(const e of i)if(t.matches(e))return!0;return!1}return t.matches(i)}function j(){return"undefined"==typeof window||!window}function Q(){return j()?t=>setTimeout(t):t=>(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.setTimeout)(t)}function J(){return j()?t=>clearTimeout(t):t=>(window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||window.clearTimeout)(t)}function X(t,i){return t===i||i instanceof Array&&i.indexOf(t)>-1}function Y(t){var i,e;return U(this,void 0,void 0,(function*(){try{yield document.fonts.load(`${null!==(i=t.weight)&&void 0!==i?i:"400"} 36px '${null!==(e=t.font)&&void 0!==e?e:"Verdana"}'`)}catch(t){}}))}function Z(t){return Math.floor(Math.random()*t.length)}function K(t,i,e=!0){return t[void 0!==i&&e?i%t.length:Z(t)]}function tt(t,i,e,o){return it(et(t,null!=e?e:0),i,o)}function it(t,i,e){let o=!0;return e&&e!==l.bottom||(o=t.top<i.height),!o||e&&e!==l.left||(o=t.right>0),!o||e&&e!==l.right||(o=t.left<i.width),!o||e&&e!==l.top||(o=t.bottom>0),o}function et(t,i){return{bottom:t.y+i,left:t.x-i,right:t.x+i,top:t.y-i}}function ot(t,...i){for(const e of i){if(null==e)continue;if("object"!=typeof e){t=e;continue}const i=Array.isArray(e);!i||"object"==typeof t&&t&&Array.isArray(t)?i||"object"==typeof t&&t&&!Array.isArray(t)||(t={}):t=[];for(const i in e){if("__proto__"===i)continue;const o=e[i],s="object"==typeof o,n=t;n[i]=s&&Array.isArray(o)?o.map((t=>ot(n[i],t))):ot(n[i],o)}}return t}function st(t,i){return i instanceof Array?!!i.find((i=>i.enable&&X(t,i.mode))):X(t,i.mode)}function nt(t,i,e){if(i instanceof Array)for(const o of i){const i=o.mode;o.enable&&X(t,i)&&at(o,e)}else{const o=i.mode;i.enable&&X(t,o)&&at(i,e)}}function at(t,i){const e=t.selectors;if(e instanceof Array)for(const o of e)i(o,t);else i(e,t)}function rt(t,i){if(i&&t)return t instanceof Array?t.find((t=>$(i,t.selectors))):$(i,t.selectors)?t:void 0}function lt(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:T.create(H(t.options.bounce.horizontal),H(t.options.bounce.vertical))}}function ct(t,i){const e=t.velocity.x,o=t.velocity.y,s=t.position,n=i.position;if(e*(n.x-s.x)+o*(n.y-s.y)>=0){const e=-Math.atan2(n.y-s.y,n.x-s.x),o=t.mass,a=i.mass,r=t.velocity.rotate(e),l=i.velocity.rotate(e),c=W(r,l,o,a),d=W(l,r,o,a),h=c.rotate(-e),u=d.rotate(-e);t.velocity.x=h.x*t.factor.x,t.velocity.y=h.y*t.factor.y,i.velocity.x=u.x*i.factor.x,i.velocity.y=u.y*i.factor.y}}function dt(t,i){const e=et(t.getPosition(),t.getRadius()),o=N({min:e.left,max:e.right},{min:e.top,max:e.bottom},{min:i.left,max:i.right},{min:i.top,max:i.bottom},t.velocity.x,H(t.options.bounce.horizontal));o.bounced&&(void 0!==o.velocity&&(t.velocity.x=o.velocity),void 0!==o.position&&(t.position.x=o.position));const s=N({min:e.top,max:e.bottom},{min:e.left,max:e.right},{min:i.top,max:i.bottom},{min:i.left,max:i.right},t.velocity.y,H(t.options.bounce.vertical));s.bounced&&(void 0!==s.velocity&&(t.velocity.y=s.velocity),void 0!==s.position&&(t.position.y=s.position))}class ht{}function ut(t,i,e){let o=e;return o<0&&(o+=1),o>1&&(o-=1),o<1/6?t+6*(i-t)*o:o<.5?i:o<2/3?t+(i-t)*(2/3-o)*6:t}function pt(t){if(t.startsWith("rgb")){const i=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return i?{a:i.length>4?parseFloat(i[5]):1,b:parseInt(i[3],10),g:parseInt(i[2],10),r:parseInt(i[1],10)}:void 0}if(t.startsWith("hsl")){const i=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return i?wt({a:i.length>4?parseFloat(i[5]):1,h:parseInt(i[1],10),l:parseInt(i[3],10),s:parseInt(i[2],10)}):void 0}if(t.startsWith("hsv")){const i=/hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return i?Ct({a:i.length>4?parseFloat(i[5]):1,h:parseInt(i[1],10),s:parseInt(i[2],10),v:parseInt(i[3],10)}):void 0}{const i=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,e=t.replace(i,((t,i,e,o,s)=>i+i+e+e+o+o+(void 0!==s?s+s:""))),o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(e);return o?{a:void 0!==o[4]?parseInt(o[4],16)/255:1,b:parseInt(o[3],16),g:parseInt(o[2],16),r:parseInt(o[1],16)}:void 0}}function vt(t,i,e=!0){var o,s,n;if(void 0===t)return;const a="string"==typeof t?{value:t}:t;let r;if("string"==typeof a.value)r=a.value===ht.randomColorValue?Tt():bt(a.value);else if(a.value instanceof Array){r=vt({value:K(a.value,i,e)})}else{const t=a.value,i=null!==(o=t.rgb)&&void 0!==o?o:a.value;if(void 0!==i.r)r=i;else{const i=null!==(s=t.hsl)&&void 0!==s?s:a.value;if(void 0!==i.h&&void 0!==i.l)r=gt(i);else{const i=null!==(n=t.hsv)&&void 0!==n?n:a.value;void 0!==i.h&&void 0!==i.v&&(r=zt(i))}}}return r}function ft(t,i,e=!0){const o=vt(t,i,e);return void 0!==o?yt(o):void 0}function yt(t){const i=t.r/255,e=t.g/255,o=t.b/255,s=Math.max(i,e,o),n=Math.min(i,e,o),a={h:0,l:(s+n)/2,s:0};return s!=n&&(a.s=a.l<.5?(s-n)/(s+n):(s-n)/(2-s-n),a.h=i===s?(e-o)/(s-n):a.h=e===s?2+(o-i)/(s-n):4+(i-e)/(s-n)),a.l*=100,a.s*=100,a.h*=60,a.h<0&&(a.h+=360),a}function mt(t){var i;return null===(i=pt(t))||void 0===i?void 0:i.a}function bt(t){return pt(t)}function gt(t){const i={b:0,g:0,r:0},e={h:t.h/360,l:t.l/100,s:t.s/100};if(0===e.s)i.b=e.l,i.g=e.l,i.r=e.l;else{const t=e.l<.5?e.l*(1+e.s):e.l+e.s-e.l*e.s,o=2*e.l-t;i.r=ut(o,t,e.h+1/3),i.g=ut(o,t,e.h),i.b=ut(o,t,e.h-1/3)}return i.r=Math.floor(255*i.r),i.g=Math.floor(255*i.g),i.b=Math.floor(255*i.b),i}function wt(t){const i=gt(t);return{a:t.a,b:i.b,g:i.g,r:i.r}}function xt(t){const i=t.l/100,e=i+t.s/100*Math.min(i,1-i),o=e?2*(1-i/e):0;return{h:t.h,s:100*o,v:100*e}}function kt(t){const i=xt(t);return{a:t.a,h:i.h,s:i.s,v:i.v}}function Pt(t){const i=t.v/100,e=i*(1-t.s/100/2),o=0===e||1===e?0:(i-e)/Math.min(e,1-e);return{h:t.h,l:100*e,s:100*o}}function Mt(t){const i=Pt(t);return{a:t.a,h:i.h,l:i.l,s:i.s}}function zt(t){const i={b:0,g:0,r:0},e=t.h/60,o=t.s/100,s=t.v/100,n=s*o,a=n*(1-Math.abs(e%2-1));let r;if(e>=0&&e<=1?r={r:n,g:a,b:0}:e>1&&e<=2?r={r:a,g:n,b:0}:e>2&&e<=3?r={r:0,g:n,b:a}:e>3&&e<=4?r={r:0,g:a,b:n}:e>4&&e<=5?r={r:a,g:0,b:n}:e>5&&e<=6&&(r={r:n,g:0,b:a}),r){const t=s-n;i.r=Math.floor(255*(r.r+t)),i.g=Math.floor(255*(r.g+t)),i.b=Math.floor(255*(r.b+t))}return i}function Ct(t){const i=zt(t);return{a:t.a,b:i.b,g:i.g,r:i.r}}function Ot(t){const i={r:t.r/255,g:t.g/255,b:t.b/255},e=Math.max(i.r,i.g,i.b),o=e-Math.min(i.r,i.g,i.b);let s=0;e===i.r?s=(i.g-i.b)/o*60:e===i.g?s=60*(2+(i.b-i.r)/o):e===i.b&&(s=60*(4+(i.r-i.g)/o));return{h:s,s:100*(e?o/e:0),v:100*e}}function St(t){const i=Ot(t);return{a:t.a,h:i.h,s:i.s,v:i.v}}function Tt(t){const i=null!=t?t:0;return{b:Math.floor(A(F(i,256))),g:Math.floor(A(F(i,256))),r:Math.floor(A(F(i,256)))}}function Et(t,i){return`rgba(${t.r}, ${t.g}, ${t.b}, ${null!=i?i:1})`}function Rt(t,i){return`hsla(${t.h}, ${t.s}%, ${t.l}%, ${null!=i?i:1})`}function At(t,i){return Rt(Pt(t),i)}function Dt(t,i,e,o){let s=t,n=i;return void 0===s.r&&(s=gt(t)),void 0===n.r&&(n=gt(i)),{b:R(s.b,n.b,e,o),g:R(s.g,n.g,e,o),r:R(s.r,n.r,e,o)}}function It(t,i,e){var o,s;if(e===ht.randomColorValue)return Tt();if("mid"!==e)return e;{const e=null!==(o=t.getFillColor())&&void 0!==o?o:t.getStrokeColor(),n=null!==(s=null==i?void 0:i.getFillColor())&&void 0!==s?s:null==i?void 0:i.getStrokeColor();if(e&&n&&i)return Dt(e,n,t.getRadius(),i.getRadius());{const t=null!=e?e:n;if(t)return gt(t)}}}function Lt(t,i,e){const o="string"==typeof t?t:t.value;return o===ht.randomColorValue?e?vt({value:o}):i?ht.randomColorValue:ht.midColorValue:vt({value:o})}function Ft(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function Ht(t,i,e){const o={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return i&&(qt(o.h,i.h,e),qt(o.s,i.s,e),qt(o.l,i.l,e)),o}function qt(t,i,e){if(t.enable=i.enable,t.enable){if(t.velocity=i.speed/100*e,i.sync)return;t.status=b.increasing,t.velocity*=Math.random(),t.value&&(t.value*=Math.random())}else t.velocity=0}function _t(t,i,e){t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(e.x,e.y),t.closePath()}function Vt(t,i,e){t.save(),t.fillStyle=null!=e?e:"rgba(0,0,0,0)",t.fillRect(0,0,i.width,i.height),t.restore()}function Bt(t,i){t.clearRect(0,0,i.width,i.height)}function Wt(t,i,e,o,s,n,a,r,l,c,d,h){let u=!1;if(_(e,o)<=s)_t(t,e,o),u=!0;else if(a){let i,a;const r=q(e,{x:o.x-n.width,y:o.y});if(r.distance<=s){const t=e.y-r.dy/r.dx*e.x;i={x:0,y:t},a={x:n.width,y:t}}else{const t=q(e,{x:o.x,y:o.y-n.height});if(t.distance<=s){const o=-(e.y-t.dy/t.dx*e.x)/(t.dy/t.dx);i={x:o,y:0},a={x:o,y:n.height}}else{const t=q(e,{x:o.x-n.width,y:o.y-n.height});if(t.distance<=s){const o=e.y-t.dy/t.dx*e.x;i={x:-o/(t.dy/t.dx),y:o},a={x:i.x+n.width,y:i.y+n.height}}}}i&&a&&(_t(t,e,i),_t(t,o,a),u=!0)}if(u){if(t.lineWidth=i,r&&(t.globalCompositeOperation=l),t.strokeStyle=Et(c,d),h.enable){const i=vt(h.color);i&&(t.shadowBlur=h.blur,t.shadowColor=Et(i))}t.stroke()}}function Gt(t,i,e,o,s,n,a,r){!function(t,i,e,o){t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(e.x,e.y),t.lineTo(o.x,o.y),t.closePath()}(t,i,e,o),s&&(t.globalCompositeOperation=n),t.fillStyle=Et(a,r),t.fill()}function Ut(t,i,e,o,s){t.save(),_t(t,o,s),t.lineWidth=i,t.strokeStyle=e,t.stroke(),t.restore()}function Nt(t,i,e,o){const s=Math.floor(e.getRadius()/i.getRadius()),n=i.getFillColor(),a=e.getFillColor();if(!n||!a)return;const r=i.getPosition(),l=e.getPosition(),c=Dt(n,a,i.getRadius(),e.getRadius()),d=t.createLinearGradient(r.x,r.y,l.x,l.y);return d.addColorStop(0,Rt(n,o)),d.addColorStop(s>1?1:s,Et(c,o)),d.addColorStop(1,Rt(a,o)),d}function $t(t,i,e,o,s,n){t.save(),_t(t,e,o),t.strokeStyle=Et(s,n),t.lineWidth=i,t.stroke(),t.restore()}function jt(t,i,e,o,s,n,a,r,l,c,d,h){var u,p;const v=e.getPosition(),f=e.options.tilt,y=e.options.roll;i.save(),f.enable||y.enable?i.setTransform(y.enable?Math.cos(e.rollAngle):1,f.enable?Math.cos(e.tilt.value)*e.tilt.cosDirection:0,f.enable?Math.sin(e.tilt.value)*e.tilt.sinDirection:0,y.enable?Math.sin(e.rollAngle):1,v.x,v.y):i.translate(v.x,v.y),i.beginPath();const m=e.rotate.value+(e.options.rotate.path?e.velocity.angle:0);0!==m&&i.rotate(m),a&&(i.globalCompositeOperation=r);const b=e.shadowColor;if(d.enable&&b&&(i.shadowBlur=d.blur,i.shadowColor=Et(b),i.shadowOffsetX=d.offset.x,i.shadowOffsetY=d.offset.y),h){const t=h.angle.value,e=h.type===x.radial?i.createRadialGradient(0,0,0,0,0,l):i.createLinearGradient(Math.cos(t)*-l,Math.sin(t)*-l,Math.cos(t)*l,Math.sin(t)*l);for(const t of h.colors)e.addColorStop(t.stop,Rt({h:t.value.h.value,s:t.value.s.value,l:t.value.l.value},null!==(p=null===(u=t.opacity)||void 0===u?void 0:u.value)&&void 0!==p?p:c));i.fillStyle=e}else s&&(i.fillStyle=s);const g=e.stroke;i.lineWidth=e.strokeWidth,n&&(i.strokeStyle=n),Qt(t,i,e,l,c,o),g.width>0&&i.stroke(),e.close&&i.closePath(),e.fill&&i.fill(),i.restore(),i.save(),f.enable?i.setTransform(1,Math.cos(e.tilt.value)*e.tilt.cosDirection,Math.sin(e.tilt.value)*e.tilt.sinDirection,1,v.x,v.y):i.translate(v.x,v.y),0!==m&&i.rotate(m),a&&(i.globalCompositeOperation=r),Jt(t,i,e,l,c,o),i.restore()}function Qt(t,i,e,o,s,n){if(!e.shape)return;const a=t.drawers.get(e.shape);a&&a.draw(i,e,o,s,n,t.retina.pixelRatio)}function Jt(t,i,e,o,s,n){if(!e.shape)return;const a=t.drawers.get(e.shape);(null==a?void 0:a.afterEffect)&&a.afterEffect(i,e,o,s,n,t.retina.pixelRatio)}function Xt(t,i,e){i.draw&&(t.save(),i.draw(t,e),t.restore())}function Yt(t,i,e,o){void 0!==i.drawParticle&&(t.save(),i.drawParticle(t,e,o),t.restore())}function Zt(t,i,e,o,s,n,a,r,l){const c=i.getPosition();if(e&&(t.strokeStyle=Rt(e,s)),0===n)return;t.lineWidth=n;const d=a*Math.PI/180;t.beginPath(),t.ellipse(c.x,c.y,o/2,2*o,d,r,l),t.stroke()}ht.canvasClass="tsparticles-canvas-el",ht.randomColorValue="random",ht.midColorValue="mid",ht.touchEndEvent="touchend",ht.mouseDownEvent="mousedown",ht.mouseUpEvent="mouseup",ht.mouseMoveEvent="mousemove",ht.touchStartEvent="touchstart",ht.touchMoveEvent="touchmove",ht.mouseLeaveEvent="mouseleave",ht.mouseOutEvent="mouseout",ht.touchCancelEvent="touchcancel",ht.resizeEvent="resize",ht.visibilityChangeEvent="visibilitychange",ht.noPolygonDataLoaded="No polygon data loaded.",ht.noPolygonFound="No polygon found, you need to specify SVG url in config.";class Kt{constructor(t,i){this.position={x:t,y:i}}}class ti extends Kt{constructor(t,i,e){super(t,i),this.radius=e}contains(t){return _(t,this.position)<=this.radius}intersects(t){const i=t,e=t,o=this.position,s=t.position,n=Math.abs(s.x-o.x),a=Math.abs(s.y-o.y),r=this.radius;if(void 0!==e.radius){return r+e.radius>Math.sqrt(n*n+a+a)}if(void 0!==i.size){const t=i.size.width,e=i.size.height,o=Math.pow(n-t,2)+Math.pow(a-e,2);return!(n>r+t||a>r+e)&&(n<=t||a<=e||o<=r*r)}return!1}}class ii extends Kt{constructor(t,i,e,o){super(t,i),this.size={height:o,width:e}}contains(t){const i=this.size.width,e=this.size.height,o=this.position;return t.x>=o.x&&t.x<=o.x+i&&t.y>=o.y&&t.y<=o.y+e}intersects(t){const i=t,e=t,o=this.size.width,s=this.size.height,n=this.position,a=t.position;if(void 0!==e.radius)return e.intersects(this);if(void 0!==i.size){const t=i.size,e=t.width,r=t.height;return a.x<n.x+o&&a.x+e>n.x&&a.y<n.y+s&&a.y+r>n.y}return!1}}class ei extends ti{constructor(t,i,e,o){super(t,i,e),this.canvasSize=o,this.canvasSize={height:o.height,width:o.width}}contains(t){if(super.contains(t))return!0;const i={x:t.x-this.canvasSize.width,y:t.y};if(super.contains(i))return!0;const e={x:t.x-this.canvasSize.width,y:t.y-this.canvasSize.height};if(super.contains(e))return!0;const o={x:t.x,y:t.y-this.canvasSize.height};return super.contains(o)}intersects(t){if(super.intersects(t))return!0;const i=t,e=t,o={x:t.position.x-this.canvasSize.width,y:t.position.y-this.canvasSize.height};if(void 0!==e.radius){const t=new ti(o.x,o.y,2*e.radius);return super.intersects(t)}if(void 0!==i.size){const t=new ii(o.x,o.y,2*i.size.width,2*i.size.height);return super.intersects(t)}return!1}}function oi(t,i,e,o,s){if(o){let o={passive:!0};"boolean"==typeof s?o.capture=s:void 0!==s&&(o=s),t.addEventListener(i,e,o)}else{const o=s;t.removeEventListener(i,e,o)}}class si{constructor(t){this.container=t,this.canPush=!0,this.mouseMoveHandler=t=>this.mouseTouchMove(t),this.touchStartHandler=t=>this.mouseTouchMove(t),this.touchMoveHandler=t=>this.mouseTouchMove(t),this.touchEndHandler=()=>this.mouseTouchFinish(),this.mouseLeaveHandler=()=>this.mouseTouchFinish(),this.touchCancelHandler=()=>this.mouseTouchFinish(),this.touchEndClickHandler=t=>this.mouseTouchClick(t),this.mouseUpHandler=t=>this.mouseTouchClick(t),this.mouseDownHandler=()=>this.mouseDown(),this.visibilityChangeHandler=()=>this.handleVisibilityChange(),this.resizeHandler=()=>this.handleWindowResize()}addListeners(){this.manageListeners(!0)}removeListeners(){this.manageListeners(!1)}manageListeners(t){var i;const e=this.container,o=e.actualOptions,s=o.interactivity.detectsOn;let n=ht.mouseLeaveEvent;if(s===S.window)e.interactivity.element=window,n=ht.mouseOutEvent;else if(s===S.parent&&e.canvas.element){const t=e.canvas.element;e.interactivity.element=null!==(i=t.parentElement)&&void 0!==i?i:t.parentNode}else e.interactivity.element=e.canvas.element;const a=e.interactivity.element;if(!a)return;const r=a;(o.interactivity.events.onHover.enable||o.interactivity.events.onClick.enable)&&(oi(a,ht.mouseMoveEvent,this.mouseMoveHandler,t),oi(a,ht.touchStartEvent,this.touchStartHandler,t),oi(a,ht.touchMoveEvent,this.touchMoveHandler,t),o.interactivity.events.onClick.enable?(oi(a,ht.touchEndEvent,this.touchEndClickHandler,t),oi(a,ht.mouseUpEvent,this.mouseUpHandler,t),oi(a,ht.mouseDownEvent,this.mouseDownHandler,t)):oi(a,ht.touchEndEvent,this.touchEndHandler,t),oi(a,n,this.mouseLeaveHandler,t),oi(a,ht.touchCancelEvent,this.touchCancelHandler,t)),e.canvas.element&&(e.canvas.element.style.pointerEvents=r===e.canvas.element?"initial":"none"),o.interactivity.events.resize&&("undefined"!=typeof ResizeObserver?this.resizeObserver&&!t?(e.canvas.element&&this.resizeObserver.unobserve(e.canvas.element),this.resizeObserver.disconnect(),delete this.resizeObserver):!this.resizeObserver&&t&&e.canvas.element&&(this.resizeObserver=new ResizeObserver((t=>{t.find((t=>t.target===e.canvas.element))&&this.handleWindowResize()})),this.resizeObserver.observe(e.canvas.element)):oi(window,ht.resizeEvent,this.resizeHandler,t)),document&&oi(document,ht.visibilityChangeEvent,this.visibilityChangeHandler,t,!1)}handleWindowResize(){this.resizeTimeout&&(clearTimeout(this.resizeTimeout),delete this.resizeTimeout),this.resizeTimeout=setTimeout((()=>{var t;return null===(t=this.container.canvas)||void 0===t?void 0:t.windowResize()}),500)}handleVisibilityChange(){const t=this.container,i=t.actualOptions;this.mouseTouchFinish(),i.pauseOnBlur&&((null===document||void 0===document?void 0:document.hidden)?(t.pageHidden=!0,t.pause()):(t.pageHidden=!1,t.getAnimationStatus()?t.play(!0):t.draw(!0)))}mouseDown(){const t=this.container.interactivity;if(t){const i=t.mouse;i.clicking=!0,i.downPosition=i.position}}mouseTouchMove(t){var i,e,o,s,n,a,r;const l=this.container,c=l.actualOptions;if(void 0===(null===(i=l.interactivity)||void 0===i?void 0:i.element))return;let d;l.interactivity.mouse.inside=!0;const h=l.canvas.element;if(t.type.startsWith("mouse")){this.canPush=!0;const i=t;if(l.interactivity.element===window){if(h){const t=h.getBoundingClientRect();d={x:i.clientX-t.left,y:i.clientY-t.top}}}else if(c.interactivity.detectsOn===S.parent){const t=i.target,s=i.currentTarget,n=l.canvas.element;if(t&&s&&n){const e=t.getBoundingClientRect(),o=s.getBoundingClientRect(),a=n.getBoundingClientRect();d={x:i.offsetX+2*e.left-(o.left+a.left),y:i.offsetY+2*e.top-(o.top+a.top)}}else d={x:null!==(e=i.offsetX)&&void 0!==e?e:i.clientX,y:null!==(o=i.offsetY)&&void 0!==o?o:i.clientY}}else i.target===l.canvas.element&&(d={x:null!==(s=i.offsetX)&&void 0!==s?s:i.clientX,y:null!==(n=i.offsetY)&&void 0!==n?n:i.clientY})}else{this.canPush="touchmove"!==t.type;const i=t,e=i.touches[i.touches.length-1],o=null==h?void 0:h.getBoundingClientRect();d={x:e.clientX-(null!==(a=null==o?void 0:o.left)&&void 0!==a?a:0),y:e.clientY-(null!==(r=null==o?void 0:o.top)&&void 0!==r?r:0)}}const u=l.retina.pixelRatio;d&&(d.x*=u,d.y*=u),l.interactivity.mouse.position=d,l.interactivity.status=ht.mouseMoveEvent}mouseTouchFinish(){const t=this.container.interactivity;if(void 0===t)return;const i=t.mouse;delete i.position,delete i.clickPosition,delete i.downPosition,t.status=ht.mouseLeaveEvent,i.inside=!1,i.clicking=!1}mouseTouchClick(t){const i=this.container,e=i.actualOptions,o=i.interactivity.mouse;o.inside=!0;let s=!1;const n=o.position;if(void 0!==n&&e.interactivity.events.onClick.enable){for(const[,t]of i.plugins)if(void 0!==t.clickPositionValid&&(s=t.clickPositionValid(n),s))break;s||this.doMouseTouchClick(t),o.clicking=!1}}doMouseTouchClick(t){const i=this.container,e=i.actualOptions;if(this.canPush){const t=i.interactivity.mouse.position;if(!t)return;i.interactivity.mouse.clickPosition={x:t.x,y:t.y},i.interactivity.mouse.clickTime=(new Date).getTime();const o=e.interactivity.events.onClick;if(o.mode instanceof Array)for(const t of o.mode)this.handleClickMode(t);else this.handleClickMode(o.mode)}"touchend"===t.type&&setTimeout((()=>this.mouseTouchFinish()),500)}handleClickMode(t){const i=this.container,e=i.actualOptions,o=e.interactivity.modes.push.quantity,s=e.interactivity.modes.remove.quantity;switch(t){case d.push:if(o>0){const t=K([void 0,...e.interactivity.modes.push.groups]),s=void 0!==t?i.actualOptions.particles.groups[t]:void 0;i.particles.push(o,i.interactivity.mouse,s,t)}break;case d.remove:i.particles.removeQuantity(s);break;case d.bubble:i.bubble.clicking=!0;break;case d.repulse:i.repulse.clicking=!0,i.repulse.count=0;for(const t of i.repulse.particles)t.velocity.setTo(t.initialVelocity);i.repulse.particles=[],i.repulse.finish=!1,setTimeout((()=>{i.destroyed||(i.repulse.clicking=!1)}),1e3*e.interactivity.modes.repulse.duration);break;case d.attract:i.attract.clicking=!0,i.attract.count=0;for(const t of i.attract.particles)t.velocity.setTo(t.initialVelocity);i.attract.particles=[],i.attract.finish=!1,setTimeout((()=>{i.destroyed||(i.attract.clicking=!1)}),1e3*e.interactivity.modes.attract.duration);break;case d.pause:i.getAnimationStatus()?i.pause():i.play()}for(const[,e]of i.plugins)e.handleClickMode&&e.handleClickMode(t)}}const ni=[],ai=new Map,ri=new Map,li=new Map,ci=new Map,di=new Map,hi=new Map,ui=new Map;class pi{static getPlugin(t){return ni.find((i=>i.id===t))}static addPlugin(t){pi.getPlugin(t.id)||ni.push(t)}static getAvailablePlugins(t){const i=new Map;for(const e of ni)e.needsPlugin(t.actualOptions)&&i.set(e.id,e.getPlugin(t));return i}static loadOptions(t,i){for(const e of ni)e.loadOptions(t,i)}static getPreset(t){return di.get(t)}static addPreset(t,i,e=!1){!e&&pi.getPreset(t)||di.set(t,i)}static addShapeDrawer(t,i){pi.getShapeDrawer(t)||hi.set(t,i)}static getShapeDrawer(t){return hi.get(t)}static getSupportedShapes(){return hi.keys()}static getPathGenerator(t){return ui.get(t)}static addPathGenerator(t,i){pi.getPathGenerator(t)||ui.set(t,i)}static getInteractors(t){let i=li.get(t);return i||(i=[...ai.values()].map((i=>i(t))),li.set(t,i)),i}static addInteractor(t,i){ai.set(t,i)}static getUpdaters(t){let i=ci.get(t);return i||(i=[...ri.values()].map((i=>i(t))),ci.set(t,i)),i}static addParticleUpdater(t,i){ri.set(t,i)}}class vi{constructor(t,i){this.position=t,this.particle=i}}class fi{constructor(t,i){this.rectangle=t,this.capacity=i,this.points=[],this.divided=!1}subdivide(){const t=this.rectangle.position.x,i=this.rectangle.position.y,e=this.rectangle.size.width,o=this.rectangle.size.height,s=this.capacity;this.northEast=new fi(new ii(t,i,e/2,o/2),s),this.northWest=new fi(new ii(t+e/2,i,e/2,o/2),s),this.southEast=new fi(new ii(t,i+o/2,e/2,o/2),s),this.southWest=new fi(new ii(t+e/2,i+o/2,e/2,o/2),s),this.divided=!0}insert(t){var i,e,o,s,n;return!!this.rectangle.contains(t.position)&&(this.points.length<this.capacity?(this.points.push(t),!0):(this.divided||this.subdivide(),null!==(n=(null===(i=this.northEast)||void 0===i?void 0:i.insert(t))||(null===(e=this.northWest)||void 0===e?void 0:e.insert(t))||(null===(o=this.southEast)||void 0===o?void 0:o.insert(t))||(null===(s=this.southWest)||void 0===s?void 0:s.insert(t)))&&void 0!==n&&n))}queryCircle(t,i){return this.query(new ti(t.x,t.y,i))}queryCircleWarp(t,i,e){const o=e,s=e;return this.query(new ei(t.x,t.y,i,void 0!==o.canvas?o.canvas.size:s))}queryRectangle(t,i){return this.query(new ii(t.x,t.y,i.width,i.height))}query(t,i){var e,o,s,n;const a=null!=i?i:[];if(!t.intersects(this.rectangle))return[];for(const i of this.points)!t.contains(i.position)&&_(t.position,i.position)>i.particle.getRadius()||a.push(i.particle);return this.divided&&(null===(e=this.northEast)||void 0===e||e.query(t,a),null===(o=this.northWest)||void 0===o||o.query(t,a),null===(s=this.southEast)||void 0===s||s.query(t,a),null===(n=this.southWest)||void 0===n||n.query(t,a)),a}}class yi{constructor(t){this.container=t,this.size={height:0,width:0},this.context=null,this.generatedCanvas=!1}init(){this.resize(),this.initStyle(),this.initCover(),this.initTrail(),this.initBackground(),this.paint()}loadCanvas(t,i){var e;t.className||(t.className=ht.canvasClass),this.generatedCanvas&&(null===(e=this.element)||void 0===e||e.remove()),this.generatedCanvas=null!=i?i:this.generatedCanvas,this.element=t,this.originalStyle=ot({},this.element.style),this.size.height=t.offsetHeight,this.size.width=t.offsetWidth,this.context=this.element.getContext("2d"),this.container.retina.init(),this.initBackground()}destroy(){var t;this.generatedCanvas&&(null===(t=this.element)||void 0===t||t.remove()),this.draw((t=>{Bt(t,this.size)}))}paint(){const t=this.container.actualOptions;this.draw((i=>{t.backgroundMask.enable&&t.backgroundMask.cover&&this.coverColor?(Bt(i,this.size),this.paintBase(Et(this.coverColor,this.coverColor.a))):this.paintBase()}))}clear(){const t=this.container.actualOptions,i=t.particles.move.trail;t.backgroundMask.enable?this.paint():i.enable&&i.length>0&&this.trailFillColor?this.paintBase(Et(this.trailFillColor,1/i.length)):this.draw((t=>{Bt(t,this.size)}))}windowResize(){var t;if(!this.element)return;const i=this.container;if(this.resize(),1!==(null===(t=this.resizeFactor)||void 0===t?void 0:t.width)||1!==this.resizeFactor.height){i.updateActualOptions(),i.particles.setDensity();for(const[,t]of i.plugins)void 0!==t.resize&&t.resize()}else delete this.resizeFactor}resize(){if(!this.element)return;const t=this.container,i=t.retina.pixelRatio,e=t.canvas.size,o=e.width,s=e.height;e.width=this.element.offsetWidth*i,e.height=this.element.offsetHeight*i,this.element.width=e.width,this.element.height=e.height,this.container.started&&(this.resizeFactor={width:e.width/o,height:e.height/s})}drawConnectLine(t,i){this.draw((e=>{var o;const s=this.lineStyle(t,i);if(!s)return;const n=t.getPosition(),a=i.getPosition();Ut(e,null!==(o=t.linksWidth)&&void 0!==o?o:this.container.retina.linksWidth,s,n,a)}))}drawGrabLine(t,i,e,o){const s=this.container;this.draw((n=>{var a;const r=t.getPosition();$t(n,null!==(a=t.linksWidth)&&void 0!==a?a:s.retina.linksWidth,r,o,i,e)}))}drawParticle(t,i){var e,o,s;if(t.spawning||t.destroyed)return;const n=t.getFillColor(),a=null!==(e=t.getStrokeColor())&&void 0!==e?e:n;if(!n&&!a)return;let[r,l]=this.getPluginParticleColors(t);const c=t.options.twinkle.particles,d=c.enable&&Math.random()<c.frequency;if(!r||!l){const t=ft(c.color);r||(r=d&&void 0!==t?t:n||void 0),l||(l=d&&void 0!==t?t:a||void 0)}const h=this.container.actualOptions,u=t.options.zIndex,p=Math.pow(1-t.zIndexFactor,u.opacityRate),v=t.getRadius(),f=d?c.opacity:null!==(o=t.bubble.opacity)&&void 0!==o?o:t.opacity.value,y=null!==(s=t.stroke.opacity)&&void 0!==s?s:f,m=f*p,b=r?Rt(r,m):void 0;if(!b&&!l)return;const g=t.options.orbit;this.draw((e=>{const o=Math.pow(1-t.zIndexFactor,u.sizeRate),s=l?Rt(l,y*p):b;v<=0||(g.enable&&this.drawOrbit(t,O.back),jt(this.container,e,t,i,b,s,h.backgroundMask.enable,h.backgroundMask.composite,v*o,m,t.options.shadow,t.gradient),g.enable&&this.drawOrbit(t,O.front))}))}drawOrbit(t,i){const e=this.container,o=t.options.orbit;let s,n;i===O.back?(s=Math.PI/2,n=3*Math.PI/2):i===O.front?(s=3*Math.PI/2,n=Math.PI/2):(s=0,n=2*Math.PI),this.draw((i=>{var a,r,l,c;Zt(i,t,null!==(a=t.orbitColor)&&void 0!==a?a:t.getFillColor(),null!==(l=null!==(r=t.orbitRadius)&&void 0!==r?r:e.retina.orbitRadius)&&void 0!==l?l:t.getRadius(),o.opacity,o.width,(null!==(c=t.orbitRotation)&&void 0!==c?c:0)*e.retina.pixelRatio,s,n)}))}drawPlugin(t,i){this.draw((e=>{Xt(e,t,i)}))}drawParticlePlugin(t,i,e){this.draw((o=>{Yt(o,t,i,e)}))}initBackground(){const t=this.container.actualOptions.background,i=this.element,e=null==i?void 0:i.style;if(e){if(t.color){const i=vt(t.color);e.backgroundColor=i?Et(i,t.opacity):""}else e.backgroundColor="";e.backgroundImage=t.image||"",e.backgroundPosition=t.position||"",e.backgroundRepeat=t.repeat||"",e.backgroundSize=t.size||""}}draw(t){if(this.context)return t(this.context)}initCover(){const t=this.container.actualOptions.backgroundMask.cover,i=vt(t.color);i&&(this.coverColor={r:i.r,g:i.g,b:i.b,a:t.opacity})}initTrail(){const t=this.container.actualOptions,i=vt(t.particles.move.trail.fillColor);if(i){const e=t.particles.move.trail;this.trailFillColor={r:i.r,g:i.g,b:i.b,a:1/e.length}}}getPluginParticleColors(t){let i,e;for(const[,o]of this.container.plugins)if(!i&&o.particleFillColor&&(i=ft(o.particleFillColor(t))),!e&&o.particleStrokeColor&&(e=ft(o.particleStrokeColor(t))),i&&e)break;return[i,e]}initStyle(){const t=this.element,i=this.container.actualOptions;if(!t)return;const e=this.originalStyle;i.fullScreen.enable?(this.originalStyle=ot({},t.style),t.style.position="fixed",t.style.zIndex=i.fullScreen.zIndex.toString(10),t.style.top="0",t.style.left="0",t.style.width="100%",t.style.height="100%"):e&&(t.style.position=e.position,t.style.zIndex=e.zIndex,t.style.top=e.top,t.style.left=e.left,t.style.width=e.width,t.style.height=e.height)}paintBase(t){this.draw((i=>{Vt(i,this.size,t)}))}lineStyle(t,i){return this.draw((e=>{const o=this.container.actualOptions.interactivity.modes.connect;return Nt(e,t,i,o.links.opacity)}))}}class mi{constructor(){this.value="#fff"}static create(t,i){const e=null!=t?t:new mi;return void 0!==i&&("string"==typeof i||i instanceof Array?e.load({value:i}):e.load(i)),e}load(t){void 0!==(null==t?void 0:t.value)&&(this.value=t.value)}}class bi{constructor(){this.blur=5,this.color=new mi,this.enable=!1,this.color.value="#00ff00"}load(t){void 0!==t&&(void 0!==t.blur&&(this.blur=t.blur),this.color=mi.create(this.color,t.color),void 0!==t.enable&&(this.enable=t.enable))}}class gi{constructor(){this.enable=!1,this.frequency=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=mi.create(this.color,t.color)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=t.opacity))}}class wi{constructor(){this.blink=!1,this.color=new mi,this.consent=!1,this.distance=100,this.enable=!1,this.frequency=1,this.opacity=1,this.shadow=new bi,this.triangles=new gi,this.width=1,this.warp=!1}load(t){void 0!==t&&(void 0!==t.id&&(this.id=t.id),void 0!==t.blink&&(this.blink=t.blink),this.color=mi.create(this.color,t.color),void 0!==t.consent&&(this.consent=t.consent),void 0!==t.distance&&(this.distance=t.distance),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=t.opacity),this.shadow.load(t.shadow),this.triangles.load(t.triangles),void 0!==t.width&&(this.width=t.width),void 0!==t.warp&&(this.warp=t.warp))}}class xi{constructor(){this.distance=200,this.enable=!1,this.rotate={x:3e3,y:3e3}}get rotateX(){return this.rotate.x}set rotateX(t){this.rotate.x=t}get rotateY(){return this.rotate.y}set rotateY(t){this.rotate.y=t}load(t){var i,e,o,s;if(!t)return;void 0!==t.distance&&(this.distance=t.distance),void 0!==t.enable&&(this.enable=t.enable);const n=null!==(e=null===(i=t.rotate)||void 0===i?void 0:i.x)&&void 0!==e?e:t.rotateX;void 0!==n&&(this.rotate.x=n);const a=null!==(s=null===(o=t.rotate)||void 0===o?void 0:o.y)&&void 0!==s?s:t.rotateY;void 0!==a&&(this.rotate.y=a)}}class ki{constructor(){this.enable=!1,this.length=10,this.fillColor=new mi,this.fillColor.value="#000000"}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),this.fillColor=mi.create(this.fillColor,t.fillColor),void 0!==t.length&&(this.length=t.length))}}class Pi{constructor(){this.enable=!1,this.minimumValue=0}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.minimumValue&&(this.minimumValue=t.minimumValue))}}class Mi{constructor(){this.random=new Pi,this.value=0}load(t){t&&("boolean"==typeof t.random?this.random.enable=t.random:this.random.load(t.random),void 0!==t.value&&(this.value=F(t.value,this.random.enable?this.random.minimumValue:void 0)))}}class zi extends Mi{constructor(){super()}}class Ci{constructor(){this.clamp=!0,this.delay=new zi,this.enable=!1,this.options={}}load(t){void 0!==t&&(void 0!==t.clamp&&(this.clamp=t.clamp),this.delay.load(t.delay),void 0!==t.enable&&(this.enable=t.enable),this.generator=t.generator,t.options&&(this.options=ot(this.options,t.options)))}}class Oi{constructor(){this.offset=0,this.value=90}load(t){void 0!==t&&(void 0!==t.offset&&(this.offset=t.offset),void 0!==t.value&&(this.value=t.value))}}class Si{constructor(){this.acceleration=9.81,this.enable=!1,this.inverse=!1,this.maxSpeed=50}load(t){t&&(void 0!==t.acceleration&&(this.acceleration=t.acceleration),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.inverse&&(this.inverse=t.inverse),void 0!==t.maxSpeed&&(this.maxSpeed=t.maxSpeed))}}class Ti{constructor(){this.default=f.out}load(t){var i,e,o,s;t&&(void 0!==t.default&&(this.default=t.default),this.bottom=null!==(i=t.bottom)&&void 0!==i?i:t.default,this.left=null!==(e=t.left)&&void 0!==e?e:t.default,this.right=null!==(o=t.right)&&void 0!==o?o:t.default,this.top=null!==(s=t.top)&&void 0!==s?s:t.default)}}class Ei{constructor(){this.acceleration=0,this.enable=!1}load(t){t&&(void 0!==t.acceleration&&(this.acceleration=F(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),this.position=t.position?ot({},t.position):void 0)}}class Ri{constructor(){this.angle=new Oi,this.attract=new xi,this.decay=0,this.distance={},this.direction=a.none,this.drift=0,this.enable=!1,this.gravity=new Si,this.path=new Ci,this.outModes=new Ti,this.random=!1,this.size=!1,this.speed=2,this.spin=new Ei,this.straight=!1,this.trail=new ki,this.vibrate=!1,this.warp=!1}get collisions(){return!1}set collisions(t){}get bounce(){return this.collisions}set bounce(t){this.collisions=t}get out_mode(){return this.outMode}set out_mode(t){this.outMode=t}get outMode(){return this.outModes.default}set outMode(t){this.outModes.default=t}get noise(){return this.path}set noise(t){this.path=t}load(t){var i,e,o;if(void 0===t)return;void 0!==t.angle&&("number"==typeof t.angle?this.angle.value=t.angle:this.angle.load(t.angle)),this.attract.load(t.attract),void 0!==t.decay&&(this.decay=t.decay),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.distance&&(this.distance="number"==typeof t.distance?{horizontal:t.distance,vertical:t.distance}:ot({},t.distance)),void 0!==t.drift&&(this.drift=F(t.drift)),void 0!==t.enable&&(this.enable=t.enable),this.gravity.load(t.gravity);const s=null!==(i=t.outMode)&&void 0!==i?i:t.out_mode;void 0===t.outModes&&void 0===s||("string"==typeof t.outModes||void 0===t.outModes&&void 0!==s?this.outModes.load({default:null!==(e=t.outModes)&&void 0!==e?e:s}):this.outModes.load(t.outModes)),this.path.load(null!==(o=t.path)&&void 0!==o?o:t.noise),void 0!==t.random&&(this.random=t.random),void 0!==t.size&&(this.size=t.size),void 0!==t.speed&&(this.speed=F(t.speed)),this.spin.load(t.spin),void 0!==t.straight&&(this.straight=t.straight),this.trail.load(t.trail),void 0!==t.vibrate&&(this.vibrate=t.vibrate),void 0!==t.warp&&(this.warp=t.warp)}}class Ai{constructor(){this.enable=!1,this.area=800,this.factor=1e3}get value_area(){return this.area}set value_area(t){this.area=t}load(t){var i;if(void 0===t)return;void 0!==t.enable&&(this.enable=t.enable);const e=null!==(i=t.area)&&void 0!==i?i:t.value_area;void 0!==e&&(this.area=e),void 0!==t.factor&&(this.factor=t.factor)}}class Di{constructor(){this.density=new Ai,this.limit=0,this.value=100}get max(){return this.limit}set max(t){this.limit=t}load(t){var i;if(void 0===t)return;this.density.load(t.density);const e=null!==(i=t.limit)&&void 0!==i?i:t.max;void 0!==e&&(this.limit=e),void 0!==t.value&&(this.value=t.value)}}class Ii{constructor(){this.count=0,this.enable=!1,this.speed=1,this.sync=!1}load(t){t&&(void 0!==t.count&&(this.count=t.count),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.sync&&(this.sync=t.sync))}}class Li extends Ii{constructor(){super(),this.destroy=w.none,this.enable=!1,this.speed=2,this.startValue=M.random,this.sync=!1}get opacity_min(){return this.minimumValue}set opacity_min(t){this.minimumValue=t}load(t){var i;void 0!==t&&(super.load(t),void 0!==t.destroy&&(this.destroy=t.destroy),void 0!==t.enable&&(this.enable=t.enable),this.minimumValue=null!==(i=t.minimumValue)&&void 0!==i?i:t.opacity_min,void 0!==t.speed&&(this.speed=t.speed),void 0!==t.startValue&&(this.startValue=t.startValue),void 0!==t.sync&&(this.sync=t.sync))}}class Fi extends Mi{constructor(){super(),this.animation=new Li,this.random.minimumValue=.1,this.value=1}get anim(){return this.animation}set anim(t){this.animation=t}load(t){var i;if(!t)return;super.load(t);const e=null!==(i=t.animation)&&void 0!==i?i:t.anim;void 0!==e&&(this.animation.load(e),this.value=F(this.value,this.animation.enable?this.animation.minimumValue:void 0))}}class Hi{constructor(){this.options={},this.type=P.circle}get image(){var t;return null!==(t=this.options[P.image])&&void 0!==t?t:this.options[P.images]}set image(t){this.options[P.image]=t,this.options[P.images]=t}get custom(){return this.options}set custom(t){this.options=t}get images(){return this.image}set images(t){this.image=t}get stroke(){return[]}set stroke(t){}get character(){var t;return null!==(t=this.options[P.character])&&void 0!==t?t:this.options[P.char]}set character(t){this.options[P.character]=t,this.options[P.char]=t}get polygon(){var t;return null!==(t=this.options[P.polygon])&&void 0!==t?t:this.options[P.star]}set polygon(t){this.options[P.polygon]=t,this.options[P.star]=t}load(t){var i,e,o;if(void 0===t)return;const s=null!==(i=t.options)&&void 0!==i?i:t.custom;if(void 0!==s)for(const t in s){const i=s[t];void 0!==i&&(this.options[t]=ot(null!==(e=this.options[t])&&void 0!==e?e:{},i))}this.loadShape(t.character,P.character,P.char,!0),this.loadShape(t.polygon,P.polygon,P.star,!1),this.loadShape(null!==(o=t.image)&&void 0!==o?o:t.images,P.image,P.images,!0),void 0!==t.type&&(this.type=t.type)}loadShape(t,i,e,o){var s,n,a,r;void 0!==t&&(t instanceof Array?(this.options[i]instanceof Array||(this.options[i]=[],this.options[e]&&!o||(this.options[e]=[])),this.options[i]=ot(null!==(s=this.options[i])&&void 0!==s?s:[],t),this.options[e]&&!o||(this.options[e]=ot(null!==(n=this.options[e])&&void 0!==n?n:[],t))):(this.options[i]instanceof Array&&(this.options[i]={},this.options[e]&&!o||(this.options[e]={})),this.options[i]=ot(null!==(a=this.options[i])&&void 0!==a?a:{},t),this.options[e]&&!o||(this.options[e]=ot(null!==(r=this.options[e])&&void 0!==r?r:{},t))))}}class qi extends Ii{constructor(){super(),this.destroy=w.none,this.enable=!1,this.speed=5,this.startValue=M.random,this.sync=!1}get size_min(){return this.minimumValue}set size_min(t){this.minimumValue=t}load(t){var i;void 0!==t&&(super.load(t),void 0!==t.destroy&&(this.destroy=t.destroy),void 0!==t.enable&&(this.enable=t.enable),this.minimumValue=null!==(i=t.minimumValue)&&void 0!==i?i:t.size_min,void 0!==t.speed&&(this.speed=t.speed),void 0!==t.startValue&&(this.startValue=t.startValue),void 0!==t.sync&&(this.sync=t.sync))}}class _i extends Mi{constructor(){super(),this.animation=new qi,this.random.minimumValue=1,this.value=3}get anim(){return this.animation}set anim(t){this.animation=t}load(t){var i;if(!t)return;super.load(t);const e=null!==(i=t.animation)&&void 0!==i?i:t.anim;void 0!==e&&(this.animation.load(e),this.value=F(this.value,this.animation.enable?this.animation.minimumValue:void 0))}}class Vi{constructor(){this.enable=!1,this.speed=0,this.sync=!1}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.sync&&(this.sync=t.sync))}}class Bi extends Mi{constructor(){super(),this.animation=new Vi,this.direction=r.clockwise,this.path=!1,this.value=0}load(t){t&&(super.load(t),void 0!==t.direction&&(this.direction=t.direction),this.animation.load(t.animation),void 0!==t.path&&(this.path=t.path))}}class Wi{constructor(){this.blur=0,this.color=new mi,this.enable=!1,this.offset={x:0,y:0},this.color.value="#000000"}load(t){void 0!==t&&(void 0!==t.blur&&(this.blur=t.blur),this.color=mi.create(this.color,t.color),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.offset&&(void 0!==t.offset.x&&(this.offset.x=t.offset.x),void 0!==t.offset.y&&(this.offset.y=t.offset.y)))}}class Gi{constructor(){this.count=0,this.enable=!1,this.offset=0,this.speed=1,this.sync=!0}load(t){void 0!==t&&(void 0!==t.count&&(this.count=t.count),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.offset&&(this.offset=F(t.offset)),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.sync&&(this.sync=t.sync))}}class Ui{constructor(){this.h=new Gi,this.s=new Gi,this.l=new Gi}load(t){t&&(this.h.load(t.h),this.s.load(t.s),this.l.load(t.l))}}class Ni extends mi{constructor(){super(),this.animation=new Ui}static create(t,i){const e=null!=t?t:new Ni;return void 0!==i&&e.load("string"==typeof i?{value:i}:i),e}load(t){if(super.load(t),!t)return;const i=t.animation;void 0!==i&&(void 0!==i.enable?this.animation.h.load(i):this.animation.load(t.animation))}}class $i{constructor(){this.width=0}load(t){void 0!==t&&(void 0!==t.color&&(this.color=Ni.create(this.color,t.color)),void 0!==t.width&&(this.width=t.width),void 0!==t.opacity&&(this.opacity=t.opacity))}}class ji extends Mi{constructor(){super(),this.random.minimumValue=.1,this.value=1}}class Qi{constructor(){this.horizontal=new ji,this.vertical=new ji}load(t){t&&(this.horizontal.load(t.horizontal),this.vertical.load(t.vertical))}}class Ji{constructor(){this.enable=!0,this.retries=0}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.retries&&(this.retries=t.retries))}}class Xi{constructor(){this.bounce=new Qi,this.enable=!1,this.mode=v.bounce,this.overlap=new Ji}load(t){void 0!==t&&(this.bounce.load(t.bounce),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),this.over