-
Notifications
You must be signed in to change notification settings - Fork 1
/
component---src-pages-index-js-38c39666ee6a801879a5.js.map
1 lines (1 loc) · 655 KB
/
component---src-pages-index-js-38c39666ee6a801879a5.js.map
1
{"version":3,"file":"component---src-pages-index-js-38c39666ee6a801879a5.js","mappings":"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","sources":["webpack://hans-website/./node_modules/fast-deep-equal/react.js","webpack://hans-website/./node_modules/gatsby-image/index.js","webpack://hans-website/./node_modules/gatsby-image/node_modules/prop-types/factoryWithThrowingShims.js","webpack://hans-website/./node_modules/gatsby-image/node_modules/prop-types/index.js","webpack://hans-website/./node_modules/gatsby-image/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://hans-website/./src/components/Avatar.js","webpack://hans-website/./src/assets/bulogo.jpg","webpack://hans-website/./src/assets/liulogo.jpg","webpack://hans-website/./src/assets/ibmlogo.png","webpack://hans-website/./src/assets/vslogo.png","webpack://hans-website/./src/assets/fbavatar.jpg","webpack://hans-website/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://hans-website/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://hans-website/./src/components/Icon.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/EventDispatcher.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Vector3d.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Vector.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/NumberUtils.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/Utils.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/ColorUtils.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/CanvasUtils.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Constants.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Canvas.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/EventListeners.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/FrameManager.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/OptionsColor.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Background/Background.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/BackgroundMask/BackgroundMaskCover.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/BackgroundMask/BackgroundMask.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/FullScreen/FullScreen.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/ClickEvent.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/DivEvent.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/Parallax.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/HoverEvent.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/ResizeEvent.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Events/Events.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Modes/Modes.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Interactivity/Interactivity.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/ManualParticle.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Responsive.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Theme/ThemeDefault.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Theme/Theme.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/ColorAnimation.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/HslAnimation.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/AnimatableColor.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Collisions/CollisionsAbsorb.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Collisions/CollisionsOverlap.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Random.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/ValueWithRandom.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Bounce/ParticlesBounceFactor.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Bounce/ParticlesBounce.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Collisions/Collisions.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveAngle.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveAttract.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveCenter.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveGravity.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/Path/MovePath.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/MoveTrail.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/OutModes.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/Spin.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Move/Move.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/AnimationOptions.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Opacity/OpacityAnimation.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Opacity/Opacity.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Number/ParticlesDensity.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Number/ParticlesNumber.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Shadow.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Shape/Shape.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Size/SizeAnimation.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Size/Size.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/Stroke.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/ZIndex/ZIndex.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Particles/ParticlesOptions.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/OptionsUtils.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Options/Classes/Options.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/InteractionManager.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Particle.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Point.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Range.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Circle.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Rectangle.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/QuadTree.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Particles.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Retina.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Container.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Loader.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Core/Utils/Plugins.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/index.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/RgbColorManager.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/Utils/HslColorManager.js","webpack://hans-website/./node_modules/tsparticles-engine/esm/engine.js","webpack://hans-website/./node_modules/react-tsparticles/esm/Particles.js","webpack://hans-website/./node_modules/react-tsparticles/esm/index.js","webpack://hans-website/./node_modules/tsparticles-move-base/esm/BaseMover.js","webpack://hans-website/./node_modules/tsparticles-move-base/esm/Utils.js","webpack://hans-website/./node_modules/tsparticles-shape-circle/esm/CircleDrawer.js","webpack://hans-website/./node_modules/tsparticles-updater-color/esm/ColorUpdater.js","webpack://hans-website/./node_modules/tsparticles-updater-opacity/esm/OpacityUpdater.js","webpack://hans-website/./node_modules/tsparticles-updater-out-modes/esm/BounceOutMode.js","webpack://hans-website/./node_modules/tsparticles-updater-out-modes/esm/Utils.js","webpack://hans-website/./node_modules/tsparticles-updater-out-modes/esm/DestroyOutMode.js","webpack://hans-website/./node_modules/tsparticles-updater-out-modes/esm/NoneOutMode.js","webpack://hans-website/./node_modules/tsparticles-updater-out-modes/esm/OutOutMode.js","webpack://hans-website/./node_modules/tsparticles-updater-out-modes/esm/OutOfCanvasUpdater.js","webpack://hans-website/./node_modules/tsparticles-updater-size/esm/SizeUpdater.js","webpack://hans-website/./node_modules/tsparticles-updater-wobble/esm/Options/Classes/WobbleSpeed.js","webpack://hans-website/./node_modules/tsparticles-updater-wobble/esm/Options/Classes/Wobble.js","webpack://hans-website/./node_modules/tsparticles-updater-wobble/esm/WobbleUpdater.js","webpack://hans-website/./node_modules/tsparticles-preset-snow/esm/options.js","webpack://hans-website/./node_modules/tsparticles-preset-snow/esm/index.js","webpack://hans-website/./node_modules/tsparticles-move-base/esm/index.js","webpack://hans-website/./node_modules/tsparticles-shape-circle/esm/index.js","webpack://hans-website/./node_modules/tsparticles-updater-color/esm/index.js","webpack://hans-website/./node_modules/tsparticles-updater-opacity/esm/index.js","webpack://hans-website/./node_modules/tsparticles-updater-out-modes/esm/index.js","webpack://hans-website/./node_modules/tsparticles-updater-size/esm/index.js","webpack://hans-website/./node_modules/tsparticles-updater-wobble/esm/index.js","webpack://hans-website/./src/pages/index.js","webpack://hans-website/./src/assets/aslogo.png","webpack://hans-website/./src/assets/neatlogo.jpg","webpack://hans-website/./src/assets/cmuLogo.png","webpack://hans-website/./src/assets/mixpanelLogo.png","webpack://hans-website/./node_modules/@babel/runtime/helpers/extends.js","webpack://hans-website/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _excluded = [\"sizes\", \"srcSet\", \"src\", \"style\", \"onLoad\", \"onError\", \"loading\", \"draggable\", \"ariaHidden\"];\n\nvar logDeprecationNotice = function logDeprecationNotice(prop, replacement) {\n if (process.env.NODE_ENV === \"production\") {\n return;\n }\n\n console.log(\"\\n The \\\"\" + prop + \"\\\" prop is now deprecated and will be removed in the next major version\\n of \\\"gatsby-image\\\".\\n \");\n\n if (replacement) {\n console.log(\"Please use \" + replacement + \" instead of \\\"\" + prop + \"\\\".\");\n }\n}; // Handle legacy props during their deprecation phase\n\n\nvar convertProps = function convertProps(props) {\n var convertedProps = (0, _extends2.default)({}, props);\n var resolutions = convertedProps.resolutions,\n sizes = convertedProps.sizes,\n critical = convertedProps.critical;\n\n if (resolutions) {\n convertedProps.fixed = resolutions;\n logDeprecationNotice(\"resolutions\", \"the gatsby-image v2 prop \\\"fixed\\\"\");\n delete convertedProps.resolutions;\n }\n\n if (sizes) {\n convertedProps.fluid = sizes;\n logDeprecationNotice(\"sizes\", \"the gatsby-image v2 prop \\\"fluid\\\"\");\n delete convertedProps.sizes;\n }\n\n if (critical) {\n logDeprecationNotice(\"critical\", \"the native \\\"loading\\\" attribute\");\n convertedProps.loading = \"eager\";\n } // convert fluid & fixed to arrays so we only have to work with arrays\n\n\n if (convertedProps.fluid) {\n convertedProps.fluid = groupByMedia([].concat(convertedProps.fluid));\n }\n\n if (convertedProps.fixed) {\n convertedProps.fixed = groupByMedia([].concat(convertedProps.fixed));\n }\n\n return convertedProps;\n};\n/**\n * Checks if fluid or fixed are art-direction arrays.\n *\n * @param currentData {{media?: string}[]} The props to check for images.\n * @return {boolean}\n */\n\n\nvar hasArtDirectionSupport = function hasArtDirectionSupport(currentData) {\n return !!currentData && Array.isArray(currentData) && currentData.some(function (image) {\n return typeof image.media !== \"undefined\";\n });\n};\n/**\n * Tries to detect if a media query matches the current viewport.\n * @property media {{media?: string}} A media query string.\n * @return {boolean}\n */\n\n\nvar matchesMedia = function matchesMedia(_ref) {\n var media = _ref.media;\n return media ? isBrowser && !!window.matchMedia(media).matches : false;\n};\n/**\n * Find the source of an image to use as a key in the image cache.\n * Use `the first image in either `fixed` or `fluid`\n * @param {{fluid: {src: string, media?: string}[], fixed: {src: string, media?: string}[]}} args\n * @return {string?} Returns image src or undefined it not given.\n */\n\n\nvar getImageCacheKey = function getImageCacheKey(_ref2) {\n var fluid = _ref2.fluid,\n fixed = _ref2.fixed;\n var srcData = getCurrentSrcData(fluid || fixed || []);\n return srcData && srcData.src;\n};\n/**\n * Returns the current src - Preferably with art-direction support.\n * @param currentData {{media?: string}[], maxWidth?: Number, maxHeight?: Number} The fluid or fixed image array.\n * @return {{src: string, media?: string, maxWidth?: Number, maxHeight?: Number}}\n */\n\n\nvar getCurrentSrcData = function getCurrentSrcData(currentData) {\n if (isBrowser && hasArtDirectionSupport(currentData)) {\n // Do we have an image for the current Viewport?\n var foundMedia = currentData.findIndex(matchesMedia);\n\n if (foundMedia !== -1) {\n return currentData[foundMedia];\n } // No media matches, select first element without a media condition\n\n\n var noMedia = currentData.findIndex(function (image) {\n return typeof image.media === \"undefined\";\n });\n\n if (noMedia !== -1) {\n return currentData[noMedia];\n }\n } // Else return the first image.\n\n\n return currentData[0];\n}; // Cache if we've seen an image before so we don't bother with\n// lazy-loading & fading in on subsequent mounts.\n\n\nvar imageCache = Object.create({});\n\nvar inImageCache = function inImageCache(props) {\n var convertedProps = convertProps(props);\n var cacheKey = getImageCacheKey(convertedProps);\n return imageCache[cacheKey] || false;\n};\n\nvar activateCacheForImage = function activateCacheForImage(props) {\n var convertedProps = convertProps(props);\n var cacheKey = getImageCacheKey(convertedProps);\n\n if (cacheKey) {\n imageCache[cacheKey] = true;\n }\n}; // Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\n\n\nvar hasNativeLazyLoadSupport = typeof HTMLImageElement !== \"undefined\" && \"loading\" in HTMLImageElement.prototype;\nvar isBrowser = typeof window !== \"undefined\";\nvar hasIOSupport = isBrowser && window.IntersectionObserver;\nvar io;\nvar listeners = new WeakMap();\n\nfunction getIO() {\n if (typeof io === \"undefined\" && typeof window !== \"undefined\" && window.IntersectionObserver) {\n io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (listeners.has(entry.target)) {\n var cb = listeners.get(entry.target); // Edge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(entry.target);\n listeners.delete(entry.target);\n cb();\n }\n }\n });\n }, {\n rootMargin: \"200px\"\n });\n }\n\n return io;\n}\n\nfunction generateImageSources(imageVariants) {\n return imageVariants.map(function (_ref3) {\n var src = _ref3.src,\n srcSet = _ref3.srcSet,\n srcSetWebp = _ref3.srcSetWebp,\n media = _ref3.media,\n sizes = _ref3.sizes;\n return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {\n key: src\n }, srcSetWebp && /*#__PURE__*/_react.default.createElement(\"source\", {\n type: \"image/webp\",\n media: media,\n srcSet: srcSetWebp,\n sizes: sizes\n }), srcSet && /*#__PURE__*/_react.default.createElement(\"source\", {\n media: media,\n srcSet: srcSet,\n sizes: sizes\n }));\n });\n} // Return an array ordered by elements having a media prop, does not use\n// native sort, as a stable sort is not guaranteed by all browsers/versions\n\n\nfunction groupByMedia(imageVariants) {\n var withMedia = [];\n var without = [];\n imageVariants.forEach(function (variant) {\n return (variant.media ? withMedia : without).push(variant);\n });\n\n if (without.length > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"We've found \" + without.length + \" sources without a media property. They might be ignored by the browser, see: https://www.gatsbyjs.org/packages/gatsby-image/#art-directing-multiple-images\");\n }\n\n return [].concat(withMedia, without);\n}\n\nfunction generateTracedSVGSources(imageVariants) {\n return imageVariants.map(function (_ref4) {\n var src = _ref4.src,\n media = _ref4.media,\n tracedSVG = _ref4.tracedSVG;\n return /*#__PURE__*/_react.default.createElement(\"source\", {\n key: src,\n media: media,\n srcSet: tracedSVG\n });\n });\n}\n\nfunction generateBase64Sources(imageVariants) {\n return imageVariants.map(function (_ref5) {\n var src = _ref5.src,\n media = _ref5.media,\n base64 = _ref5.base64;\n return /*#__PURE__*/_react.default.createElement(\"source\", {\n key: src,\n media: media,\n srcSet: base64\n });\n });\n}\n\nfunction generateNoscriptSource(_ref6, isWebp) {\n var srcSet = _ref6.srcSet,\n srcSetWebp = _ref6.srcSetWebp,\n media = _ref6.media,\n sizes = _ref6.sizes;\n var src = isWebp ? srcSetWebp : srcSet;\n var mediaAttr = media ? \"media=\\\"\" + media + \"\\\" \" : \"\";\n var typeAttr = isWebp ? \"type='image/webp' \" : \"\";\n var sizesAttr = sizes ? \"sizes=\\\"\" + sizes + \"\\\" \" : \"\";\n return \"<source \" + typeAttr + mediaAttr + \"srcset=\\\"\" + src + \"\\\" \" + sizesAttr + \"/>\";\n}\n\nfunction generateNoscriptSources(imageVariants) {\n return imageVariants.map(function (variant) {\n return (variant.srcSetWebp ? generateNoscriptSource(variant, true) : \"\") + generateNoscriptSource(variant);\n }).join(\"\");\n}\n\nvar listenToIntersections = function listenToIntersections(el, cb) {\n var observer = getIO();\n\n if (observer) {\n observer.observe(el);\n listeners.set(el, cb);\n }\n\n return function () {\n observer.unobserve(el);\n listeners.delete(el);\n };\n};\n\nvar noscriptImg = function noscriptImg(props) {\n // Check if prop exists before adding each attribute to the string output below to prevent\n // HTML validation issues caused by empty values like width=\"\" and height=\"\"\n var src = props.src ? \"src=\\\"\" + props.src + \"\\\" \" : \"src=\\\"\\\" \"; // required attribute\n\n var sizes = props.sizes ? \"sizes=\\\"\" + props.sizes + \"\\\" \" : \"\";\n var srcSet = props.srcSet ? \"srcset=\\\"\" + props.srcSet + \"\\\" \" : \"\";\n var title = props.title ? \"title=\\\"\" + props.title + \"\\\" \" : \"\";\n var alt = props.alt ? \"alt=\\\"\" + props.alt + \"\\\" \" : \"alt=\\\"\\\" \"; // required attribute\n\n var width = props.width ? \"width=\\\"\" + props.width + \"\\\" \" : \"\";\n var height = props.height ? \"height=\\\"\" + props.height + \"\\\" \" : \"\";\n var crossOrigin = props.crossOrigin ? \"crossorigin=\\\"\" + props.crossOrigin + \"\\\" \" : \"\";\n var loading = props.loading ? \"loading=\\\"\" + props.loading + \"\\\" \" : \"\";\n var draggable = props.draggable ? \"draggable=\\\"\" + props.draggable + \"\\\" \" : \"\";\n var sources = generateNoscriptSources(props.imageVariants);\n return \"<picture>\" + sources + \"<img \" + loading + width + height + sizes + srcSet + src + alt + title + crossOrigin + draggable + \"style=\\\"position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center\\\"/></picture>\";\n}; // Earlier versions of gatsby-image during the 2.x cycle did not wrap\n// the `Img` component in a `picture` element. This maintains compatibility\n// until a breaking change can be introduced in the next major release\n\n\nvar Placeholder = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var src = props.src,\n imageVariants = props.imageVariants,\n generateSources = props.generateSources,\n spreadProps = props.spreadProps,\n ariaHidden = props.ariaHidden;\n\n var baseImage = /*#__PURE__*/_react.default.createElement(Img, (0, _extends2.default)({\n ref: ref,\n src: src\n }, spreadProps, {\n ariaHidden: ariaHidden\n }));\n\n return imageVariants.length > 1 ? /*#__PURE__*/_react.default.createElement(\"picture\", null, generateSources(imageVariants), baseImage) : baseImage;\n});\n\nvar Img = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n var sizes = props.sizes,\n srcSet = props.srcSet,\n src = props.src,\n style = props.style,\n onLoad = props.onLoad,\n onError = props.onError,\n loading = props.loading,\n draggable = props.draggable,\n ariaHidden = props.ariaHidden,\n otherProps = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);\n return /*#__PURE__*/_react.default.createElement(\"img\", (0, _extends2.default)({\n \"aria-hidden\": ariaHidden,\n sizes: sizes,\n srcSet: srcSet,\n src: src\n }, otherProps, {\n onLoad: onLoad,\n onError: onError,\n ref: ref,\n loading: loading,\n draggable: draggable,\n style: (0, _extends2.default)({\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n objectPosition: \"center\"\n }, style)\n }));\n});\n\nImg.propTypes = {\n style: _propTypes.default.object,\n onError: _propTypes.default.func,\n onLoad: _propTypes.default.func\n};\n\nvar Image = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(Image, _React$Component);\n\n function Image(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // If this image has already been loaded before then we can assume it's\n // already in the browser cache so it's cheap to just show directly.\n\n _this.seenBefore = isBrowser && inImageCache(props);\n _this.isCritical = props.loading === \"eager\" || props.critical;\n _this.addNoScript = !(_this.isCritical && !props.fadeIn);\n _this.useIOSupport = !hasNativeLazyLoadSupport && hasIOSupport && !_this.isCritical && !_this.seenBefore;\n var isVisible = _this.isCritical || isBrowser && (hasNativeLazyLoadSupport || !_this.useIOSupport);\n _this.state = {\n isVisible: isVisible,\n imgLoaded: false,\n imgCached: false,\n fadeIn: !_this.seenBefore && props.fadeIn,\n isHydrated: false\n };\n _this.imageRef = /*#__PURE__*/_react.default.createRef();\n _this.placeholderRef = props.placeholderRef || /*#__PURE__*/_react.default.createRef();\n _this.handleImageLoaded = _this.handleImageLoaded.bind((0, _assertThisInitialized2.default)(_this));\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = Image.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.setState({\n isHydrated: isBrowser\n });\n\n if (this.state.isVisible && typeof this.props.onStartLoad === \"function\") {\n this.props.onStartLoad({\n wasCached: inImageCache(this.props)\n });\n }\n\n if (this.isCritical) {\n var img = this.imageRef.current;\n\n if (img && img.complete) {\n this.handleImageLoaded();\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.cleanUpListeners) {\n this.cleanUpListeners();\n }\n } // Specific to IntersectionObserver based lazy-load support\n ;\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.useIOSupport && ref) {\n this.cleanUpListeners = listenToIntersections(ref, function () {\n var imageInCache = inImageCache(_this2.props);\n\n if (!_this2.state.isVisible && typeof _this2.props.onStartLoad === \"function\") {\n _this2.props.onStartLoad({\n wasCached: imageInCache\n });\n } // imgCached and imgLoaded must update after isVisible,\n // Once isVisible is true, imageRef becomes accessible, which imgCached needs access to.\n // imgLoaded and imgCached are in a 2nd setState call to be changed together,\n // avoiding initiating unnecessary animation frames from style changes.\n\n\n _this2.setState({\n isVisible: true\n }, function () {\n _this2.setState({\n imgLoaded: imageInCache,\n // `currentSrc` should be a string, but can be `undefined` in IE,\n // !! operator validates the value is not undefined/null/\"\"\n // for lazyloaded components this might be null\n // TODO fix imgCached behaviour as it's now false when it's lazyloaded\n imgCached: !!(_this2.imageRef.current && _this2.imageRef.current.currentSrc)\n });\n });\n });\n }\n };\n\n _proto.handleImageLoaded = function handleImageLoaded() {\n activateCacheForImage(this.props);\n this.setState({\n imgLoaded: true\n });\n\n if (this.props.onLoad) {\n this.props.onLoad();\n }\n };\n\n _proto.render = function render() {\n var _convertProps = convertProps(this.props),\n title = _convertProps.title,\n alt = _convertProps.alt,\n className = _convertProps.className,\n _convertProps$style = _convertProps.style,\n style = _convertProps$style === void 0 ? {} : _convertProps$style,\n _convertProps$imgStyl = _convertProps.imgStyle,\n imgStyle = _convertProps$imgStyl === void 0 ? {} : _convertProps$imgStyl,\n _convertProps$placeho = _convertProps.placeholderStyle,\n placeholderStyle = _convertProps$placeho === void 0 ? {} : _convertProps$placeho,\n placeholderClassName = _convertProps.placeholderClassName,\n fluid = _convertProps.fluid,\n fixed = _convertProps.fixed,\n backgroundColor = _convertProps.backgroundColor,\n durationFadeIn = _convertProps.durationFadeIn,\n Tag = _convertProps.Tag,\n itemProp = _convertProps.itemProp,\n loading = _convertProps.loading,\n draggable = _convertProps.draggable;\n\n var imageVariants = fluid || fixed; // Abort early if missing image data (#25371)\n\n if (!imageVariants) {\n return null;\n }\n\n var shouldReveal = this.state.fadeIn === false || this.state.imgLoaded;\n var shouldFadeIn = this.state.fadeIn === true && !this.state.imgCached;\n var imageStyle = (0, _extends2.default)({\n opacity: shouldReveal ? 1 : 0,\n transition: shouldFadeIn ? \"opacity \" + durationFadeIn + \"ms\" : \"none\"\n }, imgStyle);\n var bgColor = typeof backgroundColor === \"boolean\" ? \"lightgray\" : backgroundColor;\n var delayHideStyle = {\n transitionDelay: durationFadeIn + \"ms\"\n };\n var imagePlaceholderStyle = (0, _extends2.default)({\n opacity: this.state.imgLoaded ? 0 : 1\n }, shouldFadeIn && delayHideStyle, imgStyle, placeholderStyle);\n var placeholderImageProps = {\n title: title,\n alt: !this.state.isVisible ? alt : \"\",\n style: imagePlaceholderStyle,\n className: placeholderClassName,\n itemProp: itemProp\n }; // Initial client render state needs to match SSR until hydration finishes.\n // Once hydration completes, render again to update to the correct image.\n // `imageVariants` is always an Array type at this point due to `convertProps()`\n\n var image = !this.state.isHydrated ? imageVariants[0] : getCurrentSrcData(imageVariants);\n\n if (fluid) {\n return /*#__PURE__*/_react.default.createElement(Tag, {\n className: (className ? className : \"\") + \" gatsby-image-wrapper\",\n style: (0, _extends2.default)({\n position: \"relative\",\n overflow: \"hidden\",\n maxWidth: image.maxWidth ? image.maxWidth + \"px\" : null,\n maxHeight: image.maxHeight ? image.maxHeight + \"px\" : null\n }, style),\n ref: this.handleRef,\n key: \"fluid-\" + JSON.stringify(image.srcSet)\n }, /*#__PURE__*/_react.default.createElement(Tag, {\n \"aria-hidden\": true,\n style: {\n width: \"100%\",\n paddingBottom: 100 / image.aspectRatio + \"%\"\n }\n }), bgColor && /*#__PURE__*/_react.default.createElement(Tag, {\n \"aria-hidden\": true,\n title: title,\n style: (0, _extends2.default)({\n backgroundColor: bgColor,\n position: \"absolute\",\n top: 0,\n bottom: 0,\n opacity: !this.state.imgLoaded ? 1 : 0,\n right: 0,\n left: 0\n }, shouldFadeIn && delayHideStyle)\n }), image.base64 && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: image.base64,\n spreadProps: placeholderImageProps,\n imageVariants: imageVariants,\n generateSources: generateBase64Sources\n }), image.tracedSVG && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: image.tracedSVG,\n spreadProps: placeholderImageProps,\n imageVariants: imageVariants,\n generateSources: generateTracedSVGSources\n }), this.state.isVisible && /*#__PURE__*/_react.default.createElement(\"picture\", null, generateImageSources(imageVariants), /*#__PURE__*/_react.default.createElement(Img, {\n alt: alt,\n title: title,\n sizes: image.sizes,\n src: image.src,\n crossOrigin: this.props.crossOrigin,\n srcSet: image.srcSet,\n style: imageStyle,\n ref: this.imageRef,\n onLoad: this.handleImageLoaded,\n onError: this.props.onError,\n itemProp: itemProp,\n loading: loading,\n draggable: draggable\n })), this.addNoScript && /*#__PURE__*/_react.default.createElement(\"noscript\", {\n dangerouslySetInnerHTML: {\n __html: noscriptImg((0, _extends2.default)({\n alt: alt,\n title: title,\n loading: loading\n }, image, {\n imageVariants: imageVariants\n }))\n }\n }));\n }\n\n if (fixed) {\n var divStyle = (0, _extends2.default)({\n position: \"relative\",\n overflow: \"hidden\",\n display: \"inline-block\",\n width: image.width,\n height: image.height\n }, style);\n\n if (style.display === \"inherit\") {\n delete divStyle.display;\n }\n\n return /*#__PURE__*/_react.default.createElement(Tag, {\n className: (className ? className : \"\") + \" gatsby-image-wrapper\",\n style: divStyle,\n ref: this.handleRef,\n key: \"fixed-\" + JSON.stringify(image.srcSet)\n }, bgColor && /*#__PURE__*/_react.default.createElement(Tag, {\n \"aria-hidden\": true,\n title: title,\n style: (0, _extends2.default)({\n backgroundColor: bgColor,\n width: image.width,\n opacity: !this.state.imgLoaded ? 1 : 0,\n height: image.height\n }, shouldFadeIn && delayHideStyle)\n }), image.base64 && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: image.base64,\n spreadProps: placeholderImageProps,\n imageVariants: imageVariants,\n generateSources: generateBase64Sources\n }), image.tracedSVG && /*#__PURE__*/_react.default.createElement(Placeholder, {\n ariaHidden: true,\n ref: this.placeholderRef,\n src: image.tracedSVG,\n spreadProps: placeholderImageProps,\n imageVariants: imageVariants,\n generateSources: generateTracedSVGSources\n }), this.state.isVisible && /*#__PURE__*/_react.default.createElement(\"picture\", null, generateImageSources(imageVariants), /*#__PURE__*/_react.default.createElement(Img, {\n alt: alt,\n title: title,\n width: image.width,\n height: image.height,\n sizes: image.sizes,\n src: image.src,\n crossOrigin: this.props.crossOrigin,\n srcSet: image.srcSet,\n style: imageStyle,\n ref: this.imageRef,\n onLoad: this.handleImageLoaded,\n onError: this.props.onError,\n itemProp: itemProp,\n loading: loading,\n draggable: draggable\n })), this.addNoScript && /*#__PURE__*/_react.default.createElement(\"noscript\", {\n dangerouslySetInnerHTML: {\n __html: noscriptImg((0, _extends2.default)({\n alt: alt,\n title: title,\n loading: loading\n }, image, {\n imageVariants: imageVariants\n }))\n }\n }));\n }\n\n return null;\n };\n\n return Image;\n}(_react.default.Component);\n\nImage.defaultProps = {\n fadeIn: true,\n durationFadeIn: 500,\n alt: \"\",\n Tag: \"div\",\n // We set it to `lazy` by default because it's best to default to a performant\n // setting and let the user \"opt out\" to `eager`\n loading: \"lazy\"\n};\n\nvar fixedObject = _propTypes.default.shape({\n width: _propTypes.default.number.isRequired,\n height: _propTypes.default.number.isRequired,\n src: _propTypes.default.string.isRequired,\n srcSet: _propTypes.default.string.isRequired,\n base64: _propTypes.default.string,\n tracedSVG: _propTypes.default.string,\n srcWebp: _propTypes.default.string,\n srcSetWebp: _propTypes.default.string,\n media: _propTypes.default.string\n});\n\nvar fluidObject = _propTypes.default.shape({\n aspectRatio: _propTypes.default.number.isRequired,\n src: _propTypes.default.string.isRequired,\n srcSet: _propTypes.default.string.isRequired,\n sizes: _propTypes.default.string.isRequired,\n base64: _propTypes.default.string,\n tracedSVG: _propTypes.default.string,\n srcWebp: _propTypes.default.string,\n srcSetWebp: _propTypes.default.string,\n media: _propTypes.default.string,\n maxWidth: _propTypes.default.number,\n maxHeight: _propTypes.default.number\n});\n\nfunction requireFixedOrFluid(originalPropTypes) {\n return function (props, propName, componentName) {\n var _PropTypes$checkPropT;\n\n if (!props.fixed && !props.fluid) {\n throw new Error(\"The prop `fluid` or `fixed` is marked as required in `\" + componentName + \"`, but their values are both `undefined`.\");\n }\n\n _propTypes.default.checkPropTypes((_PropTypes$checkPropT = {}, _PropTypes$checkPropT[propName] = originalPropTypes, _PropTypes$checkPropT), props, \"prop\", componentName);\n };\n} // If you modify these propTypes, please don't forget to update following files as well:\n// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-image/index.d.ts\n// https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-image/README.md#gatsby-image-props\n// https://github.com/gatsbyjs/gatsby/blob/master/docs/docs/gatsby-image.md#gatsby-image-props\n\n\nImage.propTypes = {\n resolutions: fixedObject,\n sizes: fluidObject,\n fixed: requireFixedOrFluid(_propTypes.default.oneOfType([fixedObject, _propTypes.default.arrayOf(fixedObject)])),\n fluid: requireFixedOrFluid(_propTypes.default.oneOfType([fluidObject, _propTypes.default.arrayOf(fluidObject)])),\n fadeIn: _propTypes.default.bool,\n durationFadeIn: _propTypes.default.number,\n title: _propTypes.default.string,\n alt: _propTypes.default.string,\n className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),\n // Support Glamor's css prop.\n critical: _propTypes.default.bool,\n crossOrigin: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),\n style: _propTypes.default.object,\n imgStyle: _propTypes.default.object,\n placeholderStyle: _propTypes.default.object,\n placeholderClassName: _propTypes.default.string,\n backgroundColor: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),\n onLoad: _propTypes.default.func,\n onError: _propTypes.default.func,\n onStartLoad: _propTypes.default.func,\n Tag: _propTypes.default.string,\n itemProp: _propTypes.default.string,\n loading: _propTypes.default.oneOf([\"auto\", \"lazy\", \"eager\"]),\n draggable: _propTypes.default.bool\n};\nvar _default = Image;\nexports.default = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import React from 'react'\nimport { useStaticQuery, graphql } from 'gatsby'\nimport Img from 'gatsby-image'\n\n/*\n * This component is built using `gatsby-image` to automatically serve optimized\n * images with lazy loading and reduced file sizes. The image is loaded using a\n * `useStaticQuery`, which allows us to load the image from directly within this\n * component, rather than having to pass the image data down from pages.\n *\n * For more information, see the docs:\n * - `gatsby-image`: https://gatsby.dev/gatsby-image\n * - `useStaticQuery`: https://www.gatsbyjs.org/docs/use-static-query/\n */\n\nconst Avatar = () => {\n const data = useStaticQuery(graphql`\n query {\n placeholderImage: file(relativePath: { eq: \"avatar.png\" }) {\n childImageSharp {\n fixed(width: 64) {\n ...GatsbyImageSharpFixed\n }\n }\n }\n }\n `)\n\n return <Img fixed={data.placeholderImage.childImageSharp.fixed} />\n}\n\nexport default Avatar\n","export default __webpack_public_path__ + \"static/bulogo-e390cffd6ac6a6a83316ad704f1ff855.jpg\";","export default __webpack_public_path__ + \"static/liulogo-6c8b42668d5bba5b600de89753ec0e6c.jpg\";","export default __webpack_public_path__ + \"static/ibmlogo-66418c670294fb7173d0baca5b8baa4d.png\";","export default __webpack_public_path__ + \"static/vslogo-e55150f6df1fe81ad0068c0649a4bc45.png\";","export default __webpack_public_path__ + \"static/fbavatar-143e041a08c7187148bfa6c56cd20905.jpg\";","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i; // TODO: this needs to support fass\n// TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.2.1\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","import React from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTwitter,\n faFacebook,\n faLinkedin,\n faGithub,\n} from '@fortawesome/free-brands-svg-icons'\nimport { faGraduationCap } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faTwitter, faFacebook, faLinkedin, faGithub, faGraduationCap)\n\nconst Icon = ({ icon, ...rest }) => <FontAwesomeIcon icon={icon} {...rest} />\n\nexport default Icon\n","export class EventDispatcher {\n constructor() {\n this._listeners = new Map();\n }\n addEventListener(type, listener) {\n var _a;\n this.removeEventListener(type, listener);\n if (!this._listeners.get(type)) {\n this._listeners.set(type, []);\n }\n (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.push(listener);\n }\n dispatchEvent(type, args) {\n var _a;\n (_a = this._listeners.get(type)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => handler(args));\n }\n hasEventListener(type) {\n return !!this._listeners.get(type);\n }\n removeAllEventListeners(type) {\n if (!type) {\n this._listeners = new Map();\n }\n else {\n this._listeners.delete(type);\n }\n }\n removeEventListener(type, listener) {\n const arr = this._listeners.get(type);\n if (!arr) {\n return;\n }\n const length = arr.length, idx = arr.indexOf(listener);\n if (idx < 0) {\n return;\n }\n if (length === 1) {\n this._listeners.delete(type);\n }\n else {\n arr.splice(idx, 1);\n }\n }\n}\n","export class Vector3d {\n constructor(xOrCoords, y, z) {\n if (typeof xOrCoords !== \"number\" && xOrCoords) {\n this.x = xOrCoords.x;\n this.y = xOrCoords.y;\n const coords3d = xOrCoords;\n this.z = coords3d.z ? coords3d.z : 0;\n }\n else if (xOrCoords !== undefined && y !== undefined) {\n this.x = xOrCoords;\n this.y = y;\n this.z = z !== null && z !== void 0 ? z : 0;\n }\n else {\n throw new Error(\"tsParticles - Vector3d not initialized correctly\");\n }\n }\n static get origin() {\n return Vector3d.create(0, 0, 0);\n }\n get angle() {\n return Math.atan2(this.y, this.x);\n }\n set angle(angle) {\n this.updateFromAngle(angle, this.length);\n }\n get length() {\n return Math.sqrt(this.getLengthSq());\n }\n set length(length) {\n this.updateFromAngle(this.angle, length);\n }\n static clone(source) {\n return Vector3d.create(source.x, source.y, source.z);\n }\n static create(x, y, z) {\n return new Vector3d(x, y, z);\n }\n add(v) {\n return Vector3d.create(this.x + v.x, this.y + v.y, this.z + v.z);\n }\n addTo(v) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n }\n copy() {\n return Vector3d.clone(this);\n }\n distanceTo(v) {\n return this.sub(v).length;\n }\n distanceToSq(v) {\n return this.sub(v).getLengthSq();\n }\n div(n) {\n return Vector3d.create(this.x / n, this.y / n, this.z / n);\n }\n divTo(n) {\n this.x /= n;\n this.y /= n;\n this.z /= n;\n }\n getLengthSq() {\n return this.x ** 2 + this.y ** 2;\n }\n mult(n) {\n return Vector3d.create(this.x * n, this.y * n, this.z * n);\n }\n multTo(n) {\n this.x *= n;\n this.y *= n;\n this.z *= n;\n }\n rotate(angle) {\n return Vector3d.create(this.x * Math.cos(angle) - this.y * Math.sin(angle), this.x * Math.sin(angle) + this.y * Math.cos(angle), 0);\n }\n setTo(c) {\n this.x = c.x;\n this.y = c.y;\n const v3d = c;\n this.z = v3d.z ? v3d.z : 0;\n }\n sub(v) {\n return Vector3d.create(this.x - v.x, this.y - v.y, this.z - v.z);\n }\n subFrom(v) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n }\n updateFromAngle(angle, length) {\n this.x = Math.cos(angle) * length;\n this.y = Math.sin(angle) * length;\n }\n}\n","import { Vector3d } from \"./Vector3d\";\nexport class Vector extends Vector3d {\n constructor(xOrCoords, y) {\n super(xOrCoords, y, 0);\n }\n static get origin() {\n return Vector.create(0, 0);\n }\n static clone(source) {\n return Vector.create(source.x, source.y);\n }\n static create(x, y) {\n return new Vector(x, y);\n }\n}\n","import { Vector } from \"../Core/Utils/Vector\";\nlet _random = Math.random;\nconst easings = new Map();\nexport function addEasing(name, easing) {\n if (!easings.get(name)) {\n easings.set(name, easing);\n }\n}\nexport function getEasing(name) {\n return easings.get(name) || ((value) => value);\n}\nexport function setRandom(rnd = Math.random) {\n _random = rnd;\n}\nexport function getRandom() {\n return clamp(_random(), 0, 1 - 1e-16);\n}\nexport function clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nexport function mix(comp1, comp2, weight1, weight2) {\n return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));\n}\nexport function randomInRange(r) {\n const max = getRangeMax(r);\n let min = getRangeMin(r);\n if (max === min) {\n min = 0;\n }\n return getRandom() * (max - min) + min;\n}\nexport function getRangeValue(value) {\n return typeof value === \"number\" ? value : randomInRange(value);\n}\nexport function getRangeMin(value) {\n return typeof value === \"number\" ? value : value.min;\n}\nexport function getRangeMax(value) {\n return typeof value === \"number\" ? value : value.max;\n}\nexport function setRangeValue(source, value) {\n if (source === value || (value === undefined && typeof source === \"number\")) {\n return source;\n }\n const min = getRangeMin(source), max = getRangeMax(source);\n return value !== undefined\n ? {\n min: Math.min(min, value),\n max: Math.max(max, value),\n }\n : setRangeValue(min, max);\n}\nexport function getValue(options) {\n const random = options.random, { enable, minimumValue } = typeof random === \"boolean\"\n ? {\n enable: random,\n minimumValue: 0,\n }\n : random;\n return enable ? getRangeValue(setRangeValue(options.value, minimumValue)) : getRangeValue(options.value);\n}\nexport function getDistances(pointA, pointB) {\n const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y;\n return { dx: dx, dy: dy, distance: Math.sqrt(dx ** 2 + dy ** 2) };\n}\nexport function getDistance(pointA, pointB) {\n return getDistances(pointA, pointB).distance;\n}\nexport function getParticleDirectionAngle(direction, position, center) {\n if (typeof direction === \"number\") {\n return (direction * Math.PI) / 180;\n }\n else {\n switch (direction) {\n case \"top\":\n return -Math.PI / 2;\n case \"top-right\":\n return -Math.PI / 4;\n case \"right\":\n return 0;\n case \"bottom-right\":\n return Math.PI / 4;\n case \"bottom\":\n return Math.PI / 2;\n case \"bottom-left\":\n return (3 * Math.PI) / 4;\n case \"left\":\n return Math.PI;\n case \"top-left\":\n return (-3 * Math.PI) / 4;\n case \"inside\":\n return Math.atan2(center.y - position.y, center.x - position.x);\n case \"outside\":\n return Math.atan2(position.y - center.y, position.x - center.x);\n default:\n return getRandom() * Math.PI * 2;\n }\n }\n}\nexport function getParticleBaseVelocity(direction) {\n const baseVelocity = Vector.origin;\n baseVelocity.length = 1;\n baseVelocity.angle = direction;\n return baseVelocity;\n}\nexport function collisionVelocity(v1, v2, m1, m2) {\n return Vector.create((v1.x * (m1 - m2)) / (m1 + m2) + (v2.x * 2 * m2) / (m1 + m2), v1.y);\n}\nexport function calcPositionFromSize(data) {\n return data.position && data.position.x !== undefined && data.position.y !== undefined\n ? {\n x: (data.position.x * data.size.width) / 100,\n y: (data.position.y * data.size.height) / 100,\n }\n : undefined;\n}\nexport function calcPositionOrRandomFromSize(data) {\n var _a, _b, _c, _d;\n return {\n x: (((_b = (_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : getRandom() * 100) * data.size.width) / 100,\n y: (((_d = (_c = data.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : getRandom() * 100) * data.size.height) / 100,\n };\n}\nexport function calcPositionOrRandomFromSizeRanged(data) {\n var _a, _b;\n const position = {\n x: ((_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== undefined ? getRangeValue(data.position.x) : undefined,\n y: ((_b = data.position) === null || _b === void 0 ? void 0 : _b.y) !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcPositionOrRandomFromSize({ size: data.size, position });\n}\nexport function calcExactPositionOrRandomFromSize(data) {\n var _a, _b, _c, _d;\n return {\n x: (_b = (_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : getRandom() * data.size.width,\n y: (_d = (_c = data.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : getRandom() * data.size.height,\n };\n}\nexport function calcExactPositionOrRandomFromSizeRanged(data) {\n var _a, _b;\n const position = {\n x: ((_a = data.position) === null || _a === void 0 ? void 0 : _a.x) !== undefined ? getRangeValue(data.position.x) : undefined,\n y: ((_b = data.position) === null || _b === void 0 ? void 0 : _b.y) !== undefined ? getRangeValue(data.position.y) : undefined,\n };\n return calcExactPositionOrRandomFromSize({ size: data.size, position });\n}\nexport function parseAlpha(input) {\n return input ? (input.endsWith(\"%\") ? parseFloat(input) / 100 : parseFloat(input)) : 1;\n}\n","import { collisionVelocity, getDistances, getRandom, getValue } from \"./NumberUtils\";\nimport { Vector } from \"../Core/Utils/Vector\";\nfunction rectSideBounce(pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor) {\n const res = { bounced: false };\n if (pOtherSide.min < rectOtherSide.min ||\n pOtherSide.min > rectOtherSide.max ||\n pOtherSide.max < rectOtherSide.min ||\n pOtherSide.max > rectOtherSide.max) {\n return res;\n }\n if ((pSide.max >= rectSide.min && pSide.max <= (rectSide.max + rectSide.min) / 2 && velocity > 0) ||\n (pSide.min <= rectSide.max && pSide.min > (rectSide.max + rectSide.min) / 2 && velocity < 0)) {\n res.velocity = velocity * -factor;\n res.bounced = true;\n }\n return res;\n}\nfunction checkSelector(element, selectors) {\n const res = executeOnSingleOrMultiple(selectors, (selector) => {\n return element.matches(selector);\n });\n return res instanceof Array ? res.some((t) => t) : res;\n}\nexport function isSsr() {\n return typeof window === \"undefined\" || !window || typeof window.document === \"undefined\" || !window.document;\n}\nexport function hasMatchMedia() {\n return !isSsr() && typeof matchMedia !== \"undefined\";\n}\nexport function safeMatchMedia(query) {\n if (!hasMatchMedia()) {\n return;\n }\n return matchMedia(query);\n}\nexport function animate() {\n return isSsr()\n ? (callback) => setTimeout(callback)\n : (callback) => (requestAnimationFrame || setTimeout)(callback);\n}\nexport function cancelAnimation() {\n return isSsr()\n ? (handle) => clearTimeout(handle)\n : (handle) => (cancelAnimationFrame || clearTimeout)(handle);\n}\nexport function isInArray(value, array) {\n return value === array || (array instanceof Array && array.indexOf(value) > -1);\n}\nexport async function loadFont(font, weight) {\n try {\n await document.fonts.load(`${weight !== null && weight !== void 0 ? weight : \"400\"} 36px '${font !== null && font !== void 0 ? font : \"Verdana\"}'`);\n }\n catch (_a) {\n }\n}\nexport function arrayRandomIndex(array) {\n return Math.floor(getRandom() * array.length);\n}\nexport function itemFromArray(array, index, useIndex = true) {\n return array[index !== undefined && useIndex ? index % array.length : arrayRandomIndex(array)];\n}\nexport function isPointInside(point, size, offset, radius, direction) {\n return areBoundsInside(calculateBounds(point, radius !== null && radius !== void 0 ? radius : 0), size, offset, direction);\n}\nexport function areBoundsInside(bounds, size, offset, direction) {\n let inside = true;\n if (!direction || direction === \"bottom\") {\n inside = bounds.top < size.height + offset.x;\n }\n if (inside && (!direction || direction === \"left\")) {\n inside = bounds.right > offset.x;\n }\n if (inside && (!direction || direction === \"right\")) {\n inside = bounds.left < size.width + offset.y;\n }\n if (inside && (!direction || direction === \"top\")) {\n inside = bounds.bottom > offset.y;\n }\n return inside;\n}\nexport function 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}\nexport function deepExtend(destination, ...sources) {\n for (const source of sources) {\n if (source === undefined || source === null) {\n continue;\n }\n if (typeof source !== \"object\") {\n destination = source;\n continue;\n }\n const sourceIsArray = Array.isArray(source);\n if (sourceIsArray && (typeof destination !== \"object\" || !destination || !Array.isArray(destination))) {\n destination = [];\n }\n else if (!sourceIsArray && (typeof destination !== \"object\" || !destination || Array.isArray(destination))) {\n destination = {};\n }\n for (const key in source) {\n if (key === \"__proto__\") {\n continue;\n }\n const sourceDict = source, value = sourceDict[key], isObject = typeof value === \"object\", destDict = destination;\n destDict[key] =\n isObject && Array.isArray(value)\n ? value.map((v) => deepExtend(destDict[key], v))\n : deepExtend(destDict[key], value);\n }\n }\n return destination;\n}\nexport function isDivModeEnabled(mode, divs) {\n return !!findItemFromSingleOrMultiple(divs, (t) => t.enable && isInArray(mode, t.mode));\n}\nexport function divModeExecute(mode, divs, callback) {\n executeOnSingleOrMultiple(divs, (div) => {\n const divMode = div.mode, divEnabled = div.enable;\n if (divEnabled && isInArray(mode, divMode)) {\n singleDivModeExecute(div, callback);\n }\n });\n}\nexport function singleDivModeExecute(div, callback) {\n const selectors = div.selectors;\n executeOnSingleOrMultiple(selectors, (selector) => {\n callback(selector, div);\n });\n}\nexport function divMode(divs, element) {\n if (!element || !divs) {\n return;\n }\n return findItemFromSingleOrMultiple(divs, (div) => {\n return checkSelector(element, div.selectors);\n });\n}\nexport function circleBounceDataFromParticle(p) {\n return {\n position: p.getPosition(),\n radius: p.getRadius(),\n mass: p.getMass(),\n velocity: p.velocity,\n factor: Vector.create(getValue(p.options.bounce.horizontal), getValue(p.options.bounce.vertical)),\n };\n}\nexport function circleBounce(p1, p2) {\n const { x: xVelocityDiff, y: yVelocityDiff } = p1.velocity.sub(p2.velocity), [pos1, pos2] = [p1.position, p2.position], { dx: xDist, dy: yDist } = getDistances(pos2, pos1);\n if (xVelocityDiff * xDist + yVelocityDiff * yDist < 0) {\n return;\n }\n const angle = -Math.atan2(yDist, xDist), m1 = p1.mass, m2 = p2.mass, u1 = p1.velocity.rotate(angle), u2 = p2.velocity.rotate(angle), v1 = collisionVelocity(u1, u2, m1, m2), v2 = collisionVelocity(u2, u1, m1, m2), vFinal1 = v1.rotate(-angle), 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}\nexport function rectBounce(particle, divBounds) {\n const pPos = particle.getPosition(), size = particle.getRadius(), bounds = calculateBounds(pPos, size), resH = rectSideBounce({\n min: bounds.left,\n max: bounds.right,\n }, {\n min: bounds.top,\n max: bounds.bottom,\n }, {\n min: divBounds.left,\n max: divBounds.right,\n }, {\n min: divBounds.top,\n max: divBounds.bottom,\n }, particle.velocity.x, getValue(particle.options.bounce.horizontal));\n if (resH.bounced) {\n if (resH.velocity !== undefined) {\n particle.velocity.x = resH.velocity;\n }\n if (resH.position !== undefined) {\n particle.position.x = resH.position;\n }\n }\n const resV = rectSideBounce({\n min: bounds.top,\n max: bounds.bottom,\n }, {\n min: bounds.left,\n max: bounds.right,\n }, {\n min: divBounds.top,\n max: divBounds.bottom,\n }, {\n min: divBounds.left,\n max: divBounds.right,\n }, particle.velocity.y, getValue(particle.options.bounce.vertical));\n if (resV.bounced) {\n if (resV.velocity !== undefined) {\n particle.velocity.y = resV.velocity;\n }\n if (resV.position !== undefined) {\n particle.position.y = resV.position;\n }\n }\n}\nexport function executeOnSingleOrMultiple(obj, callback) {\n return obj instanceof Array ? obj.map((item, index) => callback(item, index)) : callback(obj, 0);\n}\nexport function itemFromSingleOrMultiple(obj, index, useIndex) {\n return obj instanceof Array ? itemFromArray(obj, index, useIndex) : obj;\n}\nexport function findItemFromSingleOrMultiple(obj, callback) {\n return obj instanceof Array ? obj.find((t, index) => callback(t, index)) : callback(obj, 0) ? obj : undefined;\n}\n","import { getRandom, getRangeValue, mix, randomInRange, setRangeValue } from \"./NumberUtils\";\nimport { itemFromArray } from \"./Utils\";\nconst randomColorValue = \"random\", midColorValue = \"mid\", colorManagers = new Map();\nexport function addColorManager(manager) {\n colorManagers.set(manager.key, manager);\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\nfunction stringToRgba(input) {\n for (const [, manager] of colorManagers) {\n if (input.startsWith(manager.stringPrefix)) {\n return manager.parseString(input);\n }\n }\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i, hexFixed = input.replace(shorthandRegex, (_, r, g, b, a) => {\n return r + r + g + g + b + b + (a !== undefined ? a + a : \"\");\n }), regex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i, result = regex.exec(hexFixed);\n return result\n ? {\n a: result[4] !== undefined ? parseInt(result[4], 16) / 0xff : 1,\n b: parseInt(result[3], 16),\n g: parseInt(result[2], 16),\n r: parseInt(result[1], 16),\n }\n : undefined;\n}\nexport function rangeColorToRgb(input, index, useIndex = true) {\n if (!input) {\n return;\n }\n const color = typeof input === \"string\" ? { value: input } : input;\n if (typeof color.value === \"string\") {\n return colorToRgb(color.value, index, useIndex);\n }\n if (color.value instanceof Array) {\n return rangeColorToRgb({\n value: itemFromArray(color.value, index, useIndex),\n });\n }\n for (const [, manager] of colorManagers) {\n const res = manager.handleRangeColor(color);\n if (res) {\n return res;\n }\n }\n}\nexport function colorToRgb(input, index, useIndex = true) {\n if (!input) {\n return;\n }\n const color = typeof input === \"string\" ? { value: input } : input;\n if (typeof color.value === \"string\") {\n return color.value === randomColorValue ? getRandomRgbColor() : stringToRgb(color.value);\n }\n if (color.value instanceof Array) {\n return colorToRgb({\n value: itemFromArray(color.value, index, useIndex),\n });\n }\n for (const [, manager] of colorManagers) {\n const res = manager.handleColor(color);\n if (res) {\n return res;\n }\n }\n}\nexport function colorToHsl(color, index, useIndex = true) {\n const rgb = colorToRgb(color, index, useIndex);\n return rgb ? rgbToHsl(rgb) : undefined;\n}\nexport function rangeColorToHsl(color, index, useIndex = true) {\n const rgb = rangeColorToRgb(color, index, useIndex);\n return rgb ? rgbToHsl(rgb) : undefined;\n}\nexport function rgbToHsl(color) {\n const r1 = color.r / 255, g1 = color.g / 255, b1 = color.b / 255, max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1), res = {\n h: 0,\n l: (max + min) / 2,\n s: 0,\n };\n if (max !== min) {\n res.s = res.l < 0.5 ? (max - min) / (max + min) : (max - min) / (2.0 - max - min);\n res.h =\n r1 === max\n ? (g1 - b1) / (max - min)\n : (res.h = g1 === max ? 2.0 + (b1 - r1) / (max - min) : 4.0 + (r1 - g1) / (max - min));\n }\n res.l *= 100;\n res.s *= 100;\n res.h *= 60;\n if (res.h < 0) {\n res.h += 360;\n }\n if (res.h >= 360) {\n res.h -= 360;\n }\n return res;\n}\nexport function stringToAlpha(input) {\n var _a;\n return (_a = stringToRgba(input)) === null || _a === void 0 ? void 0 : _a.a;\n}\nexport function stringToRgb(input) {\n return stringToRgba(input);\n}\nexport function hslToRgb(hsl) {\n const result = { b: 0, g: 0, r: 0 }, hslPercent = {\n h: hsl.h / 360,\n l: hsl.l / 100,\n s: hsl.s / 100,\n };\n if (!hslPercent.s) {\n result.b = hslPercent.l;\n result.g = hslPercent.l;\n result.r = hslPercent.l;\n }\n else {\n const q = hslPercent.l < 0.5\n ? hslPercent.l * (1 + hslPercent.s)\n : hslPercent.l + hslPercent.s - hslPercent.l * hslPercent.s, p = 2 * hslPercent.l - q;\n result.r = hue2rgb(p, q, hslPercent.h + 1 / 3);\n result.g = hue2rgb(p, q, hslPercent.h);\n result.b = hue2rgb(p, q, hslPercent.h - 1 / 3);\n }\n result.r = Math.floor(result.r * 255);\n result.g = Math.floor(result.g * 255);\n result.b = Math.floor(result.b * 255);\n return result;\n}\nexport function hslaToRgba(hsla) {\n const rgbResult = hslToRgb(hsla);\n return {\n a: hsla.a,\n b: rgbResult.b,\n g: rgbResult.g,\n r: rgbResult.r,\n };\n}\nexport function getRandomRgbColor(min) {\n const fixedMin = min !== null && min !== void 0 ? min : 0;\n return {\n b: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n g: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n r: Math.floor(randomInRange(setRangeValue(fixedMin, 256))),\n };\n}\nexport function getStyleFromRgb(color, opacity) {\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;\n}\nexport function getStyleFromHsl(color, opacity) {\n return `hsla(${color.h}, ${color.s}%, ${color.l}%, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;\n}\nexport function colorMix(color1, color2, size1, size2) {\n let rgb1 = color1, rgb2 = color2;\n if (rgb1.r === undefined) {\n rgb1 = hslToRgb(color1);\n }\n if (rgb2.r === undefined) {\n rgb2 = hslToRgb(color2);\n }\n return {\n b: mix(rgb1.b, rgb2.b, size1, size2),\n g: mix(rgb1.g, rgb2.g, size1, size2),\n r: mix(rgb1.r, rgb2.r, size1, size2),\n };\n}\nexport function getLinkColor(p1, p2, linkColor) {\n var _a, _b;\n if (linkColor === randomColorValue) {\n return getRandomRgbColor();\n }\n else if (linkColor === midColorValue) {\n const sourceColor = (_a = p1.getFillColor()) !== null && _a !== void 0 ? _a : p1.getStrokeColor(), destColor = (_b = p2 === null || p2 === void 0 ? void 0 : p2.getFillColor()) !== null && _b !== void 0 ? _b : p2 === null || p2 === void 0 ? void 0 : p2.getStrokeColor();\n if (sourceColor && destColor && p2) {\n return colorMix(sourceColor, destColor, p1.getRadius(), p2.getRadius());\n }\n else {\n const hslColor = sourceColor !== null && sourceColor !== void 0 ? sourceColor : destColor;\n if (hslColor) {\n return hslToRgb(hslColor);\n }\n }\n }\n else {\n return linkColor;\n }\n}\nexport function getLinkRandomColor(optColor, blink, consent) {\n const color = typeof optColor === \"string\" ? optColor : optColor.value;\n if (color === randomColorValue) {\n if (consent) {\n return rangeColorToRgb({\n value: color,\n });\n }\n if (blink) {\n return randomColorValue;\n }\n return midColorValue;\n }\n else if (color === midColorValue) {\n return midColorValue;\n }\n else {\n return rangeColorToRgb({\n value: color,\n });\n }\n}\nexport function getHslFromAnimation(animation) {\n return animation !== undefined\n ? {\n h: animation.h.value,\n s: animation.s.value,\n l: animation.l.value,\n }\n : undefined;\n}\nexport function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {\n const resColor = {\n h: {\n enable: false,\n value: hsl.h,\n },\n s: {\n enable: false,\n value: hsl.s,\n },\n l: {\n enable: false,\n value: hsl.l,\n },\n };\n if (animationOptions) {\n setColorAnimation(resColor.h, animationOptions.h, reduceFactor);\n setColorAnimation(resColor.s, animationOptions.s, reduceFactor);\n setColorAnimation(resColor.l, animationOptions.l, reduceFactor);\n }\n return resColor;\n}\nfunction setColorAnimation(colorValue, colorAnimation, reduceFactor) {\n colorValue.enable = colorAnimation.enable;\n if (colorValue.enable) {\n colorValue.velocity = (getRangeValue(colorAnimation.speed) / 100) * reduceFactor;\n colorValue.decay = 1 - getRangeValue(colorAnimation.decay);\n colorValue.status = \"increasing\";\n colorValue.loops = 0;\n colorValue.maxLoops = getRangeValue(colorAnimation.count);\n if (!colorAnimation.sync) {\n colorValue.velocity *= getRandom();\n colorValue.value *= getRandom();\n }\n colorValue.initialValue = colorValue.value;\n }\n else {\n colorValue.velocity = 0;\n }\n}\n","import { getStyleFromRgb } from \"./ColorUtils\";\nexport function drawLine(context, begin, end) {\n context.beginPath();\n context.moveTo(begin.x, begin.y);\n context.lineTo(end.x, end.y);\n context.closePath();\n}\nexport function drawTriangle(context, p1, p2, p3) {\n context.beginPath();\n context.moveTo(p1.x, p1.y);\n context.lineTo(p2.x, p2.y);\n context.lineTo(p3.x, p3.y);\n context.closePath();\n}\nexport function paintBase(context, dimension, baseColor) {\n context.fillStyle = baseColor !== null && baseColor !== void 0 ? baseColor : \"rgba(0,0,0,0)\";\n context.fillRect(0, 0, dimension.width, dimension.height);\n}\nexport function clear(context, dimension) {\n context.clearRect(0, 0, dimension.width, dimension.height);\n}\nexport function drawParticle(data) {\n var _a, _b, _c, _d, _e;\n const { container, context, particle, delta, colorStyles, backgroundMask, composite, radius, opacity, shadow, transform, } = data;\n const pos = particle.getPosition(), angle = particle.rotation + (particle.pathRotation ? particle.velocity.angle : 0), rotateData = {\n sin: Math.sin(angle),\n cos: Math.cos(angle),\n }, transformData = {\n a: rotateData.cos * ((_a = transform.a) !== null && _a !== void 0 ? _a : 1),\n b: rotateData.sin * ((_b = transform.b) !== null && _b !== void 0 ? _b : 1),\n c: -rotateData.sin * ((_c = transform.c) !== null && _c !== void 0 ? _c : 1),\n d: rotateData.cos * ((_d = transform.d) !== null && _d !== void 0 ? _d : 1),\n };\n context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);\n context.beginPath();\n if (backgroundMask) {\n context.globalCompositeOperation = composite;\n }\n const shadowColor = particle.shadowColor;\n if (shadow.enable && shadowColor) {\n context.shadowBlur = shadow.blur;\n context.shadowColor = getStyleFromRgb(shadowColor);\n context.shadowOffsetX = shadow.offset.x;\n context.shadowOffsetY = shadow.offset.y;\n }\n if (colorStyles.fill) {\n context.fillStyle = colorStyles.fill;\n }\n const strokeWidth = (_e = particle.strokeWidth) !== null && _e !== void 0 ? _e : 0;\n context.lineWidth = strokeWidth;\n if (colorStyles.stroke) {\n context.strokeStyle = colorStyles.stroke;\n }\n drawShape(container, context, particle, radius, opacity, delta);\n if (strokeWidth > 0) {\n context.stroke();\n }\n if (particle.close) {\n context.closePath();\n }\n if (particle.fill) {\n context.fill();\n }\n drawShapeAfterEffect(container, context, particle, radius, opacity, delta);\n context.globalCompositeOperation = \"source-over\";\n context.setTransform(1, 0, 0, 1, 0, 0);\n}\nexport function drawShape(container, context, particle, radius, opacity, delta) {\n if (!particle.shape) {\n return;\n }\n const drawer = container.drawers.get(particle.shape);\n if (!drawer) {\n return;\n }\n drawer.draw(context, particle, radius, opacity, delta, container.retina.pixelRatio);\n}\nexport function drawShapeAfterEffect(container, context, particle, radius, opacity, delta) {\n if (!particle.shape) {\n return;\n }\n const drawer = container.drawers.get(particle.shape);\n if (!(drawer === null || drawer === void 0 ? void 0 : drawer.afterEffect)) {\n return;\n }\n drawer.afterEffect(context, particle, radius, opacity, delta, container.retina.pixelRatio);\n}\nexport function drawPlugin(context, plugin, delta) {\n if (!plugin.draw) {\n return;\n }\n plugin.draw(context, delta);\n}\nexport function drawParticlePlugin(context, plugin, particle, delta) {\n if (!plugin.drawParticle) {\n return;\n }\n plugin.drawParticle(context, particle, delta);\n}\nexport function alterHsl(color, type, value) {\n return {\n h: color.h,\n s: color.s,\n l: color.l + (type === \"darken\" ? -1 : 1) * value,\n };\n}\n","export const generatedAttribute = \"generated\";\nexport const touchEndEvent = \"touchend\";\nexport const mouseDownEvent = \"pointerdown\";\nexport const mouseUpEvent = \"pointerup\";\nexport const mouseMoveEvent = \"pointermove\";\nexport const touchStartEvent = \"touchstart\";\nexport const touchMoveEvent = \"touchmove\";\nexport const mouseLeaveEvent = \"pointerleave\";\nexport const mouseOutEvent = \"pointerout\";\nexport const touchCancelEvent = \"touchcancel\";\nexport const resizeEvent = \"resize\";\nexport const visibilityChangeEvent = \"visibilitychange\";\n","import { clear, drawParticle, drawParticlePlugin, drawPlugin, paintBase } from \"../Utils/CanvasUtils\";\nimport { deepExtend, isSsr } from \"../Utils/Utils\";\nimport { getStyleFromHsl, getStyleFromRgb, rangeColorToHsl, rangeColorToRgb } from \"../Utils/ColorUtils\";\nimport { generatedAttribute } from \"./Utils/Constants\";\nfunction setTransformValue(factor, newFactor, key) {\n var _a;\n const newValue = newFactor[key];\n if (newValue !== undefined) {\n factor[key] = ((_a = factor[key]) !== null && _a !== void 0 ? _a : 1) * newValue;\n }\n}\nexport class Canvas {\n constructor(container) {\n this.container = container;\n this.size = {\n height: 0,\n width: 0,\n };\n this._context = null;\n this._generated = false;\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n this._mutationObserver =\n !isSsr() && typeof MutationObserver !== \"undefined\"\n ? new MutationObserver((records) => {\n for (const record of records) {\n if (record.type === \"attributes\" && record.attributeName === \"style\") {\n this._repairStyle();\n }\n }\n })\n : undefined;\n }\n get _fullScreen() {\n return this.container.actualOptions.fullScreen.enable;\n }\n clear() {\n const options = this.container.actualOptions, trail = options.particles.move.trail;\n if (options.backgroundMask.enable) {\n this.paint();\n }\n else if (trail.enable && trail.length > 0 && this._trailFillColor) {\n this._paintBase(getStyleFromRgb(this._trailFillColor, 1 / trail.length));\n }\n else {\n this.draw((ctx) => {\n clear(ctx, this.size);\n });\n }\n }\n destroy() {\n var _a, _b;\n (_a = this._mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n if (this._generated) {\n (_b = this.element) === null || _b === void 0 ? void 0 : _b.remove();\n }\n else {\n this._resetOriginalStyle();\n }\n this.draw((ctx) => {\n clear(ctx, this.size);\n });\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n this._resizePlugins = [];\n this._colorPlugins = [];\n }\n draw(cb) {\n if (!this._context) {\n return;\n }\n return cb(this._context);\n }\n drawParticle(particle, delta) {\n var _a;\n if (particle.spawning || particle.destroyed) {\n return;\n }\n const radius = particle.getRadius();\n if (radius <= 0) {\n return;\n }\n const pfColor = particle.getFillColor(), psColor = (_a = particle.getStrokeColor()) !== null && _a !== void 0 ? _a : pfColor;\n let [fColor, sColor] = this._getPluginParticleColors(particle);\n if (!fColor) {\n fColor = pfColor;\n }\n if (!sColor) {\n sColor = psColor;\n }\n if (!fColor && !sColor) {\n return;\n }\n this.draw((ctx) => {\n var _a, _b, _c, _d;\n const options = this.container.actualOptions, zIndexOptions = particle.options.zIndex, zOpacityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.opacityRate, opacity = (_c = (_a = particle.bubble.opacity) !== null && _a !== void 0 ? _a : (_b = particle.opacity) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : 1, strokeOpacity = (_d = particle.strokeOpacity) !== null && _d !== void 0 ? _d : opacity, zOpacity = opacity * zOpacityFactor, zStrokeOpacity = strokeOpacity * zOpacityFactor, transform = {}, colorStyles = {\n fill: fColor ? getStyleFromHsl(fColor, zOpacity) : undefined,\n };\n colorStyles.stroke = sColor ? getStyleFromHsl(sColor, zStrokeOpacity) : colorStyles.fill;\n this._applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform);\n drawParticle({\n container: this.container,\n context: ctx,\n particle,\n delta,\n colorStyles,\n backgroundMask: options.backgroundMask.enable,\n composite: options.backgroundMask.composite,\n radius: radius * (1 - particle.zIndexFactor) ** zIndexOptions.sizeRate,\n opacity: zOpacity,\n shadow: particle.options.shadow,\n transform,\n });\n this._applyPostDrawUpdaters(particle);\n });\n }\n drawParticlePlugin(plugin, particle, delta) {\n this.draw((ctx) => {\n drawParticlePlugin(ctx, plugin, particle, delta);\n });\n }\n drawPlugin(plugin, delta) {\n this.draw((ctx) => {\n drawPlugin(ctx, plugin, delta);\n });\n }\n init() {\n var _a;\n this.resize();\n this._initStyle();\n this._initCover();\n this._initTrail();\n this.initBackground();\n if (this.element) {\n (_a = this._mutationObserver) === null || _a === void 0 ? void 0 : _a.observe(this.element, { attributes: true });\n }\n this.initUpdaters();\n this.initPlugins();\n this.paint();\n }\n initBackground() {\n const options = this.container.actualOptions, background = options.background, element = this.element, elementStyle = element === null || element === void 0 ? void 0 : element.style;\n if (!elementStyle) {\n return;\n }\n if (background.color) {\n const color = rangeColorToRgb(background.color);\n elementStyle.backgroundColor = color ? getStyleFromRgb(color, background.opacity) : \"\";\n }\n else {\n elementStyle.backgroundColor = \"\";\n }\n elementStyle.backgroundImage = background.image || \"\";\n elementStyle.backgroundPosition = background.position || \"\";\n elementStyle.backgroundRepeat = background.repeat || \"\";\n elementStyle.backgroundSize = background.size || \"\";\n }\n initPlugins() {\n this._resizePlugins = [];\n for (const [, plugin] of this.container.plugins) {\n if (plugin.resize) {\n this._resizePlugins.push(plugin);\n }\n if (plugin.particleFillColor || plugin.particleStrokeColor) {\n this._colorPlugins.push(plugin);\n }\n }\n }\n initUpdaters() {\n this._preDrawUpdaters = [];\n this._postDrawUpdaters = [];\n for (const updater of this.container.particles.updaters) {\n if (updater.afterDraw) {\n this._postDrawUpdaters.push(updater);\n }\n if (updater.getColorStyles || updater.getTransformValues || updater.beforeDraw) {\n this._preDrawUpdaters.push(updater);\n }\n }\n }\n loadCanvas(canvas) {\n var _a, _b;\n if (this._generated) {\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();\n }\n this._generated =\n canvas.dataset && generatedAttribute in canvas.dataset\n ? canvas.dataset[generatedAttribute] === \"true\"\n : this._generated;\n this.element = canvas;\n this.element.ariaHidden = \"true\";\n this._originalStyle = deepExtend({}, this.element.style);\n this.size.height = canvas.offsetHeight;\n this.size.width = canvas.offsetWidth;\n this._context = this.element.getContext(\"2d\");\n (_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.observe(this.element, { attributes: true });\n this.container.retina.init();\n this.initBackground();\n }\n paint() {\n const options = this.container.actualOptions;\n this.draw((ctx) => {\n if (options.backgroundMask.enable && options.backgroundMask.cover) {\n clear(ctx, this.size);\n this._paintBase(this._coverColorStyle);\n }\n else {\n this._paintBase();\n }\n });\n }\n resize() {\n if (!this.element) {\n return;\n }\n const container = this.container, pxRatio = container.retina.pixelRatio, size = container.canvas.size, newSize = {\n width: this.element.offsetWidth * pxRatio,\n height: this.element.offsetHeight * pxRatio,\n };\n if (newSize.height === size.height &&\n newSize.width === size.width &&\n newSize.height === this.element.height &&\n newSize.width === this.element.width) {\n return;\n }\n const oldSize = Object.assign({}, size);\n this.element.width = size.width = this.element.offsetWidth * pxRatio;\n this.element.height = size.height = this.element.offsetHeight * pxRatio;\n if (this.container.started) {\n this.resizeFactor = {\n width: size.width / oldSize.width,\n height: size.height / oldSize.height,\n };\n }\n }\n async windowResize() {\n if (!this.element) {\n return;\n }\n this.resize();\n const container = this.container, needsRefresh = container.updateActualOptions();\n container.particles.setDensity();\n this._applyResizePlugins();\n if (needsRefresh) {\n await container.refresh();\n }\n }\n _applyPostDrawUpdaters(particle) {\n var _a;\n for (const updater of this._postDrawUpdaters) {\n (_a = updater.afterDraw) === null || _a === void 0 ? void 0 : _a.call(updater, particle);\n }\n }\n _applyPreDrawUpdaters(ctx, particle, radius, zOpacity, colorStyles, transform) {\n var _a;\n for (const updater of this._preDrawUpdaters) {\n if (updater.getColorStyles) {\n const { fill, stroke } = updater.getColorStyles(particle, ctx, radius, zOpacity);\n if (fill) {\n colorStyles.fill = fill;\n }\n if (stroke) {\n colorStyles.stroke = stroke;\n }\n }\n if (updater.getTransformValues) {\n const updaterTransform = updater.getTransformValues(particle);\n for (const key in updaterTransform) {\n setTransformValue(transform, updaterTransform, key);\n }\n }\n (_a = updater.beforeDraw) === null || _a === void 0 ? void 0 : _a.call(updater, particle);\n }\n }\n _applyResizePlugins() {\n for (const plugin of this._resizePlugins) {\n if (plugin.resize) {\n plugin.resize();\n }\n }\n }\n _getPluginParticleColors(particle) {\n let fColor, sColor;\n for (const plugin of this._colorPlugins) {\n if (!fColor && plugin.particleFillColor) {\n fColor = rangeColorToHsl(plugin.particleFillColor(particle));\n }\n if (!sColor && plugin.particleStrokeColor) {\n sColor = rangeColorToHsl(plugin.particleStrokeColor(particle));\n }\n if (fColor && sColor) {\n break;\n }\n }\n return [fColor, sColor];\n }\n _initCover() {\n const options = this.container.actualOptions, cover = options.backgroundMask.cover, color = cover.color, coverRgb = rangeColorToRgb(color);\n if (coverRgb) {\n const coverColor = {\n r: coverRgb.r,\n g: coverRgb.g,\n b: coverRgb.b,\n a: cover.opacity,\n };\n this._coverColorStyle = getStyleFromRgb(coverColor, coverColor.a);\n }\n }\n _initStyle() {\n const element = this.element, options = this.container.actualOptions;\n if (!element) {\n return;\n }\n if (this._fullScreen) {\n this._originalStyle = deepExtend({}, element.style);\n this._setFullScreenStyle();\n }\n else {\n this._resetOriginalStyle();\n }\n for (const key in options.style) {\n if (!key || !options.style) {\n continue;\n }\n const value = options.style[key];\n if (!value) {\n continue;\n }\n element.style.setProperty(key, value, \"important\");\n }\n }\n _initTrail() {\n const options = this.container.actualOptions, trail = options.particles.move.trail, fillColor = rangeColorToRgb(trail.fillColor);\n if (fillColor) {\n const trail = options.particles.move.trail;\n this._trailFillColor = Object.assign(Object.assign({}, fillColor), { a: 1 / trail.length });\n }\n }\n _paintBase(baseColor) {\n this.draw((ctx) => {\n paintBase(ctx, this.size, baseColor);\n });\n }\n _repairStyle() {\n var _a, _b;\n const element = this.element;\n if (!element) {\n return;\n }\n (_a = this._mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n this._initStyle();\n this.initBackground();\n (_b = this._mutationObserver) === null || _b === void 0 ? void 0 : _b.observe(element, { attributes: true });\n }\n _resetOriginalStyle() {\n const element = this.element, originalStyle = this._originalStyle;\n if (!(element && originalStyle)) {\n return;\n }\n element.style.position = originalStyle.position;\n element.style.zIndex = originalStyle.zIndex;\n element.style.top = originalStyle.top;\n element.style.left = originalStyle.left;\n element.style.width = originalStyle.width;\n element.style.height = originalStyle.height;\n }\n _setFullScreenStyle() {\n const element = this.element;\n if (!element) {\n return;\n }\n const priority = \"important\";\n element.style.setProperty(\"position\", \"fixed\", priority);\n element.style.setProperty(\"z-index\", this.container.actualOptions.fullScreen.zIndex.toString(10), priority);\n element.style.setProperty(\"top\", \"0\", priority);\n element.style.setProperty(\"left\", \"0\", priority);\n element.style.setProperty(\"width\", \"100%\", priority);\n element.style.setProperty(\"height\", \"100%\", priority);\n }\n}\n","import { executeOnSingleOrMultiple, safeMatchMedia } from \"../../Utils/Utils\";\nimport { mouseDownEvent, mouseLeaveEvent, mouseMoveEvent, mouseOutEvent, mouseUpEvent, resizeEvent, touchCancelEvent, touchEndEvent, touchMoveEvent, touchStartEvent, visibilityChangeEvent, } from \"./Constants\";\nfunction manageListener(element, event, handler, add, options) {\n if (add) {\n let addOptions = { passive: true };\n if (typeof options === \"boolean\") {\n addOptions.capture = options;\n }\n else if (options !== undefined) {\n addOptions = options;\n }\n element.addEventListener(event, handler, addOptions);\n }\n else {\n const removeOptions = options;\n element.removeEventListener(event, handler, removeOptions);\n }\n}\nexport class EventListeners {\n constructor(container) {\n this.container = container;\n this.canPush = true;\n this.handlers = {\n mouseMove: (e) => this.mouseTouchMove(e),\n touchStart: (e) => this.mouseTouchMove(e),\n touchMove: (e) => this.mouseTouchMove(e),\n touchEnd: () => this.mouseTouchFinish(),\n mouseLeave: () => this.mouseTouchFinish(),\n touchCancel: () => this.mouseTouchFinish(),\n touchEndClick: (e) => this.mouseTouchClick(e),\n mouseUp: (e) => this.mouseTouchClick(e),\n mouseDown: () => this.mouseDown(),\n visibilityChange: () => this.handleVisibilityChange(),\n themeChange: (e) => this.handleThemeChange(e),\n oldThemeChange: (e) => this.handleThemeChange(e),\n resize: () => this.handleWindowResize(),\n };\n }\n addListeners() {\n this.manageListeners(true);\n }\n removeListeners() {\n this.manageListeners(false);\n }\n doMouseTouchClick(e) {\n const container = this.container, options = container.actualOptions;\n if (this.canPush) {\n const mouseInteractivity = container.interactivity.mouse, mousePos = mouseInteractivity.position;\n if (!mousePos) {\n return;\n }\n mouseInteractivity.clickPosition = Object.assign({}, mousePos);\n mouseInteractivity.clickTime = new Date().getTime();\n const onClick = options.interactivity.events.onClick;\n executeOnSingleOrMultiple(onClick.mode, (mode) => this.handleClickMode(mode));\n }\n if (e.type === \"touchend\") {\n setTimeout(() => this.mouseTouchFinish(), 500);\n }\n }\n handleClickMode(mode) {\n this.container.handleClickMode(mode);\n }\n handleThemeChange(e) {\n const mediaEvent = e, container = this.container, options = container.options, defaultThemes = options.defaultThemes, themeName = mediaEvent.matches ? defaultThemes.dark : defaultThemes.light, theme = options.themes.find((theme) => theme.name === themeName);\n if (theme && theme.default.auto) {\n container.loadTheme(themeName);\n }\n }\n handleVisibilityChange() {\n const container = this.container, options = container.actualOptions;\n this.mouseTouchFinish();\n if (!options.pauseOnBlur) {\n return;\n }\n if (document === null || document === void 0 ? void 0 : document.hidden) {\n container.pageHidden = true;\n container.pause();\n }\n else {\n container.pageHidden = false;\n if (container.getAnimationStatus()) {\n container.play(true);\n }\n else {\n container.draw(true);\n }\n }\n }\n handleWindowResize() {\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n delete this.resizeTimeout;\n }\n this.resizeTimeout = setTimeout(async () => { var _a; return (_a = this.container.canvas) === null || _a === void 0 ? void 0 : _a.windowResize(); }, this.container.actualOptions.interactivity.events.resize.delay * 1000);\n }\n manageListeners(add) {\n var _a;\n const handlers = this.handlers, container = this.container, options = container.actualOptions, detectType = options.interactivity.detectsOn;\n let mouseLeaveTmpEvent = mouseLeaveEvent;\n if (detectType === \"window\") {\n container.interactivity.element = window;\n mouseLeaveTmpEvent = mouseOutEvent;\n }\n else if (detectType === \"parent\" && container.canvas.element) {\n const canvasEl = container.canvas.element;\n container.interactivity.element = (_a = canvasEl.parentElement) !== null && _a !== void 0 ? _a : canvasEl.parentNode;\n }\n else {\n container.interactivity.element = container.canvas.element;\n }\n const mediaMatch = safeMatchMedia(\"(prefers-color-scheme: dark)\");\n if (mediaMatch) {\n if (mediaMatch.addEventListener !== undefined) {\n manageListener(mediaMatch, \"change\", handlers.themeChange, add);\n }\n else if (mediaMatch.addListener !== undefined) {\n if (add) {\n mediaMatch.addListener(handlers.oldThemeChange);\n }\n else {\n mediaMatch.removeListener(handlers.oldThemeChange);\n }\n }\n }\n const interactivityEl = container.interactivity.element;\n if (!interactivityEl) {\n return;\n }\n const html = interactivityEl;\n if (options.interactivity.events.onHover.enable || options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, mouseMoveEvent, handlers.mouseMove, add);\n manageListener(interactivityEl, touchStartEvent, handlers.touchStart, add);\n manageListener(interactivityEl, touchMoveEvent, handlers.touchMove, add);\n if (!options.interactivity.events.onClick.enable) {\n manageListener(interactivityEl, touchEndEvent, handlers.touchEnd, add);\n }\n else {\n manageListener(interactivityEl, touchEndEvent, handlers.touchEndClick, add);\n manageListener(interactivityEl, mouseUpEvent, handlers.mouseUp, add);\n manageListener(interactivityEl, mouseDownEvent, handlers.mouseDown, add);\n }\n manageListener(interactivityEl, mouseLeaveTmpEvent, handlers.mouseLeave, add);\n manageListener(interactivityEl, touchCancelEvent, handlers.touchCancel, add);\n }\n if (container.canvas.element) {\n container.canvas.element.style.pointerEvents = html === container.canvas.element ? \"initial\" : \"none\";\n }\n if (options.interactivity.events.resize) {\n if (typeof ResizeObserver !== \"undefined\") {\n if (this.resizeObserver && !add) {\n if (container.canvas.element) {\n this.resizeObserver.unobserve(container.canvas.element);\n }\n this.resizeObserver.disconnect();\n delete this.resizeObserver;\n }\n else if (!this.resizeObserver && add && container.canvas.element) {\n this.resizeObserver = new ResizeObserver((entries) => {\n const entry = entries.find((e) => e.target === container.canvas.element);\n if (!entry) {\n return;\n }\n this.handleWindowResize();\n });\n this.resizeObserver.observe(container.canvas.element);\n }\n }\n else {\n manageListener(window, resizeEvent, handlers.resize, add);\n }\n }\n if (document) {\n manageListener(document, visibilityChangeEvent, handlers.visibilityChange, add, false);\n }\n }\n mouseDown() {\n const interactivity = this.container.interactivity;\n if (interactivity) {\n const mouse = interactivity.mouse;\n mouse.clicking = true;\n mouse.downPosition = mouse.position;\n }\n }\n mouseTouchClick(e) {\n const container = this.container, options = container.actualOptions, mouse = container.interactivity.mouse;\n mouse.inside = true;\n let handled = false;\n const mousePosition = mouse.position;\n if (!mousePosition || !options.interactivity.events.onClick.enable) {\n return;\n }\n for (const [, plugin] of container.plugins) {\n if (!plugin.clickPositionValid) {\n continue;\n }\n handled = plugin.clickPositionValid(mousePosition);\n if (handled) {\n break;\n }\n }\n if (!handled) {\n this.doMouseTouchClick(e);\n }\n mouse.clicking = false;\n }\n mouseTouchFinish() {\n const interactivity = this.container.interactivity;\n if (!interactivity) {\n return;\n }\n const mouse = interactivity.mouse;\n delete mouse.position;\n delete mouse.clickPosition;\n delete mouse.downPosition;\n interactivity.status = mouseLeaveEvent;\n mouse.inside = false;\n mouse.clicking = false;\n }\n mouseTouchMove(e) {\n var _a, _b, _c, _d, _e, _f, _g;\n const container = this.container, options = container.actualOptions;\n if (!((_a = container.interactivity) === null || _a === void 0 ? void 0 : _a.element)) {\n return;\n }\n container.interactivity.mouse.inside = true;\n let pos;\n const canvas = container.canvas.element;\n if (e.type.startsWith(\"pointer\")) {\n this.canPush = true;\n const mouseEvent = e;\n if (container.interactivity.element === window) {\n if (canvas) {\n const clientRect = canvas.getBoundingClientRect();\n pos = {\n x: mouseEvent.clientX - clientRect.left,\n y: mouseEvent.clientY - clientRect.top,\n };\n }\n }\n else if (options.interactivity.detectsOn === \"parent\") {\n const source = mouseEvent.target, target = mouseEvent.currentTarget, canvasEl = container.canvas.element;\n if (source && target && canvasEl) {\n const sourceRect = source.getBoundingClientRect(), targetRect = target.getBoundingClientRect(), canvasRect = canvasEl.getBoundingClientRect();\n pos = {\n x: mouseEvent.offsetX + 2 * sourceRect.left - (targetRect.left + canvasRect.left),\n y: mouseEvent.offsetY + 2 * sourceRect.top - (targetRect.top + canvasRect.top),\n };\n }\n else {\n pos = {\n x: (_b = mouseEvent.offsetX) !== null && _b !== void 0 ? _b : mouseEvent.clientX,\n y: (_c = mouseEvent.offsetY) !== null && _c !== void 0 ? _c : mouseEvent.clientY,\n };\n }\n }\n else if (mouseEvent.target === container.canvas.element) {\n pos = {\n x: (_d = mouseEvent.offsetX) !== null && _d !== void 0 ? _d : mouseEvent.clientX,\n y: (_e = mouseEvent.offsetY) !== null && _e !== void 0 ? _e : mouseEvent.clientY,\n };\n }\n }\n else {\n this.canPush = e.type !== \"touchmove\";\n const touchEvent = e, lastTouch = touchEvent.touches[touchEvent.touches.length - 1], canvasRect = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect();\n pos = {\n x: lastTouch.clientX - ((_f = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.left) !== null && _f !== void 0 ? _f : 0),\n y: lastTouch.clientY - ((_g = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.top) !== null && _g !== void 0 ? _g : 0),\n };\n }\n const pxRatio = container.retina.pixelRatio;\n if (pos) {\n pos.x *= pxRatio;\n pos.y *= pxRatio;\n }\n container.interactivity.mouse.position = pos;\n container.interactivity.status = mouseMoveEvent;\n }\n}\n","function initDelta(value, fpsLimit = 60, smooth = false) {\n return {\n value,\n factor: smooth ? 60 / fpsLimit : (60 * value) / 1000,\n };\n}\nexport class FrameManager {\n constructor(container) {\n this.container = container;\n }\n async nextFrame(timestamp) {\n var _a;\n try {\n const container = this.container;\n if (!container.smooth &&\n container.lastFrameTime !== undefined &&\n timestamp < container.lastFrameTime + 1000 / container.fpsLimit) {\n container.draw(false);\n return;\n }\n (_a = container.lastFrameTime) !== null && _a !== void 0 ? _a : (container.lastFrameTime = timestamp);\n const delta = initDelta(timestamp - container.lastFrameTime, container.fpsLimit, container.smooth);\n container.lifeTime += delta.value;\n container.lastFrameTime = timestamp;\n if (delta.value > 1000) {\n container.draw(false);\n return;\n }\n await container.particles.draw(delta);\n if (container.duration > 0 && container.lifeTime > container.duration) {\n container.destroy();\n return;\n }\n if (container.getAnimationStatus()) {\n container.draw(false);\n }\n }\n catch (e) {\n console.error(\"tsParticles error in animation loop\", e);\n }\n }\n}\n","export class OptionsColor {\n constructor() {\n this.value = \"\";\n }\n static create(source, data) {\n const color = new OptionsColor();\n color.load(source);\n if (data !== undefined) {\n if (typeof data === \"string\" || data instanceof Array) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n if ((data === null || data === void 0 ? void 0 : data.value) === undefined) {\n return;\n }\n this.value = data.value;\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class Background {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"\";\n this.image = \"\";\n this.position = \"\";\n this.repeat = \"\";\n this.size = \"\";\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.image !== undefined) {\n this.image = data.image;\n }\n if (data.position !== undefined) {\n this.position = data.position;\n }\n if (data.repeat !== undefined) {\n this.repeat = data.repeat;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class BackgroundMaskCover {\n constructor() {\n this.color = new OptionsColor();\n this.color.value = \"#fff\";\n this.opacity = 1;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = OptionsColor.create(this.color, data.color);\n }\n if (data.opacity !== undefined) {\n this.opacity = data.opacity;\n }\n }\n}\n","import { BackgroundMaskCover } from \"./BackgroundMaskCover\";\nexport class BackgroundMask {\n constructor() {\n this.composite = \"destination-out\";\n this.cover = new BackgroundMaskCover();\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.composite !== undefined) {\n this.composite = data.composite;\n }\n if (data.cover !== undefined) {\n const cover = data.cover;\n const color = (typeof data.cover === \"string\" ? { color: data.cover } : data.cover);\n this.cover.load(cover.color !== undefined ? cover : { color: color });\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","export class FullScreen {\n constructor() {\n this.enable = true;\n this.zIndex = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.zIndex !== undefined) {\n this.zIndex = data.zIndex;\n }\n }\n}\n","export class ClickEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n }\n}\n","import { executeOnSingleOrMultiple } from \"../../../../Utils/Utils\";\nexport class DivEvent {\n constructor() {\n this.selectors = [];\n this.enable = false;\n this.mode = [];\n this.type = \"circle\";\n }\n get el() {\n return this.elementId;\n }\n set el(value) {\n this.elementId = value;\n }\n get elementId() {\n return this.ids;\n }\n set elementId(value) {\n this.ids = value;\n }\n get ids() {\n return executeOnSingleOrMultiple(this.selectors, (t) => t.replace(\"#\", \"\"));\n }\n set ids(value) {\n this.selectors = executeOnSingleOrMultiple(value, (t) => `#${t}`);\n }\n load(data) {\n var _a, _b;\n if (!data) {\n return;\n }\n const ids = (_b = (_a = data.ids) !== null && _a !== void 0 ? _a : data.elementId) !== null && _b !== void 0 ? _b : data.el;\n if (ids !== undefined) {\n this.ids = ids;\n }\n if (data.selectors !== undefined) {\n this.selectors = data.selectors;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n}\n","export class Parallax {\n constructor() {\n this.enable = false;\n this.force = 2;\n this.smooth = 10;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.force !== undefined) {\n this.force = data.force;\n }\n if (data.smooth !== undefined) {\n this.smooth = data.smooth;\n }\n }\n}\n","import { Parallax } from \"./Parallax\";\nexport class HoverEvent {\n constructor() {\n this.enable = false;\n this.mode = [];\n this.parallax = new Parallax();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.parallax.load(data.parallax);\n }\n}\n","export class ResizeEvent {\n constructor() {\n this.delay = 0.5;\n this.enable = true;\n }\n load(data) {\n if (data === undefined) {\n return;\n }\n if (data.delay !== undefined) {\n this.delay = data.delay;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n }\n}\n","import { ClickEvent } from \"./ClickEvent\";\nimport { DivEvent } from \"./DivEvent\";\nimport { HoverEvent } from \"./HoverEvent\";\nimport { ResizeEvent } from \"./ResizeEvent\";\nimport { executeOnSingleOrMultiple } from \"../../../../Utils/Utils\";\nexport class Events {\n constructor() {\n this.onClick = new ClickEvent();\n this.onDiv = new DivEvent();\n this.onHover = new HoverEvent();\n this.resize = new ResizeEvent();\n }\n get onclick() {\n return this.onClick;\n }\n set onclick(value) {\n this.onClick = value;\n }\n get ondiv() {\n return this.onDiv;\n }\n set ondiv(value) {\n this.onDiv = value;\n }\n get onhover() {\n return this.onHover;\n }\n set onhover(value) {\n this.onHover = value;\n }\n load(data) {\n var _a, _b, _c;\n if (!data) {\n return;\n }\n this.onClick.load((_a = data.onClick) !== null && _a !== void 0 ? _a : data.onclick);\n const onDiv = (_b = data.onDiv) !== null && _b !== void 0 ? _b : data.ondiv;\n if (onDiv !== undefined) {\n this.onDiv = executeOnSingleOrMultiple(onDiv, (t) => {\n const tmp = new DivEvent();\n tmp.load(t);\n return tmp;\n });\n }\n this.onHover.load((_c = data.onHover) !== null && _c !== void 0 ? _c : data.onhover);\n if (typeof data.resize === \"boolean\") {\n this.resize.enable = data.resize;\n }\n else {\n this.resize.load(data.resize);\n }\n }\n}\n","export class Modes {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (this._container) {\n const interactors = this._engine.plugins.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadModeOptions) {\n interactor.loadModeOptions(this, data);\n }\n }\n }\n }\n }\n}\n","import { Events } from \"./Events/Events\";\nimport { Modes } from \"./Modes/Modes\";\nexport class Interactivity {\n constructor(engine, container) {\n this.detectsOn = \"window\";\n this.events = new Events();\n this.modes = new Modes(engine, container);\n }\n get detect_on() {\n return this.detectsOn;\n }\n set detect_on(value) {\n this.detectsOn = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n const detectsOn = (_a = data.detectsOn) !== null && _a !== void 0 ? _a : data.detect_on;\n if (detectsOn !== undefined) {\n this.detectsOn = detectsOn;\n }\n this.events.load(data.events);\n this.modes.load(data.modes);\n }\n}\n","import { deepExtend } from \"../../Utils/Utils\";\nexport class ManualParticle {\n load(data) {\n var _a, _b;\n if (!data) {\n return;\n }\n if (data.position !== undefined) {\n this.position = {\n x: (_a = data.position.x) !== null && _a !== void 0 ? _a : 50,\n y: (_b = data.position.y) !== null && _b !== void 0 ? _b : 50,\n };\n }\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","import { deepExtend } from \"../../Utils/Utils\";\nexport class Responsive {\n constructor() {\n this.maxWidth = Infinity;\n this.options = {};\n this.mode = \"canvas\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.maxWidth !== undefined) {\n this.maxWidth = data.maxWidth;\n }\n if (data.mode !== undefined) {\n if (data.mode === \"screen\") {\n this.mode = \"screen\";\n }\n else {\n this.mode = \"canvas\";\n }\n }\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","export class ThemeDefault {\n constructor() {\n this.auto = false;\n this.mode = \"any\";\n this.value = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.auto !== undefined) {\n this.auto = data.auto;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { ThemeDefault } from \"./ThemeDefault\";\nimport { deepExtend } from \"../../../Utils/Utils\";\nexport class Theme {\n constructor() {\n this.name = \"\";\n this.default = new ThemeDefault();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.name !== undefined) {\n this.name = data.name;\n }\n this.default.load(data.default);\n if (data.options !== undefined) {\n this.options = deepExtend({}, data.options);\n }\n }\n}\n","import { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class ColorAnimation {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.offset = 0;\n this.speed = 1;\n this.decay = 0;\n this.sync = true;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { ColorAnimation } from \"./ColorAnimation\";\nexport class HslAnimation {\n constructor() {\n this.h = new ColorAnimation();\n this.s = new ColorAnimation();\n this.l = new ColorAnimation();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.h.load(data.h);\n this.s.load(data.s);\n this.l.load(data.l);\n }\n}\n","import { HslAnimation } from \"./HslAnimation\";\nimport { OptionsColor } from \"./OptionsColor\";\nexport class AnimatableColor extends OptionsColor {\n constructor() {\n super();\n this.animation = new HslAnimation();\n }\n static create(source, data) {\n const color = new AnimatableColor();\n color.load(source);\n if (data !== undefined) {\n if (typeof data === \"string\" || data instanceof Array) {\n color.load({ value: data });\n }\n else {\n color.load(data);\n }\n }\n return color;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n const colorAnimation = data.animation;\n if (colorAnimation !== undefined) {\n if (colorAnimation.enable !== undefined) {\n this.animation.h.load(colorAnimation);\n }\n else {\n this.animation.load(data.animation);\n }\n }\n }\n}\n","export class CollisionsAbsorb {\n constructor() {\n this.speed = 2;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n }\n}\n","export class CollisionsOverlap {\n constructor() {\n this.enable = true;\n this.retries = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.retries !== undefined) {\n this.retries = data.retries;\n }\n }\n}\n","export class Random {\n constructor() {\n this.enable = false;\n this.minimumValue = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.minimumValue !== undefined) {\n this.minimumValue = data.minimumValue;\n }\n }\n}\n","import { Random } from \"./Random\";\nimport { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class ValueWithRandom {\n constructor() {\n this.random = new Random();\n this.value = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (typeof data.random === \"boolean\") {\n this.random.enable = data.random;\n }\n else {\n this.random.load(data.random);\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value, this.random.enable ? this.random.minimumValue : undefined);\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class ParticlesBounceFactor extends ValueWithRandom {\n constructor() {\n super();\n this.random.minimumValue = 0.1;\n this.value = 1;\n }\n}\n","import { ParticlesBounceFactor } from \"./ParticlesBounceFactor\";\nexport class ParticlesBounce {\n constructor() {\n this.horizontal = new ParticlesBounceFactor();\n this.vertical = new ParticlesBounceFactor();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.horizontal.load(data.horizontal);\n this.vertical.load(data.vertical);\n }\n}\n","import { CollisionsAbsorb } from \"./CollisionsAbsorb\";\nimport { CollisionsOverlap } from \"./CollisionsOverlap\";\nimport { ParticlesBounce } from \"../Bounce/ParticlesBounce\";\nexport class Collisions {\n constructor() {\n this.absorb = new CollisionsAbsorb();\n this.bounce = new ParticlesBounce();\n this.enable = false;\n this.mode = \"bounce\";\n this.overlap = new CollisionsOverlap();\n }\n load(data) {\n if (!data) {\n return;\n }\n this.absorb.load(data.absorb);\n this.bounce.load(data.bounce);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n this.overlap.load(data.overlap);\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveAngle {\n constructor() {\n this.offset = 0;\n this.value = 90;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.offset !== undefined) {\n this.offset = setRangeValue(data.offset);\n }\n if (data.value !== undefined) {\n this.value = setRangeValue(data.value);\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveAttract {\n constructor() {\n this.distance = 200;\n this.enable = false;\n this.rotate = {\n x: 3000,\n y: 3000,\n };\n }\n get rotateX() {\n return this.rotate.x;\n }\n set rotateX(value) {\n this.rotate.x = value;\n }\n get rotateY() {\n return this.rotate.y;\n }\n set rotateY(value) {\n this.rotate.y = value;\n }\n load(data) {\n var _a, _b, _c, _d;\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const rotateX = (_b = (_a = data.rotate) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : data.rotateX;\n if (rotateX !== undefined) {\n this.rotate.x = rotateX;\n }\n const rotateY = (_d = (_c = data.rotate) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : data.rotateY;\n if (rotateY !== undefined) {\n this.rotate.y = rotateY;\n }\n }\n}\n","export class MoveCenter {\n constructor() {\n this.x = 50;\n this.y = 50;\n this.mode = \"percent\";\n this.radius = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.x !== undefined) {\n this.x = data.x;\n }\n if (data.y !== undefined) {\n this.y = data.y;\n }\n if (data.mode !== undefined) {\n this.mode = data.mode;\n }\n if (data.radius !== undefined) {\n this.radius = data.radius;\n }\n }\n}\n","import { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class MoveGravity {\n constructor() {\n this.acceleration = 9.81;\n this.enable = false;\n this.inverse = false;\n this.maxSpeed = 50;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.inverse !== undefined) {\n this.inverse = data.inverse;\n }\n if (data.maxSpeed !== undefined) {\n this.maxSpeed = setRangeValue(data.maxSpeed);\n }\n }\n}\n","import { ValueWithRandom } from \"../../../ValueWithRandom\";\nimport { deepExtend } from \"../../../../../Utils/Utils\";\nexport class MovePath {\n constructor() {\n this.clamp = true;\n this.delay = new ValueWithRandom();\n this.enable = false;\n this.options = {};\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.clamp !== undefined) {\n this.clamp = data.clamp;\n }\n this.delay.load(data.delay);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.generator = data.generator;\n if (data.options) {\n this.options = deepExtend(this.options, data.options);\n }\n }\n}\n","import { OptionsColor } from \"../../OptionsColor\";\nexport class MoveTrail {\n constructor() {\n this.enable = false;\n this.length = 10;\n this.fillColor = new OptionsColor();\n this.fillColor.value = \"#000000\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.fillColor = OptionsColor.create(this.fillColor, data.fillColor);\n if (data.length !== undefined) {\n this.length = data.length;\n }\n }\n}\n","export class OutModes {\n constructor() {\n this.default = \"out\";\n }\n load(data) {\n var _a, _b, _c, _d;\n if (!data) {\n return;\n }\n if (data.default !== undefined) {\n this.default = data.default;\n }\n this.bottom = (_a = data.bottom) !== null && _a !== void 0 ? _a : data.default;\n this.left = (_b = data.left) !== null && _b !== void 0 ? _b : data.default;\n this.right = (_c = data.right) !== null && _c !== void 0 ? _c : data.default;\n this.top = (_d = data.top) !== null && _d !== void 0 ? _d : data.default;\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Spin {\n constructor() {\n this.acceleration = 0;\n this.enable = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.acceleration !== undefined) {\n this.acceleration = setRangeValue(data.acceleration);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.position = data.position ? deepExtend({}, data.position) : undefined;\n }\n}\n","import { MoveAngle } from \"./MoveAngle\";\nimport { MoveAttract } from \"./MoveAttract\";\nimport { MoveCenter } from \"./MoveCenter\";\nimport { MoveGravity } from \"./MoveGravity\";\nimport { MovePath } from \"./Path/MovePath\";\nimport { MoveTrail } from \"./MoveTrail\";\nimport { OutModes } from \"./OutModes\";\nimport { Spin } from \"./Spin\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Move {\n constructor() {\n this.angle = new MoveAngle();\n this.attract = new MoveAttract();\n this.center = new MoveCenter();\n this.decay = 0;\n this.distance = {};\n this.direction = \"none\";\n this.drift = 0;\n this.enable = false;\n this.gravity = new MoveGravity();\n this.path = new MovePath();\n this.outModes = new OutModes();\n this.random = false;\n this.size = false;\n this.speed = 2;\n this.spin = new Spin();\n this.straight = false;\n this.trail = new MoveTrail();\n this.vibrate = false;\n this.warp = false;\n }\n get bounce() {\n return this.collisions;\n }\n set bounce(value) {\n this.collisions = value;\n }\n get collisions() {\n return false;\n }\n set collisions(_) {\n }\n get noise() {\n return this.path;\n }\n set noise(value) {\n this.path = value;\n }\n get outMode() {\n return this.outModes.default;\n }\n set outMode(value) {\n this.outModes.default = value;\n }\n get out_mode() {\n return this.outMode;\n }\n set out_mode(value) {\n this.outMode = value;\n }\n load(data) {\n var _a, _b, _c;\n if (!data) {\n return;\n }\n this.angle.load(typeof data.angle === \"number\" ? { value: data.angle } : data.angle);\n this.attract.load(data.attract);\n this.center.load(data.center);\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.direction !== undefined) {\n this.direction = data.direction;\n }\n if (data.distance !== undefined) {\n this.distance =\n typeof data.distance === \"number\"\n ? {\n horizontal: data.distance,\n vertical: data.distance,\n }\n : Object.assign({}, data.distance);\n }\n if (data.drift !== undefined) {\n this.drift = setRangeValue(data.drift);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.gravity.load(data.gravity);\n const outModes = (_b = (_a = data.outModes) !== null && _a !== void 0 ? _a : data.outMode) !== null && _b !== void 0 ? _b : data.out_mode;\n if (outModes !== undefined) {\n if (typeof outModes === \"object\") {\n this.outModes.load(outModes);\n }\n else {\n this.outModes.load({\n default: outModes,\n });\n }\n }\n this.path.load((_c = data.path) !== null && _c !== void 0 ? _c : data.noise);\n if (data.random !== undefined) {\n this.random = data.random;\n }\n if (data.size !== undefined) {\n this.size = data.size;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n this.spin.load(data.spin);\n if (data.straight !== undefined) {\n this.straight = data.straight;\n }\n this.trail.load(data.trail);\n if (data.vibrate !== undefined) {\n this.vibrate = data.vibrate;\n }\n if (data.warp !== undefined) {\n this.warp = data.warp;\n }\n }\n}\n","import { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class AnimationOptions {\n constructor() {\n this.count = 0;\n this.enable = false;\n this.speed = 1;\n this.decay = 0;\n this.sync = false;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.count !== undefined) {\n this.count = setRangeValue(data.count);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n this.speed = setRangeValue(data.speed);\n }\n if (data.decay !== undefined) {\n this.decay = setRangeValue(data.decay);\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { AnimationOptions } from \"../../AnimationOptions\";\nexport class OpacityAnimation extends AnimationOptions {\n constructor() {\n super();\n this.destroy = \"none\";\n this.enable = false;\n this.speed = 2;\n this.startValue = \"random\";\n this.sync = false;\n }\n get opacity_min() {\n return this.minimumValue;\n }\n set opacity_min(value) {\n this.minimumValue = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n super.load(data);\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.opacity_min;\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { OpacityAnimation } from \"./OpacityAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Opacity extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new OpacityAnimation();\n this.random.minimumValue = 0.1;\n this.value = 1;\n }\n get anim() {\n return this.animation;\n }\n set anim(value) {\n this.animation = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n super.load(data);\n const animation = (_a = data.animation) !== null && _a !== void 0 ? _a : data.anim;\n if (animation !== undefined) {\n this.animation.load(animation);\n this.value = setRangeValue(this.value, this.animation.enable ? this.animation.minimumValue : undefined);\n }\n }\n}\n","export class ParticlesDensity {\n constructor() {\n this.enable = false;\n this.width = 1920;\n this.height = 1080;\n }\n get area() {\n return this.width;\n }\n set area(value) {\n this.width = value;\n }\n get factor() {\n return this.height;\n }\n set factor(value) {\n this.height = value;\n }\n get value_area() {\n return this.area;\n }\n set value_area(value) {\n this.area = value;\n }\n load(data) {\n var _a, _b, _c;\n if (!data) {\n return;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n const width = (_b = (_a = data.width) !== null && _a !== void 0 ? _a : data.area) !== null && _b !== void 0 ? _b : data.value_area;\n if (width !== undefined) {\n this.width = width;\n }\n const height = (_c = data.height) !== null && _c !== void 0 ? _c : data.factor;\n if (height !== undefined) {\n this.height = height;\n }\n }\n}\n","import { ParticlesDensity } from \"./ParticlesDensity\";\nexport class ParticlesNumber {\n constructor() {\n this.density = new ParticlesDensity();\n this.limit = 0;\n this.value = 100;\n }\n get max() {\n return this.limit;\n }\n set max(value) {\n this.limit = value;\n }\n load(data) {\n var _a;\n if (!data) {\n return;\n }\n this.density.load(data.density);\n const limit = (_a = data.limit) !== null && _a !== void 0 ? _a : data.max;\n if (limit !== undefined) {\n this.limit = limit;\n }\n if (data.value !== undefined) {\n this.value = data.value;\n }\n }\n}\n","import { OptionsColor } from \"../OptionsColor\";\nexport class Shadow {\n constructor() {\n this.blur = 0;\n this.color = new OptionsColor();\n this.enable = false;\n this.offset = {\n x: 0,\n y: 0,\n };\n this.color.value = \"#000\";\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.blur !== undefined) {\n this.blur = data.blur;\n }\n this.color = OptionsColor.create(this.color, data.color);\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.offset === undefined) {\n return;\n }\n if (data.offset.x !== undefined) {\n this.offset.x = data.offset.x;\n }\n if (data.offset.y !== undefined) {\n this.offset.y = data.offset.y;\n }\n }\n}\n","import { deepExtend } from \"../../../../Utils/Utils\";\nconst charKey = \"character\", charAltKey = \"char\", imageKey = \"image\", imageAltKey = \"images\", polygonKey = \"polygon\", polygonAltKey = \"star\";\nexport class Shape {\n constructor() {\n this.options = {};\n this.type = \"circle\";\n }\n get character() {\n var _a;\n return ((_a = this.options[charKey]) !== null && _a !== void 0 ? _a : this.options[charAltKey]);\n }\n set character(value) {\n this.options[charAltKey] = this.options[charKey] = value;\n }\n get custom() {\n return this.options;\n }\n set custom(value) {\n this.options = value;\n }\n get image() {\n var _a;\n return ((_a = this.options[imageKey]) !== null && _a !== void 0 ? _a : this.options[imageAltKey]);\n }\n set image(value) {\n this.options[imageAltKey] = this.options[imageKey] = value;\n }\n get images() {\n return this.image;\n }\n set images(value) {\n this.image = value;\n }\n get polygon() {\n var _a;\n return ((_a = this.options[polygonKey]) !== null && _a !== void 0 ? _a : this.options[polygonAltKey]);\n }\n set polygon(value) {\n this.options[polygonAltKey] = this.options[polygonKey] = value;\n }\n get stroke() {\n return [];\n }\n set stroke(_value) {\n }\n load(data) {\n var _a, _b, _c;\n if (!data) {\n return;\n }\n const options = (_a = data.options) !== null && _a !== void 0 ? _a : data.custom;\n if (options !== undefined) {\n for (const shape in options) {\n const item = options[shape];\n if (item) {\n this.options[shape] = deepExtend((_b = this.options[shape]) !== null && _b !== void 0 ? _b : {}, item);\n }\n }\n }\n this.loadShape(data.character, charKey, charAltKey, true);\n this.loadShape(data.polygon, polygonKey, polygonAltKey, false);\n this.loadShape((_c = data.image) !== null && _c !== void 0 ? _c : data.images, imageKey, imageAltKey, true);\n if (data.type !== undefined) {\n this.type = data.type;\n }\n }\n loadShape(item, mainKey, altKey, altOverride) {\n var _a, _b;\n if (!item) {\n return;\n }\n const isArray = item instanceof Array;\n const emptyValue = isArray ? [] : {}, mainDifferentValues = isArray !== this.options[mainKey] instanceof Array, altDifferentValues = isArray !== this.options[altKey] instanceof Array;\n if (mainDifferentValues) {\n this.options[mainKey] = emptyValue;\n }\n if (altDifferentValues && altOverride) {\n this.options[altKey] = emptyValue;\n }\n this.options[mainKey] = deepExtend((_a = this.options[mainKey]) !== null && _a !== void 0 ? _a : emptyValue, item);\n if (!this.options[altKey] || altOverride) {\n this.options[altKey] = deepExtend((_b = this.options[altKey]) !== null && _b !== void 0 ? _b : emptyValue, item);\n }\n }\n}\n","import { AnimationOptions } from \"../../AnimationOptions\";\nexport class SizeAnimation extends AnimationOptions {\n constructor() {\n super();\n this.destroy = \"none\";\n this.enable = false;\n this.speed = 5;\n this.startValue = \"random\";\n this.sync = false;\n }\n get size_min() {\n return this.minimumValue;\n }\n set size_min(value) {\n this.minimumValue = value;\n }\n load(data) {\n var _a;\n super.load(data);\n if (!data) {\n return;\n }\n if (data.destroy !== undefined) {\n this.destroy = data.destroy;\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n this.minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.size_min;\n if (data.speed !== undefined) {\n this.speed = data.speed;\n }\n if (data.startValue !== undefined) {\n this.startValue = data.startValue;\n }\n if (data.sync !== undefined) {\n this.sync = data.sync;\n }\n }\n}\n","import { SizeAnimation } from \"./SizeAnimation\";\nimport { ValueWithRandom } from \"../../ValueWithRandom\";\nimport { setRangeValue } from \"../../../../Utils/NumberUtils\";\nexport class Size extends ValueWithRandom {\n constructor() {\n super();\n this.animation = new SizeAnimation();\n this.random.minimumValue = 1;\n this.value = 3;\n }\n get anim() {\n return this.animation;\n }\n set anim(value) {\n this.animation = value;\n }\n load(data) {\n var _a;\n super.load(data);\n if (!data) {\n return;\n }\n const animation = (_a = data.animation) !== null && _a !== void 0 ? _a : data.anim;\n if (animation !== undefined) {\n this.animation.load(animation);\n this.value = setRangeValue(this.value, this.animation.enable ? this.animation.minimumValue : undefined);\n }\n }\n}\n","import { AnimatableColor } from \"../AnimatableColor\";\nimport { setRangeValue } from \"../../../Utils/NumberUtils\";\nexport class Stroke {\n constructor() {\n this.width = 0;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.color !== undefined) {\n this.color = AnimatableColor.create(this.color, data.color);\n }\n if (data.width !== undefined) {\n this.width = setRangeValue(data.width);\n }\n if (data.opacity !== undefined) {\n this.opacity = setRangeValue(data.opacity);\n }\n }\n}\n","import { ValueWithRandom } from \"../../ValueWithRandom\";\nexport class ZIndex extends ValueWithRandom {\n constructor() {\n super();\n this.opacityRate = 1;\n this.sizeRate = 1;\n this.velocityRate = 1;\n }\n load(data) {\n super.load(data);\n if (!data) {\n return;\n }\n if (data.opacityRate !== undefined) {\n this.opacityRate = data.opacityRate;\n }\n if (data.sizeRate !== undefined) {\n this.sizeRate = data.sizeRate;\n }\n if (data.velocityRate !== undefined) {\n this.velocityRate = data.velocityRate;\n }\n }\n}\n","import { deepExtend, executeOnSingleOrMultiple } from \"../../../Utils/Utils\";\nimport { AnimatableColor } from \"../AnimatableColor\";\nimport { Collisions } from \"./Collisions/Collisions\";\nimport { Move } from \"./Move/Move\";\nimport { Opacity } from \"./Opacity/Opacity\";\nimport { ParticlesBounce } from \"./Bounce/ParticlesBounce\";\nimport { ParticlesNumber } from \"./Number/ParticlesNumber\";\nimport { Shadow } from \"./Shadow\";\nimport { Shape } from \"./Shape/Shape\";\nimport { Size } from \"./Size/Size\";\nimport { Stroke } from \"./Stroke\";\nimport { ZIndex } from \"./ZIndex/ZIndex\";\nexport class ParticlesOptions {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n this.bounce = new ParticlesBounce();\n this.collisions = new Collisions();\n this.color = new AnimatableColor();\n this.color.value = \"#fff\";\n this.groups = {};\n this.move = new Move();\n this.number = new ParticlesNumber();\n this.opacity = new Opacity();\n this.reduceDuplicates = false;\n this.shadow = new Shadow();\n this.shape = new Shape();\n this.size = new Size();\n this.stroke = new Stroke();\n this.zIndex = new ZIndex();\n }\n load(data) {\n var _a, _b, _c, _d, _e, _f;\n if (!data) {\n return;\n }\n this.bounce.load(data.bounce);\n this.color.load(AnimatableColor.create(this.color, data.color));\n if (data.groups !== undefined) {\n for (const group in data.groups) {\n const item = data.groups[group];\n if (item !== undefined) {\n this.groups[group] = deepExtend((_a = this.groups[group]) !== null && _a !== void 0 ? _a : {}, item);\n }\n }\n }\n this.move.load(data.move);\n this.number.load(data.number);\n this.opacity.load(data.opacity);\n if (data.reduceDuplicates !== undefined) {\n this.reduceDuplicates = data.reduceDuplicates;\n }\n this.shape.load(data.shape);\n this.size.load(data.size);\n this.shadow.load(data.shadow);\n this.zIndex.load(data.zIndex);\n const collisions = (_c = (_b = data.move) === null || _b === void 0 ? void 0 : _b.collisions) !== null && _c !== void 0 ? _c : (_d = data.move) === null || _d === void 0 ? void 0 : _d.bounce;\n if (collisions !== undefined) {\n this.collisions.enable = collisions;\n }\n this.collisions.load(data.collisions);\n if (data.interactivity !== undefined) {\n this.interactivity = deepExtend({}, data.interactivity);\n }\n const strokeToLoad = (_e = data.stroke) !== null && _e !== void 0 ? _e : (_f = data.shape) === null || _f === void 0 ? void 0 : _f.stroke;\n if (strokeToLoad) {\n this.stroke = executeOnSingleOrMultiple(strokeToLoad, (t) => {\n const tmp = new Stroke();\n tmp.load(t);\n return tmp;\n });\n }\n if (this._container) {\n const updaters = this._engine.plugins.updaters.get(this._container);\n if (updaters) {\n for (const updater of updaters) {\n if (updater.loadOptions) {\n updater.loadOptions(this, data);\n }\n }\n }\n const interactors = this._engine.plugins.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadParticlesOptions) {\n interactor.loadParticlesOptions(this, data);\n }\n }\n }\n }\n }\n}\n","import { ParticlesOptions } from \"../Options/Classes/Particles/ParticlesOptions\";\nexport function loadOptions(options, ...sourceOptionsArr) {\n for (const sourceOptions of sourceOptionsArr) {\n options.load(sourceOptions);\n }\n}\nexport function loadParticlesOptions(engine, container, ...sourceOptionsArr) {\n const options = new ParticlesOptions(engine, container);\n loadOptions(options, ...sourceOptionsArr);\n return options;\n}\n","import { deepExtend, executeOnSingleOrMultiple, safeMatchMedia } from \"../../Utils/Utils\";\nimport { Background } from \"./Background/Background\";\nimport { BackgroundMask } from \"./BackgroundMask/BackgroundMask\";\nimport { FullScreen } from \"./FullScreen/FullScreen\";\nimport { Interactivity } from \"./Interactivity/Interactivity\";\nimport { ManualParticle } from \"./ManualParticle\";\nimport { Responsive } from \"./Responsive\";\nimport { Theme } from \"./Theme/Theme\";\nimport { loadParticlesOptions } from \"../../Utils/OptionsUtils\";\nimport { setRangeValue } from \"../../Utils/NumberUtils\";\nexport class Options {\n constructor(engine, container) {\n this._engine = engine;\n this._container = container;\n this.autoPlay = true;\n this.background = new Background();\n this.backgroundMask = new BackgroundMask();\n this.defaultThemes = {};\n this.delay = 0;\n this.fullScreen = new FullScreen();\n this.detectRetina = true;\n this.duration = 0;\n this.fpsLimit = 120;\n this.interactivity = new Interactivity(engine, container);\n this.manualParticles = [];\n this.particles = loadParticlesOptions(this._engine, this._container);\n this.pauseOnBlur = true;\n this.pauseOnOutsideViewport = true;\n this.responsive = [];\n this.smooth = false;\n this.style = {};\n this.themes = [];\n this.zLayers = 100;\n }\n get backgroundMode() {\n return this.fullScreen;\n }\n set backgroundMode(value) {\n this.fullScreen.load(value);\n }\n get fps_limit() {\n return this.fpsLimit;\n }\n set fps_limit(value) {\n this.fpsLimit = value;\n }\n get retina_detect() {\n return this.detectRetina;\n }\n set retina_detect(value) {\n this.detectRetina = value;\n }\n load(data) {\n var _a, _b, _c, _d, _e;\n if (!data) {\n return;\n }\n if (data.preset !== undefined) {\n executeOnSingleOrMultiple(data.preset, (preset) => this._importPreset(preset));\n }\n if (data.autoPlay !== undefined) {\n this.autoPlay = data.autoPlay;\n }\n if (data.delay !== undefined) {\n this.delay = setRangeValue(data.delay);\n }\n const detectRetina = (_a = data.detectRetina) !== null && _a !== void 0 ? _a : data.retina_detect;\n if (detectRetina !== undefined) {\n this.detectRetina = detectRetina;\n }\n if (data.duration !== undefined) {\n this.duration = setRangeValue(data.duration);\n }\n const fpsLimit = (_b = data.fpsLimit) !== null && _b !== void 0 ? _b : data.fps_limit;\n if (fpsLimit !== undefined) {\n this.fpsLimit = fpsLimit;\n }\n if (data.pauseOnBlur !== undefined) {\n this.pauseOnBlur = data.pauseOnBlur;\n }\n if (data.pauseOnOutsideViewport !== undefined) {\n this.pauseOnOutsideViewport = data.pauseOnOutsideViewport;\n }\n if (data.zLayers !== undefined) {\n this.zLayers = data.zLayers;\n }\n this.background.load(data.background);\n const fullScreen = (_c = data.fullScreen) !== null && _c !== void 0 ? _c : data.backgroundMode;\n if (typeof fullScreen === \"boolean\") {\n this.fullScreen.enable = fullScreen;\n }\n else {\n this.fullScreen.load(fullScreen);\n }\n this.backgroundMask.load(data.backgroundMask);\n this.interactivity.load(data.interactivity);\n if (data.manualParticles !== undefined) {\n this.manualParticles = data.manualParticles.map((t) => {\n const tmp = new ManualParticle();\n tmp.load(t);\n return tmp;\n });\n }\n this.particles.load(data.particles);\n this.style = deepExtend(this.style, data.style);\n this._engine.plugins.loadOptions(this, data);\n if (data.smooth !== undefined) {\n this.smooth = data.smooth;\n }\n const interactors = this._engine.plugins.interactors.get(this._container);\n if (interactors) {\n for (const interactor of interactors) {\n if (interactor.loadOptions) {\n interactor.loadOptions(this, data);\n }\n }\n }\n if (data.responsive !== undefined) {\n for (const responsive of data.responsive) {\n const optResponsive = new Responsive();\n optResponsive.load(responsive);\n this.responsive.push(optResponsive);\n }\n }\n this.responsive.sort((a, b) => a.maxWidth - b.maxWidth);\n if (data.themes !== undefined) {\n for (const theme of data.themes) {\n const existingTheme = this.themes.find((t) => t.name === theme.name);\n if (!existingTheme) {\n const optTheme = new Theme();\n optTheme.load(theme);\n this.themes.push(optTheme);\n }\n else {\n existingTheme.load(theme);\n }\n }\n }\n this.defaultThemes.dark = (_d = this._findDefaultTheme(\"dark\")) === null || _d === void 0 ? void 0 : _d.name;\n this.defaultThemes.light = (_e = this._findDefaultTheme(\"light\")) === null || _e === void 0 ? void 0 : _e.name;\n }\n setResponsive(width, pxRatio, defaultOptions) {\n this.load(defaultOptions);\n const responsiveOptions = this.responsive.find((t) => t.mode === \"screen\" && screen ? t.maxWidth > screen.availWidth : t.maxWidth * pxRatio > width);\n this.load(responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.options);\n return responsiveOptions === null || responsiveOptions === void 0 ? void 0 : responsiveOptions.maxWidth;\n }\n setTheme(name) {\n if (name) {\n const chosenTheme = this.themes.find((theme) => theme.name === name);\n if (chosenTheme) {\n this.load(chosenTheme.options);\n }\n }\n else {\n const mediaMatch = safeMatchMedia(\"(prefers-color-scheme: dark)\"), clientDarkMode = mediaMatch && mediaMatch.matches, defaultTheme = this._findDefaultTheme(clientDarkMode ? \"dark\" : \"light\");\n if (defaultTheme) {\n this.load(defaultTheme.options);\n }\n }\n }\n _findDefaultTheme(mode) {\n var _a;\n return ((_a = this.themes.find((theme) => theme.default.value && theme.default.mode === mode)) !== null && _a !== void 0 ? _a : this.themes.find((theme) => theme.default.value && theme.default.mode === \"any\"));\n }\n _importPreset(preset) {\n this.load(this._engine.plugins.getPreset(preset));\n }\n}\n","export class InteractionManager {\n constructor(engine, container) {\n this.container = container;\n this._engine = engine;\n this._interactors = this._engine.plugins.getInteractors(this.container, true);\n this._externalInteractors = [];\n this._particleInteractors = [];\n }\n async externalInteract(delta) {\n for (const interactor of this._externalInteractors) {\n if (interactor.isEnabled()) {\n await interactor.interact(delta);\n }\n }\n }\n handleClickMode(mode) {\n for (const interactor of this._externalInteractors) {\n if (interactor.handleClickMode) {\n interactor.handleClickMode(mode);\n }\n }\n }\n init() {\n this._externalInteractors = [];\n this._particleInteractors = [];\n for (const interactor of this._interactors) {\n switch (interactor.type) {\n case \"external\":\n this._externalInteractors.push(interactor);\n break;\n case \"particles\":\n this._particleInteractors.push(interactor);\n break;\n }\n interactor.init();\n }\n }\n async particlesInteract(particle, delta) {\n for (const interactor of this._externalInteractors) {\n interactor.clear(particle, delta);\n }\n for (const interactor of this._particleInteractors) {\n if (interactor.isEnabled(particle)) {\n await interactor.interact(particle, delta);\n }\n }\n }\n async reset(particle) {\n for (const interactor of this._externalInteractors) {\n if (interactor.isEnabled()) {\n await interactor.reset(particle);\n }\n }\n for (const interactor of this._particleInteractors) {\n if (interactor.isEnabled(particle)) {\n await interactor.reset(particle);\n }\n }\n }\n}\n","import { calcExactPositionOrRandomFromSize, clamp, getDistance, getParticleBaseVelocity, getParticleDirectionAngle, getRandom, getRangeMax, getRangeMin, getRangeValue, getValue, randomInRange, setRangeValue, } from \"../Utils/NumberUtils\";\nimport { deepExtend, isInArray, itemFromSingleOrMultiple } from \"../Utils/Utils\";\nimport { getHslFromAnimation, rangeColorToRgb } from \"../Utils/ColorUtils\";\nimport { Interactivity } from \"../Options/Classes/Interactivity/Interactivity\";\nimport { Vector } from \"./Utils/Vector\";\nimport { Vector3d } from \"./Utils/Vector3d\";\nimport { alterHsl } from \"../Utils/CanvasUtils\";\nimport { loadParticlesOptions } from \"../Utils/OptionsUtils\";\nconst fixOutMode = (data) => {\n if (!isInArray(data.outMode, data.checkModes)) {\n return;\n }\n if (data.coord > data.maxCoord - data.radius * 2) {\n data.setCb(-data.radius);\n }\n else if (data.coord < data.radius * 2) {\n data.setCb(data.radius);\n }\n};\nexport class Particle {\n constructor(engine, id, container, position, overrideOptions, group) {\n this.container = container;\n this._engine = engine;\n this.init(id, position, overrideOptions, group);\n }\n destroy(override) {\n var _a;\n if (this.unbreakable || this.destroyed) {\n return;\n }\n this.destroyed = true;\n this.bubble.inRange = false;\n this.slow.inRange = false;\n for (const [, plugin] of this.container.plugins) {\n if (plugin.particleDestroyed) {\n plugin.particleDestroyed(this, override);\n }\n }\n for (const updater of this.container.particles.updaters) {\n if (updater.particleDestroyed) {\n updater.particleDestroyed(this, override);\n }\n }\n (_a = this.pathGenerator) === null || _a === void 0 ? void 0 : _a.reset(this);\n }\n draw(delta) {\n const container = this.container;\n for (const [, plugin] of container.plugins) {\n container.canvas.drawParticlePlugin(plugin, this, delta);\n }\n container.canvas.drawParticle(this, delta);\n }\n getFillColor() {\n var _a;\n return this._getRollColor((_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.color));\n }\n getMass() {\n return (this.getRadius() ** 2 * Math.PI) / 2;\n }\n getPosition() {\n return {\n x: this.position.x + this.offset.x,\n y: this.position.y + this.offset.y,\n z: this.position.z,\n };\n }\n getRadius() {\n var _a;\n return (_a = this.bubble.radius) !== null && _a !== void 0 ? _a : this.size.value;\n }\n getStrokeColor() {\n var _a;\n return this._getRollColor((_a = this.bubble.color) !== null && _a !== void 0 ? _a : getHslFromAnimation(this.strokeColor));\n }\n init(id, position, overrideOptions, group) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const container = this.container, engine = this._engine;\n this.id = id;\n this.group = group;\n this.fill = true;\n this.pathRotation = false;\n this.close = true;\n this.lastPathTime = 0;\n this.destroyed = false;\n this.unbreakable = false;\n this.rotation = 0;\n this.misplaced = false;\n this.retina = {\n maxDistance: {},\n };\n this.outType = \"normal\";\n this.ignoresResizeRatio = true;\n const pxRatio = container.retina.pixelRatio, mainOptions = container.actualOptions, particlesOptions = loadParticlesOptions(this._engine, container, mainOptions.particles), shapeType = particlesOptions.shape.type, { reduceDuplicates } = particlesOptions;\n this.shape = itemFromSingleOrMultiple(shapeType, this.id, reduceDuplicates);\n const shapeOptions = particlesOptions.shape;\n if (overrideOptions && overrideOptions.shape && overrideOptions.shape.type) {\n const overrideShapeType = overrideOptions.shape.type, shape = itemFromSingleOrMultiple(overrideShapeType, this.id, reduceDuplicates);\n if (shape) {\n this.shape = shape;\n shapeOptions.load(overrideOptions.shape);\n }\n }\n this.shapeData = this._loadShapeData(shapeOptions, reduceDuplicates);\n particlesOptions.load(overrideOptions);\n particlesOptions.load((_a = this.shapeData) === null || _a === void 0 ? void 0 : _a.particles);\n this.interactivity = new Interactivity(engine, container);\n this.interactivity.load(container.actualOptions.interactivity);\n this.interactivity.load(particlesOptions.interactivity);\n this.fill = (_c = (_b = this.shapeData) === null || _b === void 0 ? void 0 : _b.fill) !== null && _c !== void 0 ? _c : this.fill;\n this.close = (_e = (_d = this.shapeData) === null || _d === void 0 ? void 0 : _d.close) !== null && _e !== void 0 ? _e : this.close;\n this.options = particlesOptions;\n const pathOptions = this.options.move.path;\n this.pathDelay = getValue(pathOptions.delay) * 1000;\n if (pathOptions.generator) {\n this.pathGenerator = this._engine.plugins.getPathGenerator(pathOptions.generator);\n if (this.pathGenerator && container.addPath(pathOptions.generator, this.pathGenerator)) {\n this.pathGenerator.init(container);\n }\n }\n const zIndexValue = getRangeValue(this.options.zIndex.value);\n container.retina.initParticle(this);\n const sizeOptions = this.options.size, sizeRange = sizeOptions.value, sizeAnimation = sizeOptions.animation;\n this.size = {\n enable: sizeOptions.animation.enable,\n value: getRangeValue(sizeOptions.value) * container.retina.pixelRatio,\n max: getRangeMax(sizeRange) * pxRatio,\n min: getRangeMin(sizeRange) * pxRatio,\n loops: 0,\n maxLoops: getRangeValue(sizeOptions.animation.count),\n };\n if (sizeAnimation.enable) {\n this.size.status = \"increasing\";\n this.size.decay = 1 - getRangeValue(sizeAnimation.decay);\n switch (sizeAnimation.startValue) {\n case \"min\":\n this.size.value = this.size.min;\n this.size.status = \"increasing\";\n break;\n case \"random\":\n this.size.value = randomInRange(this.size);\n this.size.status = getRandom() >= 0.5 ? \"increasing\" : \"decreasing\";\n break;\n case \"max\":\n default:\n this.size.value = this.size.max;\n this.size.status = \"decreasing\";\n break;\n }\n }\n this.size.initialValue = this.size.value;\n this.bubble = {\n inRange: false,\n };\n this.slow = {\n inRange: false,\n factor: 1,\n };\n this.position = this._calcPosition(container, position, clamp(zIndexValue, 0, container.zLayers));\n this.initialPosition = this.position.copy();\n const canvasSize = container.canvas.size, moveCenter = Object.assign({}, this.options.move.center), isCenterPercent = moveCenter.mode === \"percent\";\n this.moveCenter = {\n x: moveCenter.x * (isCenterPercent ? canvasSize.width / 100 : 1),\n y: moveCenter.y * (isCenterPercent ? canvasSize.height / 100 : 1),\n radius: (_f = this.options.move.center.radius) !== null && _f !== void 0 ? _f : 0,\n mode: (_g = this.options.move.center.mode) !== null && _g !== void 0 ? _g : \"percent\",\n };\n this.direction = getParticleDirectionAngle(this.options.move.direction, this.position, this.moveCenter);\n switch (this.options.move.direction) {\n case \"inside\":\n this.outType = \"inside\";\n break;\n case \"outside\":\n this.outType = \"outside\";\n break;\n }\n this.initialVelocity = this._calculateVelocity();\n this.velocity = this.initialVelocity.copy();\n this.moveDecay = 1 - getRangeValue(this.options.move.decay);\n this.offset = Vector.origin;\n const particles = container.particles;\n particles.needsSort = particles.needsSort || particles.lastZIndex < this.position.z;\n particles.lastZIndex = this.position.z;\n this.zIndexFactor = this.position.z / container.zLayers;\n this.sides = 24;\n let drawer = container.drawers.get(this.shape);\n if (!drawer) {\n drawer = this._engine.plugins.getShapeDrawer(this.shape);\n if (drawer) {\n container.drawers.set(this.shape, drawer);\n }\n }\n if (drawer === null || drawer === void 0 ? void 0 : drawer.loadShape) {\n drawer === null || drawer === void 0 ? void 0 : drawer.loadShape(this);\n }\n const sideCountFunc = drawer === null || drawer === void 0 ? void 0 : drawer.getSidesCount;\n if (sideCountFunc) {\n this.sides = sideCountFunc(this);\n }\n this.spawning = false;\n this.shadowColor = rangeColorToRgb(this.options.shadow.color);\n for (const updater of container.particles.updaters) {\n updater.init(this);\n }\n for (const mover of container.particles.movers) {\n (_h = mover.init) === null || _h === void 0 ? void 0 : _h.call(mover, this);\n }\n if (drawer === null || drawer === void 0 ? void 0 : drawer.particleInit) {\n drawer.particleInit(container, this);\n }\n for (const [, plugin] of container.plugins) {\n (_j = plugin.particleCreated) === null || _j === void 0 ? void 0 : _j.call(plugin, this);\n }\n }\n isInsideCanvas() {\n const radius = this.getRadius(), canvasSize = this.container.canvas.size;\n return (this.position.x >= -radius &&\n this.position.y >= -radius &&\n this.position.y <= canvasSize.height + radius &&\n this.position.x <= canvasSize.width + radius);\n }\n isVisible() {\n return !this.destroyed && !this.spawning && this.isInsideCanvas();\n }\n reset() {\n var _a;\n for (const updater of this.container.particles.updaters) {\n (_a = updater.reset) === null || _a === void 0 ? void 0 : _a.call(updater, this);\n }\n }\n _calcPosition(container, position, zIndex, tryCount = 0) {\n var _a, _b, _c, _d;\n for (const [, plugin] of container.plugins) {\n const pluginPos = plugin.particlePosition !== undefined ? plugin.particlePosition(position, this) : undefined;\n if (pluginPos !== undefined) {\n return Vector3d.create(pluginPos.x, pluginPos.y, zIndex);\n }\n }\n const canvasSize = container.canvas.size, exactPosition = calcExactPositionOrRandomFromSize({\n size: canvasSize,\n position: position,\n }), pos = Vector3d.create(exactPosition.x, exactPosition.y, zIndex), radius = this.getRadius(), outModes = this.options.move.outModes, fixHorizontal = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [\"bounce\", \"bounce-horizontal\"],\n coord: pos.x,\n maxCoord: container.canvas.size.width,\n setCb: (value) => (pos.x += value),\n radius,\n });\n }, fixVertical = (outMode) => {\n fixOutMode({\n outMode,\n checkModes: [\"bounce\", \"bounce-vertical\"],\n coord: pos.y,\n maxCoord: container.canvas.size.height,\n setCb: (value) => (pos.y += value),\n radius,\n });\n };\n fixHorizontal((_a = outModes.left) !== null && _a !== void 0 ? _a : outModes.default);\n fixHorizontal((_b = outModes.right) !== null && _b !== void 0 ? _b : outModes.default);\n fixVertical((_c = outModes.top) !== null && _c !== void 0 ? _c : outModes.default);\n fixVertical((_d = outModes.bottom) !== null && _d !== void 0 ? _d : outModes.default);\n if (this._checkOverlap(pos, tryCount)) {\n return this._calcPosition(container, undefined, zIndex, tryCount + 1);\n }\n return pos;\n }\n _calculateVelocity() {\n const baseVelocity = getParticleBaseVelocity(this.direction), res = baseVelocity.copy(), moveOptions = this.options.move;\n if (moveOptions.direction === \"inside\" || moveOptions.direction === \"outside\") {\n return res;\n }\n const rad = (Math.PI / 180) * getRangeValue(moveOptions.angle.value), radOffset = (Math.PI / 180) * getRangeValue(moveOptions.angle.offset), range = {\n left: radOffset - rad / 2,\n right: radOffset + rad / 2,\n };\n if (!moveOptions.straight) {\n res.angle += randomInRange(setRangeValue(range.left, range.right));\n }\n if (moveOptions.random && typeof moveOptions.speed === \"number\") {\n res.length *= getRandom();\n }\n return res;\n }\n _checkOverlap(pos, tryCount = 0) {\n const collisionsOptions = this.options.collisions, radius = this.getRadius();\n if (!collisionsOptions.enable) {\n return false;\n }\n const overlapOptions = collisionsOptions.overlap;\n if (overlapOptions.enable) {\n return false;\n }\n const retries = overlapOptions.retries;\n if (retries >= 0 && tryCount > retries) {\n throw new Error(\"Particle is overlapping and can't be placed\");\n }\n let overlaps = false;\n for (const particle of this.container.particles.array) {\n if (getDistance(pos, particle.position) < radius + particle.getRadius()) {\n overlaps = true;\n break;\n }\n }\n return overlaps;\n }\n _getRollColor(color) {\n var _a;\n if (!color || !this.roll || (!this.backColor && !this.roll.alter)) {\n return color;\n }\n const backFactor = this.roll.horizontal && this.roll.vertical ? 2 : 1, backSum = this.roll.horizontal ? Math.PI / 2 : 0, rolled = Math.floor((((_a = this.roll.angle) !== null && _a !== void 0 ? _a : 0) + backSum) / (Math.PI / backFactor)) % 2;\n if (!rolled) {\n return color;\n }\n if (this.backColor) {\n return this.backColor;\n }\n if (this.roll.alter) {\n return alterHsl(color, this.roll.alter.type, this.roll.alter.value);\n }\n return color;\n }\n _loadShapeData(shapeOptions, reduceDuplicates) {\n const shapeData = shapeOptions.options[this.shape];\n if (shapeData) {\n return deepExtend({}, itemFromSingleOrMultiple(shapeData, this.id, reduceDuplicates));\n }\n }\n}\n","export class Point {\n constructor(position, particle) {\n this.position = position;\n this.particle = particle;\n }\n}\n","export class Range {\n constructor(x, y) {\n this.position = {\n x: x,\n y: y,\n };\n }\n}\n","import { Range } from \"./Range\";\nimport { getDistance } from \"../../Utils/NumberUtils\";\nexport class Circle extends Range {\n constructor(x, y, radius) {\n super(x, y);\n this.radius = radius;\n }\n contains(point) {\n return getDistance(point, this.position) <= this.radius;\n }\n intersects(range) {\n const rect = range, circle = range, pos1 = this.position, pos2 = range.position, distPos = { x: Math.abs(pos2.x - pos1.x), y: Math.abs(pos2.y - pos1.y) }, r = this.radius;\n if (circle.radius !== undefined) {\n const rSum = r + circle.radius, dist = Math.sqrt(distPos.x ** 2 + distPos.y ** 2);\n return rSum > dist;\n }\n else if (rect.size !== undefined) {\n const w = rect.size.width, h = rect.size.height, edges = Math.pow(distPos.x - w, 2) + Math.pow(distPos.y - h, 2);\n return edges <= r ** 2 || (distPos.x <= r + w && distPos.y <= r + h) || distPos.x <= w || distPos.y <= h;\n }\n return false;\n }\n}\n","import { Circle } from \"./Circle\";\nimport { Range } from \"./Range\";\nexport class Rectangle extends Range {\n constructor(x, y, width, height) {\n super(x, y);\n this.size = {\n height: height,\n width: width,\n };\n }\n contains(point) {\n const w = this.size.width, h = this.size.height, pos = this.position;\n return point.x >= pos.x && point.x <= pos.x + w && point.y >= pos.y && point.y <= pos.y + h;\n }\n intersects(range) {\n if (range instanceof Circle) {\n range.intersects(this);\n }\n const w = this.size.width, h = this.size.height, pos1 = this.position, pos2 = range.position, size2 = range instanceof Rectangle ? range.size : { width: 0, height: 0 }, w2 = size2.width, h2 = size2.height;\n return pos2.x < pos1.x + w && pos2.x + w2 > pos1.x && pos2.y < pos1.y + h && pos2.y + h2 > pos1.y;\n }\n}\n","import { Circle } from \"./Circle\";\nimport { Rectangle } from \"./Rectangle\";\nimport { getDistance } from \"../../Utils/NumberUtils\";\nexport class QuadTree {\n constructor(rectangle, capacity) {\n this.rectangle = rectangle;\n this.capacity = capacity;\n this._points = [];\n this._divided = false;\n }\n insert(point) {\n var _a, _b, _c, _d, _e;\n if (!this.rectangle.contains(point.position)) {\n return false;\n }\n if (this._points.length < this.capacity) {\n this._points.push(point);\n return true;\n }\n if (!this._divided) {\n this.subdivide();\n }\n return ((_e = (((_a = this._NE) === null || _a === void 0 ? void 0 : _a.insert(point)) ||\n ((_b = this._NW) === null || _b === void 0 ? void 0 : _b.insert(point)) ||\n ((_c = this._SE) === null || _c === void 0 ? void 0 : _c.insert(point)) ||\n ((_d = this._SW) === null || _d === void 0 ? void 0 : _d.insert(point)))) !== null && _e !== void 0 ? _e : false);\n }\n query(range, check, found) {\n var _a, _b, _c, _d;\n const res = found !== null && found !== void 0 ? found : [];\n if (!range.intersects(this.rectangle)) {\n return [];\n }\n for (const p of this._points) {\n if (!range.contains(p.position) &&\n getDistance(range.position, p.position) > p.particle.getRadius() &&\n (!check || check(p.particle))) {\n continue;\n }\n res.push(p.particle);\n }\n if (this._divided) {\n (_a = this._NE) === null || _a === void 0 ? void 0 : _a.query(range, check, res);\n (_b = this._NW) === null || _b === void 0 ? void 0 : _b.query(range, check, res);\n (_c = this._SE) === null || _c === void 0 ? void 0 : _c.query(range, check, res);\n (_d = this._SW) === null || _d === void 0 ? void 0 : _d.query(range, check, res);\n }\n return res;\n }\n queryCircle(position, radius, check) {\n return this.query(new Circle(position.x, position.y, radius), check);\n }\n queryRectangle(position, size, check) {\n return this.query(new Rectangle(position.x, position.y, size.width, size.height), check);\n }\n subdivide() {\n const x = this.rectangle.position.x, y = this.rectangle.position.y, w = this.rectangle.size.width, h = this.rectangle.size.height, capacity = this.capacity;\n this._NE = new QuadTree(new Rectangle(x, y, w / 2, h / 2), capacity);\n this._NW = new QuadTree(new Rectangle(x + w / 2, y, w / 2, h / 2), capacity);\n this._SE = new QuadTree(new Rectangle(x, y + h / 2, w / 2, h / 2), capacity);\n this._SW = new QuadTree(new Rectangle(x + w / 2, y + h / 2, w / 2, h / 2), capacity);\n this._divided = true;\n }\n}\n","import { InteractionManager } from \"./Utils/InteractionManager\";\nimport { Particle } from \"./Particle\";\nimport { Point } from \"./Utils/Point\";\nimport { QuadTree } from \"./Utils/QuadTree\";\nimport { Rectangle } from \"./Utils/Rectangle\";\nimport { calcPositionFromSize } from \"../Utils/NumberUtils\";\nexport class Particles {\n constructor(engine, container) {\n this.container = container;\n this._engine = engine;\n this.nextId = 0;\n this.array = [];\n this.zArray = [];\n this.pool = [];\n this.limit = 0;\n this.needsSort = false;\n this.lastZIndex = 0;\n this.interactionManager = new InteractionManager(this._engine, container);\n const canvasSize = this.container.canvas.size;\n this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, (canvasSize.width * 3) / 2, (canvasSize.height * 3) / 2), 4);\n this.movers = this._engine.plugins.getMovers(container, true);\n this.updaters = this._engine.plugins.getUpdaters(container, true);\n }\n get count() {\n return this.array.length;\n }\n addManualParticles() {\n const container = this.container, options = container.actualOptions;\n for (const particle of options.manualParticles) {\n this.addParticle(calcPositionFromSize({\n size: container.canvas.size,\n position: particle.position,\n }), particle.options);\n }\n }\n addParticle(position, overrideOptions, group, initializer) {\n const container = this.container, options = container.actualOptions, limit = options.particles.number.limit;\n if (limit > 0) {\n const countToRemove = this.count + 1 - limit;\n if (countToRemove > 0) {\n this.removeQuantity(countToRemove);\n }\n }\n return this._pushParticle(position, overrideOptions, group, initializer);\n }\n clear() {\n this.array = [];\n this.zArray = [];\n }\n destroy() {\n this.array = [];\n this.zArray = [];\n this.movers = [];\n this.updaters = [];\n }\n async draw(delta) {\n const container = this.container, canvasSize = this.container.canvas.size;\n this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, (canvasSize.width * 3) / 2, (canvasSize.height * 3) / 2), 4);\n container.canvas.clear();\n await this.update(delta);\n if (this.needsSort) {\n this.zArray.sort((a, b) => b.position.z - a.position.z || a.id - b.id);\n this.lastZIndex = this.zArray[this.zArray.length - 1].position.z;\n this.needsSort = false;\n }\n for (const [, plugin] of container.plugins) {\n container.canvas.drawPlugin(plugin, delta);\n }\n for (const p of this.zArray) {\n p.draw(delta);\n }\n }\n handleClickMode(mode) {\n this.interactionManager.handleClickMode(mode);\n }\n init() {\n var _a;\n const container = this.container, options = container.actualOptions;\n this.lastZIndex = 0;\n this.needsSort = false;\n let handled = false;\n this.updaters = this._engine.plugins.getUpdaters(container, true);\n this.interactionManager.init();\n for (const [, plugin] of container.plugins) {\n if (plugin.particlesInitialization !== undefined) {\n handled = plugin.particlesInitialization();\n }\n if (handled) {\n break;\n }\n }\n this.interactionManager.init();\n for (const [, pathGenerator] of container.pathGenerators) {\n pathGenerator.init(container);\n }\n this.addManualParticles();\n if (!handled) {\n for (const group in options.particles.groups) {\n const groupOptions = options.particles.groups[group];\n for (let i = this.count, j = 0; j < ((_a = groupOptions.number) === null || _a === void 0 ? void 0 : _a.value) && i < options.particles.number.value; i++, j++) {\n this.addParticle(undefined, groupOptions, group);\n }\n }\n for (let i = this.count; i < options.particles.number.value; i++) {\n this.addParticle();\n }\n }\n }\n push(nb, mouse, overrideOptions, group) {\n this.pushing = true;\n for (let i = 0; i < nb; i++) {\n this.addParticle(mouse === null || mouse === void 0 ? void 0 : mouse.position, overrideOptions, group);\n }\n this.pushing = false;\n }\n async redraw() {\n this.clear();\n this.init();\n await this.draw({ value: 0, factor: 0 });\n }\n remove(particle, group, override) {\n this.removeAt(this.array.indexOf(particle), undefined, group, override);\n }\n removeAt(index, quantity = 1, group, override) {\n if (index < 0 || index > this.count) {\n return;\n }\n let deleted = 0;\n for (let i = index; deleted < quantity && i < this.count; i++) {\n const particle = this.array[i];\n if (!particle || particle.group !== group) {\n continue;\n }\n particle.destroy(override);\n this.array.splice(i--, 1);\n const zIdx = this.zArray.indexOf(particle);\n this.zArray.splice(zIdx, 1);\n this.pool.push(particle);\n deleted++;\n this._engine.dispatchEvent(\"particleRemoved\", {\n container: this.container,\n data: {\n particle,\n },\n });\n }\n }\n removeQuantity(quantity, group) {\n this.removeAt(0, quantity, group);\n }\n setDensity() {\n const options = this.container.actualOptions;\n for (const group in options.particles.groups) {\n this._applyDensity(options.particles.groups[group], 0, group);\n }\n this._applyDensity(options.particles, options.manualParticles.length);\n }\n async update(delta) {\n var _a, _b;\n const container = this.container, particlesToDelete = [];\n for (const [, pathGenerator] of container.pathGenerators) {\n pathGenerator.update();\n }\n for (const [, plugin] of container.plugins) {\n (_a = plugin.update) === null || _a === void 0 ? void 0 : _a.call(plugin, delta);\n }\n for (const particle of this.array) {\n const resizeFactor = container.canvas.resizeFactor;\n if (resizeFactor && !particle.ignoresResizeRatio) {\n particle.position.x *= resizeFactor.width;\n particle.position.y *= resizeFactor.height;\n particle.initialPosition.x *= resizeFactor.width;\n particle.initialPosition.y *= resizeFactor.height;\n }\n particle.ignoresResizeRatio = false;\n await this.interactionManager.reset(particle);\n for (const [, plugin] of this.container.plugins) {\n if (particle.destroyed) {\n break;\n }\n (_b = plugin.particleUpdate) === null || _b === void 0 ? void 0 : _b.call(plugin, particle, delta);\n }\n for (const mover of this.movers) {\n if (mover.isEnabled(particle)) {\n mover.move(particle, delta);\n }\n }\n if (particle.destroyed) {\n particlesToDelete.push(particle);\n continue;\n }\n this.quadTree.insert(new Point(particle.getPosition(), particle));\n }\n for (const particle of particlesToDelete) {\n this.remove(particle);\n }\n await this.interactionManager.externalInteract(delta);\n for (const particle of this.array) {\n for (const updater of this.updaters) {\n updater.update(particle, delta);\n }\n if (!particle.destroyed && !particle.spawning) {\n await this.interactionManager.particlesInteract(particle, delta);\n }\n }\n delete container.canvas.resizeFactor;\n }\n _applyDensity(options, manualCount, group) {\n var _a;\n if (!((_a = options.number.density) === null || _a === void 0 ? void 0 : _a.enable)) {\n return;\n }\n const numberOptions = options.number, densityFactor = this._initDensityFactor(numberOptions.density), optParticlesNumber = numberOptions.value, optParticlesLimit = numberOptions.limit > 0 ? numberOptions.limit : optParticlesNumber, particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor + manualCount, particlesCount = Math.min(this.count, this.array.filter((t) => t.group === group).length);\n this.limit = numberOptions.limit * densityFactor;\n if (particlesCount < particlesNumber) {\n this.push(Math.abs(particlesNumber - particlesCount), undefined, options, group);\n }\n else if (particlesCount > particlesNumber) {\n this.removeQuantity(particlesCount - particlesNumber, group);\n }\n }\n _initDensityFactor(densityOptions) {\n const container = this.container;\n if (!container.canvas.element || !densityOptions.enable) {\n return 1;\n }\n const canvas = container.canvas.element, pxRatio = container.retina.pixelRatio;\n return (canvas.width * canvas.height) / (densityOptions.factor * pxRatio ** 2 * densityOptions.area);\n }\n _pushParticle(position, overrideOptions, group, initializer) {\n try {\n let particle = this.pool.pop();\n if (particle) {\n particle.init(this.nextId, position, overrideOptions, group);\n }\n else {\n particle = new Particle(this._engine, this.nextId, this.container, position, overrideOptions, group);\n }\n let canAdd = true;\n if (initializer) {\n canAdd = initializer(particle);\n }\n if (!canAdd) {\n return;\n }\n this.array.push(particle);\n this.zArray.push(particle);\n this.nextId++;\n this._engine.dispatchEvent(\"particleAdded\", {\n container: this.container,\n data: {\n particle,\n },\n });\n return particle;\n }\n catch (e) {\n console.warn(`error adding particle: ${e}`);\n return;\n }\n }\n}\n","import { getRangeValue } from \"../Utils/NumberUtils\";\nimport { isSsr } from \"../Utils/Utils\";\nexport class Retina {\n constructor(container) {\n this.container = container;\n }\n init() {\n const container = this.container, options = container.actualOptions;\n this.pixelRatio = !options.detectRetina || isSsr() ? 1 : window.devicePixelRatio;\n this.reduceFactor = 1;\n const ratio = this.pixelRatio;\n if (container.canvas.element) {\n const element = container.canvas.element;\n container.canvas.size.width = element.offsetWidth * ratio;\n container.canvas.size.height = element.offsetHeight * ratio;\n }\n const particles = options.particles;\n this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;\n this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;\n this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;\n }\n initParticle(particle) {\n const options = particle.options, ratio = this.pixelRatio, moveDistance = options.move.distance, props = particle.retina;\n props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;\n props.moveDrift = getRangeValue(options.move.drift) * ratio;\n props.moveSpeed = getRangeValue(options.move.speed) * ratio;\n props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;\n const maxDistance = props.maxDistance;\n maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;\n maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;\n props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;\n }\n}\n","import { animate, cancelAnimation } from \"../Utils/Utils\";\nimport { Canvas } from \"./Canvas\";\nimport { EventListeners } from \"./Utils/EventListeners\";\nimport { FrameManager } from \"./Utils/FrameManager\";\nimport { Options } from \"../Options/Classes/Options\";\nimport { Particles } from \"./Particles\";\nimport { Retina } from \"./Retina\";\nimport { getRangeValue } from \"../Utils/NumberUtils\";\nimport { loadOptions } from \"../Utils/OptionsUtils\";\nfunction guardCheck(container) {\n return container && !container.destroyed;\n}\nfunction loadContainerOptions(engine, container, ...sourceOptionsArr) {\n const options = new Options(engine, container);\n loadOptions(options, ...sourceOptionsArr);\n return options;\n}\nconst defaultPathGeneratorKey = \"default\", defaultPathGenerator = {\n generate: (p) => {\n const v = p.velocity.copy();\n v.angle += (v.length * Math.PI) / 180;\n return v;\n },\n init: () => {\n },\n update: () => {\n },\n reset: () => {\n },\n};\nexport class Container {\n constructor(engine, id, sourceOptions) {\n this.id = id;\n this._engine = engine;\n this.fpsLimit = 120;\n this.smooth = false;\n this._delay = 0;\n this.duration = 0;\n this.lifeTime = 0;\n this._firstStart = true;\n this.started = false;\n this.destroyed = false;\n this._paused = true;\n this.lastFrameTime = 0;\n this.zLayers = 100;\n this.pageHidden = false;\n this._sourceOptions = sourceOptions;\n this._initialSourceOptions = sourceOptions;\n this.retina = new Retina(this);\n this.canvas = new Canvas(this);\n this.particles = new Particles(this._engine, this);\n this.frameManager = new FrameManager(this);\n this.pathGenerators = new Map();\n this.interactivity = {\n mouse: {\n clicking: false,\n inside: false,\n },\n };\n this.plugins = new Map();\n this.drawers = new Map();\n this._options = loadContainerOptions(this._engine, this);\n this.actualOptions = loadContainerOptions(this._engine, this);\n this._eventListeners = new EventListeners(this);\n if (typeof IntersectionObserver !== \"undefined\" && IntersectionObserver) {\n this._intersectionObserver = new IntersectionObserver((entries) => this._intersectionManager(entries));\n }\n this._engine.dispatchEvent(\"containerBuilt\", { container: this });\n }\n get options() {\n return this._options;\n }\n get sourceOptions() {\n return this._sourceOptions;\n }\n addClickHandler(callback) {\n if (!guardCheck(this)) {\n return;\n }\n const el = this.interactivity.element;\n if (!el) {\n return;\n }\n const clickOrTouchHandler = (e, pos, radius) => {\n if (!guardCheck(this)) {\n return;\n }\n const pxRatio = this.retina.pixelRatio, posRetina = {\n x: pos.x * pxRatio,\n y: pos.y * pxRatio,\n }, particles = this.particles.quadTree.queryCircle(posRetina, radius * pxRatio);\n callback(e, particles);\n };\n const clickHandler = (e) => {\n if (!guardCheck(this)) {\n return;\n }\n const mouseEvent = e, pos = {\n x: mouseEvent.offsetX || mouseEvent.clientX,\n y: mouseEvent.offsetY || mouseEvent.clientY,\n };\n clickOrTouchHandler(e, pos, 1);\n };\n const touchStartHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touched = true;\n touchMoved = false;\n };\n const touchMoveHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touchMoved = true;\n };\n const touchEndHandler = (e) => {\n if (!guardCheck(this)) {\n return;\n }\n if (touched && !touchMoved) {\n const touchEvent = e;\n let lastTouch = touchEvent.touches[touchEvent.touches.length - 1];\n if (!lastTouch) {\n lastTouch = touchEvent.changedTouches[touchEvent.changedTouches.length - 1];\n if (!lastTouch) {\n return;\n }\n }\n const element = this.canvas.element, canvasRect = element ? element.getBoundingClientRect() : undefined, pos = {\n x: lastTouch.clientX - (canvasRect ? canvasRect.left : 0),\n y: lastTouch.clientY - (canvasRect ? canvasRect.top : 0),\n };\n clickOrTouchHandler(e, pos, Math.max(lastTouch.radiusX, lastTouch.radiusY));\n }\n touched = false;\n touchMoved = false;\n };\n const touchCancelHandler = () => {\n if (!guardCheck(this)) {\n return;\n }\n touched = false;\n touchMoved = false;\n };\n let touched = false, touchMoved = false;\n el.addEventListener(\"click\", clickHandler);\n el.addEventListener(\"touchstart\", touchStartHandler);\n el.addEventListener(\"touchmove\", touchMoveHandler);\n el.addEventListener(\"touchend\", touchEndHandler);\n el.addEventListener(\"touchcancel\", touchCancelHandler);\n }\n addPath(key, generator, override = false) {\n if (!guardCheck(this) || (!override && this.pathGenerators.has(key))) {\n return false;\n }\n this.pathGenerators.set(key, generator !== null && generator !== void 0 ? generator : defaultPathGenerator);\n return true;\n }\n destroy() {\n if (!guardCheck(this)) {\n return;\n }\n this.stop();\n this.particles.destroy();\n this.canvas.destroy();\n for (const [, drawer] of this.drawers) {\n if (drawer.destroy) {\n drawer.destroy(this);\n }\n }\n for (const key of this.drawers.keys()) {\n this.drawers.delete(key);\n }\n this._engine.plugins.destroy(this);\n this.destroyed = true;\n const mainArr = this._engine.dom(), idx = mainArr.findIndex((t) => t === this);\n if (idx >= 0) {\n mainArr.splice(idx, 1);\n }\n this._engine.dispatchEvent(\"containerDestroyed\", { container: this });\n }\n draw(force) {\n if (!guardCheck(this)) {\n return;\n }\n let refreshTime = force;\n this._drawAnimationFrame = animate()(async (timestamp) => {\n if (refreshTime) {\n this.lastFrameTime = undefined;\n refreshTime = false;\n }\n await this.frameManager.nextFrame(timestamp);\n });\n }\n exportConfiguration() {\n return JSON.stringify(this.actualOptions, (key, value) => {\n if (key === \"_engine\" || key === \"_container\") {\n return;\n }\n return value;\n }, 2);\n }\n exportImage(callback, type, quality) {\n const element = this.canvas.element;\n if (element) {\n element.toBlob(callback, type !== null && type !== void 0 ? type : \"image/png\", quality);\n }\n }\n exportImg(callback) {\n this.exportImage(callback);\n }\n getAnimationStatus() {\n return !this._paused && !this.pageHidden && guardCheck(this);\n }\n handleClickMode(mode) {\n if (!guardCheck(this)) {\n return;\n }\n this.particles.handleClickMode(mode);\n for (const [, plugin] of this.plugins) {\n if (plugin.handleClickMode) {\n plugin.handleClickMode(mode);\n }\n }\n }\n async init() {\n if (!guardCheck(this)) {\n return;\n }\n const shapes = this._engine.plugins.getSupportedShapes();\n for (const type of shapes) {\n const drawer = this._engine.plugins.getShapeDrawer(type);\n if (drawer) {\n this.drawers.set(type, drawer);\n }\n }\n this._options = loadContainerOptions(this._engine, this, this._initialSourceOptions, this.sourceOptions);\n this.actualOptions = loadContainerOptions(this._engine, this, this._options);\n const availablePlugins = this._engine.plugins.getAvailablePlugins(this);\n for (const [id, plugin] of availablePlugins) {\n this.plugins.set(id, plugin);\n }\n this.retina.init();\n this.canvas.init();\n this.updateActualOptions();\n this.canvas.initBackground();\n this.canvas.resize();\n this.zLayers = this.actualOptions.zLayers;\n this.duration = getRangeValue(this.actualOptions.duration) * 1000;\n this._delay = getRangeValue(this.actualOptions.delay) * 1000;\n this.lifeTime = 0;\n this.fpsLimit = this.actualOptions.fpsLimit > 0 ? this.actualOptions.fpsLimit : 120;\n this.smooth = this.actualOptions.smooth;\n for (const [, drawer] of this.drawers) {\n if (drawer.init) {\n await drawer.init(this);\n }\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.init) {\n await plugin.init();\n }\n }\n this._engine.dispatchEvent(\"containerInit\", { container: this });\n this.particles.init();\n this.particles.setDensity();\n for (const [, plugin] of this.plugins) {\n if (plugin.particlesSetup) {\n plugin.particlesSetup();\n }\n }\n this._engine.dispatchEvent(\"particlesSetup\", { container: this });\n }\n async loadTheme(name) {\n if (!guardCheck(this)) {\n return;\n }\n this._currentTheme = name;\n await this.refresh();\n }\n pause() {\n if (!guardCheck(this)) {\n return;\n }\n if (this._drawAnimationFrame !== undefined) {\n cancelAnimation()(this._drawAnimationFrame);\n delete this._drawAnimationFrame;\n }\n if (this._paused) {\n return;\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.pause) {\n plugin.pause();\n }\n }\n if (!this.pageHidden) {\n this._paused = true;\n }\n this._engine.dispatchEvent(\"containerPaused\", { container: this });\n }\n play(force) {\n if (!guardCheck(this)) {\n return;\n }\n const needsUpdate = this._paused || force;\n if (this._firstStart && !this.actualOptions.autoPlay) {\n this._firstStart = false;\n return;\n }\n if (this._paused) {\n this._paused = false;\n }\n if (needsUpdate) {\n for (const [, plugin] of this.plugins) {\n if (plugin.play) {\n plugin.play();\n }\n }\n }\n this._engine.dispatchEvent(\"containerPlay\", { container: this });\n this.draw(needsUpdate || false);\n }\n async refresh() {\n if (!guardCheck(this)) {\n return;\n }\n this.stop();\n return this.start();\n }\n async reset() {\n if (!guardCheck(this)) {\n return;\n }\n this._options = loadContainerOptions(this._engine, this);\n return this.refresh();\n }\n setNoise(noiseOrGenerator, init, update) {\n if (!guardCheck(this)) {\n return;\n }\n this.setPath(noiseOrGenerator, init, update);\n }\n setPath(pathOrGenerator, init, update) {\n if (!pathOrGenerator || !guardCheck(this)) {\n return;\n }\n const pathGenerator = Object.assign({}, defaultPathGenerator);\n if (typeof pathOrGenerator === \"function\") {\n pathGenerator.generate = pathOrGenerator;\n if (init) {\n pathGenerator.init = init;\n }\n if (update) {\n pathGenerator.update = update;\n }\n }\n else {\n const oldGenerator = pathGenerator;\n pathGenerator.generate = pathOrGenerator.generate || oldGenerator.generate;\n pathGenerator.init = pathOrGenerator.init || oldGenerator.init;\n pathGenerator.update = pathOrGenerator.update || oldGenerator.update;\n }\n this.addPath(defaultPathGeneratorKey, pathGenerator, true);\n }\n async start() {\n if (!guardCheck(this) || this.started) {\n return;\n }\n await this.init();\n this.started = true;\n await new Promise((resolve) => {\n this._delayTimeout = setTimeout(async () => {\n this._eventListeners.addListeners();\n if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {\n this._intersectionObserver.observe(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.start) {\n await plugin.start();\n }\n }\n this._engine.dispatchEvent(\"containerStarted\", { container: this });\n this.play();\n resolve();\n }, this._delay);\n });\n }\n stop() {\n if (!guardCheck(this) || !this.started) {\n return;\n }\n if (this._delayTimeout) {\n clearTimeout(this._delayTimeout);\n delete this._delayTimeout;\n }\n this._firstStart = true;\n this.started = false;\n this._eventListeners.removeListeners();\n this.pause();\n this.particles.clear();\n this.canvas.clear();\n if (this.interactivity.element instanceof HTMLElement && this._intersectionObserver) {\n this._intersectionObserver.unobserve(this.interactivity.element);\n }\n for (const [, plugin] of this.plugins) {\n if (plugin.stop) {\n plugin.stop();\n }\n }\n for (const key of this.plugins.keys()) {\n this.plugins.delete(key);\n }\n this._sourceOptions = this._options;\n this._engine.dispatchEvent(\"containerStopped\", { container: this });\n }\n updateActualOptions() {\n this.actualOptions.responsive = [];\n const newMaxWidth = this.actualOptions.setResponsive(this.canvas.size.width, this.retina.pixelRatio, this._options);\n this.actualOptions.setTheme(this._currentTheme);\n if (this.responsiveMaxWidth === newMaxWidth) {\n return false;\n }\n this.responsiveMaxWidth = newMaxWidth;\n return true;\n }\n _intersectionManager(entries) {\n if (!guardCheck(this) || !this.actualOptions.pauseOnOutsideViewport) {\n return;\n }\n for (const entry of entries) {\n if (entry.target !== this.interactivity.element) {\n continue;\n }\n (entry.isIntersecting ? this.play : this.pause)();\n }\n }\n}\n","import { Container } from \"./Container\";\nimport { generatedAttribute } from \"./Utils/Constants\";\nimport { getRandom } from \"../Utils/NumberUtils\";\nimport { itemFromSingleOrMultiple } from \"../Utils/Utils\";\nasync function getDataFromUrl(jsonUrl, index) {\n const url = itemFromSingleOrMultiple(jsonUrl, index);\n if (!url) {\n return;\n }\n const response = await fetch(url);\n if (response.ok) {\n return response.json();\n }\n console.error(`tsParticles - Error ${response.status} while retrieving config file`);\n}\nexport class Loader {\n constructor(engine) {\n this._engine = engine;\n }\n load(tagId, options, index) {\n const params = { index, remote: false };\n if (typeof tagId === \"string\") {\n params.tagId = tagId;\n }\n else {\n params.options = tagId;\n }\n if (typeof options === \"number\") {\n params.index = options;\n }\n else {\n params.options = options !== null && options !== void 0 ? options : params.options;\n }\n return this.loadOptions(params);\n }\n async loadJSON(tagId, jsonUrl, index) {\n let url, id;\n if (typeof jsonUrl === \"number\" || jsonUrl === undefined) {\n url = tagId;\n }\n else {\n id = tagId;\n url = jsonUrl;\n }\n return this.loadRemoteOptions({ tagId: id, url, index, remote: true });\n }\n async loadOptions(params) {\n var _a, _b, _c;\n const tagId = (_a = params.tagId) !== null && _a !== void 0 ? _a : `tsparticles${Math.floor(getRandom() * 10000)}`, { index, url: jsonUrl, remote } = params, options = remote ? await getDataFromUrl(jsonUrl, index) : params.options;\n let domContainer = (_b = params.element) !== null && _b !== void 0 ? _b : document.getElementById(tagId);\n if (!domContainer) {\n domContainer = document.createElement(\"div\");\n domContainer.id = tagId;\n (_c = document.querySelector(\"body\")) === null || _c === void 0 ? void 0 : _c.append(domContainer);\n }\n const currentOptions = itemFromSingleOrMultiple(options, index), dom = this._engine.dom(), oldIndex = dom.findIndex((v) => v.id === tagId);\n if (oldIndex >= 0) {\n const old = this._engine.domItem(oldIndex);\n if (old && !old.destroyed) {\n old.destroy();\n dom.splice(oldIndex, 1);\n }\n }\n let canvasEl;\n if (domContainer.tagName.toLowerCase() === \"canvas\") {\n canvasEl = domContainer;\n canvasEl.dataset[generatedAttribute] = \"false\";\n }\n else {\n const existingCanvases = domContainer.getElementsByTagName(\"canvas\");\n if (existingCanvases.length) {\n canvasEl = existingCanvases[0];\n canvasEl.dataset[generatedAttribute] = \"false\";\n }\n else {\n canvasEl = document.createElement(\"canvas\");\n canvasEl.dataset[generatedAttribute] = \"true\";\n domContainer.appendChild(canvasEl);\n }\n }\n if (!canvasEl.style.width) {\n canvasEl.style.width = \"100%\";\n }\n if (!canvasEl.style.height) {\n canvasEl.style.height = \"100%\";\n }\n const newItem = new Container(this._engine, tagId, currentOptions);\n if (oldIndex >= 0) {\n dom.splice(oldIndex, 0, newItem);\n }\n else {\n dom.push(newItem);\n }\n newItem.canvas.loadCanvas(canvasEl);\n await newItem.start();\n return newItem;\n }\n async loadRemoteOptions(params) {\n return this.loadOptions(params);\n }\n async set(id, domContainer, options, index) {\n const params = { index, remote: false };\n if (typeof id === \"string\") {\n params.tagId = id;\n }\n else {\n params.element = id;\n }\n if (domContainer instanceof HTMLElement) {\n params.element = domContainer;\n }\n else {\n params.options = domContainer;\n }\n if (typeof options === \"number\") {\n params.index = options;\n }\n else {\n params.options = options !== null && options !== void 0 ? options : params.options;\n }\n return this.loadOptions(params);\n }\n async setJSON(id, domContainer, jsonUrl, index) {\n let url, newId, newIndex, element;\n if (id instanceof HTMLElement) {\n element = id;\n url = domContainer;\n newIndex = jsonUrl;\n }\n else {\n newId = id;\n element = domContainer;\n url = jsonUrl;\n newIndex = index;\n }\n return this.loadRemoteOptions({ tagId: newId, url, index: newIndex, element, remote: true });\n }\n}\n","import { executeOnSingleOrMultiple } from \"../../Utils/Utils\";\nfunction getItemsFromInitializer(container, map, initializers, force = false) {\n let res = map.get(container);\n if (!res || force) {\n res = [...initializers.values()].map((t) => t(container));\n map.set(container, res);\n }\n return res;\n}\nexport class Plugins {\n constructor(engine) {\n this._engine = engine;\n this.plugins = [];\n this._initializers = {\n interactors: new Map(),\n movers: new Map(),\n updaters: new Map(),\n };\n this.interactors = new Map();\n this.movers = new Map();\n this.updaters = new Map();\n this.presets = new Map();\n this.drawers = new Map();\n this.pathGenerators = new Map();\n }\n addInteractor(name, initInteractor) {\n this._initializers.interactors.set(name, initInteractor);\n }\n addParticleMover(name, initMover) {\n this._initializers.movers.set(name, initMover);\n }\n addParticleUpdater(name, initUpdater) {\n this._initializers.updaters.set(name, initUpdater);\n }\n addPathGenerator(type, pathGenerator) {\n if (!this.getPathGenerator(type)) {\n this.pathGenerators.set(type, pathGenerator);\n }\n }\n addPlugin(plugin) {\n if (!this.getPlugin(plugin.id)) {\n this.plugins.push(plugin);\n }\n }\n addPreset(presetKey, options, override = false) {\n if (override || !this.getPreset(presetKey)) {\n this.presets.set(presetKey, options);\n }\n }\n addShapeDrawer(types, drawer) {\n executeOnSingleOrMultiple(types, (type) => {\n if (!this.getShapeDrawer(type)) {\n this.drawers.set(type, drawer);\n }\n });\n }\n destroy(container) {\n this.updaters.delete(container);\n this.movers.delete(container);\n this.interactors.delete(container);\n }\n getAvailablePlugins(container) {\n const res = new Map();\n for (const plugin of this.plugins) {\n if (!plugin.needsPlugin(container.actualOptions)) {\n continue;\n }\n res.set(plugin.id, plugin.getPlugin(container));\n }\n return res;\n }\n getInteractors(container, force = false) {\n return getItemsFromInitializer(container, this.interactors, this._initializers.interactors, force);\n }\n getMovers(container, force = false) {\n return getItemsFromInitializer(container, this.movers, this._initializers.movers, force);\n }\n getPathGenerator(type) {\n return this.pathGenerators.get(type);\n }\n getPlugin(plugin) {\n return this.plugins.find((t) => t.id === plugin);\n }\n getPreset(preset) {\n return this.presets.get(preset);\n }\n getShapeDrawer(type) {\n return this.drawers.get(type);\n }\n getSupportedShapes() {\n return this.drawers.keys();\n }\n getUpdaters(container, force = false) {\n return getItemsFromInitializer(container, this.updaters, this._initializers.updaters, force);\n }\n loadOptions(options, sourceOptions) {\n for (const plugin of this.plugins) {\n plugin.loadOptions(options, sourceOptions);\n }\n }\n loadParticlesOptions(container, options, ...sourceOptions) {\n const updaters = this.updaters.get(container);\n if (!updaters) {\n return;\n }\n for (const updater of updaters) {\n if (updater.loadOptions) {\n updater.loadOptions(options, ...sourceOptions);\n }\n }\n }\n}\n","import { Engine } from \"./engine\";\nimport { HslColorManager } from \"./Utils/HslColorManager\";\nimport { RgbColorManager } from \"./Utils/RgbColorManager\";\nimport { addColorManager } from \"./Utils/ColorUtils\";\nconst rgbColorManager = new RgbColorManager(), hslColorManager = new HslColorManager();\naddColorManager(rgbColorManager);\naddColorManager(hslColorManager);\nconst tsParticles = new Engine();\ntsParticles.init();\nexport * from \"./Core/Interfaces/Colors\";\nexport * from \"./Core/Interfaces/IBounds\";\nexport * from \"./Core/Interfaces/IBubbleParticleData\";\nexport * from \"./Core/Interfaces/ICircleBouncer\";\nexport * from \"./Core/Interfaces/IColorManager\";\nexport * from \"./Core/Interfaces/IContainerInteractivity\";\nexport * from \"./Core/Interfaces/IContainerPlugin\";\nexport * from \"./Core/Interfaces/ICoordinates\";\nexport * from \"./Core/Interfaces/IDelta\";\nexport * from \"./Core/Interfaces/IDimension\";\nexport * from \"./Core/Interfaces/IDistance\";\nexport * from \"./Core/Interfaces/IExternalInteractor\";\nexport * from \"./Core/Interfaces/IInteractor\";\nexport * from \"./Core/Interfaces/IMouseData\";\nexport * from \"./Core/Interfaces/IMovePathGenerator\";\nexport * from \"./Core/Interfaces/IParticle\";\nexport * from \"./Core/Interfaces/IParticleColorStyle\";\nexport * from \"./Core/Interfaces/IParticleHslAnimation\";\nexport * from \"./Core/Interfaces/IParticlesInteractor\";\nexport * from \"./Core/Interfaces/IParticleLife\";\nexport * from \"./Core/Interfaces/IParticleRetinaProps\";\nexport * from \"./Core/Interfaces/IParticleRoll\";\nexport * from \"./Core/Interfaces/IParticleTransformValues\";\nexport * from \"./Core/Interfaces/IParticleUpdater\";\nexport * from \"./Core/Interfaces/IParticleValueAnimation\";\nexport * from \"./Core/Interfaces/IParticlesMover\";\nexport * from \"./Core/Interfaces/IPlugin\";\nexport * from \"./Core/Interfaces/IRangeValue\";\nexport * from \"./Core/Interfaces/IRectSideResult\";\nexport * from \"./Core/Interfaces/IShapeDrawer\";\nexport * from \"./Core/Interfaces/IShapeValues\";\nexport * from \"./Core/Interfaces/ISlowParticleData\";\nexport * from \"./Core/Utils/Circle\";\nexport * from \"./Core/Utils/Constants\";\nexport * from \"./Core/Utils/ExternalInteractorBase\";\nexport * from \"./Core/Utils/ParticlesInteractorBase\";\nexport * from \"./Core/Utils/Point\";\nexport * from \"./Core/Utils/Range\";\nexport * from \"./Core/Utils/Rectangle\";\nexport * from \"./Core/Utils/Vector\";\nexport * from \"./Core/Utils/Vector3d\";\nexport * from \"./Enums/Directions/MoveDirection\";\nexport * from \"./Enums/Directions/RotateDirection\";\nexport * from \"./Enums/Directions/OutModeDirection\";\nexport * from \"./Enums/Modes/ClickMode\";\nexport * from \"./Enums/Modes/DivMode\";\nexport * from \"./Enums/Modes/HoverMode\";\nexport * from \"./Enums/Modes/CollisionMode\";\nexport * from \"./Enums/Modes/OutMode\";\nexport * from \"./Enums/Modes/SizeMode\";\nexport * from \"./Enums/Modes/ThemeMode\";\nexport * from \"./Enums/Modes/ResponsiveMode\";\nexport * from \"./Enums/Types/AlterType\";\nexport * from \"./Enums/Types/DestroyType\";\nexport * from \"./Enums/Types/GradientType\";\nexport * from \"./Enums/Types/InteractorType\";\nexport * from \"./Enums/Types/ParticleOutType\";\nexport * from \"./Enums/Types/StartValueType\";\nexport * from \"./Enums/Types/DivType\";\nexport * from \"./Enums/Types/EasingType\";\nexport * from \"./Enums/Types/EventType\";\nexport * from \"./Enums/AnimationStatus\";\nexport * from \"./Enums/InteractivityDetect\";\nexport * from \"./Options/Classes/AnimatableColor\";\nexport * from \"./Options/Classes/AnimationOptions\";\nexport * from \"./Options/Classes/Background/Background\";\nexport * from \"./Options/Classes/BackgroundMask/BackgroundMask\";\nexport * from \"./Options/Classes/BackgroundMask/BackgroundMaskCover\";\nexport * from \"./Options/Classes/ColorAnimation\";\nexport * from \"./Options/Classes/FullScreen/FullScreen\";\nexport * from \"./Options/Classes/HslAnimation\";\nexport * from \"./Options/Classes/Interactivity/Events/ClickEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/DivEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/ClickEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/DivEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/Events\";\nexport * from \"./Options/Classes/Interactivity/Events/HoverEvent\";\nexport * from \"./Options/Classes/Interactivity/Events/Parallax\";\nexport * from \"./Options/Classes/Interactivity/Interactivity\";\nexport * from \"./Options/Classes/Interactivity/Modes/Modes\";\nexport * from \"./Options/Classes/ManualParticle\";\nexport * from \"./Options/Classes/Options\";\nexport * from \"./Options/Classes/OptionsColor\";\nexport * from \"./Options/Classes/Particles/Bounce/ParticlesBounce\";\nexport * from \"./Options/Classes/Particles/Bounce/ParticlesBounceFactor\";\nexport * from \"./Options/Classes/Particles/Collisions/Collisions\";\nexport * from \"./Options/Classes/Particles/Collisions/CollisionsOverlap\";\nexport * from \"./Options/Classes/Particles/ParticlesOptions\";\nexport * from \"./Options/Classes/Particles/Shadow\";\nexport * from \"./Options/Classes/Particles/Stroke\";\nexport * from \"./Options/Classes/Particles/Move/MoveAttract\";\nexport * from \"./Options/Classes/Particles/Move/Move\";\nexport * from \"./Options/Classes/Particles/Move/MoveAngle\";\nexport * from \"./Options/Classes/Particles/Move/MoveCenter\";\nexport * from \"./Options/Classes/Particles/Move/MoveGravity\";\nexport * from \"./Options/Classes/Particles/Move/OutModes\";\nexport * from \"./Options/Classes/Particles/Move/Path/MovePath\";\nexport * from \"./Options/Classes/Particles/Move/Spin\";\nexport * from \"./Options/Classes/Particles/Move/MoveTrail\";\nexport * from \"./Options/Classes/Particles/Number/ParticlesNumber\";\nexport * from \"./Options/Classes/Particles/Number/ParticlesDensity\";\nexport * from \"./Options/Classes/Particles/Opacity/Opacity\";\nexport * from \"./Options/Classes/Particles/Opacity/OpacityAnimation\";\nexport * from \"./Options/Classes/Particles/Shape/Shape\";\nexport * from \"./Options/Classes/Particles/Size/Size\";\nexport * from \"./Options/Classes/Particles/Size/SizeAnimation\";\nexport * from \"./Options/Classes/Particles/ZIndex/ZIndex\";\nexport * from \"./Options/Classes/Responsive\";\nexport * from \"./Options/Classes/Theme/Theme\";\nexport * from \"./Options/Classes/Theme/ThemeDefault\";\nexport * from \"./Options/Classes/ValueWithRandom\";\nexport * from \"./Options/Interfaces/Background/IBackground\";\nexport * from \"./Options/Interfaces/BackgroundMask/IBackgroundMask\";\nexport * from \"./Options/Interfaces/BackgroundMask/IBackgroundMaskCover\";\nexport * from \"./Options/Interfaces/FullScreen/IFullScreen\";\nexport * from \"./Options/Interfaces/IAnimatable\";\nexport * from \"./Options/Interfaces/IAnimatableColor\";\nexport * from \"./Options/Interfaces/IAnimation\";\nexport * from \"./Options/Interfaces/IColorAnimation\";\nexport * from \"./Options/Interfaces/IHslAnimation\";\nexport * from \"./Options/Interfaces/IManualParticle\";\nexport * from \"./Options/Interfaces/IOptionLoader\";\nexport * from \"./Options/Interfaces/IOptions\";\nexport * from \"./Options/Interfaces/IOptionsColor\";\nexport * from \"./Options/Interfaces/IResponsive\";\nexport * from \"./Options/Interfaces/IValueWithRandom\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IClickEvent\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IDivEvent\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IEvents\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IHoverEvent\";\nexport * from \"./Options/Interfaces/Interactivity/Events/IParallax\";\nexport * from \"./Options/Interfaces/Interactivity/Modes/IModeDiv\";\nexport * from \"./Options/Interfaces/Interactivity/Modes/IModes\";\nexport * from \"./Options/Interfaces/Interactivity/IInteractivity\";\nexport * from \"./Options/Interfaces/Particles/Bounce/IParticlesBounce\";\nexport * from \"./Options/Interfaces/Particles/Collisions/ICollisions\";\nexport * from \"./Options/Interfaces/Particles/Collisions/ICollisionsOverlap\";\nexport * from \"./Options/Interfaces/Particles/IParticlesOptions\";\nexport * from \"./Options/Interfaces/Particles/IShadow\";\nexport * from \"./Options/Interfaces/Particles/IStroke\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveAttract\";\nexport * from \"./Options/Interfaces/Particles/Move/IMove\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveAngle\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveCenter\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveGravity\";\nexport * from \"./Options/Interfaces/Particles/Move/Path/IMovePath\";\nexport * from \"./Options/Interfaces/Particles/Move/IOutModes\";\nexport * from \"./Options/Interfaces/Particles/Move/ISpin\";\nexport * from \"./Options/Interfaces/Particles/Move/IMoveTrail\";\nexport * from \"./Options/Interfaces/Particles/Number/IParticlesDensity\";\nexport * from \"./Options/Interfaces/Particles/Number/IParticlesNumber\";\nexport * from \"./Options/Interfaces/Particles/Opacity/IOpacity\";\nexport * from \"./Options/Interfaces/Particles/Opacity/IOpacityAnimation\";\nexport * from \"./Options/Interfaces/Particles/Shape/ICharacterShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IImageShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IPolygonShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IShape\";\nexport * from \"./Options/Interfaces/Particles/Shape/IShapeValues\";\nexport * from \"./Options/Interfaces/Particles/Shape/IStarShape\";\nexport * from \"./Options/Interfaces/Particles/Size/ISize\";\nexport * from \"./Options/Interfaces/Particles/Size/ISizeAnimation\";\nexport * from \"./Options/Interfaces/Particles/ZIndex/IZIndex\";\nexport * from \"./Options/Interfaces/Theme/ITheme\";\nexport * from \"./Options/Interfaces/Theme/IThemeDefault\";\nexport * from \"./Types/CustomEventArgs\";\nexport * from \"./Types/CustomEventListener\";\nexport * from \"./Types/ParticlesGroups\";\nexport * from \"./Types/PathOptions\";\nexport * from \"./Types/RangeValue\";\nexport * from \"./Types/RecursivePartial\";\nexport * from \"./Types/ShapeData\";\nexport * from \"./Types/ShapeDrawerFunctions\";\nexport * from \"./Types/SingleOrMultiple\";\nexport * from \"./Utils/CanvasUtils\";\nexport * from \"./Utils/ColorUtils\";\nexport * from \"./Utils/HslColorManager\";\nexport * from \"./Utils/NumberUtils\";\nexport * from \"./Utils/OptionsUtils\";\nexport * from \"./Utils/RgbColorManager\";\nexport * from \"./Utils/Utils\";\nexport { tsParticles };\nexport { CollisionsAbsorb } from \"./Options/Classes/Particles/Collisions/CollisionsAbsorb\";\nexport { ResizeEvent } from \"./Options/Classes/Interactivity/Events/ResizeEvent\";\n","import { getRangeValue, parseAlpha } from \"./NumberUtils\";\nexport class RgbColorManager {\n constructor() {\n this.key = \"rgb\";\n this.stringPrefix = \"rgb\";\n }\n handleColor(color) {\n var _a;\n const colorValue = color.value, rgbColor = (_a = colorValue.rgb) !== null && _a !== void 0 ? _a : color.value;\n if (rgbColor.r !== undefined) {\n return rgbColor;\n }\n }\n handleRangeColor(color) {\n var _a;\n const colorValue = color.value, rgbColor = (_a = colorValue.rgb) !== null && _a !== void 0 ? _a : color.value;\n if (rgbColor.r !== undefined) {\n return {\n r: getRangeValue(rgbColor.r),\n g: getRangeValue(rgbColor.g),\n b: getRangeValue(rgbColor.b),\n };\n }\n }\n parseString(input) {\n if (!input.startsWith(this.stringPrefix)) {\n return;\n }\n const regex = /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([\\d.%]+)\\s*)?\\)/i, result = regex.exec(input);\n return result\n ? {\n a: result.length > 4 ? parseAlpha(result[5]) : 1,\n b: parseInt(result[3], 10),\n g: parseInt(result[2], 10),\n r: parseInt(result[1], 10),\n }\n : undefined;\n }\n}\n","import { getRangeValue, parseAlpha } from \"./NumberUtils\";\nimport { hslToRgb, hslaToRgba } from \"./ColorUtils\";\nexport class HslColorManager {\n constructor() {\n this.key = \"hsl\";\n this.stringPrefix = \"hsl\";\n }\n handleColor(color) {\n var _a;\n const colorValue = color.value, hslColor = (_a = colorValue.hsl) !== null && _a !== void 0 ? _a : color.value;\n if (hslColor.h !== undefined && hslColor.s !== undefined && hslColor.l !== undefined) {\n return hslToRgb(hslColor);\n }\n }\n handleRangeColor(color) {\n var _a;\n const colorValue = color.value, hslColor = (_a = colorValue.hsl) !== null && _a !== void 0 ? _a : color.value;\n if (hslColor.h !== undefined && hslColor.l !== undefined) {\n return hslToRgb({\n h: getRangeValue(hslColor.h),\n l: getRangeValue(hslColor.l),\n s: getRangeValue(hslColor.s),\n });\n }\n }\n parseString(input) {\n if (!input.startsWith(\"hsl\")) {\n return;\n }\n const regex = /hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(,\\s*([\\d.%]+)\\s*)?\\)/i, result = regex.exec(input);\n return result\n ? hslaToRgba({\n a: result.length > 4 ? parseAlpha(result[5]) : 1,\n h: parseInt(result[1], 10),\n l: parseInt(result[3], 10),\n s: parseInt(result[2], 10),\n })\n : undefined;\n }\n}\n","import { EventDispatcher } from \"./Utils/EventDispatcher\";\nimport { Loader } from \"./Core/Loader\";\nimport { Plugins } from \"./Core/Utils/Plugins\";\nexport class Engine {\n constructor() {\n this._domArray = [];\n this._eventDispatcher = new EventDispatcher();\n this._initialized = false;\n this._loader = new Loader(this);\n this.plugins = new Plugins(this);\n }\n addEventListener(type, listener) {\n this._eventDispatcher.addEventListener(type, listener);\n }\n async addInteractor(name, interactorInitializer) {\n this.plugins.addInteractor(name, interactorInitializer);\n await this.refresh();\n }\n async addMover(name, moverInitializer) {\n this.plugins.addParticleMover(name, moverInitializer);\n await this.refresh();\n }\n async addParticleUpdater(name, updaterInitializer) {\n this.plugins.addParticleUpdater(name, updaterInitializer);\n await this.refresh();\n }\n async addPathGenerator(name, generator) {\n this.plugins.addPathGenerator(name, generator);\n await this.refresh();\n }\n async addPlugin(plugin) {\n this.plugins.addPlugin(plugin);\n await this.refresh();\n }\n async addPreset(preset, options, override = false) {\n this.plugins.addPreset(preset, options, override);\n await this.refresh();\n }\n async addShape(shape, drawer, init, afterEffect, destroy) {\n let customDrawer;\n if (typeof drawer === \"function\") {\n customDrawer = {\n afterEffect: afterEffect,\n destroy: destroy,\n draw: drawer,\n init: init,\n };\n }\n else {\n customDrawer = drawer;\n }\n this.plugins.addShapeDrawer(shape, customDrawer);\n await this.refresh();\n }\n dispatchEvent(type, args) {\n this._eventDispatcher.dispatchEvent(type, args);\n }\n dom() {\n return this._domArray;\n }\n domItem(index) {\n const dom = this.dom(), item = dom[index];\n if (item && !item.destroyed) {\n return item;\n }\n dom.splice(index, 1);\n }\n init() {\n if (!this._initialized) {\n this._initialized = true;\n }\n }\n async load(tagId, options) {\n return this._loader.load(tagId, options);\n }\n async loadFromArray(tagId, options, index) {\n return this._loader.load(tagId, options, index);\n }\n async loadJSON(tagId, pathConfigJson, index) {\n return this._loader.loadJSON(tagId, pathConfigJson, index);\n }\n async refresh() {\n for (const instance of this.dom()) {\n await instance.refresh();\n }\n }\n removeEventListener(type, listener) {\n this._eventDispatcher.removeEventListener(type, listener);\n }\n async set(id, element, options) {\n return this._loader.set(id, element, options);\n }\n async setJSON(id, element, pathConfigJson, index) {\n return this._loader.setJSON(id, element, pathConfigJson, index);\n }\n setOnClickHandler(callback) {\n const dom = this.dom();\n if (!dom.length) {\n throw new Error(\"Can only set click handlers after calling tsParticles.load() or tsParticles.loadJSON()\");\n }\n for (const domItem of dom) {\n domItem.addClickHandler(callback);\n }\n }\n}\n","import React, { Component } from \"react\";\nimport { tsParticles } from \"tsparticles-engine\";\nimport equal from \"fast-deep-equal/react\";\nconst defaultId = \"tsparticles\";\nexport default class Particles extends Component {\n constructor(props) {\n super(props);\n this.state = {\n init: false,\n library: undefined,\n };\n }\n destroy() {\n if (!this.state.library) {\n return;\n }\n this.state.library.destroy();\n this.setState({\n library: undefined,\n });\n }\n shouldComponentUpdate(nextProps) {\n return !equal(nextProps, this.props);\n }\n componentDidUpdate() {\n this.refresh();\n }\n forceUpdate() {\n this.refresh().then(() => {\n super.forceUpdate();\n });\n }\n componentDidMount() {\n (async () => {\n if (this.props.init) {\n await this.props.init(tsParticles);\n }\n this.setState({\n init: true,\n }, async () => {\n await this.loadParticles();\n });\n })();\n }\n componentWillUnmount() {\n this.destroy();\n }\n render() {\n const { width, height, className, canvasClassName, id } = this.props;\n return (React.createElement(\"div\", { className: className, id: id },\n React.createElement(\"canvas\", { className: canvasClassName, style: Object.assign(Object.assign({}, this.props.style), { width,\n height }) })));\n }\n async refresh() {\n this.destroy();\n await this.loadParticles();\n }\n async loadParticles() {\n var _a, _b, _c;\n if (!this.state.init) {\n return;\n }\n const cb = async (container) => {\n if (this.props.container) {\n this.props.container.current = container;\n }\n this.setState({\n library: container,\n });\n if (this.props.loaded) {\n await this.props.loaded(container);\n }\n };\n const id = (_b = (_a = this.props.id) !== null && _a !== void 0 ? _a : Particles.defaultProps.id) !== null && _b !== void 0 ? _b : defaultId, container = this.props.url\n ? await tsParticles.loadJSON(id, this.props.url)\n : await tsParticles.load(id, (_c = this.props.params) !== null && _c !== void 0 ? _c : this.props.options);\n await cb(container);\n }\n}\nParticles.defaultProps = {\n width: \"100%\",\n height: \"100%\",\n options: {},\n style: {},\n url: undefined,\n id: defaultId,\n};\n","import Particles from \"./Particles\";\nexport default Particles;\nexport { Particles };\n","import { getDistance, getRangeMax, getRangeValue } from \"tsparticles-engine\";\nimport { applyDistance, applyPath, getProximitySpeedFactor, spin } from \"./Utils\";\nexport class BaseMover {\n init(particle) {\n var _a;\n const container = particle.container, options = particle.options, gravityOptions = options.move.gravity, spinOptions = options.move.spin;\n particle.gravity = {\n enable: gravityOptions.enable,\n acceleration: getRangeValue(gravityOptions.acceleration),\n inverse: gravityOptions.inverse,\n };\n if (spinOptions.enable) {\n const spinPos = (_a = spinOptions.position) !== null && _a !== void 0 ? _a : { x: 50, y: 50 }, spinCenter = {\n x: (spinPos.x / 100) * container.canvas.size.width,\n y: (spinPos.y / 100) * container.canvas.size.height,\n }, pos = particle.getPosition(), distance = getDistance(pos, spinCenter), spinAcceleration = getRangeValue(spinOptions.acceleration);\n particle.retina.spinAcceleration = spinAcceleration * container.retina.pixelRatio;\n particle.spin = {\n center: spinCenter,\n direction: particle.velocity.x >= 0 ? \"clockwise\" : \"counter-clockwise\",\n angle: particle.velocity.angle,\n radius: distance,\n acceleration: particle.retina.spinAcceleration,\n };\n }\n }\n isEnabled(particle) {\n return !particle.destroyed && particle.options.move.enable;\n }\n move(particle, delta) {\n var _a, _b, _c;\n var _d, _e;\n const particleOptions = particle.options, moveOptions = particleOptions.move;\n if (!moveOptions.enable) {\n return;\n }\n const container = particle.container, slowFactor = getProximitySpeedFactor(particle), baseSpeed = ((_a = (_d = particle.retina).moveSpeed) !== null && _a !== void 0 ? _a : (_d.moveSpeed = getRangeValue(moveOptions.speed) * container.retina.pixelRatio)) *\n container.retina.reduceFactor, moveDrift = ((_b = (_e = particle.retina).moveDrift) !== null && _b !== void 0 ? _b : (_e.moveDrift = getRangeValue(particle.options.move.drift) * container.retina.pixelRatio)), maxSize = getRangeMax(particleOptions.size.value) * container.retina.pixelRatio, sizeFactor = moveOptions.size ? particle.getRadius() / maxSize : 1, speedFactor = sizeFactor * slowFactor * (delta.factor || 1), diffFactor = 2, moveSpeed = (baseSpeed * speedFactor) / diffFactor;\n if (moveOptions.spin.enable) {\n spin(particle, moveSpeed);\n }\n else {\n applyPath(particle, delta);\n const gravityOptions = particle.gravity, gravityFactor = (gravityOptions === null || gravityOptions === void 0 ? void 0 : gravityOptions.enable) && gravityOptions.inverse ? -1 : 1;\n if ((gravityOptions === null || gravityOptions === void 0 ? void 0 : gravityOptions.enable) && moveSpeed) {\n particle.velocity.y +=\n (gravityFactor * (gravityOptions.acceleration * delta.factor)) / (60 * moveSpeed);\n }\n if (moveDrift && moveSpeed) {\n particle.velocity.x += (moveDrift * delta.factor) / (60 * moveSpeed);\n }\n const decay = particle.moveDecay;\n if (decay != 1) {\n particle.velocity.multTo(decay);\n }\n const velocity = particle.velocity.mult(moveSpeed), maxSpeed = (_c = particle.retina.maxSpeed) !== null && _c !== void 0 ? _c : container.retina.maxSpeed;\n if ((gravityOptions === null || gravityOptions === void 0 ? void 0 : gravityOptions.enable) &&\n maxSpeed > 0 &&\n ((!gravityOptions.inverse && velocity.y >= 0 && velocity.y >= maxSpeed) ||\n (gravityOptions.inverse && velocity.y <= 0 && velocity.y <= -maxSpeed))) {\n velocity.y = gravityFactor * maxSpeed;\n if (moveSpeed) {\n particle.velocity.y = velocity.y / moveSpeed;\n }\n }\n const zIndexOptions = particle.options.zIndex, zVelocityFactor = (1 - particle.zIndexFactor) ** zIndexOptions.velocityRate;\n if (zVelocityFactor != 1) {\n velocity.multTo(zVelocityFactor);\n }\n particle.position.addTo(velocity);\n if (moveOptions.vibrate) {\n particle.position.x += Math.sin(particle.position.x * Math.cos(particle.position.y));\n particle.position.y += Math.cos(particle.position.y * Math.sin(particle.position.x));\n }\n }\n applyDistance(particle);\n }\n}\n","import { clamp, getDistances, getRandom } from \"tsparticles-engine\";\nexport function applyDistance(particle) {\n const initialPosition = particle.initialPosition, { dx, dy } = getDistances(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), hDistance = particle.retina.maxDistance.horizontal, vDistance = particle.retina.maxDistance.vertical;\n if (!hDistance && !vDistance) {\n return;\n }\n if (((hDistance && dxFixed >= hDistance) || (vDistance && dyFixed >= vDistance)) && !particle.misplaced) {\n particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance);\n if (hDistance) {\n particle.velocity.x = particle.velocity.y / 2 - particle.velocity.x;\n }\n if (vDistance) {\n particle.velocity.y = particle.velocity.x / 2 - particle.velocity.y;\n }\n }\n else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {\n particle.misplaced = false;\n }\n else if (particle.misplaced) {\n const pos = particle.position, vel = particle.velocity;\n if (hDistance && ((pos.x < initialPosition.x && vel.x < 0) || (pos.x > initialPosition.x && vel.x > 0))) {\n vel.x *= -getRandom();\n }\n if (vDistance && ((pos.y < initialPosition.y && vel.y < 0) || (pos.y > initialPosition.y && vel.y > 0))) {\n vel.y *= -getRandom();\n }\n }\n}\nexport function spin(particle, moveSpeed) {\n const container = particle.container;\n if (!particle.spin) {\n return;\n }\n const updateFunc = {\n x: particle.spin.direction === \"clockwise\" ? Math.cos : Math.sin,\n y: particle.spin.direction === \"clockwise\" ? Math.sin : Math.cos,\n };\n particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);\n particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);\n particle.spin.radius += particle.spin.acceleration;\n const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height);\n if (particle.spin.radius > maxCanvasSize / 2) {\n particle.spin.radius = maxCanvasSize / 2;\n particle.spin.acceleration *= -1;\n }\n else if (particle.spin.radius < 0) {\n particle.spin.radius = 0;\n particle.spin.acceleration *= -1;\n }\n particle.spin.angle += (moveSpeed / 100) * (1 - particle.spin.radius / maxCanvasSize);\n}\nexport function applyPath(particle, delta) {\n var _a;\n const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable;\n if (!pathEnabled) {\n return;\n }\n if (particle.lastPathTime <= particle.pathDelay) {\n particle.lastPathTime += delta.value;\n return;\n }\n const path = (_a = particle.pathGenerator) === null || _a === void 0 ? void 0 : _a.generate(particle);\n if (path) {\n particle.velocity.addTo(path);\n }\n if (pathOptions.clamp) {\n particle.velocity.x = clamp(particle.velocity.x, -1, 1);\n particle.velocity.y = clamp(particle.velocity.y, -1, 1);\n }\n particle.lastPathTime -= particle.pathDelay;\n}\nexport function getProximitySpeedFactor(particle) {\n return particle.slow.inRange ? particle.slow.factor : 1;\n}\n","export class CircleDrawer {\n draw(context, particle, radius) {\n if (!particle.circleRange) {\n particle.circleRange = { min: 0, max: Math.PI * 2 };\n }\n const circleRange = particle.circleRange;\n context.arc(0, 0, radius, circleRange.min, circleRange.max, false);\n }\n getSidesCount() {\n return 12;\n }\n particleInit(container, particle) {\n var _a;\n const shapeData = particle.shapeData, angle = (_a = shapeData === null || shapeData === void 0 ? void 0 : shapeData.angle) !== null && _a !== void 0 ? _a : {\n max: 360,\n min: 0,\n };\n particle.circleRange =\n typeof angle !== \"object\"\n ? {\n min: 0,\n max: (angle * Math.PI) / 180,\n }\n : { min: (angle.min * Math.PI) / 180, max: (angle.max * Math.PI) / 180 };\n }\n}\n","import { getHslAnimationFromHsl, randomInRange, rangeColorToHsl } from \"tsparticles-engine\";\nfunction updateColorValue(delta, value, valueAnimation, max, decrease) {\n var _a, _b;\n const colorValue = value;\n if (!colorValue ||\n !valueAnimation.enable ||\n (colorValue.loops !== undefined &&\n colorValue.maxLoops !== undefined &&\n colorValue.maxLoops > 0 &&\n colorValue.loops >= colorValue.maxLoops)) {\n return;\n }\n const offset = randomInRange(valueAnimation.offset), velocity = ((_a = value.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor + offset * 3.6, decay = (_b = value.decay) !== null && _b !== void 0 ? _b : 1;\n if (!decrease || colorValue.status === \"increasing\") {\n colorValue.value += velocity;\n if (colorValue.value > max) {\n if (!colorValue.loops) {\n colorValue.loops = 0;\n }\n colorValue.loops++;\n if (decrease) {\n colorValue.status = \"decreasing\";\n colorValue.value -= colorValue.value % max;\n }\n }\n }\n else {\n colorValue.value -= velocity;\n if (colorValue.value < 0) {\n if (!colorValue.loops) {\n colorValue.loops = 0;\n }\n colorValue.loops++;\n colorValue.status = \"increasing\";\n colorValue.value += colorValue.value;\n }\n }\n if (colorValue.velocity && decay !== 1) {\n colorValue.velocity *= decay;\n }\n if (colorValue.value > max) {\n colorValue.value %= max;\n }\n}\nfunction updateColor(particle, delta) {\n var _a, _b, _c;\n const animationOptions = particle.options.color.animation;\n const h = (_a = particle.color) === null || _a === void 0 ? void 0 : _a.h, s = (_b = particle.color) === null || _b === void 0 ? void 0 : _b.s, l = (_c = particle.color) === null || _c === void 0 ? void 0 : _c.l;\n if (h) {\n updateColorValue(delta, h, animationOptions.h, 360, false);\n }\n if (s) {\n updateColorValue(delta, s, animationOptions.s, 100, true);\n }\n if (l) {\n updateColorValue(delta, l, animationOptions.l, 100, true);\n }\n}\nexport class ColorUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const hslColor = rangeColorToHsl(particle.options.color, particle.id, particle.options.reduceDuplicates);\n if (hslColor) {\n particle.color = getHslAnimationFromHsl(hslColor, particle.options.color.animation, this.container.retina.reduceFactor);\n }\n }\n isEnabled(particle) {\n var _a, _b, _c;\n const animationOptions = particle.options.color.animation;\n return (!particle.destroyed &&\n !particle.spawning &&\n ((((_a = particle.color) === null || _a === void 0 ? void 0 : _a.h.value) !== undefined && animationOptions.h.enable) ||\n (((_b = particle.color) === null || _b === void 0 ? void 0 : _b.s.value) !== undefined && animationOptions.s.enable) ||\n (((_c = particle.color) === null || _c === void 0 ? void 0 : _c.l.value) !== undefined && animationOptions.l.enable)));\n }\n update(particle, delta) {\n updateColor(particle, delta);\n }\n}\n","import { clamp, getRandom, getRangeMax, getRangeMin, getRangeValue, randomInRange, } from \"tsparticles-engine\";\nfunction checkDestroy(particle, value, minValue, maxValue) {\n switch (particle.options.opacity.animation.destroy) {\n case \"max\":\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case \"min\":\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateOpacity(particle, delta) {\n var _a, _b, _c, _d, _e, _f;\n if (!particle.opacity) {\n return;\n }\n const minValue = particle.opacity.min, maxValue = particle.opacity.max, decay = (_a = particle.opacity.decay) !== null && _a !== void 0 ? _a : 1;\n if (particle.destroyed ||\n !particle.opacity.enable ||\n (((_b = particle.opacity.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 && ((_c = particle.opacity.loops) !== null && _c !== void 0 ? _c : 0) > ((_d = particle.opacity.maxLoops) !== null && _d !== void 0 ? _d : 0))) {\n return;\n }\n switch (particle.opacity.status) {\n case \"increasing\":\n if (particle.opacity.value >= maxValue) {\n particle.opacity.status = \"decreasing\";\n if (!particle.opacity.loops) {\n particle.opacity.loops = 0;\n }\n particle.opacity.loops++;\n }\n else {\n particle.opacity.value += ((_e = particle.opacity.velocity) !== null && _e !== void 0 ? _e : 0) * delta.factor;\n }\n break;\n case \"decreasing\":\n if (particle.opacity.value <= minValue) {\n particle.opacity.status = \"increasing\";\n if (!particle.opacity.loops) {\n particle.opacity.loops = 0;\n }\n particle.opacity.loops++;\n }\n else {\n particle.opacity.value -= ((_f = particle.opacity.velocity) !== null && _f !== void 0 ? _f : 0) * delta.factor;\n }\n break;\n }\n if (particle.opacity.velocity && particle.opacity.decay !== 1) {\n particle.opacity.velocity *= decay;\n }\n checkDestroy(particle, particle.opacity.value, minValue, maxValue);\n if (!particle.destroyed) {\n particle.opacity.value = clamp(particle.opacity.value, minValue, maxValue);\n }\n}\nexport class OpacityUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n const opacityOptions = particle.options.opacity;\n particle.opacity = {\n enable: opacityOptions.animation.enable,\n max: getRangeMax(opacityOptions.value),\n min: getRangeMin(opacityOptions.value),\n value: getRangeValue(opacityOptions.value),\n loops: 0,\n maxLoops: getRangeValue(opacityOptions.animation.count),\n };\n const opacityAnimation = opacityOptions.animation;\n if (opacityAnimation.enable) {\n particle.opacity.decay = 1 - getRangeValue(opacityAnimation.decay);\n particle.opacity.status = \"increasing\";\n const opacityRange = opacityOptions.value;\n particle.opacity.min = getRangeMin(opacityRange);\n particle.opacity.max = getRangeMax(opacityRange);\n switch (opacityAnimation.startValue) {\n case \"min\":\n particle.opacity.value = particle.opacity.min;\n particle.opacity.status = \"increasing\";\n break;\n case \"random\":\n particle.opacity.value = randomInRange(particle.opacity);\n particle.opacity.status =\n getRandom() >= 0.5 ? \"increasing\" : \"decreasing\";\n break;\n case \"max\":\n default:\n particle.opacity.value = particle.opacity.max;\n particle.opacity.status = \"decreasing\";\n break;\n }\n particle.opacity.velocity =\n (getRangeValue(opacityAnimation.speed) / 100) * this.container.retina.reduceFactor;\n if (!opacityAnimation.sync) {\n particle.opacity.velocity *= getRandom();\n }\n }\n particle.opacity.initialValue = particle.opacity.value;\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n return (!particle.destroyed &&\n !particle.spawning &&\n !!particle.opacity &&\n particle.opacity.enable &&\n (((_a = particle.opacity.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 ||\n (((_b = particle.opacity.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 &&\n ((_c = particle.opacity.loops) !== null && _c !== void 0 ? _c : 0) < ((_d = particle.opacity.maxLoops) !== null && _d !== void 0 ? _d : 0))));\n }\n reset(particle) {\n if (particle.opacity) {\n particle.opacity.loops = 0;\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateOpacity(particle, delta);\n }\n}\n","import { calculateBounds } from \"tsparticles-engine\";\nimport { bounceHorizontal, bounceVertical } from \"./Utils\";\nexport class BounceOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\n \"bounce\",\n \"bounce-vertical\",\n \"bounce-horizontal\",\n \"bounceVertical\",\n \"bounceHorizontal\",\n \"split\",\n ];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n let handled = false;\n for (const [, plugin] of container.plugins) {\n if (plugin.particleBounce !== undefined) {\n handled = plugin.particleBounce(particle, delta, direction);\n }\n if (handled) {\n break;\n }\n }\n if (handled) {\n return;\n }\n const pos = particle.getPosition(), offset = particle.offset, size = particle.getRadius(), bounds = calculateBounds(pos, size), canvasSize = container.canvas.size;\n bounceHorizontal({ particle, outMode, direction, bounds, canvasSize, offset, size });\n bounceVertical({ particle, outMode, direction, bounds, canvasSize, offset, size });\n }\n}\n","import { getValue } from \"tsparticles-engine\";\nexport function bounceHorizontal(data) {\n if (data.outMode !== \"bounce\" &&\n data.outMode !== \"bounce-horizontal\" &&\n data.outMode !== \"bounceHorizontal\" &&\n data.outMode !== \"split\") {\n return;\n }\n if (data.bounds.right < 0) {\n data.particle.position.x = data.size + data.offset.x;\n }\n else if (data.bounds.left > data.canvasSize.width) {\n data.particle.position.x = data.canvasSize.width - data.size - data.offset.x;\n }\n const velocity = data.particle.velocity.x;\n let bounced = false;\n if ((data.direction === \"right\" && data.bounds.right >= data.canvasSize.width && velocity > 0) ||\n (data.direction === \"left\" && data.bounds.left <= 0 && velocity < 0)) {\n const newVelocity = getValue(data.particle.options.bounce.horizontal);\n data.particle.velocity.x *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.x + data.size;\n if (data.bounds.right >= data.canvasSize.width) {\n data.particle.position.x = data.canvasSize.width - minPos;\n }\n else if (data.bounds.left <= 0) {\n data.particle.position.x = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n}\nexport function bounceVertical(data) {\n if (data.outMode !== \"bounce\" &&\n data.outMode !== \"bounce-vertical\" &&\n data.outMode !== \"bounceVertical\" &&\n data.outMode !== \"split\") {\n return;\n }\n if (data.bounds.bottom < 0) {\n data.particle.position.y = data.size + data.offset.y;\n }\n else if (data.bounds.top > data.canvasSize.height) {\n data.particle.position.y = data.canvasSize.height - data.size - data.offset.y;\n }\n const velocity = data.particle.velocity.y;\n let bounced = false;\n if ((data.direction === \"bottom\" && data.bounds.bottom >= data.canvasSize.height && velocity > 0) ||\n (data.direction === \"top\" && data.bounds.top <= 0 && velocity < 0)) {\n const newVelocity = getValue(data.particle.options.bounce.vertical);\n data.particle.velocity.y *= -newVelocity;\n bounced = true;\n }\n if (!bounced) {\n return;\n }\n const minPos = data.offset.y + data.size;\n if (data.bounds.bottom >= data.canvasSize.height) {\n data.particle.position.y = data.canvasSize.height - minPos;\n }\n else if (data.bounds.top <= 0) {\n data.particle.position.y = minPos;\n }\n if (data.outMode === \"split\") {\n data.particle.destroy();\n }\n}\n","import { Vector, getDistances, isPointInside } from \"tsparticles-engine\";\nexport class DestroyOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"destroy\"];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n switch (particle.outType) {\n case \"normal\":\n case \"outside\":\n if (isPointInside(particle.position, container.canvas.size, Vector.origin, particle.getRadius(), direction)) {\n return;\n }\n break;\n case \"inside\": {\n const { dx, dy } = getDistances(particle.position, particle.moveCenter);\n const { x: vx, y: vy } = particle.velocity;\n if ((vx < 0 && dx > particle.moveCenter.radius) ||\n (vy < 0 && dy > particle.moveCenter.radius) ||\n (vx >= 0 && dx < -particle.moveCenter.radius) ||\n (vy >= 0 && dy < -particle.moveCenter.radius)) {\n return;\n }\n break;\n }\n }\n container.particles.remove(particle, undefined, true);\n }\n}\n","import { Vector, isPointInside } from \"tsparticles-engine\";\nexport class NoneOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"none\"];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n if ((particle.options.move.distance.horizontal &&\n (direction === \"left\" || direction === \"right\")) ||\n (particle.options.move.distance.vertical &&\n (direction === \"top\" || direction === \"bottom\"))) {\n return;\n }\n const gravityOptions = particle.options.move.gravity, container = this.container;\n const canvasSize = container.canvas.size;\n const pRadius = particle.getRadius();\n if (!gravityOptions.enable) {\n if ((particle.velocity.y > 0 && particle.position.y <= canvasSize.height + pRadius) ||\n (particle.velocity.y < 0 && particle.position.y >= -pRadius) ||\n (particle.velocity.x > 0 && particle.position.x <= canvasSize.width + pRadius) ||\n (particle.velocity.x < 0 && particle.position.x >= -pRadius)) {\n return;\n }\n if (!isPointInside(particle.position, container.canvas.size, Vector.origin, pRadius, direction)) {\n container.particles.remove(particle);\n }\n }\n else {\n const position = particle.position;\n if ((!gravityOptions.inverse &&\n position.y > canvasSize.height + pRadius &&\n direction === \"bottom\") ||\n (gravityOptions.inverse && position.y < -pRadius && direction === \"top\")) {\n container.particles.remove(particle);\n }\n }\n }\n}\n","import { Vector, calculateBounds, getDistances, getRandom, isPointInside, randomInRange, } from \"tsparticles-engine\";\nexport class OutOutMode {\n constructor(container) {\n this.container = container;\n this.modes = [\"out\"];\n }\n update(particle, direction, delta, outMode) {\n if (!this.modes.includes(outMode)) {\n return;\n }\n const container = this.container;\n switch (particle.outType) {\n case \"inside\": {\n const { x: vx, y: vy } = particle.velocity;\n const circVec = Vector.origin;\n circVec.length = particle.moveCenter.radius;\n circVec.angle = particle.velocity.angle + Math.PI;\n circVec.addTo(Vector.create(particle.moveCenter));\n const { dx, dy } = getDistances(particle.position, circVec);\n if ((vx <= 0 && dx >= 0) || (vy <= 0 && dy >= 0) || (vx >= 0 && dx <= 0) || (vy >= 0 && dy <= 0)) {\n return;\n }\n particle.position.x = Math.floor(randomInRange({\n min: 0,\n max: container.canvas.size.width,\n }));\n particle.position.y = Math.floor(randomInRange({\n min: 0,\n max: container.canvas.size.height,\n }));\n const { dx: newDx, dy: newDy } = getDistances(particle.position, particle.moveCenter);\n particle.direction = Math.atan2(-newDy, -newDx);\n particle.velocity.angle = particle.direction;\n break;\n }\n default: {\n if (isPointInside(particle.position, container.canvas.size, Vector.origin, particle.getRadius(), direction)) {\n return;\n }\n switch (particle.outType) {\n case \"outside\": {\n particle.position.x =\n Math.floor(randomInRange({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius,\n })) + particle.moveCenter.x;\n particle.position.y =\n Math.floor(randomInRange({\n min: -particle.moveCenter.radius,\n max: particle.moveCenter.radius,\n })) + particle.moveCenter.y;\n const { dx, dy } = getDistances(particle.position, particle.moveCenter);\n if (particle.moveCenter.radius) {\n particle.direction = Math.atan2(dy, dx);\n particle.velocity.angle = particle.direction;\n }\n break;\n }\n case \"normal\": {\n const wrap = particle.options.move.warp, canvasSize = container.canvas.size, newPos = {\n bottom: canvasSize.height + particle.getRadius() + particle.offset.y,\n left: -particle.getRadius() - particle.offset.x,\n right: canvasSize.width + particle.getRadius() + particle.offset.x,\n top: -particle.getRadius() - particle.offset.y,\n }, sizeValue = particle.getRadius(), nextBounds = calculateBounds(particle.position, sizeValue);\n if (direction === \"right\" &&\n nextBounds.left > canvasSize.width + particle.offset.x) {\n particle.position.x = newPos.left;\n particle.initialPosition.x = particle.position.x;\n if (!wrap) {\n particle.position.y = getRandom() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n else if (direction === \"left\" && nextBounds.right < -particle.offset.x) {\n particle.position.x = newPos.right;\n particle.initialPosition.x = particle.position.x;\n if (!wrap) {\n particle.position.y = getRandom() * canvasSize.height;\n particle.initialPosition.y = particle.position.y;\n }\n }\n if (direction === \"bottom\" &&\n nextBounds.top > canvasSize.height + particle.offset.y) {\n if (!wrap) {\n particle.position.x = getRandom() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.top;\n particle.initialPosition.y = particle.position.y;\n }\n else if (direction === \"top\" && nextBounds.bottom < -particle.offset.y) {\n if (!wrap) {\n particle.position.x = getRandom() * canvasSize.width;\n particle.initialPosition.x = particle.position.x;\n }\n particle.position.y = newPos.bottom;\n particle.initialPosition.y = particle.position.y;\n }\n break;\n }\n }\n break;\n }\n }\n }\n}\n","import { BounceOutMode } from \"./BounceOutMode\";\nimport { DestroyOutMode } from \"./DestroyOutMode\";\nimport { NoneOutMode } from \"./NoneOutMode\";\nimport { OutOutMode } from \"./OutOutMode\";\nexport class OutOfCanvasUpdater {\n constructor(container) {\n this.container = container;\n this.updaters = [\n new BounceOutMode(container),\n new DestroyOutMode(container),\n new OutOutMode(container),\n new NoneOutMode(container),\n ];\n }\n init() {\n }\n isEnabled(particle) {\n return !particle.destroyed && !particle.spawning;\n }\n update(particle, delta) {\n var _a, _b, _c, _d;\n const outModes = particle.options.move.outModes;\n this.updateOutMode(particle, delta, (_a = outModes.bottom) !== null && _a !== void 0 ? _a : outModes.default, \"bottom\");\n this.updateOutMode(particle, delta, (_b = outModes.left) !== null && _b !== void 0 ? _b : outModes.default, \"left\");\n this.updateOutMode(particle, delta, (_c = outModes.right) !== null && _c !== void 0 ? _c : outModes.default, \"right\");\n this.updateOutMode(particle, delta, (_d = outModes.top) !== null && _d !== void 0 ? _d : outModes.default, \"top\");\n }\n updateOutMode(particle, delta, outMode, direction) {\n for (const updater of this.updaters) {\n updater.update(particle, direction, delta, outMode);\n }\n }\n}\n","import { clamp, getRandom } from \"tsparticles-engine\";\nfunction checkDestroy(particle, value, minValue, maxValue) {\n switch (particle.options.size.animation.destroy) {\n case \"max\":\n if (value >= maxValue) {\n particle.destroy();\n }\n break;\n case \"min\":\n if (value <= minValue) {\n particle.destroy();\n }\n break;\n }\n}\nfunction updateSize(particle, delta) {\n var _a, _b, _c, _d, _e;\n const sizeVelocity = ((_a = particle.size.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor, minValue = particle.size.min, maxValue = particle.size.max, decay = (_b = particle.size.decay) !== null && _b !== void 0 ? _b : 1;\n if (particle.destroyed ||\n !particle.size.enable ||\n (((_c = particle.size.maxLoops) !== null && _c !== void 0 ? _c : 0) > 0 && ((_d = particle.size.loops) !== null && _d !== void 0 ? _d : 0) > ((_e = particle.size.maxLoops) !== null && _e !== void 0 ? _e : 0))) {\n return;\n }\n switch (particle.size.status) {\n case \"increasing\":\n if (particle.size.value >= maxValue) {\n particle.size.status = \"decreasing\";\n if (!particle.size.loops) {\n particle.size.loops = 0;\n }\n particle.size.loops++;\n }\n else {\n particle.size.value += sizeVelocity;\n }\n break;\n case \"decreasing\":\n if (particle.size.value <= minValue) {\n particle.size.status = \"increasing\";\n if (!particle.size.loops) {\n particle.size.loops = 0;\n }\n particle.size.loops++;\n }\n else {\n particle.size.value -= sizeVelocity;\n }\n }\n if (particle.size.velocity && decay !== 1) {\n particle.size.velocity *= decay;\n }\n checkDestroy(particle, particle.size.value, minValue, maxValue);\n if (!particle.destroyed) {\n particle.size.value = clamp(particle.size.value, minValue, maxValue);\n }\n}\nexport class SizeUpdater {\n init(particle) {\n var _a;\n const container = particle.container, sizeOptions = particle.options.size, sizeAnimation = sizeOptions.animation;\n if (sizeAnimation.enable) {\n particle.size.velocity =\n (((_a = particle.retina.sizeAnimationSpeed) !== null && _a !== void 0 ? _a : container.retina.sizeAnimationSpeed) / 100) *\n container.retina.reduceFactor;\n if (!sizeAnimation.sync) {\n particle.size.velocity *= getRandom();\n }\n }\n }\n isEnabled(particle) {\n var _a, _b, _c, _d;\n return (!particle.destroyed &&\n !particle.spawning &&\n particle.size.enable &&\n (((_a = particle.size.maxLoops) !== null && _a !== void 0 ? _a : 0) <= 0 ||\n (((_b = particle.size.maxLoops) !== null && _b !== void 0 ? _b : 0) > 0 && ((_c = particle.size.loops) !== null && _c !== void 0 ? _c : 0) < ((_d = particle.size.maxLoops) !== null && _d !== void 0 ? _d : 0))));\n }\n reset(particle) {\n particle.size.loops = 0;\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateSize(particle, delta);\n }\n}\n","import { setRangeValue } from \"tsparticles-engine\";\nexport class WobbleSpeed {\n constructor() {\n this.angle = 50;\n this.move = 10;\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.angle !== undefined) {\n this.angle = setRangeValue(data.angle);\n }\n if (data.move !== undefined) {\n this.move = setRangeValue(data.move);\n }\n }\n}\n","import { WobbleSpeed } from \"./WobbleSpeed\";\nimport { setRangeValue } from \"tsparticles-engine\";\nexport class Wobble {\n constructor() {\n this.distance = 5;\n this.enable = false;\n this.speed = new WobbleSpeed();\n }\n load(data) {\n if (!data) {\n return;\n }\n if (data.distance !== undefined) {\n this.distance = setRangeValue(data.distance);\n }\n if (data.enable !== undefined) {\n this.enable = data.enable;\n }\n if (data.speed !== undefined) {\n if (typeof data.speed === \"number\") {\n this.speed.load({ angle: data.speed });\n }\n else {\n const rangeSpeed = data.speed;\n if (rangeSpeed.min !== undefined) {\n this.speed.load({ angle: rangeSpeed });\n }\n else {\n this.speed.load(data.speed);\n }\n }\n }\n }\n}\n","import { getRandom, getRangeValue } from \"tsparticles-engine\";\nimport { Wobble } from \"./Options/Classes/Wobble\";\nfunction updateWobble(particle, delta) {\n var _a;\n const wobble = particle.options.wobble;\n if (!(wobble === null || wobble === void 0 ? void 0 : wobble.enable) || !particle.wobble) {\n return;\n }\n const angleSpeed = particle.wobble.angleSpeed * delta.factor, moveSpeed = particle.wobble.moveSpeed * delta.factor, distance = (moveSpeed * (((_a = particle.retina.wobbleDistance) !== null && _a !== void 0 ? _a : 0) * delta.factor)) / (1000 / 60), max = 2 * Math.PI;\n particle.wobble.angle += angleSpeed;\n if (particle.wobble.angle > max) {\n particle.wobble.angle -= max;\n }\n particle.position.x += distance * Math.cos(particle.wobble.angle);\n particle.position.y += distance * Math.abs(Math.sin(particle.wobble.angle));\n}\nexport class WobbleUpdater {\n constructor(container) {\n this.container = container;\n }\n init(particle) {\n var _a;\n const wobbleOpt = particle.options.wobble;\n if (wobbleOpt === null || wobbleOpt === void 0 ? void 0 : wobbleOpt.enable) {\n particle.wobble = {\n angle: getRandom() * Math.PI * 2,\n angleSpeed: getRangeValue(wobbleOpt.speed.angle) / 360,\n moveSpeed: getRangeValue(wobbleOpt.speed.move) / 10,\n };\n }\n else {\n particle.wobble = {\n angle: 0,\n angleSpeed: 0,\n moveSpeed: 0,\n };\n }\n particle.retina.wobbleDistance = getRangeValue((_a = wobbleOpt === null || wobbleOpt === void 0 ? void 0 : wobbleOpt.distance) !== null && _a !== void 0 ? _a : 0) * this.container.retina.pixelRatio;\n }\n isEnabled(particle) {\n var _a;\n return !particle.destroyed && !particle.spawning && !!((_a = particle.options.wobble) === null || _a === void 0 ? void 0 : _a.enable);\n }\n loadOptions(options, ...sources) {\n if (!options.wobble) {\n options.wobble = new Wobble();\n }\n for (const source of sources) {\n options.wobble.load(source === null || source === void 0 ? void 0 : source.wobble);\n }\n }\n update(particle, delta) {\n if (!this.isEnabled(particle)) {\n return;\n }\n updateWobble(particle, delta);\n }\n}\n","export const options = {\n background: {\n color: \"#333\",\n },\n particles: {\n move: {\n direction: \"bottom\",\n enable: true,\n random: false,\n straight: false,\n },\n opacity: {\n value: { min: 0.1, max: 0.5 },\n },\n size: {\n value: { min: 1, max: 10 },\n },\n wobble: {\n distance: 20,\n enable: true,\n speed: {\n min: -5,\n max: 5,\n },\n },\n },\n};\n","import { loadBaseMover } from \"tsparticles-move-base\";\nimport { loadCircleShape } from \"tsparticles-shape-circle\";\nimport { loadColorUpdater } from \"tsparticles-updater-color\";\nimport { loadOpacityUpdater } from \"tsparticles-updater-opacity\";\nimport { loadOutModesUpdater } from \"tsparticles-updater-out-modes\";\nimport { loadSizeUpdater } from \"tsparticles-updater-size\";\nimport { loadWobbleUpdater } from \"tsparticles-updater-wobble\";\nimport { options } from \"./options\";\nexport async function loadSnowPreset(engine) {\n await loadBaseMover(engine);\n await loadCircleShape(engine);\n await loadColorUpdater(engine);\n await loadOpacityUpdater(engine);\n await loadOutModesUpdater(engine);\n await loadSizeUpdater(engine);\n await loadWobbleUpdater(engine);\n await engine.addPreset(\"snow\", options);\n}\n","import { BaseMover } from \"./BaseMover\";\nexport async function loadBaseMover(engine) {\n engine.addMover(\"base\", () => new BaseMover());\n}\n","import { CircleDrawer } from \"./CircleDrawer\";\nexport async function loadCircleShape(engine) {\n await engine.addShape(\"circle\", new CircleDrawer());\n}\n","import { ColorUpdater } from \"./ColorUpdater\";\nexport async function loadColorUpdater(engine) {\n await engine.addParticleUpdater(\"color\", (container) => new ColorUpdater(container));\n}\n","import { OpacityUpdater } from \"./OpacityUpdater\";\nexport async function loadOpacityUpdater(engine) {\n await engine.addParticleUpdater(\"opacity\", (container) => new OpacityUpdater(container));\n}\n","import { OutOfCanvasUpdater } from \"./OutOfCanvasUpdater\";\nexport async function loadOutModesUpdater(engine) {\n await engine.addParticleUpdater(\"outModes\", (container) => new OutOfCanvasUpdater(container));\n}\n","import { SizeUpdater } from \"./SizeUpdater\";\nexport async function loadSizeUpdater(engine) {\n await engine.addParticleUpdater(\"size\", () => new SizeUpdater());\n}\n","import { WobbleUpdater } from \"./WobbleUpdater\";\nexport async function loadWobbleUpdater(engine) {\n await engine.addParticleUpdater(\"wobble\", (container) => new WobbleUpdater(container));\n}\n","import React, { useCallback } from 'react'\n\nimport Layout from '../components/Layout'\nimport Avatar from '../components/Avatar'\nimport bulogo from '../assets/bulogo.jpg'\nimport liulogo from '../assets/liulogo.jpg'\nimport ibmlogo from '../assets/ibmlogo.png'\nimport vslogo from '../assets/vslogo.png'\nimport aslogo from '../assets/aslogo.png'\nimport neatlogo from '../assets/neatlogo.jpg'\nimport cmuLogo from '../assets/cmuLogo.png'\nimport mixpanelLogo from '../assets/mixpanelLogo.png'\nimport fbavatar from '../assets/fbavatar.jpg'\nimport Seo from '../components/Seo'\nimport Icon from '../components/Icon'\nimport Particles from 'react-tsparticles'\nimport { loadSnowPreset } from 'tsparticles-preset-snow'\n\nconst IndexPage = () => {\n const particlesInit = useCallback(async (engine) => {\n await loadSnowPreset(engine)\n }, [])\n return (\n <Layout>\n <Seo title=\"Home\" />\n <section className=\"hero is-medium is-dark is-relative\">\n <Particles\n init={particlesInit}\n options={{\n preset: 'snow',\n style: {\n position: 'absolute',\n },\n particles: {\n move: {\n direction: 'top',\n },\n size: {\n value: {\n min: 1,\n max: 3,\n },\n wobble: {\n distance: 20,\n enable: true,\n speed: {\n min: -1,\n max: 1,\n },\n },\n },\n },\n }}\n />\n <div className=\"hero-body\">\n <div className=\"container has-text-centered\">\n <Avatar />\n <h1 className=\"title\" style={{ fontSize: 48 }}>\n Hans Li\n </h1>\n <h2 className=\"subtitle\">Fullstack Software Engineer</h2>\n <a\n className=\"icon is-large has-text-grey-light\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://github.com/hans-lizihan\"\n >\n <Icon icon={['fab', 'github']} size=\"2x\" />\n </a>\n <a\n className=\"icon is-large has-text-grey-light\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://www.linkedin.com/in/hanslizihan/\"\n >\n <Icon icon={['fab', 'linkedin']} size=\"2x\" />\n </a>\n <a\n className=\"icon is-large has-text-grey-light\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://facebook.com/HansLee0328\"\n >\n <Icon icon={['fab', 'facebook']} size=\"2x\" />\n </a>\n <a\n className=\"icon is-large has-text-grey-light\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://twitter.com/lizihan0328\"\n >\n <Icon icon={['fab', 'twitter']} size=\"2x\" />\n </a>\n </div>\n </div>\n </section>\n <section className=\"hero is-small is-light\">\n <div className=\"hero-body container content has-text-centered\">\n <p className=\"title\">\n <code>$ whoami</code>\n </p>\n <p>\n I have been working here in Hong Kong for <b>5 years</b>. I started\n as <strong>Frontend Developer</strong> and start to contribute\n heavily in <strong>backend</strong> as well. Recently I have been\n working with <strong>DevOps</strong> and trying to bring more\n automation in whole development process.\n </p>\n <p>\n I came to US for master degree and started working here after\n graduation. Currently live in San Mateo and work in San Francisco.\n </p>\n </div>\n </section>\n <section className=\"section\">\n <div className=\"tile is-ancestor\">\n <div className=\"tile is-vertical is-8\">\n <div className=\"tile\">\n <div className=\"tile is-parent is-vertical\">\n <article className=\"tile is-child notification is-info\">\n <p className=\"title\">Fun Fact</p>\n <div className=\"content\">\n <p>I am a 25% Mongolian according to DNA tests.</p>\n </div>\n </article>\n <article className=\"tile is-child notification is-warning\">\n <p className=\"title\">\n Music <small className=\"subtitle\">Classic & Rock</small>\n </p>\n <div className=\"content\">\n <span\n className=\"tag is-danger is-light\"\n style={{ marginRight: 8 }}\n >\n AC/DC\n </span>\n <span\n className=\"tag is-info is-light\"\n style={{ marginRight: 8 }}\n >\n 2 Cellos\n </span>\n <span\n className=\"tag is-info is-light\"\n style={{ marginRight: 8 }}\n >\n 万能青年旅店\n </span>\n <span\n className=\"tag is-danger is-light\"\n style={{ marginRight: 8 }}\n >\n Hans Zimmer\n </span>\n <span className=\"tag is-success is-light\">Led Zepplin</span>\n </div>\n </article>\n </div>\n <div className=\"tile is-parent\">\n <article className=\"tile is-child notification is-light\">\n <figure className=\"image is-1by1\">\n <img src={fbavatar} alt=\"Hans Avatar\" />\n </figure>\n </article>\n </div>\n </div>\n <div className=\"tile is-parent\">\n <article className=\"tile is-child notification is-pink\">\n <p className=\"title\">Teenage</p>\n <div className=\"content\">\n <p>\n I went to <b>Beijing No. 80 High School</b> for both of my\n junior high school and senior high school education. (yeah I\n hear you... I sincerely have no idea how many high schools\n are there in Beijing)\n </p>\n <p>\n A fun part of my middle school is when I entered the junior\n High School in CBD area (白家庄) in Beijing in 2005, one of\n the building in my school was the tallest one, 6 floors.\n However after I graduated in 2008, the area has been\n developed a lot. The 6 floor building seems a hobbit inside\n a bunch of normal terran. The sad thing is we lost our\n sunset forever - the tall buildings blocked them.\n </p>\n <p>\n My high schools was a board school. By then iTouch and\n iPhone was just released. We were crazy about those games in\n first or second generation of i-devices. I learned to\n jailbreak iPhone at that time, because I've got a iPhone 3gs\n but it's those batch locked in with AT&T. So to use them\n there are no way but to crack them. Good old days,\n blackra1n, purplera1n. I think those jailbreak experiences\n was one of the reason why I started my professional software\n engineer (though I am not focused on hacking phones or\n anything related to security).\n </p>\n </div>\n </article>\n </div>\n </div>\n <div className=\"tile is-parent\">\n <article className=\"tile is-child notification is-dark\">\n <div className=\"content\">\n <p className=\"title\">Childhood</p>\n <p className=\"subtitle\">My origin</p>\n <div className=\"content\">\n <p>\n I was born in <em>Taiyuan, Shanxi Province, China.</em> I\n spent my first 7 years in that city. All I remember now is\n the fun but warm dialects and <b>Red Alert</b> as well as{' '}\n <b>StarCraft</b>. I started playing piano and learn about\n chess.\n </p>\n <p>\n I went to primary school in <em>Beijing, China</em>. I\n started reading at age of 7. I succesfully proved that it\n takes 7 years for a Chineses lad to finally read Chinese. So\n be patient, if you can't master this language, most likely\n it's not your fault.\n </p>\n <p>\n My primary school was delightful, I met quite some rich kids\n in the class. They was just normal kids back then. We do\n stupid things together and went to play football when the\n largest sandstorm strike Beijing. We have no fear toward\n power at all back then.\n </p>\n <p>\n Oh, of course, like every boy, I was devoted to games.\n Pokemon, Need for Speed, a bunch of RPG games like 剑侠情缘.\n But among all of them, I love a black and white game on my e\n dictionary most. It was called 伏魔记 (A Conquest to the\n Demon). The best part about playing games on your\n e-dictionary is your parent never know that you were playing\n games.\n </p>\n </div>\n </div>\n </article>\n </div>\n </div>\n </section>\n <section className=\"hero\">\n <div className=\"hero-body\">\n <div className=\"timeline is-centered\">\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-image is-48x48\">\n <a href=\"https://hkbu.edu.hk\">\n <img src={bulogo} alt=\"HKBU Logo\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">Sep 2011</p>\n <p>\n Hong Kong Baptist University Major In Computer Science(HKBU)\n </p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-image is-48x48\">\n <a href=\"https://liu.se/\">\n <img src={liulogo} alt=\"Linkoping University\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">Sep 2013 - Jan 2014</p>\n <p>Exchange Student, Linkoping University</p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-image is-48x48\">\n <a href=\"https://www.ibm.com/\">\n <img src={ibmlogo} alt=\"IBM\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">June 2014 - Oct 2014</p>\n <p>Intern, IBM GBS Hong Kong</p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-image is-48x48\">\n <a href=\"https://www.venture-solutions.com/\">\n <img src={vslogo} alt=\"venture solutions\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">Oct 2014 - May 2015</p>\n <p>Developer Intern, Venture Solutions (Hong Kong)</p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-icon\">\n <Icon icon=\"graduation-cap\" />\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">June 2016</p>\n <p>Graduated, HKBU</p>\n </div>\n </div>\n <div className=\"timeline-item is-warning\">\n <div className=\"timeline-marker is-warning is-image is-48x48\">\n <a href=\"https://www.aftership.com/\">\n <img src={aslogo} alt=\"aftership\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">July 2016 - Aug 2020</p>\n <p>Senior Software Engineer, AfterShip Ltd.</p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-image is-48x48\">\n <a href=\"https://www.neatcommerce.com/\">\n <img src={neatlogo} alt=\"neat\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">Oct 2018 - Aug 2020</p>\n <p>Senior Fullstack Software Engineer, Neat Ltd</p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-image is-48x48\">\n <a href=\"https://www.cmu.edu/\">\n <img src={cmuLogo} alt=\"CMU\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">Sep 2020 - Dec 2021</p>\n <p>MS Software Engineer</p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-icon\">\n <Icon icon=\"graduation-cap\" />\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">Dec 2022</p>\n <p>Graduated, CMU</p>\n </div>\n </div>\n <div className=\"timeline-item\">\n <div className=\"timeline-marker is-image is-48x48\">\n <a href=\"https://www.mixpanel.com\">\n <img src={mixpanelLogo} alt=\"mixpanel\" />\n </a>\n </div>\n <div className=\"timeline-content\">\n <p className=\"heading\">Jan 2022 - Current</p>\n <p>Sr. Software Engineer</p>\n </div>\n </div>\n </div>\n </div>\n </section>\n </Layout>\n )\n}\n\nexport default IndexPage\n","export default \"data:image/png;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH5QYWEiMI379VPwAACjBJREFUWMPtmHuMVNUdx8/vnPueO8/dWWaXfbguLKxYFOWhVFEReSiSYtEqjUYtmrb+o5WmNdW0qWjUGKmtBqhRaAUfxVqwKhoQFXkI8n7I8lyY3Z1hZnd253nf55z+MQssAmrTJpjIL5NJJvfOzef8fvd8f9/zg7WRS9F3KfC5BjgPdB7oPND3Hkg4CycGhDjnCCFU/j5nQAAIIVooIUBACIgC4P9DFoEQzhli37y2U4EAIcaY7YTGjQZZsjuSbleGmfb/jANupgcrMlbVb8z3V1YP1LCaFzwZvHpUYdP26lm3182+38sVQCCIcyAEIYQwBkIQQPkDhCDO+35ijKD8VIyO5xUEwiy7cc7s0HVjmWECwQihr8n6yQtAiJfNV82cFr31xsS8xU460/n8QiveyanDPQ9E0e3NAsasZHi9OWaYzHaYbbuZXhAIs23uuMy0OGWIc2aYzDARY4hzL1fgHiXBAFYVaprcowghr1hCZ2E6tWScR6dP9Hpz1LTEirDXm0u+9Gb0x1PVQQ2cMUCQXLS0ae5jtFjyjxqe++wLIESsCOc3bhtw5/QDD/wey1J40jgsCr0r1yKAyJRrqWGqF9bl1m0hPoW7rq9lcOUtkxBA4Yud2U83CrqPM/Y1JeMIAzlxE+cIY1osKfU1WJXt9uQFcx5mJVOprwleNap72crc2s1Kw8DQdVemX3vHN6w5Mnlc03OPStVREtCb5j5W95ufu5leIFhprO96a0XFTeO1lkFNzz2qXFAHhAx56SksSafTnAoEgDyW37RDCAUAgFk2YBydMQUEASEkVUe543DXZY7rpjNH587t/uBD7NOMfYdcM8dsh/h9Sn0NFoTkS28eeujx7McbsKpw14s/8QItFpntYFFUGutAIKkly/fN+q0Q8nP6tUCcMhLQEy++6iTS0dtu4q4bu2dG8KqRsXtmACF2xzGi+/TLf0B8mhAJKuE60RcmuiaEAqIWIn6du15u/RYhFLCOtIvRSGD0Jb6LBquDG0EQxEiY+HXOeW7NJiEctI92Yk3hlPXtgFOD3KvGTtIJgtvTk35judp0gdJY66S6M++u7nl/tRSLmgePlnbv545jtB4qbtvjZbKIMS+bL27ZzTkzWg/ZRzuPLVyKJUlpashv2BoYc2nwisvEcCA4bnT+823G3oN2vPPYorcQgDq4obRrn9fdC+IZZBn6W1hOmXphHfHr5uGjXk+OOY5cXy1Fo04y5aYzzPWAYKL7lIaBXq4AokA01Twc55Qy0wZRIIpMSybiXGmsq3ngzv0P/g4jqfq+mT3vrbYTKazIRFVooQSiAKIAonhGTeqXIQzccZWmhmFvz6ucdsOxv78NHDX+8aHm+U/0fPCpc6xL8OtYloHg4R/+Ta6N5ddtGbX7w+K2L829B4VICAQCooBlCWsqLRnEp+otQ32XtBi79zuJlBAOYlFEAERTQRQB47MpZL+kcQQY2/HEsUVv1f1qljbkQrs9QU2LWbbdmfJyBaVO93JFN9/jZfMginZnqrwMz8qTUAAEwevNCqGgl81jSex57+OytjHLBlnirne8CBR9bZxSRU6ZGAn2rlpbc98dFdMmdC1932rrwLLELDt29wyxMizFou1PL0CMIYTKbwDNFSqnTglcMYLZjh1PeNl8/SO/SL78j/D4sXYi1fbIM0IoUBbDbxmnyiXnIMtOIt29fGXN/XfIddV2PMEZ9100ePBf/mAdikcmX1P70L1evgiEAAZOmTRwwNBFz5Z2tubWbGqeNwfLUmDMCHN/W27t5tjdM7CqcPe/oDkNCBCzbe556dffESsjtGjQQonbjhirJLqPc/7lrQ+kliwjuo/ZNnM8ZttCMCBGQtQwmWlhVZFiUVooWm3tgIE7LjrL3v52QACcUqVhoD5iWGHr7ty6zaXtX8p11VhTrENxo/WQEAow25EHxrAsCX5drqkimup292TXbNRaBmnDmovb9lhHO4lfFwdUEr9OfJoQDnDGypbmW8YpOgQAQjBAswXzwJHC59u8bAEB5NdvseKdx15Zqg1pRB6125N2e7K4Yy8Qklv7hR1PJBe8LoSDiLP2p+eDIBQ2bXe7e72ebH7DVq8n6/Xm+mxC2RF8U/TTIQDuUXVwg3/kcCeR6l21TggFQteMyW/c7iTSIEvMNEEUQSBeIY8QEFVjlo1lCcsSNUyEEFFV5rrMsomqcEq562FVAVlCnCPOme0AwX0t7ARZ2br0k4D+JUPc80AQmufNkaqrOKXMsKTaGJYlRDAQDJJINJXmio2P/3roK8/SUkmMhLAic0qJXye6xlyX+FQhoINAsCJjTQVZYqbFXY8WjWFvz6+cPsnqTuqXXcw9ym2He5RTymynf4a+Kt40V0AI0XwRMcYZtdraESFCKMA9Tx/aZB1uJ36fue+weaBNrq0GQrjnEX+Fl+kFWVYa60o7W+X6Gu54CIMQ8FtH2rWWQcwwabGUXbXOaD1cOfGG6lk/aetIcs8r30Y01UlnTrz+p3UTQtBxjQGMEYA2pLF5wZMdzy+UopHA2JE7Jvy08pbJXjYv11bXzb5/y8ibI5PHASZKY62TTFffe1tmxSdDX36mZ+VnoWvGdDy/MLt6Q3jSOPtIR9XMaV4uH5lyrdYySKqqvGjpC+kly1OLl0Vvnxp//AWQ+jrJmW0bpwyVfSql1pFOsSJc3LKre/kq/+UXc8elxZLa1JD86xtC0B+dPin32ebwxKv1S1qseDI04YfcdoSKcGbZyp2T7gqNGz3k5afVpvrC5p1SLAqyZLcnadFIr3k38++PKqZNEMKB9Kv/4pSeUId+QBwBwbRYQgiJFSHP6mWOi1WlrLNuJosVGSFUbgJYloz0gfRr7zQ+MdtJdRFN5S5NL162Y/xMBIA4s+KdhT27UkuWG3sPVt02NTR+LC0aiHGQRESpgPydL76qNjVU/miise8w8WknDiT9exnHkuR0puJPzav55Z2lPQdIQHfTGaKrCCG5rlrw64hz38XNxO/DmiLJA1KvLRcqw1ZHe2L+4toHf+YfPVyKRYVwEHHkG9Zc2rUvOPbyjj8vyqz4hJk21hSxqsJJpKSbrw9dcWX+861d/1yRW7uZU4bQyV0Gp0/QaNHQLxsmDxxgHW43DrTJtdXEpzLDQgBY7vOdQIjb1UMNg2gqLRrMtJSmBrk2VtrZSgI68WmIcyuekKoqpNqYk0h72bxUHeWO66QzWssg+0iHk+qO3Hhtfv1WZpj9Df8ZgABjWjK454EkYUXmjsspLR9fOOMIEOIIcQ6iCARzyoBgwJhZNnNdoiqcMk5pH73rMtfDoogI5o6LMGBZdjJdFZOvb1nyp9a7Hs5+tJ7oWn9zDWeeMWIABJzzk2eusnbB8ewC6qv6yUuAAFBZ9I5D9/tvWQDLJWBCZTh45YieD9Zwz/uKfMM5GHoCcNejJUMI6Kc3k3Mx/eAcREGMhM7Y2s7ROIbzs1nH79x86DzQeaDzQN87oP8AvbUxWNGkc+kAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDYtMjJUMTg6MzU6MDgrMDA6MDBe3G28AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTA2LTIyVDE4OjM1OjA4KzAwOjAwL4HVAAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW4/8BiCOaUUcInlkAAAAASUVORK5CYII=\"","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["module","exports","equal","a","b","constructor","length","i","keys","Array","isArray","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","key","$$typeof","_interopRequireDefault","require","io","_assertThisInitialized2","_inheritsLoose2","_objectWithoutPropertiesLoose2","_extends2","_react","_propTypes","_excluded","convertProps","props","convertedProps","default","resolutions","sizes","critical","fixed","fluid","loading","groupByMedia","concat","matchesMedia","_ref","media","isBrowser","window","matchMedia","matches","getImageCacheKey","_ref2","srcData","getCurrentSrcData","src","currentData","some","image","hasArtDirectionSupport","foundMedia","findIndex","noMedia","imageCache","create","inImageCache","cacheKey","hasNativeLazyLoadSupport","HTMLImageElement","hasIOSupport","IntersectionObserver","listeners","WeakMap","generateImageSources","imageVariants","map","_ref3","srcSet","srcSetWebp","createElement","Fragment","type","withMedia","without","forEach","variant","push","generateTracedSVGSources","_ref4","tracedSVG","generateBase64Sources","_ref5","base64","generateNoscriptSource","_ref6","isWebp","listenToIntersections","el","cb","observer","entries","entry","has","target","get","isIntersecting","intersectionRatio","unobserve","delete","rootMargin","observe","set","noscriptImg","title","alt","width","height","crossOrigin","draggable","join","Placeholder","forwardRef","ref","generateSources","spreadProps","ariaHidden","baseImage","Img","style","onLoad","onError","otherProps","position","top","left","objectFit","objectPosition","propTypes","object","func","Image","_React$Component","_this","this","seenBefore","isCritical","addNoScript","fadeIn","useIOSupport","isVisible","state","imgLoaded","imgCached","isHydrated","imageRef","createRef","placeholderRef","handleImageLoaded","bind","handleRef","_proto","componentDidMount","setState","onStartLoad","wasCached","img","current","complete","componentWillUnmount","cleanUpListeners","_this2","imageInCache","currentSrc","render","_convertProps","className","_convertProps$style","_convertProps$imgStyl","imgStyle","_convertProps$placeho","placeholderStyle","placeholderClassName","backgroundColor","durationFadeIn","Tag","itemProp","shouldReveal","shouldFadeIn","imageStyle","opacity","transition","bgColor","delayHideStyle","transitionDelay","imagePlaceholderStyle","placeholderImageProps","overflow","maxWidth","maxHeight","JSON","stringify","paddingBottom","aspectRatio","bottom","right","dangerouslySetInnerHTML","__html","divStyle","display","Component","defaultProps","fixedObject","shape","number","isRequired","string","srcWebp","fluidObject","requireFixedOrFluid","originalPropTypes","propName","componentName","_PropTypes$checkPropT","Error","checkPropTypes","oneOfType","arrayOf","bool","oneOf","_default","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","location","propFullName","secret","err","name","getShim","ReactPropTypes","array","symbol","any","element","elementType","instanceOf","node","objectOf","exact","PropTypes","data","useStaticQuery","placeholderImage","childImageSharp","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread2","arguments","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","_defineProperties","descriptor","configurable","writable","value","_slicedToArray","arr","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","next","done","_iterableToArrayLimit","_unsupportedIterableToArray","TypeError","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","_nonIterableSpread","o","minLen","n","slice","test","len","arr2","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","document","MutationObserver","performance","e","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","navigator","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","IS_IE","indexOf","NAMESPACE_IDENTIFIER","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","Proxy","prop","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","prefixes","Set","add","RESERVED_CLASSES","initial","FontAwesomeConfig","querySelector","attr","val","coerce","getAttribute","getAttrConfig","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_config","config","_onChangeCb","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","nextUniqueId","id","Math","random","toArray","classArray","classList","split","htmlEscape","str","replace","joinStyles","styles","reduce","acc","styleName","trim","transformIsMeaningful","transform","css","dcp","drc","fp","rc","s","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","insertCss","InjectCSS","mixout","dom","hooks","beforeDOMElementCreation","beforeI2svg","w","shims","namespace","functions","loaded","domready","fn","setTimeout","toHtml","abstractNodes","tag","_abstractNodes$attrib","attributes","_abstractNodes$childr","children","attributeName","joinAttributes","iconFromMapping","mapping","prefix","iconName","icon","doScroll","readyState","listener","removeEventListener","subject","initialValue","thisContext","result","undefined","c","bindInternal4","toHex","unicode","decoded","output","counter","charCodeAt","extra","ucs2decode","normalizeIcons","icons","defineIcons","params","_params$skipHooks","skipHooks","normalized","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","values","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","parts","build","lookup","reducer","alias","aliases","hasRegular","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","includes","v","canonical","rest","aliasIconName","Library","instance","Constructor","_classCallCheck","definitions","protoProps","staticProps","_len","_key","additions","_pullDefinitions","longPrefix","definition","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","args","hookFns","hookFn","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","library","i2svg","Promise","reject","watch","autoReplaceSvgRoot","autoReplace","api","noAuto","parse","_icon","match","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","abstract","container","html","makeInlineSvgAbstract","_params$icons","main","mask","maskId","titleId","_params$watchable","watchable","found","isUploadedIcon","attrClass","classes","content","role","uploadedIconWidthStyle","asSymbol","offset","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","class","makeLayersCounterAbstract","styles$1","asFoundIcon","vectorData","fill","missingIconResolutionMixin","findIcon","resolve","console","error","maybeNotifyMissing","noop$1","p","preamble","end","perf","noop$2","isWatched","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","createTextNode","appendChild","mutators","mutation","parentNode","comment","createComment","outerHTML","nodeAsComment","replaceChild","remove","nest","forSvg","splitClasses","toSvg","toNode","removeAttribute","newInnerHTML","performOperationSync","op","perform","mutations","callback","callbackFunction","frame","requestAnimationFrame","mutator","disabled","disableObservation","enableObservation","mo","options","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","contains","childList","characterData","subtree","styleParser","classParser","ligature","existingPrefix","existingIconName","innerText","firstChild","nodeType","Node","TEXT_NODE","attributesParser","extraAttributes","parseMeta","parser","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","root","htmlClassList","hclAdd","suffix","hclRemove","f","prefixesDomQuery","candidates","querySelectorAll","all","then","resolvedMutations","catch","onNode","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","LayersText","text","generateLayersText","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","pendingAttribute","oldUnicode","newUnicode","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","removeChild","_content","toLowerCase","_hexValueFromContent","index","second","first","cleaned","codePoint","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","startsWith","iconIdentifier","iconName4","meta","processable","operations","_unwatched","parseTransformString","transformString","parseFloat","isNaN","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","r","nextPlugins","mixoutsTo","k","plugin","tk","sk","registerPlugins","pseudoElements2svg","unwatch","bootstrap","disconnect","symbolData","library$1","parse$1","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","camelize","chr","substr","styleToObject","pair","charAt","normalizeIconArgs","objectWithKey","FontAwesomeIcon","iconArgs","maskArgs","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","flip","rotation","pull","swapOpacity","renderedIcon","_console","log","extraProps","convertCurry","displayName","convert","mixins","attrs","_extraProps$style","existingStyle","remaining","faTwitter","faFacebook","faLinkedin","faGithub","faGraduationCap","EventDispatcher","_listeners","Map","_a","dispatchEvent","handler","hasEventListener","removeAllEventListeners","idx","splice","Vector3d","xOrCoords","z","coords3d","origin","angle","atan2","updateFromAngle","sqrt","getLengthSq","static","addTo","copy","clone","distanceTo","sub","distanceToSq","div","divTo","mult","multTo","cos","sin","setTo","v3d","subFrom","super","_random","getRandom","clamp","num","min","max","randomInRange","getRangeMax","getRangeMin","getRangeValue","setRangeValue","enable","minimumValue","pointA","pointB","dx","dy","distance","getDistance","calcExactPositionOrRandomFromSize","_b","_c","parseAlpha","input","endsWith","isSsr","safeMatchMedia","query","isInArray","itemFromArray","useIndex","floor","arrayRandomIndex","isPointInside","point","radius","direction","bounds","inside","areBoundsInside","calculateBounds","deepExtend","destination","sources","sourceIsArray","isObject","destDict","executeOnSingleOrMultiple","item","itemFromSingleOrMultiple","randomColorValue","colorManagers","addColorManager","manager","hue2rgb","q","t","stringToRgba","stringPrefix","parseString","hexFixed","_","g","exec","rangeColorToRgb","color","colorToRgb","res","handleRangeColor","getRandomRgbColor","stringToRgb","handleColor","rangeColorToHsl","rgb","rgbToHsl","r1","g1","b1","h","l","hslToRgb","hsl","hslPercent","fixedMin","getStyleFromRgb","getStyleFromHsl","getHslFromAnimation","animation","setColorAnimation","colorValue","colorAnimation","reduceFactor","velocity","speed","decay","status","loops","maxLoops","count","sync","clear","context","dimension","clearRect","generatedAttribute","touchEndEvent","mouseMoveEvent","mouseLeaveEvent","setTransformValue","factor","newFactor","newValue","Canvas","_context","_generated","_preDrawUpdaters","_postDrawUpdaters","_resizePlugins","_colorPlugins","_mutationObserver","records","record","_repairStyle","_fullScreen","actualOptions","fullScreen","trail","particles","move","backgroundMask","paint","_trailFillColor","_paintBase","draw","ctx","destroy","_resetOriginalStyle","drawParticle","particle","delta","spawning","destroyed","getRadius","pfColor","getFillColor","psColor","getStrokeColor","fColor","sColor","_getPluginParticleColors","zIndexOptions","zIndex","zOpacityFactor","zIndexFactor","opacityRate","bubble","zOpacity","zStrokeOpacity","strokeOpacity","colorStyles","stroke","_applyPreDrawUpdaters","composite","shadow","pos","getPosition","pathRotation","rotateData","transformData","setTransform","beginPath","globalCompositeOperation","shadowColor","shadowBlur","blur","shadowOffsetX","shadowOffsetY","fillStyle","strokeWidth","lineWidth","strokeStyle","drawer","drawers","retina","pixelRatio","drawShape","close","closePath","afterEffect","drawShapeAfterEffect","sizeRate","_applyPostDrawUpdaters","drawParticlePlugin","drawPlugin","init","resize","_initStyle","_initCover","_initTrail","initBackground","initUpdaters","initPlugins","background","elementStyle","backgroundImage","backgroundPosition","backgroundRepeat","repeat","backgroundSize","plugins","particleFillColor","particleStrokeColor","updater","updaters","afterDraw","getColorStyles","getTransformValues","beforeDraw","loadCanvas","canvas","dataset","_originalStyle","offsetHeight","offsetWidth","getContext","cover","_coverColorStyle","pxRatio","newSize","oldSize","assign","started","resizeFactor","async","needsRefresh","updateActualOptions","setDensity","_applyResizePlugins","refresh","updaterTransform","coverRgb","coverColor","_setFullScreenStyle","setProperty","fillColor","baseColor","fillRect","paintBase","originalStyle","priority","manageListener","event","addOptions","passive","capture","removeOptions","EventListeners","canPush","handlers","mouseMove","mouseTouchMove","touchStart","touchMove","touchEnd","mouseTouchFinish","mouseLeave","touchCancel","touchEndClick","mouseTouchClick","mouseUp","mouseDown","visibilityChange","handleVisibilityChange","themeChange","handleThemeChange","oldThemeChange","handleWindowResize","addListeners","manageListeners","removeListeners","doMouseTouchClick","mouseInteractivity","interactivity","mouse","mousePos","clickPosition","clickTime","Date","getTime","events","onClick","mode","handleClickMode","mediaEvent","defaultThemes","themeName","dark","light","theme","themes","find","auto","loadTheme","pauseOnBlur","hidden","pageHidden","pause","getAnimationStatus","play","resizeTimeout","clearTimeout","windowResize","delay","detectType","detectsOn","mouseLeaveTmpEvent","canvasEl","parentElement","mediaMatch","addListener","removeListener","interactivityEl","onHover","pointerEvents","ResizeObserver","resizeObserver","clicking","downPosition","handled","mousePosition","clickPositionValid","_f","_g","mouseEvent","clientRect","clientX","clientY","currentTarget","sourceRect","targetRect","canvasRect","offsetX","offsetY","touchEvent","lastTouch","touches","FrameManager","timestamp","smooth","lastFrameTime","fpsLimit","initDelta","lifeTime","duration","OptionsColor","load","Background","BackgroundMaskCover","BackgroundMask","FullScreen","ClickEvent","DivEvent","selectors","elementId","ids","Parallax","HoverEvent","parallax","ResizeEvent","Events","onDiv","onclick","ondiv","onhover","tmp","Modes","engine","_engine","_container","interactors","interactor","loadModeOptions","Interactivity","modes","detect_on","ManualParticle","Responsive","Infinity","ThemeDefault","Theme","ColorAnimation","HslAnimation","AnimatableColor","CollisionsAbsorb","CollisionsOverlap","retries","Random","ValueWithRandom","ParticlesBounceFactor","ParticlesBounce","horizontal","vertical","Collisions","absorb","overlap","MoveAngle","MoveAttract","rotateX","rotateY","MoveCenter","MoveGravity","acceleration","maxSpeed","MovePath","generator","MoveTrail","OutModes","Spin","Move","attract","center","drift","gravity","outModes","straight","vibrate","warp","collisions","noise","outMode","out_mode","AnimationOptions","OpacityAnimation","startValue","opacity_min","Opacity","anim","ParticlesDensity","area","value_area","ParticlesNumber","density","limit","Shadow","charKey","charAltKey","imageKey","imageAltKey","polygonKey","polygonAltKey","Shape","character","custom","images","polygon","_value","loadShape","mainKey","altKey","altOverride","emptyValue","mainDifferentValues","altDifferentValues","SizeAnimation","size_min","Size","Stroke","ZIndex","velocityRate","ParticlesOptions","groups","reduceDuplicates","group","strokeToLoad","loadOptions","loadParticlesOptions","sourceOptionsArr","sourceOptions","Options","autoPlay","detectRetina","manualParticles","pauseOnOutsideViewport","responsive","zLayers","backgroundMode","fps_limit","retina_detect","preset","_importPreset","optResponsive","sort","existingTheme","optTheme","_findDefaultTheme","setResponsive","defaultOptions","responsiveOptions","screen","availWidth","setTheme","chosenTheme","clientDarkMode","defaultTheme","getPreset","InteractionManager","_interactors","getInteractors","_externalInteractors","_particleInteractors","isEnabled","interact","reset","fixOutMode","checkModes","coord","maxCoord","setCb","Particle","overrideOptions","override","unbreakable","inRange","slow","particleDestroyed","pathGenerator","_getRollColor","getMass","PI","strokeColor","_h","_j","lastPathTime","misplaced","maxDistance","outType","ignoresResizeRatio","mainOptions","particlesOptions","shapeType","shapeOptions","shapeData","_loadShapeData","pathOptions","pathDelay","getPathGenerator","addPath","zIndexValue","initParticle","sizeOptions","sizeRange","sizeAnimation","_calcPosition","initialPosition","canvasSize","moveCenter","isCenterPercent","getParticleDirectionAngle","initialVelocity","_calculateVelocity","moveDecay","needsSort","lastZIndex","sides","getShapeDrawer","sideCountFunc","getSidesCount","mover","movers","particleInit","particleCreated","isInsideCanvas","tryCount","pluginPos","particlePosition","exactPosition","fixHorizontal","fixVertical","_checkOverlap","baseVelocity","getParticleBaseVelocity","moveOptions","rad","radOffset","range","collisionsOptions","overlapOptions","overlaps","roll","backColor","alter","backFactor","backSum","alterHsl","Point","Range","Circle","intersects","rect","circle","pos1","pos2","distPos","abs","pow","Rectangle","size2","w2","h2","QuadTree","rectangle","capacity","_points","_divided","insert","subdivide","_NE","_NW","_SE","_SW","check","queryCircle","queryRectangle","Particles","nextId","zArray","pool","interactionManager","quadTree","getMovers","getUpdaters","addManualParticles","addParticle","initializer","countToRemove","removeQuantity","_pushParticle","update","particlesInitialization","pathGenerators","groupOptions","j","nb","pushing","removeAt","quantity","deleted","zIdx","_applyDensity","particlesToDelete","particleUpdate","externalInteract","particlesInteract","manualCount","numberOptions","densityFactor","_initDensityFactor","optParticlesNumber","optParticlesLimit","particlesNumber","particlesCount","densityOptions","pop","canAdd","warn","Retina","devicePixelRatio","ratio","attractDistance","sizeAnimationSpeed","moveDistance","moveDrift","moveSpeed","guardCheck","loadContainerOptions","defaultPathGenerator","generate","Container","_delay","_firstStart","_paused","_sourceOptions","_initialSourceOptions","frameManager","_options","_eventListeners","_intersectionObserver","_intersectionManager","addClickHandler","clickOrTouchHandler","posRetina","touched","touchMoved","changedTouches","radiusX","radiusY","stop","mainArr","refreshTime","_drawAnimationFrame","nextFrame","exportConfiguration","exportImage","quality","toBlob","exportImg","shapes","getSupportedShapes","availablePlugins","getAvailablePlugins","particlesSetup","_currentTheme","handle","cancelAnimationFrame","needsUpdate","start","setNoise","noiseOrGenerator","setPath","pathOrGenerator","oldGenerator","_delayTimeout","HTMLElement","newMaxWidth","responsiveMaxWidth","Loader","tagId","remote","jsonUrl","url","loadRemoteOptions","response","fetch","ok","json","getDataFromUrl","domContainer","getElementById","append","currentOptions","oldIndex","old","domItem","existingCanvases","getElementsByTagName","newItem","newId","newIndex","getItemsFromInitializer","initializers","Plugins","_initializers","presets","addInteractor","initInteractor","addParticleMover","initMover","addParticleUpdater","initUpdater","addPathGenerator","addPlugin","getPlugin","addPreset","presetKey","addShapeDrawer","types","needsPlugin","rgbColorManager","rgbColor","hslColorManager","hslColor","hsla","rgbResult","hslaToRgba","tsParticles","_domArray","_eventDispatcher","_initialized","_loader","interactorInitializer","moverInitializer","updaterInitializer","customDrawer","pathConfigJson","loadJSON","setJSON","setOnClickHandler","defaultId","shouldComponentUpdate","nextProps","componentDidUpdate","forceUpdate","loadParticles","canvasClassName","BaseMover","gravityOptions","spinOptions","spinPos","spinCenter","spinAcceleration","particleOptions","slowFactor","getProximitySpeedFactor","baseSpeed","maxSize","updateFunc","maxCanvasSize","applyPath","gravityFactor","zVelocityFactor","dxFixed","dyFixed","hDistance","vDistance","vel","applyDistance","CircleDrawer","circleRange","arc","updateColorValue","valueAnimation","decrease","ColorUpdater","animationOptions","resColor","getHslAnimationFromHsl","updateColor","OpacityUpdater","opacityOptions","opacityAnimation","opacityRange","minValue","maxValue","checkDestroy","updateOpacity","BounceOutMode","particleBounce","bounced","newVelocity","minPos","bounceHorizontal","bounceVertical","DestroyOutMode","vx","vy","NoneOutMode","pRadius","OutOutMode","circVec","newDx","newDy","wrap","newPos","sizeValue","nextBounds","OutOfCanvasUpdater","updateOutMode","SizeUpdater","sizeVelocity","updateSize","WobbleSpeed","Wobble","rangeSpeed","WobbleUpdater","wobbleOpt","wobble","angleSpeed","wobbleDistance","updateWobble","loadSnowPreset","addMover","loadBaseMover","addShape","loadCircleShape","loadColorUpdater","loadOpacityUpdater","loadOutModesUpdater","loadSizeUpdater","loadWobbleUpdater","particlesInit","useCallback","Layout","Seo","rel","href","marginRight","fbavatar","bulogo","liulogo","ibmlogo","vslogo","_extends","__esModule"],"sourceRoot":""}