@tsparticles/engine 4.0.0-alpha.4 → 4.0.0-alpha.5

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.
@@ -1 +1 @@
1
- /*! tsParticles Engine v4.0.0-alpha.4 by Matteo Bruni */
1
+ /*! tsParticles Engine v4.0.0-alpha.5 by Matteo Bruni */
@@ -57,7 +57,10 @@ export class Engine {
57
57
  this._domArray = [];
58
58
  this._eventDispatcher = new EventDispatcher();
59
59
  this._initialized = false;
60
+ this._isRunningLoaders = false;
60
61
  this._loadPromises = new Set();
62
+ this._allLoadersSet = new Set();
63
+ this._executedSet = new Set();
61
64
  this.plugins = [];
62
65
  this.colorManagers = new Map();
63
66
  this.easingFunctions = new Map();
@@ -83,7 +86,7 @@ export class Engine {
83
86
  return this._domArray;
84
87
  }
85
88
  get version() {
86
- return "4.0.0-alpha.4";
89
+ return "4.0.0-alpha.5";
87
90
  }
88
91
  addColorManager(manager) {
89
92
  this.colorManagers.set(manager.key, manager);
@@ -184,40 +187,21 @@ export class Engine {
184
187
  return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);
185
188
  }
186
189
  async init() {
187
- if (this._initialized) {
190
+ if (this._initialized || this._isRunningLoaders)
188
191
  return;
189
- }
190
- const executed = new Set(), allLoaders = new Set(this._loadPromises), stack = [...allLoaders];
191
- while (stack.length) {
192
- const loader = stack.shift();
193
- if (!loader) {
194
- continue;
195
- }
196
- if (executed.has(loader)) {
197
- continue;
198
- }
199
- executed.add(loader);
200
- const inner = [], origRegister = this.register.bind(this);
201
- this.register = (...loaders) => {
202
- inner.push(...loaders);
203
- for (const loader of loaders) {
204
- allLoaders.add(loader);
205
- }
206
- };
207
- try {
208
- await loader(this);
192
+ this._isRunningLoaders = true;
193
+ this._executedSet = new Set();
194
+ this._allLoadersSet = new Set(this._loadPromises);
195
+ try {
196
+ for (const loader of this._allLoadersSet) {
197
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
209
198
  }
210
- finally {
211
- this.register = origRegister;
212
- }
213
- stack.unshift(...inner);
214
- this._loadPromises.delete(loader);
215
199
  }
216
- this._loadPromises.clear();
217
- for (const loader of allLoaders) {
218
- this._loadPromises.add(loader);
200
+ finally {
201
+ this._loadPromises.clear();
202
+ this._isRunningLoaders = false;
203
+ this._initialized = true;
219
204
  }
220
- this._initialized = true;
221
205
  }
222
206
  item(index) {
223
207
  const { items } = this, item = items[index];
@@ -229,7 +213,6 @@ export class Engine {
229
213
  }
230
214
  async load(params) {
231
215
  await this.init();
232
- this._loadPromises.clear();
233
216
  const { Container } = await import("./Container.js"), id = params.id ??
234
217
  params.element?.id ??
235
218
  `tsparticles${Math.floor(getRandom() * loadRandomFactor).toString()}`, { index, url } = params, options = url ? await getDataFromUrl({ fallback: params.options, url, index }) : params.options, currentOptions = itemFromSingleOrMultiple(options, index), { items } = this, oldIndex = items.findIndex(v => v.id.description === id), newItem = new Container(this, id, currentOptions);
@@ -261,15 +244,27 @@ export class Engine {
261
244
  }
262
245
  await Promise.all(this.items.map(t => t.refresh()));
263
246
  }
264
- register(...loadPromises) {
247
+ async register(...loaders) {
265
248
  if (this._initialized) {
266
- throw new Error(`Register plugins can only be done before calling tsParticles.load()`);
249
+ throw new Error("Register plugins can only be done before calling tsParticles.load()");
267
250
  }
268
- for (const loadPromise of loadPromises) {
269
- this._loadPromises.add(loadPromise);
251
+ for (const loader of loaders) {
252
+ if (this._isRunningLoaders) {
253
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
254
+ }
255
+ else {
256
+ this._loadPromises.add(loader);
257
+ }
270
258
  }
271
259
  }
272
260
  removeEventListener(type, listener) {
273
261
  this._eventDispatcher.removeEventListener(type, listener);
274
262
  }
263
+ async _runLoader(loader, executed, allLoaders) {
264
+ if (executed.has(loader))
265
+ return;
266
+ executed.add(loader);
267
+ allLoaders.add(loader);
268
+ await loader(this);
269
+ }
275
270
  }
@@ -98,11 +98,15 @@ export function deepExtend(destination, ...sources) {
98
98
  continue;
99
99
  }
100
100
  const sourceIsArray = Array.isArray(source);
101
- if (sourceIsArray && (isObject(destination) || !destination || !Array.isArray(destination))) {
102
- destination = [];
101
+ if (sourceIsArray) {
102
+ if (!Array.isArray(destination)) {
103
+ destination = [];
104
+ }
103
105
  }
104
- else if (!sourceIsArray && (isObject(destination) || !destination || Array.isArray(destination))) {
105
- destination = {};
106
+ else {
107
+ if (!isObject(destination) || Array.isArray(destination)) {
108
+ destination = {};
109
+ }
106
110
  }
107
111
  for (const key in source) {
108
112
  if (key === "__proto__") {
@@ -57,7 +57,10 @@ export class Engine {
57
57
  this._domArray = [];
58
58
  this._eventDispatcher = new EventDispatcher();
59
59
  this._initialized = false;
60
+ this._isRunningLoaders = false;
60
61
  this._loadPromises = new Set();
62
+ this._allLoadersSet = new Set();
63
+ this._executedSet = new Set();
61
64
  this.plugins = [];
62
65
  this.colorManagers = new Map();
63
66
  this.easingFunctions = new Map();
@@ -83,7 +86,7 @@ export class Engine {
83
86
  return this._domArray;
84
87
  }
85
88
  get version() {
86
- return "4.0.0-alpha.4";
89
+ return "4.0.0-alpha.5";
87
90
  }
88
91
  addColorManager(manager) {
89
92
  this.colorManagers.set(manager.key, manager);
@@ -184,40 +187,21 @@ export class Engine {
184
187
  return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);
185
188
  }
186
189
  async init() {
187
- if (this._initialized) {
190
+ if (this._initialized || this._isRunningLoaders)
188
191
  return;
189
- }
190
- const executed = new Set(), allLoaders = new Set(this._loadPromises), stack = [...allLoaders];
191
- while (stack.length) {
192
- const loader = stack.shift();
193
- if (!loader) {
194
- continue;
195
- }
196
- if (executed.has(loader)) {
197
- continue;
198
- }
199
- executed.add(loader);
200
- const inner = [], origRegister = this.register.bind(this);
201
- this.register = (...loaders) => {
202
- inner.push(...loaders);
203
- for (const loader of loaders) {
204
- allLoaders.add(loader);
205
- }
206
- };
207
- try {
208
- await loader(this);
192
+ this._isRunningLoaders = true;
193
+ this._executedSet = new Set();
194
+ this._allLoadersSet = new Set(this._loadPromises);
195
+ try {
196
+ for (const loader of this._allLoadersSet) {
197
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
209
198
  }
210
- finally {
211
- this.register = origRegister;
212
- }
213
- stack.unshift(...inner);
214
- this._loadPromises.delete(loader);
215
199
  }
216
- this._loadPromises.clear();
217
- for (const loader of allLoaders) {
218
- this._loadPromises.add(loader);
200
+ finally {
201
+ this._loadPromises.clear();
202
+ this._isRunningLoaders = false;
203
+ this._initialized = true;
219
204
  }
220
- this._initialized = true;
221
205
  }
222
206
  item(index) {
223
207
  const { items } = this, item = items[index];
@@ -229,7 +213,6 @@ export class Engine {
229
213
  }
230
214
  async load(params) {
231
215
  await this.init();
232
- this._loadPromises.clear();
233
216
  const { Container } = await import("./Container.js"), id = params.id ??
234
217
  params.element?.id ??
235
218
  `tsparticles${Math.floor(getRandom() * loadRandomFactor).toString()}`, { index, url } = params, options = url ? await getDataFromUrl({ fallback: params.options, url, index }) : params.options, currentOptions = itemFromSingleOrMultiple(options, index), { items } = this, oldIndex = items.findIndex(v => v.id.description === id), newItem = new Container(this, id, currentOptions);
@@ -261,15 +244,27 @@ export class Engine {
261
244
  }
262
245
  await Promise.all(this.items.map(t => t.refresh()));
263
246
  }
264
- register(...loadPromises) {
247
+ async register(...loaders) {
265
248
  if (this._initialized) {
266
- throw new Error(`Register plugins can only be done before calling tsParticles.load()`);
249
+ throw new Error("Register plugins can only be done before calling tsParticles.load()");
267
250
  }
268
- for (const loadPromise of loadPromises) {
269
- this._loadPromises.add(loadPromise);
251
+ for (const loader of loaders) {
252
+ if (this._isRunningLoaders) {
253
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
254
+ }
255
+ else {
256
+ this._loadPromises.add(loader);
257
+ }
270
258
  }
271
259
  }
272
260
  removeEventListener(type, listener) {
273
261
  this._eventDispatcher.removeEventListener(type, listener);
274
262
  }
263
+ async _runLoader(loader, executed, allLoaders) {
264
+ if (executed.has(loader))
265
+ return;
266
+ executed.add(loader);
267
+ allLoaders.add(loader);
268
+ await loader(this);
269
+ }
275
270
  }
@@ -98,11 +98,15 @@ export function deepExtend(destination, ...sources) {
98
98
  continue;
99
99
  }
100
100
  const sourceIsArray = Array.isArray(source);
101
- if (sourceIsArray && (isObject(destination) || !destination || !Array.isArray(destination))) {
102
- destination = [];
101
+ if (sourceIsArray) {
102
+ if (!Array.isArray(destination)) {
103
+ destination = [];
104
+ }
103
105
  }
104
- else if (!sourceIsArray && (isObject(destination) || !destination || Array.isArray(destination))) {
105
- destination = {};
106
+ else {
107
+ if (!isObject(destination) || Array.isArray(destination)) {
108
+ destination = {};
109
+ }
106
110
  }
107
111
  for (const key in source) {
108
112
  if (key === "__proto__") {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * tsParticles Engine v4.0.0-alpha.4
2
+ * tsParticles Engine v4.0.0-alpha.5
3
3
  * Author: Matteo Bruni
4
4
  * MIT license: https://opensource.org/licenses/MIT
5
5
  * Website: https://particles.js.org/
@@ -57,7 +57,10 @@ export class Engine {
57
57
  this._domArray = [];
58
58
  this._eventDispatcher = new EventDispatcher();
59
59
  this._initialized = false;
60
+ this._isRunningLoaders = false;
60
61
  this._loadPromises = new Set();
62
+ this._allLoadersSet = new Set();
63
+ this._executedSet = new Set();
61
64
  this.plugins = [];
62
65
  this.colorManagers = new Map();
63
66
  this.easingFunctions = new Map();
@@ -83,7 +86,7 @@ export class Engine {
83
86
  return this._domArray;
84
87
  }
85
88
  get version() {
86
- return "4.0.0-alpha.4";
89
+ return "4.0.0-alpha.5";
87
90
  }
88
91
  addColorManager(manager) {
89
92
  this.colorManagers.set(manager.key, manager);
@@ -184,40 +187,21 @@ export class Engine {
184
187
  return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);
185
188
  }
186
189
  async init() {
187
- if (this._initialized) {
190
+ if (this._initialized || this._isRunningLoaders)
188
191
  return;
189
- }
190
- const executed = new Set(), allLoaders = new Set(this._loadPromises), stack = [...allLoaders];
191
- while (stack.length) {
192
- const loader = stack.shift();
193
- if (!loader) {
194
- continue;
195
- }
196
- if (executed.has(loader)) {
197
- continue;
198
- }
199
- executed.add(loader);
200
- const inner = [], origRegister = this.register.bind(this);
201
- this.register = (...loaders) => {
202
- inner.push(...loaders);
203
- for (const loader of loaders) {
204
- allLoaders.add(loader);
205
- }
206
- };
207
- try {
208
- await loader(this);
192
+ this._isRunningLoaders = true;
193
+ this._executedSet = new Set();
194
+ this._allLoadersSet = new Set(this._loadPromises);
195
+ try {
196
+ for (const loader of this._allLoadersSet) {
197
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
209
198
  }
210
- finally {
211
- this.register = origRegister;
212
- }
213
- stack.unshift(...inner);
214
- this._loadPromises.delete(loader);
215
199
  }
216
- this._loadPromises.clear();
217
- for (const loader of allLoaders) {
218
- this._loadPromises.add(loader);
200
+ finally {
201
+ this._loadPromises.clear();
202
+ this._isRunningLoaders = false;
203
+ this._initialized = true;
219
204
  }
220
- this._initialized = true;
221
205
  }
222
206
  item(index) {
223
207
  const { items } = this, item = items[index];
@@ -229,7 +213,6 @@ export class Engine {
229
213
  }
230
214
  async load(params) {
231
215
  await this.init();
232
- this._loadPromises.clear();
233
216
  const { Container } = await import("./Container.js"), id = params.id ??
234
217
  params.element?.id ??
235
218
  `tsparticles${Math.floor(getRandom() * loadRandomFactor).toString()}`, { index, url } = params, options = url ? await getDataFromUrl({ fallback: params.options, url, index }) : params.options, currentOptions = itemFromSingleOrMultiple(options, index), { items } = this, oldIndex = items.findIndex(v => v.id.description === id), newItem = new Container(this, id, currentOptions);
@@ -261,15 +244,27 @@ export class Engine {
261
244
  }
262
245
  await Promise.all(this.items.map(t => t.refresh()));
263
246
  }
264
- register(...loadPromises) {
247
+ async register(...loaders) {
265
248
  if (this._initialized) {
266
- throw new Error(`Register plugins can only be done before calling tsParticles.load()`);
249
+ throw new Error("Register plugins can only be done before calling tsParticles.load()");
267
250
  }
268
- for (const loadPromise of loadPromises) {
269
- this._loadPromises.add(loadPromise);
251
+ for (const loader of loaders) {
252
+ if (this._isRunningLoaders) {
253
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
254
+ }
255
+ else {
256
+ this._loadPromises.add(loader);
257
+ }
270
258
  }
271
259
  }
272
260
  removeEventListener(type, listener) {
273
261
  this._eventDispatcher.removeEventListener(type, listener);
274
262
  }
263
+ async _runLoader(loader, executed, allLoaders) {
264
+ if (executed.has(loader))
265
+ return;
266
+ executed.add(loader);
267
+ allLoaders.add(loader);
268
+ await loader(this);
269
+ }
275
270
  }
@@ -98,11 +98,15 @@ export function deepExtend(destination, ...sources) {
98
98
  continue;
99
99
  }
100
100
  const sourceIsArray = Array.isArray(source);
101
- if (sourceIsArray && (isObject(destination) || !destination || !Array.isArray(destination))) {
102
- destination = [];
101
+ if (sourceIsArray) {
102
+ if (!Array.isArray(destination)) {
103
+ destination = [];
104
+ }
103
105
  }
104
- else if (!sourceIsArray && (isObject(destination) || !destination || Array.isArray(destination))) {
105
- destination = {};
106
+ else {
107
+ if (!isObject(destination) || Array.isArray(destination)) {
108
+ destination = {};
109
+ }
106
110
  }
107
111
  for (const key in source) {
108
112
  if (key === "__proto__") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/engine",
3
- "version": "4.0.0-alpha.4",
3
+ "version": "4.0.0-alpha.5",
4
4
  "description": "Easily create highly customizable particle, confetti and fireworks 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
  "scripts": {
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/engine [21 Jan 2026 at 14:27]</title>
6
+ <title>@tsparticles/engine [21 Jan 2026 at 18:49]</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>
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * tsParticles Engine v4.0.0-alpha.4
2
+ * tsParticles Engine v4.0.0-alpha.5
3
3
  * Author: Matteo Bruni
4
4
  * MIT license: https://opensource.org/licenses/MIT
5
5
  * Website: https://particles.js.org/
@@ -36,7 +36,7 @@ return /******/ (() => { // webpackBootstrap
36
36
  \*************************************/
37
37
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
38
38
 
39
- 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 */ \"./dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"./dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Utils/EventDispatcher.js */ \"./dist/browser/Utils/EventDispatcher.js\");\n/* harmony import */ var _Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Enums/Types/EventType.js */ \"./dist/browser/Enums/Types/EventType.js\");\n/* harmony import */ var _Utils_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Utils/LogUtils.js */ \"./dist/browser/Utils/LogUtils.js\");\n/* harmony import */ var _Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Utils/MathUtils.js */ \"./dist/browser/Utils/MathUtils.js\");\n\n\n\n\n\n\nconst fullPercent = \"100%\";\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_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__.getLogger)().error(`${response.status.toString()} while retrieving config file`);\n return data.fallback;\n}\nconst getCanvasFromContainer = domContainer => {\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let canvasEl;\n if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag) {\n canvasEl = domContainer;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] ??= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n const existingCanvases = domContainer.getElementsByTagName(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag),\n foundCanvas = existingCanvases[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasFirstIndex];\n if (foundCanvas) {\n canvasEl = foundCanvas;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n canvasEl = documentSafe.createElement(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag);\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n domContainer.appendChild(canvasEl);\n }\n }\n canvasEl.style.width ||= fullPercent;\n canvasEl.style.height ||= fullPercent;\n return canvasEl;\n },\n getDomContainer = (id, source) => {\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let domContainer = source ?? documentSafe.getElementById(id);\n if (domContainer) {\n return domContainer;\n }\n domContainer = documentSafe.createElement(\"div\");\n domContainer.id = id;\n domContainer.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n documentSafe.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_2__.EventDispatcher();\n this._initialized = false;\n this._loadPromises = new Set();\n this.plugins = [];\n this.colorManagers = new Map();\n this.easingFunctions = new Map();\n this._initializers = {\n movers: new Map(),\n updaters: new Map()\n };\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 \"4.0.0-alpha.4\";\n }\n addColorManager(manager) {\n this.colorManagers.set(manager.key, manager);\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_3__.EventType.configAdded, {\n data: {\n name: key,\n config\n }\n });\n }\n addEasing(name, easing) {\n if (this.easingFunctions.get(name)) {\n return;\n }\n this.easingFunctions.set(name, easing);\n }\n addEffect(effect, drawer) {\n if (this.getEffectDrawer(effect)) {\n return;\n }\n this.effectDrawers.set(effect, drawer);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n addMover(name, moverInitializer) {\n this._initializers.movers.set(name, moverInitializer);\n }\n addParticleUpdater(name, updaterInitializer) {\n this._initializers.updaters.set(name, updaterInitializer);\n }\n addPathGenerator(name, generator) {\n if (this.getPathGenerator(name)) {\n return;\n }\n this.pathGenerators.set(name, generator);\n }\n addPlugin(plugin) {\n if (this.getPlugin(plugin.id)) {\n return;\n }\n this.plugins.push(plugin);\n }\n addPreset(preset, options, override = false) {\n if (!(override || !this.getPreset(preset))) {\n return;\n }\n this.presets.set(preset, options);\n }\n addShape(drawer) {\n for (const validType of drawer.validTypes) {\n if (this.getShapeDrawer(validType)) {\n continue;\n }\n this.shapeDrawers.set(validType, drawer);\n }\n }\n checkVersion(pluginVersion) {\n if (this.version === pluginVersion) {\n return;\n }\n throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${this.version}. Plugin version: ${pluginVersion}`);\n }\n clearPlugins(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\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 getMovers(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.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 (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemsFromInitializer)(container, this.updaters, this._initializers.updaters, force);\n }\n async init() {\n if (this._initialized) {\n return;\n }\n const executed = new Set(),\n allLoaders = new Set(this._loadPromises),\n stack = [...allLoaders];\n while (stack.length) {\n const loader = stack.shift();\n if (!loader) {\n continue;\n }\n if (executed.has(loader)) {\n continue;\n }\n executed.add(loader);\n const inner = [],\n origRegister = this.register.bind(this);\n this.register = (...loaders) => {\n inner.push(...loaders);\n for (const loader of loaders) {\n allLoaders.add(loader);\n }\n };\n try {\n await loader(this);\n } finally {\n this.register = origRegister;\n }\n stack.unshift(...inner);\n this._loadPromises.delete(loader);\n }\n this._loadPromises.clear();\n for (const loader of allLoaders) {\n this._loadPromises.add(loader);\n }\n this._initialized = true;\n }\n item(index) {\n const {\n items\n } = this,\n item = items[index];\n if (item?.destroyed) {\n items.splice(index, _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.removeDeleteCount);\n return;\n }\n return item;\n }\n async load(params) {\n await this.init();\n this._loadPromises.clear();\n const {\n Container\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Core_Container_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Container.js */ \"./dist/browser/Core/Container.js\")),\n id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__.getRandom)() * _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadRandomFactor).toString()}`,\n {\n index,\n url\n } = params,\n options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options,\n 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 newItem = new Container(this, id, currentOptions);\n if (oldIndex >= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadMinIndex) {\n const old = this.item(oldIndex),\n deleteCount = old ? _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.one : _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.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 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 register(...loadPromises) {\n if (this._initialized) {\n throw new Error(`Register plugins can only be done before calling tsParticles.load()`);\n }\n for (const loadPromise of loadPromises) {\n this._loadPromises.add(loadPromise);\n }\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n}\n\n//# sourceURL=webpack://@tsparticles/engine/./dist/browser/Core/Engine.js?\n}");
39
+ 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 */ \"./dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils/Utils.js */ \"./dist/browser/Utils/Utils.js\");\n/* harmony import */ var _Utils_EventDispatcher_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Utils/EventDispatcher.js */ \"./dist/browser/Utils/EventDispatcher.js\");\n/* harmony import */ var _Enums_Types_EventType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Enums/Types/EventType.js */ \"./dist/browser/Enums/Types/EventType.js\");\n/* harmony import */ var _Utils_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Utils/LogUtils.js */ \"./dist/browser/Utils/LogUtils.js\");\n/* harmony import */ var _Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Utils/MathUtils.js */ \"./dist/browser/Utils/MathUtils.js\");\n\n\n\n\n\n\nconst fullPercent = \"100%\";\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_LogUtils_js__WEBPACK_IMPORTED_MODULE_4__.getLogger)().error(`${response.status.toString()} while retrieving config file`);\n return data.fallback;\n}\nconst getCanvasFromContainer = domContainer => {\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let canvasEl;\n if (domContainer instanceof HTMLCanvasElement || domContainer.tagName.toLowerCase() === _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag) {\n canvasEl = domContainer;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] ??= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n const existingCanvases = domContainer.getElementsByTagName(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag),\n foundCanvas = existingCanvases[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasFirstIndex];\n if (foundCanvas) {\n canvasEl = foundCanvas;\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedFalse;\n } else {\n canvasEl = documentSafe.createElement(_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.canvasTag);\n canvasEl.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n domContainer.appendChild(canvasEl);\n }\n }\n canvasEl.style.width ||= fullPercent;\n canvasEl.style.height ||= fullPercent;\n return canvasEl;\n },\n getDomContainer = (id, source) => {\n const documentSafe = (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.safeDocument)();\n let domContainer = source ?? documentSafe.getElementById(id);\n if (domContainer) {\n return domContainer;\n }\n domContainer = documentSafe.createElement(\"div\");\n domContainer.id = id;\n domContainer.dataset[_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedAttribute] = _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.generatedTrue;\n documentSafe.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_2__.EventDispatcher();\n this._initialized = false;\n this._isRunningLoaders = false;\n this._loadPromises = new Set();\n this._allLoadersSet = new Set();\n this._executedSet = new Set();\n this.plugins = [];\n this.colorManagers = new Map();\n this.easingFunctions = new Map();\n this._initializers = {\n movers: new Map(),\n updaters: new Map()\n };\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 \"4.0.0-alpha.5\";\n }\n addColorManager(manager) {\n this.colorManagers.set(manager.key, manager);\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_3__.EventType.configAdded, {\n data: {\n name: key,\n config\n }\n });\n }\n addEasing(name, easing) {\n if (this.easingFunctions.get(name)) {\n return;\n }\n this.easingFunctions.set(name, easing);\n }\n addEffect(effect, drawer) {\n if (this.getEffectDrawer(effect)) {\n return;\n }\n this.effectDrawers.set(effect, drawer);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n addMover(name, moverInitializer) {\n this._initializers.movers.set(name, moverInitializer);\n }\n addParticleUpdater(name, updaterInitializer) {\n this._initializers.updaters.set(name, updaterInitializer);\n }\n addPathGenerator(name, generator) {\n if (this.getPathGenerator(name)) {\n return;\n }\n this.pathGenerators.set(name, generator);\n }\n addPlugin(plugin) {\n if (this.getPlugin(plugin.id)) {\n return;\n }\n this.plugins.push(plugin);\n }\n addPreset(preset, options, override = false) {\n if (!(override || !this.getPreset(preset))) {\n return;\n }\n this.presets.set(preset, options);\n }\n addShape(drawer) {\n for (const validType of drawer.validTypes) {\n if (this.getShapeDrawer(validType)) {\n continue;\n }\n this.shapeDrawers.set(validType, drawer);\n }\n }\n checkVersion(pluginVersion) {\n if (this.version === pluginVersion) {\n return;\n }\n throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${this.version}. Plugin version: ${pluginVersion}`);\n }\n clearPlugins(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\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 getMovers(container, force = false) {\n return (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.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 (0,_Utils_Utils_js__WEBPACK_IMPORTED_MODULE_1__.getItemsFromInitializer)(container, this.updaters, this._initializers.updaters, force);\n }\n async init() {\n if (this._initialized || this._isRunningLoaders) return;\n this._isRunningLoaders = true;\n this._executedSet = new Set();\n this._allLoadersSet = new Set(this._loadPromises);\n try {\n for (const loader of this._allLoadersSet) {\n await this._runLoader(loader, this._executedSet, this._allLoadersSet);\n }\n } finally {\n this._loadPromises.clear();\n this._isRunningLoaders = false;\n this._initialized = true;\n }\n }\n item(index) {\n const {\n items\n } = this,\n item = items[index];\n if (item?.destroyed) {\n items.splice(index, _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.removeDeleteCount);\n return;\n }\n return item;\n }\n async load(params) {\n await this.init();\n const {\n Container\n } = await __webpack_require__.e(/*! import() */ \"dist_browser_Core_Container_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./Container.js */ \"./dist/browser/Core/Container.js\")),\n id = params.id ?? params.element?.id ?? `tsparticles${Math.floor((0,_Utils_MathUtils_js__WEBPACK_IMPORTED_MODULE_5__.getRandom)() * _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadRandomFactor).toString()}`,\n {\n index,\n url\n } = params,\n options = url ? await getDataFromUrl({\n fallback: params.options,\n url,\n index\n }) : params.options,\n 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 newItem = new Container(this, id, currentOptions);\n if (oldIndex >= _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.loadMinIndex) {\n const old = this.item(oldIndex),\n deleteCount = old ? _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.one : _Utils_Constants_js__WEBPACK_IMPORTED_MODULE_0__.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 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 async register(...loaders) {\n if (this._initialized) {\n throw new Error(\"Register plugins can only be done before calling tsParticles.load()\");\n }\n for (const loader of loaders) {\n if (this._isRunningLoaders) {\n await this._runLoader(loader, this._executedSet, this._allLoadersSet);\n } else {\n this._loadPromises.add(loader);\n }\n }\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n async _runLoader(loader, executed, allLoaders) {\n if (executed.has(loader)) return;\n executed.add(loader);\n allLoaders.add(loader);\n await loader(this);\n }\n}\n\n//# sourceURL=webpack://@tsparticles/engine/./dist/browser/Core/Engine.js?\n}");
40
40
 
41
41
  /***/ },
42
42
 
@@ -636,7 +636,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
636
636
  \*************************************/
637
637
  (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
638
638
 
639
- eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ areBoundsInside: () => (/* binding */ areBoundsInside),\n/* harmony export */ arrayRandomIndex: () => (/* binding */ arrayRandomIndex),\n/* harmony export */ calculateBounds: () => (/* binding */ calculateBounds),\n/* harmony export */ circleBounce: () => (/* binding */ circleBounce),\n/* harmony export */ circleBounceDataFromParticle: () => (/* binding */ circleBounceDataFromParticle),\n/* harmony export */ cloneStyle: () => (/* binding */ cloneStyle),\n/* harmony export */ deepExtend: () => (/* binding */ deepExtend),\n/* harmony export */ executeOnSingleOrMultiple: () => (/* binding */ executeOnSingleOrMultiple),\n/* harmony export */ findItemFromSingleOrMultiple: () => (/* binding */ findItemFromSingleOrMultiple),\n/* harmony export */ getFullScreenStyle: () => (/* binding */ getFullScreenStyle),\n/* harmony export */ getItemsFromInitializer: () => (/* binding */ getItemsFromInitializer),\n/* harmony export */ getPosition: () => (/* binding */ getPosition),\n/* harmony export */ getSize: () => (/* binding */ getSize),\n/* harmony export */ hasMatchMedia: () => (/* binding */ hasMatchMedia),\n/* harmony export */ initParticleNumericAnimationValue: () => (/* binding */ initParticleNumericAnimationValue),\n/* harmony export */ isInArray: () => (/* binding */ isInArray),\n/* harmony export */ isPointInside: () => (/* binding */ isPointInside),\n/* harmony export */ itemFromArray: () => (/* binding */ itemFromArray),\n/* harmony export */ itemFromSingleOrMultiple: () => (/* binding */ itemFromSingleOrMultiple),\n/* harmony export */ loadFont: () => (/* binding */ loadFont),\n/* harmony export */ manageListener: () => (/* binding */ manageListener),\n/* harmony export */ safeDocument: () => (/* binding */ safeDocument),\n/* harmony export */ safeIntersectionObserver: () => (/* binding */ safeIntersectionObserver),\n/* harmony export */ safeMatchMedia: () => (/* binding */ safeMatchMedia),\n/* harmony export */ safeMutationObserver: () => (/* binding */ safeMutationObserver),\n/* harmony export */ updateAnimation: () => (/* binding */ updateAnimation)\n/* harmony export */ });\n/* harmony import */ var _MathUtils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MathUtils.js */ \"./dist/browser/Utils/MathUtils.js\");\n/* harmony import */ var _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Core/Utils/Constants.js */ \"./dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TypeUtils.js */ \"./dist/browser/Utils/TypeUtils.js\");\n/* harmony import */ var _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Enums/Modes/AnimationMode.js */ \"./dist/browser/Enums/Modes/AnimationMode.js\");\n/* harmony import */ var _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Enums/AnimationStatus.js */ \"./dist/browser/Enums/AnimationStatus.js\");\n/* harmony import */ var _Enums_Types_DestroyType_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Enums/Types/DestroyType.js */ \"./dist/browser/Enums/Types/DestroyType.js\");\n/* harmony import */ var _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Enums/Directions/OutModeDirection.js */ \"./dist/browser/Enums/Directions/OutModeDirection.js\");\n/* harmony import */ var _Enums_Modes_PixelMode_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Enums/Modes/PixelMode.js */ \"./dist/browser/Enums/Modes/PixelMode.js\");\n/* harmony import */ var _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Enums/Types/StartValueType.js */ \"./dist/browser/Enums/Types/StartValueType.js\");\n/* harmony import */ var _Core_Utils_Vectors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Core/Utils/Vectors.js */ \"./dist/browser/Core/Utils/Vectors.js\");\n\n\n\n\n\n\n\n\n\n\nconst minRadius = 0;\nfunction memoize(fn) {\n const cache = new Map();\n return (...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\nfunction hasMatchMedia() {\n return typeof matchMedia !== \"undefined\";\n}\nfunction safeDocument() {\n return globalThis.document;\n}\nfunction safeMatchMedia(query) {\n if (!hasMatchMedia()) {\n return;\n }\n return matchMedia(query);\n}\nfunction safeIntersectionObserver(callback) {\n if (typeof IntersectionObserver === \"undefined\") {\n return;\n }\n return new IntersectionObserver(callback);\n}\nfunction safeMutationObserver(callback) {\n if (typeof MutationObserver === \"undefined\") {\n return;\n }\n return new MutationObserver(callback);\n}\nfunction isInArray(value, array) {\n return value === array || (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(array) && array.includes(value);\n}\nasync function loadFont(font, weight) {\n try {\n await safeDocument().fonts.load(`${weight ?? \"400\"} 36px '${font ?? \"Verdana\"}'`);\n } catch {}\n}\nfunction arrayRandomIndex(array) {\n return Math.floor((0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * array.length);\n}\nfunction itemFromArray(array, index, useIndex = true) {\n return array[index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array)];\n}\nfunction isPointInside(point, size, offset, radius, direction) {\n return areBoundsInside(calculateBounds(point, radius ?? minRadius), size, offset, direction);\n}\nfunction areBoundsInside(bounds, size, offset, direction) {\n let inside = true;\n if (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.bottom) {\n inside = bounds.top < size.height + offset.x;\n }\n if (inside && (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.left)) {\n inside = bounds.right > offset.x;\n }\n if (inside && (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.right)) {\n inside = bounds.left < size.width + offset.y;\n }\n if (inside && (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.top)) {\n inside = bounds.bottom > offset.y;\n }\n return inside;\n}\nfunction calculateBounds(point, radius) {\n return {\n bottom: point.y + radius,\n left: point.x - radius,\n right: point.x + radius,\n top: point.y - radius\n };\n}\nfunction deepExtend(destination, ...sources) {\n for (const source of sources) {\n if (source === undefined || source === null) {\n continue;\n }\n if (!(0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isObject)(source)) {\n destination = source;\n continue;\n }\n const sourceIsArray = Array.isArray(source);\n if (sourceIsArray && ((0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isObject)(destination) || !destination || !Array.isArray(destination))) {\n destination = [];\n } else if (!sourceIsArray && ((0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isObject)(destination) || !destination || Array.isArray(destination))) {\n destination = {};\n }\n for (const key in source) {\n if (key === \"__proto__\") {\n continue;\n }\n const sourceDict = source,\n value = sourceDict[key],\n destDict = destination;\n destDict[key] = (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isObject)(value) && Array.isArray(value) ? value.map(v => deepExtend(destDict[key], v)) : deepExtend(destDict[key], value);\n }\n }\n return destination;\n}\nfunction circleBounceDataFromParticle(p) {\n return {\n position: p.getPosition(),\n radius: p.getRadius(),\n mass: p.getMass(),\n velocity: p.velocity,\n factor: _Core_Utils_Vectors_js__WEBPACK_IMPORTED_MODULE_9__.Vector.create((0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(p.options.bounce.horizontal.value), (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(p.options.bounce.vertical.value))\n };\n}\nfunction circleBounce(p1, p2) {\n const {\n x: xVelocityDiff,\n y: yVelocityDiff\n } = p1.velocity.sub(p2.velocity),\n [pos1, pos2] = [p1.position, p2.position],\n {\n dx: xDist,\n dy: yDist\n } = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getDistances)(pos2, pos1),\n minimumDistance = 0;\n if (xVelocityDiff * xDist + yVelocityDiff * yDist < minimumDistance) {\n return;\n }\n const angle = -Math.atan2(yDist, xDist),\n m1 = p1.mass,\n m2 = p2.mass,\n u1 = p1.velocity.rotate(angle),\n u2 = p2.velocity.rotate(angle),\n v1 = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.collisionVelocity)(u1, u2, m1, m2),\n v2 = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.collisionVelocity)(u2, u1, m1, m2),\n vFinal1 = v1.rotate(-angle),\n vFinal2 = v2.rotate(-angle);\n p1.velocity.x = vFinal1.x * p1.factor.x;\n p1.velocity.y = vFinal1.y * p1.factor.y;\n p2.velocity.x = vFinal2.x * p2.factor.x;\n p2.velocity.y = vFinal2.y * p2.factor.y;\n}\nfunction executeOnSingleOrMultiple(obj, callback) {\n const defaultIndex = 0;\n return (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(obj) ? obj.map((item, index) => callback(item, index)) : callback(obj, defaultIndex);\n}\nfunction itemFromSingleOrMultiple(obj, index, useIndex) {\n return (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(obj) ? itemFromArray(obj, index, useIndex) : obj;\n}\nfunction findItemFromSingleOrMultiple(obj, callback) {\n if ((0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(obj)) {\n return obj.find((t, index) => callback(t, index));\n }\n const defaultIndex = 0;\n return callback(obj, defaultIndex) ? obj : undefined;\n}\nfunction initParticleNumericAnimationValue(options, pxRatio) {\n const valueRange = options.value,\n animationOptions = options.animation,\n res = {\n delayTime: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(animationOptions.delay) * _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.millisecondsToSeconds,\n enable: animationOptions.enable,\n value: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.value) * pxRatio,\n max: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeMax)(valueRange) * pxRatio,\n min: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeMin)(valueRange) * pxRatio,\n loops: 0,\n maxLoops: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(animationOptions.count),\n time: 0\n },\n decayOffset = 1;\n if (animationOptions.enable) {\n res.decay = decayOffset - (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(animationOptions.decay);\n switch (animationOptions.mode) {\n case _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.increase:\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing;\n break;\n case _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.decrease:\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n break;\n case _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.random:\n res.status = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRandom)() >= _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.half ? _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing : _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n break;\n }\n const autoStatus = animationOptions.mode === _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.auto;\n switch (animationOptions.startValue) {\n case _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__.StartValueType.min:\n res.value = res.min;\n if (autoStatus) {\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing;\n }\n break;\n case _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__.StartValueType.max:\n res.value = res.max;\n if (autoStatus) {\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n }\n break;\n case _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__.StartValueType.random:\n default:\n res.value = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)(res);\n if (autoStatus) {\n res.status = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRandom)() >= _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.half ? _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing : _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n }\n break;\n }\n }\n res.initialValue = res.value;\n return res;\n}\nfunction getPositionOrSize(positionOrSize, canvasSize) {\n const isPercent = positionOrSize.mode === _Enums_Modes_PixelMode_js__WEBPACK_IMPORTED_MODULE_7__.PixelMode.percent;\n if (!isPercent) {\n const {\n mode: _,\n ...rest\n } = positionOrSize;\n return rest;\n }\n const isPosition = \"x\" in positionOrSize;\n if (isPosition) {\n return {\n x: positionOrSize.x / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.width,\n y: positionOrSize.y / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.height\n };\n } else {\n return {\n width: positionOrSize.width / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.width,\n height: positionOrSize.height / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.height\n };\n }\n}\nfunction getPosition(position, canvasSize) {\n return getPositionOrSize(position, canvasSize);\n}\nfunction getSize(size, canvasSize) {\n return getPositionOrSize(size, canvasSize);\n}\nfunction checkDestroy(particle, destroyType, value, minValue, maxValue) {\n switch (destroyType) {\n case _Enums_Types_DestroyType_js__WEBPACK_IMPORTED_MODULE_5__.DestroyType.max:\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case _Enums_Types_DestroyType_js__WEBPACK_IMPORTED_MODULE_5__.DestroyType.min:\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateAnimation(particle, data, changeDirection, destroyType, delta) {\n const minLoops = 0,\n minDelay = 0,\n identity = 1,\n minVelocity = 0,\n minDecay = 1;\n if (particle.destroyed || !data.enable || (data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops)) {\n return;\n }\n const velocity = (data.velocity ?? minVelocity) * delta.factor,\n minValue = data.min,\n maxValue = data.max,\n decay = data.decay ?? minDecay;\n data.time ??= 0;\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n data.time += delta.value;\n }\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n return;\n }\n switch (data.status) {\n case _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing:\n if (data.value >= maxValue) {\n if (changeDirection) {\n data.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n } else {\n data.value -= maxValue;\n }\n data.loops ??= minLoops;\n data.loops++;\n } else {\n data.value += velocity;\n }\n break;\n case _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing:\n if (data.value <= minValue) {\n if (changeDirection) {\n data.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing;\n } else {\n data.value += maxValue;\n }\n data.loops ??= minLoops;\n data.loops++;\n } else {\n data.value -= velocity;\n }\n }\n if (data.velocity && decay !== identity) {\n data.velocity *= decay;\n }\n checkDestroy(particle, destroyType, data.value, minValue, maxValue);\n data.value = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.clamp)(data.value, minValue, maxValue);\n}\nfunction cloneStyle(style) {\n const clonedStyle = safeDocument().createElement(\"div\").style;\n for (const key in style) {\n const styleKey = style[key];\n if (!Object.hasOwn(style, key) || (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isNull)(styleKey)) {\n continue;\n }\n const styleValue = style.getPropertyValue?.(styleKey);\n if (!styleValue) {\n continue;\n }\n const stylePriority = style.getPropertyPriority?.(styleKey);\n if (!stylePriority) {\n clonedStyle.setProperty(styleKey, styleValue);\n } else {\n clonedStyle.setProperty(styleKey, styleValue, stylePriority);\n }\n }\n return clonedStyle;\n}\nfunction computeFullScreenStyle(zIndex) {\n const fullScreenStyle = safeDocument().createElement(\"div\").style,\n radix = 10,\n style = {\n width: \"100%\",\n height: \"100%\",\n margin: \"0\",\n padding: \"0\",\n borderWidth: \"0\",\n position: \"fixed\",\n zIndex: zIndex.toString(radix),\n \"z-index\": zIndex.toString(radix),\n top: \"0\",\n left: \"0\"\n };\n for (const key in style) {\n const value = style[key];\n if (value === undefined) {\n continue;\n }\n fullScreenStyle.setProperty(key, value);\n }\n return fullScreenStyle;\n}\nconst getFullScreenStyle = memoize(computeFullScreenStyle);\nfunction manageListener(element, event, handler, add, options) {\n if (add) {\n let addOptions = {\n passive: true\n };\n if ((0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options)) {\n addOptions.capture = options;\n } else if (options !== undefined) {\n addOptions = options;\n }\n element.addEventListener(event, handler, addOptions);\n } else {\n const removeOptions = options;\n element.removeEventListener(event, handler, removeOptions);\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}\n\n//# sourceURL=webpack://@tsparticles/engine/./dist/browser/Utils/Utils.js?\n}");
639
+ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ areBoundsInside: () => (/* binding */ areBoundsInside),\n/* harmony export */ arrayRandomIndex: () => (/* binding */ arrayRandomIndex),\n/* harmony export */ calculateBounds: () => (/* binding */ calculateBounds),\n/* harmony export */ circleBounce: () => (/* binding */ circleBounce),\n/* harmony export */ circleBounceDataFromParticle: () => (/* binding */ circleBounceDataFromParticle),\n/* harmony export */ cloneStyle: () => (/* binding */ cloneStyle),\n/* harmony export */ deepExtend: () => (/* binding */ deepExtend),\n/* harmony export */ executeOnSingleOrMultiple: () => (/* binding */ executeOnSingleOrMultiple),\n/* harmony export */ findItemFromSingleOrMultiple: () => (/* binding */ findItemFromSingleOrMultiple),\n/* harmony export */ getFullScreenStyle: () => (/* binding */ getFullScreenStyle),\n/* harmony export */ getItemsFromInitializer: () => (/* binding */ getItemsFromInitializer),\n/* harmony export */ getPosition: () => (/* binding */ getPosition),\n/* harmony export */ getSize: () => (/* binding */ getSize),\n/* harmony export */ hasMatchMedia: () => (/* binding */ hasMatchMedia),\n/* harmony export */ initParticleNumericAnimationValue: () => (/* binding */ initParticleNumericAnimationValue),\n/* harmony export */ isInArray: () => (/* binding */ isInArray),\n/* harmony export */ isPointInside: () => (/* binding */ isPointInside),\n/* harmony export */ itemFromArray: () => (/* binding */ itemFromArray),\n/* harmony export */ itemFromSingleOrMultiple: () => (/* binding */ itemFromSingleOrMultiple),\n/* harmony export */ loadFont: () => (/* binding */ loadFont),\n/* harmony export */ manageListener: () => (/* binding */ manageListener),\n/* harmony export */ safeDocument: () => (/* binding */ safeDocument),\n/* harmony export */ safeIntersectionObserver: () => (/* binding */ safeIntersectionObserver),\n/* harmony export */ safeMatchMedia: () => (/* binding */ safeMatchMedia),\n/* harmony export */ safeMutationObserver: () => (/* binding */ safeMutationObserver),\n/* harmony export */ updateAnimation: () => (/* binding */ updateAnimation)\n/* harmony export */ });\n/* harmony import */ var _MathUtils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MathUtils.js */ \"./dist/browser/Utils/MathUtils.js\");\n/* harmony import */ var _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Core/Utils/Constants.js */ \"./dist/browser/Core/Utils/Constants.js\");\n/* harmony import */ var _TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TypeUtils.js */ \"./dist/browser/Utils/TypeUtils.js\");\n/* harmony import */ var _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Enums/Modes/AnimationMode.js */ \"./dist/browser/Enums/Modes/AnimationMode.js\");\n/* harmony import */ var _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Enums/AnimationStatus.js */ \"./dist/browser/Enums/AnimationStatus.js\");\n/* harmony import */ var _Enums_Types_DestroyType_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Enums/Types/DestroyType.js */ \"./dist/browser/Enums/Types/DestroyType.js\");\n/* harmony import */ var _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Enums/Directions/OutModeDirection.js */ \"./dist/browser/Enums/Directions/OutModeDirection.js\");\n/* harmony import */ var _Enums_Modes_PixelMode_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Enums/Modes/PixelMode.js */ \"./dist/browser/Enums/Modes/PixelMode.js\");\n/* harmony import */ var _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Enums/Types/StartValueType.js */ \"./dist/browser/Enums/Types/StartValueType.js\");\n/* harmony import */ var _Core_Utils_Vectors_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Core/Utils/Vectors.js */ \"./dist/browser/Core/Utils/Vectors.js\");\n\n\n\n\n\n\n\n\n\n\nconst minRadius = 0;\nfunction memoize(fn) {\n const cache = new Map();\n return (...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\nfunction hasMatchMedia() {\n return typeof matchMedia !== \"undefined\";\n}\nfunction safeDocument() {\n return globalThis.document;\n}\nfunction safeMatchMedia(query) {\n if (!hasMatchMedia()) {\n return;\n }\n return matchMedia(query);\n}\nfunction safeIntersectionObserver(callback) {\n if (typeof IntersectionObserver === \"undefined\") {\n return;\n }\n return new IntersectionObserver(callback);\n}\nfunction safeMutationObserver(callback) {\n if (typeof MutationObserver === \"undefined\") {\n return;\n }\n return new MutationObserver(callback);\n}\nfunction isInArray(value, array) {\n return value === array || (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(array) && array.includes(value);\n}\nasync function loadFont(font, weight) {\n try {\n await safeDocument().fonts.load(`${weight ?? \"400\"} 36px '${font ?? \"Verdana\"}'`);\n } catch {}\n}\nfunction arrayRandomIndex(array) {\n return Math.floor((0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRandom)() * array.length);\n}\nfunction itemFromArray(array, index, useIndex = true) {\n return array[index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array)];\n}\nfunction isPointInside(point, size, offset, radius, direction) {\n return areBoundsInside(calculateBounds(point, radius ?? minRadius), size, offset, direction);\n}\nfunction areBoundsInside(bounds, size, offset, direction) {\n let inside = true;\n if (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.bottom) {\n inside = bounds.top < size.height + offset.x;\n }\n if (inside && (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.left)) {\n inside = bounds.right > offset.x;\n }\n if (inside && (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.right)) {\n inside = bounds.left < size.width + offset.y;\n }\n if (inside && (!direction || direction === _Enums_Directions_OutModeDirection_js__WEBPACK_IMPORTED_MODULE_6__.OutModeDirection.top)) {\n inside = bounds.bottom > offset.y;\n }\n return inside;\n}\nfunction calculateBounds(point, radius) {\n return {\n bottom: point.y + radius,\n left: point.x - radius,\n right: point.x + radius,\n top: point.y - radius\n };\n}\nfunction deepExtend(destination, ...sources) {\n for (const source of sources) {\n if (source === undefined || source === null) {\n continue;\n }\n if (!(0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isObject)(source)) {\n destination = source;\n continue;\n }\n const sourceIsArray = Array.isArray(source);\n if (sourceIsArray) {\n if (!Array.isArray(destination)) {\n destination = [];\n }\n } else {\n if (!(0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isObject)(destination) || Array.isArray(destination)) {\n destination = {};\n }\n }\n for (const key in source) {\n if (key === \"__proto__\") {\n continue;\n }\n const sourceDict = source,\n value = sourceDict[key],\n destDict = destination;\n destDict[key] = (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isObject)(value) && Array.isArray(value) ? value.map(v => deepExtend(destDict[key], v)) : deepExtend(destDict[key], value);\n }\n }\n return destination;\n}\nfunction circleBounceDataFromParticle(p) {\n return {\n position: p.getPosition(),\n radius: p.getRadius(),\n mass: p.getMass(),\n velocity: p.velocity,\n factor: _Core_Utils_Vectors_js__WEBPACK_IMPORTED_MODULE_9__.Vector.create((0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(p.options.bounce.horizontal.value), (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(p.options.bounce.vertical.value))\n };\n}\nfunction circleBounce(p1, p2) {\n const {\n x: xVelocityDiff,\n y: yVelocityDiff\n } = p1.velocity.sub(p2.velocity),\n [pos1, pos2] = [p1.position, p2.position],\n {\n dx: xDist,\n dy: yDist\n } = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getDistances)(pos2, pos1),\n minimumDistance = 0;\n if (xVelocityDiff * xDist + yVelocityDiff * yDist < minimumDistance) {\n return;\n }\n const angle = -Math.atan2(yDist, xDist),\n m1 = p1.mass,\n m2 = p2.mass,\n u1 = p1.velocity.rotate(angle),\n u2 = p2.velocity.rotate(angle),\n v1 = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.collisionVelocity)(u1, u2, m1, m2),\n v2 = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.collisionVelocity)(u2, u1, m1, m2),\n vFinal1 = v1.rotate(-angle),\n vFinal2 = v2.rotate(-angle);\n p1.velocity.x = vFinal1.x * p1.factor.x;\n p1.velocity.y = vFinal1.y * p1.factor.y;\n p2.velocity.x = vFinal2.x * p2.factor.x;\n p2.velocity.y = vFinal2.y * p2.factor.y;\n}\nfunction executeOnSingleOrMultiple(obj, callback) {\n const defaultIndex = 0;\n return (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(obj) ? obj.map((item, index) => callback(item, index)) : callback(obj, defaultIndex);\n}\nfunction itemFromSingleOrMultiple(obj, index, useIndex) {\n return (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(obj) ? itemFromArray(obj, index, useIndex) : obj;\n}\nfunction findItemFromSingleOrMultiple(obj, callback) {\n if ((0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isArray)(obj)) {\n return obj.find((t, index) => callback(t, index));\n }\n const defaultIndex = 0;\n return callback(obj, defaultIndex) ? obj : undefined;\n}\nfunction initParticleNumericAnimationValue(options, pxRatio) {\n const valueRange = options.value,\n animationOptions = options.animation,\n res = {\n delayTime: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(animationOptions.delay) * _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.millisecondsToSeconds,\n enable: animationOptions.enable,\n value: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(options.value) * pxRatio,\n max: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeMax)(valueRange) * pxRatio,\n min: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeMin)(valueRange) * pxRatio,\n loops: 0,\n maxLoops: (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(animationOptions.count),\n time: 0\n },\n decayOffset = 1;\n if (animationOptions.enable) {\n res.decay = decayOffset - (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRangeValue)(animationOptions.decay);\n switch (animationOptions.mode) {\n case _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.increase:\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing;\n break;\n case _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.decrease:\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n break;\n case _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.random:\n res.status = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRandom)() >= _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.half ? _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing : _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n break;\n }\n const autoStatus = animationOptions.mode === _Enums_Modes_AnimationMode_js__WEBPACK_IMPORTED_MODULE_3__.AnimationMode.auto;\n switch (animationOptions.startValue) {\n case _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__.StartValueType.min:\n res.value = res.min;\n if (autoStatus) {\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing;\n }\n break;\n case _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__.StartValueType.max:\n res.value = res.max;\n if (autoStatus) {\n res.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n }\n break;\n case _Enums_Types_StartValueType_js__WEBPACK_IMPORTED_MODULE_8__.StartValueType.random:\n default:\n res.value = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.randomInRangeValue)(res);\n if (autoStatus) {\n res.status = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.getRandom)() >= _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.half ? _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing : _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n }\n break;\n }\n }\n res.initialValue = res.value;\n return res;\n}\nfunction getPositionOrSize(positionOrSize, canvasSize) {\n const isPercent = positionOrSize.mode === _Enums_Modes_PixelMode_js__WEBPACK_IMPORTED_MODULE_7__.PixelMode.percent;\n if (!isPercent) {\n const {\n mode: _,\n ...rest\n } = positionOrSize;\n return rest;\n }\n const isPosition = \"x\" in positionOrSize;\n if (isPosition) {\n return {\n x: positionOrSize.x / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.width,\n y: positionOrSize.y / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.height\n };\n } else {\n return {\n width: positionOrSize.width / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.width,\n height: positionOrSize.height / _Core_Utils_Constants_js__WEBPACK_IMPORTED_MODULE_1__.percentDenominator * canvasSize.height\n };\n }\n}\nfunction getPosition(position, canvasSize) {\n return getPositionOrSize(position, canvasSize);\n}\nfunction getSize(size, canvasSize) {\n return getPositionOrSize(size, canvasSize);\n}\nfunction checkDestroy(particle, destroyType, value, minValue, maxValue) {\n switch (destroyType) {\n case _Enums_Types_DestroyType_js__WEBPACK_IMPORTED_MODULE_5__.DestroyType.max:\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case _Enums_Types_DestroyType_js__WEBPACK_IMPORTED_MODULE_5__.DestroyType.min:\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateAnimation(particle, data, changeDirection, destroyType, delta) {\n const minLoops = 0,\n minDelay = 0,\n identity = 1,\n minVelocity = 0,\n minDecay = 1;\n if (particle.destroyed || !data.enable || (data.maxLoops ?? minLoops) > minLoops && (data.loops ?? minLoops) > (data.maxLoops ?? minLoops)) {\n return;\n }\n const velocity = (data.velocity ?? minVelocity) * delta.factor,\n minValue = data.min,\n maxValue = data.max,\n decay = data.decay ?? minDecay;\n data.time ??= 0;\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n data.time += delta.value;\n }\n if ((data.delayTime ?? minDelay) > minDelay && data.time < (data.delayTime ?? minDelay)) {\n return;\n }\n switch (data.status) {\n case _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing:\n if (data.value >= maxValue) {\n if (changeDirection) {\n data.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing;\n } else {\n data.value -= maxValue;\n }\n data.loops ??= minLoops;\n data.loops++;\n } else {\n data.value += velocity;\n }\n break;\n case _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.decreasing:\n if (data.value <= minValue) {\n if (changeDirection) {\n data.status = _Enums_AnimationStatus_js__WEBPACK_IMPORTED_MODULE_4__.AnimationStatus.increasing;\n } else {\n data.value += maxValue;\n }\n data.loops ??= minLoops;\n data.loops++;\n } else {\n data.value -= velocity;\n }\n }\n if (data.velocity && decay !== identity) {\n data.velocity *= decay;\n }\n checkDestroy(particle, destroyType, data.value, minValue, maxValue);\n data.value = (0,_MathUtils_js__WEBPACK_IMPORTED_MODULE_0__.clamp)(data.value, minValue, maxValue);\n}\nfunction cloneStyle(style) {\n const clonedStyle = safeDocument().createElement(\"div\").style;\n for (const key in style) {\n const styleKey = style[key];\n if (!Object.hasOwn(style, key) || (0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isNull)(styleKey)) {\n continue;\n }\n const styleValue = style.getPropertyValue?.(styleKey);\n if (!styleValue) {\n continue;\n }\n const stylePriority = style.getPropertyPriority?.(styleKey);\n if (!stylePriority) {\n clonedStyle.setProperty(styleKey, styleValue);\n } else {\n clonedStyle.setProperty(styleKey, styleValue, stylePriority);\n }\n }\n return clonedStyle;\n}\nfunction computeFullScreenStyle(zIndex) {\n const fullScreenStyle = safeDocument().createElement(\"div\").style,\n radix = 10,\n style = {\n width: \"100%\",\n height: \"100%\",\n margin: \"0\",\n padding: \"0\",\n borderWidth: \"0\",\n position: \"fixed\",\n zIndex: zIndex.toString(radix),\n \"z-index\": zIndex.toString(radix),\n top: \"0\",\n left: \"0\"\n };\n for (const key in style) {\n const value = style[key];\n if (value === undefined) {\n continue;\n }\n fullScreenStyle.setProperty(key, value);\n }\n return fullScreenStyle;\n}\nconst getFullScreenStyle = memoize(computeFullScreenStyle);\nfunction manageListener(element, event, handler, add, options) {\n if (add) {\n let addOptions = {\n passive: true\n };\n if ((0,_TypeUtils_js__WEBPACK_IMPORTED_MODULE_2__.isBoolean)(options)) {\n addOptions.capture = options;\n } else if (options !== undefined) {\n addOptions = options;\n }\n element.addEventListener(event, handler, addOptions);\n } else {\n const removeOptions = options;\n element.removeEventListener(event, handler, removeOptions);\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}\n\n//# sourceURL=webpack://@tsparticles/engine/./dist/browser/Utils/Utils.js?\n}");
640
640
 
641
641
  /***/ },
642
642
 
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.engine.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 n in i)("object"==typeof exports?exports:t)[n]=i[n]}}(this,(()=>(()=>{var t,e,i={302(t,e,i){i.d(e,{AE:()=>S,Al:()=>b,BR:()=>g,E9:()=>A,HQ:()=>$,Kp:()=>C,O2:()=>z,T5:()=>p,TA:()=>T,Tg:()=>O,Tj:()=>M,UC:()=>I,Vh:()=>w,Xs:()=>D,YC:()=>_,hJ:()=>V,hn:()=>y,lV:()=>v,n0:()=>x,pE:()=>R,q8:()=>f,tG:()=>m,td:()=>L,w3:()=>F,wJ:()=>k,zw:()=>P});var n=i(1680),o=i(7642),s=i(838),a=i(7098),r=i(1292),c=i(8020),l=i(5931),d=i(5652),u=i(1317),h=i(8095);function f(){return"undefined"!=typeof matchMedia}function p(){return globalThis.document}function v(t){if(f())return matchMedia(t)}function g(t){if("undefined"!=typeof IntersectionObserver)return new IntersectionObserver(t)}function m(t){if("undefined"!=typeof MutationObserver)return new MutationObserver(t)}function y(t,e){return t===e||(0,s.cy)(e)&&e.includes(t)}async function b(t,e){try{await p().fonts.load(`${e??"400"} 36px '${t??"Verdana"}'`)}catch{}}function x(t){return Math.floor((0,n.G0)()*t.length)}function w(t,e,i=!0){return t[void 0!==e&&i?e%t.length:x(t)]}function M(t,e,i,n,o){return z(S(t,n??0),e,i,o)}function z(t,e,i,n){let o=!0;return n&&n!==l.v.bottom||(o=t.top<e.height+i.x),!o||n&&n!==l.v.left||(o=t.right>i.x),!o||n&&n!==l.v.right||(o=t.left<e.width+i.y),!o||n&&n!==l.v.top||(o=t.bottom>i.y),o}function S(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function P(t,...e){for(const i of e){if(null==i)continue;if(!(0,s.Gv)(i)){t=i;continue}const e=Array.isArray(i);!e||!(0,s.Gv)(t)&&t&&Array.isArray(t)?e||!(0,s.Gv)(t)&&t&&!Array.isArray(t)||(t={}):t=[];for(const e in i){if("__proto__"===e)continue;const n=i[e],o=t;o[e]=(0,s.Gv)(n)&&Array.isArray(n)?n.map((t=>P(o[e],t))):P(o[e],n)}}return t}function O(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:h.M.create((0,n.VG)(t.options.bounce.horizontal.value),(0,n.VG)(t.options.bounce.vertical.value))}}function R(t,e){const{x:i,y:o}=t.velocity.sub(e.velocity),[s,a]=[t.position,e.position],{dx:r,dy:c}=(0,n.vr)(a,s);if(i*r+o*c<0)return;const l=-Math.atan2(c,r),d=t.mass,u=e.mass,h=t.velocity.rotate(l),f=e.velocity.rotate(l),p=(0,n.OW)(h,f,d,u),v=(0,n.OW)(f,h,d,u),g=p.rotate(-l),m=v.rotate(-l);t.velocity.x=g.x*t.factor.x,t.velocity.y=g.y*t.factor.y,e.velocity.x=m.x*e.factor.x,e.velocity.y=m.y*e.factor.y}function k(t,e){return(0,s.cy)(t)?t.map(((t,i)=>e(t,i))):e(t,0)}function T(t,e,i){return(0,s.cy)(t)?w(t,e,i):t}function F(t,e){if((0,s.cy)(t))return t.find(((t,i)=>e(t,i)));return e(t,0)?t:void 0}function D(t,e){const i=t.value,s=t.animation,c={delayTime:(0,n.VG)(s.delay)*o.Xu,enable:s.enable,value:(0,n.VG)(t.value)*e,max:(0,n.W9)(i)*e,min:(0,n.Sg)(i)*e,loops:0,maxLoops:(0,n.VG)(s.count),time:0};if(s.enable){switch(c.decay=1-(0,n.VG)(s.decay),s.mode){case a.g.increase:c.status=r.H.increasing;break;case a.g.decrease:c.status=r.H.decreasing;break;case a.g.random:c.status=(0,n.G0)()>=o.MX?r.H.increasing:r.H.decreasing}const t=s.mode===a.g.auto;switch(s.startValue){case u.S.min:c.value=c.min,t&&(c.status=r.H.increasing);break;case u.S.max:c.value=c.max,t&&(c.status=r.H.decreasing);break;case u.S.random:default:c.value=(0,n.vE)(c),t&&(c.status=(0,n.G0)()>=o.MX?r.H.increasing:r.H.decreasing)}}return c.initialValue=c.value,c}function E(t,e){if(!(t.mode===d.q.percent)){const{mode:e,...i}=t;return i}return"x"in t?{x:t.x/o.a5*e.width,y:t.y/o.a5*e.height}:{width:t.width/o.a5*e.width,height:t.height/o.a5*e.height}}function A(t,e){return E(t,e)}function _(t,e){return E(t,e)}function I(t,e,i,o,s){if(t.destroyed||!e.enable||(e.maxLoops??0)>0&&(e.loops??0)>(e.maxLoops??0))return;const a=(e.velocity??0)*s.factor,l=e.min,d=e.max,u=e.decay??1;if(e.time??=0,(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=s.value),!((e.delayTime??0)>0&&e.time<(e.delayTime??0))){switch(e.status){case r.H.increasing:e.value>=d?(i?e.status=r.H.decreasing:e.value-=d,e.loops??=0,e.loops++):e.value+=a;break;case r.H.decreasing:e.value<=l?(i?e.status=r.H.increasing:e.value+=d,e.loops??=0,e.loops++):e.value-=a}e.velocity&&1!==u&&(e.velocity*=u),function(t,e,i,n,o){switch(e){case c.V.max:i>=o&&t.destroy();break;case c.V.min:i<=n&&t.destroy()}}(t,o,e.value,l,d),e.value=(0,n.qE)(e.value,l,d)}}function L(t){const e=p().createElement("div").style;for(const i in t){const n=t[i];if(!Object.hasOwn(t,i)||(0,s.kZ)(n))continue;const o=t.getPropertyValue?.(n);if(!o)continue;const a=t.getPropertyPriority?.(n);a?e.setProperty(n,o,a):e.setProperty(n,o)}return e}const V=function(t){const e=new Map;return(...i)=>{const n=JSON.stringify(i);if(e.has(n))return e.get(n);const o=t(...i);return e.set(n,o),o}}((function(t){const e=p().createElement("div").style,i={width:"100%",height:"100%",margin:"0",padding:"0",borderWidth:"0",position:"fixed",zIndex:t.toString(10),"z-index":t.toString(10),top:"0",left:"0"};for(const t in i){const n=i[t];void 0!==n&&e.setProperty(t,n)}return e}));function C(t,e,i,n,o){if(n){let n={passive:!0};(0,s.Lm)(o)?n.capture=o:void 0!==o&&(n=o),t.addEventListener(e,i,n)}else{const n=o;t.removeEventListener(e,i,n)}}async function $(t,e,i,n=!1){let o=e.get(t);return o&&!n||(o=await Promise.all([...i.values()].map((e=>e(t)))),e.set(t,o)),o}},511(t,e,i){i.d(e,{N:()=>a});var n=i(6632),o=i(2936),s=i(838);class a{constructor(){this.density=new n.M,this.limit=new o.A,this.value=0}load(t){(0,s.kZ)(t)||(this.density.load(t.density),this.limit.load(t.limit),void 0!==t.value&&(this.value=t.value))}}},541(t,e,i){i.d(e,{h:()=>s});var n=i(838),o=i(1680);class s{constructor(){this.offset=0,this.value=90}load(t){(0,n.kZ)(t)||(void 0!==t.offset&&(this.offset=(0,o.DT)(t.offset)),void 0!==t.value&&(this.value=(0,o.DT)(t.value)))}}},838(t,e,i){function n(t){return"boolean"==typeof t}function o(t){return"string"==typeof t}function s(t){return"number"==typeof t}function a(t){return"function"==typeof t}function r(t){return"object"==typeof t&&null!==t}function c(t){return Array.isArray(t)}function l(t){return null==t}i.d(e,{Et:()=>s,Gv:()=>r,Kg:()=>o,Lm:()=>n,Tn:()=>a,cy:()=>c,kZ:()=>l})},849(t,e,i){i.d(e,{Z:()=>s});var n=i(5652),o=i(838);class s{constructor(){this.x=50,this.y=50,this.mode=n.q.percent,this.radius=0}load(t){(0,o.kZ)(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))}}},913(t,e,i){i.d(e,{AI:()=>c,Jm:()=>r,PV:()=>a});var n=i(7435),o=i(838),s=i(1680);class a{constructor(){this.value=0}load(t){(0,o.kZ)(t)||(0,o.kZ)(t.value)||(this.value=(0,s.DT)(t.value))}}class r extends a{constructor(){super(),this.animation=new n.p}load(t){if(super.load(t),(0,o.kZ)(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class c extends r{constructor(){super(),this.animation=new n.Q}load(t){super.load(t)}}},1152(t,e,i){i.d(e,{y:()=>s});var n=i(302),o=i(838);class s{constructor(){this.close=!0,this.fill=!0,this.options={},this.type="circle"}load(t){if((0,o.kZ)(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=(0,n.zw)(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)}}},1222(t,e,i){i.d(e,{V:()=>s});var n=i(3254),o=i(838);class s{constructor(){this.color=new n.O,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(t){(0,o.kZ)(t)||(void 0!==t.color&&(this.color=n.O.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))}}},1292(t,e,i){var n;i.d(e,{H:()=>n}),function(t){t.increasing="increasing",t.decreasing="decreasing"}(n||(n={}))},1317(t,e,i){var n;i.d(e,{S:()=>n}),function(t){t.max="max",t.min="min",t.random="random"}(n||(n={}))},1640(t,e,i){var n;i.d(e,{Y:()=>n}),function(t){t.bounce="bounce",t.none="none",t.out="out",t.destroy="destroy",t.split="split"}(n||(n={}))},1680(t,e,i){i.d(e,{$m:()=>R,AD:()=>f,DT:()=>M,G0:()=>u,JY:()=>O,M3:()=>_,Mh:()=>F,Nx:()=>E,OE:()=>d,OW:()=>k,Sg:()=>x,VG:()=>b,W9:()=>w,Yf:()=>S,e4:()=>h,eh:()=>T,i0:()=>p,jh:()=>m,l1:()=>D,pu:()=>P,px:()=>v,qE:()=>g,qM:()=>A,vE:()=>y,vr:()=>z});var n=i(1953),o=i(7642),s=i(8095),a=i(838);const r=Math.PI/180;let c=Math.random;const l={nextFrame:t=>requestAnimationFrame(t),cancel:t=>{cancelAnimationFrame(t)}};function d(t=Math.random){c=t}function u(){return g(c(),0,1-Number.EPSILON)}function h(t,e){return u()*(e-t)+t}function f(t,e){l.nextFrame=e=>t(e),l.cancel=t=>{e(t)}}function p(t){return l.nextFrame(t)}function v(t){l.cancel(t)}function g(t,e,i){return Math.min(Math.max(t,e),i)}function m(t,e,i,n){return Math.floor((t*i+e*n)/(i+n))}function y(t){const e=w(t);let i=x(t);return e===i&&(i=0),h(i,e)}function b(t){return(0,a.Et)(t)?t:y(t)}function x(t){return(0,a.Et)(t)?t:t.min}function w(t){return(0,a.Et)(t)?t:t.max}function M(t,e){if(t===e||void 0===e&&(0,a.Et)(t))return t;const i=x(t),n=w(t);return void 0!==e?{min:Math.min(i,e),max:Math.max(n,e)}:M(i,n)}function z(t,e){const i=t.x-e.x,n=t.y-e.y;return{dx:i,dy:n,distance:Math.sqrt(i**2+n**2)}}function S(t,e){return z(t,e).distance}function P(t){return t*r}function O(t,e,i){if((0,a.Et)(t))return P(t);switch(t){case n.F.top:return-Math.PI*o.MX;case n.F.topRight:return-Math.PI*o.$G;case n.F.right:return o.Ie;case n.F.bottomRight:return Math.PI*o.$G;case n.F.bottom:return Math.PI*o.MX;case n.F.bottomLeft:return Math.PI*o.Rq;case n.F.left:return Math.PI;case n.F.topLeft:return-Math.PI*o.Rq;case n.F.inside:return Math.atan2(i.y-e.y,i.x-e.x);case n.F.outside:return Math.atan2(e.y-i.y,e.x-i.x);default:return u()*o.R1}}function R(t){const e=s.M.origin;return e.length=1,e.angle=t,e}function k(t,e,i,n){return s.M.create(t.x*(i-n)/(i+n)+e.x*o.gd*n/(i+n),t.y)}function T(t){return void 0!==t.position?.x&&void 0!==t.position.y?{x:t.position.x*t.size.width/o.a5,y:t.position.y*t.size.height/o.a5}:void 0}function F(t){return{x:(t.position?.x??u()*o.a5)*t.size.width/o.a5,y:(t.position?.y??u()*o.a5)*t.size.height/o.a5}}function D(t){const e={x:void 0!==t.position?.x?b(t.position.x):void 0,y:void 0!==t.position?.y?b(t.position.y):void 0};return F({size:t.size,position:e})}function E(t){const{position:e,size:i}=t;return{x:e?.x??u()*i.width,y:e?.y??u()*i.height}}function A(t){const e={x:void 0!==t.position?.x?b(t.position.x):void 0,y:void 0!==t.position?.y?b(t.position.y):void 0};return E({size:t.size,position:e})}function _(t){return t?t.endsWith("%")?parseFloat(t)/o.a5:parseFloat(t):1}},1784(t,e,i){i.d(e,{e:()=>a});var n=i(7435),o=i(838),s=i(1680);class a extends n.p{constructor(){super(),this.offset=0,this.sync=!0}load(t){super.load(t),(0,o.kZ)(t)||void 0!==t.offset&&(this.offset=(0,s.DT)(t.offset))}}},1872(t,e,i){i.d(e,{y:()=>s});var n=i(838),o=i(1680);class s{constructor(){this.acceleration=9.81,this.enable=!1,this.inverse=!1,this.maxSpeed=50}load(t){(0,n.kZ)(t)||(void 0!==t.acceleration&&(this.acceleration=(0,o.DT)(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.inverse&&(this.inverse=t.inverse),void 0!==t.maxSpeed&&(this.maxSpeed=(0,o.DT)(t.maxSpeed)))}}},1953(t,e,i){var n;i.d(e,{F:()=>n}),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"}(n||(n={}))},2037(t,e,i){i.d(e,{J:()=>d});var n=i(302),o=i(838),s=i(1222),a=i(7336),r=i(8907),c=i(9176),l=i(1680);class d{constructor(t,e){this._importPreset=t=>{this.load(this._engine.getPreset(t))},this._engine=t,this._container=e,this.autoPlay=!0,this.background=new s.V,this.clear=!0,this.defaultThemes={},this.delay=0,this.fullScreen=new a.m,this.detectRetina=!0,this.duration=0,this.fpsLimit=120,this.hdr=!0,this.particles=(0,c.y)(this._engine,this._container),this.pauseOnBlur=!0,this.pauseOnOutsideViewport=!0,this.resize=new r.z,this.smooth=!1,this.style={},this.zLayers=100}load(t){if((0,o.kZ)(t))return;void 0!==t.preset&&(0,n.wJ)(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=(0,l.DT)(t.delay));const e=t.detectRetina;void 0!==e&&(this.detectRetina=e),void 0!==t.duration&&(this.duration=(0,l.DT)(t.duration));const i=t.fpsLimit;void 0!==i&&(this.fpsLimit=i),void 0!==t.hdr&&(this.hdr=t.hdr),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;(0,o.Lm)(s)?this.fullScreen.enable=s:this.fullScreen.load(s),this.particles.load(t.particles),this.resize.load(t.resize),this.style=(0,n.zw)(this.style,t.style),void 0!==t.smooth&&(this.smooth=t.smooth),this._engine.plugins.forEach((e=>{e.loadOptions(this._container,this,t)}))}}},2936(t,e,i){i.d(e,{A:()=>s});var n=i(6423),o=i(838);class s{constructor(){this.mode=n.d.delete,this.value=0}load(t){(0,o.kZ)(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}},2984(t,e,i){var n;i.d(e,{dg:()=>a,jl:()=>r,M_:()=>c}),function(t){t.circle="circle",t.rectangle="rectangle"}(n||(n={}));var o=i(1680),s=i(7642);class a{constructor(t,e,i){this.position={x:t,y:e},this.type=i}}class r extends a{constructor(t,e,i){super(t,e,n.circle),this.radius=i}contains(t){return(0,o.Yf)(t,this.position)<=this.radius}intersects(t){const e=this.position,i=t.position,o=Math.abs(i.x-e.x),a=Math.abs(i.y-e.y),l=this.radius;if(t instanceof r||t.type===n.circle){return l+t.radius>Math.sqrt(o**s.dm+a**s.dm)}if(t instanceof c||t.type===n.rectangle){const e=t,{width:i,height:n}=e.size;return Math.pow(o-i,s.dm)+Math.pow(a-n,s.dm)<=l**s.dm||o<=l+i&&a<=l+n||o<=i||a<=n}return!1}}class c extends a{constructor(t,e,i,o){super(t,e,n.rectangle),this.size={height:o,width:i}}contains(t){const e=this.size.width,i=this.size.height,n=this.position;return t.x>=n.x&&t.x<=n.x+e&&t.y>=n.y&&t.y<=n.y+i}intersects(t){if(t instanceof r)return t.intersects(this);const e=this.size.width,i=this.size.height,n=this.position,o=t.position,s=t instanceof c?t.size:{width:0,height:0},a=s.width,l=s.height;return o.x<n.x+e&&o.x+a>n.x&&o.y<n.y+i&&o.y+l>n.y}}},3079(t,e,i){i.d(e,{R:()=>s});var n=i(838),o=i(1680);class s{constructor(){this.distance=200,this.enable=!1,this.rotate={x:3e3,y:3e3}}load(t){if(!(0,n.kZ)(t)&&(void 0!==t.distance&&(this.distance=(0,o.DT)(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)}}}},3254(t,e,i){i.d(e,{O:()=>o});var n=i(838);class o{constructor(){this.value=""}static create(t,e){const i=new o;return i.load(t),void 0!==e&&((0,n.Kg)(e)||(0,n.cy)(e)?i.load({value:e}):i.load(e)),i}load(t){(0,n.kZ)(t)||(0,n.kZ)(t.value)||(this.value=t.value)}}},3278(t,e,i){i.d(e,{U:()=>v});var n=i(302),o=i(7296),s=i(838);class a{constructor(){this.close=!0,this.fill=!0,this.options={},this.type=[]}load(t){if((0,s.kZ)(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=(0,n.zw)(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)}}var r=i(3448),c=i(9476),l=i(4467),d=i(511),u=i(1152),h=i(9112),f=i(5611),p=i(9358);class v{constructor(t,e){this._engine=t,this._container=e,this.bounce=new l.w,this.color=new o.A,this.color.value="#fff",this.effect=new a,this.groups={},this.move=new r.y,this.number=new d.N,this.opacity=new c.Y,this.reduceDuplicates=!1,this.shape=new u.y,this.size=new h.o,this.stroke=new f.t,this.zIndex=new p.P}load(t){if((0,s.kZ)(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]=(0,n.zw)(this.groups[e]??{},i))}void 0!==t.reduceDuplicates&&(this.reduceDuplicates=t.reduceDuplicates),this.bounce.load(t.bounce),this.color.load(o.A.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.zIndex.load(t.zIndex);const e=t.stroke;if(e&&(this.stroke=(0,n.wJ)(e,(t=>{const e=new f.t;return e.load(t),e}))),this._container){for(const e of this._engine.plugins)e.loadParticlesOptions&&e.loadParticlesOptions(this._container,this,t);const e=this._engine.updaters.get(this._container);if(e)for(const i of e)i.loadOptions&&i.loadOptions(this,t)}}}},3448(t,e,i){i.d(e,{y:()=>f});var n=i(1953),o=i(838),s=i(541),a=i(3079),r=i(849),c=i(1872),l=i(5979),d=i(7897),u=i(6649),h=i(1680);class f{constructor(){this.angle=new s.h,this.attract=new a.R,this.center=new r.Z,this.decay=0,this.distance={},this.direction=n.F.none,this.drift=0,this.enable=!1,this.gravity=new c.y,this.path=new l.v,this.outModes=new d.j,this.random=!1,this.size=!1,this.speed=2,this.spin=new u.t,this.straight=!1,this.vibrate=!1,this.warp=!1}load(t){if((0,o.kZ)(t))return;this.angle.load((0,o.Et)(t.angle)?{value:t.angle}:t.angle),this.attract.load(t.attract),this.center.load(t.center),void 0!==t.decay&&(this.decay=(0,h.DT)(t.decay)),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.distance&&(this.distance=(0,o.Et)(t.distance)?{horizontal:t.distance,vertical:t.distance}:{...t.distance}),void 0!==t.drift&&(this.drift=(0,h.DT)(t.drift)),void 0!==t.enable&&(this.enable=t.enable),this.gravity.load(t.gravity);const e=t.outModes;void 0!==e&&((0,o.Gv)(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=(0,h.DT)(t.speed)),this.spin.load(t.spin),void 0!==t.straight&&(this.straight=t.straight),void 0!==t.vibrate&&(this.vibrate=t.vibrate),void 0!==t.warp&&(this.warp=t.warp)}}},3838(t,e,i){var n;i.d(e,{B:()=>n}),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"}(n||(n={}))},4056(t,e,i){i.d(e,{i:()=>s});var n=i(1784),o=i(838);class s{constructor(){this.h=new n.e,this.s=new n.e,this.l=new n.e}load(t){(0,o.kZ)(t)||(this.h.load(t.h),this.s.load(t.s),this.l.load(t.l))}}},4326(t,e,i){var n;i.d(e,{H:()=>n}),function(t){t.darken="darken",t.enlighten="enlighten"}(n||(n={}))},4467(t,e,i){i.d(e,{w:()=>s});var n=i(6684),o=i(838);class s{constructor(){this.horizontal=new n.F,this.vertical=new n.F}load(t){(0,o.kZ)(t)||(this.horizontal.load(t.horizontal),this.vertical.load(t.vertical))}}},5611(t,e,i){i.d(e,{t:()=>a});var n=i(7296),o=i(838),s=i(1680);class a{constructor(){this.width=0}load(t){(0,o.kZ)(t)||(void 0!==t.color&&(this.color=n.A.create(this.color,t.color)),void 0!==t.width&&(this.width=(0,s.DT)(t.width)),void 0!==t.opacity&&(this.opacity=(0,s.DT)(t.opacity)))}}},5652(t,e,i){var n;i.d(e,{q:()=>n}),function(t){t.precise="precise",t.percent="percent"}(n||(n={}))},5931(t,e,i){var n;i.d(e,{v:()=>n}),function(t){t.bottom="bottom",t.left="left",t.right="right",t.top="top"}(n||(n={}))},5979(t,e,i){i.d(e,{v:()=>a});var n=i(913),o=i(302),s=i(838);class a{constructor(){this.clamp=!0,this.delay=new n.PV,this.enable=!1,this.options={}}load(t){(0,s.kZ)(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=(0,o.zw)(this.options,t.options)))}}},6312(t,e,i){var n;i.d(e,{x:()=>n}),function(t){t.normal="normal",t.inside="inside",t.outside="outside"}(n||(n={}))},6423(t,e,i){var n;i.d(e,{d:()=>n}),function(t){t.delete="delete",t.wait="wait"}(n||(n={}))},6632(t,e,i){i.d(e,{M:()=>o});var n=i(838);class o{constructor(){this.enable=!1,this.width=1920,this.height=1080}load(t){if((0,n.kZ)(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)}}},6649(t,e,i){i.d(e,{t:()=>a});var n=i(302),o=i(838),s=i(1680);class a{constructor(){this.acceleration=0,this.enable=!1}load(t){(0,o.kZ)(t)||(void 0!==t.acceleration&&(this.acceleration=(0,s.DT)(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),t.position&&(this.position=(0,n.zw)({},t.position)))}}},6684(t,e,i){i.d(e,{F:()=>o});var n=i(913);class o extends n.PV{constructor(){super(),this.value=1}}},6754(t,e,i){i.d(e,{IU:()=>l,KG:()=>f,Md:()=>c,Sn:()=>r,V6:()=>a,VG:()=>v,Wb:()=>m,e_:()=>g,gF:()=>p,k:()=>u,l7:()=>s,p0:()=>d,yx:()=>y,z5:()=>h});var n=i(7642),o=i(4326);function s(t,e,i){e.clearDraw&&e.clearDraw(t,i)}function a(t,e,i){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.closePath()}function r(t,e,i){t.fillStyle=i??"rgba(0,0,0,0)",t.fillRect(n.bo.x,n.bo.y,e.width,e.height)}function c(t,e,i,o){i&&(t.globalAlpha=o,t.drawImage(i,n.bo.x,n.bo.y,e.width,e.height),t.globalAlpha=1)}function l(t,e){t.clearRect(n.bo.x,n.bo.y,e.width,e.height)}function d(t){const{container:e,context:i,particle:o,delta:s,colorStyles:a,radius:r,opacity:c,transform:l}=t,d=o.getPosition(),g=o.getTransformData(l);i.setTransform(g.a,g.b,g.c,g.d,d.x,d.y),a.fill&&(i.fillStyle=a.fill);const m=o.strokeWidth??n.Dv;i.lineWidth=m,a.stroke&&(i.strokeStyle=a.stroke);const y={context:i,particle:o,radius:r,opacity:c,delta:s,pixelRatio:e.retina.pixelRatio,fill:o.shapeFill,stroke:m>n.Dv||!o.shapeFill,transformData:g};h(e,y),v(e,y),f(e,y),p(e,y),u(e,y),i.resetTransform()}function u(t,e){const{particle:i}=e;if(!i.effect)return;const n=t.effectDrawers.get(i.effect),o=n?.drawAfter;o&&o(e)}function h(t,e){const{particle:i}=e;if(!i.effect)return;const n=t.effectDrawers.get(i.effect);n?.drawBefore&&n.drawBefore(e)}function f(t,e){const{context:i,particle:n,stroke:o}=e;if(!n.shape)return;const s=t.shapeDrawers.get(n.shape);s&&(i.beginPath(),s.draw(e),n.shapeClose&&i.closePath(),o&&i.stroke(),n.shapeFill&&i.fill())}function p(t,e){const{particle:i}=e;if(!i.shape)return;const n=t.shapeDrawers.get(i.shape);n?.afterDraw&&n.afterDraw(e)}function v(t,e){const{particle:i}=e;if(!i.shape)return;const n=t.shapeDrawers.get(i.shape);n?.beforeDraw&&n.beforeDraw(e)}function g(t,e,i){e.draw&&e.draw(t,i)}function m(t,e,i,n){e.drawParticle&&e.drawParticle(t,i,n)}function y(t,e,i){return{h:t.h,s:t.s,l:t.l+(e===o.H.darken?-n.iU:n.iU)*i}}},7098(t,e,i){var n;i.d(e,{g:()=>n}),function(t){t.auto="auto",t.increase="increase",t.decrease="decrease",t.random="random"}(n||(n={}))},7296(t,e,i){i.d(e,{A:()=>a});var n=i(838),o=i(4056),s=i(3254);class a extends s.O{constructor(){super(),this.animation=new o.i}static create(t,e){const i=new a;return i.load(t),void 0!==e&&((0,n.Kg)(e)||(0,n.cy)(e)?i.load({value:e}):i.load(e)),i}load(t){if(super.load(t),(0,n.kZ)(t))return;const e=t.animation;void 0!==e&&(void 0===e.enable?this.animation.load(t.animation):this.animation.h.load(e))}}},7336(t,e,i){i.d(e,{m:()=>o});var n=i(838);class o{constructor(){this.enable=!0,this.zIndex=0}load(t){(0,n.kZ)(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.zIndex&&(this.zIndex=t.zIndex))}}},7435(t,e,i){i.d(e,{Q:()=>c,p:()=>r});var n=i(7098),o=i(1317),s=i(838),a=i(1680);class r{constructor(){this.count=0,this.enable=!1,this.speed=1,this.decay=0,this.delay=0,this.sync=!1}load(t){(0,s.kZ)(t)||(void 0!==t.count&&(this.count=(0,a.DT)(t.count)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=(0,a.DT)(t.speed)),void 0!==t.decay&&(this.decay=(0,a.DT)(t.decay)),void 0!==t.delay&&(this.delay=(0,a.DT)(t.delay)),void 0!==t.sync&&(this.sync=t.sync))}}class c extends r{constructor(){super(),this.mode=n.g.auto,this.startValue=o.S.random}load(t){super.load(t),(0,s.kZ)(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.startValue&&(this.startValue=t.startValue))}}},7642(t,e,i){i.d(e,{$G:()=>L,$O:()=>B,$_:()=>D,$v:()=>J,$x:()=>S,BF:()=>Rt,BW:()=>h,DN:()=>Q,D_:()=>xt,Dv:()=>wt,Eo:()=>nt,FS:()=>H,Fl:()=>kt,GW:()=>C,Ie:()=>I,JC:()=>K,K3:()=>pt,KZ:()=>N,Kw:()=>M,L1:()=>E,LD:()=>gt,M1:()=>rt,MX:()=>r,N5:()=>ot,NF:()=>o,Nu:()=>St,Nx:()=>U,PZ:()=>Y,Pg:()=>O,R1:()=>p,RF:()=>b,RV:()=>G,Rh:()=>lt,Rq:()=>V,TL:()=>j,U0:()=>_,Ug:()=>d,WH:()=>it,X$:()=>y,X_:()=>at,Xu:()=>c,Zp:()=>P,a5:()=>a,aE:()=>Ot,aZ:()=>g,bo:()=>l,ce:()=>m,dm:()=>w,dv:()=>et,eb:()=>n,eu:()=>F,gd:()=>f,hB:()=>R,hK:()=>Ft,hv:()=>q,i8:()=>X,iU:()=>Mt,jn:()=>Tt,l:()=>st,lA:()=>vt,mR:()=>u,nK:()=>s,nq:()=>ut,oi:()=>k,ou:()=>dt,pH:()=>mt,rq:()=>x,tA:()=>bt,tR:()=>Dt,td:()=>yt,un:()=>ct,vF:()=>W,vS:()=>T,vd:()=>zt,w2:()=>Z,wM:()=>ht,xH:()=>tt,xd:()=>z,yx:()=>A,z$:()=>v,z9:()=>ft,zg:()=>Pt,zs:()=>$});const n="generated",o="resize",s="visibilitychange",a=100,r=.5,c=1e3,l={x:0,y:0,z:0},d={a:1,b:0,c:0,d:1},u="random",h="mid",f=2,p=Math.PI*f,v=60,g=1,m="true",y="false",b="canvas",x=0,w=2,M=4,z=1,S=1,P=1,O=4,R=1,k=255,T=360,F=100,D=100,E=0,A=0,_=60,I=0,L=.25,V=r+L,C=0,$=1,Z=0,B=0,G=1,q=1,H=1,N=1,j=0,K=1,W=0,X=120,Q=0,U=0,J=1e4,Y=0,tt=1,et=0,it=1,nt=1,ot=0,st=1,at=0,rt=0,ct=-L,lt=1.5,dt=0,ut=1,ht=0,ft=0,pt=1,vt=1,gt=1,mt=500,yt=50,bt=0,xt=1,wt=0,Mt=1,zt=0,St=3,Pt=6,Ot=1,Rt=1,kt=0,Tt=0,Ft=0,Dt=0},7897(t,e,i){i.d(e,{j:()=>s});var n=i(1640),o=i(838);class s{constructor(){this.default=n.Y.out}load(t){(0,o.kZ)(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)}}},7932(t,e,i){i.d(e,{B:()=>o,t:()=>s});const n={debug:console.debug,error:(t,e)=>{console.error(`tsParticles - Error - ${t}`,e)},info:console.info,log:console.log,verbose:console.log,warning:console.warn};function o(t){n.debug=t.debug,n.error=t.error,n.info=t.info,n.log=t.log,n.verbose=t.verbose,n.warning=t.warning}function s(){return n}},8020(t,e,i){var n;i.d(e,{V:()=>n}),function(t){t.none="none",t.max="max",t.min="min"}(n||(n={}))},8044(t,e,i){i.d(e,{I:()=>a});var n=i(8020),o=i(7435),s=i(838);class a extends o.Q{constructor(){super(),this.destroy=n.V.none,this.speed=2}load(t){super.load(t),(0,s.kZ)(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}},8095(t,e,i){i.d(e,{M:()=>s,p:()=>o});var n=i(7642);class o{constructor(t=n.bo.x,e=n.bo.y,i=n.bo.z){this._updateFromAngle=(t,e)=>{this.x=Math.cos(t)*e,this.y=Math.sin(t)*e},this.x=t,this.y=e,this.z=i}static get origin(){return o.create(n.bo.x,n.bo.y,n.bo.z)}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 o.create(t.x,t.y,t.z)}static create(t,e,i){return"number"==typeof t?new o(t,e??n.bo.y,i??n.bo.z):new o(t.x,t.y,Object.hasOwn(t,"z")?t.z:n.bo.z)}add(t){return o.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 o.clone(this)}distanceTo(t){return this.sub(t).length}distanceToSq(t){return this.sub(t).getLengthSq()}div(t){return o.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**n.dm+this.y**n.dm}mult(t){return o.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;t!=n.dv&&this.multTo(n.hB/t)}rotate(t){return o.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t),n.bo.z)}setTo(t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:n.bo.z}sub(t){return o.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 s extends o{constructor(t=n.bo.x,e=n.bo.y){super(t,e,n.bo.z)}static get origin(){return s.create(n.bo.x,n.bo.y)}static clone(t){return s.create(t.x,t.y)}static create(t,e){return"number"==typeof t?new s(t,e??n.bo.y):new s(t.x,t.y)}}},8229(t,e,i){i.d(e,{b:()=>n});class n{constructor(t,e){this.position=t,this.particle=e}}},8907(t,e,i){i.d(e,{z:()=>o});var n=i(838);class o{constructor(){this.delay=.5,this.enable=!0}load(t){(0,n.kZ)(t)||(void 0!==t.delay&&(this.delay=t.delay),void 0!==t.enable&&(this.enable=t.enable))}}},9112(t,e,i){i.d(e,{o:()=>a});var n=i(913),o=i(9968),s=i(838);class a extends n.AI{constructor(){super(),this.animation=new o.q,this.value=3}load(t){if(super.load(t),(0,s.kZ)(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}},9176(t,e,i){i.d(e,{Z:()=>o,y:()=>s});var n=i(3278);function o(t,...e){for(const i of e)t.load(i)}function s(t,e,...i){const s=new n.U(t,e);return o(s,...i),s}},9358(t,e,i){i.d(e,{P:()=>s});var n=i(913),o=i(838);class s extends n.PV{constructor(){super(),this.opacityRate=1,this.sizeRate=1,this.velocityRate=1}load(t){super.load(t),(0,o.kZ)(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))}}},9476(t,e,i){i.d(e,{Y:()=>a});var n=i(8044),o=i(913),s=i(838);class a extends o.AI{constructor(){super(),this.animation=new n.I,this.value=1}load(t){if((0,s.kZ)(t))return;super.load(t);const e=t.animation;void 0!==e&&this.animation.load(e)}}},9599(t,e,i){i.d(e,{BN:()=>u,EY:()=>S,Jv:()=>D,K6:()=>v,Ko:()=>F,LC:()=>z,OH:()=>x,O_:()=>R,PG:()=>O,R5:()=>p,YL:()=>y,_h:()=>P,ay:()=>b,eg:()=>m,mK:()=>f,pz:()=>k,qe:()=>h,xx:()=>w,zI:()=>g});var n=i(1680),o=i(7642),s=i(838),a=i(1292),r=i(302);const c=new Map;function l(t,e){let i=c.get(t);if(!i){if(i=e(),c.size>=1e3){[...c.keys()].slice(0,1e3*o.MX).forEach((t=>c.delete(t)))}c.set(t,i)}return i}function d(t,e){if(e)for(const i of t.colorManagers.values())if(i.accepts(e))return i.parseString(e)}function u(t,e,i,n=!0){if(!e)return;const o=(0,s.Kg)(e)?{value:e}:e;if((0,s.Kg)(o.value))return h(t,o.value,i,n);if((0,s.cy)(o.value)){const e=(0,r.Vh)(o.value,i,n);if(!e)return;return u(t,{value:e})}for(const e of t.colorManagers.values()){const t=e.handleRangeColor(o);if(t)return t}}function h(t,e,i,n=!0){if(!e)return;const a=(0,s.Kg)(e)?{value:e}:e;if((0,s.Kg)(a.value))return a.value===o.mR?x():m(t,a.value);if((0,s.cy)(a.value)){const e=(0,r.Vh)(a.value,i,n);if(!e)return;return h(t,{value:e})}for(const e of t.colorManagers.values()){const t=e.handleColor(a);if(t)return t}}function f(t,e,i,n=!0){const o=h(t,e,i,n);return o?v(o):void 0}function p(t,e,i,n=!0){const o=u(t,e,i,n);return o?v(o):void 0}function v(t){const e=t.r/o.oi,i=t.g/o.oi,n=t.b/o.oi,s=Math.max(e,i,n),a=Math.min(e,i,n),r={h:o.L1,l:(s+a)*o.MX,s:o.yx};return s!==a&&(r.s=r.l<o.MX?(s-a)/(s+a):(s-a)/(o.gd-s-a),r.h=e===s?(i-n)/(s-a):i===s?o.gd+(n-e)/(s-a):o.gd*o.gd+(e-i)/(s-a)),r.l*=o.$_,r.s*=o.eu,r.h*=o.U0,r.h<o.L1&&(r.h+=o.vS),r.h>=o.vS&&(r.h-=o.vS),r}function g(t,e){return d(t,e)?.a}function m(t,e){return d(t,e)}function y(t){const e=(t.h%o.vS+o.vS)%o.vS,i=Math.max(o.yx,Math.min(o.eu,t.s)),n=Math.max(o.vd,Math.min(o.$_,t.l)),s=e/o.vS,a=i/o.eu,r=n/o.$_;if(i===o.yx){const t=Math.round(r*o.oi);return{r:t,g:t,b:t}}const c=(t,e,i)=>{if(i<0&&i++,i>1&&i--,i*o.zg<1)return t+(e-t)*o.zg*i;if(i*o.gd<1)return e;if(i*o.Nu<1*o.gd){return t+(e-t)*(o.gd/o.Nu-i)*o.zg}return t},l=r<o.MX?r*(o.aE+a):r+a-r*a,d=o.gd*r-l,u=o.BF/o.Nu,h=Math.min(o.oi,o.oi*c(d,l,s+u)),f=Math.min(o.oi,o.oi*c(d,l,s)),p=Math.min(o.oi,o.oi*c(d,l,s-u));return{r:Math.round(h),g:Math.round(f),b:Math.round(p)}}function b(t){const e=y(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function x(t){const e=t??o.Fl,i=o.oi+o.D_,s=()=>Math.floor((0,n.e4)(e,i));return{b:s(),g:s(),r:s()}}function w(t,e,i){const n=i??o.hv;return l(`rgb-${t.r.toFixed(2)}-${t.g.toFixed(2)}-${t.b.toFixed(2)}-${e?"hdr":"sdr"}-${n.toString()}`,(()=>e?M(t,i):function(t,e){return`rgba(${t.r.toString()}, ${t.g.toString()}, ${t.b.toString()}, ${(e??o.hv).toString()})`}(t,i)))}function M(t,e){return`color(display-p3 ${(t.r/o.oi).toString()} ${(t.g/o.oi).toString()} ${(t.b/o.oi).toString()} / ${(e??o.hv).toString()})`}function z(t,e,i){const n=i??o.hv;return l(`hsl-${t.h.toFixed(2)}-${t.s.toFixed(2)}-${t.l.toFixed(2)}-${e?"hdr":"sdr"}-${n.toString()}`,(()=>e?function(t,e){return M(y(t),e)}(t,i):function(t,e){return`hsla(${t.h.toString()}, ${t.s.toString()}%, ${t.l.toString()}%, ${(e??o.hv).toString()})`}(t,i)))}function S(t,e,i,o){let s=t,a=e;return Object.hasOwn(s,"r")||(s=y(t)),Object.hasOwn(a,"r")||(a=y(e)),{b:(0,n.jh)(s.b,a.b,i,o),g:(0,n.jh)(s.g,a.g,i,o),r:(0,n.jh)(s.r,a.r,i,o)}}function P(t,e,i){if(i===o.mR)return x();if(i!==o.BW)return i;{const i=t.getFillColor()??t.getStrokeColor(),n=e?.getFillColor()??e?.getStrokeColor();if(i&&n&&e)return S(i,n,t.getRadius(),e.getRadius());{const t=i??n;if(t)return y(t)}}}function O(t,e,i,n){const a=(0,s.Kg)(e)?e:e.value;return a===o.mR?n?u(t,{value:a}):i?o.mR:o.BW:a===o.BW?o.BW:u(t,{value:a})}function R(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function k(t,e,i){const n={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(T(n.h,e.h,i),T(n.s,e.s,i),T(n.l,e.l,i)),n}function T(t,e,i){t.enable=e.enable,t.enable?(t.velocity=(0,n.VG)(e.speed)/o.a5*i,t.decay=o.WH-(0,n.VG)(e.decay),t.status=a.H.increasing,t.loops=o.hK,t.maxLoops=(0,n.VG)(e.count),t.time=o.tR,t.delayTime=(0,n.VG)(e.delay)*o.Xu,e.sync||(t.velocity*=(0,n.G0)(),t.value*=(0,n.G0)()),t.initialValue=t.value,t.offset=(0,n.DT)(e.offset)):t.velocity=o.jn}function F(t,e,i,o){if(!t.enable||(t.maxLoops??0)>0&&(t.loops??0)>(t.maxLoops??0))return;if(t.time??=0,(t.delayTime??0)>0&&t.time<(t.delayTime??0)&&(t.time+=o.value),(t.delayTime??0)>0&&t.time<(t.delayTime??0))return;const s=t.offset?(0,n.vE)(t.offset):0,r=(t.velocity??0)*o.factor+3.6*s,c=t.decay??1,l=(0,n.W9)(e),d=(0,n.Sg)(e);if(i&&t.status!==a.H.increasing){t.value-=r;const e=0;t.value<e&&(t.loops??=0,t.loops++,t.status=a.H.increasing)}else t.value+=r,t.value>l&&(t.loops??=0,t.loops++,i?t.status=a.H.decreasing:t.value-=l);t.velocity&&1!==c&&(t.velocity*=c),t.value=(0,n.qE)(t.value,d,l)}function D(t,e){if(!t)return;const{h:i,s:n,l:s}=t,a={h:{min:o.L1,max:o.vS},s:{min:o.yx,max:o.eu},l:{min:o.vd,max:o.$_}};F(i,a.h,!1,e),F(n,a.s,!0,e),F(s,a.l,!0,e)}},9968(t,e,i){i.d(e,{q:()=>a});var n=i(8020),o=i(7435),s=i(838);class a extends o.Q{constructor(){super(),this.destroy=n.V.none,this.speed=5}load(t){super.load(t),(0,s.kZ)(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}}},n={};function o(t){var e=n[t];if(void 0!==e)return e.exports;var s=n[t]={exports:{}};return i[t](s,s.exports,o),s.exports}o.m=i,o.d=(t,e)=>{for(var i in e)o.o(e,i)&&!o.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},o.f={},o.e=t=>Promise.all(Object.keys(o.f).reduce(((e,i)=>(o.f[i](t,e),e)),[])),o.u=t=>t+".min.js",o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t={},e="@tsparticles/engine:",o.l=(i,n,s,a)=>{if(t[i])t[i].push(n);else{var r,c;if(void 0!==s)for(var l=document.getElementsByTagName("script"),d=0;d<l.length;d++){var u=l[d];if(u.getAttribute("src")==i||u.getAttribute("data-webpack")==e+s){r=u;break}}r||(c=!0,(r=document.createElement("script")).charset="utf-8",o.nc&&r.setAttribute("nonce",o.nc),r.setAttribute("data-webpack",e+s),r.src=i),t[i]=[n];var h=(e,n)=>{r.onerror=r.onload=null,clearTimeout(f);var o=t[i];if(delete t[i],r.parentNode&&r.parentNode.removeChild(r),o&&o.forEach((t=>t(n))),e)return e(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=h.bind(null,r.onerror),r.onload=h.bind(null,r.onload),c&&document.head.appendChild(r)}},o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var i=e.getElementsByTagName("script");if(i.length)for(var n=i.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=i[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=t})(),(()=>{var t={397:0};o.f.j=(e,i)=>{var n=o.o(t,e)?t[e]:void 0;if(0!==n)if(n)i.push(n[2]);else{var s=new Promise(((i,o)=>n=t[e]=[i,o]));i.push(n[2]=s);var a=o.p+o.u(e),r=new Error;o.l(a,(i=>{if(o.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var s=i&&("load"===i.type?"missing":i.type),a=i&&i.target&&i.target.src;r.message="Loading chunk "+e+" failed.\n("+s+": "+a+")",r.name="ChunkLoadError",r.type=s,r.request=a,n[1](r)}}),"chunk-"+e,e)}};var e=(e,i)=>{var n,s,[a,r,c]=i,l=0;if(a.some((e=>0!==t[e]))){for(n in r)o.o(r,n)&&(o.m[n]=r[n]);if(c)c(o)}for(e&&e(i);l<a.length;l++)s=a[l],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0},i=this.webpackChunk_tsparticles_engine=this.webpackChunk_tsparticles_engine||[];i.forEach(e.bind(null,0)),i.push=e.bind(null,i.push.bind(i))})();var s={};o.r(s),o.d(s,{AlterType:()=>P.H,AnimatableColor:()=>D.A,AnimationMode:()=>w.g,AnimationOptions:()=>E.p,AnimationStatus:()=>F.H,AnimationValueWithRandom:()=>rt.Jm,Background:()=>A.V,BaseRange:()=>g.dg,Circle:()=>g.jl,ColorAnimation:()=>_.e,DestroyType:()=>O.V,EasingType:()=>R,EventType:()=>l.B,FullScreen:()=>I.m,GradientType:()=>b,HslAnimation:()=>L.i,LimitMode:()=>M.d,Move:()=>H.y,MoveAngle:()=>N.h,MoveAttract:()=>q.R,MoveCenter:()=>j.Z,MoveDirection:()=>y.F,MoveGravity:()=>K.y,MovePath:()=>X.v,Opacity:()=>tt.Y,OpacityAnimation:()=>et.I,Options:()=>V.J,OptionsColor:()=>C.O,OutMode:()=>z.Y,OutModeDirection:()=>x.v,OutModes:()=>W.j,ParticleOutType:()=>k.x,ParticlesBounce:()=>$.w,ParticlesBounceFactor:()=>Z.F,ParticlesDensity:()=>Y.M,ParticlesNumber:()=>U.N,ParticlesNumberLimit:()=>J.A,ParticlesOptions:()=>B.U,PixelMode:()=>S.q,Point:()=>v.b,RangedAnimationOptions:()=>E.Q,RangedAnimationValueWithRandom:()=>rt.AI,Rectangle:()=>g.M_,ResizeEvent:()=>at.z,RotateDirection:()=>p,Shape:()=>it.y,Size:()=>nt.o,SizeAnimation:()=>ot.q,Spin:()=>Q.t,StartValueType:()=>T.S,Stroke:()=>G.t,ValueWithRandom:()=>rt.PV,Vector:()=>m.M,Vector3d:()=>m.p,ZIndex:()=>st.P,alterHsl:()=>ct.yx,animate:()=>u.i0,areBoundsInside:()=>r.O2,arrayRandomIndex:()=>r.n0,calcExactPositionOrRandomFromSize:()=>u.Nx,calcExactPositionOrRandomFromSizeRanged:()=>u.qM,calcPositionFromSize:()=>u.eh,calcPositionOrRandomFromSize:()=>u.Mh,calcPositionOrRandomFromSizeRanged:()=>u.l1,calculateBounds:()=>r.AE,cancelAnimation:()=>u.px,canvasFirstIndex:()=>a.Nx,canvasTag:()=>a.RF,circleBounce:()=>r.pE,circleBounceDataFromParticle:()=>r.Tg,clamp:()=>u.qE,clear:()=>ct.IU,clearDrawPlugin:()=>ct.l7,clickRadius:()=>a.FS,cloneStyle:()=>r.td,collisionVelocity:()=>u.OW,colorMix:()=>lt.EY,colorToHsl:()=>lt.mK,colorToRgb:()=>lt.qe,countOffset:()=>a.nq,decayOffset:()=>a.WH,deepExtend:()=>r.zw,defaultAlpha:()=>a.aZ,defaultAngle:()=>a.tA,defaultDensityFactor:()=>a.lA,defaultFps:()=>a.z$,defaultFpsLimit:()=>a.i8,defaultLoops:()=>a.hK,defaultOpacity:()=>a.hv,defaultRadius:()=>a.M1,defaultRatio:()=>a.$x,defaultReduceFactor:()=>a.Zp,defaultRemoveQuantity:()=>a.xd,defaultRetryCount:()=>a.rq,defaultRgbMin:()=>a.Fl,defaultTime:()=>a.tR,defaultTransform:()=>a.Ug,defaultTransformValue:()=>a.zs,defaultVelocity:()=>a.jn,degToRad:()=>u.pu,deleteCount:()=>a.LD,double:()=>a.gd,doublePI:()=>a.R1,drawAfterEffect:()=>ct.k,drawBeforeEffect:()=>ct.z5,drawLine:()=>ct.V6,drawParticle:()=>ct.p0,drawParticlePlugin:()=>ct.Wb,drawPlugin:()=>ct.e_,drawShape:()=>ct.KG,drawShapeAfterDraw:()=>ct.gF,drawShapeBeforeDraw:()=>ct.VG,empty:()=>a.Ie,executeOnSingleOrMultiple:()=>r.wJ,findItemFromSingleOrMultiple:()=>r.w3,generatedAttribute:()=>a.eb,generatedFalse:()=>a.X$,generatedTrue:()=>a.ce,getDistance:()=>u.Yf,getDistances:()=>u.vr,getFullScreenStyle:()=>r.hJ,getHslAnimationFromHsl:()=>lt.pz,getHslFromAnimation:()=>lt.O_,getItemsFromInitializer:()=>r.HQ,getLinkColor:()=>lt._h,getLinkRandomColor:()=>lt.PG,getLogger:()=>d.t,getParticleBaseVelocity:()=>u.$m,getParticleDirectionAngle:()=>u.JY,getPosition:()=>r.E9,getRandom:()=>u.G0,getRandomInRange:()=>u.e4,getRandomRgbColor:()=>lt.OH,getRangeMax:()=>u.W9,getRangeMin:()=>u.Sg,getRangeValue:()=>u.VG,getSize:()=>r.YC,getStyleFromHsl:()=>lt.LC,getStyleFromRgb:()=>lt.xx,hMax:()=>a.vS,hMin:()=>a.L1,hPhase:()=>a.U0,half:()=>a.MX,hasMatchMedia:()=>r.q8,hslToRgb:()=>lt.YL,hslaToRgba:()=>lt.ay,identity:()=>a.D_,initParticleNumericAnimationValue:()=>r.Xs,inverseFactorNumerator:()=>a.hB,isArray:()=>ut.cy,isBoolean:()=>ut.Lm,isFunction:()=>ut.Tn,isInArray:()=>r.hn,isNull:()=>ut.kZ,isNumber:()=>ut.Et,isObject:()=>ut.Gv,isPointInside:()=>r.Tj,isString:()=>ut.Kg,itemFromArray:()=>r.Vh,itemFromSingleOrMultiple:()=>r.TA,lFactor:()=>a.iU,lMax:()=>a.$_,lMin:()=>a.vd,lengthOffset:()=>a.K3,loadFont:()=>r.Al,loadMinIndex:()=>a.PZ,loadOptions:()=>dt.Z,loadParticlesOptions:()=>dt.y,loadRandomFactor:()=>a.$v,manageListener:()=>r.Kp,manualDefaultPosition:()=>a.td,midColorValue:()=>a.BW,millisecondsToSeconds:()=>a.Xu,minCoordinate:()=>a.TL,minCount:()=>a.wM,minFpsLimit:()=>a.DN,minIndex:()=>a.z9,minLimit:()=>a.ou,minRetries:()=>a.N5,minStrokeWidth:()=>a.Dv,minVelocity:()=>a.GW,minZ:()=>a.X_,minimumLength:()=>a.$O,minimumSize:()=>a.w2,mix:()=>u.jh,none:()=>a.dv,one:()=>a.xH,originPoint:()=>a.bo,paintBase:()=>ct.Sn,paintImage:()=>ct.Md,parseAlpha:()=>u.M3,percentDenominator:()=>a.a5,phaseNumerator:()=>a.BF,posOffset:()=>a.un,qTreeCapacity:()=>a.Kw,quarter:()=>a.$G,randomColorValue:()=>a.mR,randomInRangeValue:()=>u.vE,rangeColorToHsl:()=>lt.R5,rangeColorToRgb:()=>lt.BN,removeDeleteCount:()=>a.JC,removeMinIndex:()=>a.vF,resizeEvent:()=>a.NF,rgbMax:()=>a.oi,rgbToHsl:()=>lt.K6,rollFactor:()=>a.l,sMax:()=>a.eu,sMin:()=>a.yx,sNormalizedOffset:()=>a.aE,safeDocument:()=>r.T5,safeIntersectionObserver:()=>r.BR,safeMatchMedia:()=>r.lV,safeMutationObserver:()=>r.tG,setAnimationFunctions:()=>u.AD,setLogger:()=>d.B,setRandom:()=>u.OE,setRangeValue:()=>u.DT,sextuple:()=>a.zg,sizeFactor:()=>a.Rh,squareExp:()=>a.dm,stringToAlpha:()=>lt.zI,stringToRgb:()=>lt.eg,subdivideCount:()=>a.Pg,threeQuarter:()=>a.Rq,touchDelay:()=>a.pH,touchEndLengthOffset:()=>a.KZ,triple:()=>a.Nu,tryCountIncrement:()=>a.Eo,tsParticles:()=>ht,updateAnimation:()=>r.UC,updateColor:()=>lt.Jv,updateColorValue:()=>lt.Ko,visibilityChangeEvent:()=>a.nK,zIndexFactorOffset:()=>a.RV});var a=o(7642),r=o(302);class c{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 n=i.length,o=i.indexOf(e);o<a.z9||(n===a.LD?this._listeners.delete(t):i.splice(o,a.LD))}}var l=o(3838),d=o(7932),u=o(1680);const h="100%";class f{constructor(){this._configs=new Map,this._domArray=[],this._eventDispatcher=new c,this._initialized=!1,this._loadPromises=new Set,this.plugins=[],this.colorManagers=new Map,this.easingFunctions=new Map,this._initializers={movers:new Map,updaters: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"4.0.0-alpha.4"}addColorManager(t){this.colorManagers.set(t.key,t)}addConfig(t){const e=t.key??t.name??"default";this._configs.set(e,t),this._eventDispatcher.dispatchEvent(l.B.configAdded,{data:{name:e,config:t}})}addEasing(t,e){this.easingFunctions.get(t)||this.easingFunctions.set(t,e)}addEffect(t,e){this.getEffectDrawer(t)||this.effectDrawers.set(t,e)}addEventListener(t,e){this._eventDispatcher.addEventListener(t,e)}addMover(t,e){this._initializers.movers.set(t,e)}addParticleUpdater(t,e){this._initializers.updaters.set(t,e)}addPathGenerator(t,e){this.getPathGenerator(t)||this.pathGenerators.set(t,e)}addPlugin(t){this.getPlugin(t.id)||this.plugins.push(t)}addPreset(t,e,i=!1){!i&&this.getPreset(t)||this.presets.set(t,e)}addShape(t){for(const e of t.validTypes)this.getShapeDrawer(e)||this.shapeDrawers.set(e,t)}checkVersion(t){if(this.version!==t)throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${this.version}. Plugin version: ${t}`)}clearPlugins(t){this.updaters.delete(t),this.movers.delete(t)}dispatchEvent(t,e){this._eventDispatcher.dispatchEvent(t,e)}getEasing(t){return this.easingFunctions.get(t)??(t=>t)}getEffectDrawer(t){return this.effectDrawers.get(t)}async getMovers(t,e=!1){return(0,r.HQ)(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(0,r.HQ)(t,this.updaters,this._initializers.updaters,e)}async init(){if(this._initialized)return;const t=new Set,e=new Set(this._loadPromises),i=[...e];for(;i.length;){const n=i.shift();if(!n)continue;if(t.has(n))continue;t.add(n);const o=[],s=this.register.bind(this);this.register=(...t)=>{o.push(...t);for(const i of t)e.add(i)};try{await n(this)}finally{this.register=s}i.unshift(...o),this._loadPromises.delete(n)}this._loadPromises.clear();for(const t of e)this._loadPromises.add(t);this._initialized=!0}item(t){const{items:e}=this,i=e[t];if(!i?.destroyed)return i;e.splice(t,a.JC)}async load(t){await this.init(),this._loadPromises.clear();const{Container:e}=await o.e(794).then(o.bind(o,8794)),i=t.id??t.element?.id??`tsparticles${Math.floor((0,u.G0)()*a.$v).toString()}`,{index:n,url:s}=t,c=s?await async function(t){const e=(0,r.TA)(t.url,t.index);if(!e)return t.fallback;const i=await fetch(e);return i.ok?await i.json():((0,d.t)().error(`${i.status.toString()} while retrieving config file`),t.fallback)}({fallback:t.options,url:s,index:n}):t.options,l=(0,r.TA)(c,n),{items:f}=this,p=f.findIndex((t=>t.id.description===i)),v=new e(this,i,l);if(p>=a.PZ){const t=this.item(p),e=t?a.xH:a.dv;t&&!t.destroyed&&t.destroy(!1),f.splice(p,e,v)}else f.push(v);const g=((t,e)=>{const i=(0,r.T5)();let n=e??i.getElementById(t);return n||(n=i.createElement("div"),n.id=t,n.dataset[a.eb]=a.ce,i.body.append(n),n)})(i,t.element),m=(t=>{const e=(0,r.T5)();let i;if(t instanceof HTMLCanvasElement||t.tagName.toLowerCase()===a.RF)i=t,i.dataset[a.eb]??=a.X$;else{const n=t.getElementsByTagName(a.RF)[a.Nx];n?(i=n,i.dataset[a.eb]=a.X$):(i=e.createElement(a.RF),i.dataset[a.eb]=a.ce,t.appendChild(i))}return i.style.width||=h,i.style.height||=h,i})(g);return v.canvas.loadCanvas(m),await v.start(),v}loadParticlesOptions(t,e,...i){const n=this.updaters.get(t);n&&n.forEach((t=>t.loadOptions?.(e,...i)))}async refresh(t=!0){t&&await Promise.all(this.items.map((t=>t.refresh())))}register(...t){if(this._initialized)throw new Error("Register plugins can only be done before calling tsParticles.load()");for(const e of t)this._loadPromises.add(e)}removeEventListener(t,e){this._eventDispatcher.removeEventListener(t,e)}}var p,v=o(8229),g=o(2984),m=o(8095),y=o(1953);!function(t){t.clockwise="clockwise",t.counterClockwise="counter-clockwise",t.random="random"}(p||(p={}));var b,x=o(5931),w=o(7098),M=o(6423),z=o(1640),S=o(5652),P=o(4326),O=o(8020);!function(t){t.linear="linear",t.radial="radial",t.random="random"}(b||(b={}));var R,k=o(6312),T=o(1317);!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"}(R||(R={}));var F=o(1292),D=o(7296),E=o(7435),A=o(1222),_=o(1784),I=o(7336),L=o(4056),V=o(2037),C=o(3254),$=o(4467),Z=o(6684),B=o(3278),G=o(5611),q=o(3079),H=o(3448),N=o(541),j=o(849),K=o(1872),W=o(7897),X=o(5979),Q=o(6649),U=o(511),J=o(2936),Y=o(6632),tt=o(9476),et=o(8044),it=o(1152),nt=o(9112),ot=o(9968),st=o(9358),at=o(8907),rt=o(913),ct=o(6754),lt=o(9599),dt=o(9176),ut=o(838);const ht=new f;return globalThis.tsParticles=ht,s})()));
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 n in i)("object"==typeof exports?exports:t)[n]=i[n]}}(this,(()=>(()=>{var t,e,i={302(t,e,i){i.d(e,{AE:()=>S,Al:()=>b,BR:()=>g,E9:()=>E,HQ:()=>$,Kp:()=>C,O2:()=>z,T5:()=>p,TA:()=>T,Tg:()=>O,Tj:()=>M,UC:()=>L,Vh:()=>w,Xs:()=>F,YC:()=>A,hJ:()=>V,hn:()=>y,lV:()=>v,n0:()=>x,pE:()=>R,q8:()=>f,tG:()=>m,td:()=>I,w3:()=>_,wJ:()=>k,zw:()=>P});var n=i(1680),o=i(7642),s=i(838),a=i(7098),r=i(1292),c=i(8020),l=i(5931),d=i(5652),u=i(1317),h=i(8095);function f(){return"undefined"!=typeof matchMedia}function p(){return globalThis.document}function v(t){if(f())return matchMedia(t)}function g(t){if("undefined"!=typeof IntersectionObserver)return new IntersectionObserver(t)}function m(t){if("undefined"!=typeof MutationObserver)return new MutationObserver(t)}function y(t,e){return t===e||(0,s.cy)(e)&&e.includes(t)}async function b(t,e){try{await p().fonts.load(`${e??"400"} 36px '${t??"Verdana"}'`)}catch{}}function x(t){return Math.floor((0,n.G0)()*t.length)}function w(t,e,i=!0){return t[void 0!==e&&i?e%t.length:x(t)]}function M(t,e,i,n,o){return z(S(t,n??0),e,i,o)}function z(t,e,i,n){let o=!0;return n&&n!==l.v.bottom||(o=t.top<e.height+i.x),!o||n&&n!==l.v.left||(o=t.right>i.x),!o||n&&n!==l.v.right||(o=t.left<e.width+i.y),!o||n&&n!==l.v.top||(o=t.bottom>i.y),o}function S(t,e){return{bottom:t.y+e,left:t.x-e,right:t.x+e,top:t.y-e}}function P(t,...e){for(const i of e){if(null==i)continue;if(!(0,s.Gv)(i)){t=i;continue}Array.isArray(i)?Array.isArray(t)||(t=[]):(0,s.Gv)(t)&&!Array.isArray(t)||(t={});for(const e in i){if("__proto__"===e)continue;const n=i[e],o=t;o[e]=(0,s.Gv)(n)&&Array.isArray(n)?n.map((t=>P(o[e],t))):P(o[e],n)}}return t}function O(t){return{position:t.getPosition(),radius:t.getRadius(),mass:t.getMass(),velocity:t.velocity,factor:h.M.create((0,n.VG)(t.options.bounce.horizontal.value),(0,n.VG)(t.options.bounce.vertical.value))}}function R(t,e){const{x:i,y:o}=t.velocity.sub(e.velocity),[s,a]=[t.position,e.position],{dx:r,dy:c}=(0,n.vr)(a,s);if(i*r+o*c<0)return;const l=-Math.atan2(c,r),d=t.mass,u=e.mass,h=t.velocity.rotate(l),f=e.velocity.rotate(l),p=(0,n.OW)(h,f,d,u),v=(0,n.OW)(f,h,d,u),g=p.rotate(-l),m=v.rotate(-l);t.velocity.x=g.x*t.factor.x,t.velocity.y=g.y*t.factor.y,e.velocity.x=m.x*e.factor.x,e.velocity.y=m.y*e.factor.y}function k(t,e){return(0,s.cy)(t)?t.map(((t,i)=>e(t,i))):e(t,0)}function T(t,e,i){return(0,s.cy)(t)?w(t,e,i):t}function _(t,e){if((0,s.cy)(t))return t.find(((t,i)=>e(t,i)));return e(t,0)?t:void 0}function F(t,e){const i=t.value,s=t.animation,c={delayTime:(0,n.VG)(s.delay)*o.Xu,enable:s.enable,value:(0,n.VG)(t.value)*e,max:(0,n.W9)(i)*e,min:(0,n.Sg)(i)*e,loops:0,maxLoops:(0,n.VG)(s.count),time:0};if(s.enable){switch(c.decay=1-(0,n.VG)(s.decay),s.mode){case a.g.increase:c.status=r.H.increasing;break;case a.g.decrease:c.status=r.H.decreasing;break;case a.g.random:c.status=(0,n.G0)()>=o.MX?r.H.increasing:r.H.decreasing}const t=s.mode===a.g.auto;switch(s.startValue){case u.S.min:c.value=c.min,t&&(c.status=r.H.increasing);break;case u.S.max:c.value=c.max,t&&(c.status=r.H.decreasing);break;case u.S.random:default:c.value=(0,n.vE)(c),t&&(c.status=(0,n.G0)()>=o.MX?r.H.increasing:r.H.decreasing)}}return c.initialValue=c.value,c}function D(t,e){if(!(t.mode===d.q.percent)){const{mode:e,...i}=t;return i}return"x"in t?{x:t.x/o.a5*e.width,y:t.y/o.a5*e.height}:{width:t.width/o.a5*e.width,height:t.height/o.a5*e.height}}function E(t,e){return D(t,e)}function A(t,e){return D(t,e)}function L(t,e,i,o,s){if(t.destroyed||!e.enable||(e.maxLoops??0)>0&&(e.loops??0)>(e.maxLoops??0))return;const a=(e.velocity??0)*s.factor,l=e.min,d=e.max,u=e.decay??1;if(e.time??=0,(e.delayTime??0)>0&&e.time<(e.delayTime??0)&&(e.time+=s.value),!((e.delayTime??0)>0&&e.time<(e.delayTime??0))){switch(e.status){case r.H.increasing:e.value>=d?(i?e.status=r.H.decreasing:e.value-=d,e.loops??=0,e.loops++):e.value+=a;break;case r.H.decreasing:e.value<=l?(i?e.status=r.H.increasing:e.value+=d,e.loops??=0,e.loops++):e.value-=a}e.velocity&&1!==u&&(e.velocity*=u),function(t,e,i,n,o){switch(e){case c.V.max:i>=o&&t.destroy();break;case c.V.min:i<=n&&t.destroy()}}(t,o,e.value,l,d),e.value=(0,n.qE)(e.value,l,d)}}function I(t){const e=p().createElement("div").style;for(const i in t){const n=t[i];if(!Object.hasOwn(t,i)||(0,s.kZ)(n))continue;const o=t.getPropertyValue?.(n);if(!o)continue;const a=t.getPropertyPriority?.(n);a?e.setProperty(n,o,a):e.setProperty(n,o)}return e}const V=function(t){const e=new Map;return(...i)=>{const n=JSON.stringify(i);if(e.has(n))return e.get(n);const o=t(...i);return e.set(n,o),o}}((function(t){const e=p().createElement("div").style,i={width:"100%",height:"100%",margin:"0",padding:"0",borderWidth:"0",position:"fixed",zIndex:t.toString(10),"z-index":t.toString(10),top:"0",left:"0"};for(const t in i){const n=i[t];void 0!==n&&e.setProperty(t,n)}return e}));function C(t,e,i,n,o){if(n){let n={passive:!0};(0,s.Lm)(o)?n.capture=o:void 0!==o&&(n=o),t.addEventListener(e,i,n)}else{const n=o;t.removeEventListener(e,i,n)}}async function $(t,e,i,n=!1){let o=e.get(t);return o&&!n||(o=await Promise.all([...i.values()].map((e=>e(t)))),e.set(t,o)),o}},511(t,e,i){i.d(e,{N:()=>a});var n=i(6632),o=i(2936),s=i(838);class a{constructor(){this.density=new n.M,this.limit=new o.A,this.value=0}load(t){(0,s.kZ)(t)||(this.density.load(t.density),this.limit.load(t.limit),void 0!==t.value&&(this.value=t.value))}}},541(t,e,i){i.d(e,{h:()=>s});var n=i(838),o=i(1680);class s{constructor(){this.offset=0,this.value=90}load(t){(0,n.kZ)(t)||(void 0!==t.offset&&(this.offset=(0,o.DT)(t.offset)),void 0!==t.value&&(this.value=(0,o.DT)(t.value)))}}},838(t,e,i){function n(t){return"boolean"==typeof t}function o(t){return"string"==typeof t}function s(t){return"number"==typeof t}function a(t){return"function"==typeof t}function r(t){return"object"==typeof t&&null!==t}function c(t){return Array.isArray(t)}function l(t){return null==t}i.d(e,{Et:()=>s,Gv:()=>r,Kg:()=>o,Lm:()=>n,Tn:()=>a,cy:()=>c,kZ:()=>l})},849(t,e,i){i.d(e,{Z:()=>s});var n=i(5652),o=i(838);class s{constructor(){this.x=50,this.y=50,this.mode=n.q.percent,this.radius=0}load(t){(0,o.kZ)(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))}}},913(t,e,i){i.d(e,{AI:()=>c,Jm:()=>r,PV:()=>a});var n=i(7435),o=i(838),s=i(1680);class a{constructor(){this.value=0}load(t){(0,o.kZ)(t)||(0,o.kZ)(t.value)||(this.value=(0,s.DT)(t.value))}}class r extends a{constructor(){super(),this.animation=new n.p}load(t){if(super.load(t),(0,o.kZ)(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}class c extends r{constructor(){super(),this.animation=new n.Q}load(t){super.load(t)}}},1152(t,e,i){i.d(e,{y:()=>s});var n=i(302),o=i(838);class s{constructor(){this.close=!0,this.fill=!0,this.options={},this.type="circle"}load(t){if((0,o.kZ)(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=(0,n.zw)(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)}}},1222(t,e,i){i.d(e,{V:()=>s});var n=i(3254),o=i(838);class s{constructor(){this.color=new n.O,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(t){(0,o.kZ)(t)||(void 0!==t.color&&(this.color=n.O.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))}}},1292(t,e,i){var n;i.d(e,{H:()=>n}),function(t){t.increasing="increasing",t.decreasing="decreasing"}(n||(n={}))},1317(t,e,i){var n;i.d(e,{S:()=>n}),function(t){t.max="max",t.min="min",t.random="random"}(n||(n={}))},1640(t,e,i){var n;i.d(e,{Y:()=>n}),function(t){t.bounce="bounce",t.none="none",t.out="out",t.destroy="destroy",t.split="split"}(n||(n={}))},1680(t,e,i){i.d(e,{$m:()=>R,AD:()=>f,DT:()=>M,G0:()=>u,JY:()=>O,M3:()=>A,Mh:()=>_,Nx:()=>D,OE:()=>d,OW:()=>k,Sg:()=>x,VG:()=>b,W9:()=>w,Yf:()=>S,e4:()=>h,eh:()=>T,i0:()=>p,jh:()=>m,l1:()=>F,pu:()=>P,px:()=>v,qE:()=>g,qM:()=>E,vE:()=>y,vr:()=>z});var n=i(1953),o=i(7642),s=i(8095),a=i(838);const r=Math.PI/180;let c=Math.random;const l={nextFrame:t=>requestAnimationFrame(t),cancel:t=>{cancelAnimationFrame(t)}};function d(t=Math.random){c=t}function u(){return g(c(),0,1-Number.EPSILON)}function h(t,e){return u()*(e-t)+t}function f(t,e){l.nextFrame=e=>t(e),l.cancel=t=>{e(t)}}function p(t){return l.nextFrame(t)}function v(t){l.cancel(t)}function g(t,e,i){return Math.min(Math.max(t,e),i)}function m(t,e,i,n){return Math.floor((t*i+e*n)/(i+n))}function y(t){const e=w(t);let i=x(t);return e===i&&(i=0),h(i,e)}function b(t){return(0,a.Et)(t)?t:y(t)}function x(t){return(0,a.Et)(t)?t:t.min}function w(t){return(0,a.Et)(t)?t:t.max}function M(t,e){if(t===e||void 0===e&&(0,a.Et)(t))return t;const i=x(t),n=w(t);return void 0!==e?{min:Math.min(i,e),max:Math.max(n,e)}:M(i,n)}function z(t,e){const i=t.x-e.x,n=t.y-e.y;return{dx:i,dy:n,distance:Math.sqrt(i**2+n**2)}}function S(t,e){return z(t,e).distance}function P(t){return t*r}function O(t,e,i){if((0,a.Et)(t))return P(t);switch(t){case n.F.top:return-Math.PI*o.MX;case n.F.topRight:return-Math.PI*o.$G;case n.F.right:return o.Ie;case n.F.bottomRight:return Math.PI*o.$G;case n.F.bottom:return Math.PI*o.MX;case n.F.bottomLeft:return Math.PI*o.Rq;case n.F.left:return Math.PI;case n.F.topLeft:return-Math.PI*o.Rq;case n.F.inside:return Math.atan2(i.y-e.y,i.x-e.x);case n.F.outside:return Math.atan2(e.y-i.y,e.x-i.x);default:return u()*o.R1}}function R(t){const e=s.M.origin;return e.length=1,e.angle=t,e}function k(t,e,i,n){return s.M.create(t.x*(i-n)/(i+n)+e.x*o.gd*n/(i+n),t.y)}function T(t){return void 0!==t.position?.x&&void 0!==t.position.y?{x:t.position.x*t.size.width/o.a5,y:t.position.y*t.size.height/o.a5}:void 0}function _(t){return{x:(t.position?.x??u()*o.a5)*t.size.width/o.a5,y:(t.position?.y??u()*o.a5)*t.size.height/o.a5}}function F(t){const e={x:void 0!==t.position?.x?b(t.position.x):void 0,y:void 0!==t.position?.y?b(t.position.y):void 0};return _({size:t.size,position:e})}function D(t){const{position:e,size:i}=t;return{x:e?.x??u()*i.width,y:e?.y??u()*i.height}}function E(t){const e={x:void 0!==t.position?.x?b(t.position.x):void 0,y:void 0!==t.position?.y?b(t.position.y):void 0};return D({size:t.size,position:e})}function A(t){return t?t.endsWith("%")?parseFloat(t)/o.a5:parseFloat(t):1}},1784(t,e,i){i.d(e,{e:()=>a});var n=i(7435),o=i(838),s=i(1680);class a extends n.p{constructor(){super(),this.offset=0,this.sync=!0}load(t){super.load(t),(0,o.kZ)(t)||void 0!==t.offset&&(this.offset=(0,s.DT)(t.offset))}}},1872(t,e,i){i.d(e,{y:()=>s});var n=i(838),o=i(1680);class s{constructor(){this.acceleration=9.81,this.enable=!1,this.inverse=!1,this.maxSpeed=50}load(t){(0,n.kZ)(t)||(void 0!==t.acceleration&&(this.acceleration=(0,o.DT)(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.inverse&&(this.inverse=t.inverse),void 0!==t.maxSpeed&&(this.maxSpeed=(0,o.DT)(t.maxSpeed)))}}},1953(t,e,i){var n;i.d(e,{F:()=>n}),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"}(n||(n={}))},2037(t,e,i){i.d(e,{J:()=>d});var n=i(302),o=i(838),s=i(1222),a=i(7336),r=i(8907),c=i(9176),l=i(1680);class d{constructor(t,e){this._importPreset=t=>{this.load(this._engine.getPreset(t))},this._engine=t,this._container=e,this.autoPlay=!0,this.background=new s.V,this.clear=!0,this.defaultThemes={},this.delay=0,this.fullScreen=new a.m,this.detectRetina=!0,this.duration=0,this.fpsLimit=120,this.hdr=!0,this.particles=(0,c.y)(this._engine,this._container),this.pauseOnBlur=!0,this.pauseOnOutsideViewport=!0,this.resize=new r.z,this.smooth=!1,this.style={},this.zLayers=100}load(t){if((0,o.kZ)(t))return;void 0!==t.preset&&(0,n.wJ)(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=(0,l.DT)(t.delay));const e=t.detectRetina;void 0!==e&&(this.detectRetina=e),void 0!==t.duration&&(this.duration=(0,l.DT)(t.duration));const i=t.fpsLimit;void 0!==i&&(this.fpsLimit=i),void 0!==t.hdr&&(this.hdr=t.hdr),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;(0,o.Lm)(s)?this.fullScreen.enable=s:this.fullScreen.load(s),this.particles.load(t.particles),this.resize.load(t.resize),this.style=(0,n.zw)(this.style,t.style),void 0!==t.smooth&&(this.smooth=t.smooth),this._engine.plugins.forEach((e=>{e.loadOptions(this._container,this,t)}))}}},2936(t,e,i){i.d(e,{A:()=>s});var n=i(6423),o=i(838);class s{constructor(){this.mode=n.d.delete,this.value=0}load(t){(0,o.kZ)(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}},2984(t,e,i){var n;i.d(e,{dg:()=>a,jl:()=>r,M_:()=>c}),function(t){t.circle="circle",t.rectangle="rectangle"}(n||(n={}));var o=i(1680),s=i(7642);class a{constructor(t,e,i){this.position={x:t,y:e},this.type=i}}class r extends a{constructor(t,e,i){super(t,e,n.circle),this.radius=i}contains(t){return(0,o.Yf)(t,this.position)<=this.radius}intersects(t){const e=this.position,i=t.position,o=Math.abs(i.x-e.x),a=Math.abs(i.y-e.y),l=this.radius;if(t instanceof r||t.type===n.circle){return l+t.radius>Math.sqrt(o**s.dm+a**s.dm)}if(t instanceof c||t.type===n.rectangle){const e=t,{width:i,height:n}=e.size;return Math.pow(o-i,s.dm)+Math.pow(a-n,s.dm)<=l**s.dm||o<=l+i&&a<=l+n||o<=i||a<=n}return!1}}class c extends a{constructor(t,e,i,o){super(t,e,n.rectangle),this.size={height:o,width:i}}contains(t){const e=this.size.width,i=this.size.height,n=this.position;return t.x>=n.x&&t.x<=n.x+e&&t.y>=n.y&&t.y<=n.y+i}intersects(t){if(t instanceof r)return t.intersects(this);const e=this.size.width,i=this.size.height,n=this.position,o=t.position,s=t instanceof c?t.size:{width:0,height:0},a=s.width,l=s.height;return o.x<n.x+e&&o.x+a>n.x&&o.y<n.y+i&&o.y+l>n.y}}},3079(t,e,i){i.d(e,{R:()=>s});var n=i(838),o=i(1680);class s{constructor(){this.distance=200,this.enable=!1,this.rotate={x:3e3,y:3e3}}load(t){if(!(0,n.kZ)(t)&&(void 0!==t.distance&&(this.distance=(0,o.DT)(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)}}}},3254(t,e,i){i.d(e,{O:()=>o});var n=i(838);class o{constructor(){this.value=""}static create(t,e){const i=new o;return i.load(t),void 0!==e&&((0,n.Kg)(e)||(0,n.cy)(e)?i.load({value:e}):i.load(e)),i}load(t){(0,n.kZ)(t)||(0,n.kZ)(t.value)||(this.value=t.value)}}},3278(t,e,i){i.d(e,{U:()=>v});var n=i(302),o=i(7296),s=i(838);class a{constructor(){this.close=!0,this.fill=!0,this.options={},this.type=[]}load(t){if((0,s.kZ)(t))return;const e=t.options;if(void 0!==e)for(const t in e){const i=e[t];i&&(this.options[t]=(0,n.zw)(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)}}var r=i(3448),c=i(9476),l=i(4467),d=i(511),u=i(1152),h=i(9112),f=i(5611),p=i(9358);class v{constructor(t,e){this._engine=t,this._container=e,this.bounce=new l.w,this.color=new o.A,this.color.value="#fff",this.effect=new a,this.groups={},this.move=new r.y,this.number=new d.N,this.opacity=new c.Y,this.reduceDuplicates=!1,this.shape=new u.y,this.size=new h.o,this.stroke=new f.t,this.zIndex=new p.P}load(t){if((0,s.kZ)(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]=(0,n.zw)(this.groups[e]??{},i))}void 0!==t.reduceDuplicates&&(this.reduceDuplicates=t.reduceDuplicates),this.bounce.load(t.bounce),this.color.load(o.A.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.zIndex.load(t.zIndex);const e=t.stroke;if(e&&(this.stroke=(0,n.wJ)(e,(t=>{const e=new f.t;return e.load(t),e}))),this._container){for(const e of this._engine.plugins)e.loadParticlesOptions&&e.loadParticlesOptions(this._container,this,t);const e=this._engine.updaters.get(this._container);if(e)for(const i of e)i.loadOptions&&i.loadOptions(this,t)}}}},3448(t,e,i){i.d(e,{y:()=>f});var n=i(1953),o=i(838),s=i(541),a=i(3079),r=i(849),c=i(1872),l=i(5979),d=i(7897),u=i(6649),h=i(1680);class f{constructor(){this.angle=new s.h,this.attract=new a.R,this.center=new r.Z,this.decay=0,this.distance={},this.direction=n.F.none,this.drift=0,this.enable=!1,this.gravity=new c.y,this.path=new l.v,this.outModes=new d.j,this.random=!1,this.size=!1,this.speed=2,this.spin=new u.t,this.straight=!1,this.vibrate=!1,this.warp=!1}load(t){if((0,o.kZ)(t))return;this.angle.load((0,o.Et)(t.angle)?{value:t.angle}:t.angle),this.attract.load(t.attract),this.center.load(t.center),void 0!==t.decay&&(this.decay=(0,h.DT)(t.decay)),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.distance&&(this.distance=(0,o.Et)(t.distance)?{horizontal:t.distance,vertical:t.distance}:{...t.distance}),void 0!==t.drift&&(this.drift=(0,h.DT)(t.drift)),void 0!==t.enable&&(this.enable=t.enable),this.gravity.load(t.gravity);const e=t.outModes;void 0!==e&&((0,o.Gv)(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=(0,h.DT)(t.speed)),this.spin.load(t.spin),void 0!==t.straight&&(this.straight=t.straight),void 0!==t.vibrate&&(this.vibrate=t.vibrate),void 0!==t.warp&&(this.warp=t.warp)}}},3838(t,e,i){var n;i.d(e,{B:()=>n}),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"}(n||(n={}))},4056(t,e,i){i.d(e,{i:()=>s});var n=i(1784),o=i(838);class s{constructor(){this.h=new n.e,this.s=new n.e,this.l=new n.e}load(t){(0,o.kZ)(t)||(this.h.load(t.h),this.s.load(t.s),this.l.load(t.l))}}},4326(t,e,i){var n;i.d(e,{H:()=>n}),function(t){t.darken="darken",t.enlighten="enlighten"}(n||(n={}))},4467(t,e,i){i.d(e,{w:()=>s});var n=i(6684),o=i(838);class s{constructor(){this.horizontal=new n.F,this.vertical=new n.F}load(t){(0,o.kZ)(t)||(this.horizontal.load(t.horizontal),this.vertical.load(t.vertical))}}},5611(t,e,i){i.d(e,{t:()=>a});var n=i(7296),o=i(838),s=i(1680);class a{constructor(){this.width=0}load(t){(0,o.kZ)(t)||(void 0!==t.color&&(this.color=n.A.create(this.color,t.color)),void 0!==t.width&&(this.width=(0,s.DT)(t.width)),void 0!==t.opacity&&(this.opacity=(0,s.DT)(t.opacity)))}}},5652(t,e,i){var n;i.d(e,{q:()=>n}),function(t){t.precise="precise",t.percent="percent"}(n||(n={}))},5931(t,e,i){var n;i.d(e,{v:()=>n}),function(t){t.bottom="bottom",t.left="left",t.right="right",t.top="top"}(n||(n={}))},5979(t,e,i){i.d(e,{v:()=>a});var n=i(913),o=i(302),s=i(838);class a{constructor(){this.clamp=!0,this.delay=new n.PV,this.enable=!1,this.options={}}load(t){(0,s.kZ)(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=(0,o.zw)(this.options,t.options)))}}},6312(t,e,i){var n;i.d(e,{x:()=>n}),function(t){t.normal="normal",t.inside="inside",t.outside="outside"}(n||(n={}))},6423(t,e,i){var n;i.d(e,{d:()=>n}),function(t){t.delete="delete",t.wait="wait"}(n||(n={}))},6632(t,e,i){i.d(e,{M:()=>o});var n=i(838);class o{constructor(){this.enable=!1,this.width=1920,this.height=1080}load(t){if((0,n.kZ)(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)}}},6649(t,e,i){i.d(e,{t:()=>a});var n=i(302),o=i(838),s=i(1680);class a{constructor(){this.acceleration=0,this.enable=!1}load(t){(0,o.kZ)(t)||(void 0!==t.acceleration&&(this.acceleration=(0,s.DT)(t.acceleration)),void 0!==t.enable&&(this.enable=t.enable),t.position&&(this.position=(0,n.zw)({},t.position)))}}},6684(t,e,i){i.d(e,{F:()=>o});var n=i(913);class o extends n.PV{constructor(){super(),this.value=1}}},6754(t,e,i){i.d(e,{IU:()=>l,KG:()=>f,Md:()=>c,Sn:()=>r,V6:()=>a,VG:()=>v,Wb:()=>m,e_:()=>g,gF:()=>p,k:()=>u,l7:()=>s,p0:()=>d,yx:()=>y,z5:()=>h});var n=i(7642),o=i(4326);function s(t,e,i){e.clearDraw&&e.clearDraw(t,i)}function a(t,e,i){t.beginPath(),t.moveTo(e.x,e.y),t.lineTo(i.x,i.y),t.closePath()}function r(t,e,i){t.fillStyle=i??"rgba(0,0,0,0)",t.fillRect(n.bo.x,n.bo.y,e.width,e.height)}function c(t,e,i,o){i&&(t.globalAlpha=o,t.drawImage(i,n.bo.x,n.bo.y,e.width,e.height),t.globalAlpha=1)}function l(t,e){t.clearRect(n.bo.x,n.bo.y,e.width,e.height)}function d(t){const{container:e,context:i,particle:o,delta:s,colorStyles:a,radius:r,opacity:c,transform:l}=t,d=o.getPosition(),g=o.getTransformData(l);i.setTransform(g.a,g.b,g.c,g.d,d.x,d.y),a.fill&&(i.fillStyle=a.fill);const m=o.strokeWidth??n.Dv;i.lineWidth=m,a.stroke&&(i.strokeStyle=a.stroke);const y={context:i,particle:o,radius:r,opacity:c,delta:s,pixelRatio:e.retina.pixelRatio,fill:o.shapeFill,stroke:m>n.Dv||!o.shapeFill,transformData:g};h(e,y),v(e,y),f(e,y),p(e,y),u(e,y),i.resetTransform()}function u(t,e){const{particle:i}=e;if(!i.effect)return;const n=t.effectDrawers.get(i.effect),o=n?.drawAfter;o&&o(e)}function h(t,e){const{particle:i}=e;if(!i.effect)return;const n=t.effectDrawers.get(i.effect);n?.drawBefore&&n.drawBefore(e)}function f(t,e){const{context:i,particle:n,stroke:o}=e;if(!n.shape)return;const s=t.shapeDrawers.get(n.shape);s&&(i.beginPath(),s.draw(e),n.shapeClose&&i.closePath(),o&&i.stroke(),n.shapeFill&&i.fill())}function p(t,e){const{particle:i}=e;if(!i.shape)return;const n=t.shapeDrawers.get(i.shape);n?.afterDraw&&n.afterDraw(e)}function v(t,e){const{particle:i}=e;if(!i.shape)return;const n=t.shapeDrawers.get(i.shape);n?.beforeDraw&&n.beforeDraw(e)}function g(t,e,i){e.draw&&e.draw(t,i)}function m(t,e,i,n){e.drawParticle&&e.drawParticle(t,i,n)}function y(t,e,i){return{h:t.h,s:t.s,l:t.l+(e===o.H.darken?-n.iU:n.iU)*i}}},7098(t,e,i){var n;i.d(e,{g:()=>n}),function(t){t.auto="auto",t.increase="increase",t.decrease="decrease",t.random="random"}(n||(n={}))},7296(t,e,i){i.d(e,{A:()=>a});var n=i(838),o=i(4056),s=i(3254);class a extends s.O{constructor(){super(),this.animation=new o.i}static create(t,e){const i=new a;return i.load(t),void 0!==e&&((0,n.Kg)(e)||(0,n.cy)(e)?i.load({value:e}):i.load(e)),i}load(t){if(super.load(t),(0,n.kZ)(t))return;const e=t.animation;void 0!==e&&(void 0===e.enable?this.animation.load(t.animation):this.animation.h.load(e))}}},7336(t,e,i){i.d(e,{m:()=>o});var n=i(838);class o{constructor(){this.enable=!0,this.zIndex=0}load(t){(0,n.kZ)(t)||(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.zIndex&&(this.zIndex=t.zIndex))}}},7435(t,e,i){i.d(e,{Q:()=>c,p:()=>r});var n=i(7098),o=i(1317),s=i(838),a=i(1680);class r{constructor(){this.count=0,this.enable=!1,this.speed=1,this.decay=0,this.delay=0,this.sync=!1}load(t){(0,s.kZ)(t)||(void 0!==t.count&&(this.count=(0,a.DT)(t.count)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=(0,a.DT)(t.speed)),void 0!==t.decay&&(this.decay=(0,a.DT)(t.decay)),void 0!==t.delay&&(this.delay=(0,a.DT)(t.delay)),void 0!==t.sync&&(this.sync=t.sync))}}class c extends r{constructor(){super(),this.mode=n.g.auto,this.startValue=o.S.random}load(t){super.load(t),(0,s.kZ)(t)||(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.startValue&&(this.startValue=t.startValue))}}},7642(t,e,i){i.d(e,{$G:()=>I,$O:()=>B,$_:()=>F,$v:()=>J,$x:()=>S,BF:()=>Rt,BW:()=>h,DN:()=>Q,D_:()=>xt,Dv:()=>wt,Eo:()=>nt,FS:()=>H,Fl:()=>kt,GW:()=>C,Ie:()=>L,JC:()=>K,K3:()=>pt,KZ:()=>N,Kw:()=>M,L1:()=>D,LD:()=>gt,M1:()=>rt,MX:()=>r,N5:()=>ot,NF:()=>o,Nu:()=>St,Nx:()=>U,PZ:()=>Y,Pg:()=>O,R1:()=>p,RF:()=>b,RV:()=>G,Rh:()=>lt,Rq:()=>V,TL:()=>j,U0:()=>A,Ug:()=>d,WH:()=>it,X$:()=>y,X_:()=>at,Xu:()=>c,Zp:()=>P,a5:()=>a,aE:()=>Ot,aZ:()=>g,bo:()=>l,ce:()=>m,dm:()=>w,dv:()=>et,eb:()=>n,eu:()=>_,gd:()=>f,hB:()=>R,hK:()=>_t,hv:()=>q,i8:()=>X,iU:()=>Mt,jn:()=>Tt,l:()=>st,lA:()=>vt,mR:()=>u,nK:()=>s,nq:()=>ut,oi:()=>k,ou:()=>dt,pH:()=>mt,rq:()=>x,tA:()=>bt,tR:()=>Ft,td:()=>yt,un:()=>ct,vF:()=>W,vS:()=>T,vd:()=>zt,w2:()=>Z,wM:()=>ht,xH:()=>tt,xd:()=>z,yx:()=>E,z$:()=>v,z9:()=>ft,zg:()=>Pt,zs:()=>$});const n="generated",o="resize",s="visibilitychange",a=100,r=.5,c=1e3,l={x:0,y:0,z:0},d={a:1,b:0,c:0,d:1},u="random",h="mid",f=2,p=Math.PI*f,v=60,g=1,m="true",y="false",b="canvas",x=0,w=2,M=4,z=1,S=1,P=1,O=4,R=1,k=255,T=360,_=100,F=100,D=0,E=0,A=60,L=0,I=.25,V=r+I,C=0,$=1,Z=0,B=0,G=1,q=1,H=1,N=1,j=0,K=1,W=0,X=120,Q=0,U=0,J=1e4,Y=0,tt=1,et=0,it=1,nt=1,ot=0,st=1,at=0,rt=0,ct=-I,lt=1.5,dt=0,ut=1,ht=0,ft=0,pt=1,vt=1,gt=1,mt=500,yt=50,bt=0,xt=1,wt=0,Mt=1,zt=0,St=3,Pt=6,Ot=1,Rt=1,kt=0,Tt=0,_t=0,Ft=0},7897(t,e,i){i.d(e,{j:()=>s});var n=i(1640),o=i(838);class s{constructor(){this.default=n.Y.out}load(t){(0,o.kZ)(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)}}},7932(t,e,i){i.d(e,{B:()=>o,t:()=>s});const n={debug:console.debug,error:(t,e)=>{console.error(`tsParticles - Error - ${t}`,e)},info:console.info,log:console.log,verbose:console.log,warning:console.warn};function o(t){n.debug=t.debug,n.error=t.error,n.info=t.info,n.log=t.log,n.verbose=t.verbose,n.warning=t.warning}function s(){return n}},8020(t,e,i){var n;i.d(e,{V:()=>n}),function(t){t.none="none",t.max="max",t.min="min"}(n||(n={}))},8044(t,e,i){i.d(e,{I:()=>a});var n=i(8020),o=i(7435),s=i(838);class a extends o.Q{constructor(){super(),this.destroy=n.V.none,this.speed=2}load(t){super.load(t),(0,s.kZ)(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}},8095(t,e,i){i.d(e,{M:()=>s,p:()=>o});var n=i(7642);class o{constructor(t=n.bo.x,e=n.bo.y,i=n.bo.z){this._updateFromAngle=(t,e)=>{this.x=Math.cos(t)*e,this.y=Math.sin(t)*e},this.x=t,this.y=e,this.z=i}static get origin(){return o.create(n.bo.x,n.bo.y,n.bo.z)}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 o.create(t.x,t.y,t.z)}static create(t,e,i){return"number"==typeof t?new o(t,e??n.bo.y,i??n.bo.z):new o(t.x,t.y,Object.hasOwn(t,"z")?t.z:n.bo.z)}add(t){return o.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 o.clone(this)}distanceTo(t){return this.sub(t).length}distanceToSq(t){return this.sub(t).getLengthSq()}div(t){return o.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**n.dm+this.y**n.dm}mult(t){return o.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;t!=n.dv&&this.multTo(n.hB/t)}rotate(t){return o.create(this.x*Math.cos(t)-this.y*Math.sin(t),this.x*Math.sin(t)+this.y*Math.cos(t),n.bo.z)}setTo(t){this.x=t.x,this.y=t.y;const e=t;this.z=e.z?e.z:n.bo.z}sub(t){return o.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 s extends o{constructor(t=n.bo.x,e=n.bo.y){super(t,e,n.bo.z)}static get origin(){return s.create(n.bo.x,n.bo.y)}static clone(t){return s.create(t.x,t.y)}static create(t,e){return"number"==typeof t?new s(t,e??n.bo.y):new s(t.x,t.y)}}},8229(t,e,i){i.d(e,{b:()=>n});class n{constructor(t,e){this.position=t,this.particle=e}}},8907(t,e,i){i.d(e,{z:()=>o});var n=i(838);class o{constructor(){this.delay=.5,this.enable=!0}load(t){(0,n.kZ)(t)||(void 0!==t.delay&&(this.delay=t.delay),void 0!==t.enable&&(this.enable=t.enable))}}},9112(t,e,i){i.d(e,{o:()=>a});var n=i(913),o=i(9968),s=i(838);class a extends n.AI{constructor(){super(),this.animation=new o.q,this.value=3}load(t){if(super.load(t),(0,s.kZ)(t))return;const e=t.animation;void 0!==e&&this.animation.load(e)}}},9176(t,e,i){i.d(e,{Z:()=>o,y:()=>s});var n=i(3278);function o(t,...e){for(const i of e)t.load(i)}function s(t,e,...i){const s=new n.U(t,e);return o(s,...i),s}},9358(t,e,i){i.d(e,{P:()=>s});var n=i(913),o=i(838);class s extends n.PV{constructor(){super(),this.opacityRate=1,this.sizeRate=1,this.velocityRate=1}load(t){super.load(t),(0,o.kZ)(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))}}},9476(t,e,i){i.d(e,{Y:()=>a});var n=i(8044),o=i(913),s=i(838);class a extends o.AI{constructor(){super(),this.animation=new n.I,this.value=1}load(t){if((0,s.kZ)(t))return;super.load(t);const e=t.animation;void 0!==e&&this.animation.load(e)}}},9599(t,e,i){i.d(e,{BN:()=>u,EY:()=>S,Jv:()=>F,K6:()=>v,Ko:()=>_,LC:()=>z,OH:()=>x,O_:()=>R,PG:()=>O,R5:()=>p,YL:()=>y,_h:()=>P,ay:()=>b,eg:()=>m,mK:()=>f,pz:()=>k,qe:()=>h,xx:()=>w,zI:()=>g});var n=i(1680),o=i(7642),s=i(838),a=i(1292),r=i(302);const c=new Map;function l(t,e){let i=c.get(t);if(!i){if(i=e(),c.size>=1e3){[...c.keys()].slice(0,1e3*o.MX).forEach((t=>c.delete(t)))}c.set(t,i)}return i}function d(t,e){if(e)for(const i of t.colorManagers.values())if(i.accepts(e))return i.parseString(e)}function u(t,e,i,n=!0){if(!e)return;const o=(0,s.Kg)(e)?{value:e}:e;if((0,s.Kg)(o.value))return h(t,o.value,i,n);if((0,s.cy)(o.value)){const e=(0,r.Vh)(o.value,i,n);if(!e)return;return u(t,{value:e})}for(const e of t.colorManagers.values()){const t=e.handleRangeColor(o);if(t)return t}}function h(t,e,i,n=!0){if(!e)return;const a=(0,s.Kg)(e)?{value:e}:e;if((0,s.Kg)(a.value))return a.value===o.mR?x():m(t,a.value);if((0,s.cy)(a.value)){const e=(0,r.Vh)(a.value,i,n);if(!e)return;return h(t,{value:e})}for(const e of t.colorManagers.values()){const t=e.handleColor(a);if(t)return t}}function f(t,e,i,n=!0){const o=h(t,e,i,n);return o?v(o):void 0}function p(t,e,i,n=!0){const o=u(t,e,i,n);return o?v(o):void 0}function v(t){const e=t.r/o.oi,i=t.g/o.oi,n=t.b/o.oi,s=Math.max(e,i,n),a=Math.min(e,i,n),r={h:o.L1,l:(s+a)*o.MX,s:o.yx};return s!==a&&(r.s=r.l<o.MX?(s-a)/(s+a):(s-a)/(o.gd-s-a),r.h=e===s?(i-n)/(s-a):i===s?o.gd+(n-e)/(s-a):o.gd*o.gd+(e-i)/(s-a)),r.l*=o.$_,r.s*=o.eu,r.h*=o.U0,r.h<o.L1&&(r.h+=o.vS),r.h>=o.vS&&(r.h-=o.vS),r}function g(t,e){return d(t,e)?.a}function m(t,e){return d(t,e)}function y(t){const e=(t.h%o.vS+o.vS)%o.vS,i=Math.max(o.yx,Math.min(o.eu,t.s)),n=Math.max(o.vd,Math.min(o.$_,t.l)),s=e/o.vS,a=i/o.eu,r=n/o.$_;if(i===o.yx){const t=Math.round(r*o.oi);return{r:t,g:t,b:t}}const c=(t,e,i)=>{if(i<0&&i++,i>1&&i--,i*o.zg<1)return t+(e-t)*o.zg*i;if(i*o.gd<1)return e;if(i*o.Nu<1*o.gd){return t+(e-t)*(o.gd/o.Nu-i)*o.zg}return t},l=r<o.MX?r*(o.aE+a):r+a-r*a,d=o.gd*r-l,u=o.BF/o.Nu,h=Math.min(o.oi,o.oi*c(d,l,s+u)),f=Math.min(o.oi,o.oi*c(d,l,s)),p=Math.min(o.oi,o.oi*c(d,l,s-u));return{r:Math.round(h),g:Math.round(f),b:Math.round(p)}}function b(t){const e=y(t);return{a:t.a,b:e.b,g:e.g,r:e.r}}function x(t){const e=t??o.Fl,i=o.oi+o.D_,s=()=>Math.floor((0,n.e4)(e,i));return{b:s(),g:s(),r:s()}}function w(t,e,i){const n=i??o.hv;return l(`rgb-${t.r.toFixed(2)}-${t.g.toFixed(2)}-${t.b.toFixed(2)}-${e?"hdr":"sdr"}-${n.toString()}`,(()=>e?M(t,i):function(t,e){return`rgba(${t.r.toString()}, ${t.g.toString()}, ${t.b.toString()}, ${(e??o.hv).toString()})`}(t,i)))}function M(t,e){return`color(display-p3 ${(t.r/o.oi).toString()} ${(t.g/o.oi).toString()} ${(t.b/o.oi).toString()} / ${(e??o.hv).toString()})`}function z(t,e,i){const n=i??o.hv;return l(`hsl-${t.h.toFixed(2)}-${t.s.toFixed(2)}-${t.l.toFixed(2)}-${e?"hdr":"sdr"}-${n.toString()}`,(()=>e?function(t,e){return M(y(t),e)}(t,i):function(t,e){return`hsla(${t.h.toString()}, ${t.s.toString()}%, ${t.l.toString()}%, ${(e??o.hv).toString()})`}(t,i)))}function S(t,e,i,o){let s=t,a=e;return Object.hasOwn(s,"r")||(s=y(t)),Object.hasOwn(a,"r")||(a=y(e)),{b:(0,n.jh)(s.b,a.b,i,o),g:(0,n.jh)(s.g,a.g,i,o),r:(0,n.jh)(s.r,a.r,i,o)}}function P(t,e,i){if(i===o.mR)return x();if(i!==o.BW)return i;{const i=t.getFillColor()??t.getStrokeColor(),n=e?.getFillColor()??e?.getStrokeColor();if(i&&n&&e)return S(i,n,t.getRadius(),e.getRadius());{const t=i??n;if(t)return y(t)}}}function O(t,e,i,n){const a=(0,s.Kg)(e)?e:e.value;return a===o.mR?n?u(t,{value:a}):i?o.mR:o.BW:a===o.BW?o.BW:u(t,{value:a})}function R(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}function k(t,e,i){const n={h:{enable:!1,value:t.h},s:{enable:!1,value:t.s},l:{enable:!1,value:t.l}};return e&&(T(n.h,e.h,i),T(n.s,e.s,i),T(n.l,e.l,i)),n}function T(t,e,i){t.enable=e.enable,t.enable?(t.velocity=(0,n.VG)(e.speed)/o.a5*i,t.decay=o.WH-(0,n.VG)(e.decay),t.status=a.H.increasing,t.loops=o.hK,t.maxLoops=(0,n.VG)(e.count),t.time=o.tR,t.delayTime=(0,n.VG)(e.delay)*o.Xu,e.sync||(t.velocity*=(0,n.G0)(),t.value*=(0,n.G0)()),t.initialValue=t.value,t.offset=(0,n.DT)(e.offset)):t.velocity=o.jn}function _(t,e,i,o){if(!t.enable||(t.maxLoops??0)>0&&(t.loops??0)>(t.maxLoops??0))return;if(t.time??=0,(t.delayTime??0)>0&&t.time<(t.delayTime??0)&&(t.time+=o.value),(t.delayTime??0)>0&&t.time<(t.delayTime??0))return;const s=t.offset?(0,n.vE)(t.offset):0,r=(t.velocity??0)*o.factor+3.6*s,c=t.decay??1,l=(0,n.W9)(e),d=(0,n.Sg)(e);if(i&&t.status!==a.H.increasing){t.value-=r;const e=0;t.value<e&&(t.loops??=0,t.loops++,t.status=a.H.increasing)}else t.value+=r,t.value>l&&(t.loops??=0,t.loops++,i?t.status=a.H.decreasing:t.value-=l);t.velocity&&1!==c&&(t.velocity*=c),t.value=(0,n.qE)(t.value,d,l)}function F(t,e){if(!t)return;const{h:i,s:n,l:s}=t,a={h:{min:o.L1,max:o.vS},s:{min:o.yx,max:o.eu},l:{min:o.vd,max:o.$_}};_(i,a.h,!1,e),_(n,a.s,!0,e),_(s,a.l,!0,e)}},9968(t,e,i){i.d(e,{q:()=>a});var n=i(8020),o=i(7435),s=i(838);class a extends o.Q{constructor(){super(),this.destroy=n.V.none,this.speed=5}load(t){super.load(t),(0,s.kZ)(t)||void 0!==t.destroy&&(this.destroy=t.destroy)}}}},n={};function o(t){var e=n[t];if(void 0!==e)return e.exports;var s=n[t]={exports:{}};return i[t](s,s.exports,o),s.exports}o.m=i,o.d=(t,e)=>{for(var i in e)o.o(e,i)&&!o.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},o.f={},o.e=t=>Promise.all(Object.keys(o.f).reduce(((e,i)=>(o.f[i](t,e),e)),[])),o.u=t=>t+".min.js",o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t={},e="@tsparticles/engine:",o.l=(i,n,s,a)=>{if(t[i])t[i].push(n);else{var r,c;if(void 0!==s)for(var l=document.getElementsByTagName("script"),d=0;d<l.length;d++){var u=l[d];if(u.getAttribute("src")==i||u.getAttribute("data-webpack")==e+s){r=u;break}}r||(c=!0,(r=document.createElement("script")).charset="utf-8",o.nc&&r.setAttribute("nonce",o.nc),r.setAttribute("data-webpack",e+s),r.src=i),t[i]=[n];var h=(e,n)=>{r.onerror=r.onload=null,clearTimeout(f);var o=t[i];if(delete t[i],r.parentNode&&r.parentNode.removeChild(r),o&&o.forEach((t=>t(n))),e)return e(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=h.bind(null,r.onerror),r.onload=h.bind(null,r.onload),c&&document.head.appendChild(r)}},o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var i=e.getElementsByTagName("script");if(i.length)for(var n=i.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=i[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=t})(),(()=>{var t={397:0};o.f.j=(e,i)=>{var n=o.o(t,e)?t[e]:void 0;if(0!==n)if(n)i.push(n[2]);else{var s=new Promise(((i,o)=>n=t[e]=[i,o]));i.push(n[2]=s);var a=o.p+o.u(e),r=new Error;o.l(a,(i=>{if(o.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var s=i&&("load"===i.type?"missing":i.type),a=i&&i.target&&i.target.src;r.message="Loading chunk "+e+" failed.\n("+s+": "+a+")",r.name="ChunkLoadError",r.type=s,r.request=a,n[1](r)}}),"chunk-"+e,e)}};var e=(e,i)=>{var n,s,[a,r,c]=i,l=0;if(a.some((e=>0!==t[e]))){for(n in r)o.o(r,n)&&(o.m[n]=r[n]);if(c)c(o)}for(e&&e(i);l<a.length;l++)s=a[l],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0},i=this.webpackChunk_tsparticles_engine=this.webpackChunk_tsparticles_engine||[];i.forEach(e.bind(null,0)),i.push=e.bind(null,i.push.bind(i))})();var s={};o.r(s),o.d(s,{AlterType:()=>P.H,AnimatableColor:()=>F.A,AnimationMode:()=>w.g,AnimationOptions:()=>D.p,AnimationStatus:()=>_.H,AnimationValueWithRandom:()=>rt.Jm,Background:()=>E.V,BaseRange:()=>g.dg,Circle:()=>g.jl,ColorAnimation:()=>A.e,DestroyType:()=>O.V,EasingType:()=>R,EventType:()=>l.B,FullScreen:()=>L.m,GradientType:()=>b,HslAnimation:()=>I.i,LimitMode:()=>M.d,Move:()=>H.y,MoveAngle:()=>N.h,MoveAttract:()=>q.R,MoveCenter:()=>j.Z,MoveDirection:()=>y.F,MoveGravity:()=>K.y,MovePath:()=>X.v,Opacity:()=>tt.Y,OpacityAnimation:()=>et.I,Options:()=>V.J,OptionsColor:()=>C.O,OutMode:()=>z.Y,OutModeDirection:()=>x.v,OutModes:()=>W.j,ParticleOutType:()=>k.x,ParticlesBounce:()=>$.w,ParticlesBounceFactor:()=>Z.F,ParticlesDensity:()=>Y.M,ParticlesNumber:()=>U.N,ParticlesNumberLimit:()=>J.A,ParticlesOptions:()=>B.U,PixelMode:()=>S.q,Point:()=>v.b,RangedAnimationOptions:()=>D.Q,RangedAnimationValueWithRandom:()=>rt.AI,Rectangle:()=>g.M_,ResizeEvent:()=>at.z,RotateDirection:()=>p,Shape:()=>it.y,Size:()=>nt.o,SizeAnimation:()=>ot.q,Spin:()=>Q.t,StartValueType:()=>T.S,Stroke:()=>G.t,ValueWithRandom:()=>rt.PV,Vector:()=>m.M,Vector3d:()=>m.p,ZIndex:()=>st.P,alterHsl:()=>ct.yx,animate:()=>u.i0,areBoundsInside:()=>r.O2,arrayRandomIndex:()=>r.n0,calcExactPositionOrRandomFromSize:()=>u.Nx,calcExactPositionOrRandomFromSizeRanged:()=>u.qM,calcPositionFromSize:()=>u.eh,calcPositionOrRandomFromSize:()=>u.Mh,calcPositionOrRandomFromSizeRanged:()=>u.l1,calculateBounds:()=>r.AE,cancelAnimation:()=>u.px,canvasFirstIndex:()=>a.Nx,canvasTag:()=>a.RF,circleBounce:()=>r.pE,circleBounceDataFromParticle:()=>r.Tg,clamp:()=>u.qE,clear:()=>ct.IU,clearDrawPlugin:()=>ct.l7,clickRadius:()=>a.FS,cloneStyle:()=>r.td,collisionVelocity:()=>u.OW,colorMix:()=>lt.EY,colorToHsl:()=>lt.mK,colorToRgb:()=>lt.qe,countOffset:()=>a.nq,decayOffset:()=>a.WH,deepExtend:()=>r.zw,defaultAlpha:()=>a.aZ,defaultAngle:()=>a.tA,defaultDensityFactor:()=>a.lA,defaultFps:()=>a.z$,defaultFpsLimit:()=>a.i8,defaultLoops:()=>a.hK,defaultOpacity:()=>a.hv,defaultRadius:()=>a.M1,defaultRatio:()=>a.$x,defaultReduceFactor:()=>a.Zp,defaultRemoveQuantity:()=>a.xd,defaultRetryCount:()=>a.rq,defaultRgbMin:()=>a.Fl,defaultTime:()=>a.tR,defaultTransform:()=>a.Ug,defaultTransformValue:()=>a.zs,defaultVelocity:()=>a.jn,degToRad:()=>u.pu,deleteCount:()=>a.LD,double:()=>a.gd,doublePI:()=>a.R1,drawAfterEffect:()=>ct.k,drawBeforeEffect:()=>ct.z5,drawLine:()=>ct.V6,drawParticle:()=>ct.p0,drawParticlePlugin:()=>ct.Wb,drawPlugin:()=>ct.e_,drawShape:()=>ct.KG,drawShapeAfterDraw:()=>ct.gF,drawShapeBeforeDraw:()=>ct.VG,empty:()=>a.Ie,executeOnSingleOrMultiple:()=>r.wJ,findItemFromSingleOrMultiple:()=>r.w3,generatedAttribute:()=>a.eb,generatedFalse:()=>a.X$,generatedTrue:()=>a.ce,getDistance:()=>u.Yf,getDistances:()=>u.vr,getFullScreenStyle:()=>r.hJ,getHslAnimationFromHsl:()=>lt.pz,getHslFromAnimation:()=>lt.O_,getItemsFromInitializer:()=>r.HQ,getLinkColor:()=>lt._h,getLinkRandomColor:()=>lt.PG,getLogger:()=>d.t,getParticleBaseVelocity:()=>u.$m,getParticleDirectionAngle:()=>u.JY,getPosition:()=>r.E9,getRandom:()=>u.G0,getRandomInRange:()=>u.e4,getRandomRgbColor:()=>lt.OH,getRangeMax:()=>u.W9,getRangeMin:()=>u.Sg,getRangeValue:()=>u.VG,getSize:()=>r.YC,getStyleFromHsl:()=>lt.LC,getStyleFromRgb:()=>lt.xx,hMax:()=>a.vS,hMin:()=>a.L1,hPhase:()=>a.U0,half:()=>a.MX,hasMatchMedia:()=>r.q8,hslToRgb:()=>lt.YL,hslaToRgba:()=>lt.ay,identity:()=>a.D_,initParticleNumericAnimationValue:()=>r.Xs,inverseFactorNumerator:()=>a.hB,isArray:()=>ut.cy,isBoolean:()=>ut.Lm,isFunction:()=>ut.Tn,isInArray:()=>r.hn,isNull:()=>ut.kZ,isNumber:()=>ut.Et,isObject:()=>ut.Gv,isPointInside:()=>r.Tj,isString:()=>ut.Kg,itemFromArray:()=>r.Vh,itemFromSingleOrMultiple:()=>r.TA,lFactor:()=>a.iU,lMax:()=>a.$_,lMin:()=>a.vd,lengthOffset:()=>a.K3,loadFont:()=>r.Al,loadMinIndex:()=>a.PZ,loadOptions:()=>dt.Z,loadParticlesOptions:()=>dt.y,loadRandomFactor:()=>a.$v,manageListener:()=>r.Kp,manualDefaultPosition:()=>a.td,midColorValue:()=>a.BW,millisecondsToSeconds:()=>a.Xu,minCoordinate:()=>a.TL,minCount:()=>a.wM,minFpsLimit:()=>a.DN,minIndex:()=>a.z9,minLimit:()=>a.ou,minRetries:()=>a.N5,minStrokeWidth:()=>a.Dv,minVelocity:()=>a.GW,minZ:()=>a.X_,minimumLength:()=>a.$O,minimumSize:()=>a.w2,mix:()=>u.jh,none:()=>a.dv,one:()=>a.xH,originPoint:()=>a.bo,paintBase:()=>ct.Sn,paintImage:()=>ct.Md,parseAlpha:()=>u.M3,percentDenominator:()=>a.a5,phaseNumerator:()=>a.BF,posOffset:()=>a.un,qTreeCapacity:()=>a.Kw,quarter:()=>a.$G,randomColorValue:()=>a.mR,randomInRangeValue:()=>u.vE,rangeColorToHsl:()=>lt.R5,rangeColorToRgb:()=>lt.BN,removeDeleteCount:()=>a.JC,removeMinIndex:()=>a.vF,resizeEvent:()=>a.NF,rgbMax:()=>a.oi,rgbToHsl:()=>lt.K6,rollFactor:()=>a.l,sMax:()=>a.eu,sMin:()=>a.yx,sNormalizedOffset:()=>a.aE,safeDocument:()=>r.T5,safeIntersectionObserver:()=>r.BR,safeMatchMedia:()=>r.lV,safeMutationObserver:()=>r.tG,setAnimationFunctions:()=>u.AD,setLogger:()=>d.B,setRandom:()=>u.OE,setRangeValue:()=>u.DT,sextuple:()=>a.zg,sizeFactor:()=>a.Rh,squareExp:()=>a.dm,stringToAlpha:()=>lt.zI,stringToRgb:()=>lt.eg,subdivideCount:()=>a.Pg,threeQuarter:()=>a.Rq,touchDelay:()=>a.pH,touchEndLengthOffset:()=>a.KZ,triple:()=>a.Nu,tryCountIncrement:()=>a.Eo,tsParticles:()=>ht,updateAnimation:()=>r.UC,updateColor:()=>lt.Jv,updateColorValue:()=>lt.Ko,visibilityChangeEvent:()=>a.nK,zIndexFactorOffset:()=>a.RV});var a=o(7642),r=o(302);class c{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 n=i.length,o=i.indexOf(e);o<a.z9||(n===a.LD?this._listeners.delete(t):i.splice(o,a.LD))}}var l=o(3838),d=o(7932),u=o(1680);const h="100%";class f{constructor(){this._configs=new Map,this._domArray=[],this._eventDispatcher=new c,this._initialized=!1,this._isRunningLoaders=!1,this._loadPromises=new Set,this._allLoadersSet=new Set,this._executedSet=new Set,this.plugins=[],this.colorManagers=new Map,this.easingFunctions=new Map,this._initializers={movers:new Map,updaters: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"4.0.0-alpha.5"}addColorManager(t){this.colorManagers.set(t.key,t)}addConfig(t){const e=t.key??t.name??"default";this._configs.set(e,t),this._eventDispatcher.dispatchEvent(l.B.configAdded,{data:{name:e,config:t}})}addEasing(t,e){this.easingFunctions.get(t)||this.easingFunctions.set(t,e)}addEffect(t,e){this.getEffectDrawer(t)||this.effectDrawers.set(t,e)}addEventListener(t,e){this._eventDispatcher.addEventListener(t,e)}addMover(t,e){this._initializers.movers.set(t,e)}addParticleUpdater(t,e){this._initializers.updaters.set(t,e)}addPathGenerator(t,e){this.getPathGenerator(t)||this.pathGenerators.set(t,e)}addPlugin(t){this.getPlugin(t.id)||this.plugins.push(t)}addPreset(t,e,i=!1){!i&&this.getPreset(t)||this.presets.set(t,e)}addShape(t){for(const e of t.validTypes)this.getShapeDrawer(e)||this.shapeDrawers.set(e,t)}checkVersion(t){if(this.version!==t)throw new Error(`The tsParticles version is different from the loaded plugins version. Engine version: ${this.version}. Plugin version: ${t}`)}clearPlugins(t){this.updaters.delete(t),this.movers.delete(t)}dispatchEvent(t,e){this._eventDispatcher.dispatchEvent(t,e)}getEasing(t){return this.easingFunctions.get(t)??(t=>t)}getEffectDrawer(t){return this.effectDrawers.get(t)}async getMovers(t,e=!1){return(0,r.HQ)(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(0,r.HQ)(t,this.updaters,this._initializers.updaters,e)}async init(){if(!this._initialized&&!this._isRunningLoaders){this._isRunningLoaders=!0,this._executedSet=new Set,this._allLoadersSet=new Set(this._loadPromises);try{for(const t of this._allLoadersSet)await this._runLoader(t,this._executedSet,this._allLoadersSet)}finally{this._loadPromises.clear(),this._isRunningLoaders=!1,this._initialized=!0}}}item(t){const{items:e}=this,i=e[t];if(!i?.destroyed)return i;e.splice(t,a.JC)}async load(t){await this.init();const{Container:e}=await o.e(794).then(o.bind(o,8794)),i=t.id??t.element?.id??`tsparticles${Math.floor((0,u.G0)()*a.$v).toString()}`,{index:n,url:s}=t,c=s?await async function(t){const e=(0,r.TA)(t.url,t.index);if(!e)return t.fallback;const i=await fetch(e);return i.ok?await i.json():((0,d.t)().error(`${i.status.toString()} while retrieving config file`),t.fallback)}({fallback:t.options,url:s,index:n}):t.options,l=(0,r.TA)(c,n),{items:f}=this,p=f.findIndex((t=>t.id.description===i)),v=new e(this,i,l);if(p>=a.PZ){const t=this.item(p),e=t?a.xH:a.dv;t&&!t.destroyed&&t.destroy(!1),f.splice(p,e,v)}else f.push(v);const g=((t,e)=>{const i=(0,r.T5)();let n=e??i.getElementById(t);return n||(n=i.createElement("div"),n.id=t,n.dataset[a.eb]=a.ce,i.body.append(n),n)})(i,t.element),m=(t=>{const e=(0,r.T5)();let i;if(t instanceof HTMLCanvasElement||t.tagName.toLowerCase()===a.RF)i=t,i.dataset[a.eb]??=a.X$;else{const n=t.getElementsByTagName(a.RF)[a.Nx];n?(i=n,i.dataset[a.eb]=a.X$):(i=e.createElement(a.RF),i.dataset[a.eb]=a.ce,t.appendChild(i))}return i.style.width||=h,i.style.height||=h,i})(g);return v.canvas.loadCanvas(m),await v.start(),v}loadParticlesOptions(t,e,...i){const n=this.updaters.get(t);n&&n.forEach((t=>t.loadOptions?.(e,...i)))}async refresh(t=!0){t&&await Promise.all(this.items.map((t=>t.refresh())))}async register(...t){if(this._initialized)throw new Error("Register plugins can only be done before calling tsParticles.load()");for(const e of t)this._isRunningLoaders?await this._runLoader(e,this._executedSet,this._allLoadersSet):this._loadPromises.add(e)}removeEventListener(t,e){this._eventDispatcher.removeEventListener(t,e)}async _runLoader(t,e,i){e.has(t)||(e.add(t),i.add(t),await t(this))}}var p,v=o(8229),g=o(2984),m=o(8095),y=o(1953);!function(t){t.clockwise="clockwise",t.counterClockwise="counter-clockwise",t.random="random"}(p||(p={}));var b,x=o(5931),w=o(7098),M=o(6423),z=o(1640),S=o(5652),P=o(4326),O=o(8020);!function(t){t.linear="linear",t.radial="radial",t.random="random"}(b||(b={}));var R,k=o(6312),T=o(1317);!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"}(R||(R={}));var _=o(1292),F=o(7296),D=o(7435),E=o(1222),A=o(1784),L=o(7336),I=o(4056),V=o(2037),C=o(3254),$=o(4467),Z=o(6684),B=o(3278),G=o(5611),q=o(3079),H=o(3448),N=o(541),j=o(849),K=o(1872),W=o(7897),X=o(5979),Q=o(6649),U=o(511),J=o(2936),Y=o(6632),tt=o(9476),et=o(8044),it=o(1152),nt=o(9112),ot=o(9968),st=o(9358),at=o(8907),rt=o(913),ct=o(6754),lt=o(9599),dt=o(9176),ut=o(838);const ht=new f;return globalThis.tsParticles=ht,s})()));
@@ -1 +1 @@
1
- /*! tsParticles Engine v4.0.0-alpha.4 by Matteo Bruni */
1
+ /*! tsParticles Engine v4.0.0-alpha.5 by Matteo Bruni */
@@ -34,11 +34,14 @@ export declare class Engine {
34
34
  readonly presets: Map<string, RecursivePartial<import("../export-types.js").IOptions>>;
35
35
  readonly shapeDrawers: Map<string, IShapeDrawer<import("./Particle.js").Particle>>;
36
36
  readonly updaters: Map<Container, IParticleUpdater[]>;
37
+ private _allLoadersSet;
37
38
  private readonly _configs;
38
39
  private readonly _domArray;
39
40
  private readonly _eventDispatcher;
41
+ private _executedSet;
40
42
  private _initialized;
41
43
  private readonly _initializers;
44
+ private _isRunningLoaders;
42
45
  private readonly _loadPromises;
43
46
  constructor();
44
47
  get configs(): Record<string, ISourceOptions>;
@@ -73,7 +76,8 @@ export declare class Engine {
73
76
  load(params: ILoadParams): Promise<Container | undefined>;
74
77
  loadParticlesOptions(container: Container, options: ParticlesOptions, ...sourceOptions: (RecursivePartial<IParticlesOptions> | undefined)[]): void;
75
78
  refresh(refresh?: boolean): Promise<void>;
76
- register(...loadPromises: LoadPluginFunction[]): void;
79
+ register(...loaders: LoadPluginFunction[]): Promise<void>;
77
80
  removeEventListener(type: string, listener: CustomEventListener): void;
81
+ private _runLoader;
78
82
  }
79
83
  export {};
@@ -103,7 +103,10 @@ var __importStar = (this && this.__importStar) || (function () {
103
103
  this._domArray = [];
104
104
  this._eventDispatcher = new EventDispatcher_js_1.EventDispatcher();
105
105
  this._initialized = false;
106
+ this._isRunningLoaders = false;
106
107
  this._loadPromises = new Set();
108
+ this._allLoadersSet = new Set();
109
+ this._executedSet = new Set();
107
110
  this.plugins = [];
108
111
  this.colorManagers = new Map();
109
112
  this.easingFunctions = new Map();
@@ -129,7 +132,7 @@ var __importStar = (this && this.__importStar) || (function () {
129
132
  return this._domArray;
130
133
  }
131
134
  get version() {
132
- return "4.0.0-alpha.4";
135
+ return "4.0.0-alpha.5";
133
136
  }
134
137
  addColorManager(manager) {
135
138
  this.colorManagers.set(manager.key, manager);
@@ -230,40 +233,21 @@ var __importStar = (this && this.__importStar) || (function () {
230
233
  return (0, Utils_js_1.getItemsFromInitializer)(container, this.updaters, this._initializers.updaters, force);
231
234
  }
232
235
  async init() {
233
- if (this._initialized) {
236
+ if (this._initialized || this._isRunningLoaders)
234
237
  return;
235
- }
236
- const executed = new Set(), allLoaders = new Set(this._loadPromises), stack = [...allLoaders];
237
- while (stack.length) {
238
- const loader = stack.shift();
239
- if (!loader) {
240
- continue;
241
- }
242
- if (executed.has(loader)) {
243
- continue;
244
- }
245
- executed.add(loader);
246
- const inner = [], origRegister = this.register.bind(this);
247
- this.register = (...loaders) => {
248
- inner.push(...loaders);
249
- for (const loader of loaders) {
250
- allLoaders.add(loader);
251
- }
252
- };
253
- try {
254
- await loader(this);
238
+ this._isRunningLoaders = true;
239
+ this._executedSet = new Set();
240
+ this._allLoadersSet = new Set(this._loadPromises);
241
+ try {
242
+ for (const loader of this._allLoadersSet) {
243
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
255
244
  }
256
- finally {
257
- this.register = origRegister;
258
- }
259
- stack.unshift(...inner);
260
- this._loadPromises.delete(loader);
261
245
  }
262
- this._loadPromises.clear();
263
- for (const loader of allLoaders) {
264
- this._loadPromises.add(loader);
246
+ finally {
247
+ this._loadPromises.clear();
248
+ this._isRunningLoaders = false;
249
+ this._initialized = true;
265
250
  }
266
- this._initialized = true;
267
251
  }
268
252
  item(index) {
269
253
  const { items } = this, item = items[index];
@@ -275,7 +259,6 @@ var __importStar = (this && this.__importStar) || (function () {
275
259
  }
276
260
  async load(params) {
277
261
  await this.init();
278
- this._loadPromises.clear();
279
262
  const { Container } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Container.js"))) : new Promise((resolve_1, reject_1) => { require(["./Container.js"], resolve_1, reject_1); }).then(__importStar)), id = params.id ??
280
263
  params.element?.id ??
281
264
  `tsparticles${Math.floor((0, MathUtils_js_1.getRandom)() * Constants_js_1.loadRandomFactor).toString()}`, { index, url } = params, options = url ? await getDataFromUrl({ fallback: params.options, url, index }) : params.options, currentOptions = (0, Utils_js_1.itemFromSingleOrMultiple)(options, index), { items } = this, oldIndex = items.findIndex(v => v.id.description === id), newItem = new Container(this, id, currentOptions);
@@ -307,17 +290,29 @@ var __importStar = (this && this.__importStar) || (function () {
307
290
  }
308
291
  await Promise.all(this.items.map(t => t.refresh()));
309
292
  }
310
- register(...loadPromises) {
293
+ async register(...loaders) {
311
294
  if (this._initialized) {
312
- throw new Error(`Register plugins can only be done before calling tsParticles.load()`);
295
+ throw new Error("Register plugins can only be done before calling tsParticles.load()");
313
296
  }
314
- for (const loadPromise of loadPromises) {
315
- this._loadPromises.add(loadPromise);
297
+ for (const loader of loaders) {
298
+ if (this._isRunningLoaders) {
299
+ await this._runLoader(loader, this._executedSet, this._allLoadersSet);
300
+ }
301
+ else {
302
+ this._loadPromises.add(loader);
303
+ }
316
304
  }
317
305
  }
318
306
  removeEventListener(type, listener) {
319
307
  this._eventDispatcher.removeEventListener(type, listener);
320
308
  }
309
+ async _runLoader(loader, executed, allLoaders) {
310
+ if (executed.has(loader))
311
+ return;
312
+ executed.add(loader);
313
+ allLoaders.add(loader);
314
+ await loader(this);
315
+ }
321
316
  }
322
317
  exports.Engine = Engine;
323
318
  });
@@ -135,11 +135,15 @@
135
135
  continue;
136
136
  }
137
137
  const sourceIsArray = Array.isArray(source);
138
- if (sourceIsArray && ((0, TypeUtils_js_1.isObject)(destination) || !destination || !Array.isArray(destination))) {
139
- destination = [];
138
+ if (sourceIsArray) {
139
+ if (!Array.isArray(destination)) {
140
+ destination = [];
141
+ }
140
142
  }
141
- else if (!sourceIsArray && ((0, TypeUtils_js_1.isObject)(destination) || !destination || Array.isArray(destination))) {
142
- destination = {};
143
+ else {
144
+ if (!(0, TypeUtils_js_1.isObject)(destination) || Array.isArray(destination)) {
145
+ destination = {};
146
+ }
143
147
  }
144
148
  for (const key in source) {
145
149
  if (key === "__proto__") {