@tsparticles/basic 3.7.0 → 3.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/browser/index.js CHANGED
@@ -9,7 +9,7 @@ import { loadOutModesUpdater } from "@tsparticles/updater-out-modes";
9
9
  import { loadRgbColorPlugin } from "@tsparticles/plugin-rgb-color";
10
10
  import { loadSizeUpdater } from "@tsparticles/updater-size";
11
11
  export async function loadBasic(engine, refresh = true) {
12
- assertValidVersion(engine, "3.7.0");
12
+ assertValidVersion(engine, "3.7.1");
13
13
  await loadHexColorPlugin(engine, false);
14
14
  await loadHslColorPlugin(engine, false);
15
15
  await loadRgbColorPlugin(engine, false);
package/cjs/index.js CHANGED
@@ -12,7 +12,7 @@ const updater_out_modes_1 = require("@tsparticles/updater-out-modes");
12
12
  const plugin_rgb_color_1 = require("@tsparticles/plugin-rgb-color");
13
13
  const updater_size_1 = require("@tsparticles/updater-size");
14
14
  async function loadBasic(engine, refresh = true) {
15
- (0, engine_1.assertValidVersion)(engine, "3.7.0");
15
+ (0, engine_1.assertValidVersion)(engine, "3.7.1");
16
16
  await (0, plugin_hex_color_1.loadHexColorPlugin)(engine, false);
17
17
  await (0, plugin_hsl_color_1.loadHslColorPlugin)(engine, false);
18
18
  await (0, plugin_rgb_color_1.loadRgbColorPlugin)(engine, false);
package/esm/index.js CHANGED
@@ -9,7 +9,7 @@ import { loadOutModesUpdater } from "@tsparticles/updater-out-modes";
9
9
  import { loadRgbColorPlugin } from "@tsparticles/plugin-rgb-color";
10
10
  import { loadSizeUpdater } from "@tsparticles/updater-size";
11
11
  export async function loadBasic(engine, refresh = true) {
12
- assertValidVersion(engine, "3.7.0");
12
+ assertValidVersion(engine, "3.7.1");
13
13
  await loadHexColorPlugin(engine, false);
14
14
  await loadHslColorPlugin(engine, false);
15
15
  await loadRgbColorPlugin(engine, false);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/basic",
3
- "version": "3.7.0",
3
+ "version": "3.7.1",
4
4
  "description": "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.",
5
5
  "homepage": "https://particles.js.org",
6
6
  "repository": {
@@ -99,16 +99,16 @@
99
99
  "./package.json": "./package.json"
100
100
  },
101
101
  "dependencies": {
102
- "@tsparticles/engine": "3.7.0",
103
- "@tsparticles/move-base": "3.7.0",
104
- "@tsparticles/plugin-hex-color": "3.7.0",
105
- "@tsparticles/plugin-hsl-color": "3.7.0",
106
- "@tsparticles/plugin-rgb-color": "3.7.0",
107
- "@tsparticles/shape-circle": "3.7.0",
108
- "@tsparticles/updater-color": "3.7.0",
109
- "@tsparticles/updater-opacity": "3.7.0",
110
- "@tsparticles/updater-out-modes": "3.7.0",
111
- "@tsparticles/updater-size": "3.7.0"
102
+ "@tsparticles/engine": "3.7.1",
103
+ "@tsparticles/move-base": "3.7.1",
104
+ "@tsparticles/plugin-hex-color": "3.7.1",
105
+ "@tsparticles/plugin-hsl-color": "3.7.1",
106
+ "@tsparticles/plugin-rgb-color": "3.7.1",
107
+ "@tsparticles/shape-circle": "3.7.1",
108
+ "@tsparticles/updater-color": "3.7.1",
109
+ "@tsparticles/updater-opacity": "3.7.1",
110
+ "@tsparticles/updater-out-modes": "3.7.1",
111
+ "@tsparticles/updater-size": "3.7.1"
112
112
  },
113
113
  "publishConfig": {
114
114
  "access": "public"
package/report.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>@tsparticles/basic [24 Nov 2024 at 19:30]</title>
6
+ <title>@tsparticles/basic [24 Nov 2024 at 23:47]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v3.7.0
7
+ * v3.7.1
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -44,7 +44,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
44
44
  \*******************************/
45
45
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
46
46
 
47
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadBasic: () => (/* binding */ loadBasic)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/move-base */ \"../../move/base/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/shape-circle */ \"../../shapes/circle/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tsparticles/updater-color */ \"../../updaters/color/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tsparticles/plugin-hex-color */ \"../../plugins/colors/hexColor/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tsparticles/plugin-hsl-color */ \"../../plugins/colors/hslColor/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @tsparticles/updater-opacity */ \"../../updaters/opacity/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @tsparticles/updater-out-modes */ \"../../updaters/outModes/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @tsparticles/plugin-rgb-color */ \"../../plugins/colors/rgbColor/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @tsparticles/updater-size */ \"../../updaters/size/dist/browser/index.js\");\n\n\n\n\n\n\n\n\n\n\nasync function loadBasic(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await (0,_tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__.loadHexColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__.loadHslColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__.loadRgbColorPlugin)(engine, false);\n await (0,_tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__.loadBaseMover)(engine, false);\n await (0,_tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__.loadCircleShape)(engine, false);\n await (0,_tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__.loadColorUpdater)(engine, false);\n await (0,_tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__.loadOpacityUpdater)(engine, false);\n await (0,_tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__.loadOutModesUpdater)(engine, false);\n await (0,_tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__.loadSizeUpdater)(engine, false);\n await engine.refresh(refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/./dist/browser/index.js?");
47
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadBasic: () => (/* binding */ loadBasic)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/move-base */ \"../../move/base/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/shape-circle */ \"../../shapes/circle/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tsparticles/updater-color */ \"../../updaters/color/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tsparticles/plugin-hex-color */ \"../../plugins/colors/hexColor/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tsparticles/plugin-hsl-color */ \"../../plugins/colors/hslColor/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @tsparticles/updater-opacity */ \"../../updaters/opacity/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @tsparticles/updater-out-modes */ \"../../updaters/outModes/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @tsparticles/plugin-rgb-color */ \"../../plugins/colors/rgbColor/dist/browser/index.js\");\n/* harmony import */ var _tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @tsparticles/updater-size */ \"../../updaters/size/dist/browser/index.js\");\n\n\n\n\n\n\n\n\n\n\nasync function loadBasic(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await (0,_tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__.loadHexColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__.loadHslColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__.loadRgbColorPlugin)(engine, false);\n await (0,_tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__.loadBaseMover)(engine, false);\n await (0,_tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__.loadCircleShape)(engine, false);\n await (0,_tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__.loadColorUpdater)(engine, false);\n await (0,_tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__.loadOpacityUpdater)(engine, false);\n await (0,_tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__.loadOutModesUpdater)(engine, false);\n await (0,_tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__.loadSizeUpdater)(engine, false);\n await engine.refresh(refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/./dist/browser/index.js?");
48
48
 
49
49
  /***/ }),
50
50
 
@@ -54,7 +54,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
54
54
  \************************************************/
55
55
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
56
56
 
57
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Canvas: () => (/* binding */ Canvas)\n/* harmony export */ });\n/* harmony import */ var _Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Utils/CanvasUtils.js */ \"../../engine/dist/browser/Utils/CanvasUtils.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"../../engine/dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Utils/ColorUtils.js */ \"../../engine/dist/browser/Utils/ColorUtils.js\");\n/* harmony import */ var _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Utils/Constants.js */ \"../../engine/dist/browser/Core/Utils/Constants.js\");\n\n\n\n\nfunction setTransformValue(factor, newFactor, key) {\n const newValue = newFactor[key],\n defaultValue = 1;\n if (newValue !== undefined) {\n factor[key] = (factor[key] ?? defaultValue) * newValue;\n }\n}\nfunction setStyle(canvas, style, important = false) {\n if (!style) {\n return;\n }\n const element = canvas;\n if (!element) {\n return;\n }\n const elementStyle = element.style;\n if (!elementStyle) {\n return;\n }\n for (const key in style) {\n const value = style[key];\n elementStyle.setProperty(key, value, important ? \"important\" : \"\");\n }\n}\nclass Canvas {\n constructor(container, engine) {\n this.container = container;\n this._applyPostDrawUpdaters = particle => {\n for (const updater of this._postDrawUpdaters) {\n updater.afterDraw?.(particle);\n }\n };\n this._applyPreDrawUpdaters = (ctx, particle, radius, zOpacity, colorStyles, transform) => {\n for (const updater of this._preDrawUpdaters) {\n if (updater.getColorStyles) {\n const {\n fill,\n stroke\n } = updater.getColorStyles(particle, ctx, radius, zOpacity);\n if (fill) {\n colorStyles.fill = fill;\n }\n if (stroke) {\n colorStyles.stroke = stroke;\n }\n }\n if (updater.getTransformValues) {\n const updaterTransform = updater.getTransformValues(particle);\n for (const key in updaterTransform) {\n setTransformValue(transform, updaterTransform, key);\n }\n }\n updater.beforeDraw?.(particle);\n }\n };\n this._applyResizePlugins = () => {\n for (const plugin of this._resizePlugins) {\n plugin.resize?.();\n }\n };\n this._getPluginParticleColors = particle => {\n let fColor, sColor;\n for (const plugin of this._colorPlugins) {\n if (!fColor && plugin.particleFillColor) {\n fColor = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToHsl)(this._engine, plugin.particleFillColor(particle));\n }\n if (!sColor && plugin.particleStrokeColor) {\n sColor = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToHsl)(this._engine, plugin.particleStrokeColor(particle));\n }\n if (fColor && sColor) {\n break;\n }\n }\n return [fColor, sColor];\n };\n this._initCover = async () => {\n const options = this.container.actualOptions,\n cover = options.backgroundMask.cover,\n color = cover.color;\n if (color) {\n const coverRgb = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToRgb)(this._engine, color);\n if (coverRgb) {\n const coverColor = {\n ...coverRgb,\n a: cover.opacity\n };\n this._coverColorStyle = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromRgb)(coverColor, coverColor.a);\n }\n } else {\n await new Promise((resolve, reject) => {\n if (!cover.image) {\n return;\n }\n const img = document.createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._coverImage = {\n image: img,\n opacity: cover.opacity\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n reject(evt.error);\n });\n img.src = cover.image;\n });\n }\n };\n this._initStyle = () => {\n const element = this.element,\n options = this.container.actualOptions;\n if (!element) {\n return;\n }\n if (this._fullScreen) {\n this._originalStyle = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.deepExtend)({}, element.style);\n this._setFullScreenStyle();\n } else {\n this._resetOriginalStyle();\n }\n for (const key in options.style) {\n if (!key || !options.style) {\n continue;\n }\n const value = options.style[key];\n if (!value) {\n continue;\n }\n element.style.setProperty(key, value, \"important\");\n }\n };\n this._initTrail = async () => {\n const options = this.container.actualOptions,\n trail = options.particles.move.trail,\n trailFill = trail.fill;\n if (!trail.enable) {\n return;\n }\n const factorNumerator = 1,\n opacity = factorNumerator / trail.length;\n if (trailFill.color) {\n const fillColor = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToRgb)(this._engine, trailFill.color);\n if (!fillColor) {\n return;\n }\n this._trailFill = {\n color: {\n ...fillColor\n },\n opacity\n };\n } else {\n await new Promise((resolve, reject) => {\n if (!trailFill.image) {\n return;\n }\n const img = document.createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._trailFill = {\n image: img,\n opacity\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n reject(evt.error);\n });\n img.src = trailFill.image;\n });\n }\n };\n this._paintBase = baseColor => {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.paintBase)(ctx, this.size, baseColor));\n };\n this._paintImage = (image, opacity) => {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.paintImage)(ctx, this.size, image, opacity));\n };\n this._repairStyle = () => {\n const element = this.element;\n if (!element) {\n return;\n }\n this._safeMutationObserver(observer => observer.disconnect());\n this._initStyle();\n this.initBackground();\n this._safeMutationObserver(observer => {\n if (!element || !(element instanceof Node)) {\n return;\n }\n observer.observe(element, {\n attributes: true\n });\n });\n };\n this._resetOriginalStyle = () => {\n const element = this.element,\n originalStyle = this._originalStyle;\n if (!(element && originalStyle)) {\n return;\n }\n setStyle(element, originalStyle);\n };\n this._safeMutationObserver = callback => {\n if (!this._mutationObserver) {\n return;\n }\n callback(this._mutationObserver);\n };\n this._setFullScreenStyle = () => {\n const element = this.element;\n if (!element) {\n return;\n }\n const radix = 10,\n zIndex = this.container.actualOptions.fullScreen.zIndex.toString(radix);\n setStyle(element, {\n position: \"fixed\",\n \"z-index\": zIndex,\n zIndex: zIndex,\n top: \"0\",\n left: \"0\",\n width: \"100%\",\n height: \"100%\"\n }, true);\n };\n this._engine = engine;\n this._standardSize = {\n height: 0,\n width: 0\n };\n const pxRatio = container.retina.pixelRatio,\n stdSize = this._standardSize;\n this.size = {\n height: stdSize.height * pxRatio,\n width: stdSize.width * pxRatio\n };\n this._context = null;\n this._generated = false;\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n get _fullScreen() {\n return this.container.actualOptions.fullScreen.enable;\n }\n clear() {\n const options = this.container.actualOptions,\n trail = options.particles.move.trail,\n trailFill = this._trailFill,\n minimumLength = 0;\n if (options.backgroundMask.enable) {\n this.paint();\n } else if (trail.enable && trail.length > minimumLength && trailFill) {\n if (trailFill.color) {\n this._paintBase((0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromRgb)(trailFill.color, trailFill.opacity));\n } else if (trailFill.image) {\n this._paintImage(trailFill.image, trailFill.opacity);\n }\n } else if (options.clear) {\n this.draw(ctx => {\n (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.clear)(ctx, this.size);\n });\n }\n }\n destroy() {\n this.stop();\n if (this._generated) {\n const element = this.element;\n element?.remove();\n } else {\n this._resetOriginalStyle();\n }\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n draw(cb) {\n const ctx = this._context;\n if (!ctx) {\n return;\n }\n return cb(ctx);\n }\n drawAsync(cb) {\n const ctx = this._context;\n if (!ctx) {\n return undefined;\n }\n return cb(ctx);\n }\n drawParticle(particle, delta) {\n if (particle.spawning || particle.destroyed) {\n return;\n }\n const radius = particle.getRadius(),\n minimumSize = 0;\n if (radius <= minimumSize) {\n return;\n }\n const pfColor = particle.getFillColor(),\n psColor = particle.getStrokeColor() ?? pfColor;\n let [fColor, sColor] = this._getPluginParticleColors(particle);\n if (!fColor) {\n fColor = pfColor;\n }\n if (!sColor) {\n sColor = psColor;\n }\n if (!fColor && !sColor) {\n return;\n }\n this.draw(ctx => {\n const container = this.container,\n options = container.actualOptions,\n zIndexOptions = particle.options.zIndex,\n zIndexFactorOffset = 1,\n zIndexFactor = zIndexFactorOffset - particle.zIndexFactor,\n zOpacityFactor = zIndexFactor ** zIndexOptions.opacityRate,\n defaultOpacity = 1,\n opacity = particle.bubble.opacity ?? particle.opacity?.value ?? defaultOpacity,\n strokeOpacity = particle.strokeOpacity ?? opacity,\n zOpacity = opacity * zOpacityFactor,\n zStrokeOpacity = strokeOpacity * zOpacityFactor,\n transform = {},\n colorStyles = {\n fill: fColor ? (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromHsl)(fColor, zOpacity) : undefined\n };\n colorStyles.stroke = sColor ? (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromHsl)(sColor, zStrokeOpacity) : colorStyles.fill;\n this._applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform);\n (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.drawParticle)({\n container,\n context: ctx,\n particle,\n delta,\n colorStyles,\n backgroundMask: options.backgroundMask.enable,\n composite: options.backgroundMask.composite,\n radius: radius * zIndexFactor ** zIndexOptions.sizeRate,\n opacity: zOpacity,\n shadow: particle.options.shadow,\n transform\n });\n this._applyPostDrawUpdaters(particle);\n });\n }\n drawParticlePlugin(plugin, particle, delta) {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.drawParticlePlugin)(ctx, plugin, particle, delta));\n }\n drawPlugin(plugin, delta) {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.drawPlugin)(ctx, plugin, delta));\n }\n async init() {\n this._safeMutationObserver(obs => obs.disconnect());\n this._mutationObserver = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeMutationObserver)(records => {\n for (const record of records) {\n if (record.type === \"attributes\" && record.attributeName === \"style\") {\n this._repairStyle();\n }\n }\n });\n this.resize();\n this._initStyle();\n await this._initCover();\n try {\n await this._initTrail();\n } catch (e) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getLogger)().error(e);\n }\n this.initBackground();\n this._safeMutationObserver(obs => {\n if (!this.element || !(this.element instanceof Node)) {\n return;\n }\n obs.observe(this.element, {\n attributes: true\n });\n });\n this.initUpdaters();\n this.initPlugins();\n this.paint();\n }\n initBackground() {\n const options = this.container.actualOptions,\n background = options.background,\n element = this.element;\n if (!element) {\n return;\n }\n const elementStyle = element.style;\n if (!elementStyle) {\n return;\n }\n if (background.color) {\n const color = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToRgb)(this._engine, background.color);\n elementStyle.backgroundColor = color ? (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromRgb)(color, background.opacity) : \"\";\n } else {\n elementStyle.backgroundColor = \"\";\n }\n elementStyle.backgroundImage = background.image || \"\";\n elementStyle.backgroundPosition = background.position || \"\";\n elementStyle.backgroundRepeat = background.repeat || \"\";\n elementStyle.backgroundSize = background.size || \"\";\n }\n initPlugins() {\n this._resizePlugins = [];\n for (const plugin of this.container.plugins.values()) {\n if (plugin.resize) {\n this._resizePlugins.push(plugin);\n }\n if (plugin.particleFillColor ?? plugin.particleStrokeColor) {\n this._colorPlugins.push(plugin);\n }\n }\n }\n initUpdaters() {\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n for (const updater of this.container.particles.updaters) {\n if (updater.afterDraw) {\n this._postDrawUpdaters.push(updater);\n }\n if (updater.getColorStyles ?? updater.getTransformValues ?? updater.beforeDraw) {\n this._preDrawUpdaters.push(updater);\n }\n }\n }\n loadCanvas(canvas) {\n if (this._generated && this.element) {\n this.element.remove();\n }\n this._generated = canvas.dataset && _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_3__.generatedAttribute in canvas.dataset ? canvas.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_3__.generatedAttribute] === \"true\" : this._generated;\n this.element = canvas;\n this.element.ariaHidden = \"true\";\n this._originalStyle = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.deepExtend)({}, this.element.style);\n const standardSize = this._standardSize;\n standardSize.height = canvas.offsetHeight;\n standardSize.width = canvas.offsetWidth;\n const pxRatio = this.container.retina.pixelRatio;\n const retinaSize = this.size;\n retinaSize.height = standardSize.height * pxRatio;\n retinaSize.width = standardSize.width * pxRatio;\n this._context = this.element.getContext(\"2d\");\n this._safeMutationObserver(obs => {\n if (!this.element || !(this.element instanceof Node)) {\n return;\n }\n obs.observe(this.element, {\n attributes: true\n });\n });\n this.container.retina.init();\n this.initBackground();\n }\n paint() {\n const options = this.container.actualOptions;\n this.draw(ctx => {\n if (options.backgroundMask.enable && options.backgroundMask.cover) {\n (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.clear)(ctx, this.size);\n if (this._coverImage) {\n this._paintImage(this._coverImage.image, this._coverImage.opacity);\n } else if (this._coverColorStyle) {\n this._paintBase(this._coverColorStyle);\n } else {\n this._paintBase();\n }\n } else {\n this._paintBase();\n }\n });\n }\n resize() {\n if (!this.element) {\n return false;\n }\n const container = this.container,\n currentSize = container.canvas._standardSize,\n newSize = {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n if (newSize.height === currentSize.height && newSize.width === currentSize.width) {\n return false;\n }\n const oldSize = {\n ...currentSize\n },\n pxRatio = container.retina.pixelRatio;\n currentSize.height = newSize.height;\n currentSize.width = newSize.width;\n const retinaSize = this.size;\n this.element.width = retinaSize.width = currentSize.width * pxRatio;\n this.element.height = retinaSize.height = currentSize.height * pxRatio;\n if (this.container.started) {\n container.particles.setResizeFactor({\n width: currentSize.width / oldSize.width,\n height: currentSize.height / oldSize.height\n });\n }\n return true;\n }\n stop() {\n this._safeMutationObserver(obs => obs.disconnect());\n this._mutationObserver = undefined;\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.clear)(ctx, this.size));\n }\n async windowResize() {\n if (!this.element || !this.resize()) {\n return;\n }\n const container = this.container,\n needsRefresh = container.updateActualOptions();\n container.particles.setDensity();\n this._applyResizePlugins();\n if (needsRefresh) {\n await container.refresh();\n }\n }\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../engine/dist/browser/Core/Canvas.js?");
57
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Canvas: () => (/* binding */ Canvas)\n/* harmony export */ });\n/* harmony import */ var _Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Utils/CanvasUtils.js */ \"../../engine/dist/browser/Utils/CanvasUtils.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"../../engine/dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Utils/ColorUtils.js */ \"../../engine/dist/browser/Utils/ColorUtils.js\");\n/* harmony import */ var _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Utils/Constants.js */ \"../../engine/dist/browser/Core/Utils/Constants.js\");\n\n\n\n\nfunction setTransformValue(factor, newFactor, key) {\n const newValue = newFactor[key],\n defaultValue = 1;\n if (newValue !== undefined) {\n factor[key] = (factor[key] ?? defaultValue) * newValue;\n }\n}\nfunction setStyle(canvas, style, important = false) {\n if (!style) {\n return;\n }\n const element = canvas;\n if (!element) {\n return;\n }\n const elementStyle = element.style;\n if (!elementStyle) {\n return;\n }\n for (const key in style) {\n const value = style[key];\n elementStyle.setProperty(key, value, important ? \"important\" : \"\");\n }\n}\nclass Canvas {\n constructor(container, engine) {\n this.container = container;\n this._applyPostDrawUpdaters = particle => {\n for (const updater of this._postDrawUpdaters) {\n updater.afterDraw?.(particle);\n }\n };\n this._applyPreDrawUpdaters = (ctx, particle, radius, zOpacity, colorStyles, transform) => {\n for (const updater of this._preDrawUpdaters) {\n if (updater.getColorStyles) {\n const {\n fill,\n stroke\n } = updater.getColorStyles(particle, ctx, radius, zOpacity);\n if (fill) {\n colorStyles.fill = fill;\n }\n if (stroke) {\n colorStyles.stroke = stroke;\n }\n }\n if (updater.getTransformValues) {\n const updaterTransform = updater.getTransformValues(particle);\n for (const key in updaterTransform) {\n setTransformValue(transform, updaterTransform, key);\n }\n }\n updater.beforeDraw?.(particle);\n }\n };\n this._applyResizePlugins = () => {\n for (const plugin of this._resizePlugins) {\n plugin.resize?.();\n }\n };\n this._getPluginParticleColors = particle => {\n let fColor, sColor;\n for (const plugin of this._colorPlugins) {\n if (!fColor && plugin.particleFillColor) {\n fColor = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToHsl)(this._engine, plugin.particleFillColor(particle));\n }\n if (!sColor && plugin.particleStrokeColor) {\n sColor = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToHsl)(this._engine, plugin.particleStrokeColor(particle));\n }\n if (fColor && sColor) {\n break;\n }\n }\n return [fColor, sColor];\n };\n this._initCover = async () => {\n const options = this.container.actualOptions,\n cover = options.backgroundMask.cover,\n color = cover.color;\n if (color) {\n const coverRgb = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToRgb)(this._engine, color);\n if (coverRgb) {\n const coverColor = {\n ...coverRgb,\n a: cover.opacity\n };\n this._coverColorStyle = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromRgb)(coverColor, coverColor.a);\n }\n } else {\n await new Promise((resolve, reject) => {\n if (!cover.image) {\n return;\n }\n const img = document.createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._coverImage = {\n image: img,\n opacity: cover.opacity\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n reject(evt.error);\n });\n img.src = cover.image;\n });\n }\n };\n this._initStyle = () => {\n const element = this.element,\n options = this.container.actualOptions;\n if (!element) {\n return;\n }\n if (this._fullScreen) {\n this._originalStyle = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.deepExtend)({}, element.style);\n this._setFullScreenStyle();\n } else {\n this._resetOriginalStyle();\n }\n for (const key in options.style) {\n if (!key || !options.style) {\n continue;\n }\n const value = options.style[key];\n if (!value) {\n continue;\n }\n element.style.setProperty(key, value, \"important\");\n }\n };\n this._initTrail = async () => {\n const options = this.container.actualOptions,\n trail = options.particles.move.trail,\n trailFill = trail.fill;\n if (!trail.enable) {\n return;\n }\n const factorNumerator = 1,\n opacity = factorNumerator / trail.length;\n if (trailFill.color) {\n const fillColor = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToRgb)(this._engine, trailFill.color);\n if (!fillColor) {\n return;\n }\n this._trailFill = {\n color: {\n ...fillColor\n },\n opacity\n };\n } else {\n await new Promise((resolve, reject) => {\n if (!trailFill.image) {\n return;\n }\n const img = document.createElement(\"img\");\n img.addEventListener(\"load\", () => {\n this._trailFill = {\n image: img,\n opacity\n };\n resolve();\n });\n img.addEventListener(\"error\", evt => {\n reject(evt.error);\n });\n img.src = trailFill.image;\n });\n }\n };\n this._paintBase = baseColor => {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.paintBase)(ctx, this.size, baseColor));\n };\n this._paintImage = (image, opacity) => {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.paintImage)(ctx, this.size, image, opacity));\n };\n this._repairStyle = () => {\n const element = this.element;\n if (!element) {\n return;\n }\n this._safeMutationObserver(observer => observer.disconnect());\n this._initStyle();\n this.initBackground();\n this._safeMutationObserver(observer => {\n if (!element || !(element instanceof Node)) {\n return;\n }\n observer.observe(element, {\n attributes: true\n });\n });\n };\n this._resetOriginalStyle = () => {\n const element = this.element,\n originalStyle = this._originalStyle;\n if (!(element && originalStyle)) {\n return;\n }\n setStyle(element, originalStyle);\n };\n this._safeMutationObserver = callback => {\n if (!this._mutationObserver) {\n return;\n }\n callback(this._mutationObserver);\n };\n this._setFullScreenStyle = () => {\n const element = this.element;\n if (!element) {\n return;\n }\n const radix = 10,\n zIndex = this.container.actualOptions.fullScreen.zIndex.toString(radix);\n setStyle(element, {\n position: \"fixed\",\n \"z-index\": zIndex,\n zIndex: zIndex,\n top: \"0\",\n left: \"0\",\n width: \"100%\",\n height: \"100%\"\n }, true);\n };\n this._engine = engine;\n this._standardSize = {\n height: 0,\n width: 0\n };\n const pxRatio = container.retina.pixelRatio,\n stdSize = this._standardSize;\n this.size = {\n height: stdSize.height * pxRatio,\n width: stdSize.width * pxRatio\n };\n this._context = null;\n this._generated = false;\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n get _fullScreen() {\n return this.container.actualOptions.fullScreen.enable;\n }\n clear() {\n const options = this.container.actualOptions,\n trail = options.particles.move.trail,\n trailFill = this._trailFill,\n minimumLength = 0;\n if (options.backgroundMask.enable) {\n this.paint();\n } else if (trail.enable && trail.length > minimumLength && trailFill) {\n if (trailFill.color) {\n this._paintBase((0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromRgb)(trailFill.color, trailFill.opacity));\n } else if (trailFill.image) {\n this._paintImage(trailFill.image, trailFill.opacity);\n }\n } else if (options.clear) {\n this.draw(ctx => {\n (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.clear)(ctx, this.size);\n });\n }\n }\n destroy() {\n this.stop();\n if (this._generated) {\n const element = this.element;\n element?.remove();\n } else {\n this._resetOriginalStyle();\n }\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n draw(cb) {\n const ctx = this._context;\n if (!ctx) {\n return;\n }\n return cb(ctx);\n }\n drawAsync(cb) {\n const ctx = this._context;\n if (!ctx) {\n return undefined;\n }\n return cb(ctx);\n }\n drawParticle(particle, delta) {\n if (particle.spawning || particle.destroyed) {\n return;\n }\n const radius = particle.getRadius(),\n minimumSize = 0;\n if (radius <= minimumSize) {\n return;\n }\n const pfColor = particle.getFillColor(),\n psColor = particle.getStrokeColor() ?? pfColor;\n let [fColor, sColor] = this._getPluginParticleColors(particle);\n if (!fColor) {\n fColor = pfColor;\n }\n if (!sColor) {\n sColor = psColor;\n }\n if (!fColor && !sColor) {\n return;\n }\n this.draw(ctx => {\n const container = this.container,\n options = container.actualOptions,\n zIndexOptions = particle.options.zIndex,\n zIndexFactorOffset = 1,\n zIndexFactor = zIndexFactorOffset - particle.zIndexFactor,\n zOpacityFactor = zIndexFactor ** zIndexOptions.opacityRate,\n defaultOpacity = 1,\n opacity = particle.bubble.opacity ?? particle.opacity?.value ?? defaultOpacity,\n strokeOpacity = particle.strokeOpacity ?? opacity,\n zOpacity = opacity * zOpacityFactor,\n zStrokeOpacity = strokeOpacity * zOpacityFactor,\n transform = {},\n colorStyles = {\n fill: fColor ? (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromHsl)(fColor, zOpacity) : undefined\n };\n colorStyles.stroke = sColor ? (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromHsl)(sColor, zStrokeOpacity) : colorStyles.fill;\n this._applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform);\n (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.drawParticle)({\n container,\n context: ctx,\n particle,\n delta,\n colorStyles,\n backgroundMask: options.backgroundMask.enable,\n composite: options.backgroundMask.composite,\n radius: radius * zIndexFactor ** zIndexOptions.sizeRate,\n opacity: zOpacity,\n shadow: particle.options.shadow,\n transform\n });\n this._applyPostDrawUpdaters(particle);\n });\n }\n drawParticlePlugin(plugin, particle, delta) {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.drawParticlePlugin)(ctx, plugin, particle, delta));\n }\n drawPlugin(plugin, delta) {\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.drawPlugin)(ctx, plugin, delta));\n }\n async init() {\n this._safeMutationObserver(obs => obs.disconnect());\n this._mutationObserver = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeMutationObserver)(records => {\n for (const record of records) {\n if (record.type === \"attributes\" && record.attributeName === \"style\") {\n this._repairStyle();\n }\n }\n });\n this.resize();\n this._initStyle();\n await this._initCover();\n try {\n await this._initTrail();\n } catch (e) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getLogger)().error(e);\n }\n this.initBackground();\n this._safeMutationObserver(obs => {\n if (!this.element || !(this.element instanceof Node)) {\n return;\n }\n obs.observe(this.element, {\n attributes: true\n });\n });\n this.initUpdaters();\n this.initPlugins();\n this.paint();\n }\n initBackground() {\n const options = this.container.actualOptions,\n background = options.background,\n element = this.element;\n if (!element) {\n return;\n }\n const elementStyle = element.style;\n if (!elementStyle) {\n return;\n }\n if (background.color) {\n const color = (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.rangeColorToRgb)(this._engine, background.color);\n elementStyle.backgroundColor = color ? (0,_Utils_ColorUtils_js__WEBPACK_IMPORTED_MODULE_2__.getStyleFromRgb)(color, background.opacity) : \"\";\n } else {\n elementStyle.backgroundColor = \"\";\n }\n elementStyle.backgroundImage = background.image || \"\";\n elementStyle.backgroundPosition = background.position || \"\";\n elementStyle.backgroundRepeat = background.repeat || \"\";\n elementStyle.backgroundSize = background.size || \"\";\n }\n initPlugins() {\n this._resizePlugins = [];\n for (const plugin of this.container.plugins.values()) {\n if (plugin.resize) {\n this._resizePlugins.push(plugin);\n }\n if (plugin.particleFillColor ?? plugin.particleStrokeColor) {\n this._colorPlugins.push(plugin);\n }\n }\n }\n initUpdaters() {\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n for (const updater of this.container.particles.updaters) {\n if (updater.afterDraw) {\n this._postDrawUpdaters.push(updater);\n }\n if (updater.getColorStyles ?? updater.getTransformValues ?? updater.beforeDraw) {\n this._preDrawUpdaters.push(updater);\n }\n }\n }\n loadCanvas(canvas) {\n if (this._generated && this.element) {\n this.element.remove();\n }\n this._generated = canvas.dataset && _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_3__.generatedAttribute in canvas.dataset ? canvas.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_3__.generatedAttribute] === \"true\" : this._generated;\n this.element = canvas;\n this.element.ariaHidden = \"true\";\n this._originalStyle = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.deepExtend)({}, this.element.style);\n const standardSize = this._standardSize;\n standardSize.height = canvas.offsetHeight;\n standardSize.width = canvas.offsetWidth;\n const pxRatio = this.container.retina.pixelRatio,\n retinaSize = this.size;\n canvas.height = retinaSize.height = standardSize.height * pxRatio;\n canvas.width = retinaSize.width = standardSize.width * pxRatio;\n this._context = this.element.getContext(\"2d\");\n this._safeMutationObserver(obs => {\n if (!this.element || !(this.element instanceof Node)) {\n return;\n }\n obs.observe(this.element, {\n attributes: true\n });\n });\n this.container.retina.init();\n this.initBackground();\n }\n paint() {\n const options = this.container.actualOptions;\n this.draw(ctx => {\n if (options.backgroundMask.enable && options.backgroundMask.cover) {\n (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.clear)(ctx, this.size);\n if (this._coverImage) {\n this._paintImage(this._coverImage.image, this._coverImage.opacity);\n } else if (this._coverColorStyle) {\n this._paintBase(this._coverColorStyle);\n } else {\n this._paintBase();\n }\n } else {\n this._paintBase();\n }\n });\n }\n resize() {\n if (!this.element) {\n return false;\n }\n const container = this.container,\n currentSize = container.canvas._standardSize,\n newSize = {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n },\n pxRatio = container.retina.pixelRatio,\n retinaSize = {\n width: newSize.width * pxRatio,\n height: newSize.height * pxRatio\n };\n if (newSize.height === currentSize.height && newSize.width === currentSize.width && retinaSize.height === this.element.height && retinaSize.width === this.element.width) {\n return false;\n }\n const oldSize = {\n ...currentSize\n };\n currentSize.height = newSize.height;\n currentSize.width = newSize.width;\n const canvasSize = this.size;\n this.element.width = canvasSize.width = retinaSize.width;\n this.element.height = canvasSize.height = retinaSize.height;\n if (this.container.started) {\n container.particles.setResizeFactor({\n width: currentSize.width / oldSize.width,\n height: currentSize.height / oldSize.height\n });\n }\n return true;\n }\n stop() {\n this._safeMutationObserver(obs => obs.disconnect());\n this._mutationObserver = undefined;\n this.draw(ctx => (0,_Utils_CanvasUtils_js__WEBPACK_IMPORTED_MODULE_0__.clear)(ctx, this.size));\n }\n async windowResize() {\n if (!this.element || !this.resize()) {\n return;\n }\n const container = this.container,\n needsRefresh = container.updateActualOptions();\n container.particles.setDensity();\n this._applyResizePlugins();\n if (needsRefresh) {\n await container.refresh();\n }\n }\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../engine/dist/browser/Core/Canvas.js?");
58
58
 
59
59
  /***/ }),
60
60
 
@@ -74,7 +74,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
74
74
  \************************************************/
75
75
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
76
76
 
77
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Engine: () => (/* binding */ Engine)\n/* harmony export */ });\n/* harmony import */ var _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utils/Constants.js */ \"../../engine/dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"../../engine/dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Container_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Container.js */ \"../../engine/dist/browser/Core/Container.js\");\n/* harmony import */ var _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Utils/EventDispatcher.js */ \"../../engine/dist/browser/Utils/EventDispatcher.js\");\n/* harmony import */ var _Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Enums/Types/EventType.js */ \"../../engine/dist/browser/Enums/Types/EventType.js\");\n/* harmony import */ var _Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Utils/NumberUtils.js */ \"../../engine/dist/browser/Utils/NumberUtils.js\");\n\n\n\n\n\n\nasync function getItemsFromInitializer(container, map, initializers, force = false) {\n let res = map.get(container);\n if (!res || force) {\n res = await Promise.all([...initializers.values()].map(t => t(container)));\n map.set(container, res);\n }\n return res;\n}\nasync function getDataFromUrl(data) {\n const url = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(data.url, data.index);\n if (!url) {\n return data.fallback;\n }\n const response = await fetch(url);\n if (response.ok) {\n return await response.json();\n }\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getLogger)().error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} ${response.status} while retrieving config file`);\n return data.fallback;\n}\nconst generatedTrue = \"true\",\n generatedFalse = \"false\",\n canvasTag = \"canvas\",\n getCanvasFromContainer = domContainer => {\n let canvasEl;\n if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === canvasTag) {\n canvasEl = domContainer;\n if (!canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute]) {\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedFalse;\n }\n } else {\n const existingCanvases = domContainer.getElementsByTagName(canvasTag);\n if (existingCanvases.length) {\n const firstIndex = 0;\n canvasEl = existingCanvases[firstIndex];\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedFalse;\n } else {\n canvasEl = document.createElement(canvasTag);\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedTrue;\n domContainer.appendChild(canvasEl);\n }\n }\n const fullPercent = \"100%\";\n if (!canvasEl.style.width) {\n canvasEl.style.width = fullPercent;\n }\n if (!canvasEl.style.height) {\n canvasEl.style.height = fullPercent;\n }\n return canvasEl;\n },\n getDomContainer = (id, source) => {\n let domContainer = source ?? document.getElementById(id);\n if (domContainer) {\n return domContainer;\n }\n domContainer = document.createElement(\"div\");\n domContainer.id = id;\n domContainer.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedTrue;\n document.body.append(domContainer);\n return domContainer;\n };\nclass Engine {\n constructor() {\n this._configs = new Map();\n this._domArray = [];\n this._eventDispatcher = new _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_3__.EventDispatcher();\n this._initialized = false;\n this.plugins = [];\n this.colorManagers = new Map();\n this.easingFunctions = new Map();\n this._initializers = {\n interactors: new Map(),\n movers: new Map(),\n updaters: new Map()\n };\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.effectDrawers = new Map();\n this.shapeDrawers = new Map();\n this.pathGenerators = new Map();\n }\n get configs() {\n const res = {};\n for (const [name, config] of this._configs) {\n res[name] = config;\n }\n return res;\n }\n get items() {\n return this._domArray;\n }\n get version() {\n return \"3.7.0\";\n }\n async addColorManager(manager, refresh = true) {\n this.colorManagers.set(manager.key, manager);\n await this.refresh(refresh);\n }\n addConfig(config) {\n const key = config.key ?? config.name ?? \"default\";\n this._configs.set(key, config);\n this._eventDispatcher.dispatchEvent(_Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_4__.EventType.configAdded, {\n data: {\n name: key,\n config\n }\n });\n }\n async addEasing(name, easing, refresh = true) {\n if (this.getEasing(name)) {\n return;\n }\n this.easingFunctions.set(name, easing);\n await this.refresh(refresh);\n }\n async addEffect(effect, drawer, refresh = true) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.executeOnSingleOrMultiple)(effect, type => {\n if (!this.getEffectDrawer(type)) {\n this.effectDrawers.set(type, drawer);\n }\n });\n await this.refresh(refresh);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n async addInteractor(name, interactorInitializer, refresh = true) {\n this._initializers.interactors.set(name, interactorInitializer);\n await this.refresh(refresh);\n }\n async addMover(name, moverInitializer, refresh = true) {\n this._initializers.movers.set(name, moverInitializer);\n await this.refresh(refresh);\n }\n async addParticleUpdater(name, updaterInitializer, refresh = true) {\n this._initializers.updaters.set(name, updaterInitializer);\n await this.refresh(refresh);\n }\n async addPathGenerator(name, generator, refresh = true) {\n if (!this.getPathGenerator(name)) {\n this.pathGenerators.set(name, generator);\n }\n await this.refresh(refresh);\n }\n async addPlugin(plugin, refresh = true) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n await this.refresh(refresh);\n }\n async addPreset(preset, options, override = false, refresh = true) {\n if (override || !this.getPreset(preset)) {\n this.presets.set(preset, options);\n }\n await this.refresh(refresh);\n }\n async addShape(drawer, refresh = true) {\n for (const validType of drawer.validTypes) {\n if (this.getShapeDrawer(validType)) {\n continue;\n }\n this.shapeDrawers.set(validType, drawer);\n }\n await this.refresh(refresh);\n }\n clearPlugins(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n this.interactors.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n dom() {\n return this.items;\n }\n domItem(index) {\n return this.item(index);\n }\n async getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (plugin.needsPlugin(container.actualOptions)) {\n res.set(plugin.id, await plugin.getPlugin(container));\n }\n }\n return res;\n }\n getEasing(name) {\n return this.easingFunctions.get(name) ?? (value => value);\n }\n getEffectDrawer(type) {\n return this.effectDrawers.get(type);\n }\n async getInteractors(container, force = false) {\n return getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);\n }\n async getMovers(container, force = false) {\n return getItemsFromInitializer(container, this.movers, this._initializers.movers, force);\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\n }\n getPlugin(plugin) {\n return this.plugins.find(t => t.id === plugin);\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n getShapeDrawer(type) {\n return this.shapeDrawers.get(type);\n }\n getSupportedEffects() {\n return this.effectDrawers.keys();\n }\n getSupportedShapes() {\n return this.shapeDrawers.keys();\n }\n async getUpdaters(container, force = false) {\n return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);\n }\n init() {\n if (this._initialized) {\n return;\n }\n this._initialized = true;\n }\n item(index) {\n const {\n items\n } = this,\n item = items[index];\n if (!item || item.destroyed) {\n const deleteCount = 1;\n items.splice(index, deleteCount);\n return;\n }\n return item;\n }\n async load(params) {\n const randomFactor = 10000,\n id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_5__.getRandom)() * randomFactor)}`,\n {\n index,\n url\n } = params,\n options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options;\n const currentOptions = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(options, index),\n {\n items\n } = this,\n oldIndex = items.findIndex(v => v.id.description === id),\n minIndex = 0,\n newItem = new _Container_js__WEBPACK_IMPORTED_MODULE_2__.Container(this, id, currentOptions);\n if (oldIndex >= minIndex) {\n const old = this.item(oldIndex),\n one = 1,\n none = 0,\n deleteCount = old ? one : none;\n if (old && !old.destroyed) {\n old.destroy(false);\n }\n items.splice(oldIndex, deleteCount, newItem);\n } else {\n items.push(newItem);\n }\n const domContainer = getDomContainer(id, params.element),\n canvasEl = getCanvasFromContainer(domContainer);\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n loadOptions(options, sourceOptions) {\n this.plugins.forEach(plugin => plugin.loadOptions?.(options, sourceOptions));\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n updaters.forEach(updater => updater.loadOptions?.(options, ...sourceOptions));\n }\n async refresh(refresh = true) {\n if (!refresh) {\n return;\n }\n await Promise.all(this.items.map(t => t.refresh()));\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n setOnClickHandler(callback) {\n const {\n items\n } = this;\n if (!items.length) {\n throw new Error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} can only set click handlers after calling tsParticles.load()`);\n }\n items.forEach(item => item.addClickHandler(callback));\n }\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../engine/dist/browser/Core/Engine.js?");
77
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Engine: () => (/* binding */ Engine)\n/* harmony export */ });\n/* harmony import */ var _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utils/Constants.js */ \"../../engine/dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"../../engine/dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Container_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Container.js */ \"../../engine/dist/browser/Core/Container.js\");\n/* harmony import */ var _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Utils/EventDispatcher.js */ \"../../engine/dist/browser/Utils/EventDispatcher.js\");\n/* harmony import */ var _Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Enums/Types/EventType.js */ \"../../engine/dist/browser/Enums/Types/EventType.js\");\n/* harmony import */ var _Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Utils/NumberUtils.js */ \"../../engine/dist/browser/Utils/NumberUtils.js\");\n\n\n\n\n\n\nasync function getItemsFromInitializer(container, map, initializers, force = false) {\n let res = map.get(container);\n if (!res || force) {\n res = await Promise.all([...initializers.values()].map(t => t(container)));\n map.set(container, res);\n }\n return res;\n}\nasync function getDataFromUrl(data) {\n const url = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(data.url, data.index);\n if (!url) {\n return data.fallback;\n }\n const response = await fetch(url);\n if (response.ok) {\n return await response.json();\n }\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getLogger)().error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} ${response.status} while retrieving config file`);\n return data.fallback;\n}\nconst generatedTrue = \"true\",\n generatedFalse = \"false\",\n canvasTag = \"canvas\",\n getCanvasFromContainer = domContainer => {\n let canvasEl;\n if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === canvasTag) {\n canvasEl = domContainer;\n if (!canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute]) {\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedFalse;\n }\n } else {\n const existingCanvases = domContainer.getElementsByTagName(canvasTag);\n if (existingCanvases.length) {\n const firstIndex = 0;\n canvasEl = existingCanvases[firstIndex];\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedFalse;\n } else {\n canvasEl = document.createElement(canvasTag);\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedTrue;\n domContainer.appendChild(canvasEl);\n }\n }\n const fullPercent = \"100%\";\n if (!canvasEl.style.width) {\n canvasEl.style.width = fullPercent;\n }\n if (!canvasEl.style.height) {\n canvasEl.style.height = fullPercent;\n }\n return canvasEl;\n },\n getDomContainer = (id, source) => {\n let domContainer = source ?? document.getElementById(id);\n if (domContainer) {\n return domContainer;\n }\n domContainer = document.createElement(\"div\");\n domContainer.id = id;\n domContainer.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = generatedTrue;\n document.body.append(domContainer);\n return domContainer;\n };\nclass Engine {\n constructor() {\n this._configs = new Map();\n this._domArray = [];\n this._eventDispatcher = new _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_3__.EventDispatcher();\n this._initialized = false;\n this.plugins = [];\n this.colorManagers = new Map();\n this.easingFunctions = new Map();\n this._initializers = {\n interactors: new Map(),\n movers: new Map(),\n updaters: new Map()\n };\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.effectDrawers = new Map();\n this.shapeDrawers = new Map();\n this.pathGenerators = new Map();\n }\n get configs() {\n const res = {};\n for (const [name, config] of this._configs) {\n res[name] = config;\n }\n return res;\n }\n get items() {\n return this._domArray;\n }\n get version() {\n return \"3.7.1\";\n }\n async addColorManager(manager, refresh = true) {\n this.colorManagers.set(manager.key, manager);\n await this.refresh(refresh);\n }\n addConfig(config) {\n const key = config.key ?? config.name ?? \"default\";\n this._configs.set(key, config);\n this._eventDispatcher.dispatchEvent(_Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_4__.EventType.configAdded, {\n data: {\n name: key,\n config\n }\n });\n }\n async addEasing(name, easing, refresh = true) {\n if (this.getEasing(name)) {\n return;\n }\n this.easingFunctions.set(name, easing);\n await this.refresh(refresh);\n }\n async addEffect(effect, drawer, refresh = true) {\n (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.executeOnSingleOrMultiple)(effect, type => {\n if (!this.getEffectDrawer(type)) {\n this.effectDrawers.set(type, drawer);\n }\n });\n await this.refresh(refresh);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n async addInteractor(name, interactorInitializer, refresh = true) {\n this._initializers.interactors.set(name, interactorInitializer);\n await this.refresh(refresh);\n }\n async addMover(name, moverInitializer, refresh = true) {\n this._initializers.movers.set(name, moverInitializer);\n await this.refresh(refresh);\n }\n async addParticleUpdater(name, updaterInitializer, refresh = true) {\n this._initializers.updaters.set(name, updaterInitializer);\n await this.refresh(refresh);\n }\n async addPathGenerator(name, generator, refresh = true) {\n if (!this.getPathGenerator(name)) {\n this.pathGenerators.set(name, generator);\n }\n await this.refresh(refresh);\n }\n async addPlugin(plugin, refresh = true) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n await this.refresh(refresh);\n }\n async addPreset(preset, options, override = false, refresh = true) {\n if (override || !this.getPreset(preset)) {\n this.presets.set(preset, options);\n }\n await this.refresh(refresh);\n }\n async addShape(drawer, refresh = true) {\n for (const validType of drawer.validTypes) {\n if (this.getShapeDrawer(validType)) {\n continue;\n }\n this.shapeDrawers.set(validType, drawer);\n }\n await this.refresh(refresh);\n }\n clearPlugins(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n this.interactors.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n dom() {\n return this.items;\n }\n domItem(index) {\n return this.item(index);\n }\n async getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (plugin.needsPlugin(container.actualOptions)) {\n res.set(plugin.id, await plugin.getPlugin(container));\n }\n }\n return res;\n }\n getEasing(name) {\n return this.easingFunctions.get(name) ?? (value => value);\n }\n getEffectDrawer(type) {\n return this.effectDrawers.get(type);\n }\n async getInteractors(container, force = false) {\n return getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);\n }\n async getMovers(container, force = false) {\n return getItemsFromInitializer(container, this.movers, this._initializers.movers, force);\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\n }\n getPlugin(plugin) {\n return this.plugins.find(t => t.id === plugin);\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n getShapeDrawer(type) {\n return this.shapeDrawers.get(type);\n }\n getSupportedEffects() {\n return this.effectDrawers.keys();\n }\n getSupportedShapes() {\n return this.shapeDrawers.keys();\n }\n async getUpdaters(container, force = false) {\n return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);\n }\n init() {\n if (this._initialized) {\n return;\n }\n this._initialized = true;\n }\n item(index) {\n const {\n items\n } = this,\n item = items[index];\n if (!item || item.destroyed) {\n const deleteCount = 1;\n items.splice(index, deleteCount);\n return;\n }\n return item;\n }\n async load(params) {\n const randomFactor = 10000,\n id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_NumberUtils_js__WEBPACK_IMPORTED_MODULE_5__.getRandom)() * randomFactor)}`,\n {\n index,\n url\n } = params,\n options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options;\n const currentOptions = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.itemFromSingleOrMultiple)(options, index),\n {\n items\n } = this,\n oldIndex = items.findIndex(v => v.id.description === id),\n minIndex = 0,\n newItem = new _Container_js__WEBPACK_IMPORTED_MODULE_2__.Container(this, id, currentOptions);\n if (oldIndex >= minIndex) {\n const old = this.item(oldIndex),\n one = 1,\n none = 0,\n deleteCount = old ? one : none;\n if (old && !old.destroyed) {\n old.destroy(false);\n }\n items.splice(oldIndex, deleteCount, newItem);\n } else {\n items.push(newItem);\n }\n const domContainer = getDomContainer(id, params.element),\n canvasEl = getCanvasFromContainer(domContainer);\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n loadOptions(options, sourceOptions) {\n this.plugins.forEach(plugin => plugin.loadOptions?.(options, sourceOptions));\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n updaters.forEach(updater => updater.loadOptions?.(options, ...sourceOptions));\n }\n async refresh(refresh = true) {\n if (!refresh) {\n return;\n }\n await Promise.all(this.items.map(t => t.refresh()));\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n setOnClickHandler(callback) {\n const {\n items\n } = this;\n if (!items.length) {\n throw new Error(`${_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.errorPrefix} can only set click handlers after calling tsParticles.load()`);\n }\n items.forEach(item => item.addClickHandler(callback));\n }\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../engine/dist/browser/Core/Engine.js?");
78
78
 
79
79
  /***/ }),
80
80
 
@@ -2054,7 +2054,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2054
2054
  \*********************************************/
2055
2055
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2056
2056
 
2057
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadBaseMover: () => (/* binding */ loadBaseMover)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _BaseMover_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BaseMover.js */ \"../../move/base/dist/browser/BaseMover.js\");\n\n\nasync function loadBaseMover(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addMover(\"base\", () => {\n return Promise.resolve(new _BaseMover_js__WEBPACK_IMPORTED_MODULE_1__.BaseMover());\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../move/base/dist/browser/index.js?");
2057
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadBaseMover: () => (/* binding */ loadBaseMover)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _BaseMover_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BaseMover.js */ \"../../move/base/dist/browser/BaseMover.js\");\n\n\nasync function loadBaseMover(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addMover(\"base\", () => {\n return Promise.resolve(new _BaseMover_js__WEBPACK_IMPORTED_MODULE_1__.BaseMover());\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../move/base/dist/browser/index.js?");
2058
2058
 
2059
2059
  /***/ }),
2060
2060
 
@@ -2074,7 +2074,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2074
2074
  \***********************************************************/
2075
2075
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2076
2076
 
2077
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadHexColorPlugin: () => (/* binding */ loadHexColorPlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _HexColorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HexColorManager.js */ \"../../plugins/colors/hexColor/dist/browser/HexColorManager.js\");\n\n\nasync function loadHexColorPlugin(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addColorManager(new _HexColorManager_js__WEBPACK_IMPORTED_MODULE_1__.HexColorManager(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../plugins/colors/hexColor/dist/browser/index.js?");
2077
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadHexColorPlugin: () => (/* binding */ loadHexColorPlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _HexColorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HexColorManager.js */ \"../../plugins/colors/hexColor/dist/browser/HexColorManager.js\");\n\n\nasync function loadHexColorPlugin(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addColorManager(new _HexColorManager_js__WEBPACK_IMPORTED_MODULE_1__.HexColorManager(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../plugins/colors/hexColor/dist/browser/index.js?");
2078
2078
 
2079
2079
  /***/ }),
2080
2080
 
@@ -2094,7 +2094,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2094
2094
  \***********************************************************/
2095
2095
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2096
2096
 
2097
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadHslColorPlugin: () => (/* binding */ loadHslColorPlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _HslColorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HslColorManager.js */ \"../../plugins/colors/hslColor/dist/browser/HslColorManager.js\");\n\n\nasync function loadHslColorPlugin(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addColorManager(new _HslColorManager_js__WEBPACK_IMPORTED_MODULE_1__.HslColorManager(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../plugins/colors/hslColor/dist/browser/index.js?");
2097
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadHslColorPlugin: () => (/* binding */ loadHslColorPlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _HslColorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HslColorManager.js */ \"../../plugins/colors/hslColor/dist/browser/HslColorManager.js\");\n\n\nasync function loadHslColorPlugin(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addColorManager(new _HslColorManager_js__WEBPACK_IMPORTED_MODULE_1__.HslColorManager(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../plugins/colors/hslColor/dist/browser/index.js?");
2098
2098
 
2099
2099
  /***/ }),
2100
2100
 
@@ -2114,7 +2114,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2114
2114
  \***********************************************************/
2115
2115
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2116
2116
 
2117
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadRgbColorPlugin: () => (/* binding */ loadRgbColorPlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _RgbColorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RgbColorManager.js */ \"../../plugins/colors/rgbColor/dist/browser/RgbColorManager.js\");\n\n\nasync function loadRgbColorPlugin(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addColorManager(new _RgbColorManager_js__WEBPACK_IMPORTED_MODULE_1__.RgbColorManager(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../plugins/colors/rgbColor/dist/browser/index.js?");
2117
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadRgbColorPlugin: () => (/* binding */ loadRgbColorPlugin)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _RgbColorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RgbColorManager.js */ \"../../plugins/colors/rgbColor/dist/browser/RgbColorManager.js\");\n\n\nasync function loadRgbColorPlugin(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addColorManager(new _RgbColorManager_js__WEBPACK_IMPORTED_MODULE_1__.RgbColorManager(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../plugins/colors/rgbColor/dist/browser/index.js?");
2118
2118
 
2119
2119
  /***/ }),
2120
2120
 
@@ -2144,7 +2144,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2144
2144
  \*************************************************/
2145
2145
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2146
2146
 
2147
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadCircleShape: () => (/* binding */ loadCircleShape)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _CircleDrawer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CircleDrawer.js */ \"../../shapes/circle/dist/browser/CircleDrawer.js\");\n\n\nasync function loadCircleShape(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addShape(new _CircleDrawer_js__WEBPACK_IMPORTED_MODULE_1__.CircleDrawer(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../shapes/circle/dist/browser/index.js?");
2147
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadCircleShape: () => (/* binding */ loadCircleShape)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _CircleDrawer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CircleDrawer.js */ \"../../shapes/circle/dist/browser/CircleDrawer.js\");\n\n\nasync function loadCircleShape(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addShape(new _CircleDrawer_js__WEBPACK_IMPORTED_MODULE_1__.CircleDrawer(), refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../shapes/circle/dist/browser/index.js?");
2148
2148
 
2149
2149
  /***/ }),
2150
2150
 
@@ -2164,7 +2164,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2164
2164
  \**************************************************/
2165
2165
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2166
2166
 
2167
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadColorUpdater: () => (/* binding */ loadColorUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _ColorUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ColorUpdater.js */ \"../../updaters/color/dist/browser/ColorUpdater.js\");\n\n\nasync function loadColorUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addParticleUpdater(\"color\", container => {\n return Promise.resolve(new _ColorUpdater_js__WEBPACK_IMPORTED_MODULE_1__.ColorUpdater(container, engine));\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/color/dist/browser/index.js?");
2167
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadColorUpdater: () => (/* binding */ loadColorUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _ColorUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ColorUpdater.js */ \"../../updaters/color/dist/browser/ColorUpdater.js\");\n\n\nasync function loadColorUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addParticleUpdater(\"color\", container => {\n return Promise.resolve(new _ColorUpdater_js__WEBPACK_IMPORTED_MODULE_1__.ColorUpdater(container, engine));\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/color/dist/browser/index.js?");
2168
2168
 
2169
2169
  /***/ }),
2170
2170
 
@@ -2184,7 +2184,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2184
2184
  \****************************************************/
2185
2185
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2186
2186
 
2187
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadOpacityUpdater: () => (/* binding */ loadOpacityUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _OpacityUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OpacityUpdater.js */ \"../../updaters/opacity/dist/browser/OpacityUpdater.js\");\n\n\nasync function loadOpacityUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addParticleUpdater(\"opacity\", container => {\n return Promise.resolve(new _OpacityUpdater_js__WEBPACK_IMPORTED_MODULE_1__.OpacityUpdater(container));\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/opacity/dist/browser/index.js?");
2187
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadOpacityUpdater: () => (/* binding */ loadOpacityUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _OpacityUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OpacityUpdater.js */ \"../../updaters/opacity/dist/browser/OpacityUpdater.js\");\n\n\nasync function loadOpacityUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addParticleUpdater(\"opacity\", container => {\n return Promise.resolve(new _OpacityUpdater_js__WEBPACK_IMPORTED_MODULE_1__.OpacityUpdater(container));\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/opacity/dist/browser/index.js?");
2188
2188
 
2189
2189
  /***/ }),
2190
2190
 
@@ -2254,7 +2254,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2254
2254
  \*****************************************************/
2255
2255
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2256
2256
 
2257
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadOutModesUpdater: () => (/* binding */ loadOutModesUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _OutOfCanvasUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OutOfCanvasUpdater.js */ \"../../updaters/outModes/dist/browser/OutOfCanvasUpdater.js\");\n\n\nasync function loadOutModesUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addParticleUpdater(\"outModes\", container => {\n return Promise.resolve(new _OutOfCanvasUpdater_js__WEBPACK_IMPORTED_MODULE_1__.OutOfCanvasUpdater(container));\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/outModes/dist/browser/index.js?");
2257
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadOutModesUpdater: () => (/* binding */ loadOutModesUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _OutOfCanvasUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./OutOfCanvasUpdater.js */ \"../../updaters/outModes/dist/browser/OutOfCanvasUpdater.js\");\n\n\nasync function loadOutModesUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addParticleUpdater(\"outModes\", container => {\n return Promise.resolve(new _OutOfCanvasUpdater_js__WEBPACK_IMPORTED_MODULE_1__.OutOfCanvasUpdater(container));\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/outModes/dist/browser/index.js?");
2258
2258
 
2259
2259
  /***/ }),
2260
2260
 
@@ -2274,7 +2274,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2274
2274
  \*************************************************/
2275
2275
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
2276
2276
 
2277
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSizeUpdater: () => (/* binding */ loadSizeUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _SizeUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SizeUpdater.js */ \"../../updaters/size/dist/browser/SizeUpdater.js\");\n\n\nasync function loadSizeUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await engine.addParticleUpdater(\"size\", () => {\n return Promise.resolve(new _SizeUpdater_js__WEBPACK_IMPORTED_MODULE_1__.SizeUpdater());\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/size/dist/browser/index.js?");
2277
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadSizeUpdater: () => (/* binding */ loadSizeUpdater)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"../../engine/dist/browser/index.js\");\n/* harmony import */ var _SizeUpdater_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SizeUpdater.js */ \"../../updaters/size/dist/browser/SizeUpdater.js\");\n\n\nasync function loadSizeUpdater(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await engine.addParticleUpdater(\"size\", () => {\n return Promise.resolve(new _SizeUpdater_js__WEBPACK_IMPORTED_MODULE_1__.SizeUpdater());\n }, refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/../../updaters/size/dist/browser/index.js?");
2278
2278
 
2279
2279
  /***/ })
2280
2280
 
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.basic.bundle.min.js.LICENSE.txt */
2
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var s in i)("object"==typeof exports?exports:t)[s]=i[s]}}(this,(()=>(()=>{var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{AlterType:()=>qt,AnimatableColor:()=>ci,AnimationMode:()=>ot,AnimationOptions:()=>oi,AnimationStatus:()=>nt,AnimationValueWithRandom:()=>ui,Background:()=>Le,BackgroundMask:()=>Fe,BackgroundMaskCover:()=>Ae,BaseRange:()=>Yi,Circle:()=>Zi,ClickEvent:()=>He,CollisionMode:()=>Ye,Collisions:()=>mi,CollisionsAbsorb:()=>hi,CollisionsOverlap:()=>li,ColorAnimation:()=>ai,DestroyType:()=>at,DivEvent:()=>Ve,DivType:()=>Ie,EasingType:()=>gs,EventType:()=>De,Events:()=>$e,ExternalInteractorBase:()=>ps,FullScreen:()=>Be,GradientType:()=>ms,HoverEvent:()=>We,HslAnimation:()=>ri,Interactivity:()=>Ne,InteractivityDetect:()=>Ce,InteractorType:()=>Ke,LimitMode:()=>Je,ManualParticle:()=>je,Modes:()=>Ge,Move:()=>Oi,MoveAngle:()=>yi,MoveAttract:()=>_i,MoveCenter:()=>wi,MoveDirection:()=>y,MoveGravity:()=>bi,MovePath:()=>xi,MoveTrail:()=>Mi,Opacity:()=>Ci,OpacityAnimation:()=>Si,Options:()=>Wi,OptionsColor:()=>Ee,OutMode:()=>Ze,OutModeDirection:()=>rt,OutModes:()=>Pi,Parallax:()=>Ue,ParticleOutType:()=>ti,ParticlesBounce:()=>vi,ParticlesBounceFactor:()=>fi,ParticlesDensity:()=>Ri,ParticlesInteractorBase:()=>fs,ParticlesNumber:()=>Di,ParticlesNumberLimit:()=>Ti,ParticlesOptions:()=>Hi,PixelMode:()=>ct,Point:()=>Qi,RangedAnimationOptions:()=>ni,RangedAnimationValueWithRandom:()=>pi,Rectangle:()=>Ji,ResizeEvent:()=>qe,Responsive:()=>ei,ResponsiveMode:()=>Qe,RotateDirection:()=>vs,Shadow:()=>Ii,Shape:()=>Ei,Size:()=>Ai,SizeAnimation:()=>Li,Spin:()=>ki,StartValueType:()=>ht,Stroke:()=>Fi,Theme:()=>si,ThemeDefault:()=>ii,ThemeMode:()=>Xe,ValueWithRandom:()=>di,Vector:()=>R,Vector3d:()=>C,ZIndex:()=>Bi,alterHsl:()=>Pe,animate:()=>F,areBoundsInside:()=>Mt,arrayRandomIndex:()=>bt,assertValidVersion:()=>Wt,calcExactPositionOrRandomFromSize:()=>et,calcExactPositionOrRandomFromSizeRanged:()=>it,calcPositionFromSize:()=>J,calcPositionOrRandomFromSize:()=>K,calcPositionOrRandomFromSizeRanged:()=>tt,calculateBounds:()=>Pt,cancelAnimation:()=>B,circleBounce:()=>Dt,circleBounceDataFromParticle:()=>Tt,clamp:()=>H,clear:()=>ye,collisionVelocity:()=>Z,colorMix:()=>ne,colorToHsl:()=>Xt,colorToRgb:()=>Qt,deepExtend:()=>kt,degToRad:()=>Q,divMode:()=>Rt,divModeExecute:()=>St,drawEffect:()=>we,drawLine:()=>ve,drawParticle:()=>_e,drawParticlePlugin:()=>Me,drawPlugin:()=>ze,drawShape:()=>be,drawShapeAfterDraw:()=>xe,errorPrefix:()=>f,executeOnSingleOrMultiple:()=>Et,findItemFromSingleOrMultiple:()=>At,generatedAttribute:()=>i,getDistance:()=>j,getDistances:()=>N,getHslAnimationFromHsl:()=>he,getHslFromAnimation:()=>ce,getLinkColor:()=>ae,getLinkRandomColor:()=>re,getLogger:()=>ut,getParticleBaseVelocity:()=>Y,getParticleDirectionAngle:()=>X,getPosition:()=>Ht,getRandom:()=>L,getRandomRgbColor:()=>ie,getRangeMax:()=>$,getRangeMin:()=>q,getRangeValue:()=>W,getSize:()=>Vt,getStyleFromHsl:()=>oe,getStyleFromRgb:()=>se,halfRandom:()=>m,hasMatchMedia:()=>vt,hslToRgb:()=>te,hslaToRgba:()=>ee,initParticleNumericAnimationValue:()=>Ft,isArray:()=>M,isBoolean:()=>_,isDivModeEnabled:()=>Ot,isFunction:()=>x,isInArray:()=>_t,isNull:()=>P,isNumber:()=>b,isObject:()=>z,isPointInside:()=>zt,isSsr:()=>ft,isString:()=>w,itemFromArray:()=>xt,itemFromSingleOrMultiple:()=>Lt,loadBasic:()=>Ws,loadFont:()=>wt,loadOptions:()=>Vi,loadParticlesOptions:()=>Ui,millisecondsToSeconds:()=>g,mix:()=>V,mouseDownEvent:()=>s,mouseLeaveEvent:()=>n,mouseMoveEvent:()=>r,mouseOutEvent:()=>a,mouseUpEvent:()=>o,paintBase:()=>me,paintImage:()=>ge,parseAlpha:()=>st,percentDenominator:()=>v,randomInRange:()=>U,rangeColorToHsl:()=>Yt,rangeColorToRgb:()=>jt,rectBounce:()=>It,resizeEvent:()=>u,rgbToHsl:()=>Zt,safeIntersectionObserver:()=>gt,safeMatchMedia:()=>mt,safeMutationObserver:()=>yt,setAnimationFunctions:()=>A,setLogger:()=>dt,setRandom:()=>E,setRangeValue:()=>G,singleDivModeExecute:()=>Ct,stringToAlpha:()=>Jt,stringToRgb:()=>Kt,touchCancelEvent:()=>d,touchEndEvent:()=>h,touchMoveEvent:()=>l,touchStartEvent:()=>c,tsParticles:()=>ys,updateAnimation:()=>Ut,updateColor:()=>ue,updateColorValue:()=>de,visibilityChangeEvent:()=>p});const i="generated",s="pointerdown",o="pointerup",n="pointerleave",a="pointerout",r="pointermove",c="touchstart",h="touchend",l="touchmove",d="touchcancel",u="resize",p="visibilitychange",f="tsParticles - Error",v=100,m=.5,g=1e3;var y;function _(t){return"boolean"==typeof t}function w(t){return"string"==typeof t}function b(t){return"number"==typeof t}function x(t){return"function"==typeof t}function z(t){return"object"==typeof t&&null!==t}function M(t){return Array.isArray(t)}function P(t){return null==t}!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",t.outside="outside",t.inside="inside"}(y||(y={}));const k=0,O=0,S=0;class C{constructor(t,e,i){if(this._updateFromAngle=(t,e)=>{this.x=Math.cos(t)*e,this.y=Math.sin(t)*e},!b(t)&&t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:S}else{if(void 0===t||void 0===e)throw new Error(`${f} Vector3d not initialized correctly`);this.x=t,this.y=e,this.z=i??S}}static get origin(){return C.create(k,O,S)}get angle(){return Math.atan2(this.y,this.x)}set angle(t){this._updateFromAngle(t,this.length)}get length(){return Math.sqrt(this.getLengthSq())}set length(t){this._updateFromAngle(this.angle,t)}static clone(t){return C.create(t.x,t.y,t.z)}static create(t,e,i){return new C(t,e,i)}add(t){return C.create(this.x+t.x,this.y+t.y,this.z+t.z)}addTo(t){this.x+=t.x,this.y+=t.y,this.z+=t.z}copy(){return C.clone(this)}distanceTo(t){return this.sub(t).length}distanceToSq(t){return this.sub(t).getLengthSq()}div(t){return C.create(this.x/t,this.y/t,this.z/t)}divTo(t){this.x/=t,this.y/=t,this.z/=t}getLengthSq(){return this.x**2+this.y**2}mult(t){return C.create(this.x*t,this.y*t,this.z*t)}multTo(t){this.x*=t,this.y*=t,this.z*=t}normalize(){const t=this.length;0!=t&&this.multTo(1/t)}rotate(t){return C.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t),S)}setTo(t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:S}sub(t){return C.create(this.x-t.x,this.y-t.y,this.z-t.z)}subFrom(t){this.x-=t.x,this.y-=t.y,this.z-=t.z}}class R extends C{constructor(t,e){super(t,e,S)}static get origin(){return R.create(k,O)}static clone(t){return R.create(t.x,t.y)}static create(t,e){return new R(t,e)}}let T=Math.random;const D={nextFrame:t=>requestAnimationFrame(t),cancel:t=>cancelAnimationFrame(t)},I=2*Math.PI;function E(t=Math.random){T=t}function L(){return H(T(),0,1-Number.EPSILON)}function A(t,e){D.nextFrame=e=>t(e),D.cancel=t=>e(t)}function F(t){return D.nextFrame(t)}function B(t){D.cancel(t)}function H(t,e,i){return Math.min(Math.max(t,e),i)}function V(t,e,i,s){return Math.floor((t*i+e*s)/(i+s))}function U(t){const e=$(t);let i=q(t);return e===i&&(i=0),L()*(e-i)+i}function W(t){return b(t)?t:U(t)}function q(t){return b(t)?t:t.min}function $(t){return b(t)?t:t.max}function G(t,e){if(t===e||void 0===e&&b(t))return t;const i=q(t),s=$(t);return void 0!==e?{min:Math.min(i,e),max:Math.max(s,e)}:G(i,s)}function N(t,e){const i=t.x-e.x,s=t.y-e.y;return{dx:i,dy:s,distance:Math.sqrt(i**2+s**2)}}function j(t,e){return N(t,e).distance}function Q(t){return t*Math.PI/180}function X(t,e,i){if(b(t))return Q(t);const s=.25;switch(t){case y.top:return.5*-Math.PI;case y.topRight:return-Math.PI*s;case y.right:return 0;case y.bottomRight:return Math.PI*s;case y.bottom:return.5*Math.PI;case y.bottomLeft:return.75*Math.PI;case y.left:return Math.PI;case y.topLeft:return.75*-Math.PI;case y.inside:return Math.atan2(i.y-e.y,i.x-e.x);case y.outside:return Math.atan2(e.y-i.y,e.x-i.x);default:return L()*I}}function Y(t){const e=R.origin;return e.length=1,e.angle=t,e}function Z(t,e,i,s){return R.create(t.x*(i-s)/(i+s)+2*e.x*s/(i+s),t.y)}function J(t){return void 0!==t.position?.x&&void 0!==t.position.y?{x:t.position.x*t.size.width/v,y:t.position.y*t.size.height/v}:void 0}function K(t){return{x:(t.position?.x??L()*v)*t.size.width/v,y:(t.position?.y??L()*v)*t.size.height/v}}function tt(t){const e={x:void 0!==t.position?.x?W(t.position.x):void 0,y:void 0!==t.position?.y?W(t.position.y):void 0};return K({size:t.size,position:e})}function et(t){return{x:t.position?.x??L()*t.size.width,y:t.position?.y??L()*t.size.height}}function it(t){const e={x:void 0!==t.position?.x?W(t.position.x):void 0,y:void 0!==t.position?.y?W(t.position.y):void 0};return et({size:t.size,position:e})}function st(t){return t?t.endsWith("%")?parseFloat(t)/v:parseFloat(t):1}var ot,nt,at,rt,ct,ht;!function(t){t.auto="auto",t.increase="increase",t.decrease="decrease",t.random="random"}(ot||(ot={})),function(t){t.increasing="increasing",t.decreasing="decreasing"}(nt||(nt={})),function(t){t.none="none",t.max="max",t.min="min"}(at||(at={})),function(t){t.bottom="bottom",t.left="left",t.right="right",t.top="top"}(rt||(rt={})),function(t){t.precise="precise",t.percent="percent"}(ct||(ct={})),function(t){t.max="max",t.min="min",t.random="random"}(ht||(ht={}));const lt={debug:console.debug,error:console.error,info:console.info,log:console.log,verbose:console.log,warning:console.warn};function dt(t){lt.debug=t.debug||lt.debug,lt.error=t.error||lt.error,lt.info=t.info||lt.info,lt.log=t.log||lt.log,lt.verbose=t.verbose||lt.verbose,lt.warning=t.warning||lt.warning}function ut(){return lt}function pt(t){const e={bounced:!1},{pSide:i,pOtherSide:s,rectSide:o,rectOtherSide:n,velocity:a,factor:r}=t;return s.min<n.min||s.min>n.max||s.max<n.min||s.max>n.max||(i.max>=o.min&&i.max<=.5*(o.max+o.min)&&a>0||i.min<=o.max&&i.min>.5*(o.max+o.min)&&a<0)&&(e.velocity=a*-r,e.bounced=!0),e}function ft(){return"undefined"==typeof window||!window||void 0===window.document||!window.document}function vt(){return!ft()&&"undefined"!=typeof matchMedia}function mt(t){if(vt())return matchMedia(t)}function gt(t){if(!ft()&&"undefined"!=typeof IntersectionObserver)return new IntersectionObserver(t)}function yt(t){if(!ft()&&"undefined"!=typeof MutationObserver)return new MutationObserver(t)}function _t(t,e){return t===e||M(e)&&e.indexOf(t)>-1}async function wt(t,e){try{await document.fonts.load(`${e??"400"} 36px '${t??"Verdana"}'`)}catch{}}function bt(t){return Math.floor(L()*t.length)}function xt(t,e,i=!0){return t[void 0!==e&&i?e%t.length:bt(t)]}function zt(t,e,i,s,o){return Mt(Pt(t,s??0),e,i,o)}function Mt(t,e,i,s){let o=!0;return s&&s!==rt.bottom||(o=t.top<e.height+i.x),!o||s&&s!==rt.left||(o=t.right>i.x),!o||s&&s!==rt.right||(o=t.left<e.width+i.y),!o||s&&s!==rt.top||(o=t.bottom>i.y),o}function Pt(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function kt(t,...e){for(const i of e){if(null==i)continue;if(!z(i)){t=i;continue}const e=Array.isArray(i);!e||!z(t)&&t&&Array.isArray(t)?e||!z(t)&&t&&!Array.isArray(t)||(t={}):t=[];for(const e in i){if("__proto__"===e)continue;const s=i[e],o=t;o[e]=z(s)&&Array.isArray(s)?s.map((t=>kt(o[e],t))):kt(o[e],s)}}return t}function Ot(t,e){return!!At(e,(e=>e.enable&&_t(t,e.mode)))}function St(t,e,i){Et(e,(e=>{const s=e.mode;e.enable&&_t(t,s)&&Ct(e,i)}))}function Ct(t,e){Et(t.selectors,(i=>{e(i,t)}))}function Rt(t,e){if(e&&t)return At(t,(t=>function(t,e){const i=Et(e,(e=>t.matches(e)));return M(i)?i.some((t=>t)):i}(e,t.selectors)))}function Tt(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:R.create(W(t.options.bounce.horizontal.value),W(t.options.bounce.vertical.value))}}function Dt(t,e){const{x:i,y:s}=t.velocity.sub(e.velocity),[o,n]=[t.position,e.position],{dx:a,dy:r}=N(n,o);if(i*a+s*r<0)return;const c=-Math.atan2(r,a),h=t.mass,l=e.mass,d=t.velocity.rotate(c),u=e.velocity.rotate(c),p=Z(d,u,h,l),f=Z(u,d,h,l),v=p.rotate(-c),m=f.rotate(-c);t.velocity.x=v.x*t.factor.x,t.velocity.y=v.y*t.factor.y,e.velocity.x=m.x*e.factor.x,e.velocity.y=m.y*e.factor.y}function It(t,e){const i=Pt(t.getPosition(),t.getRadius()),s=t.options.bounce,o=pt({pSide:{min:i.left,max:i.right},pOtherSide:{min:i.top,max:i.bottom},rectSide:{min:e.left,max:e.right},rectOtherSide:{min:e.top,max:e.bottom},velocity:t.velocity.x,factor:W(s.horizontal.value)});o.bounced&&(void 0!==o.velocity&&(t.velocity.x=o.velocity),void 0!==o.position&&(t.position.x=o.position));const n=pt({pSide:{min:i.top,max:i.bottom},pOtherSide:{min:i.left,max:i.right},rectSide:{min:e.top,max:e.bottom},rectOtherSide:{min:e.left,max:e.right},velocity:t.velocity.y,factor:W(s.vertical.value)});n.bounced&&(void 0!==n.velocity&&(t.velocity.y=n.velocity),void 0!==n.position&&(t.position.y=n.position))}function Et(t,e){return M(t)?t.map(((t,i)=>e(t,i))):e(t,0)}function Lt(t,e,i){return M(t)?xt(t,e,i):t}function At(t,e){if(M(t))return t.find(((t,i)=>e(t,i)));return e(t,0)?t:void 0}function Ft(t,e){const i=t.value,s=t.animation,o={delayTime:W(s.delay)*g,enable:s.enable,value:W(t.value)*e,max:$(i)*e,min:q(i)*e,loops:0,maxLoops:W(s.count),time:0};if(s.enable){switch(o.decay=1-W(s.decay),s.mode){case ot.increase:o.status=nt.increasing;break;case ot.decrease:o.status=nt.decreasing;break;case ot.random:o.status=L()>=m?nt.increasing:nt.decreasing}const t=s.mode===ot.auto;switch(s.startValue){case ht.min:o.value=o.min,t&&(o.status=nt.increasing);break;case ht.max:o.value=o.max,t&&(o.status=nt.decreasing);break;case ht.random:default:o.value=U(o),t&&(o.status=L()>=m?nt.increasing:nt.decreasing)}}return o.initialValue=o.value,o}function Bt(t,e){if(!(t.mode===ct.percent)){const{mode:e,...i}=t;return i}return"x"in t?{x:t.x/v*e.width,y:t.y/v*e.height}:{width:t.width/v*e.width,height:t.height/v*e.height}}function Ht(t,e){return Bt(t,e)}function Vt(t,e){return Bt(t,e)}function Ut(t,e,i,s,o){if(t.destroyed||!e||!e.enable||(e.maxLoops??0)>0&&(e.loops??0)>(e.maxLoops??0))return;const n=(e.velocity??0)*o.factor,a=e.min,r=e.max,c=e.decay??1;if(e.time||(e.time=0),(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=o.value),!((e.delayTime??0)>0&&e.time<(e.delayTime??0))){switch(e.status){case nt.increasing:e.value>=r?(i?e.status=nt.decreasing:e.value-=r,e.loops||(e.loops=0),e.loops++):e.value+=n;break;case nt.decreasing:e.value<=a?(i?e.status=nt.increasing:e.value+=r,e.loops||(e.loops=0),e.loops++):e.value-=n}e.velocity&&1!==c&&(e.velocity*=c),function(t,e,i,s,o){switch(e){case at.max:i>=o&&t.destroy();break;case at.min:i<=s&&t.destroy()}}(t,s,e.value,a,r),t.destroyed||(e.value=H(e.value,a,r))}}function Wt(t,e){if(t.version!==e)throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${t.version}. Plugins version: ${e}`)}var qt;!function(t){t.darken="darken",t.enlighten="enlighten"}(qt||(qt={}));const $t="random",Gt="mid";function Nt(t,e){if(e)for(const i of t.colorManagers.values())if(e.startsWith(i.stringPrefix))return i.parseString(e)}function jt(t,e,i,s=!0){if(!e)return;const o=w(e)?{value:e}:e;if(w(o.value))return Qt(t,o.value,i,s);if(M(o.value))return jt(t,{value:xt(o.value,i,s)});for(const e of t.colorManagers.values()){const t=e.handleRangeColor(o);if(t)return t}}function Qt(t,e,i,s=!0){if(!e)return;const o=w(e)?{value:e}:e;if(w(o.value))return o.value===$t?ie():Kt(t,o.value);if(M(o.value))return Qt(t,{value:xt(o.value,i,s)});for(const e of t.colorManagers.values()){const t=e.handleColor(o);if(t)return t}}function Xt(t,e,i,s=!0){const o=Qt(t,e,i,s);return o?Zt(o):void 0}function Yt(t,e,i,s=!0){const o=jt(t,e,i,s);return o?Zt(o):void 0}function Zt(t){const e=t.r/255,i=t.g/255,s=t.b/255,o=Math.max(e,i,s),n=Math.min(e,i,s),a={h:0,l:.5*(o+n),s:0};return o!==n&&(a.s=a.l<.5?(o-n)/(o+n):(o-n)/(2-o-n),a.h=e===o?(i-s)/(o-n):a.h=i===o?2+(s-e)/(o-n):4+(e-i)/(o-n)),a.l*=100,a.s*=100,a.h*=60,a.h<0&&(a.h+=360),a.h>=360&&(a.h-=360),a}function Jt(t,e){return Nt(t,e)?.a}function Kt(t,e){return Nt(t,e)}function te(t){const e=360,i=(t.h%e+e)%e,s=Math.max(0,Math.min(100,t.s)),o=i/e,n=s/100,a=Math.max(0,Math.min(100,t.l))/100,r=255;if(0===s){const t=Math.round(a*r);return{r:t,g:t,b:t}}const c=(t,e,i)=>{if(i<0&&i++,i>1&&i--,6*i<1)return t+6*(e-t)*i;if(2*i<1)return e;if(3*i<2){return t+(e-t)*(2/3-i)*6}return t},h=a<.5?a*(1+n):a+n-a*n,l=2*a-h,d=1/3,u=Math.min(r,r*c(l,h,o+d)),p=Math.min(r,r*c(l,h,o)),f=Math.min(r,r*c(l,h,o-d));return{r:Math.round(u),g:Math.round(p),b:Math.round(f)}}function ee(t){const e=te(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function ie(t){const e=t??0;return{b:Math.floor(U(G(e,256))),g:Math.floor(U(G(e,256))),r:Math.floor(U(G(e,256)))}}function se(t,e){return`rgba(${t.r}, ${t.g}, ${t.b}, ${e??1})`}function oe(t,e){return`hsla(${t.h}, ${t.s}%, ${t.l}%, ${e??1})`}function ne(t,e,i,s){let o=t,n=e;return void 0===o.r&&(o=te(t)),void 0===n.r&&(n=te(e)),{b:V(o.b,n.b,i,s),g:V(o.g,n.g,i,s),r:V(o.r,n.r,i,s)}}function ae(t,e,i){if(i===$t)return ie();if(i!==Gt)return i;{const i=t.getFillColor()??t.getStrokeColor(),s=e?.getFillColor()??e?.getStrokeColor();if(i&&s&&e)return ne(i,s,t.getRadius(),e.getRadius());{const t=i??s;if(t)return te(t)}}}function re(t,e,i,s){const o=w(e)?e:e.value;return o===$t?s?jt(t,{value:o}):i?$t:Gt:o===Gt?Gt:jt(t,{value:o})}function ce(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function he(t,e,i){const s={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(le(s.h,e.h,i),le(s.s,e.s,i),le(s.l,e.l,i)),s}function le(t,e,i){t.enable=e.enable;t.enable?(t.velocity=W(e.speed)/v*i,t.decay=1-W(e.decay),t.status=nt.increasing,t.loops=0,t.maxLoops=W(e.count),t.time=0,t.delayTime=W(e.delay)*g,e.sync||(t.velocity*=L(),t.value*=L()),t.initialValue=t.value,t.offset=G(e.offset)):t.velocity=0}function de(t,e,i,s){if(!t||!t.enable||(t.maxLoops??0)>0&&(t.loops??0)>(t.maxLoops??0))return;if(t.time||(t.time=0),(t.delayTime??0)>0&&t.time<(t.delayTime??0)&&(t.time+=s.value),(t.delayTime??0)>0&&t.time<(t.delayTime??0))return;const o=t.offset?U(t.offset):0,n=(t.velocity??0)*s.factor+3.6*o,a=t.decay??1,r=$(e),c=q(e);if(i&&t.status!==nt.increasing){t.value-=n;const e=0;t.value<e&&(t.loops||(t.loops=0),t.loops++,t.status=nt.increasing)}else t.value+=n,t.value>r&&(t.loops||(t.loops=0),t.loops++,i?t.status=nt.decreasing:t.value-=r);t.velocity&&1!==a&&(t.velocity*=a),t.value=H(t.value,c,r)}function ue(t,e){if(!t)return;const{h:i,s,l:o}=t,n={min:0,max:100},a={min:0,max:100};i&&de(i,{min:0,max:360},!1,e),s&&de(s,n,!0,e),o&&de(o,a,!0,e)}const pe={x:0,y:0},fe={a:1,b:0,c:0,d:1};function ve(t,e,i){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.closePath()}function me(t,e,i){t.fillStyle=i??"rgba(0,0,0,0)",t.fillRect(pe.x,pe.y,e.width,e.height)}function ge(t,e,i,s){i&&(t.globalAlpha=s,t.drawImage(i,pe.x,pe.y,e.width,e.height),t.globalAlpha=1)}function ye(t,e){t.clearRect(pe.x,pe.y,e.width,e.height)}function _e(t){const{container:e,context:i,particle:s,delta:o,colorStyles:n,backgroundMask:a,composite:r,radius:c,opacity:h,shadow:l,transform:d}=t,u=s.getPosition(),p=s.rotation+(s.pathRotation?s.velocity.angle:0),f=Math.sin(p),v=Math.cos(p),m=!!p,g={a:v*(d.a??fe.a),b:m?f*(d.b??1):d.b??fe.b,c:m?-f*(d.c??1):d.c??fe.c,d:v*(d.d??fe.d)};i.setTransform(g.a,g.b,g.c,g.d,u.x,u.y),a&&(i.globalCompositeOperation=r);const y=s.shadowColor;l.enable&&y&&(i.shadowBlur=l.blur,i.shadowColor=se(y),i.shadowOffsetX=l.offset.x,i.shadowOffsetY=l.offset.y),n.fill&&(i.fillStyle=n.fill);const _=s.strokeWidth??0;i.lineWidth=_,n.stroke&&(i.strokeStyle=n.stroke);const w={container:e,context:i,particle:s,radius:c,opacity:h,delta:o,transformData:g,strokeWidth:_};be(w),xe(w),we(w),i.globalCompositeOperation="source-over",i.resetTransform()}function we(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,transformData:r}=t;if(!s.effect)return;const c=e.effectDrawers.get(s.effect);c&&c.draw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...r}})}function be(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,strokeWidth:r,transformData:c}=t;if(!s.shape)return;const h=e.shapeDrawers.get(s.shape);h&&(i.beginPath(),h.draw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...c}}),s.shapeClose&&i.closePath(),r>0&&i.stroke(),s.shapeFill&&i.fill())}function xe(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,transformData:r}=t;if(!s.shape)return;const c=e.shapeDrawers.get(s.shape);c?.afterDraw&&c.afterDraw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...r}})}function ze(t,e,i){e.draw&&e.draw(t,i)}function Me(t,e,i,s){e.drawParticle&&e.drawParticle(t,i,s)}function Pe(t,e,i){return{h:t.h,s:t.s,l:t.l+(e===qt.darken?-1:1)*i}}function ke(t,e,i){const s=e[i];void 0!==s&&(t[i]=(t[i]??1)*s)}function Oe(t,e,i=!1){if(!e)return;if(!t)return;const s=t.style;if(s)for(const t in e){const o=e[t];s.setProperty(t,o,i?"important":"")}}class Se{constructor(t,e){this.container=t,this._applyPostDrawUpdaters=t=>{for(const e of this._postDrawUpdaters)e.afterDraw?.(t)},this._applyPreDrawUpdaters=(t,e,i,s,o,n)=>{for(const a of this._preDrawUpdaters){if(a.getColorStyles){const{fill:n,stroke:r}=a.getColorStyles(e,t,i,s);n&&(o.fill=n),r&&(o.stroke=r)}if(a.getTransformValues){const t=a.getTransformValues(e);for(const e in t)ke(n,t,e)}a.beforeDraw?.(e)}},this._applyResizePlugins=()=>{for(const t of this._resizePlugins)t.resize?.()},this._getPluginParticleColors=t=>{let e,i;for(const s of this._colorPlugins)if(!e&&s.particleFillColor&&(e=Yt(this._engine,s.particleFillColor(t))),!i&&s.particleStrokeColor&&(i=Yt(this._engine,s.particleStrokeColor(t))),e&&i)break;return[e,i]},this._initCover=async()=>{const t=this.container.actualOptions.backgroundMask.cover,e=t.color;if(e){const i=jt(this._engine,e);if(i){const e={...i,a:t.opacity};this._coverColorStyle=se(e,e.a)}}else await new Promise(((e,i)=>{if(!t.image)return;const s=document.createElement("img");s.addEventListener("load",(()=>{this._coverImage={image:s,opacity:t.opacity},e()})),s.addEventListener("error",(t=>{i(t.error)})),s.src=t.image}))},this._initStyle=()=>{const t=this.element,e=this.container.actualOptions;if(t){this._fullScreen?(this._originalStyle=kt({},t.style),this._setFullScreenStyle()):this._resetOriginalStyle();for(const i in e.style){if(!i||!e.style)continue;const s=e.style[i];s&&t.style.setProperty(i,s,"important")}}},this._initTrail=async()=>{const t=this.container.actualOptions.particles.move.trail,e=t.fill;if(!t.enable)return;const i=1/t.length;if(e.color){const t=jt(this._engine,e.color);if(!t)return;this._trailFill={color:{...t},opacity:i}}else await new Promise(((t,s)=>{if(!e.image)return;const o=document.createElement("img");o.addEventListener("load",(()=>{this._trailFill={image:o,opacity:i},t()})),o.addEventListener("error",(t=>{s(t.error)})),o.src=e.image}))},this._paintBase=t=>{this.draw((e=>me(e,this.size,t)))},this._paintImage=(t,e)=>{this.draw((i=>ge(i,this.size,t,e)))},this._repairStyle=()=>{const t=this.element;t&&(this._safeMutationObserver((t=>t.disconnect())),this._initStyle(),this.initBackground(),this._safeMutationObserver((e=>{t&&t instanceof Node&&e.observe(t,{attributes:!0})})))},this._resetOriginalStyle=()=>{const t=this.element,e=this._originalStyle;t&&e&&Oe(t,e)},this._safeMutationObserver=t=>{this._mutationObserver&&t(this._mutationObserver)},this._setFullScreenStyle=()=>{const t=this.element;if(!t)return;const e=this.container.actualOptions.fullScreen.zIndex.toString(10);Oe(t,{position:"fixed","z-index":e,zIndex:e,top:"0",left:"0",width:"100%",height:"100%"},!0)},this._engine=e,this._standardSize={height:0,width:0};const i=t.retina.pixelRatio,s=this._standardSize;this.size={height:s.height*i,width:s.width*i},this._context=null,this._generated=!1,this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}get _fullScreen(){return this.container.actualOptions.fullScreen.enable}clear(){const t=this.container.actualOptions,e=t.particles.move.trail,i=this._trailFill;t.backgroundMask.enable?this.paint():e.enable&&e.length>0&&i?i.color?this._paintBase(se(i.color,i.opacity)):i.image&&this._paintImage(i.image,i.opacity):t.clear&&this.draw((t=>{ye(t,this.size)}))}destroy(){if(this.stop(),this._generated){const t=this.element;t?.remove()}else this._resetOriginalStyle();this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}draw(t){const e=this._context;if(e)return t(e)}drawAsync(t){const e=this._context;if(e)return t(e)}drawParticle(t,e){if(t.spawning||t.destroyed)return;const i=t.getRadius();if(i<=0)return;const s=t.getFillColor(),o=t.getStrokeColor()??s;let[n,a]=this._getPluginParticleColors(t);n||(n=s),a||(a=o),(n||a)&&this.draw((s=>{const o=this.container,r=o.actualOptions,c=t.options.zIndex,h=1-t.zIndexFactor,l=h**c.opacityRate,d=t.bubble.opacity??t.opacity?.value??1,u=d*l,p=(t.strokeOpacity??d)*l,f={},v={fill:n?oe(n,u):void 0};v.stroke=a?oe(a,p):v.fill,this._applyPreDrawUpdaters(s,t,i,u,v,f),_e({container:o,context:s,particle:t,delta:e,colorStyles:v,backgroundMask:r.backgroundMask.enable,composite:r.backgroundMask.composite,radius:i*h**c.sizeRate,opacity:u,shadow:t.options.shadow,transform:f}),this._applyPostDrawUpdaters(t)}))}drawParticlePlugin(t,e,i){this.draw((s=>Me(s,t,e,i)))}drawPlugin(t,e){this.draw((i=>ze(i,t,e)))}async init(){this._safeMutationObserver((t=>t.disconnect())),this._mutationObserver=yt((t=>{for(const e of t)"attributes"===e.type&&"style"===e.attributeName&&this._repairStyle()})),this.resize(),this._initStyle(),await this._initCover();try{await this._initTrail()}catch(t){ut().error(t)}this.initBackground(),this._safeMutationObserver((t=>{this.element&&this.element instanceof Node&&t.observe(this.element,{attributes:!0})})),this.initUpdaters(),this.initPlugins(),this.paint()}initBackground(){const t=this.container.actualOptions.background,e=this.element;if(!e)return;const i=e.style;if(i){if(t.color){const e=jt(this._engine,t.color);i.backgroundColor=e?se(e,t.opacity):""}else i.backgroundColor="";i.backgroundImage=t.image||"",i.backgroundPosition=t.position||"",i.backgroundRepeat=t.repeat||"",i.backgroundSize=t.size||""}}initPlugins(){this._resizePlugins=[];for(const t of this.container.plugins.values())t.resize&&this._resizePlugins.push(t),(t.particleFillColor??t.particleStrokeColor)&&this._colorPlugins.push(t)}initUpdaters(){this._preDrawUpdaters=[],this._postDrawUpdaters=[];for(const t of this.container.particles.updaters)t.afterDraw&&this._postDrawUpdaters.push(t),(t.getColorStyles??t.getTransformValues??t.beforeDraw)&&this._preDrawUpdaters.push(t)}loadCanvas(t){this._generated&&this.element&&this.element.remove(),this._generated=t.dataset&&i in t.dataset?"true"===t.dataset[i]:this._generated,this.element=t,this.element.ariaHidden="true",this._originalStyle=kt({},this.element.style);const e=this._standardSize;e.height=t.offsetHeight,e.width=t.offsetWidth;const s=this.container.retina.pixelRatio,o=this.size;o.height=e.height*s,o.width=e.width*s,this._context=this.element.getContext("2d"),this._safeMutationObserver((t=>{this.element&&this.element instanceof Node&&t.observe(this.element,{attributes:!0})})),this.container.retina.init(),this.initBackground()}paint(){const t=this.container.actualOptions;this.draw((e=>{t.backgroundMask.enable&&t.backgroundMask.cover?(ye(e,this.size),this._coverImage?this._paintImage(this._coverImage.image,this._coverImage.opacity):this._coverColorStyle?this._paintBase(this._coverColorStyle):this._paintBase()):this._paintBase()}))}resize(){if(!this.element)return!1;const t=this.container,e=t.canvas._standardSize,i={width:this.element.offsetWidth,height:this.element.offsetHeight};if(i.height===e.height&&i.width===e.width)return!1;const s={...e},o=t.retina.pixelRatio;e.height=i.height,e.width=i.width;const n=this.size;return this.element.width=n.width=e.width*o,this.element.height=n.height=e.height*o,this.container.started&&t.particles.setResizeFactor({width:e.width/s.width,height:e.height/s.height}),!0}stop(){this._safeMutationObserver((t=>t.disconnect())),this._mutationObserver=void 0,this.draw((t=>ye(t,this.size)))}async windowResize(){if(!this.element||!this.resize())return;const t=this.container,e=t.updateActualOptions();t.particles.setDensity(),this._applyResizePlugins(),e&&await t.refresh()}}var Ce;!function(t){t.canvas="canvas",t.parent="parent",t.window="window"}(Ce||(Ce={}));function Re(t,e,i,s,o){if(s){let s={passive:!0};_(o)?s.capture=o:void 0!==o&&(s=o),t.addEventListener(e,i,s)}else{const s=o;t.removeEventListener(e,i,s)}}class Te{constructor(t){this.container=t,this._doMouseTouchClick=t=>{const e=this.container,i=e.actualOptions;if(this._canPush){const t=e.interactivity.mouse,s=t.position;if(!s)return;t.clickPosition={...s},t.clickTime=(new Date).getTime();Et(i.interactivity.events.onClick.mode,(t=>this.container.handleClickMode(t)))}if("touchend"===t.type){setTimeout((()=>this._mouseTouchFinish()),500)}},this._handleThemeChange=t=>{const e=t,i=this.container,s=i.options,o=s.defaultThemes,n=e.matches?o.dark:o.light,a=s.themes.find((t=>t.name===n));a?.default.auto&&i.loadTheme(n)},this._handleVisibilityChange=()=>{const t=this.container,e=t.actualOptions;this._mouseTouchFinish(),e.pauseOnBlur&&(document?.hidden?(t.pageHidden=!0,t.pause()):(t.pageHidden=!1,t.animationStatus?t.play(!0):t.draw(!0)))},this._handleWindowResize=()=>{this._resizeTimeout&&(clearTimeout(this._resizeTimeout),delete this._resizeTimeout);const t=async()=>{const t=this.container.canvas;await(t?.windowResize())};this._resizeTimeout=setTimeout((()=>{t()}),this.container.actualOptions.interactivity.events.resize.delay*g)},this._manageInteractivityListeners=(t,e)=>{const i=this._handlers,n=this.container,a=n.actualOptions,u=n.interactivity.element;if(!u)return;const p=u,f=n.canvas.element;f&&(f.style.pointerEvents=p===f?"initial":"none"),(a.interactivity.events.onHover.enable||a.interactivity.events.onClick.enable)&&(Re(u,r,i.mouseMove,e),Re(u,c,i.touchStart,e),Re(u,l,i.touchMove,e),a.interactivity.events.onClick.enable?(Re(u,h,i.touchEndClick,e),Re(u,o,i.mouseUp,e),Re(u,s,i.mouseDown,e)):Re(u,h,i.touchEnd,e),Re(u,t,i.mouseLeave,e),Re(u,d,i.touchCancel,e))},this._manageListeners=t=>{const e=this._handlers,i=this.container,s=i.actualOptions.interactivity.detectsOn,o=i.canvas.element;let r=n;s===Ce.window?(i.interactivity.element=window,r=a):s===Ce.parent&&o?i.interactivity.element=o.parentElement??o.parentNode:i.interactivity.element=o,this._manageMediaMatch(t),this._manageResize(t),this._manageInteractivityListeners(r,t),document&&Re(document,p,e.visibilityChange,t,!1)},this._manageMediaMatch=t=>{const e=this._handlers,i=mt("(prefers-color-scheme: dark)");i&&(void 0===i.addEventListener?void 0!==i.addListener&&(t?i.addListener(e.oldThemeChange):i.removeListener(e.oldThemeChange)):Re(i,"change",e.themeChange,t))},this._manageResize=t=>{const e=this._handlers,i=this.container;if(!i.actualOptions.interactivity.events.resize)return;if("undefined"==typeof ResizeObserver)return void Re(window,u,e.resize,t);const s=i.canvas.element;this._resizeObserver&&!t?(s&&this._resizeObserver.unobserve(s),this._resizeObserver.disconnect(),delete this._resizeObserver):!this._resizeObserver&&t&&s&&(this._resizeObserver=new ResizeObserver((t=>{t.find((t=>t.target===s))&&this._handleWindowResize()})),this._resizeObserver.observe(s))},this._mouseDown=()=>{const{interactivity:t}=this.container;if(!t)return;const{mouse:e}=t;e.clicking=!0,e.downPosition=e.position},this._mouseTouchClick=t=>{const e=this.container,i=e.actualOptions,{mouse:s}=e.interactivity;s.inside=!0;let o=!1;const n=s.position;if(n&&i.interactivity.events.onClick.enable){for(const t of e.plugins.values())if(t.clickPositionValid&&(o=t.clickPositionValid(n),o))break;o||this._doMouseTouchClick(t),s.clicking=!1}},this._mouseTouchFinish=()=>{const t=this.container.interactivity;if(!t)return;const e=t.mouse;delete e.position,delete e.clickPosition,delete e.downPosition,t.status=n,e.inside=!1,e.clicking=!1},this._mouseTouchMove=t=>{const e=this.container,i=e.actualOptions,s=e.interactivity,o=e.canvas.element;if(!s?.element)return;let n;if(s.mouse.inside=!0,t.type.startsWith("pointer")){this._canPush=!0;const e=t;if(s.element===window){if(o){const t=o.getBoundingClientRect();n={x:e.clientX-t.left,y:e.clientY-t.top}}}else if(i.interactivity.detectsOn===Ce.parent){const t=e.target,i=e.currentTarget;if(t&&i&&o){const s=t.getBoundingClientRect(),a=i.getBoundingClientRect(),r=o.getBoundingClientRect();n={x:e.offsetX+2*s.left-(a.left+r.left),y:e.offsetY+2*s.top-(a.top+r.top)}}else n={x:e.offsetX??e.clientX,y:e.offsetY??e.clientY}}else e.target===o&&(n={x:e.offsetX??e.clientX,y:e.offsetY??e.clientY})}else if(this._canPush="touchmove"!==t.type,o){const e=t,i=1,s=e.touches[e.touches.length-i],a=o.getBoundingClientRect(),r=0;n={x:s.clientX-(a.left??r),y:s.clientY-(a.top??r)}}const a=e.retina.pixelRatio;n&&(n.x*=a,n.y*=a),s.mouse.position=n,s.status=r},this._touchEnd=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchFinish()},this._touchEndClick=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchClick(t)},this._touchStart=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.set(t.identifier,performance.now());this._mouseTouchMove(t)},this._canPush=!0,this._touches=new Map,this._handlers={mouseDown:()=>this._mouseDown(),mouseLeave:()=>this._mouseTouchFinish(),mouseMove:t=>this._mouseTouchMove(t),mouseUp:t=>this._mouseTouchClick(t),touchStart:t=>this._touchStart(t),touchMove:t=>this._mouseTouchMove(t),touchEnd:t=>this._touchEnd(t),touchCancel:t=>this._touchEnd(t),touchEndClick:t=>this._touchEndClick(t),visibilityChange:()=>this._handleVisibilityChange(),themeChange:t=>this._handleThemeChange(t),oldThemeChange:t=>this._handleThemeChange(t),resize:()=>{this._handleWindowResize()}}}addListeners(){this._manageListeners(!0)}removeListeners(){this._manageListeners(!1)}}var De,Ie;!function(t){t.configAdded="configAdded",t.containerInit="containerInit",t.particlesSetup="particlesSetup",t.containerStarted="containerStarted",t.containerStopped="containerStopped",t.containerDestroyed="containerDestroyed",t.containerPaused="containerPaused",t.containerPlay="containerPlay",t.containerBuilt="containerBuilt",t.particleAdded="particleAdded",t.particleDestroyed="particleDestroyed",t.particleRemoved="particleRemoved"}(De||(De={}));class Ee{constructor(){this.value=""}static create(t,e){const i=new Ee;return i.load(t),void 0!==e&&(w(e)||M(e)?i.load({value:e}):i.load(e)),i}load(t){P(t)||P(t.value)||(this.value=t.value)}}class Le{constructor(){this.color=new Ee,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(t){P(t)||(void 0!==t.color&&(this.color=Ee.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image),void 0!==t.position&&(this.position=t.position),void 0!==t.repeat&&(this.repeat=t.repeat),void 0!==t.size&&(this.size=t.size),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Ae{constructor(){this.opacity=1}load(t){P(t)||(void 0!==t.color&&(this.color=Ee.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Fe{constructor(){this.composite="destination-out",this.cover=new Ae,this.enable=!1}load(t){if(!P(t)){if(void 0!==t.composite&&(this.composite=t.composite),void 0!==t.cover){const e=t.cover,i=w(t.cover)?{color:t.cover}:t.cover;this.cover.load(void 0!==e.color||void 0!==e.image?e:{color:i})}void 0!==t.enable&&(this.enable=t.enable)}}}class Be{constructor(){this.enable=!0,this.zIndex=0}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.zIndex&&(this.zIndex=t.zIndex))}}class He{constructor(){this.enable=!1,this.mode=[]}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode))}}!function(t){t.circle="circle",t.rectangle="rectangle"}(Ie||(Ie={}));class Ve{constructor(){this.selectors=[],this.enable=!1,this.mode=[],this.type=Ie.circle}load(t){P(t)||(void 0!==t.selectors&&(this.selectors=t.selectors),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.type&&(this.type=t.type))}}class Ue{constructor(){this.enable=!1,this.force=2,this.smooth=10}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.force&&(this.force=t.force),void 0!==t.smooth&&(this.smooth=t.smooth))}}class We{constructor(){this.enable=!1,this.mode=[],this.parallax=new Ue}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),this.parallax.load(t.parallax))}}class qe{constructor(){this.delay=.5,this.enable=!0}load(t){P(t)||(void 0!==t.delay&&(this.delay=t.delay),void 0!==t.enable&&(this.enable=t.enable))}}class $e{constructor(){this.onClick=new He,this.onDiv=new Ve,this.onHover=new We,this.resize=new qe}load(t){if(P(t))return;this.onClick.load(t.onClick);const e=t.onDiv;void 0!==e&&(this.onDiv=Et(e,(t=>{const e=new Ve;return e.load(t),e}))),this.onHover.load(t.onHover),this.resize.load(t.resize)}}class Ge{constructor(t,e){this._engine=t,this._container=e}load(t){if(P(t))return;if(!this._container)return;const e=this._engine.interactors.get(this._container);if(e)for(const i of e)i.loadModeOptions&&i.loadModeOptions(this,t)}}class Ne{constructor(t,e){this.detectsOn=Ce.window,this.events=new $e,this.modes=new Ge(t,e)}load(t){if(P(t))return;const e=t.detectsOn;void 0!==e&&(this.detectsOn=e),this.events.load(t.events),this.modes.load(t.modes)}}class je{load(t){P(t)||(t.position&&(this.position={x:t.position.x??50,y:t.position.y??50,mode:t.position.mode??ct.percent}),t.options&&(this.options=kt({},t.options)))}}var Qe,Xe,Ye,Ze,Je,Ke,ti;!function(t){t.screen="screen",t.canvas="canvas"}(Qe||(Qe={}));class ei{constructor(){this.maxWidth=1/0,this.options={},this.mode=Qe.canvas}load(t){P(t)||(P(t.maxWidth)||(this.maxWidth=t.maxWidth),P(t.mode)||(t.mode===Qe.screen?this.mode=Qe.screen:this.mode=Qe.canvas),P(t.options)||(this.options=kt({},t.options)))}}!function(t){t.any="any",t.dark="dark",t.light="light"}(Xe||(Xe={}));class ii{constructor(){this.auto=!1,this.mode=Xe.any,this.value=!1}load(t){P(t)||(void 0!==t.auto&&(this.auto=t.auto),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}class si{constructor(){this.name="",this.default=new ii}load(t){P(t)||(void 0!==t.name&&(this.name=t.name),this.default.load(t.default),void 0!==t.options&&(this.options=kt({},t.options)))}}class oi{constructor(){this.count=0,this.enable=!1,this.speed=1,this.decay=0,this.delay=0,this.sync=!1}load(t){P(t)||(void 0!==t.count&&(this.count=G(t.count)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=G(t.speed)),void 0!==t.decay&&(this.decay=G(t.decay)),void 0!==t.delay&&(this.delay=G(t.delay)),void 0!==t.sync&&(this.sync=t.sync))}}class ni extends oi{constructor(){super(),this.mode=ot.auto,this.startValue=ht.random}load(t){super.load(t),P(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.startValue&&(this.startValue=t.startValue))}}class ai extends oi{constructor(){super(),this.offset=0,this.sync=!0}load(t){super.load(t),P(t)||void 0!==t.offset&&(this.offset=G(t.offset))}}class ri{constructor(){this.h=new ai,this.s=new ai,this.l=new ai}load(t){P(t)||(this.h.load(t.h),this.s.load(t.s),this.l.load(t.l))}}class ci extends Ee{constructor(){super(),this.animation=new ri}static create(t,e){const i=new ci;return i.load(t),void 0!==e&&(w(e)||M(e)?i.load({value:e}):i.load(e)),i}load(t){if(super.load(t),P(t))return;const e=t.animation;void 0!==e&&(void 0!==e.enable?this.animation.h.load(e):this.animation.load(t.animation))}}!function(t){t.absorb="absorb",t.bounce="bounce",t.destroy="destroy"}(Ye||(Ye={}));class hi{constructor(){this.speed=2}load(t){P(t)||void 0!==t.speed&&(this.speed=t.speed)}}class li{constructor(){this.enable=!0,this.retries=0}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.retries&&(this.retries=t.retries))}}class di{constructor(){this.value=0}load(t){P(t)||P(t.value)||(this.value=G(t.value))}}class ui extends di{constructor(){super(),this.animation=new oi}load(t){if(super.load(t),P(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class pi extends ui{constructor(){super(),this.animation=new ni}load(t){super.load(t)}}class fi extends di{constructor(){super(),this.value=1}}class vi{constructor(){this.horizontal=new fi,this.vertical=new fi}load(t){P(t)||(this.horizontal.load(t.horizontal),this.vertical.load(t.vertical))}}class mi{constructor(){this.absorb=new hi,this.bounce=new vi,this.enable=!1,this.maxSpeed=50,this.mode=Ye.bounce,this.overlap=new li}load(t){P(t)||(this.absorb.load(t.absorb),this.bounce.load(t.bounce),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.maxSpeed&&(this.maxSpeed=G(t.maxSpeed)),void 0!==t.mode&&(this.mode=t.mode),this.overlap.load(t.overlap))}}class gi{constructor(){this.close=!0,this.fill=!0,this.options={},this.type=[]}load(t){if(P(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=kt(this.options[t]??{},i))}void 0!==t.close&&(this.close=t.close),void 0!==t.fill&&(this.fill=t.fill),void 0!==t.type&&(this.type=t.type)}}class yi{constructor(){this.offset=0,this.value=90}load(t){P(t)||(void 0!==t.offset&&(this.offset=G(t.offset)),void 0!==t.value&&(this.value=G(t.value)))}}class _i{constructor(){this.distance=200,this.enable=!1,this.rotate={x:3e3,y:3e3}}load(t){if(!P(t)&&(void 0!==t.distance&&(this.distance=G(t.distance)),void 0!==t.enable&&(this.enable=t.enable),t.rotate)){const e=t.rotate.x;void 0!==e&&(this.rotate.x=e);const i=t.rotate.y;void 0!==i&&(this.rotate.y=i)}}}class wi{constructor(){this.x=50,this.y=50,this.mode=ct.percent,this.radius=0}load(t){P(t)||(void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.radius&&(this.radius=t.radius))}}class bi{constructor(){this.acceleration=9.81,this.enable=!1,this.inverse=!1,this.maxSpeed=50}load(t){P(t)||(void 0!==t.acceleration&&(this.acceleration=G(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.inverse&&(this.inverse=t.inverse),void 0!==t.maxSpeed&&(this.maxSpeed=G(t.maxSpeed)))}}class xi{constructor(){this.clamp=!0,this.delay=new di,this.enable=!1,this.options={}}load(t){P(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=kt(this.options,t.options)))}}class zi{load(t){P(t)||(void 0!==t.color&&(this.color=Ee.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image))}}class Mi{constructor(){this.enable=!1,this.length=10,this.fill=new zi}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.fill&&this.fill.load(t.fill),void 0!==t.length&&(this.length=t.length))}}!function(t){t.bounce="bounce",t.none="none",t.out="out",t.destroy="destroy",t.split="split"}(Ze||(Ze={}));class Pi{constructor(){this.default=Ze.out}load(t){P(t)||(void 0!==t.default&&(this.default=t.default),this.bottom=t.bottom??t.default,this.left=t.left??t.default,this.right=t.right??t.default,this.top=t.top??t.default)}}class ki{constructor(){this.acceleration=0,this.enable=!1}load(t){P(t)||(void 0!==t.acceleration&&(this.acceleration=G(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),t.position&&(this.position=kt({},t.position)))}}class Oi{constructor(){this.angle=new yi,this.attract=new _i,this.center=new wi,this.decay=0,this.distance={},this.direction=y.none,this.drift=0,this.enable=!1,this.gravity=new bi,this.path=new xi,this.outModes=new Pi,this.random=!1,this.size=!1,this.speed=2,this.spin=new ki,this.straight=!1,this.trail=new Mi,this.vibrate=!1,this.warp=!1}load(t){if(P(t))return;this.angle.load(b(t.angle)?{value:t.angle}:t.angle),this.attract.load(t.attract),this.center.load(t.center),void 0!==t.decay&&(this.decay=G(t.decay)),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.distance&&(this.distance=b(t.distance)?{horizontal:t.distance,vertical:t.distance}:{...t.distance}),void 0!==t.drift&&(this.drift=G(t.drift)),void 0!==t.enable&&(this.enable=t.enable),this.gravity.load(t.gravity);const e=t.outModes;void 0!==e&&(z(e)?this.outModes.load(e):this.outModes.load({default:e})),this.path.load(t.path),void 0!==t.random&&(this.random=t.random),void 0!==t.size&&(this.size=t.size),void 0!==t.speed&&(this.speed=G(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 Si extends ni{constructor(){super(),this.destroy=at.none,this.speed=2}load(t){super.load(t),P(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}class Ci extends pi{constructor(){super(),this.animation=new Si,this.value=1}load(t){if(P(t))return;super.load(t);const e=t.animation;void 0!==e&&this.animation.load(e)}}class Ri{constructor(){this.enable=!1,this.width=1920,this.height=1080}load(t){if(P(t))return;void 0!==t.enable&&(this.enable=t.enable);const e=t.width;void 0!==e&&(this.width=e);const i=t.height;void 0!==i&&(this.height=i)}}!function(t){t.delete="delete",t.wait="wait"}(Je||(Je={}));class Ti{constructor(){this.mode=Je.delete,this.value=0}load(t){P(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}class Di{constructor(){this.density=new Ri,this.limit=new Ti,this.value=0}load(t){P(t)||(this.density.load(t.density),this.limit.load(t.limit),void 0!==t.value&&(this.value=t.value))}}class Ii{constructor(){this.blur=0,this.color=new Ee,this.enable=!1,this.offset={x:0,y:0},this.color.value="#000"}load(t){P(t)||(void 0!==t.blur&&(this.blur=t.blur),this.color=Ee.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 Ei{constructor(){this.close=!0,this.fill=!0,this.options={},this.type="circle"}load(t){if(P(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=kt(this.options[t]??{},i))}void 0!==t.close&&(this.close=t.close),void 0!==t.fill&&(this.fill=t.fill),void 0!==t.type&&(this.type=t.type)}}class Li extends ni{constructor(){super(),this.destroy=at.none,this.speed=5}load(t){super.load(t),P(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}class Ai extends pi{constructor(){super(),this.animation=new Li,this.value=3}load(t){if(super.load(t),P(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class Fi{constructor(){this.width=0}load(t){P(t)||(void 0!==t.color&&(this.color=ci.create(this.color,t.color)),void 0!==t.width&&(this.width=G(t.width)),void 0!==t.opacity&&(this.opacity=G(t.opacity)))}}class Bi extends di{constructor(){super(),this.opacityRate=1,this.sizeRate=1,this.velocityRate=1}load(t){super.load(t),P(t)||(void 0!==t.opacityRate&&(this.opacityRate=t.opacityRate),void 0!==t.sizeRate&&(this.sizeRate=t.sizeRate),void 0!==t.velocityRate&&(this.velocityRate=t.velocityRate))}}class Hi{constructor(t,e){this._engine=t,this._container=e,this.bounce=new vi,this.collisions=new mi,this.color=new ci,this.color.value="#fff",this.effect=new gi,this.groups={},this.move=new Oi,this.number=new Di,this.opacity=new Ci,this.reduceDuplicates=!1,this.shadow=new Ii,this.shape=new Ei,this.size=new Ai,this.stroke=new Fi,this.zIndex=new Bi}load(t){if(P(t))return;if(void 0!==t.groups)for(const e of Object.keys(t.groups)){if(!Object.hasOwn(t.groups,e))continue;const i=t.groups[e];void 0!==i&&(this.groups[e]=kt(this.groups[e]??{},i))}void 0!==t.reduceDuplicates&&(this.reduceDuplicates=t.reduceDuplicates),this.bounce.load(t.bounce),this.color.load(ci.create(this.color,t.color)),this.effect.load(t.effect),this.move.load(t.move),this.number.load(t.number),this.opacity.load(t.opacity),this.shape.load(t.shape),this.size.load(t.size),this.shadow.load(t.shadow),this.zIndex.load(t.zIndex),this.collisions.load(t.collisions),void 0!==t.interactivity&&(this.interactivity=kt({},t.interactivity));const e=t.stroke;if(e&&(this.stroke=Et(e,(t=>{const e=new Fi;return e.load(t),e}))),this._container){const e=this._engine.updaters.get(this._container);if(e)for(const i of e)i.loadOptions&&i.loadOptions(this,t);const i=this._engine.interactors.get(this._container);if(i)for(const e of i)e.loadParticlesOptions&&e.loadParticlesOptions(this,t)}}}function Vi(t,...e){for(const i of e)t.load(i)}function Ui(t,e,...i){const s=new Hi(t,e);return Vi(s,...i),s}class Wi{constructor(t,e){this._findDefaultTheme=t=>this.themes.find((e=>e.default.value&&e.default.mode===t))??this.themes.find((t=>t.default.value&&t.default.mode===Xe.any)),this._importPreset=t=>{this.load(this._engine.getPreset(t))},this._engine=t,this._container=e,this.autoPlay=!0,this.background=new Le,this.backgroundMask=new Fe,this.clear=!0,this.defaultThemes={},this.delay=0,this.fullScreen=new Be,this.detectRetina=!0,this.duration=0,this.fpsLimit=120,this.interactivity=new Ne(t,e),this.manualParticles=[],this.particles=Ui(this._engine,this._container),this.pauseOnBlur=!0,this.pauseOnOutsideViewport=!0,this.responsive=[],this.smooth=!1,this.style={},this.themes=[],this.zLayers=100}load(t){if(P(t))return;void 0!==t.preset&&Et(t.preset,(t=>this._importPreset(t))),void 0!==t.autoPlay&&(this.autoPlay=t.autoPlay),void 0!==t.clear&&(this.clear=t.clear),void 0!==t.key&&(this.key=t.key),void 0!==t.name&&(this.name=t.name),void 0!==t.delay&&(this.delay=G(t.delay));const e=t.detectRetina;void 0!==e&&(this.detectRetina=e),void 0!==t.duration&&(this.duration=G(t.duration));const i=t.fpsLimit;void 0!==i&&(this.fpsLimit=i),void 0!==t.pauseOnBlur&&(this.pauseOnBlur=t.pauseOnBlur),void 0!==t.pauseOnOutsideViewport&&(this.pauseOnOutsideViewport=t.pauseOnOutsideViewport),void 0!==t.zLayers&&(this.zLayers=t.zLayers),this.background.load(t.background);const s=t.fullScreen;_(s)?this.fullScreen.enable=s:this.fullScreen.load(s),this.backgroundMask.load(t.backgroundMask),this.interactivity.load(t.interactivity),t.manualParticles&&(this.manualParticles=t.manualParticles.map((t=>{const e=new je;return e.load(t),e}))),this.particles.load(t.particles),this.style=kt(this.style,t.style),this._engine.loadOptions(this,t),void 0!==t.smooth&&(this.smooth=t.smooth);const o=this._engine.interactors.get(this._container);if(o)for(const e of o)e.loadOptions&&e.loadOptions(this,t);if(void 0!==t.responsive)for(const e of t.responsive){const t=new ei;t.load(e),this.responsive.push(t)}if(this.responsive.sort(((t,e)=>t.maxWidth-e.maxWidth)),void 0!==t.themes)for(const e of t.themes){const t=this.themes.find((t=>t.name===e.name));if(t)t.load(e);else{const t=new si;t.load(e),this.themes.push(t)}}this.defaultThemes.dark=this._findDefaultTheme(Xe.dark)?.name,this.defaultThemes.light=this._findDefaultTheme(Xe.light)?.name}setResponsive(t,e,i){this.load(i);const s=this.responsive.find((i=>i.mode===Qe.screen&&screen?i.maxWidth>screen.availWidth:i.maxWidth*e>t));return this.load(s?.options),s?.maxWidth}setTheme(t){if(t){const e=this.themes.find((e=>e.name===t));e&&this.load(e.options)}else{const t=mt("(prefers-color-scheme: dark)"),e=t?.matches,i=this._findDefaultTheme(e?Xe.dark:Xe.light);i&&this.load(i.options)}}}!function(t){t.external="external",t.particles="particles"}(Ke||(Ke={}));class qi{constructor(t,e){this.container=e,this._engine=t,this._interactors=[],this._externalInteractors=[],this._particleInteractors=[]}externalInteract(t){for(const e of this._externalInteractors)e.isEnabled()&&e.interact(t)}handleClickMode(t){for(const e of this._externalInteractors)e.handleClickMode?.(t)}async init(){this._interactors=await this._engine.getInteractors(this.container,!0),this._externalInteractors=[],this._particleInteractors=[];for(const t of this._interactors){switch(t.type){case Ke.external:this._externalInteractors.push(t);break;case Ke.particles:this._particleInteractors.push(t)}t.init()}}particlesInteract(t,e){for(const i of this._externalInteractors)i.clear(t,e);for(const i of this._particleInteractors)i.isEnabled(t)&&i.interact(t,e)}reset(t){for(const e of this._externalInteractors)e.isEnabled()&&e.reset(t);for(const e of this._particleInteractors)e.isEnabled(t)&&e.reset(t)}}!function(t){t.normal="normal",t.inside="inside",t.outside="outside"}(ti||(ti={}));const $i=.5,Gi="random";function Ni(t){if(!_t(t.outMode,t.checkModes))return;const e=2*t.radius;t.coord>t.maxCoord-e?t.setCb(-t.radius):t.coord<e&&t.setCb(t.radius)}class ji{constructor(t,e){this.container=e,this._calcPosition=(t,e,i,s=0)=>{for(const s of t.plugins.values()){const t=void 0!==s.particlePosition?s.particlePosition(e,this):void 0;if(t)return C.create(t.x,t.y,i)}const o=et({size:t.canvas.size,position:e}),n=C.create(o.x,o.y,i),a=this.getRadius(),r=this.options.move.outModes,c=e=>{Ni({outMode:e,checkModes:[Ze.bounce],coord:n.x,maxCoord:t.canvas.size.width,setCb:t=>n.x+=t,radius:a})},h=e=>{Ni({outMode:e,checkModes:[Ze.bounce],coord:n.y,maxCoord:t.canvas.size.height,setCb:t=>n.y+=t,radius:a})};if(c(r.left??r.default),c(r.right??r.default),h(r.top??r.default),h(r.bottom??r.default),this._checkOverlap(n,s)){const e=1;return this._calcPosition(t,void 0,i,s+e)}return n},this._calculateVelocity=()=>{const t=Y(this.direction).copy(),e=this.options.move;if(e.direction===y.inside||e.direction===y.outside)return t;const i=Q(W(e.angle.value)),s=Q(W(e.angle.offset)),o={left:s-i*$i,right:s+i*$i};return e.straight||(t.angle+=U(G(o.left,o.right))),e.random&&"number"==typeof e.speed&&(t.length*=L()),t},this._checkOverlap=(t,e=0)=>{const i=this.options.collisions,s=this.getRadius();if(!i.enable)return!1;const o=i.overlap;if(o.enable)return!1;const n=o.retries;if(n>=0&&e>n)throw new Error(`${f} particle is overlapping and can't be placed`);return!!this.container.particles.find((e=>j(t,e.position)<s+e.getRadius()))},this._getRollColor=t=>{if(!t||!this.roll||!this.backColor&&!this.roll.alter)return t;const e=this.roll.horizontal&&this.roll.vertical?2:1,i=this.roll.horizontal?Math.PI*$i:0;return Math.floor(((this.roll.angle??0)+i)/(Math.PI/e))%2?this.backColor?this.backColor:this.roll.alter?Pe(t,this.roll.alter.type,this.roll.alter.value):t:t},this._initPosition=t=>{const e=this.container,i=W(this.options.zIndex.value);this.position=this._calcPosition(e,t,H(i,0,e.zLayers)),this.initialPosition=this.position.copy();const s=e.canvas.size;switch(this.moveCenter={...Ht(this.options.move.center,s),radius:this.options.move.center.radius??0,mode:this.options.move.center.mode??ct.percent},this.direction=X(this.options.move.direction,this.position,this.moveCenter),this.options.move.direction){case y.inside:this.outType=ti.inside;break;case y.outside:this.outType=ti.outside}this.offset=R.origin},this._engine=t}destroy(t){if(this.unbreakable||this.destroyed)return;this.destroyed=!0,this.bubble.inRange=!1,this.slow.inRange=!1;const e=this.container,i=this.pathGenerator,s=e.shapeDrawers.get(this.shape);s?.particleDestroy?.(this);for(const i of e.plugins.values())i.particleDestroyed?.(this,t);for(const i of e.particles.updaters)i.particleDestroyed?.(this,t);i?.reset(this),this._engine.dispatchEvent(De.particleDestroyed,{container:this.container,data:{particle:this}})}draw(t){const e=this.container,i=e.canvas;for(const s of e.plugins.values())i.drawParticlePlugin(s,this,t);i.drawParticle(this,t)}getFillColor(){return this._getRollColor(this.bubble.color??ce(this.color))}getMass(){return this.getRadius()**2*Math.PI*$i}getPosition(){return{x:this.position.x+this.offset.x,y:this.position.y+this.offset.y,z:this.position.z}}getRadius(){return this.bubble.radius??this.size.value}getStrokeColor(){return this._getRollColor(this.bubble.color??ce(this.strokeColor))}init(t,e,i,s){const o=this.container,n=this._engine;this.id=t,this.group=s,this.effectClose=!0,this.effectFill=!0,this.shapeClose=!0,this.shapeFill=!0,this.pathRotation=!1,this.lastPathTime=0,this.destroyed=!1,this.unbreakable=!1,this.isRotating=!1,this.rotation=0,this.misplaced=!1,this.retina={maxDistance:{}},this.outType=ti.normal,this.ignoresResizeRatio=!0;const a=o.retina.pixelRatio,r=o.actualOptions,c=Ui(this._engine,o,r.particles),{reduceDuplicates:h}=c,l=c.effect.type,d=c.shape.type;this.effect=Lt(l,this.id,h),this.shape=Lt(d,this.id,h);const u=c.effect,p=c.shape;if(i){if(i.effect?.type){const t=Lt(i.effect.type,this.id,h);t&&(this.effect=t,u.load(i.effect))}if(i.shape?.type){const t=Lt(i.shape.type,this.id,h);t&&(this.shape=t,p.load(i.shape))}}if(this.effect===Gi){const t=[...this.container.effectDrawers.keys()];this.effect=t[Math.floor(Math.random()*t.length)]}if(this.shape===Gi){const t=[...this.container.shapeDrawers.keys()];this.shape=t[Math.floor(Math.random()*t.length)]}this.effectData=function(t,e,i,s){const o=e.options[t];if(o)return kt({close:e.close,fill:e.fill},Lt(o,i,s))}(this.effect,u,this.id,h),this.shapeData=function(t,e,i,s){const o=e.options[t];if(o)return kt({close:e.close,fill:e.fill},Lt(o,i,s))}(this.shape,p,this.id,h),c.load(i);const f=this.effectData;f&&c.load(f.particles);const v=this.shapeData;v&&c.load(v.particles);const m=new Ne(n,o);m.load(o.actualOptions.interactivity),m.load(c.interactivity),this.interactivity=m,this.effectFill=f?.fill??c.effect.fill,this.effectClose=f?.close??c.effect.close,this.shapeFill=v?.fill??c.shape.fill,this.shapeClose=v?.close??c.shape.close,this.options=c;const y=this.options.move.path;this.pathDelay=W(y.delay.value)*g,y.generator&&(this.pathGenerator=this._engine.getPathGenerator(y.generator),this.pathGenerator&&o.addPath(y.generator,this.pathGenerator)&&this.pathGenerator.init(o)),o.retina.initParticle(this),this.size=Ft(this.options.size,a),this.bubble={inRange:!1},this.slow={inRange:!1,factor:1},this._initPosition(e),this.initialVelocity=this._calculateVelocity(),this.velocity=this.initialVelocity.copy();this.moveDecay=1-W(this.options.move.decay);const _=o.particles;_.setLastZIndex(this.position.z),this.zIndexFactor=this.position.z/o.zLayers,this.sides=24;let w=o.effectDrawers.get(this.effect);w||(w=this._engine.getEffectDrawer(this.effect),w&&o.effectDrawers.set(this.effect,w)),w?.loadEffect&&w.loadEffect(this);let b=o.shapeDrawers.get(this.shape);b||(b=this._engine.getShapeDrawer(this.shape),b&&o.shapeDrawers.set(this.shape,b)),b?.loadShape&&b.loadShape(this);const x=b?.getSidesCount;x&&(this.sides=x(this)),this.spawning=!1,this.shadowColor=jt(this._engine,this.options.shadow.color);for(const t of _.updaters)t.init(this);for(const t of _.movers)t.init?.(this);w?.particleInit?.(o,this),b?.particleInit?.(o,this);for(const t of o.plugins.values())t.particleCreated?.(this)}isInsideCanvas(){const t=this.getRadius(),e=this.container.canvas.size,i=this.position;return i.x>=-t&&i.y>=-t&&i.y<=e.height+t&&i.x<=e.width+t}isVisible(){return!this.destroyed&&!this.spawning&&this.isInsideCanvas()}reset(){for(const t of this.container.particles.updaters)t.reset?.(this)}}class Qi{constructor(t,e){this.position=t,this.particle=e}}var Xi;!function(t){t.circle="circle",t.rectangle="rectangle"}(Xi||(Xi={}));class Yi{constructor(t,e,i){this.position={x:t,y:e},this.type=i}}class Zi extends Yi{constructor(t,e,i){super(t,e,Xi.circle),this.radius=i}contains(t){return j(t,this.position)<=this.radius}intersects(t){const e=this.position,i=t.position,s=Math.abs(i.x-e.x),o=Math.abs(i.y-e.y),n=this.radius;if(t instanceof Zi||t.type===Xi.circle){return n+t.radius>Math.sqrt(s**2+o**2)}if(t instanceof Ji||t.type===Xi.rectangle){const e=t,{width:i,height:a}=e.size;return Math.pow(s-i,2)+Math.pow(o-a,2)<=n**2||s<=n+i&&o<=n+a||s<=i||o<=a}return!1}}class Ji extends Yi{constructor(t,e,i,s){super(t,e,Xi.rectangle),this.size={height:s,width:i}}contains(t){const e=this.size.width,i=this.size.height,s=this.position;return t.x>=s.x&&t.x<=s.x+e&&t.y>=s.y&&t.y<=s.y+i}intersects(t){if(t instanceof Zi)return t.intersects(this);const e=this.size.width,i=this.size.height,s=this.position,o=t.position,n=t instanceof Ji?t.size:{width:0,height:0},a=n.width,r=n.height;return o.x<s.x+e&&o.x+a>s.x&&o.y<s.y+i&&o.y+r>s.y}}const Ki=.5;class ts{constructor(t,e){this.rectangle=t,this.capacity=e,this._subdivide=()=>{const{x:t,y:e}=this.rectangle.position,{width:i,height:s}=this.rectangle.size,{capacity:o}=this;for(let n=0;n<4;n++){const a=n%2;this._subs.push(new ts(new Ji(t+i*Ki*a,e+s*Ki*(Math.round(n*Ki)-a),i*Ki,s*Ki),o))}this._divided=!0},this._points=[],this._divided=!1,this._subs=[]}insert(t){return!!this.rectangle.contains(t.position)&&(this._points.length<this.capacity?(this._points.push(t),!0):(this._divided||this._subdivide(),this._subs.some((e=>e.insert(t)))))}query(t,e){const i=[];if(!t.intersects(this.rectangle))return[];for(const s of this._points)!t.contains(s.position)&&j(t.position,s.position)>s.particle.getRadius()&&(!e||e(s.particle))||i.push(s.particle);if(this._divided)for(const s of this._subs)i.push(...s.query(t,e));return i}queryCircle(t,e,i){return this.query(new Zi(t.x,t.y,e),i)}queryRectangle(t,e,i){return this.query(new Ji(t.x,t.y,e.width,e.height),i)}}const es=t=>{const{height:e,width:i}=t;return new Ji(-.25*i,-.25*e,1.5*i,1.5*e)};class is{constructor(t,e){this._addToPool=(...t)=>{this._pool.push(...t)},this._applyDensity=(t,e,i)=>{const s=t.number;if(!t.number.density?.enable)return void(void 0===i?this._limit=s.limit.value:s.limit&&this._groupLimits.set(i,s.limit.value));const o=this._initDensityFactor(s.density),n=s.value,a=s.limit.value>0?s.limit.value:n,r=Math.min(n,a)*o+e,c=Math.min(this.count,this.filter((t=>t.group===i)).length);void 0===i?this._limit=s.limit.value*o:this._groupLimits.set(i,s.limit.value*o),c<r?this.push(Math.abs(r-c),void 0,t,i):c>r&&this.removeQuantity(c-r,i)},this._initDensityFactor=t=>{const e=this._container;if(!e.canvas.element||!t.enable)return 1;const i=e.canvas.element,s=e.retina.pixelRatio;return i.width*i.height/(t.height*t.width*s**2)},this._pushParticle=(t,e,i,s)=>{try{let o=this._pool.pop();o||(o=new ji(this._engine,this._container)),o.init(this._nextId,t,e,i);let n=!0;if(s&&(n=s(o)),!n)return;return this._array.push(o),this._zArray.push(o),this._nextId++,this._engine.dispatchEvent(De.particleAdded,{container:this._container,data:{particle:o}}),o}catch(t){ut().warning(`${f} adding particle: ${t}`)}},this._removeParticle=(t,e,i)=>{const s=this._array[t];if(!s||s.group!==e)return!1;const o=this._zArray.indexOf(s);return this._array.splice(t,1),this._zArray.splice(o,1),s.destroy(i),this._engine.dispatchEvent(De.particleRemoved,{container:this._container,data:{particle:s}}),this._addToPool(s),!0},this._engine=t,this._container=e,this._nextId=0,this._array=[],this._zArray=[],this._pool=[],this._limit=0,this._groupLimits=new Map,this._needsSort=!1,this._lastZIndex=0,this._interactionManager=new qi(t,e),this._pluginsInitialized=!1;const i=e.canvas.size;this.quadTree=new ts(es(i),4),this.movers=[],this.updaters=[]}get count(){return this._array.length}addManualParticles(){const t=this._container;t.actualOptions.manualParticles.forEach((e=>this.addParticle(e.position?Ht(e.position,t.canvas.size):void 0,e.options)))}addParticle(t,e,i,s){const o=this._container.actualOptions.particles.number.limit.mode,n=void 0===i?this._limit:this._groupLimits.get(i)??this._limit,a=this.count;if(n>0)switch(o){case Je.delete:{const t=a+1-n;t>0&&this.removeQuantity(t);break}case Je.wait:if(a>=n)return}return this._pushParticle(t,e,i,s)}clear(){this._array=[],this._zArray=[],this._pluginsInitialized=!1}destroy(){this._array=[],this._zArray=[],this.movers=[],this.updaters=[]}draw(t){const e=this._container,i=e.canvas;i.clear(),this.update(t);for(const s of e.plugins.values())i.drawPlugin(s,t);for(const e of this._zArray)e.draw(t)}filter(t){return this._array.filter(t)}find(t){return this._array.find(t)}get(t){return this._array[t]}handleClickMode(t){this._interactionManager.handleClickMode(t)}async init(){const t=this._container,e=t.actualOptions;this._lastZIndex=0,this._needsSort=!1,await this.initPlugins();let i=!1;for(const e of t.plugins.values())if(i=e.particlesInitialization?.()??i,i)break;if(this.addManualParticles(),!i){const t=e.particles,i=t.groups;for(const e in i){const s=i[e];for(let i=this.count,o=0;o<s.number?.value&&i<t.number.value;i++,o++)this.addParticle(void 0,s,e)}for(let e=this.count;e<t.number.value;e++)this.addParticle()}}async initPlugins(){if(this._pluginsInitialized)return;const t=this._container;this.movers=await this._engine.getMovers(t,!0),this.updaters=await this._engine.getUpdaters(t,!0),await this._interactionManager.init();for(const e of t.pathGenerators.values())e.init(t)}push(t,e,i,s){for(let o=0;o<t;o++)this.addParticle(e?.position,i,s)}async redraw(){this.clear(),await this.init(),this.draw({value:0,factor:0})}remove(t,e,i){this.removeAt(this._array.indexOf(t),void 0,e,i)}removeAt(t,e=1,i,s){if(t<0||t>this.count)return;let o=0;for(let n=t;o<e&&n<this.count;n++)this._removeParticle(n,i,s)&&(n--,o++)}removeQuantity(t,e){this.removeAt(0,t,e)}setDensity(){const t=this._container.actualOptions,e=t.particles.groups;for(const t in e)this._applyDensity(e[t],0,t);this._applyDensity(t.particles,t.manualParticles.length)}setLastZIndex(t){this._lastZIndex=t,this._needsSort=this._needsSort||this._lastZIndex<t}setResizeFactor(t){this._resizeFactor=t}update(t){const e=this._container,i=new Set;this.quadTree=new ts(es(e.canvas.size),4);for(const t of e.pathGenerators.values())t.update();for(const i of e.plugins.values())i.update?.(t);const s=this._resizeFactor;for(const e of this._array){s&&!e.ignoresResizeRatio&&(e.position.x*=s.width,e.position.y*=s.height,e.initialPosition.x*=s.width,e.initialPosition.y*=s.height),e.ignoresResizeRatio=!1,this._interactionManager.reset(e);for(const i of this._container.plugins.values()){if(e.destroyed)break;i.particleUpdate?.(e,t)}for(const i of this.movers)i.isEnabled(e)&&i.move(e,t);e.destroyed?i.add(e):this.quadTree.insert(new Qi(e.getPosition(),e))}if(i.size){const t=t=>!i.has(t);this._array=this.filter(t),this._zArray=this._zArray.filter(t);for(const t of i)this._engine.dispatchEvent(De.particleRemoved,{container:this._container,data:{particle:t}});this._addToPool(...i)}this._interactionManager.externalInteract(t);for(const e of this._array){for(const i of this.updaters)i.update(e,t);e.destroyed||e.spawning||this._interactionManager.particlesInteract(e,t)}if(delete this._resizeFactor,this._needsSort){const t=this._zArray;t.sort(((t,e)=>e.position.z-t.position.z||t.id-e.id));const e=1;this._lastZIndex=t[t.length-e].position.z,this._needsSort=!1}}}class ss{constructor(t){this.container=t,this.pixelRatio=1,this.reduceFactor=1}init(){const t=this.container,e=t.actualOptions;this.pixelRatio=!e.detectRetina||ft()?1:window.devicePixelRatio,this.reduceFactor=1;const i=this.pixelRatio,s=t.canvas;if(s.element){const t=s.element;s.size.width=t.offsetWidth*i,s.size.height=t.offsetHeight*i}const o=e.particles,n=o.move;this.maxSpeed=W(n.gravity.maxSpeed)*i,this.sizeAnimationSpeed=W(o.size.animation.speed)*i}initParticle(t){const e=t.options,i=this.pixelRatio,s=e.move,o=s.distance,n=t.retina;n.moveDrift=W(s.drift)*i,n.moveSpeed=W(s.speed)*i,n.sizeAnimationSpeed=W(e.size.animation.speed)*i;const a=n.maxDistance;a.horizontal=void 0!==o.horizontal?o.horizontal*i:void 0,a.vertical=void 0!==o.vertical?o.vertical*i:void 0,n.maxSpeed=W(s.gravity.maxSpeed)*i}}function os(t){return t&&!t.destroyed}function ns(t,e,...i){const s=new Wi(t,e);return Vi(s,...i),s}class as{constructor(t,e,i){this._intersectionManager=t=>{if(os(this)&&this.actualOptions.pauseOnOutsideViewport)for(const e of t)e.target===this.interactivity.element&&(e.isIntersecting?this.play():this.pause())},this._nextFrame=t=>{try{if(!this._smooth&&void 0!==this._lastFrameTime&&t<this._lastFrameTime+g/this.fpsLimit)return void this.draw(!1);this._lastFrameTime??=t;const e=function(t,e=60,i=!1){return{value:t,factor:i?60/e:60*t/g}}(t-this._lastFrameTime,this.fpsLimit,this._smooth);if(this.addLifeTime(e.value),this._lastFrameTime=t,e.value>g)return void this.draw(!1);if(this.particles.draw(e),!this.alive())return void this.destroy();this.animationStatus&&this.draw(!1)}catch(t){ut().error(`${f} in animation loop`,t)}},this._engine=t,this.id=Symbol(e),this.fpsLimit=120,this._smooth=!1,this._delay=0,this._duration=0,this._lifeTime=0,this._firstStart=!0,this.started=!1,this.destroyed=!1,this._paused=!0,this._lastFrameTime=0,this.zLayers=100,this.pageHidden=!1,this._clickHandlers=new Map,this._sourceOptions=i,this._initialSourceOptions=i,this.retina=new ss(this),this.canvas=new Se(this,this._engine),this.particles=new is(this._engine,this),this.pathGenerators=new Map,this.interactivity={mouse:{clicking:!1,inside:!1}},this.plugins=new Map,this.effectDrawers=new Map,this.shapeDrawers=new Map,this._options=ns(this._engine,this),this.actualOptions=ns(this._engine,this),this._eventListeners=new Te(this),this._intersectionObserver=gt((t=>this._intersectionManager(t))),this._engine.dispatchEvent(De.containerBuilt,{container:this})}get animationStatus(){return!this._paused&&!this.pageHidden&&os(this)}get options(){return this._options}get sourceOptions(){return this._sourceOptions}addClickHandler(t){if(!os(this))return;const e=this.interactivity.element;if(!e)return;const i=(e,i,s)=>{if(!os(this))return;const o=this.retina.pixelRatio,n={x:i.x*o,y:i.y*o},a=this.particles.quadTree.queryCircle(n,s*o);t(e,a)};let s=!1,o=!1;this._clickHandlers.set("click",(t=>{if(!os(this))return;const e=t,s={x:e.offsetX||e.clientX,y:e.offsetY||e.clientY};i(t,s,1)})),this._clickHandlers.set("touchstart",(()=>{os(this)&&(s=!0,o=!1)})),this._clickHandlers.set("touchmove",(()=>{os(this)&&(o=!0)})),this._clickHandlers.set("touchend",(t=>{if(os(this)){if(s&&!o){const e=t,s=1;let o=e.touches[e.touches.length-s];if(!o&&(o=e.changedTouches[e.changedTouches.length-s],!o))return;const n=this.canvas.element,a=n?n.getBoundingClientRect():void 0,r=0,c={x:o.clientX-(a?a.left:r),y:o.clientY-(a?a.top:r)};i(t,c,Math.max(o.radiusX,o.radiusY))}s=!1,o=!1}})),this._clickHandlers.set("touchcancel",(()=>{os(this)&&(s=!1,o=!1)}));for(const[t,i]of this._clickHandlers)e.addEventListener(t,i)}addLifeTime(t){this._lifeTime+=t}addPath(t,e,i=!1){return!(!os(this)||!i&&this.pathGenerators.has(t))&&(this.pathGenerators.set(t,e),!0)}alive(){return!this._duration||this._lifeTime<=this._duration}clearClickHandlers(){if(os(this)){for(const[t,e]of this._clickHandlers)this.interactivity.element?.removeEventListener(t,e);this._clickHandlers.clear()}}destroy(t=!0){if(os(this)){this.stop(),this.clearClickHandlers(),this.particles.destroy(),this.canvas.destroy();for(const t of this.effectDrawers.values())t.destroy?.(this);for(const t of this.shapeDrawers.values())t.destroy?.(this);for(const t of this.effectDrawers.keys())this.effectDrawers.delete(t);for(const t of this.shapeDrawers.keys())this.shapeDrawers.delete(t);if(this._engine.clearPlugins(this),this.destroyed=!0,t){const t=this._engine.items,e=t.findIndex((t=>t===this));if(e>=0){const i=1;t.splice(e,i)}}this._engine.dispatchEvent(De.containerDestroyed,{container:this})}}draw(t){if(!os(this))return;let e=t;const i=t=>{e&&(this._lastFrameTime=void 0,e=!1),this._nextFrame(t)};this._drawAnimationFrame=F((t=>i(t)))}async export(t,e={}){for(const i of this.plugins.values()){if(!i.export)continue;const s=await i.export(t,e);if(s.supported)return s.blob}ut().error(`${f} - Export plugin with type ${t} not found`)}handleClickMode(t){if(os(this)){this.particles.handleClickMode(t);for(const e of this.plugins.values())e.handleClickMode?.(t)}}async init(){if(!os(this))return;const t=this._engine.getSupportedEffects();for(const e of t){const t=this._engine.getEffectDrawer(e);t&&this.effectDrawers.set(e,t)}const e=this._engine.getSupportedShapes();for(const t of e){const e=this._engine.getShapeDrawer(t);e&&this.shapeDrawers.set(t,e)}await this.particles.initPlugins(),this._options=ns(this._engine,this,this._initialSourceOptions,this.sourceOptions),this.actualOptions=ns(this._engine,this,this._options);const i=await this._engine.getAvailablePlugins(this);for(const[t,e]of i)this.plugins.set(t,e);this.retina.init(),await this.canvas.init(),this.updateActualOptions(),this.canvas.initBackground(),this.canvas.resize();const{zLayers:s,duration:o,delay:n,fpsLimit:a,smooth:r}=this.actualOptions;this.zLayers=s,this._duration=W(o)*g,this._delay=W(n)*g,this._lifeTime=0;this.fpsLimit=a>0?a:120,this._smooth=r;for(const t of this.effectDrawers.values())await(t.init?.(this));for(const t of this.shapeDrawers.values())await(t.init?.(this));for(const t of this.plugins.values())await(t.init?.());this._engine.dispatchEvent(De.containerInit,{container:this}),await this.particles.init(),this.particles.setDensity();for(const t of this.plugins.values())t.particlesSetup?.();this._engine.dispatchEvent(De.particlesSetup,{container:this})}async loadTheme(t){os(this)&&(this._currentTheme=t,await this.refresh())}pause(){if(os(this)&&(void 0!==this._drawAnimationFrame&&(B(this._drawAnimationFrame),delete this._drawAnimationFrame),!this._paused)){for(const t of this.plugins.values())t.pause?.();this.pageHidden||(this._paused=!0),this._engine.dispatchEvent(De.containerPaused,{container:this})}}play(t){if(!os(this))return;const e=this._paused||t;if(!this._firstStart||this.actualOptions.autoPlay){if(this._paused&&(this._paused=!1),e)for(const t of this.plugins.values())t.play&&t.play();this._engine.dispatchEvent(De.containerPlay,{container:this}),this.draw(e??!1)}else this._firstStart=!1}async refresh(){if(os(this))return this.stop(),this.start()}async reset(t){if(os(this))return this._initialSourceOptions=t,this._sourceOptions=t,this._options=ns(this._engine,this,this._initialSourceOptions,this.sourceOptions),this.actualOptions=ns(this._engine,this,this._options),this.refresh()}async start(){os(this)&&!this.started&&(await this.init(),this.started=!0,await new Promise((t=>{const e=async()=>{this._eventListeners.addListeners(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.observe(this.interactivity.element);for(const t of this.plugins.values())await(t.start?.());this._engine.dispatchEvent(De.containerStarted,{container:this}),this.play(),t()};this._delayTimeout=setTimeout((()=>{e()}),this._delay)})))}stop(){if(os(this)&&this.started){this._delayTimeout&&(clearTimeout(this._delayTimeout),delete this._delayTimeout),this._firstStart=!0,this.started=!1,this._eventListeners.removeListeners(),this.pause(),this.particles.clear(),this.canvas.stop(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.unobserve(this.interactivity.element);for(const t of this.plugins.values())t.stop?.();for(const t of this.plugins.keys())this.plugins.delete(t);this._sourceOptions=this._options,this._engine.dispatchEvent(De.containerStopped,{container:this})}}updateActualOptions(){this.actualOptions.responsive=[];const t=this.actualOptions.setResponsive(this.canvas.size.width,this.retina.pixelRatio,this._options);return this.actualOptions.setTheme(this._currentTheme),this._responsiveMaxWidth!==t&&(this._responsiveMaxWidth=t,!0)}}class rs{constructor(){this._listeners=new Map}addEventListener(t,e){this.removeEventListener(t,e);let i=this._listeners.get(t);i||(i=[],this._listeners.set(t,i)),i.push(e)}dispatchEvent(t,e){const i=this._listeners.get(t);i?.forEach((t=>t(e)))}hasEventListener(t){return!!this._listeners.get(t)}removeAllEventListeners(t){t?this._listeners.delete(t):this._listeners=new Map}removeEventListener(t,e){const i=this._listeners.get(t);if(!i)return;const s=i.length,o=i.indexOf(e);if(o<0)return;1===s?this._listeners.delete(t):i.splice(o,1)}}async function cs(t,e,i,s=!1){let o=e.get(t);return o&&!s||(o=await Promise.all([...i.values()].map((e=>e(t)))),e.set(t,o)),o}const hs="true",ls="false",ds="canvas";class us{constructor(){this._configs=new Map,this._domArray=[],this._eventDispatcher=new rs,this._initialized=!1,this.plugins=[],this.colorManagers=new Map,this.easingFunctions=new Map,this._initializers={interactors:new Map,movers:new Map,updaters:new Map},this.interactors=new Map,this.movers=new Map,this.updaters=new Map,this.presets=new Map,this.effectDrawers=new Map,this.shapeDrawers=new Map,this.pathGenerators=new Map}get configs(){const t={};for(const[e,i]of this._configs)t[e]=i;return t}get items(){return this._domArray}get version(){return"3.7.0"}async addColorManager(t,e=!0){this.colorManagers.set(t.key,t),await this.refresh(e)}addConfig(t){const e=t.key??t.name??"default";this._configs.set(e,t),this._eventDispatcher.dispatchEvent(De.configAdded,{data:{name:e,config:t}})}async addEasing(t,e,i=!0){this.getEasing(t)||(this.easingFunctions.set(t,e),await this.refresh(i))}async addEffect(t,e,i=!0){Et(t,(t=>{this.getEffectDrawer(t)||this.effectDrawers.set(t,e)})),await this.refresh(i)}addEventListener(t,e){this._eventDispatcher.addEventListener(t,e)}async addInteractor(t,e,i=!0){this._initializers.interactors.set(t,e),await this.refresh(i)}async addMover(t,e,i=!0){this._initializers.movers.set(t,e),await this.refresh(i)}async addParticleUpdater(t,e,i=!0){this._initializers.updaters.set(t,e),await this.refresh(i)}async addPathGenerator(t,e,i=!0){this.getPathGenerator(t)||this.pathGenerators.set(t,e),await this.refresh(i)}async addPlugin(t,e=!0){this.getPlugin(t.id)||this.plugins.push(t),await this.refresh(e)}async addPreset(t,e,i=!1,s=!0){!i&&this.getPreset(t)||this.presets.set(t,e),await this.refresh(s)}async addShape(t,e=!0){for(const e of t.validTypes)this.getShapeDrawer(e)||this.shapeDrawers.set(e,t);await this.refresh(e)}clearPlugins(t){this.updaters.delete(t),this.movers.delete(t),this.interactors.delete(t)}dispatchEvent(t,e){this._eventDispatcher.dispatchEvent(t,e)}dom(){return this.items}domItem(t){return this.item(t)}async getAvailablePlugins(t){const e=new Map;for(const i of this.plugins)i.needsPlugin(t.actualOptions)&&e.set(i.id,await i.getPlugin(t));return e}getEasing(t){return this.easingFunctions.get(t)??(t=>t)}getEffectDrawer(t){return this.effectDrawers.get(t)}async getInteractors(t,e=!1){return cs(t,this.interactors,this._initializers.interactors,e)}async getMovers(t,e=!1){return cs(t,this.movers,this._initializers.movers,e)}getPathGenerator(t){return this.pathGenerators.get(t)}getPlugin(t){return this.plugins.find((e=>e.id===t))}getPreset(t){return this.presets.get(t)}getShapeDrawer(t){return this.shapeDrawers.get(t)}getSupportedEffects(){return this.effectDrawers.keys()}getSupportedShapes(){return this.shapeDrawers.keys()}async getUpdaters(t,e=!1){return cs(t,this.updaters,this._initializers.updaters,e)}init(){this._initialized||(this._initialized=!0)}item(t){const{items:e}=this,i=e[t];if(i&&!i.destroyed)return i;{const i=1;e.splice(t,i)}}async load(t){const e=t.id??t.element?.id??`tsparticles${Math.floor(1e4*L())}`,{index:s,url:o}=t,n=o?await async function(t){const e=Lt(t.url,t.index);if(!e)return t.fallback;const i=await fetch(e);return i.ok?await i.json():(ut().error(`${f} ${i.status} while retrieving config file`),t.fallback)}({fallback:t.options,url:o,index:s}):t.options,a=Lt(n,s),{items:r}=this,c=r.findIndex((t=>t.id.description===e)),h=new as(this,e,a);if(c>=0){const t=this.item(c),e=t?1:0;t&&!t.destroyed&&t.destroy(!1),r.splice(c,e,h)}else r.push(h);const l=((t,e)=>{let s=e??document.getElementById(t);return s||(s=document.createElement("div"),s.id=t,s.dataset[i]=hs,document.body.append(s),s)})(e,t.element),d=(t=>{let e;if(t instanceof HTMLCanvasElement||t.tagName.toLowerCase()===ds)e=t,e.dataset[i]||(e.dataset[i]=ls);else{const s=t.getElementsByTagName(ds);s.length?(e=s[0],e.dataset[i]=ls):(e=document.createElement(ds),e.dataset[i]=hs,t.appendChild(e))}const s="100%";return e.style.width||(e.style.width=s),e.style.height||(e.style.height=s),e})(l);return h.canvas.loadCanvas(d),await h.start(),h}loadOptions(t,e){this.plugins.forEach((i=>i.loadOptions?.(t,e)))}loadParticlesOptions(t,e,...i){const s=this.updaters.get(t);s&&s.forEach((t=>t.loadOptions?.(e,...i)))}async refresh(t=!0){t&&await Promise.all(this.items.map((t=>t.refresh())))}removeEventListener(t,e){this._eventDispatcher.removeEventListener(t,e)}setOnClickHandler(t){const{items:e}=this;if(!e.length)throw new Error(`${f} can only set click handlers after calling tsParticles.load()`);e.forEach((e=>e.addClickHandler(t)))}}class ps{constructor(t){this.type=Ke.external,this.container=t}}class fs{constructor(t){this.type=Ke.particles,this.container=t}}var vs,ms,gs;!function(t){t.clockwise="clockwise",t.counterClockwise="counter-clockwise",t.random="random"}(vs||(vs={})),function(t){t.linear="linear",t.radial="radial",t.random="random"}(ms||(ms={})),function(t){t.easeInBack="ease-in-back",t.easeInCirc="ease-in-circ",t.easeInCubic="ease-in-cubic",t.easeInLinear="ease-in-linear",t.easeInQuad="ease-in-quad",t.easeInQuart="ease-in-quart",t.easeInQuint="ease-in-quint",t.easeInExpo="ease-in-expo",t.easeInSine="ease-in-sine",t.easeOutBack="ease-out-back",t.easeOutCirc="ease-out-circ",t.easeOutCubic="ease-out-cubic",t.easeOutLinear="ease-out-linear",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",t.easeInOutBack="ease-in-out-back",t.easeInOutCirc="ease-in-out-circ",t.easeInOutCubic="ease-in-out-cubic",t.easeInOutLinear="ease-in-out-linear",t.easeInOutQuad="ease-in-out-quad",t.easeInOutQuart="ease-in-out-quart",t.easeInOutQuint="ease-in-out-quint",t.easeInOutExpo="ease-in-out-expo",t.easeInOutSine="ease-in-out-sine"}(gs||(gs={}));const ys=function(){const t=new us;return t.init(),t}();ft()||(window.tsParticles=ys);const _s=1;function ws(t,e,i,s,o,n){!function(t,e){const i=t.options,s=i.move.path;if(!s.enable)return;if(t.lastPathTime<=t.pathDelay)return void(t.lastPathTime+=e.value);const o=t.pathGenerator?.generate(t,e);o&&t.velocity.addTo(o);s.clamp&&(t.velocity.x=H(t.velocity.x,-_s,_s),t.velocity.y=H(t.velocity.y,-_s,_s));t.lastPathTime-=t.pathDelay}(t,n);const a=t.gravity,r=a?.enable&&a.inverse?-_s:_s;o&&i&&(t.velocity.x+=o*n.factor/(60*i)),a?.enable&&i&&(t.velocity.y+=r*(a.acceleration*n.factor)/(60*i));const c=t.moveDecay;t.velocity.multTo(c);const h=t.velocity.mult(i);a?.enable&&s>0&&(!a.inverse&&h.y>=0&&h.y>=s||a.inverse&&h.y<=0&&h.y<=-s)&&(h.y=r*s,i&&(t.velocity.y=h.y/i));const l=t.options.zIndex,d=(_s-t.zIndexFactor)**l.velocityRate;h.multTo(d);const{position:u}=t;u.addTo(h),e.vibrate&&(u.x+=Math.sin(u.x*Math.cos(u.y)),u.y+=Math.cos(u.y*Math.sin(u.x)))}class bs{init(t){const e=t.options.move.gravity;t.gravity={enable:e.enable,acceleration:W(e.acceleration),inverse:e.inverse},function(t){const e=t.container,i=t.options.move.spin;if(!i.enable)return;const s=i.position??{x:50,y:50},o={x:.01*s.x*e.canvas.size.width,y:.01*s.y*e.canvas.size.height},n=j(t.getPosition(),o),a=W(i.acceleration);t.retina.spinAcceleration=a*e.retina.pixelRatio,t.spin={center:o,direction:t.velocity.x>=0?vs.clockwise:vs.counterClockwise,angle:t.velocity.angle,radius:n,acceleration:t.retina.spinAcceleration}}(t)}isEnabled(t){return!t.destroyed&&t.options.move.enable}move(t,e){const i=t.options,s=i.move;if(!s.enable)return;const o=t.container,n=o.retina.pixelRatio;t.retina.moveSpeed??=W(s.speed)*n,t.retina.moveDrift??=W(t.options.move.drift)*n;const a=function(t){return t.slow.inRange?t.slow.factor:_s}(t),r=t.retina.moveSpeed*o.retina.reduceFactor,c=t.retina.moveDrift,h=$(i.size.value)*n,l=r*(s.size?t.getRadius()/h:1)*a*(e.factor||1)/2,d=t.retina.maxSpeed??o.retina.maxSpeed;s.spin.enable?function(t,e){const i=t.container;if(!t.spin)return;const s={x:t.spin.direction===vs.clockwise?Math.cos:Math.sin,y:t.spin.direction===vs.clockwise?Math.sin:Math.cos};t.position.x=t.spin.center.x+t.spin.radius*s.x(t.spin.angle),t.position.y=t.spin.center.y+t.spin.radius*s.y(t.spin.angle),t.spin.radius+=t.spin.acceleration;const o=Math.max(i.canvas.size.width,i.canvas.size.height),n=.5*o;t.spin.radius>n?(t.spin.radius=n,t.spin.acceleration*=-_s):t.spin.radius<0&&(t.spin.radius=0,t.spin.acceleration*=-_s),t.spin.angle+=.01*e*(_s-t.spin.radius/o)}(t,l):ws(t,s,l,d,c,e),function(t){const e=t.initialPosition,{dx:i,dy:s}=N(e,t.position),o=Math.abs(i),n=Math.abs(s),{maxDistance:a}=t.retina,r=a.horizontal,c=a.vertical;if(!r&&!c)return;if((r&&o>=r||c&&n>=c)&&!t.misplaced)t.misplaced=!!r&&o>r||!!c&&n>c,r&&(t.velocity.x=.5*t.velocity.y-t.velocity.x),c&&(t.velocity.y=.5*t.velocity.x-t.velocity.y);else if((!r||o<r)&&(!c||n<c)&&t.misplaced)t.misplaced=!1;else if(t.misplaced){const i=t.position,s=t.velocity;r&&(i.x<e.x&&s.x<0||i.x>e.x&&s.x>0)&&(s.x*=-L()),c&&(i.y<e.y&&s.y<0||i.y>e.y&&s.y>0)&&(s.y*=-L())}}(t)}}const xs=2*Math.PI,zs=0,Ms=0;class Ps{constructor(){this.validTypes=["circle"]}draw(t){!function(t){const{context:e,particle:i,radius:s}=t;i.circleRange||(i.circleRange={min:0,max:xs});const o=i.circleRange;e.arc(zs,Ms,s,o.min,o.max,!1)}(t)}getSidesCount(){return 12}particleInit(t,e){const i=e.shapeData,s=i?.angle??{max:360,min:0};e.circleRange=z(s)?{min:Q(s.min),max:Q(s.max)}:{min:0,max:Q(s)}}}class ks{constructor(t,e){this._container=t,this._engine=e}init(t){const e=Yt(this._engine,t.options.color,t.id,t.options.reduceDuplicates);e&&(t.color=he(e,t.options.color.animation,this._container.retina.reduceFactor))}isEnabled(t){const{h:e,s:i,l:s}=t.options.color.animation,{color:o}=t;return!t.destroyed&&!t.spawning&&(void 0!==o?.h.value&&e.enable||void 0!==o?.s.value&&i.enable||void 0!==o?.l.value&&s.enable)}update(t,e){ue(t.color,e)}}var Os;!function(t){t[t.r=1]="r",t[t.g=2]="g",t[t.b=3]="b",t[t.a=4]="a"}(Os||(Os={}));const Ss=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,Cs=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;class Rs{constructor(){this.key="hex",this.stringPrefix="#"}handleColor(t){return this._parseString(t.value)}handleRangeColor(t){return this._parseString(t.value)}parseString(t){return this._parseString(t)}_parseString(t){if("string"!=typeof t)return;if(!t?.startsWith(this.stringPrefix))return;const e=t.replace(Ss,((t,e,i,s,o)=>e+e+i+i+s+s+(void 0!==o?o+o:""))),i=Cs.exec(e);return i?{a:void 0!==i[Os.a]?parseInt(i[Os.a],16)/255:1,b:parseInt(i[Os.b],16),g:parseInt(i[Os.g],16),r:parseInt(i[Os.r],16)}:void 0}}var Ts;!function(t){t[t.h=1]="h",t[t.s=2]="s",t[t.l=3]="l",t[t.a=5]="a"}(Ts||(Ts={}));class Ds{constructor(){this.key="hsl",this.stringPrefix="hsl"}handleColor(t){const e=t.value.hsl??t.value;if(void 0!==e.h&&void 0!==e.s&&void 0!==e.l)return te(e)}handleRangeColor(t){const e=t.value.hsl??t.value;if(void 0!==e.h&&void 0!==e.l)return te({h:W(e.h),l:W(e.l),s:W(e.s)})}parseString(t){if(!t.startsWith("hsl"))return;const e=/hsla?\(\s*(\d+)\s*[\s,]\s*(\d+)%\s*[\s,]\s*(\d+)%\s*([\s,]\s*(0|1|0?\.\d+|(\d{1,3})%)\s*)?\)/i.exec(t);return e?ee({a:e.length>4?st(e[Ts.a]):1,h:parseInt(e[Ts.h],10),l:parseInt(e[Ts.l],10),s:parseInt(e[Ts.s],10)}):void 0}}class Is{constructor(t){this.container=t}init(t){const e=t.options.opacity;t.opacity=Ft(e,1);const i=e.animation;i.enable&&(t.opacity.velocity=W(i.speed)/v*this.container.retina.reduceFactor,i.sync||(t.opacity.velocity*=L()))}isEnabled(t){return!t.destroyed&&!t.spawning&&!!t.opacity&&t.opacity.enable&&((t.opacity.maxLoops??0)<=0||(t.opacity.maxLoops??0)>0&&(t.opacity.loops??0)<(t.opacity.maxLoops??0))}reset(t){t.opacity&&(t.opacity.time=0,t.opacity.loops=0)}update(t,e){this.isEnabled(t)&&t.opacity&&Ut(t,t.opacity,!0,t.options.opacity.animation.destroy,e)}}class Es{constructor(t){this.container=t,this.modes=[Ze.bounce,Ze.split]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;let n=!1;for(const s of o.plugins.values())if(void 0!==s.particleBounce&&(n=s.particleBounce(t,i,e)),n)break;if(n)return;const a=t.getPosition(),r=t.offset,c=t.getRadius(),h=Pt(a,c),l=o.canvas.size;!function(t){if(t.outMode!==Ze.bounce&&t.outMode!==Ze.split||t.direction!==rt.left&&t.direction!==rt.right)return;t.bounds.right<0&&t.direction===rt.left?t.particle.position.x=t.size+t.offset.x:t.bounds.left>t.canvasSize.width&&t.direction===rt.right&&(t.particle.position.x=t.canvasSize.width-t.size-t.offset.x);const e=t.particle.velocity.x;let i=!1;if(t.direction===rt.right&&t.bounds.right>=t.canvasSize.width&&e>0||t.direction===rt.left&&t.bounds.left<=0&&e<0){const e=W(t.particle.options.bounce.horizontal.value);t.particle.velocity.x*=-e,i=!0}if(!i)return;const s=t.offset.x+t.size;t.bounds.right>=t.canvasSize.width&&t.direction===rt.right?t.particle.position.x=t.canvasSize.width-s:t.bounds.left<=0&&t.direction===rt.left&&(t.particle.position.x=s),t.outMode===Ze.split&&t.particle.destroy()}({particle:t,outMode:s,direction:e,bounds:h,canvasSize:l,offset:r,size:c}),function(t){if(t.outMode!==Ze.bounce&&t.outMode!==Ze.split||t.direction!==rt.bottom&&t.direction!==rt.top)return;t.bounds.bottom<0&&t.direction===rt.top?t.particle.position.y=t.size+t.offset.y:t.bounds.top>t.canvasSize.height&&t.direction===rt.bottom&&(t.particle.position.y=t.canvasSize.height-t.size-t.offset.y);const e=t.particle.velocity.y;let i=!1;if(t.direction===rt.bottom&&t.bounds.bottom>=t.canvasSize.height&&e>0||t.direction===rt.top&&t.bounds.top<=0&&e<0){const e=W(t.particle.options.bounce.vertical.value);t.particle.velocity.y*=-e,i=!0}if(!i)return;const s=t.offset.y+t.size;t.bounds.bottom>=t.canvasSize.height&&t.direction===rt.bottom?t.particle.position.y=t.canvasSize.height-s:t.bounds.top<=0&&t.direction===rt.top&&(t.particle.position.y=s),t.outMode===Ze.split&&t.particle.destroy()}({particle:t,outMode:s,direction:e,bounds:h,canvasSize:l,offset:r,size:c})}}class Ls{constructor(t){this.container=t,this.modes=[Ze.destroy]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;switch(t.outType){case ti.normal:case ti.outside:if(zt(t.position,o.canvas.size,R.origin,t.getRadius(),e))return;break;case ti.inside:{const{dx:e,dy:i}=N(t.position,t.moveCenter),{x:s,y:o}=t.velocity;if(s<0&&e>t.moveCenter.radius||o<0&&i>t.moveCenter.radius||s>=0&&e<-t.moveCenter.radius||o>=0&&i<-t.moveCenter.radius)return;break}}o.particles.remove(t,t.group,!0)}}class As{constructor(t){this.container=t,this.modes=[Ze.none]}update(t,e,i,s){if(!this.modes.includes(s))return;if((t.options.move.distance.horizontal&&(e===rt.left||e===rt.right))??(t.options.move.distance.vertical&&(e===rt.top||e===rt.bottom)))return;const o=t.options.move.gravity,n=this.container,a=n.canvas.size,r=t.getRadius();if(o.enable){const i=t.position;(!o.inverse&&i.y>a.height+r&&e===rt.bottom||o.inverse&&i.y<-r&&e===rt.top)&&n.particles.remove(t)}else{if(t.velocity.y>0&&t.position.y<=a.height+r||t.velocity.y<0&&t.position.y>=-r||t.velocity.x>0&&t.position.x<=a.width+r||t.velocity.x<0&&t.position.x>=-r)return;zt(t.position,n.canvas.size,R.origin,r,e)||n.particles.remove(t)}}}class Fs{constructor(t){this.container=t,this.modes=[Ze.out]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;switch(t.outType){case ti.inside:{const{x:e,y:i}=t.velocity,s=R.origin;s.length=t.moveCenter.radius,s.angle=t.velocity.angle+Math.PI,s.addTo(R.create(t.moveCenter));const{dx:n,dy:a}=N(t.position,s);if(e<=0&&n>=0||i<=0&&a>=0||e>=0&&n<=0||i>=0&&a<=0)return;t.position.x=Math.floor(U({min:0,max:o.canvas.size.width})),t.position.y=Math.floor(U({min:0,max:o.canvas.size.height}));const{dx:r,dy:c}=N(t.position,t.moveCenter);t.direction=Math.atan2(-c,-r),t.velocity.angle=t.direction;break}default:if(zt(t.position,o.canvas.size,R.origin,t.getRadius(),e))return;switch(t.outType){case ti.outside:{t.position.x=Math.floor(U({min:-t.moveCenter.radius,max:t.moveCenter.radius}))+t.moveCenter.x,t.position.y=Math.floor(U({min:-t.moveCenter.radius,max:t.moveCenter.radius}))+t.moveCenter.y;const{dx:e,dy:i}=N(t.position,t.moveCenter);t.moveCenter.radius&&(t.direction=Math.atan2(i,e),t.velocity.angle=t.direction);break}case ti.normal:{const i=t.options.move.warp,s=o.canvas.size,n={bottom:s.height+t.getRadius()+t.offset.y,left:-t.getRadius()-t.offset.x,right:s.width+t.getRadius()+t.offset.x,top:-t.getRadius()-t.offset.y},a=t.getRadius(),r=Pt(t.position,a);e===rt.right&&r.left>s.width+t.offset.x?(t.position.x=n.left,t.initialPosition.x=t.position.x,i||(t.position.y=L()*s.height,t.initialPosition.y=t.position.y)):e===rt.left&&r.right<-t.offset.x&&(t.position.x=n.right,t.initialPosition.x=t.position.x,i||(t.position.y=L()*s.height,t.initialPosition.y=t.position.y)),e===rt.bottom&&r.top>s.height+t.offset.y?(i||(t.position.x=L()*s.width,t.initialPosition.x=t.position.x),t.position.y=n.top,t.initialPosition.y=t.position.y):e===rt.top&&r.bottom<-t.offset.y&&(i||(t.position.x=L()*s.width,t.initialPosition.x=t.position.x),t.position.y=n.bottom,t.initialPosition.y=t.position.y);break}}}}}class Bs{constructor(t){this._addUpdaterIfMissing=(t,e,i)=>{const s=t.options.move.outModes;!this.updaters.has(e)&&((t,e)=>t.default===e||t.bottom===e||t.left===e||t.right===e||t.top===e)(s,e)&&this.updaters.set(e,i(this.container))},this._updateOutMode=(t,e,i,s)=>{for(const o of this.updaters.values())o.update(t,s,e,i)},this.container=t,this.updaters=new Map}init(t){this._addUpdaterIfMissing(t,Ze.bounce,(t=>new Es(t))),this._addUpdaterIfMissing(t,Ze.out,(t=>new Fs(t))),this._addUpdaterIfMissing(t,Ze.destroy,(t=>new Ls(t))),this._addUpdaterIfMissing(t,Ze.none,(t=>new As(t)))}isEnabled(t){return!t.destroyed&&!t.spawning}update(t,e){const i=t.options.move.outModes;this._updateOutMode(t,e,i.bottom??i.default,rt.bottom),this._updateOutMode(t,e,i.left??i.default,rt.left),this._updateOutMode(t,e,i.right??i.default,rt.right),this._updateOutMode(t,e,i.top??i.default,rt.top)}}var Hs;!function(t){t[t.r=1]="r",t[t.g=2]="g",t[t.b=3]="b",t[t.a=5]="a"}(Hs||(Hs={}));class Vs{constructor(){this.key="rgb",this.stringPrefix="rgb"}handleColor(t){const e=t.value.rgb??t.value;if(void 0!==e.r)return e}handleRangeColor(t){const e=t.value.rgb??t.value;if(void 0!==e.r)return{r:W(e.r),g:W(e.g),b:W(e.b)}}parseString(t){if(!t.startsWith(this.stringPrefix))return;const e=/rgba?\(\s*(\d{1,3})\s*[\s,]\s*(\d{1,3})\s*[\s,]\s*(\d{1,3})\s*([\s,]\s*(0|1|0?\.\d+|(\d{1,3})%)\s*)?\)/i.exec(t);return e?{a:e.length>4?st(e[Hs.a]):1,b:parseInt(e[Hs.b],10),g:parseInt(e[Hs.g],10),r:parseInt(e[Hs.r],10)}:void 0}}class Us{init(t){const e=t.container,i=t.options.size.animation;i.enable&&(t.size.velocity=(t.retina.sizeAnimationSpeed??e.retina.sizeAnimationSpeed)/v*e.retina.reduceFactor,i.sync||(t.size.velocity*=L()))}isEnabled(t){return!t.destroyed&&!t.spawning&&t.size.enable&&((t.size.maxLoops??0)<=0||(t.size.maxLoops??0)>0&&(t.size.loops??0)<(t.size.maxLoops??0))}reset(t){t.size.loops=0}update(t,e){this.isEnabled(t)&&Ut(t,t.size,!0,t.options.size.animation.destroy,e)}}async function Ws(t,e=!0){Wt(t,"3.7.0"),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addColorManager(new Rs,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addColorManager(new Ds,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addColorManager(new Vs,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addMover("base",(()=>Promise.resolve(new bs)),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addShape(new Ps,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addParticleUpdater("color",(e=>Promise.resolve(new ks(e,t))),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addParticleUpdater("opacity",(t=>Promise.resolve(new Is(t))),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addParticleUpdater("outModes",(t=>Promise.resolve(new Bs(t))),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.0"),await t.addParticleUpdater("size",(()=>Promise.resolve(new Us)),e)}(t,!1),await t.refresh(e)}return e})()));
2
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i=e();for(var s in i)("object"==typeof exports?exports:t)[s]=i[s]}}(this,(()=>(()=>{var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{AlterType:()=>qt,AnimatableColor:()=>ci,AnimationMode:()=>ot,AnimationOptions:()=>oi,AnimationStatus:()=>nt,AnimationValueWithRandom:()=>ui,Background:()=>Le,BackgroundMask:()=>Fe,BackgroundMaskCover:()=>Ae,BaseRange:()=>Yi,Circle:()=>Zi,ClickEvent:()=>He,CollisionMode:()=>Ye,Collisions:()=>mi,CollisionsAbsorb:()=>hi,CollisionsOverlap:()=>li,ColorAnimation:()=>ai,DestroyType:()=>at,DivEvent:()=>Ve,DivType:()=>Ie,EasingType:()=>gs,EventType:()=>De,Events:()=>$e,ExternalInteractorBase:()=>ps,FullScreen:()=>Be,GradientType:()=>ms,HoverEvent:()=>We,HslAnimation:()=>ri,Interactivity:()=>Ne,InteractivityDetect:()=>Ce,InteractorType:()=>Ke,LimitMode:()=>Je,ManualParticle:()=>je,Modes:()=>Ge,Move:()=>Oi,MoveAngle:()=>yi,MoveAttract:()=>_i,MoveCenter:()=>wi,MoveDirection:()=>y,MoveGravity:()=>bi,MovePath:()=>xi,MoveTrail:()=>Mi,Opacity:()=>Ci,OpacityAnimation:()=>Si,Options:()=>Wi,OptionsColor:()=>Ee,OutMode:()=>Ze,OutModeDirection:()=>rt,OutModes:()=>Pi,Parallax:()=>Ue,ParticleOutType:()=>ti,ParticlesBounce:()=>vi,ParticlesBounceFactor:()=>fi,ParticlesDensity:()=>Ri,ParticlesInteractorBase:()=>fs,ParticlesNumber:()=>Di,ParticlesNumberLimit:()=>Ti,ParticlesOptions:()=>Hi,PixelMode:()=>ct,Point:()=>Qi,RangedAnimationOptions:()=>ni,RangedAnimationValueWithRandom:()=>pi,Rectangle:()=>Ji,ResizeEvent:()=>qe,Responsive:()=>ei,ResponsiveMode:()=>Qe,RotateDirection:()=>vs,Shadow:()=>Ii,Shape:()=>Ei,Size:()=>Ai,SizeAnimation:()=>Li,Spin:()=>ki,StartValueType:()=>ht,Stroke:()=>Fi,Theme:()=>si,ThemeDefault:()=>ii,ThemeMode:()=>Xe,ValueWithRandom:()=>di,Vector:()=>R,Vector3d:()=>C,ZIndex:()=>Bi,alterHsl:()=>Pe,animate:()=>F,areBoundsInside:()=>Mt,arrayRandomIndex:()=>bt,assertValidVersion:()=>Wt,calcExactPositionOrRandomFromSize:()=>et,calcExactPositionOrRandomFromSizeRanged:()=>it,calcPositionFromSize:()=>J,calcPositionOrRandomFromSize:()=>K,calcPositionOrRandomFromSizeRanged:()=>tt,calculateBounds:()=>Pt,cancelAnimation:()=>B,circleBounce:()=>Dt,circleBounceDataFromParticle:()=>Tt,clamp:()=>H,clear:()=>ye,collisionVelocity:()=>Z,colorMix:()=>ne,colorToHsl:()=>Xt,colorToRgb:()=>Qt,deepExtend:()=>kt,degToRad:()=>Q,divMode:()=>Rt,divModeExecute:()=>St,drawEffect:()=>we,drawLine:()=>ve,drawParticle:()=>_e,drawParticlePlugin:()=>Me,drawPlugin:()=>ze,drawShape:()=>be,drawShapeAfterDraw:()=>xe,errorPrefix:()=>f,executeOnSingleOrMultiple:()=>Et,findItemFromSingleOrMultiple:()=>At,generatedAttribute:()=>i,getDistance:()=>j,getDistances:()=>N,getHslAnimationFromHsl:()=>he,getHslFromAnimation:()=>ce,getLinkColor:()=>ae,getLinkRandomColor:()=>re,getLogger:()=>ut,getParticleBaseVelocity:()=>Y,getParticleDirectionAngle:()=>X,getPosition:()=>Ht,getRandom:()=>L,getRandomRgbColor:()=>ie,getRangeMax:()=>$,getRangeMin:()=>q,getRangeValue:()=>W,getSize:()=>Vt,getStyleFromHsl:()=>oe,getStyleFromRgb:()=>se,halfRandom:()=>m,hasMatchMedia:()=>vt,hslToRgb:()=>te,hslaToRgba:()=>ee,initParticleNumericAnimationValue:()=>Ft,isArray:()=>M,isBoolean:()=>_,isDivModeEnabled:()=>Ot,isFunction:()=>x,isInArray:()=>_t,isNull:()=>P,isNumber:()=>b,isObject:()=>z,isPointInside:()=>zt,isSsr:()=>ft,isString:()=>w,itemFromArray:()=>xt,itemFromSingleOrMultiple:()=>Lt,loadBasic:()=>Ws,loadFont:()=>wt,loadOptions:()=>Vi,loadParticlesOptions:()=>Ui,millisecondsToSeconds:()=>g,mix:()=>V,mouseDownEvent:()=>s,mouseLeaveEvent:()=>n,mouseMoveEvent:()=>r,mouseOutEvent:()=>a,mouseUpEvent:()=>o,paintBase:()=>me,paintImage:()=>ge,parseAlpha:()=>st,percentDenominator:()=>v,randomInRange:()=>U,rangeColorToHsl:()=>Yt,rangeColorToRgb:()=>jt,rectBounce:()=>It,resizeEvent:()=>u,rgbToHsl:()=>Zt,safeIntersectionObserver:()=>gt,safeMatchMedia:()=>mt,safeMutationObserver:()=>yt,setAnimationFunctions:()=>A,setLogger:()=>dt,setRandom:()=>E,setRangeValue:()=>G,singleDivModeExecute:()=>Ct,stringToAlpha:()=>Jt,stringToRgb:()=>Kt,touchCancelEvent:()=>d,touchEndEvent:()=>h,touchMoveEvent:()=>l,touchStartEvent:()=>c,tsParticles:()=>ys,updateAnimation:()=>Ut,updateColor:()=>ue,updateColorValue:()=>de,visibilityChangeEvent:()=>p});const i="generated",s="pointerdown",o="pointerup",n="pointerleave",a="pointerout",r="pointermove",c="touchstart",h="touchend",l="touchmove",d="touchcancel",u="resize",p="visibilitychange",f="tsParticles - Error",v=100,m=.5,g=1e3;var y;function _(t){return"boolean"==typeof t}function w(t){return"string"==typeof t}function b(t){return"number"==typeof t}function x(t){return"function"==typeof t}function z(t){return"object"==typeof t&&null!==t}function M(t){return Array.isArray(t)}function P(t){return null==t}!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",t.outside="outside",t.inside="inside"}(y||(y={}));const k=0,O=0,S=0;class C{constructor(t,e,i){if(this._updateFromAngle=(t,e)=>{this.x=Math.cos(t)*e,this.y=Math.sin(t)*e},!b(t)&&t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:S}else{if(void 0===t||void 0===e)throw new Error(`${f} Vector3d not initialized correctly`);this.x=t,this.y=e,this.z=i??S}}static get origin(){return C.create(k,O,S)}get angle(){return Math.atan2(this.y,this.x)}set angle(t){this._updateFromAngle(t,this.length)}get length(){return Math.sqrt(this.getLengthSq())}set length(t){this._updateFromAngle(this.angle,t)}static clone(t){return C.create(t.x,t.y,t.z)}static create(t,e,i){return new C(t,e,i)}add(t){return C.create(this.x+t.x,this.y+t.y,this.z+t.z)}addTo(t){this.x+=t.x,this.y+=t.y,this.z+=t.z}copy(){return C.clone(this)}distanceTo(t){return this.sub(t).length}distanceToSq(t){return this.sub(t).getLengthSq()}div(t){return C.create(this.x/t,this.y/t,this.z/t)}divTo(t){this.x/=t,this.y/=t,this.z/=t}getLengthSq(){return this.x**2+this.y**2}mult(t){return C.create(this.x*t,this.y*t,this.z*t)}multTo(t){this.x*=t,this.y*=t,this.z*=t}normalize(){const t=this.length;0!=t&&this.multTo(1/t)}rotate(t){return C.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t),S)}setTo(t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:S}sub(t){return C.create(this.x-t.x,this.y-t.y,this.z-t.z)}subFrom(t){this.x-=t.x,this.y-=t.y,this.z-=t.z}}class R extends C{constructor(t,e){super(t,e,S)}static get origin(){return R.create(k,O)}static clone(t){return R.create(t.x,t.y)}static create(t,e){return new R(t,e)}}let T=Math.random;const D={nextFrame:t=>requestAnimationFrame(t),cancel:t=>cancelAnimationFrame(t)},I=2*Math.PI;function E(t=Math.random){T=t}function L(){return H(T(),0,1-Number.EPSILON)}function A(t,e){D.nextFrame=e=>t(e),D.cancel=t=>e(t)}function F(t){return D.nextFrame(t)}function B(t){D.cancel(t)}function H(t,e,i){return Math.min(Math.max(t,e),i)}function V(t,e,i,s){return Math.floor((t*i+e*s)/(i+s))}function U(t){const e=$(t);let i=q(t);return e===i&&(i=0),L()*(e-i)+i}function W(t){return b(t)?t:U(t)}function q(t){return b(t)?t:t.min}function $(t){return b(t)?t:t.max}function G(t,e){if(t===e||void 0===e&&b(t))return t;const i=q(t),s=$(t);return void 0!==e?{min:Math.min(i,e),max:Math.max(s,e)}:G(i,s)}function N(t,e){const i=t.x-e.x,s=t.y-e.y;return{dx:i,dy:s,distance:Math.sqrt(i**2+s**2)}}function j(t,e){return N(t,e).distance}function Q(t){return t*Math.PI/180}function X(t,e,i){if(b(t))return Q(t);const s=.25;switch(t){case y.top:return.5*-Math.PI;case y.topRight:return-Math.PI*s;case y.right:return 0;case y.bottomRight:return Math.PI*s;case y.bottom:return.5*Math.PI;case y.bottomLeft:return.75*Math.PI;case y.left:return Math.PI;case y.topLeft:return.75*-Math.PI;case y.inside:return Math.atan2(i.y-e.y,i.x-e.x);case y.outside:return Math.atan2(e.y-i.y,e.x-i.x);default:return L()*I}}function Y(t){const e=R.origin;return e.length=1,e.angle=t,e}function Z(t,e,i,s){return R.create(t.x*(i-s)/(i+s)+2*e.x*s/(i+s),t.y)}function J(t){return void 0!==t.position?.x&&void 0!==t.position.y?{x:t.position.x*t.size.width/v,y:t.position.y*t.size.height/v}:void 0}function K(t){return{x:(t.position?.x??L()*v)*t.size.width/v,y:(t.position?.y??L()*v)*t.size.height/v}}function tt(t){const e={x:void 0!==t.position?.x?W(t.position.x):void 0,y:void 0!==t.position?.y?W(t.position.y):void 0};return K({size:t.size,position:e})}function et(t){return{x:t.position?.x??L()*t.size.width,y:t.position?.y??L()*t.size.height}}function it(t){const e={x:void 0!==t.position?.x?W(t.position.x):void 0,y:void 0!==t.position?.y?W(t.position.y):void 0};return et({size:t.size,position:e})}function st(t){return t?t.endsWith("%")?parseFloat(t)/v:parseFloat(t):1}var ot,nt,at,rt,ct,ht;!function(t){t.auto="auto",t.increase="increase",t.decrease="decrease",t.random="random"}(ot||(ot={})),function(t){t.increasing="increasing",t.decreasing="decreasing"}(nt||(nt={})),function(t){t.none="none",t.max="max",t.min="min"}(at||(at={})),function(t){t.bottom="bottom",t.left="left",t.right="right",t.top="top"}(rt||(rt={})),function(t){t.precise="precise",t.percent="percent"}(ct||(ct={})),function(t){t.max="max",t.min="min",t.random="random"}(ht||(ht={}));const lt={debug:console.debug,error:console.error,info:console.info,log:console.log,verbose:console.log,warning:console.warn};function dt(t){lt.debug=t.debug||lt.debug,lt.error=t.error||lt.error,lt.info=t.info||lt.info,lt.log=t.log||lt.log,lt.verbose=t.verbose||lt.verbose,lt.warning=t.warning||lt.warning}function ut(){return lt}function pt(t){const e={bounced:!1},{pSide:i,pOtherSide:s,rectSide:o,rectOtherSide:n,velocity:a,factor:r}=t;return s.min<n.min||s.min>n.max||s.max<n.min||s.max>n.max||(i.max>=o.min&&i.max<=.5*(o.max+o.min)&&a>0||i.min<=o.max&&i.min>.5*(o.max+o.min)&&a<0)&&(e.velocity=a*-r,e.bounced=!0),e}function ft(){return"undefined"==typeof window||!window||void 0===window.document||!window.document}function vt(){return!ft()&&"undefined"!=typeof matchMedia}function mt(t){if(vt())return matchMedia(t)}function gt(t){if(!ft()&&"undefined"!=typeof IntersectionObserver)return new IntersectionObserver(t)}function yt(t){if(!ft()&&"undefined"!=typeof MutationObserver)return new MutationObserver(t)}function _t(t,e){return t===e||M(e)&&e.indexOf(t)>-1}async function wt(t,e){try{await document.fonts.load(`${e??"400"} 36px '${t??"Verdana"}'`)}catch{}}function bt(t){return Math.floor(L()*t.length)}function xt(t,e,i=!0){return t[void 0!==e&&i?e%t.length:bt(t)]}function zt(t,e,i,s,o){return Mt(Pt(t,s??0),e,i,o)}function Mt(t,e,i,s){let o=!0;return s&&s!==rt.bottom||(o=t.top<e.height+i.x),!o||s&&s!==rt.left||(o=t.right>i.x),!o||s&&s!==rt.right||(o=t.left<e.width+i.y),!o||s&&s!==rt.top||(o=t.bottom>i.y),o}function Pt(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function kt(t,...e){for(const i of e){if(null==i)continue;if(!z(i)){t=i;continue}const e=Array.isArray(i);!e||!z(t)&&t&&Array.isArray(t)?e||!z(t)&&t&&!Array.isArray(t)||(t={}):t=[];for(const e in i){if("__proto__"===e)continue;const s=i[e],o=t;o[e]=z(s)&&Array.isArray(s)?s.map((t=>kt(o[e],t))):kt(o[e],s)}}return t}function Ot(t,e){return!!At(e,(e=>e.enable&&_t(t,e.mode)))}function St(t,e,i){Et(e,(e=>{const s=e.mode;e.enable&&_t(t,s)&&Ct(e,i)}))}function Ct(t,e){Et(t.selectors,(i=>{e(i,t)}))}function Rt(t,e){if(e&&t)return At(t,(t=>function(t,e){const i=Et(e,(e=>t.matches(e)));return M(i)?i.some((t=>t)):i}(e,t.selectors)))}function Tt(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:R.create(W(t.options.bounce.horizontal.value),W(t.options.bounce.vertical.value))}}function Dt(t,e){const{x:i,y:s}=t.velocity.sub(e.velocity),[o,n]=[t.position,e.position],{dx:a,dy:r}=N(n,o);if(i*a+s*r<0)return;const c=-Math.atan2(r,a),h=t.mass,l=e.mass,d=t.velocity.rotate(c),u=e.velocity.rotate(c),p=Z(d,u,h,l),f=Z(u,d,h,l),v=p.rotate(-c),m=f.rotate(-c);t.velocity.x=v.x*t.factor.x,t.velocity.y=v.y*t.factor.y,e.velocity.x=m.x*e.factor.x,e.velocity.y=m.y*e.factor.y}function It(t,e){const i=Pt(t.getPosition(),t.getRadius()),s=t.options.bounce,o=pt({pSide:{min:i.left,max:i.right},pOtherSide:{min:i.top,max:i.bottom},rectSide:{min:e.left,max:e.right},rectOtherSide:{min:e.top,max:e.bottom},velocity:t.velocity.x,factor:W(s.horizontal.value)});o.bounced&&(void 0!==o.velocity&&(t.velocity.x=o.velocity),void 0!==o.position&&(t.position.x=o.position));const n=pt({pSide:{min:i.top,max:i.bottom},pOtherSide:{min:i.left,max:i.right},rectSide:{min:e.top,max:e.bottom},rectOtherSide:{min:e.left,max:e.right},velocity:t.velocity.y,factor:W(s.vertical.value)});n.bounced&&(void 0!==n.velocity&&(t.velocity.y=n.velocity),void 0!==n.position&&(t.position.y=n.position))}function Et(t,e){return M(t)?t.map(((t,i)=>e(t,i))):e(t,0)}function Lt(t,e,i){return M(t)?xt(t,e,i):t}function At(t,e){if(M(t))return t.find(((t,i)=>e(t,i)));return e(t,0)?t:void 0}function Ft(t,e){const i=t.value,s=t.animation,o={delayTime:W(s.delay)*g,enable:s.enable,value:W(t.value)*e,max:$(i)*e,min:q(i)*e,loops:0,maxLoops:W(s.count),time:0};if(s.enable){switch(o.decay=1-W(s.decay),s.mode){case ot.increase:o.status=nt.increasing;break;case ot.decrease:o.status=nt.decreasing;break;case ot.random:o.status=L()>=m?nt.increasing:nt.decreasing}const t=s.mode===ot.auto;switch(s.startValue){case ht.min:o.value=o.min,t&&(o.status=nt.increasing);break;case ht.max:o.value=o.max,t&&(o.status=nt.decreasing);break;case ht.random:default:o.value=U(o),t&&(o.status=L()>=m?nt.increasing:nt.decreasing)}}return o.initialValue=o.value,o}function Bt(t,e){if(!(t.mode===ct.percent)){const{mode:e,...i}=t;return i}return"x"in t?{x:t.x/v*e.width,y:t.y/v*e.height}:{width:t.width/v*e.width,height:t.height/v*e.height}}function Ht(t,e){return Bt(t,e)}function Vt(t,e){return Bt(t,e)}function Ut(t,e,i,s,o){if(t.destroyed||!e||!e.enable||(e.maxLoops??0)>0&&(e.loops??0)>(e.maxLoops??0))return;const n=(e.velocity??0)*o.factor,a=e.min,r=e.max,c=e.decay??1;if(e.time||(e.time=0),(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=o.value),!((e.delayTime??0)>0&&e.time<(e.delayTime??0))){switch(e.status){case nt.increasing:e.value>=r?(i?e.status=nt.decreasing:e.value-=r,e.loops||(e.loops=0),e.loops++):e.value+=n;break;case nt.decreasing:e.value<=a?(i?e.status=nt.increasing:e.value+=r,e.loops||(e.loops=0),e.loops++):e.value-=n}e.velocity&&1!==c&&(e.velocity*=c),function(t,e,i,s,o){switch(e){case at.max:i>=o&&t.destroy();break;case at.min:i<=s&&t.destroy()}}(t,s,e.value,a,r),t.destroyed||(e.value=H(e.value,a,r))}}function Wt(t,e){if(t.version!==e)throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${t.version}. Plugins version: ${e}`)}var qt;!function(t){t.darken="darken",t.enlighten="enlighten"}(qt||(qt={}));const $t="random",Gt="mid";function Nt(t,e){if(e)for(const i of t.colorManagers.values())if(e.startsWith(i.stringPrefix))return i.parseString(e)}function jt(t,e,i,s=!0){if(!e)return;const o=w(e)?{value:e}:e;if(w(o.value))return Qt(t,o.value,i,s);if(M(o.value))return jt(t,{value:xt(o.value,i,s)});for(const e of t.colorManagers.values()){const t=e.handleRangeColor(o);if(t)return t}}function Qt(t,e,i,s=!0){if(!e)return;const o=w(e)?{value:e}:e;if(w(o.value))return o.value===$t?ie():Kt(t,o.value);if(M(o.value))return Qt(t,{value:xt(o.value,i,s)});for(const e of t.colorManagers.values()){const t=e.handleColor(o);if(t)return t}}function Xt(t,e,i,s=!0){const o=Qt(t,e,i,s);return o?Zt(o):void 0}function Yt(t,e,i,s=!0){const o=jt(t,e,i,s);return o?Zt(o):void 0}function Zt(t){const e=t.r/255,i=t.g/255,s=t.b/255,o=Math.max(e,i,s),n=Math.min(e,i,s),a={h:0,l:.5*(o+n),s:0};return o!==n&&(a.s=a.l<.5?(o-n)/(o+n):(o-n)/(2-o-n),a.h=e===o?(i-s)/(o-n):a.h=i===o?2+(s-e)/(o-n):4+(e-i)/(o-n)),a.l*=100,a.s*=100,a.h*=60,a.h<0&&(a.h+=360),a.h>=360&&(a.h-=360),a}function Jt(t,e){return Nt(t,e)?.a}function Kt(t,e){return Nt(t,e)}function te(t){const e=360,i=(t.h%e+e)%e,s=Math.max(0,Math.min(100,t.s)),o=i/e,n=s/100,a=Math.max(0,Math.min(100,t.l))/100,r=255;if(0===s){const t=Math.round(a*r);return{r:t,g:t,b:t}}const c=(t,e,i)=>{if(i<0&&i++,i>1&&i--,6*i<1)return t+6*(e-t)*i;if(2*i<1)return e;if(3*i<2){return t+(e-t)*(2/3-i)*6}return t},h=a<.5?a*(1+n):a+n-a*n,l=2*a-h,d=1/3,u=Math.min(r,r*c(l,h,o+d)),p=Math.min(r,r*c(l,h,o)),f=Math.min(r,r*c(l,h,o-d));return{r:Math.round(u),g:Math.round(p),b:Math.round(f)}}function ee(t){const e=te(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function ie(t){const e=t??0;return{b:Math.floor(U(G(e,256))),g:Math.floor(U(G(e,256))),r:Math.floor(U(G(e,256)))}}function se(t,e){return`rgba(${t.r}, ${t.g}, ${t.b}, ${e??1})`}function oe(t,e){return`hsla(${t.h}, ${t.s}%, ${t.l}%, ${e??1})`}function ne(t,e,i,s){let o=t,n=e;return void 0===o.r&&(o=te(t)),void 0===n.r&&(n=te(e)),{b:V(o.b,n.b,i,s),g:V(o.g,n.g,i,s),r:V(o.r,n.r,i,s)}}function ae(t,e,i){if(i===$t)return ie();if(i!==Gt)return i;{const i=t.getFillColor()??t.getStrokeColor(),s=e?.getFillColor()??e?.getStrokeColor();if(i&&s&&e)return ne(i,s,t.getRadius(),e.getRadius());{const t=i??s;if(t)return te(t)}}}function re(t,e,i,s){const o=w(e)?e:e.value;return o===$t?s?jt(t,{value:o}):i?$t:Gt:o===Gt?Gt:jt(t,{value:o})}function ce(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function he(t,e,i){const s={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(le(s.h,e.h,i),le(s.s,e.s,i),le(s.l,e.l,i)),s}function le(t,e,i){t.enable=e.enable;t.enable?(t.velocity=W(e.speed)/v*i,t.decay=1-W(e.decay),t.status=nt.increasing,t.loops=0,t.maxLoops=W(e.count),t.time=0,t.delayTime=W(e.delay)*g,e.sync||(t.velocity*=L(),t.value*=L()),t.initialValue=t.value,t.offset=G(e.offset)):t.velocity=0}function de(t,e,i,s){if(!t||!t.enable||(t.maxLoops??0)>0&&(t.loops??0)>(t.maxLoops??0))return;if(t.time||(t.time=0),(t.delayTime??0)>0&&t.time<(t.delayTime??0)&&(t.time+=s.value),(t.delayTime??0)>0&&t.time<(t.delayTime??0))return;const o=t.offset?U(t.offset):0,n=(t.velocity??0)*s.factor+3.6*o,a=t.decay??1,r=$(e),c=q(e);if(i&&t.status!==nt.increasing){t.value-=n;const e=0;t.value<e&&(t.loops||(t.loops=0),t.loops++,t.status=nt.increasing)}else t.value+=n,t.value>r&&(t.loops||(t.loops=0),t.loops++,i?t.status=nt.decreasing:t.value-=r);t.velocity&&1!==a&&(t.velocity*=a),t.value=H(t.value,c,r)}function ue(t,e){if(!t)return;const{h:i,s,l:o}=t,n={min:0,max:100},a={min:0,max:100};i&&de(i,{min:0,max:360},!1,e),s&&de(s,n,!0,e),o&&de(o,a,!0,e)}const pe={x:0,y:0},fe={a:1,b:0,c:0,d:1};function ve(t,e,i){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.closePath()}function me(t,e,i){t.fillStyle=i??"rgba(0,0,0,0)",t.fillRect(pe.x,pe.y,e.width,e.height)}function ge(t,e,i,s){i&&(t.globalAlpha=s,t.drawImage(i,pe.x,pe.y,e.width,e.height),t.globalAlpha=1)}function ye(t,e){t.clearRect(pe.x,pe.y,e.width,e.height)}function _e(t){const{container:e,context:i,particle:s,delta:o,colorStyles:n,backgroundMask:a,composite:r,radius:c,opacity:h,shadow:l,transform:d}=t,u=s.getPosition(),p=s.rotation+(s.pathRotation?s.velocity.angle:0),f=Math.sin(p),v=Math.cos(p),m=!!p,g={a:v*(d.a??fe.a),b:m?f*(d.b??1):d.b??fe.b,c:m?-f*(d.c??1):d.c??fe.c,d:v*(d.d??fe.d)};i.setTransform(g.a,g.b,g.c,g.d,u.x,u.y),a&&(i.globalCompositeOperation=r);const y=s.shadowColor;l.enable&&y&&(i.shadowBlur=l.blur,i.shadowColor=se(y),i.shadowOffsetX=l.offset.x,i.shadowOffsetY=l.offset.y),n.fill&&(i.fillStyle=n.fill);const _=s.strokeWidth??0;i.lineWidth=_,n.stroke&&(i.strokeStyle=n.stroke);const w={container:e,context:i,particle:s,radius:c,opacity:h,delta:o,transformData:g,strokeWidth:_};be(w),xe(w),we(w),i.globalCompositeOperation="source-over",i.resetTransform()}function we(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,transformData:r}=t;if(!s.effect)return;const c=e.effectDrawers.get(s.effect);c&&c.draw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...r}})}function be(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,strokeWidth:r,transformData:c}=t;if(!s.shape)return;const h=e.shapeDrawers.get(s.shape);h&&(i.beginPath(),h.draw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...c}}),s.shapeClose&&i.closePath(),r>0&&i.stroke(),s.shapeFill&&i.fill())}function xe(t){const{container:e,context:i,particle:s,radius:o,opacity:n,delta:a,transformData:r}=t;if(!s.shape)return;const c=e.shapeDrawers.get(s.shape);c?.afterDraw&&c.afterDraw({context:i,particle:s,radius:o,opacity:n,delta:a,pixelRatio:e.retina.pixelRatio,transformData:{...r}})}function ze(t,e,i){e.draw&&e.draw(t,i)}function Me(t,e,i,s){e.drawParticle&&e.drawParticle(t,i,s)}function Pe(t,e,i){return{h:t.h,s:t.s,l:t.l+(e===qt.darken?-1:1)*i}}function ke(t,e,i){const s=e[i];void 0!==s&&(t[i]=(t[i]??1)*s)}function Oe(t,e,i=!1){if(!e)return;if(!t)return;const s=t.style;if(s)for(const t in e){const o=e[t];s.setProperty(t,o,i?"important":"")}}class Se{constructor(t,e){this.container=t,this._applyPostDrawUpdaters=t=>{for(const e of this._postDrawUpdaters)e.afterDraw?.(t)},this._applyPreDrawUpdaters=(t,e,i,s,o,n)=>{for(const a of this._preDrawUpdaters){if(a.getColorStyles){const{fill:n,stroke:r}=a.getColorStyles(e,t,i,s);n&&(o.fill=n),r&&(o.stroke=r)}if(a.getTransformValues){const t=a.getTransformValues(e);for(const e in t)ke(n,t,e)}a.beforeDraw?.(e)}},this._applyResizePlugins=()=>{for(const t of this._resizePlugins)t.resize?.()},this._getPluginParticleColors=t=>{let e,i;for(const s of this._colorPlugins)if(!e&&s.particleFillColor&&(e=Yt(this._engine,s.particleFillColor(t))),!i&&s.particleStrokeColor&&(i=Yt(this._engine,s.particleStrokeColor(t))),e&&i)break;return[e,i]},this._initCover=async()=>{const t=this.container.actualOptions.backgroundMask.cover,e=t.color;if(e){const i=jt(this._engine,e);if(i){const e={...i,a:t.opacity};this._coverColorStyle=se(e,e.a)}}else await new Promise(((e,i)=>{if(!t.image)return;const s=document.createElement("img");s.addEventListener("load",(()=>{this._coverImage={image:s,opacity:t.opacity},e()})),s.addEventListener("error",(t=>{i(t.error)})),s.src=t.image}))},this._initStyle=()=>{const t=this.element,e=this.container.actualOptions;if(t){this._fullScreen?(this._originalStyle=kt({},t.style),this._setFullScreenStyle()):this._resetOriginalStyle();for(const i in e.style){if(!i||!e.style)continue;const s=e.style[i];s&&t.style.setProperty(i,s,"important")}}},this._initTrail=async()=>{const t=this.container.actualOptions.particles.move.trail,e=t.fill;if(!t.enable)return;const i=1/t.length;if(e.color){const t=jt(this._engine,e.color);if(!t)return;this._trailFill={color:{...t},opacity:i}}else await new Promise(((t,s)=>{if(!e.image)return;const o=document.createElement("img");o.addEventListener("load",(()=>{this._trailFill={image:o,opacity:i},t()})),o.addEventListener("error",(t=>{s(t.error)})),o.src=e.image}))},this._paintBase=t=>{this.draw((e=>me(e,this.size,t)))},this._paintImage=(t,e)=>{this.draw((i=>ge(i,this.size,t,e)))},this._repairStyle=()=>{const t=this.element;t&&(this._safeMutationObserver((t=>t.disconnect())),this._initStyle(),this.initBackground(),this._safeMutationObserver((e=>{t&&t instanceof Node&&e.observe(t,{attributes:!0})})))},this._resetOriginalStyle=()=>{const t=this.element,e=this._originalStyle;t&&e&&Oe(t,e)},this._safeMutationObserver=t=>{this._mutationObserver&&t(this._mutationObserver)},this._setFullScreenStyle=()=>{const t=this.element;if(!t)return;const e=this.container.actualOptions.fullScreen.zIndex.toString(10);Oe(t,{position:"fixed","z-index":e,zIndex:e,top:"0",left:"0",width:"100%",height:"100%"},!0)},this._engine=e,this._standardSize={height:0,width:0};const i=t.retina.pixelRatio,s=this._standardSize;this.size={height:s.height*i,width:s.width*i},this._context=null,this._generated=!1,this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}get _fullScreen(){return this.container.actualOptions.fullScreen.enable}clear(){const t=this.container.actualOptions,e=t.particles.move.trail,i=this._trailFill;t.backgroundMask.enable?this.paint():e.enable&&e.length>0&&i?i.color?this._paintBase(se(i.color,i.opacity)):i.image&&this._paintImage(i.image,i.opacity):t.clear&&this.draw((t=>{ye(t,this.size)}))}destroy(){if(this.stop(),this._generated){const t=this.element;t?.remove()}else this._resetOriginalStyle();this._preDrawUpdaters=[],this._postDrawUpdaters=[],this._resizePlugins=[],this._colorPlugins=[]}draw(t){const e=this._context;if(e)return t(e)}drawAsync(t){const e=this._context;if(e)return t(e)}drawParticle(t,e){if(t.spawning||t.destroyed)return;const i=t.getRadius();if(i<=0)return;const s=t.getFillColor(),o=t.getStrokeColor()??s;let[n,a]=this._getPluginParticleColors(t);n||(n=s),a||(a=o),(n||a)&&this.draw((s=>{const o=this.container,r=o.actualOptions,c=t.options.zIndex,h=1-t.zIndexFactor,l=h**c.opacityRate,d=t.bubble.opacity??t.opacity?.value??1,u=d*l,p=(t.strokeOpacity??d)*l,f={},v={fill:n?oe(n,u):void 0};v.stroke=a?oe(a,p):v.fill,this._applyPreDrawUpdaters(s,t,i,u,v,f),_e({container:o,context:s,particle:t,delta:e,colorStyles:v,backgroundMask:r.backgroundMask.enable,composite:r.backgroundMask.composite,radius:i*h**c.sizeRate,opacity:u,shadow:t.options.shadow,transform:f}),this._applyPostDrawUpdaters(t)}))}drawParticlePlugin(t,e,i){this.draw((s=>Me(s,t,e,i)))}drawPlugin(t,e){this.draw((i=>ze(i,t,e)))}async init(){this._safeMutationObserver((t=>t.disconnect())),this._mutationObserver=yt((t=>{for(const e of t)"attributes"===e.type&&"style"===e.attributeName&&this._repairStyle()})),this.resize(),this._initStyle(),await this._initCover();try{await this._initTrail()}catch(t){ut().error(t)}this.initBackground(),this._safeMutationObserver((t=>{this.element&&this.element instanceof Node&&t.observe(this.element,{attributes:!0})})),this.initUpdaters(),this.initPlugins(),this.paint()}initBackground(){const t=this.container.actualOptions.background,e=this.element;if(!e)return;const i=e.style;if(i){if(t.color){const e=jt(this._engine,t.color);i.backgroundColor=e?se(e,t.opacity):""}else i.backgroundColor="";i.backgroundImage=t.image||"",i.backgroundPosition=t.position||"",i.backgroundRepeat=t.repeat||"",i.backgroundSize=t.size||""}}initPlugins(){this._resizePlugins=[];for(const t of this.container.plugins.values())t.resize&&this._resizePlugins.push(t),(t.particleFillColor??t.particleStrokeColor)&&this._colorPlugins.push(t)}initUpdaters(){this._preDrawUpdaters=[],this._postDrawUpdaters=[];for(const t of this.container.particles.updaters)t.afterDraw&&this._postDrawUpdaters.push(t),(t.getColorStyles??t.getTransformValues??t.beforeDraw)&&this._preDrawUpdaters.push(t)}loadCanvas(t){this._generated&&this.element&&this.element.remove(),this._generated=t.dataset&&i in t.dataset?"true"===t.dataset[i]:this._generated,this.element=t,this.element.ariaHidden="true",this._originalStyle=kt({},this.element.style);const e=this._standardSize;e.height=t.offsetHeight,e.width=t.offsetWidth;const s=this.container.retina.pixelRatio,o=this.size;t.height=o.height=e.height*s,t.width=o.width=e.width*s,this._context=this.element.getContext("2d"),this._safeMutationObserver((t=>{this.element&&this.element instanceof Node&&t.observe(this.element,{attributes:!0})})),this.container.retina.init(),this.initBackground()}paint(){const t=this.container.actualOptions;this.draw((e=>{t.backgroundMask.enable&&t.backgroundMask.cover?(ye(e,this.size),this._coverImage?this._paintImage(this._coverImage.image,this._coverImage.opacity):this._coverColorStyle?this._paintBase(this._coverColorStyle):this._paintBase()):this._paintBase()}))}resize(){if(!this.element)return!1;const t=this.container,e=t.canvas._standardSize,i={width:this.element.offsetWidth,height:this.element.offsetHeight},s=t.retina.pixelRatio,o={width:i.width*s,height:i.height*s};if(i.height===e.height&&i.width===e.width&&o.height===this.element.height&&o.width===this.element.width)return!1;const n={...e};e.height=i.height,e.width=i.width;const a=this.size;return this.element.width=a.width=o.width,this.element.height=a.height=o.height,this.container.started&&t.particles.setResizeFactor({width:e.width/n.width,height:e.height/n.height}),!0}stop(){this._safeMutationObserver((t=>t.disconnect())),this._mutationObserver=void 0,this.draw((t=>ye(t,this.size)))}async windowResize(){if(!this.element||!this.resize())return;const t=this.container,e=t.updateActualOptions();t.particles.setDensity(),this._applyResizePlugins(),e&&await t.refresh()}}var Ce;!function(t){t.canvas="canvas",t.parent="parent",t.window="window"}(Ce||(Ce={}));function Re(t,e,i,s,o){if(s){let s={passive:!0};_(o)?s.capture=o:void 0!==o&&(s=o),t.addEventListener(e,i,s)}else{const s=o;t.removeEventListener(e,i,s)}}class Te{constructor(t){this.container=t,this._doMouseTouchClick=t=>{const e=this.container,i=e.actualOptions;if(this._canPush){const t=e.interactivity.mouse,s=t.position;if(!s)return;t.clickPosition={...s},t.clickTime=(new Date).getTime();Et(i.interactivity.events.onClick.mode,(t=>this.container.handleClickMode(t)))}if("touchend"===t.type){setTimeout((()=>this._mouseTouchFinish()),500)}},this._handleThemeChange=t=>{const e=t,i=this.container,s=i.options,o=s.defaultThemes,n=e.matches?o.dark:o.light,a=s.themes.find((t=>t.name===n));a?.default.auto&&i.loadTheme(n)},this._handleVisibilityChange=()=>{const t=this.container,e=t.actualOptions;this._mouseTouchFinish(),e.pauseOnBlur&&(document?.hidden?(t.pageHidden=!0,t.pause()):(t.pageHidden=!1,t.animationStatus?t.play(!0):t.draw(!0)))},this._handleWindowResize=()=>{this._resizeTimeout&&(clearTimeout(this._resizeTimeout),delete this._resizeTimeout);const t=async()=>{const t=this.container.canvas;await(t?.windowResize())};this._resizeTimeout=setTimeout((()=>{t()}),this.container.actualOptions.interactivity.events.resize.delay*g)},this._manageInteractivityListeners=(t,e)=>{const i=this._handlers,n=this.container,a=n.actualOptions,u=n.interactivity.element;if(!u)return;const p=u,f=n.canvas.element;f&&(f.style.pointerEvents=p===f?"initial":"none"),(a.interactivity.events.onHover.enable||a.interactivity.events.onClick.enable)&&(Re(u,r,i.mouseMove,e),Re(u,c,i.touchStart,e),Re(u,l,i.touchMove,e),a.interactivity.events.onClick.enable?(Re(u,h,i.touchEndClick,e),Re(u,o,i.mouseUp,e),Re(u,s,i.mouseDown,e)):Re(u,h,i.touchEnd,e),Re(u,t,i.mouseLeave,e),Re(u,d,i.touchCancel,e))},this._manageListeners=t=>{const e=this._handlers,i=this.container,s=i.actualOptions.interactivity.detectsOn,o=i.canvas.element;let r=n;s===Ce.window?(i.interactivity.element=window,r=a):s===Ce.parent&&o?i.interactivity.element=o.parentElement??o.parentNode:i.interactivity.element=o,this._manageMediaMatch(t),this._manageResize(t),this._manageInteractivityListeners(r,t),document&&Re(document,p,e.visibilityChange,t,!1)},this._manageMediaMatch=t=>{const e=this._handlers,i=mt("(prefers-color-scheme: dark)");i&&(void 0===i.addEventListener?void 0!==i.addListener&&(t?i.addListener(e.oldThemeChange):i.removeListener(e.oldThemeChange)):Re(i,"change",e.themeChange,t))},this._manageResize=t=>{const e=this._handlers,i=this.container;if(!i.actualOptions.interactivity.events.resize)return;if("undefined"==typeof ResizeObserver)return void Re(window,u,e.resize,t);const s=i.canvas.element;this._resizeObserver&&!t?(s&&this._resizeObserver.unobserve(s),this._resizeObserver.disconnect(),delete this._resizeObserver):!this._resizeObserver&&t&&s&&(this._resizeObserver=new ResizeObserver((t=>{t.find((t=>t.target===s))&&this._handleWindowResize()})),this._resizeObserver.observe(s))},this._mouseDown=()=>{const{interactivity:t}=this.container;if(!t)return;const{mouse:e}=t;e.clicking=!0,e.downPosition=e.position},this._mouseTouchClick=t=>{const e=this.container,i=e.actualOptions,{mouse:s}=e.interactivity;s.inside=!0;let o=!1;const n=s.position;if(n&&i.interactivity.events.onClick.enable){for(const t of e.plugins.values())if(t.clickPositionValid&&(o=t.clickPositionValid(n),o))break;o||this._doMouseTouchClick(t),s.clicking=!1}},this._mouseTouchFinish=()=>{const t=this.container.interactivity;if(!t)return;const e=t.mouse;delete e.position,delete e.clickPosition,delete e.downPosition,t.status=n,e.inside=!1,e.clicking=!1},this._mouseTouchMove=t=>{const e=this.container,i=e.actualOptions,s=e.interactivity,o=e.canvas.element;if(!s?.element)return;let n;if(s.mouse.inside=!0,t.type.startsWith("pointer")){this._canPush=!0;const e=t;if(s.element===window){if(o){const t=o.getBoundingClientRect();n={x:e.clientX-t.left,y:e.clientY-t.top}}}else if(i.interactivity.detectsOn===Ce.parent){const t=e.target,i=e.currentTarget;if(t&&i&&o){const s=t.getBoundingClientRect(),a=i.getBoundingClientRect(),r=o.getBoundingClientRect();n={x:e.offsetX+2*s.left-(a.left+r.left),y:e.offsetY+2*s.top-(a.top+r.top)}}else n={x:e.offsetX??e.clientX,y:e.offsetY??e.clientY}}else e.target===o&&(n={x:e.offsetX??e.clientX,y:e.offsetY??e.clientY})}else if(this._canPush="touchmove"!==t.type,o){const e=t,i=1,s=e.touches[e.touches.length-i],a=o.getBoundingClientRect(),r=0;n={x:s.clientX-(a.left??r),y:s.clientY-(a.top??r)}}const a=e.retina.pixelRatio;n&&(n.x*=a,n.y*=a),s.mouse.position=n,s.status=r},this._touchEnd=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchFinish()},this._touchEndClick=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.delete(t.identifier);this._mouseTouchClick(t)},this._touchStart=t=>{const e=t,i=Array.from(e.changedTouches);for(const t of i)this._touches.set(t.identifier,performance.now());this._mouseTouchMove(t)},this._canPush=!0,this._touches=new Map,this._handlers={mouseDown:()=>this._mouseDown(),mouseLeave:()=>this._mouseTouchFinish(),mouseMove:t=>this._mouseTouchMove(t),mouseUp:t=>this._mouseTouchClick(t),touchStart:t=>this._touchStart(t),touchMove:t=>this._mouseTouchMove(t),touchEnd:t=>this._touchEnd(t),touchCancel:t=>this._touchEnd(t),touchEndClick:t=>this._touchEndClick(t),visibilityChange:()=>this._handleVisibilityChange(),themeChange:t=>this._handleThemeChange(t),oldThemeChange:t=>this._handleThemeChange(t),resize:()=>{this._handleWindowResize()}}}addListeners(){this._manageListeners(!0)}removeListeners(){this._manageListeners(!1)}}var De,Ie;!function(t){t.configAdded="configAdded",t.containerInit="containerInit",t.particlesSetup="particlesSetup",t.containerStarted="containerStarted",t.containerStopped="containerStopped",t.containerDestroyed="containerDestroyed",t.containerPaused="containerPaused",t.containerPlay="containerPlay",t.containerBuilt="containerBuilt",t.particleAdded="particleAdded",t.particleDestroyed="particleDestroyed",t.particleRemoved="particleRemoved"}(De||(De={}));class Ee{constructor(){this.value=""}static create(t,e){const i=new Ee;return i.load(t),void 0!==e&&(w(e)||M(e)?i.load({value:e}):i.load(e)),i}load(t){P(t)||P(t.value)||(this.value=t.value)}}class Le{constructor(){this.color=new Ee,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(t){P(t)||(void 0!==t.color&&(this.color=Ee.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image),void 0!==t.position&&(this.position=t.position),void 0!==t.repeat&&(this.repeat=t.repeat),void 0!==t.size&&(this.size=t.size),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Ae{constructor(){this.opacity=1}load(t){P(t)||(void 0!==t.color&&(this.color=Ee.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Fe{constructor(){this.composite="destination-out",this.cover=new Ae,this.enable=!1}load(t){if(!P(t)){if(void 0!==t.composite&&(this.composite=t.composite),void 0!==t.cover){const e=t.cover,i=w(t.cover)?{color:t.cover}:t.cover;this.cover.load(void 0!==e.color||void 0!==e.image?e:{color:i})}void 0!==t.enable&&(this.enable=t.enable)}}}class Be{constructor(){this.enable=!0,this.zIndex=0}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.zIndex&&(this.zIndex=t.zIndex))}}class He{constructor(){this.enable=!1,this.mode=[]}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode))}}!function(t){t.circle="circle",t.rectangle="rectangle"}(Ie||(Ie={}));class Ve{constructor(){this.selectors=[],this.enable=!1,this.mode=[],this.type=Ie.circle}load(t){P(t)||(void 0!==t.selectors&&(this.selectors=t.selectors),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.type&&(this.type=t.type))}}class Ue{constructor(){this.enable=!1,this.force=2,this.smooth=10}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.force&&(this.force=t.force),void 0!==t.smooth&&(this.smooth=t.smooth))}}class We{constructor(){this.enable=!1,this.mode=[],this.parallax=new Ue}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),this.parallax.load(t.parallax))}}class qe{constructor(){this.delay=.5,this.enable=!0}load(t){P(t)||(void 0!==t.delay&&(this.delay=t.delay),void 0!==t.enable&&(this.enable=t.enable))}}class $e{constructor(){this.onClick=new He,this.onDiv=new Ve,this.onHover=new We,this.resize=new qe}load(t){if(P(t))return;this.onClick.load(t.onClick);const e=t.onDiv;void 0!==e&&(this.onDiv=Et(e,(t=>{const e=new Ve;return e.load(t),e}))),this.onHover.load(t.onHover),this.resize.load(t.resize)}}class Ge{constructor(t,e){this._engine=t,this._container=e}load(t){if(P(t))return;if(!this._container)return;const e=this._engine.interactors.get(this._container);if(e)for(const i of e)i.loadModeOptions&&i.loadModeOptions(this,t)}}class Ne{constructor(t,e){this.detectsOn=Ce.window,this.events=new $e,this.modes=new Ge(t,e)}load(t){if(P(t))return;const e=t.detectsOn;void 0!==e&&(this.detectsOn=e),this.events.load(t.events),this.modes.load(t.modes)}}class je{load(t){P(t)||(t.position&&(this.position={x:t.position.x??50,y:t.position.y??50,mode:t.position.mode??ct.percent}),t.options&&(this.options=kt({},t.options)))}}var Qe,Xe,Ye,Ze,Je,Ke,ti;!function(t){t.screen="screen",t.canvas="canvas"}(Qe||(Qe={}));class ei{constructor(){this.maxWidth=1/0,this.options={},this.mode=Qe.canvas}load(t){P(t)||(P(t.maxWidth)||(this.maxWidth=t.maxWidth),P(t.mode)||(t.mode===Qe.screen?this.mode=Qe.screen:this.mode=Qe.canvas),P(t.options)||(this.options=kt({},t.options)))}}!function(t){t.any="any",t.dark="dark",t.light="light"}(Xe||(Xe={}));class ii{constructor(){this.auto=!1,this.mode=Xe.any,this.value=!1}load(t){P(t)||(void 0!==t.auto&&(this.auto=t.auto),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}class si{constructor(){this.name="",this.default=new ii}load(t){P(t)||(void 0!==t.name&&(this.name=t.name),this.default.load(t.default),void 0!==t.options&&(this.options=kt({},t.options)))}}class oi{constructor(){this.count=0,this.enable=!1,this.speed=1,this.decay=0,this.delay=0,this.sync=!1}load(t){P(t)||(void 0!==t.count&&(this.count=G(t.count)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=G(t.speed)),void 0!==t.decay&&(this.decay=G(t.decay)),void 0!==t.delay&&(this.delay=G(t.delay)),void 0!==t.sync&&(this.sync=t.sync))}}class ni extends oi{constructor(){super(),this.mode=ot.auto,this.startValue=ht.random}load(t){super.load(t),P(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.startValue&&(this.startValue=t.startValue))}}class ai extends oi{constructor(){super(),this.offset=0,this.sync=!0}load(t){super.load(t),P(t)||void 0!==t.offset&&(this.offset=G(t.offset))}}class ri{constructor(){this.h=new ai,this.s=new ai,this.l=new ai}load(t){P(t)||(this.h.load(t.h),this.s.load(t.s),this.l.load(t.l))}}class ci extends Ee{constructor(){super(),this.animation=new ri}static create(t,e){const i=new ci;return i.load(t),void 0!==e&&(w(e)||M(e)?i.load({value:e}):i.load(e)),i}load(t){if(super.load(t),P(t))return;const e=t.animation;void 0!==e&&(void 0!==e.enable?this.animation.h.load(e):this.animation.load(t.animation))}}!function(t){t.absorb="absorb",t.bounce="bounce",t.destroy="destroy"}(Ye||(Ye={}));class hi{constructor(){this.speed=2}load(t){P(t)||void 0!==t.speed&&(this.speed=t.speed)}}class li{constructor(){this.enable=!0,this.retries=0}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.retries&&(this.retries=t.retries))}}class di{constructor(){this.value=0}load(t){P(t)||P(t.value)||(this.value=G(t.value))}}class ui extends di{constructor(){super(),this.animation=new oi}load(t){if(super.load(t),P(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class pi extends ui{constructor(){super(),this.animation=new ni}load(t){super.load(t)}}class fi extends di{constructor(){super(),this.value=1}}class vi{constructor(){this.horizontal=new fi,this.vertical=new fi}load(t){P(t)||(this.horizontal.load(t.horizontal),this.vertical.load(t.vertical))}}class mi{constructor(){this.absorb=new hi,this.bounce=new vi,this.enable=!1,this.maxSpeed=50,this.mode=Ye.bounce,this.overlap=new li}load(t){P(t)||(this.absorb.load(t.absorb),this.bounce.load(t.bounce),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.maxSpeed&&(this.maxSpeed=G(t.maxSpeed)),void 0!==t.mode&&(this.mode=t.mode),this.overlap.load(t.overlap))}}class gi{constructor(){this.close=!0,this.fill=!0,this.options={},this.type=[]}load(t){if(P(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=kt(this.options[t]??{},i))}void 0!==t.close&&(this.close=t.close),void 0!==t.fill&&(this.fill=t.fill),void 0!==t.type&&(this.type=t.type)}}class yi{constructor(){this.offset=0,this.value=90}load(t){P(t)||(void 0!==t.offset&&(this.offset=G(t.offset)),void 0!==t.value&&(this.value=G(t.value)))}}class _i{constructor(){this.distance=200,this.enable=!1,this.rotate={x:3e3,y:3e3}}load(t){if(!P(t)&&(void 0!==t.distance&&(this.distance=G(t.distance)),void 0!==t.enable&&(this.enable=t.enable),t.rotate)){const e=t.rotate.x;void 0!==e&&(this.rotate.x=e);const i=t.rotate.y;void 0!==i&&(this.rotate.y=i)}}}class wi{constructor(){this.x=50,this.y=50,this.mode=ct.percent,this.radius=0}load(t){P(t)||(void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.radius&&(this.radius=t.radius))}}class bi{constructor(){this.acceleration=9.81,this.enable=!1,this.inverse=!1,this.maxSpeed=50}load(t){P(t)||(void 0!==t.acceleration&&(this.acceleration=G(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.inverse&&(this.inverse=t.inverse),void 0!==t.maxSpeed&&(this.maxSpeed=G(t.maxSpeed)))}}class xi{constructor(){this.clamp=!0,this.delay=new di,this.enable=!1,this.options={}}load(t){P(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=kt(this.options,t.options)))}}class zi{load(t){P(t)||(void 0!==t.color&&(this.color=Ee.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image))}}class Mi{constructor(){this.enable=!1,this.length=10,this.fill=new zi}load(t){P(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.fill&&this.fill.load(t.fill),void 0!==t.length&&(this.length=t.length))}}!function(t){t.bounce="bounce",t.none="none",t.out="out",t.destroy="destroy",t.split="split"}(Ze||(Ze={}));class Pi{constructor(){this.default=Ze.out}load(t){P(t)||(void 0!==t.default&&(this.default=t.default),this.bottom=t.bottom??t.default,this.left=t.left??t.default,this.right=t.right??t.default,this.top=t.top??t.default)}}class ki{constructor(){this.acceleration=0,this.enable=!1}load(t){P(t)||(void 0!==t.acceleration&&(this.acceleration=G(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),t.position&&(this.position=kt({},t.position)))}}class Oi{constructor(){this.angle=new yi,this.attract=new _i,this.center=new wi,this.decay=0,this.distance={},this.direction=y.none,this.drift=0,this.enable=!1,this.gravity=new bi,this.path=new xi,this.outModes=new Pi,this.random=!1,this.size=!1,this.speed=2,this.spin=new ki,this.straight=!1,this.trail=new Mi,this.vibrate=!1,this.warp=!1}load(t){if(P(t))return;this.angle.load(b(t.angle)?{value:t.angle}:t.angle),this.attract.load(t.attract),this.center.load(t.center),void 0!==t.decay&&(this.decay=G(t.decay)),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.distance&&(this.distance=b(t.distance)?{horizontal:t.distance,vertical:t.distance}:{...t.distance}),void 0!==t.drift&&(this.drift=G(t.drift)),void 0!==t.enable&&(this.enable=t.enable),this.gravity.load(t.gravity);const e=t.outModes;void 0!==e&&(z(e)?this.outModes.load(e):this.outModes.load({default:e})),this.path.load(t.path),void 0!==t.random&&(this.random=t.random),void 0!==t.size&&(this.size=t.size),void 0!==t.speed&&(this.speed=G(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 Si extends ni{constructor(){super(),this.destroy=at.none,this.speed=2}load(t){super.load(t),P(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}class Ci extends pi{constructor(){super(),this.animation=new Si,this.value=1}load(t){if(P(t))return;super.load(t);const e=t.animation;void 0!==e&&this.animation.load(e)}}class Ri{constructor(){this.enable=!1,this.width=1920,this.height=1080}load(t){if(P(t))return;void 0!==t.enable&&(this.enable=t.enable);const e=t.width;void 0!==e&&(this.width=e);const i=t.height;void 0!==i&&(this.height=i)}}!function(t){t.delete="delete",t.wait="wait"}(Je||(Je={}));class Ti{constructor(){this.mode=Je.delete,this.value=0}load(t){P(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}class Di{constructor(){this.density=new Ri,this.limit=new Ti,this.value=0}load(t){P(t)||(this.density.load(t.density),this.limit.load(t.limit),void 0!==t.value&&(this.value=t.value))}}class Ii{constructor(){this.blur=0,this.color=new Ee,this.enable=!1,this.offset={x:0,y:0},this.color.value="#000"}load(t){P(t)||(void 0!==t.blur&&(this.blur=t.blur),this.color=Ee.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 Ei{constructor(){this.close=!0,this.fill=!0,this.options={},this.type="circle"}load(t){if(P(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=kt(this.options[t]??{},i))}void 0!==t.close&&(this.close=t.close),void 0!==t.fill&&(this.fill=t.fill),void 0!==t.type&&(this.type=t.type)}}class Li extends ni{constructor(){super(),this.destroy=at.none,this.speed=5}load(t){super.load(t),P(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}class Ai extends pi{constructor(){super(),this.animation=new Li,this.value=3}load(t){if(super.load(t),P(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class Fi{constructor(){this.width=0}load(t){P(t)||(void 0!==t.color&&(this.color=ci.create(this.color,t.color)),void 0!==t.width&&(this.width=G(t.width)),void 0!==t.opacity&&(this.opacity=G(t.opacity)))}}class Bi extends di{constructor(){super(),this.opacityRate=1,this.sizeRate=1,this.velocityRate=1}load(t){super.load(t),P(t)||(void 0!==t.opacityRate&&(this.opacityRate=t.opacityRate),void 0!==t.sizeRate&&(this.sizeRate=t.sizeRate),void 0!==t.velocityRate&&(this.velocityRate=t.velocityRate))}}class Hi{constructor(t,e){this._engine=t,this._container=e,this.bounce=new vi,this.collisions=new mi,this.color=new ci,this.color.value="#fff",this.effect=new gi,this.groups={},this.move=new Oi,this.number=new Di,this.opacity=new Ci,this.reduceDuplicates=!1,this.shadow=new Ii,this.shape=new Ei,this.size=new Ai,this.stroke=new Fi,this.zIndex=new Bi}load(t){if(P(t))return;if(void 0!==t.groups)for(const e of Object.keys(t.groups)){if(!Object.hasOwn(t.groups,e))continue;const i=t.groups[e];void 0!==i&&(this.groups[e]=kt(this.groups[e]??{},i))}void 0!==t.reduceDuplicates&&(this.reduceDuplicates=t.reduceDuplicates),this.bounce.load(t.bounce),this.color.load(ci.create(this.color,t.color)),this.effect.load(t.effect),this.move.load(t.move),this.number.load(t.number),this.opacity.load(t.opacity),this.shape.load(t.shape),this.size.load(t.size),this.shadow.load(t.shadow),this.zIndex.load(t.zIndex),this.collisions.load(t.collisions),void 0!==t.interactivity&&(this.interactivity=kt({},t.interactivity));const e=t.stroke;if(e&&(this.stroke=Et(e,(t=>{const e=new Fi;return e.load(t),e}))),this._container){const e=this._engine.updaters.get(this._container);if(e)for(const i of e)i.loadOptions&&i.loadOptions(this,t);const i=this._engine.interactors.get(this._container);if(i)for(const e of i)e.loadParticlesOptions&&e.loadParticlesOptions(this,t)}}}function Vi(t,...e){for(const i of e)t.load(i)}function Ui(t,e,...i){const s=new Hi(t,e);return Vi(s,...i),s}class Wi{constructor(t,e){this._findDefaultTheme=t=>this.themes.find((e=>e.default.value&&e.default.mode===t))??this.themes.find((t=>t.default.value&&t.default.mode===Xe.any)),this._importPreset=t=>{this.load(this._engine.getPreset(t))},this._engine=t,this._container=e,this.autoPlay=!0,this.background=new Le,this.backgroundMask=new Fe,this.clear=!0,this.defaultThemes={},this.delay=0,this.fullScreen=new Be,this.detectRetina=!0,this.duration=0,this.fpsLimit=120,this.interactivity=new Ne(t,e),this.manualParticles=[],this.particles=Ui(this._engine,this._container),this.pauseOnBlur=!0,this.pauseOnOutsideViewport=!0,this.responsive=[],this.smooth=!1,this.style={},this.themes=[],this.zLayers=100}load(t){if(P(t))return;void 0!==t.preset&&Et(t.preset,(t=>this._importPreset(t))),void 0!==t.autoPlay&&(this.autoPlay=t.autoPlay),void 0!==t.clear&&(this.clear=t.clear),void 0!==t.key&&(this.key=t.key),void 0!==t.name&&(this.name=t.name),void 0!==t.delay&&(this.delay=G(t.delay));const e=t.detectRetina;void 0!==e&&(this.detectRetina=e),void 0!==t.duration&&(this.duration=G(t.duration));const i=t.fpsLimit;void 0!==i&&(this.fpsLimit=i),void 0!==t.pauseOnBlur&&(this.pauseOnBlur=t.pauseOnBlur),void 0!==t.pauseOnOutsideViewport&&(this.pauseOnOutsideViewport=t.pauseOnOutsideViewport),void 0!==t.zLayers&&(this.zLayers=t.zLayers),this.background.load(t.background);const s=t.fullScreen;_(s)?this.fullScreen.enable=s:this.fullScreen.load(s),this.backgroundMask.load(t.backgroundMask),this.interactivity.load(t.interactivity),t.manualParticles&&(this.manualParticles=t.manualParticles.map((t=>{const e=new je;return e.load(t),e}))),this.particles.load(t.particles),this.style=kt(this.style,t.style),this._engine.loadOptions(this,t),void 0!==t.smooth&&(this.smooth=t.smooth);const o=this._engine.interactors.get(this._container);if(o)for(const e of o)e.loadOptions&&e.loadOptions(this,t);if(void 0!==t.responsive)for(const e of t.responsive){const t=new ei;t.load(e),this.responsive.push(t)}if(this.responsive.sort(((t,e)=>t.maxWidth-e.maxWidth)),void 0!==t.themes)for(const e of t.themes){const t=this.themes.find((t=>t.name===e.name));if(t)t.load(e);else{const t=new si;t.load(e),this.themes.push(t)}}this.defaultThemes.dark=this._findDefaultTheme(Xe.dark)?.name,this.defaultThemes.light=this._findDefaultTheme(Xe.light)?.name}setResponsive(t,e,i){this.load(i);const s=this.responsive.find((i=>i.mode===Qe.screen&&screen?i.maxWidth>screen.availWidth:i.maxWidth*e>t));return this.load(s?.options),s?.maxWidth}setTheme(t){if(t){const e=this.themes.find((e=>e.name===t));e&&this.load(e.options)}else{const t=mt("(prefers-color-scheme: dark)"),e=t?.matches,i=this._findDefaultTheme(e?Xe.dark:Xe.light);i&&this.load(i.options)}}}!function(t){t.external="external",t.particles="particles"}(Ke||(Ke={}));class qi{constructor(t,e){this.container=e,this._engine=t,this._interactors=[],this._externalInteractors=[],this._particleInteractors=[]}externalInteract(t){for(const e of this._externalInteractors)e.isEnabled()&&e.interact(t)}handleClickMode(t){for(const e of this._externalInteractors)e.handleClickMode?.(t)}async init(){this._interactors=await this._engine.getInteractors(this.container,!0),this._externalInteractors=[],this._particleInteractors=[];for(const t of this._interactors){switch(t.type){case Ke.external:this._externalInteractors.push(t);break;case Ke.particles:this._particleInteractors.push(t)}t.init()}}particlesInteract(t,e){for(const i of this._externalInteractors)i.clear(t,e);for(const i of this._particleInteractors)i.isEnabled(t)&&i.interact(t,e)}reset(t){for(const e of this._externalInteractors)e.isEnabled()&&e.reset(t);for(const e of this._particleInteractors)e.isEnabled(t)&&e.reset(t)}}!function(t){t.normal="normal",t.inside="inside",t.outside="outside"}(ti||(ti={}));const $i=.5,Gi="random";function Ni(t){if(!_t(t.outMode,t.checkModes))return;const e=2*t.radius;t.coord>t.maxCoord-e?t.setCb(-t.radius):t.coord<e&&t.setCb(t.radius)}class ji{constructor(t,e){this.container=e,this._calcPosition=(t,e,i,s=0)=>{for(const s of t.plugins.values()){const t=void 0!==s.particlePosition?s.particlePosition(e,this):void 0;if(t)return C.create(t.x,t.y,i)}const o=et({size:t.canvas.size,position:e}),n=C.create(o.x,o.y,i),a=this.getRadius(),r=this.options.move.outModes,c=e=>{Ni({outMode:e,checkModes:[Ze.bounce],coord:n.x,maxCoord:t.canvas.size.width,setCb:t=>n.x+=t,radius:a})},h=e=>{Ni({outMode:e,checkModes:[Ze.bounce],coord:n.y,maxCoord:t.canvas.size.height,setCb:t=>n.y+=t,radius:a})};if(c(r.left??r.default),c(r.right??r.default),h(r.top??r.default),h(r.bottom??r.default),this._checkOverlap(n,s)){const e=1;return this._calcPosition(t,void 0,i,s+e)}return n},this._calculateVelocity=()=>{const t=Y(this.direction).copy(),e=this.options.move;if(e.direction===y.inside||e.direction===y.outside)return t;const i=Q(W(e.angle.value)),s=Q(W(e.angle.offset)),o={left:s-i*$i,right:s+i*$i};return e.straight||(t.angle+=U(G(o.left,o.right))),e.random&&"number"==typeof e.speed&&(t.length*=L()),t},this._checkOverlap=(t,e=0)=>{const i=this.options.collisions,s=this.getRadius();if(!i.enable)return!1;const o=i.overlap;if(o.enable)return!1;const n=o.retries;if(n>=0&&e>n)throw new Error(`${f} particle is overlapping and can't be placed`);return!!this.container.particles.find((e=>j(t,e.position)<s+e.getRadius()))},this._getRollColor=t=>{if(!t||!this.roll||!this.backColor&&!this.roll.alter)return t;const e=this.roll.horizontal&&this.roll.vertical?2:1,i=this.roll.horizontal?Math.PI*$i:0;return Math.floor(((this.roll.angle??0)+i)/(Math.PI/e))%2?this.backColor?this.backColor:this.roll.alter?Pe(t,this.roll.alter.type,this.roll.alter.value):t:t},this._initPosition=t=>{const e=this.container,i=W(this.options.zIndex.value);this.position=this._calcPosition(e,t,H(i,0,e.zLayers)),this.initialPosition=this.position.copy();const s=e.canvas.size;switch(this.moveCenter={...Ht(this.options.move.center,s),radius:this.options.move.center.radius??0,mode:this.options.move.center.mode??ct.percent},this.direction=X(this.options.move.direction,this.position,this.moveCenter),this.options.move.direction){case y.inside:this.outType=ti.inside;break;case y.outside:this.outType=ti.outside}this.offset=R.origin},this._engine=t}destroy(t){if(this.unbreakable||this.destroyed)return;this.destroyed=!0,this.bubble.inRange=!1,this.slow.inRange=!1;const e=this.container,i=this.pathGenerator,s=e.shapeDrawers.get(this.shape);s?.particleDestroy?.(this);for(const i of e.plugins.values())i.particleDestroyed?.(this,t);for(const i of e.particles.updaters)i.particleDestroyed?.(this,t);i?.reset(this),this._engine.dispatchEvent(De.particleDestroyed,{container:this.container,data:{particle:this}})}draw(t){const e=this.container,i=e.canvas;for(const s of e.plugins.values())i.drawParticlePlugin(s,this,t);i.drawParticle(this,t)}getFillColor(){return this._getRollColor(this.bubble.color??ce(this.color))}getMass(){return this.getRadius()**2*Math.PI*$i}getPosition(){return{x:this.position.x+this.offset.x,y:this.position.y+this.offset.y,z:this.position.z}}getRadius(){return this.bubble.radius??this.size.value}getStrokeColor(){return this._getRollColor(this.bubble.color??ce(this.strokeColor))}init(t,e,i,s){const o=this.container,n=this._engine;this.id=t,this.group=s,this.effectClose=!0,this.effectFill=!0,this.shapeClose=!0,this.shapeFill=!0,this.pathRotation=!1,this.lastPathTime=0,this.destroyed=!1,this.unbreakable=!1,this.isRotating=!1,this.rotation=0,this.misplaced=!1,this.retina={maxDistance:{}},this.outType=ti.normal,this.ignoresResizeRatio=!0;const a=o.retina.pixelRatio,r=o.actualOptions,c=Ui(this._engine,o,r.particles),{reduceDuplicates:h}=c,l=c.effect.type,d=c.shape.type;this.effect=Lt(l,this.id,h),this.shape=Lt(d,this.id,h);const u=c.effect,p=c.shape;if(i){if(i.effect?.type){const t=Lt(i.effect.type,this.id,h);t&&(this.effect=t,u.load(i.effect))}if(i.shape?.type){const t=Lt(i.shape.type,this.id,h);t&&(this.shape=t,p.load(i.shape))}}if(this.effect===Gi){const t=[...this.container.effectDrawers.keys()];this.effect=t[Math.floor(Math.random()*t.length)]}if(this.shape===Gi){const t=[...this.container.shapeDrawers.keys()];this.shape=t[Math.floor(Math.random()*t.length)]}this.effectData=function(t,e,i,s){const o=e.options[t];if(o)return kt({close:e.close,fill:e.fill},Lt(o,i,s))}(this.effect,u,this.id,h),this.shapeData=function(t,e,i,s){const o=e.options[t];if(o)return kt({close:e.close,fill:e.fill},Lt(o,i,s))}(this.shape,p,this.id,h),c.load(i);const f=this.effectData;f&&c.load(f.particles);const v=this.shapeData;v&&c.load(v.particles);const m=new Ne(n,o);m.load(o.actualOptions.interactivity),m.load(c.interactivity),this.interactivity=m,this.effectFill=f?.fill??c.effect.fill,this.effectClose=f?.close??c.effect.close,this.shapeFill=v?.fill??c.shape.fill,this.shapeClose=v?.close??c.shape.close,this.options=c;const y=this.options.move.path;this.pathDelay=W(y.delay.value)*g,y.generator&&(this.pathGenerator=this._engine.getPathGenerator(y.generator),this.pathGenerator&&o.addPath(y.generator,this.pathGenerator)&&this.pathGenerator.init(o)),o.retina.initParticle(this),this.size=Ft(this.options.size,a),this.bubble={inRange:!1},this.slow={inRange:!1,factor:1},this._initPosition(e),this.initialVelocity=this._calculateVelocity(),this.velocity=this.initialVelocity.copy();this.moveDecay=1-W(this.options.move.decay);const _=o.particles;_.setLastZIndex(this.position.z),this.zIndexFactor=this.position.z/o.zLayers,this.sides=24;let w=o.effectDrawers.get(this.effect);w||(w=this._engine.getEffectDrawer(this.effect),w&&o.effectDrawers.set(this.effect,w)),w?.loadEffect&&w.loadEffect(this);let b=o.shapeDrawers.get(this.shape);b||(b=this._engine.getShapeDrawer(this.shape),b&&o.shapeDrawers.set(this.shape,b)),b?.loadShape&&b.loadShape(this);const x=b?.getSidesCount;x&&(this.sides=x(this)),this.spawning=!1,this.shadowColor=jt(this._engine,this.options.shadow.color);for(const t of _.updaters)t.init(this);for(const t of _.movers)t.init?.(this);w?.particleInit?.(o,this),b?.particleInit?.(o,this);for(const t of o.plugins.values())t.particleCreated?.(this)}isInsideCanvas(){const t=this.getRadius(),e=this.container.canvas.size,i=this.position;return i.x>=-t&&i.y>=-t&&i.y<=e.height+t&&i.x<=e.width+t}isVisible(){return!this.destroyed&&!this.spawning&&this.isInsideCanvas()}reset(){for(const t of this.container.particles.updaters)t.reset?.(this)}}class Qi{constructor(t,e){this.position=t,this.particle=e}}var Xi;!function(t){t.circle="circle",t.rectangle="rectangle"}(Xi||(Xi={}));class Yi{constructor(t,e,i){this.position={x:t,y:e},this.type=i}}class Zi extends Yi{constructor(t,e,i){super(t,e,Xi.circle),this.radius=i}contains(t){return j(t,this.position)<=this.radius}intersects(t){const e=this.position,i=t.position,s=Math.abs(i.x-e.x),o=Math.abs(i.y-e.y),n=this.radius;if(t instanceof Zi||t.type===Xi.circle){return n+t.radius>Math.sqrt(s**2+o**2)}if(t instanceof Ji||t.type===Xi.rectangle){const e=t,{width:i,height:a}=e.size;return Math.pow(s-i,2)+Math.pow(o-a,2)<=n**2||s<=n+i&&o<=n+a||s<=i||o<=a}return!1}}class Ji extends Yi{constructor(t,e,i,s){super(t,e,Xi.rectangle),this.size={height:s,width:i}}contains(t){const e=this.size.width,i=this.size.height,s=this.position;return t.x>=s.x&&t.x<=s.x+e&&t.y>=s.y&&t.y<=s.y+i}intersects(t){if(t instanceof Zi)return t.intersects(this);const e=this.size.width,i=this.size.height,s=this.position,o=t.position,n=t instanceof Ji?t.size:{width:0,height:0},a=n.width,r=n.height;return o.x<s.x+e&&o.x+a>s.x&&o.y<s.y+i&&o.y+r>s.y}}const Ki=.5;class ts{constructor(t,e){this.rectangle=t,this.capacity=e,this._subdivide=()=>{const{x:t,y:e}=this.rectangle.position,{width:i,height:s}=this.rectangle.size,{capacity:o}=this;for(let n=0;n<4;n++){const a=n%2;this._subs.push(new ts(new Ji(t+i*Ki*a,e+s*Ki*(Math.round(n*Ki)-a),i*Ki,s*Ki),o))}this._divided=!0},this._points=[],this._divided=!1,this._subs=[]}insert(t){return!!this.rectangle.contains(t.position)&&(this._points.length<this.capacity?(this._points.push(t),!0):(this._divided||this._subdivide(),this._subs.some((e=>e.insert(t)))))}query(t,e){const i=[];if(!t.intersects(this.rectangle))return[];for(const s of this._points)!t.contains(s.position)&&j(t.position,s.position)>s.particle.getRadius()&&(!e||e(s.particle))||i.push(s.particle);if(this._divided)for(const s of this._subs)i.push(...s.query(t,e));return i}queryCircle(t,e,i){return this.query(new Zi(t.x,t.y,e),i)}queryRectangle(t,e,i){return this.query(new Ji(t.x,t.y,e.width,e.height),i)}}const es=t=>{const{height:e,width:i}=t;return new Ji(-.25*i,-.25*e,1.5*i,1.5*e)};class is{constructor(t,e){this._addToPool=(...t)=>{this._pool.push(...t)},this._applyDensity=(t,e,i)=>{const s=t.number;if(!t.number.density?.enable)return void(void 0===i?this._limit=s.limit.value:s.limit&&this._groupLimits.set(i,s.limit.value));const o=this._initDensityFactor(s.density),n=s.value,a=s.limit.value>0?s.limit.value:n,r=Math.min(n,a)*o+e,c=Math.min(this.count,this.filter((t=>t.group===i)).length);void 0===i?this._limit=s.limit.value*o:this._groupLimits.set(i,s.limit.value*o),c<r?this.push(Math.abs(r-c),void 0,t,i):c>r&&this.removeQuantity(c-r,i)},this._initDensityFactor=t=>{const e=this._container;if(!e.canvas.element||!t.enable)return 1;const i=e.canvas.element,s=e.retina.pixelRatio;return i.width*i.height/(t.height*t.width*s**2)},this._pushParticle=(t,e,i,s)=>{try{let o=this._pool.pop();o||(o=new ji(this._engine,this._container)),o.init(this._nextId,t,e,i);let n=!0;if(s&&(n=s(o)),!n)return;return this._array.push(o),this._zArray.push(o),this._nextId++,this._engine.dispatchEvent(De.particleAdded,{container:this._container,data:{particle:o}}),o}catch(t){ut().warning(`${f} adding particle: ${t}`)}},this._removeParticle=(t,e,i)=>{const s=this._array[t];if(!s||s.group!==e)return!1;const o=this._zArray.indexOf(s);return this._array.splice(t,1),this._zArray.splice(o,1),s.destroy(i),this._engine.dispatchEvent(De.particleRemoved,{container:this._container,data:{particle:s}}),this._addToPool(s),!0},this._engine=t,this._container=e,this._nextId=0,this._array=[],this._zArray=[],this._pool=[],this._limit=0,this._groupLimits=new Map,this._needsSort=!1,this._lastZIndex=0,this._interactionManager=new qi(t,e),this._pluginsInitialized=!1;const i=e.canvas.size;this.quadTree=new ts(es(i),4),this.movers=[],this.updaters=[]}get count(){return this._array.length}addManualParticles(){const t=this._container;t.actualOptions.manualParticles.forEach((e=>this.addParticle(e.position?Ht(e.position,t.canvas.size):void 0,e.options)))}addParticle(t,e,i,s){const o=this._container.actualOptions.particles.number.limit.mode,n=void 0===i?this._limit:this._groupLimits.get(i)??this._limit,a=this.count;if(n>0)switch(o){case Je.delete:{const t=a+1-n;t>0&&this.removeQuantity(t);break}case Je.wait:if(a>=n)return}return this._pushParticle(t,e,i,s)}clear(){this._array=[],this._zArray=[],this._pluginsInitialized=!1}destroy(){this._array=[],this._zArray=[],this.movers=[],this.updaters=[]}draw(t){const e=this._container,i=e.canvas;i.clear(),this.update(t);for(const s of e.plugins.values())i.drawPlugin(s,t);for(const e of this._zArray)e.draw(t)}filter(t){return this._array.filter(t)}find(t){return this._array.find(t)}get(t){return this._array[t]}handleClickMode(t){this._interactionManager.handleClickMode(t)}async init(){const t=this._container,e=t.actualOptions;this._lastZIndex=0,this._needsSort=!1,await this.initPlugins();let i=!1;for(const e of t.plugins.values())if(i=e.particlesInitialization?.()??i,i)break;if(this.addManualParticles(),!i){const t=e.particles,i=t.groups;for(const e in i){const s=i[e];for(let i=this.count,o=0;o<s.number?.value&&i<t.number.value;i++,o++)this.addParticle(void 0,s,e)}for(let e=this.count;e<t.number.value;e++)this.addParticle()}}async initPlugins(){if(this._pluginsInitialized)return;const t=this._container;this.movers=await this._engine.getMovers(t,!0),this.updaters=await this._engine.getUpdaters(t,!0),await this._interactionManager.init();for(const e of t.pathGenerators.values())e.init(t)}push(t,e,i,s){for(let o=0;o<t;o++)this.addParticle(e?.position,i,s)}async redraw(){this.clear(),await this.init(),this.draw({value:0,factor:0})}remove(t,e,i){this.removeAt(this._array.indexOf(t),void 0,e,i)}removeAt(t,e=1,i,s){if(t<0||t>this.count)return;let o=0;for(let n=t;o<e&&n<this.count;n++)this._removeParticle(n,i,s)&&(n--,o++)}removeQuantity(t,e){this.removeAt(0,t,e)}setDensity(){const t=this._container.actualOptions,e=t.particles.groups;for(const t in e)this._applyDensity(e[t],0,t);this._applyDensity(t.particles,t.manualParticles.length)}setLastZIndex(t){this._lastZIndex=t,this._needsSort=this._needsSort||this._lastZIndex<t}setResizeFactor(t){this._resizeFactor=t}update(t){const e=this._container,i=new Set;this.quadTree=new ts(es(e.canvas.size),4);for(const t of e.pathGenerators.values())t.update();for(const i of e.plugins.values())i.update?.(t);const s=this._resizeFactor;for(const e of this._array){s&&!e.ignoresResizeRatio&&(e.position.x*=s.width,e.position.y*=s.height,e.initialPosition.x*=s.width,e.initialPosition.y*=s.height),e.ignoresResizeRatio=!1,this._interactionManager.reset(e);for(const i of this._container.plugins.values()){if(e.destroyed)break;i.particleUpdate?.(e,t)}for(const i of this.movers)i.isEnabled(e)&&i.move(e,t);e.destroyed?i.add(e):this.quadTree.insert(new Qi(e.getPosition(),e))}if(i.size){const t=t=>!i.has(t);this._array=this.filter(t),this._zArray=this._zArray.filter(t);for(const t of i)this._engine.dispatchEvent(De.particleRemoved,{container:this._container,data:{particle:t}});this._addToPool(...i)}this._interactionManager.externalInteract(t);for(const e of this._array){for(const i of this.updaters)i.update(e,t);e.destroyed||e.spawning||this._interactionManager.particlesInteract(e,t)}if(delete this._resizeFactor,this._needsSort){const t=this._zArray;t.sort(((t,e)=>e.position.z-t.position.z||t.id-e.id));const e=1;this._lastZIndex=t[t.length-e].position.z,this._needsSort=!1}}}class ss{constructor(t){this.container=t,this.pixelRatio=1,this.reduceFactor=1}init(){const t=this.container,e=t.actualOptions;this.pixelRatio=!e.detectRetina||ft()?1:window.devicePixelRatio,this.reduceFactor=1;const i=this.pixelRatio,s=t.canvas;if(s.element){const t=s.element;s.size.width=t.offsetWidth*i,s.size.height=t.offsetHeight*i}const o=e.particles,n=o.move;this.maxSpeed=W(n.gravity.maxSpeed)*i,this.sizeAnimationSpeed=W(o.size.animation.speed)*i}initParticle(t){const e=t.options,i=this.pixelRatio,s=e.move,o=s.distance,n=t.retina;n.moveDrift=W(s.drift)*i,n.moveSpeed=W(s.speed)*i,n.sizeAnimationSpeed=W(e.size.animation.speed)*i;const a=n.maxDistance;a.horizontal=void 0!==o.horizontal?o.horizontal*i:void 0,a.vertical=void 0!==o.vertical?o.vertical*i:void 0,n.maxSpeed=W(s.gravity.maxSpeed)*i}}function os(t){return t&&!t.destroyed}function ns(t,e,...i){const s=new Wi(t,e);return Vi(s,...i),s}class as{constructor(t,e,i){this._intersectionManager=t=>{if(os(this)&&this.actualOptions.pauseOnOutsideViewport)for(const e of t)e.target===this.interactivity.element&&(e.isIntersecting?this.play():this.pause())},this._nextFrame=t=>{try{if(!this._smooth&&void 0!==this._lastFrameTime&&t<this._lastFrameTime+g/this.fpsLimit)return void this.draw(!1);this._lastFrameTime??=t;const e=function(t,e=60,i=!1){return{value:t,factor:i?60/e:60*t/g}}(t-this._lastFrameTime,this.fpsLimit,this._smooth);if(this.addLifeTime(e.value),this._lastFrameTime=t,e.value>g)return void this.draw(!1);if(this.particles.draw(e),!this.alive())return void this.destroy();this.animationStatus&&this.draw(!1)}catch(t){ut().error(`${f} in animation loop`,t)}},this._engine=t,this.id=Symbol(e),this.fpsLimit=120,this._smooth=!1,this._delay=0,this._duration=0,this._lifeTime=0,this._firstStart=!0,this.started=!1,this.destroyed=!1,this._paused=!0,this._lastFrameTime=0,this.zLayers=100,this.pageHidden=!1,this._clickHandlers=new Map,this._sourceOptions=i,this._initialSourceOptions=i,this.retina=new ss(this),this.canvas=new Se(this,this._engine),this.particles=new is(this._engine,this),this.pathGenerators=new Map,this.interactivity={mouse:{clicking:!1,inside:!1}},this.plugins=new Map,this.effectDrawers=new Map,this.shapeDrawers=new Map,this._options=ns(this._engine,this),this.actualOptions=ns(this._engine,this),this._eventListeners=new Te(this),this._intersectionObserver=gt((t=>this._intersectionManager(t))),this._engine.dispatchEvent(De.containerBuilt,{container:this})}get animationStatus(){return!this._paused&&!this.pageHidden&&os(this)}get options(){return this._options}get sourceOptions(){return this._sourceOptions}addClickHandler(t){if(!os(this))return;const e=this.interactivity.element;if(!e)return;const i=(e,i,s)=>{if(!os(this))return;const o=this.retina.pixelRatio,n={x:i.x*o,y:i.y*o},a=this.particles.quadTree.queryCircle(n,s*o);t(e,a)};let s=!1,o=!1;this._clickHandlers.set("click",(t=>{if(!os(this))return;const e=t,s={x:e.offsetX||e.clientX,y:e.offsetY||e.clientY};i(t,s,1)})),this._clickHandlers.set("touchstart",(()=>{os(this)&&(s=!0,o=!1)})),this._clickHandlers.set("touchmove",(()=>{os(this)&&(o=!0)})),this._clickHandlers.set("touchend",(t=>{if(os(this)){if(s&&!o){const e=t,s=1;let o=e.touches[e.touches.length-s];if(!o&&(o=e.changedTouches[e.changedTouches.length-s],!o))return;const n=this.canvas.element,a=n?n.getBoundingClientRect():void 0,r=0,c={x:o.clientX-(a?a.left:r),y:o.clientY-(a?a.top:r)};i(t,c,Math.max(o.radiusX,o.radiusY))}s=!1,o=!1}})),this._clickHandlers.set("touchcancel",(()=>{os(this)&&(s=!1,o=!1)}));for(const[t,i]of this._clickHandlers)e.addEventListener(t,i)}addLifeTime(t){this._lifeTime+=t}addPath(t,e,i=!1){return!(!os(this)||!i&&this.pathGenerators.has(t))&&(this.pathGenerators.set(t,e),!0)}alive(){return!this._duration||this._lifeTime<=this._duration}clearClickHandlers(){if(os(this)){for(const[t,e]of this._clickHandlers)this.interactivity.element?.removeEventListener(t,e);this._clickHandlers.clear()}}destroy(t=!0){if(os(this)){this.stop(),this.clearClickHandlers(),this.particles.destroy(),this.canvas.destroy();for(const t of this.effectDrawers.values())t.destroy?.(this);for(const t of this.shapeDrawers.values())t.destroy?.(this);for(const t of this.effectDrawers.keys())this.effectDrawers.delete(t);for(const t of this.shapeDrawers.keys())this.shapeDrawers.delete(t);if(this._engine.clearPlugins(this),this.destroyed=!0,t){const t=this._engine.items,e=t.findIndex((t=>t===this));if(e>=0){const i=1;t.splice(e,i)}}this._engine.dispatchEvent(De.containerDestroyed,{container:this})}}draw(t){if(!os(this))return;let e=t;const i=t=>{e&&(this._lastFrameTime=void 0,e=!1),this._nextFrame(t)};this._drawAnimationFrame=F((t=>i(t)))}async export(t,e={}){for(const i of this.plugins.values()){if(!i.export)continue;const s=await i.export(t,e);if(s.supported)return s.blob}ut().error(`${f} - Export plugin with type ${t} not found`)}handleClickMode(t){if(os(this)){this.particles.handleClickMode(t);for(const e of this.plugins.values())e.handleClickMode?.(t)}}async init(){if(!os(this))return;const t=this._engine.getSupportedEffects();for(const e of t){const t=this._engine.getEffectDrawer(e);t&&this.effectDrawers.set(e,t)}const e=this._engine.getSupportedShapes();for(const t of e){const e=this._engine.getShapeDrawer(t);e&&this.shapeDrawers.set(t,e)}await this.particles.initPlugins(),this._options=ns(this._engine,this,this._initialSourceOptions,this.sourceOptions),this.actualOptions=ns(this._engine,this,this._options);const i=await this._engine.getAvailablePlugins(this);for(const[t,e]of i)this.plugins.set(t,e);this.retina.init(),await this.canvas.init(),this.updateActualOptions(),this.canvas.initBackground(),this.canvas.resize();const{zLayers:s,duration:o,delay:n,fpsLimit:a,smooth:r}=this.actualOptions;this.zLayers=s,this._duration=W(o)*g,this._delay=W(n)*g,this._lifeTime=0;this.fpsLimit=a>0?a:120,this._smooth=r;for(const t of this.effectDrawers.values())await(t.init?.(this));for(const t of this.shapeDrawers.values())await(t.init?.(this));for(const t of this.plugins.values())await(t.init?.());this._engine.dispatchEvent(De.containerInit,{container:this}),await this.particles.init(),this.particles.setDensity();for(const t of this.plugins.values())t.particlesSetup?.();this._engine.dispatchEvent(De.particlesSetup,{container:this})}async loadTheme(t){os(this)&&(this._currentTheme=t,await this.refresh())}pause(){if(os(this)&&(void 0!==this._drawAnimationFrame&&(B(this._drawAnimationFrame),delete this._drawAnimationFrame),!this._paused)){for(const t of this.plugins.values())t.pause?.();this.pageHidden||(this._paused=!0),this._engine.dispatchEvent(De.containerPaused,{container:this})}}play(t){if(!os(this))return;const e=this._paused||t;if(!this._firstStart||this.actualOptions.autoPlay){if(this._paused&&(this._paused=!1),e)for(const t of this.plugins.values())t.play&&t.play();this._engine.dispatchEvent(De.containerPlay,{container:this}),this.draw(e??!1)}else this._firstStart=!1}async refresh(){if(os(this))return this.stop(),this.start()}async reset(t){if(os(this))return this._initialSourceOptions=t,this._sourceOptions=t,this._options=ns(this._engine,this,this._initialSourceOptions,this.sourceOptions),this.actualOptions=ns(this._engine,this,this._options),this.refresh()}async start(){os(this)&&!this.started&&(await this.init(),this.started=!0,await new Promise((t=>{const e=async()=>{this._eventListeners.addListeners(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.observe(this.interactivity.element);for(const t of this.plugins.values())await(t.start?.());this._engine.dispatchEvent(De.containerStarted,{container:this}),this.play(),t()};this._delayTimeout=setTimeout((()=>{e()}),this._delay)})))}stop(){if(os(this)&&this.started){this._delayTimeout&&(clearTimeout(this._delayTimeout),delete this._delayTimeout),this._firstStart=!0,this.started=!1,this._eventListeners.removeListeners(),this.pause(),this.particles.clear(),this.canvas.stop(),this.interactivity.element instanceof HTMLElement&&this._intersectionObserver&&this._intersectionObserver.unobserve(this.interactivity.element);for(const t of this.plugins.values())t.stop?.();for(const t of this.plugins.keys())this.plugins.delete(t);this._sourceOptions=this._options,this._engine.dispatchEvent(De.containerStopped,{container:this})}}updateActualOptions(){this.actualOptions.responsive=[];const t=this.actualOptions.setResponsive(this.canvas.size.width,this.retina.pixelRatio,this._options);return this.actualOptions.setTheme(this._currentTheme),this._responsiveMaxWidth!==t&&(this._responsiveMaxWidth=t,!0)}}class rs{constructor(){this._listeners=new Map}addEventListener(t,e){this.removeEventListener(t,e);let i=this._listeners.get(t);i||(i=[],this._listeners.set(t,i)),i.push(e)}dispatchEvent(t,e){const i=this._listeners.get(t);i?.forEach((t=>t(e)))}hasEventListener(t){return!!this._listeners.get(t)}removeAllEventListeners(t){t?this._listeners.delete(t):this._listeners=new Map}removeEventListener(t,e){const i=this._listeners.get(t);if(!i)return;const s=i.length,o=i.indexOf(e);if(o<0)return;1===s?this._listeners.delete(t):i.splice(o,1)}}async function cs(t,e,i,s=!1){let o=e.get(t);return o&&!s||(o=await Promise.all([...i.values()].map((e=>e(t)))),e.set(t,o)),o}const hs="true",ls="false",ds="canvas";class us{constructor(){this._configs=new Map,this._domArray=[],this._eventDispatcher=new rs,this._initialized=!1,this.plugins=[],this.colorManagers=new Map,this.easingFunctions=new Map,this._initializers={interactors:new Map,movers:new Map,updaters:new Map},this.interactors=new Map,this.movers=new Map,this.updaters=new Map,this.presets=new Map,this.effectDrawers=new Map,this.shapeDrawers=new Map,this.pathGenerators=new Map}get configs(){const t={};for(const[e,i]of this._configs)t[e]=i;return t}get items(){return this._domArray}get version(){return"3.7.1"}async addColorManager(t,e=!0){this.colorManagers.set(t.key,t),await this.refresh(e)}addConfig(t){const e=t.key??t.name??"default";this._configs.set(e,t),this._eventDispatcher.dispatchEvent(De.configAdded,{data:{name:e,config:t}})}async addEasing(t,e,i=!0){this.getEasing(t)||(this.easingFunctions.set(t,e),await this.refresh(i))}async addEffect(t,e,i=!0){Et(t,(t=>{this.getEffectDrawer(t)||this.effectDrawers.set(t,e)})),await this.refresh(i)}addEventListener(t,e){this._eventDispatcher.addEventListener(t,e)}async addInteractor(t,e,i=!0){this._initializers.interactors.set(t,e),await this.refresh(i)}async addMover(t,e,i=!0){this._initializers.movers.set(t,e),await this.refresh(i)}async addParticleUpdater(t,e,i=!0){this._initializers.updaters.set(t,e),await this.refresh(i)}async addPathGenerator(t,e,i=!0){this.getPathGenerator(t)||this.pathGenerators.set(t,e),await this.refresh(i)}async addPlugin(t,e=!0){this.getPlugin(t.id)||this.plugins.push(t),await this.refresh(e)}async addPreset(t,e,i=!1,s=!0){!i&&this.getPreset(t)||this.presets.set(t,e),await this.refresh(s)}async addShape(t,e=!0){for(const e of t.validTypes)this.getShapeDrawer(e)||this.shapeDrawers.set(e,t);await this.refresh(e)}clearPlugins(t){this.updaters.delete(t),this.movers.delete(t),this.interactors.delete(t)}dispatchEvent(t,e){this._eventDispatcher.dispatchEvent(t,e)}dom(){return this.items}domItem(t){return this.item(t)}async getAvailablePlugins(t){const e=new Map;for(const i of this.plugins)i.needsPlugin(t.actualOptions)&&e.set(i.id,await i.getPlugin(t));return e}getEasing(t){return this.easingFunctions.get(t)??(t=>t)}getEffectDrawer(t){return this.effectDrawers.get(t)}async getInteractors(t,e=!1){return cs(t,this.interactors,this._initializers.interactors,e)}async getMovers(t,e=!1){return cs(t,this.movers,this._initializers.movers,e)}getPathGenerator(t){return this.pathGenerators.get(t)}getPlugin(t){return this.plugins.find((e=>e.id===t))}getPreset(t){return this.presets.get(t)}getShapeDrawer(t){return this.shapeDrawers.get(t)}getSupportedEffects(){return this.effectDrawers.keys()}getSupportedShapes(){return this.shapeDrawers.keys()}async getUpdaters(t,e=!1){return cs(t,this.updaters,this._initializers.updaters,e)}init(){this._initialized||(this._initialized=!0)}item(t){const{items:e}=this,i=e[t];if(i&&!i.destroyed)return i;{const i=1;e.splice(t,i)}}async load(t){const e=t.id??t.element?.id??`tsparticles${Math.floor(1e4*L())}`,{index:s,url:o}=t,n=o?await async function(t){const e=Lt(t.url,t.index);if(!e)return t.fallback;const i=await fetch(e);return i.ok?await i.json():(ut().error(`${f} ${i.status} while retrieving config file`),t.fallback)}({fallback:t.options,url:o,index:s}):t.options,a=Lt(n,s),{items:r}=this,c=r.findIndex((t=>t.id.description===e)),h=new as(this,e,a);if(c>=0){const t=this.item(c),e=t?1:0;t&&!t.destroyed&&t.destroy(!1),r.splice(c,e,h)}else r.push(h);const l=((t,e)=>{let s=e??document.getElementById(t);return s||(s=document.createElement("div"),s.id=t,s.dataset[i]=hs,document.body.append(s),s)})(e,t.element),d=(t=>{let e;if(t instanceof HTMLCanvasElement||t.tagName.toLowerCase()===ds)e=t,e.dataset[i]||(e.dataset[i]=ls);else{const s=t.getElementsByTagName(ds);s.length?(e=s[0],e.dataset[i]=ls):(e=document.createElement(ds),e.dataset[i]=hs,t.appendChild(e))}const s="100%";return e.style.width||(e.style.width=s),e.style.height||(e.style.height=s),e})(l);return h.canvas.loadCanvas(d),await h.start(),h}loadOptions(t,e){this.plugins.forEach((i=>i.loadOptions?.(t,e)))}loadParticlesOptions(t,e,...i){const s=this.updaters.get(t);s&&s.forEach((t=>t.loadOptions?.(e,...i)))}async refresh(t=!0){t&&await Promise.all(this.items.map((t=>t.refresh())))}removeEventListener(t,e){this._eventDispatcher.removeEventListener(t,e)}setOnClickHandler(t){const{items:e}=this;if(!e.length)throw new Error(`${f} can only set click handlers after calling tsParticles.load()`);e.forEach((e=>e.addClickHandler(t)))}}class ps{constructor(t){this.type=Ke.external,this.container=t}}class fs{constructor(t){this.type=Ke.particles,this.container=t}}var vs,ms,gs;!function(t){t.clockwise="clockwise",t.counterClockwise="counter-clockwise",t.random="random"}(vs||(vs={})),function(t){t.linear="linear",t.radial="radial",t.random="random"}(ms||(ms={})),function(t){t.easeInBack="ease-in-back",t.easeInCirc="ease-in-circ",t.easeInCubic="ease-in-cubic",t.easeInLinear="ease-in-linear",t.easeInQuad="ease-in-quad",t.easeInQuart="ease-in-quart",t.easeInQuint="ease-in-quint",t.easeInExpo="ease-in-expo",t.easeInSine="ease-in-sine",t.easeOutBack="ease-out-back",t.easeOutCirc="ease-out-circ",t.easeOutCubic="ease-out-cubic",t.easeOutLinear="ease-out-linear",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",t.easeInOutBack="ease-in-out-back",t.easeInOutCirc="ease-in-out-circ",t.easeInOutCubic="ease-in-out-cubic",t.easeInOutLinear="ease-in-out-linear",t.easeInOutQuad="ease-in-out-quad",t.easeInOutQuart="ease-in-out-quart",t.easeInOutQuint="ease-in-out-quint",t.easeInOutExpo="ease-in-out-expo",t.easeInOutSine="ease-in-out-sine"}(gs||(gs={}));const ys=function(){const t=new us;return t.init(),t}();ft()||(window.tsParticles=ys);const _s=1;function ws(t,e,i,s,o,n){!function(t,e){const i=t.options,s=i.move.path;if(!s.enable)return;if(t.lastPathTime<=t.pathDelay)return void(t.lastPathTime+=e.value);const o=t.pathGenerator?.generate(t,e);o&&t.velocity.addTo(o);s.clamp&&(t.velocity.x=H(t.velocity.x,-_s,_s),t.velocity.y=H(t.velocity.y,-_s,_s));t.lastPathTime-=t.pathDelay}(t,n);const a=t.gravity,r=a?.enable&&a.inverse?-_s:_s;o&&i&&(t.velocity.x+=o*n.factor/(60*i)),a?.enable&&i&&(t.velocity.y+=r*(a.acceleration*n.factor)/(60*i));const c=t.moveDecay;t.velocity.multTo(c);const h=t.velocity.mult(i);a?.enable&&s>0&&(!a.inverse&&h.y>=0&&h.y>=s||a.inverse&&h.y<=0&&h.y<=-s)&&(h.y=r*s,i&&(t.velocity.y=h.y/i));const l=t.options.zIndex,d=(_s-t.zIndexFactor)**l.velocityRate;h.multTo(d);const{position:u}=t;u.addTo(h),e.vibrate&&(u.x+=Math.sin(u.x*Math.cos(u.y)),u.y+=Math.cos(u.y*Math.sin(u.x)))}class bs{init(t){const e=t.options.move.gravity;t.gravity={enable:e.enable,acceleration:W(e.acceleration),inverse:e.inverse},function(t){const e=t.container,i=t.options.move.spin;if(!i.enable)return;const s=i.position??{x:50,y:50},o={x:.01*s.x*e.canvas.size.width,y:.01*s.y*e.canvas.size.height},n=j(t.getPosition(),o),a=W(i.acceleration);t.retina.spinAcceleration=a*e.retina.pixelRatio,t.spin={center:o,direction:t.velocity.x>=0?vs.clockwise:vs.counterClockwise,angle:t.velocity.angle,radius:n,acceleration:t.retina.spinAcceleration}}(t)}isEnabled(t){return!t.destroyed&&t.options.move.enable}move(t,e){const i=t.options,s=i.move;if(!s.enable)return;const o=t.container,n=o.retina.pixelRatio;t.retina.moveSpeed??=W(s.speed)*n,t.retina.moveDrift??=W(t.options.move.drift)*n;const a=function(t){return t.slow.inRange?t.slow.factor:_s}(t),r=t.retina.moveSpeed*o.retina.reduceFactor,c=t.retina.moveDrift,h=$(i.size.value)*n,l=r*(s.size?t.getRadius()/h:1)*a*(e.factor||1)/2,d=t.retina.maxSpeed??o.retina.maxSpeed;s.spin.enable?function(t,e){const i=t.container;if(!t.spin)return;const s={x:t.spin.direction===vs.clockwise?Math.cos:Math.sin,y:t.spin.direction===vs.clockwise?Math.sin:Math.cos};t.position.x=t.spin.center.x+t.spin.radius*s.x(t.spin.angle),t.position.y=t.spin.center.y+t.spin.radius*s.y(t.spin.angle),t.spin.radius+=t.spin.acceleration;const o=Math.max(i.canvas.size.width,i.canvas.size.height),n=.5*o;t.spin.radius>n?(t.spin.radius=n,t.spin.acceleration*=-_s):t.spin.radius<0&&(t.spin.radius=0,t.spin.acceleration*=-_s),t.spin.angle+=.01*e*(_s-t.spin.radius/o)}(t,l):ws(t,s,l,d,c,e),function(t){const e=t.initialPosition,{dx:i,dy:s}=N(e,t.position),o=Math.abs(i),n=Math.abs(s),{maxDistance:a}=t.retina,r=a.horizontal,c=a.vertical;if(!r&&!c)return;if((r&&o>=r||c&&n>=c)&&!t.misplaced)t.misplaced=!!r&&o>r||!!c&&n>c,r&&(t.velocity.x=.5*t.velocity.y-t.velocity.x),c&&(t.velocity.y=.5*t.velocity.x-t.velocity.y);else if((!r||o<r)&&(!c||n<c)&&t.misplaced)t.misplaced=!1;else if(t.misplaced){const i=t.position,s=t.velocity;r&&(i.x<e.x&&s.x<0||i.x>e.x&&s.x>0)&&(s.x*=-L()),c&&(i.y<e.y&&s.y<0||i.y>e.y&&s.y>0)&&(s.y*=-L())}}(t)}}const xs=2*Math.PI,zs=0,Ms=0;class Ps{constructor(){this.validTypes=["circle"]}draw(t){!function(t){const{context:e,particle:i,radius:s}=t;i.circleRange||(i.circleRange={min:0,max:xs});const o=i.circleRange;e.arc(zs,Ms,s,o.min,o.max,!1)}(t)}getSidesCount(){return 12}particleInit(t,e){const i=e.shapeData,s=i?.angle??{max:360,min:0};e.circleRange=z(s)?{min:Q(s.min),max:Q(s.max)}:{min:0,max:Q(s)}}}class ks{constructor(t,e){this._container=t,this._engine=e}init(t){const e=Yt(this._engine,t.options.color,t.id,t.options.reduceDuplicates);e&&(t.color=he(e,t.options.color.animation,this._container.retina.reduceFactor))}isEnabled(t){const{h:e,s:i,l:s}=t.options.color.animation,{color:o}=t;return!t.destroyed&&!t.spawning&&(void 0!==o?.h.value&&e.enable||void 0!==o?.s.value&&i.enable||void 0!==o?.l.value&&s.enable)}update(t,e){ue(t.color,e)}}var Os;!function(t){t[t.r=1]="r",t[t.g=2]="g",t[t.b=3]="b",t[t.a=4]="a"}(Os||(Os={}));const Ss=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,Cs=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;class Rs{constructor(){this.key="hex",this.stringPrefix="#"}handleColor(t){return this._parseString(t.value)}handleRangeColor(t){return this._parseString(t.value)}parseString(t){return this._parseString(t)}_parseString(t){if("string"!=typeof t)return;if(!t?.startsWith(this.stringPrefix))return;const e=t.replace(Ss,((t,e,i,s,o)=>e+e+i+i+s+s+(void 0!==o?o+o:""))),i=Cs.exec(e);return i?{a:void 0!==i[Os.a]?parseInt(i[Os.a],16)/255:1,b:parseInt(i[Os.b],16),g:parseInt(i[Os.g],16),r:parseInt(i[Os.r],16)}:void 0}}var Ts;!function(t){t[t.h=1]="h",t[t.s=2]="s",t[t.l=3]="l",t[t.a=5]="a"}(Ts||(Ts={}));class Ds{constructor(){this.key="hsl",this.stringPrefix="hsl"}handleColor(t){const e=t.value.hsl??t.value;if(void 0!==e.h&&void 0!==e.s&&void 0!==e.l)return te(e)}handleRangeColor(t){const e=t.value.hsl??t.value;if(void 0!==e.h&&void 0!==e.l)return te({h:W(e.h),l:W(e.l),s:W(e.s)})}parseString(t){if(!t.startsWith("hsl"))return;const e=/hsla?\(\s*(\d+)\s*[\s,]\s*(\d+)%\s*[\s,]\s*(\d+)%\s*([\s,]\s*(0|1|0?\.\d+|(\d{1,3})%)\s*)?\)/i.exec(t);return e?ee({a:e.length>4?st(e[Ts.a]):1,h:parseInt(e[Ts.h],10),l:parseInt(e[Ts.l],10),s:parseInt(e[Ts.s],10)}):void 0}}class Is{constructor(t){this.container=t}init(t){const e=t.options.opacity;t.opacity=Ft(e,1);const i=e.animation;i.enable&&(t.opacity.velocity=W(i.speed)/v*this.container.retina.reduceFactor,i.sync||(t.opacity.velocity*=L()))}isEnabled(t){return!t.destroyed&&!t.spawning&&!!t.opacity&&t.opacity.enable&&((t.opacity.maxLoops??0)<=0||(t.opacity.maxLoops??0)>0&&(t.opacity.loops??0)<(t.opacity.maxLoops??0))}reset(t){t.opacity&&(t.opacity.time=0,t.opacity.loops=0)}update(t,e){this.isEnabled(t)&&t.opacity&&Ut(t,t.opacity,!0,t.options.opacity.animation.destroy,e)}}class Es{constructor(t){this.container=t,this.modes=[Ze.bounce,Ze.split]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;let n=!1;for(const s of o.plugins.values())if(void 0!==s.particleBounce&&(n=s.particleBounce(t,i,e)),n)break;if(n)return;const a=t.getPosition(),r=t.offset,c=t.getRadius(),h=Pt(a,c),l=o.canvas.size;!function(t){if(t.outMode!==Ze.bounce&&t.outMode!==Ze.split||t.direction!==rt.left&&t.direction!==rt.right)return;t.bounds.right<0&&t.direction===rt.left?t.particle.position.x=t.size+t.offset.x:t.bounds.left>t.canvasSize.width&&t.direction===rt.right&&(t.particle.position.x=t.canvasSize.width-t.size-t.offset.x);const e=t.particle.velocity.x;let i=!1;if(t.direction===rt.right&&t.bounds.right>=t.canvasSize.width&&e>0||t.direction===rt.left&&t.bounds.left<=0&&e<0){const e=W(t.particle.options.bounce.horizontal.value);t.particle.velocity.x*=-e,i=!0}if(!i)return;const s=t.offset.x+t.size;t.bounds.right>=t.canvasSize.width&&t.direction===rt.right?t.particle.position.x=t.canvasSize.width-s:t.bounds.left<=0&&t.direction===rt.left&&(t.particle.position.x=s),t.outMode===Ze.split&&t.particle.destroy()}({particle:t,outMode:s,direction:e,bounds:h,canvasSize:l,offset:r,size:c}),function(t){if(t.outMode!==Ze.bounce&&t.outMode!==Ze.split||t.direction!==rt.bottom&&t.direction!==rt.top)return;t.bounds.bottom<0&&t.direction===rt.top?t.particle.position.y=t.size+t.offset.y:t.bounds.top>t.canvasSize.height&&t.direction===rt.bottom&&(t.particle.position.y=t.canvasSize.height-t.size-t.offset.y);const e=t.particle.velocity.y;let i=!1;if(t.direction===rt.bottom&&t.bounds.bottom>=t.canvasSize.height&&e>0||t.direction===rt.top&&t.bounds.top<=0&&e<0){const e=W(t.particle.options.bounce.vertical.value);t.particle.velocity.y*=-e,i=!0}if(!i)return;const s=t.offset.y+t.size;t.bounds.bottom>=t.canvasSize.height&&t.direction===rt.bottom?t.particle.position.y=t.canvasSize.height-s:t.bounds.top<=0&&t.direction===rt.top&&(t.particle.position.y=s),t.outMode===Ze.split&&t.particle.destroy()}({particle:t,outMode:s,direction:e,bounds:h,canvasSize:l,offset:r,size:c})}}class Ls{constructor(t){this.container=t,this.modes=[Ze.destroy]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;switch(t.outType){case ti.normal:case ti.outside:if(zt(t.position,o.canvas.size,R.origin,t.getRadius(),e))return;break;case ti.inside:{const{dx:e,dy:i}=N(t.position,t.moveCenter),{x:s,y:o}=t.velocity;if(s<0&&e>t.moveCenter.radius||o<0&&i>t.moveCenter.radius||s>=0&&e<-t.moveCenter.radius||o>=0&&i<-t.moveCenter.radius)return;break}}o.particles.remove(t,t.group,!0)}}class As{constructor(t){this.container=t,this.modes=[Ze.none]}update(t,e,i,s){if(!this.modes.includes(s))return;if((t.options.move.distance.horizontal&&(e===rt.left||e===rt.right))??(t.options.move.distance.vertical&&(e===rt.top||e===rt.bottom)))return;const o=t.options.move.gravity,n=this.container,a=n.canvas.size,r=t.getRadius();if(o.enable){const i=t.position;(!o.inverse&&i.y>a.height+r&&e===rt.bottom||o.inverse&&i.y<-r&&e===rt.top)&&n.particles.remove(t)}else{if(t.velocity.y>0&&t.position.y<=a.height+r||t.velocity.y<0&&t.position.y>=-r||t.velocity.x>0&&t.position.x<=a.width+r||t.velocity.x<0&&t.position.x>=-r)return;zt(t.position,n.canvas.size,R.origin,r,e)||n.particles.remove(t)}}}class Fs{constructor(t){this.container=t,this.modes=[Ze.out]}update(t,e,i,s){if(!this.modes.includes(s))return;const o=this.container;switch(t.outType){case ti.inside:{const{x:e,y:i}=t.velocity,s=R.origin;s.length=t.moveCenter.radius,s.angle=t.velocity.angle+Math.PI,s.addTo(R.create(t.moveCenter));const{dx:n,dy:a}=N(t.position,s);if(e<=0&&n>=0||i<=0&&a>=0||e>=0&&n<=0||i>=0&&a<=0)return;t.position.x=Math.floor(U({min:0,max:o.canvas.size.width})),t.position.y=Math.floor(U({min:0,max:o.canvas.size.height}));const{dx:r,dy:c}=N(t.position,t.moveCenter);t.direction=Math.atan2(-c,-r),t.velocity.angle=t.direction;break}default:if(zt(t.position,o.canvas.size,R.origin,t.getRadius(),e))return;switch(t.outType){case ti.outside:{t.position.x=Math.floor(U({min:-t.moveCenter.radius,max:t.moveCenter.radius}))+t.moveCenter.x,t.position.y=Math.floor(U({min:-t.moveCenter.radius,max:t.moveCenter.radius}))+t.moveCenter.y;const{dx:e,dy:i}=N(t.position,t.moveCenter);t.moveCenter.radius&&(t.direction=Math.atan2(i,e),t.velocity.angle=t.direction);break}case ti.normal:{const i=t.options.move.warp,s=o.canvas.size,n={bottom:s.height+t.getRadius()+t.offset.y,left:-t.getRadius()-t.offset.x,right:s.width+t.getRadius()+t.offset.x,top:-t.getRadius()-t.offset.y},a=t.getRadius(),r=Pt(t.position,a);e===rt.right&&r.left>s.width+t.offset.x?(t.position.x=n.left,t.initialPosition.x=t.position.x,i||(t.position.y=L()*s.height,t.initialPosition.y=t.position.y)):e===rt.left&&r.right<-t.offset.x&&(t.position.x=n.right,t.initialPosition.x=t.position.x,i||(t.position.y=L()*s.height,t.initialPosition.y=t.position.y)),e===rt.bottom&&r.top>s.height+t.offset.y?(i||(t.position.x=L()*s.width,t.initialPosition.x=t.position.x),t.position.y=n.top,t.initialPosition.y=t.position.y):e===rt.top&&r.bottom<-t.offset.y&&(i||(t.position.x=L()*s.width,t.initialPosition.x=t.position.x),t.position.y=n.bottom,t.initialPosition.y=t.position.y);break}}}}}class Bs{constructor(t){this._addUpdaterIfMissing=(t,e,i)=>{const s=t.options.move.outModes;!this.updaters.has(e)&&((t,e)=>t.default===e||t.bottom===e||t.left===e||t.right===e||t.top===e)(s,e)&&this.updaters.set(e,i(this.container))},this._updateOutMode=(t,e,i,s)=>{for(const o of this.updaters.values())o.update(t,s,e,i)},this.container=t,this.updaters=new Map}init(t){this._addUpdaterIfMissing(t,Ze.bounce,(t=>new Es(t))),this._addUpdaterIfMissing(t,Ze.out,(t=>new Fs(t))),this._addUpdaterIfMissing(t,Ze.destroy,(t=>new Ls(t))),this._addUpdaterIfMissing(t,Ze.none,(t=>new As(t)))}isEnabled(t){return!t.destroyed&&!t.spawning}update(t,e){const i=t.options.move.outModes;this._updateOutMode(t,e,i.bottom??i.default,rt.bottom),this._updateOutMode(t,e,i.left??i.default,rt.left),this._updateOutMode(t,e,i.right??i.default,rt.right),this._updateOutMode(t,e,i.top??i.default,rt.top)}}var Hs;!function(t){t[t.r=1]="r",t[t.g=2]="g",t[t.b=3]="b",t[t.a=5]="a"}(Hs||(Hs={}));class Vs{constructor(){this.key="rgb",this.stringPrefix="rgb"}handleColor(t){const e=t.value.rgb??t.value;if(void 0!==e.r)return e}handleRangeColor(t){const e=t.value.rgb??t.value;if(void 0!==e.r)return{r:W(e.r),g:W(e.g),b:W(e.b)}}parseString(t){if(!t.startsWith(this.stringPrefix))return;const e=/rgba?\(\s*(\d{1,3})\s*[\s,]\s*(\d{1,3})\s*[\s,]\s*(\d{1,3})\s*([\s,]\s*(0|1|0?\.\d+|(\d{1,3})%)\s*)?\)/i.exec(t);return e?{a:e.length>4?st(e[Hs.a]):1,b:parseInt(e[Hs.b],10),g:parseInt(e[Hs.g],10),r:parseInt(e[Hs.r],10)}:void 0}}class Us{init(t){const e=t.container,i=t.options.size.animation;i.enable&&(t.size.velocity=(t.retina.sizeAnimationSpeed??e.retina.sizeAnimationSpeed)/v*e.retina.reduceFactor,i.sync||(t.size.velocity*=L()))}isEnabled(t){return!t.destroyed&&!t.spawning&&t.size.enable&&((t.size.maxLoops??0)<=0||(t.size.maxLoops??0)>0&&(t.size.loops??0)<(t.size.maxLoops??0))}reset(t){t.size.loops=0}update(t,e){this.isEnabled(t)&&Ut(t,t.size,!0,t.options.size.animation.destroy,e)}}async function Ws(t,e=!0){Wt(t,"3.7.1"),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addColorManager(new Rs,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addColorManager(new Ds,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addColorManager(new Vs,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addMover("base",(()=>Promise.resolve(new bs)),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addShape(new Ps,e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addParticleUpdater("color",(e=>Promise.resolve(new ks(e,t))),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addParticleUpdater("opacity",(t=>Promise.resolve(new Is(t))),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addParticleUpdater("outModes",(t=>Promise.resolve(new Bs(t))),e)}(t,!1),await async function(t,e=!0){Wt(t,"3.7.1"),await t.addParticleUpdater("size",(()=>Promise.resolve(new Us)),e)}(t,!1),await t.refresh(e)}return e})()));
@@ -1 +1 @@
1
- /*! tsParticles Basic v3.7.0 by Matteo Bruni */
1
+ /*! tsParticles Basic v3.7.1 by Matteo Bruni */
@@ -4,7 +4,7 @@
4
4
  * Demo / Generator : https://particles.js.org/
5
5
  * GitHub : https://www.github.com/matteobruni/tsparticles
6
6
  * How to use? : Check the GitHub README
7
- * v3.7.0
7
+ * v3.7.1
8
8
  */
9
9
  /*
10
10
  * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
@@ -34,7 +34,7 @@ return /******/ (() => { // webpackBootstrap
34
34
  \*******************************/
35
35
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
36
36
 
37
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadBasic: () => (/* binding */ loadBasic)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/move-base */ \"@tsparticles/move-base\");\n/* harmony import */ var _tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/shape-circle */ \"@tsparticles/shape-circle\");\n/* harmony import */ var _tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tsparticles/updater-color */ \"@tsparticles/updater-color\");\n/* harmony import */ var _tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tsparticles/plugin-hex-color */ \"@tsparticles/plugin-hex-color\");\n/* harmony import */ var _tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tsparticles/plugin-hsl-color */ \"@tsparticles/plugin-hsl-color\");\n/* harmony import */ var _tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @tsparticles/updater-opacity */ \"@tsparticles/updater-opacity\");\n/* harmony import */ var _tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @tsparticles/updater-out-modes */ \"@tsparticles/updater-out-modes\");\n/* harmony import */ var _tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @tsparticles/plugin-rgb-color */ \"@tsparticles/plugin-rgb-color\");\n/* harmony import */ var _tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @tsparticles/updater-size */ \"@tsparticles/updater-size\");\n/* harmony import */ var _tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\n\n\nasync function loadBasic(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.0\");\n await (0,_tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__.loadHexColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__.loadHslColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__.loadRgbColorPlugin)(engine, false);\n await (0,_tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__.loadBaseMover)(engine, false);\n await (0,_tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__.loadCircleShape)(engine, false);\n await (0,_tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__.loadColorUpdater)(engine, false);\n await (0,_tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__.loadOpacityUpdater)(engine, false);\n await (0,_tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__.loadOutModesUpdater)(engine, false);\n await (0,_tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__.loadSizeUpdater)(engine, false);\n await engine.refresh(refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/./dist/browser/index.js?");
37
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadBasic: () => (/* binding */ loadBasic)\n/* harmony export */ });\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tsparticles/engine */ \"@tsparticles/engine\");\n/* harmony import */ var _tsparticles_engine__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @tsparticles/move-base */ \"@tsparticles/move-base\");\n/* harmony import */ var _tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @tsparticles/shape-circle */ \"@tsparticles/shape-circle\");\n/* harmony import */ var _tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @tsparticles/updater-color */ \"@tsparticles/updater-color\");\n/* harmony import */ var _tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tsparticles/plugin-hex-color */ \"@tsparticles/plugin-hex-color\");\n/* harmony import */ var _tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tsparticles/plugin-hsl-color */ \"@tsparticles/plugin-hsl-color\");\n/* harmony import */ var _tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @tsparticles/updater-opacity */ \"@tsparticles/updater-opacity\");\n/* harmony import */ var _tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @tsparticles/updater-out-modes */ \"@tsparticles/updater-out-modes\");\n/* harmony import */ var _tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @tsparticles/plugin-rgb-color */ \"@tsparticles/plugin-rgb-color\");\n/* harmony import */ var _tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @tsparticles/updater-size */ \"@tsparticles/updater-size\");\n/* harmony import */ var _tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\n\n\n\n\n\nasync function loadBasic(engine, refresh = true) {\n (0,_tsparticles_engine__WEBPACK_IMPORTED_MODULE_0__.assertValidVersion)(engine, \"3.7.1\");\n await (0,_tsparticles_plugin_hex_color__WEBPACK_IMPORTED_MODULE_4__.loadHexColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_hsl_color__WEBPACK_IMPORTED_MODULE_5__.loadHslColorPlugin)(engine, false);\n await (0,_tsparticles_plugin_rgb_color__WEBPACK_IMPORTED_MODULE_8__.loadRgbColorPlugin)(engine, false);\n await (0,_tsparticles_move_base__WEBPACK_IMPORTED_MODULE_1__.loadBaseMover)(engine, false);\n await (0,_tsparticles_shape_circle__WEBPACK_IMPORTED_MODULE_2__.loadCircleShape)(engine, false);\n await (0,_tsparticles_updater_color__WEBPACK_IMPORTED_MODULE_3__.loadColorUpdater)(engine, false);\n await (0,_tsparticles_updater_opacity__WEBPACK_IMPORTED_MODULE_6__.loadOpacityUpdater)(engine, false);\n await (0,_tsparticles_updater_out_modes__WEBPACK_IMPORTED_MODULE_7__.loadOutModesUpdater)(engine, false);\n await (0,_tsparticles_updater_size__WEBPACK_IMPORTED_MODULE_9__.loadSizeUpdater)(engine, false);\n await engine.refresh(refresh);\n}\n\n//# sourceURL=webpack://@tsparticles/basic/./dist/browser/index.js?");
38
38
 
39
39
  /***/ }),
40
40
 
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.basic.min.js.LICENSE.txt */
2
- !function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("@tsparticles/engine"),require("@tsparticles/move-base"),require("@tsparticles/shape-circle"),require("@tsparticles/updater-color"),require("@tsparticles/plugin-hex-color"),require("@tsparticles/plugin-hsl-color"),require("@tsparticles/updater-opacity"),require("@tsparticles/updater-out-modes"),require("@tsparticles/plugin-rgb-color"),require("@tsparticles/updater-size"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine","@tsparticles/move-base","@tsparticles/shape-circle","@tsparticles/updater-color","@tsparticles/plugin-hex-color","@tsparticles/plugin-hsl-color","@tsparticles/updater-opacity","@tsparticles/updater-out-modes","@tsparticles/plugin-rgb-color","@tsparticles/updater-size"],r);else{var t="object"==typeof exports?r(require("@tsparticles/engine"),require("@tsparticles/move-base"),require("@tsparticles/shape-circle"),require("@tsparticles/updater-color"),require("@tsparticles/plugin-hex-color"),require("@tsparticles/plugin-hsl-color"),require("@tsparticles/updater-opacity"),require("@tsparticles/updater-out-modes"),require("@tsparticles/plugin-rgb-color"),require("@tsparticles/updater-size")):r(e.window,e.window,e.window,e.window,e.window,e.window,e.window,e.window,e.window,e.window);for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(this,((e,r,t,o,i,a,s,p,l,c)=>(()=>{var u={303:r=>{r.exports=e},522:e=>{e.exports=r},126:e=>{e.exports=i},308:e=>{e.exports=a},872:e=>{e.exports=l},969:e=>{e.exports=t},116:e=>{e.exports=o},898:e=>{e.exports=s},694:e=>{e.exports=p},394:e=>{e.exports=c}},d={};function n(e){var r=d[e];if(void 0!==r)return r.exports;var t=d[e]={exports:{}};return u[e](t,t.exports,n),t.exports}n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var w={};n.r(w),n.d(w,{loadBasic:()=>O});var f=n(303),g=n(522),x=n(969),q=n(116),b=n(126),y=n(308),v=n(898),h=n(694),m=n(872),j=n(394);async function O(e,r=!0){(0,f.assertValidVersion)(e,"3.7.0"),await(0,b.loadHexColorPlugin)(e,!1),await(0,y.loadHslColorPlugin)(e,!1),await(0,m.loadRgbColorPlugin)(e,!1),await(0,g.loadBaseMover)(e,!1),await(0,x.loadCircleShape)(e,!1),await(0,q.loadColorUpdater)(e,!1),await(0,v.loadOpacityUpdater)(e,!1),await(0,h.loadOutModesUpdater)(e,!1),await(0,j.loadSizeUpdater)(e,!1),await e.refresh(r)}return w})()));
2
+ !function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("@tsparticles/engine"),require("@tsparticles/move-base"),require("@tsparticles/shape-circle"),require("@tsparticles/updater-color"),require("@tsparticles/plugin-hex-color"),require("@tsparticles/plugin-hsl-color"),require("@tsparticles/updater-opacity"),require("@tsparticles/updater-out-modes"),require("@tsparticles/plugin-rgb-color"),require("@tsparticles/updater-size"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine","@tsparticles/move-base","@tsparticles/shape-circle","@tsparticles/updater-color","@tsparticles/plugin-hex-color","@tsparticles/plugin-hsl-color","@tsparticles/updater-opacity","@tsparticles/updater-out-modes","@tsparticles/plugin-rgb-color","@tsparticles/updater-size"],r);else{var t="object"==typeof exports?r(require("@tsparticles/engine"),require("@tsparticles/move-base"),require("@tsparticles/shape-circle"),require("@tsparticles/updater-color"),require("@tsparticles/plugin-hex-color"),require("@tsparticles/plugin-hsl-color"),require("@tsparticles/updater-opacity"),require("@tsparticles/updater-out-modes"),require("@tsparticles/plugin-rgb-color"),require("@tsparticles/updater-size")):r(e.window,e.window,e.window,e.window,e.window,e.window,e.window,e.window,e.window,e.window);for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(this,((e,r,t,o,i,a,s,p,l,c)=>(()=>{var u={303:r=>{r.exports=e},522:e=>{e.exports=r},126:e=>{e.exports=i},308:e=>{e.exports=a},872:e=>{e.exports=l},969:e=>{e.exports=t},116:e=>{e.exports=o},898:e=>{e.exports=s},694:e=>{e.exports=p},394:e=>{e.exports=c}},d={};function n(e){var r=d[e];if(void 0!==r)return r.exports;var t=d[e]={exports:{}};return u[e](t,t.exports,n),t.exports}n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var w={};n.r(w),n.d(w,{loadBasic:()=>O});var f=n(303),g=n(522),x=n(969),q=n(116),b=n(126),y=n(308),v=n(898),h=n(694),m=n(872),j=n(394);async function O(e,r=!0){(0,f.assertValidVersion)(e,"3.7.1"),await(0,b.loadHexColorPlugin)(e,!1),await(0,y.loadHslColorPlugin)(e,!1),await(0,m.loadRgbColorPlugin)(e,!1),await(0,g.loadBaseMover)(e,!1),await(0,x.loadCircleShape)(e,!1),await(0,q.loadColorUpdater)(e,!1),await(0,v.loadOpacityUpdater)(e,!1),await(0,h.loadOutModesUpdater)(e,!1),await(0,j.loadSizeUpdater)(e,!1),await e.refresh(r)}return w})()));
@@ -1 +1 @@
1
- /*! tsParticles Basic v3.7.0 by Matteo Bruni */
1
+ /*! tsParticles Basic v3.7.1 by Matteo Bruni */
package/umd/index.js CHANGED
@@ -21,7 +21,7 @@
21
21
  const plugin_rgb_color_1 = require("@tsparticles/plugin-rgb-color");
22
22
  const updater_size_1 = require("@tsparticles/updater-size");
23
23
  async function loadBasic(engine, refresh = true) {
24
- (0, engine_1.assertValidVersion)(engine, "3.7.0");
24
+ (0, engine_1.assertValidVersion)(engine, "3.7.1");
25
25
  await (0, plugin_hex_color_1.loadHexColorPlugin)(engine, false);
26
26
  await (0, plugin_hsl_color_1.loadHslColorPlugin)(engine, false);
27
27
  await (0, plugin_rgb_color_1.loadRgbColorPlugin)(engine, false);